|
8 | 8 | use ModStart\Admin\Concern\HasAdminQuickCRUD; |
9 | 9 | use ModStart\Admin\Layout\AdminCRUDBuilder; |
10 | 10 | use ModStart\Core\Dao\ModelUtil; |
| 11 | +use ModStart\Core\Exception\BizException; |
11 | 12 | use ModStart\Core\Input\InputPackage; |
12 | | -use ModStart\Core\Input\Request; |
13 | 13 | use ModStart\Core\Input\Response; |
14 | 14 | use ModStart\Core\Util\CRUDUtil; |
15 | 15 | use ModStart\Field\AbstractField; |
|
19 | 19 | use ModStart\Grid\GridFilter; |
20 | 20 | use ModStart\Repository\RepositoryUtil; |
21 | 21 | use ModStart\Support\Concern\HasFields; |
| 22 | +use ModStart\Widget\ButtonDialogRequest; |
22 | 23 | use ModStart\Widget\TextLink; |
23 | 24 | use Module\Blog\Core\BlogSiteUrlBiz; |
24 | 25 | use Module\Blog\Core\BlogSuperSearchBiz; |
25 | | -use Module\Blog\Core\BlogTagManagerBiz; |
| 26 | +use Module\Blog\Model\Blog; |
26 | 27 | use Module\Blog\Type\BlogVisitMode; |
27 | 28 | use Module\Blog\Util\BlogCategoryUtil; |
28 | 29 | use Module\Blog\Util\BlogTagUtil; |
29 | 30 | use Module\Blog\Util\UrlUtil; |
30 | 31 | use Module\Vendor\Provider\SiteUrl\SiteUrlProvider; |
| 32 | +use Module\Vendor\QuickRun\Export\ImportHandle; |
31 | 33 |
|
32 | 34 | class BlogController extends Controller |
33 | 35 | { |
@@ -97,6 +99,7 @@ protected function crud(AdminCRUDBuilder $builder) |
97 | 99 | $filter->eq('isRecommend', '推荐')->autoHide(true)->switchRadioYesNo(); |
98 | 100 | $filter->eq('isPublished', '发布')->autoHide(true)->switchRadioYesNo(); |
99 | 101 | }) |
| 102 | + ->gridOperateAppend(ButtonDialogRequest::primary('<i class="iconfont icon-upload"></i> 批量导入', action('\\' . __CLASS__ . '@import'))) |
100 | 103 | ->pageJumpEnable(true) |
101 | 104 | ->hookSaving(function (Form $form) use (&$updatedCategoryIds) { |
102 | 105 | if ($form->itemId()) { |
@@ -127,6 +130,41 @@ protected function crud(AdminCRUDBuilder $builder) |
127 | 130 | BlogSuperSearchBiz::syncDelete($item->id); |
128 | 131 | }); |
129 | 132 | }) |
130 | | - ->title('博客管理'); |
| 133 | + ->title('博客文章'); |
| 134 | + } |
| 135 | + |
| 136 | + public function import(ImportHandle $handle) |
| 137 | + { |
| 138 | + $templateData = []; |
| 139 | + $templateData[] = [ |
| 140 | + '测试文章', '1', '文章摘要', '<p>文章内容,支持富文本HTML</p>' |
| 141 | + ]; |
| 142 | + return $handle |
| 143 | + ->withPageTitle('批量导入博客文章') |
| 144 | + ->withTemplateName('博客文章') |
| 145 | + ->withTemplateData($templateData) |
| 146 | + ->withHeadTitles([ |
| 147 | + '标题', '分类ID', '摘要', '内容', |
| 148 | + ]) |
| 149 | + ->handleImport(function ($data, $param) { |
| 150 | + $title = empty($data[0]) ? null : $data[0]; |
| 151 | + BizException::throwsIfEmpty('标题为空', $title); |
| 152 | + $blog = ModelUtil::get(Blog::class, [ |
| 153 | + 'title' => $title, |
| 154 | + ]); |
| 155 | + $update = []; |
| 156 | + $update['categoryId'] = intval(empty($data[1]) ? null : $data[1]); |
| 157 | + $update['summary'] = empty($data[2]) ? null : $data[2]; |
| 158 | + $update['content'] = empty($data[3]) ? null : $data[3]; |
| 159 | + $update['isPublished'] = true; |
| 160 | + if ($blog) { |
| 161 | + ModelUtil::update(Blog::class, $blog['id'], $update); |
| 162 | + } else { |
| 163 | + $update['title'] = $title; |
| 164 | + ModelUtil::insert(Blog::class, $update); |
| 165 | + } |
| 166 | + return Response::generateSuccess(); |
| 167 | + }) |
| 168 | + ->performExcel(); |
131 | 169 | } |
132 | 170 | } |
0 commit comments