From 5fb91cfff19ec9ce0d4e82082613f03e07f12b63 Mon Sep 17 00:00:00 2001 From: lwh <2679599887@qq.com> Date: Mon, 8 May 2023 15:48:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExaminationInformation/InfoArticle.php | 28 ++-- app/admin/controller/Gen/Gen.php | 4 +- app/admin/controller/Home/HomeEnv.php | 111 ++++++++++++++++ app/admin/controller/Home/HomeWorks.php | 122 ++++++++++++++++++ .../ExaminationInformation/InfoArticle.php | 31 ++++- app/common/model/Home/HomeEnv.php | 104 +++++++++++++++ app/common/model/Home/HomeWorks.php | 112 ++++++++++++++++ public/excel/艺考资讯/资讯文章导入模板.xlsx | Bin 0 -> 9144 bytes 8 files changed, 494 insertions(+), 18 deletions(-) create mode 100644 app/admin/controller/Home/HomeEnv.php create mode 100644 app/admin/controller/Home/HomeWorks.php create mode 100644 app/common/model/Home/HomeEnv.php create mode 100644 app/common/model/Home/HomeWorks.php create mode 100644 public/excel/艺考资讯/资讯文章导入模板.xlsx diff --git a/app/admin/controller/ExaminationInformation/InfoArticle.php b/app/admin/controller/ExaminationInformation/InfoArticle.php index ba6dd8a..e96a883 100644 --- a/app/admin/controller/ExaminationInformation/InfoArticle.php +++ b/app/admin/controller/ExaminationInformation/InfoArticle.php @@ -20,12 +20,12 @@ class InfoArticle extends BaseController /** * 获取资讯文章列表 */ - public function getinfoArticleList(Request $request): array + public function getinfoArticleList(Request $request, $isExport = false): array { $params = $request->param(); $con = []; - $con = Tool::getOptionalQuery(['info_article_title', 'LIKE'],['a.info_article_type_guid', '='], ['info_article_status', '='],); + $con = Tool::getOptionalQuery(['info_article_title', 'LIKE'], ['a.info_article_type_guid', '='], ['info_article_status', '='],); $query = ModelinfoArticle::where($con) ->field([ @@ -41,10 +41,10 @@ class InfoArticle extends BaseController ]) ->alias('a') - ->leftjoin('info_article_type b','a.info_article_type_guid = b.info_article_type_guid') + ->leftjoin('info_article_type b', 'a.info_article_type_guid = b.info_article_type_guid') ->order('info_article_order', 'asc'); - return msg("获取资讯文章列表成功!", $query); + return $isExport ? $query->select()->toArray() : msg("获取资讯文章列表成功!", $query); } /** @@ -88,7 +88,7 @@ class InfoArticle extends BaseController 'info_article_content|文章内容' => 'require', 'info_article_order|文章排序' => 'require' ]); - + $model = ModelinfoArticle::create($params, [ 'info_article_guid', 'info_article_create_user_guid', @@ -115,7 +115,7 @@ class InfoArticle extends BaseController $info_article = ModelinfoArticle::where([ 'info_article_guid' => explode(',', $params['info_article_guid']) ])->select(); - + $info_article->delete(); return msg('删除成功!'); } @@ -125,10 +125,7 @@ class InfoArticle extends BaseController */ public function exportExcel(Request $request) { - $params = $request->param(); - $params['limit'] = 10000; - $select = self::getinfoArticleList($request)['data']; - return ModelinfoArticle::exportExcel($select); + ModelinfoArticle::exportExcel(self::getinfoArticleList($request, true)); } /** @@ -137,7 +134,16 @@ class InfoArticle extends BaseController public function downloadTemplate(Request $request) { $params = $request->param(); - $data = array_values(ModelinfoArticle::EXCELFIELD); + $data = [ + array_values(ModelinfoArticle::EXCELFIELD), + [ + '招生新闻', + '【2023届厚德开展】艺术与灵感的写生之旅', + 'http://houde_web.aerwen.net/uploads/EnrolIntroImg/20230429/466799fb9c916c3562a9c311de272c81.jpg', + '1', + "展示", + ] + ]; $excel = (new Excel())->exporTsheet($data); $excel->save('资讯文章导入模板.xlsx'); } diff --git a/app/admin/controller/Gen/Gen.php b/app/admin/controller/Gen/Gen.php index e8e86e8..f0901b4 100644 --- a/app/admin/controller/Gen/Gen.php +++ b/app/admin/controller/Gen/Gen.php @@ -825,8 +825,8 @@ class Gen extends BaseController $sortTemplate = " - "; diff --git a/app/admin/controller/Home/HomeEnv.php b/app/admin/controller/Home/HomeEnv.php new file mode 100644 index 0000000..1403da6 --- /dev/null +++ b/app/admin/controller/Home/HomeEnv.php @@ -0,0 +1,111 @@ +param(); + $con = []; + + $con = Tool::getOptionalQuery(); + + $query = ModelHomeEnv::where($con) + ->field([ + 'home_env_id', + 'home_env_guid', + 'home_env_img', + 'home_env_sort' + ]) + ->order('home_env_sort', 'asc'); + + return msg("获取首页环境列表成功!", $query); + } + + /** + * 编辑首页环境 + */ + public function editHomeEnv(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'home_env_img|图片' => 'require', + 'home_env_sort|排序' => 'require' + ]); + $model = ModelHomeEnv::where('home_env_guid', $params['home_env_guid'])->find(); + if (!$model) throwErrorMsg("该首页环境不存在", 1); + $model->allowField([ + 'home_env_update_user_guid', + 'home_env_img', + 'home_env_sort' + ])->save($params); + return msg('编辑成功!'); + } + + /** + * 添加首页环境 + */ + public function addHomeEnv(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'home_env_img|图片' => 'require', + 'home_env_sort|排序' => 'require' + ]); + $model = ModelHomeEnv::create($params, [ + 'home_env_guid', + 'home_env_create_user_guid', + 'home_env_update_user_guid', + 'home_env_img', + 'home_env_sort' + ]); + return msg('添加成功!'); + } + + /** + * 删除首页环境 + */ + public function deleteHomeEnv(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'home_env_guid' => 'require', + ]); + $home_env = ModelHomeEnv::where([ + 'home_env_guid' => explode(',', $params['home_env_guid']) + ])->select(); + $home_env->delete(); + return msg('删除成功!'); + } + + /** + * 导出Excel + */ + public function exportExcel(Request $request) + { + $params = $request->param(); + $select = ModelHomeEnv::field([ + 'home_env_img', + 'home_env_sort' + ]) + ->order('home_env_sort', 'asc') + ->select()->toArray(); + return ModelHomeEnv::exportExcel($select); + } +} diff --git a/app/admin/controller/Home/HomeWorks.php b/app/admin/controller/Home/HomeWorks.php new file mode 100644 index 0000000..c43ee88 --- /dev/null +++ b/app/admin/controller/Home/HomeWorks.php @@ -0,0 +1,122 @@ +param(); + $con = []; + + $con = Tool::getOptionalQuery(['home_works_author_type', '='],); + + $query = ModelHomeWorks::where($con) + ->field([ + 'home_works_id', + 'home_works_guid', + 'home_works_author_type', + 'home_works_img', + 'home_works_sort', + 'home_works_intro' + ]) + ->order('home_works_sort', 'asc'); + + return msg("获取首页作品列表成功!", $query); + } + + /** + * 编辑首页作品 + */ + public function editHomeWorks(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'home_works_author_type|作者类型' => 'require', + 'home_works_img|图片' => 'require', + 'home_works_sort|排序' => 'require', + ]); + $model = ModelHomeWorks::where('home_works_guid', $params['home_works_guid'])->find(); + if (!$model) throwErrorMsg("该首页作品不存在", 1); + $model->allowField([ + 'home_works_update_user_guid', + 'home_works_author_type', + 'home_works_img', + 'home_works_sort', + 'home_works_intro' + ])->save($params); + return msg('编辑成功!'); + } + + /** + * 添加首页作品 + */ + public function addHomeWorks(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'home_works_author_type|作者类型' => 'require', + 'home_works_img|图片' => 'require', + 'home_works_sort|排序' => 'require', + ]); + $model = ModelHomeWorks::create($params, [ + 'home_works_guid', + 'home_works_create_user_guid', + 'home_works_update_user_guid', + 'home_works_author_type', + 'home_works_img', + 'home_works_sort', + 'home_works_intro' + ]); + return msg('添加成功!'); + } + + /** + * 删除首页作品 + */ + public function deleteHomeWorks(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'home_works_guid' => 'require', + ]); + $home_works = ModelHomeWorks::where([ + 'home_works_guid' => explode(',', $params['home_works_guid']) + ])->select(); + $home_works->delete(); + return msg('删除成功!'); + } + + /** + * 导出Excel + */ + public function exportExcel(Request $request) + { + $params = $request->param(); + $select = ModelHomeWorks::field([ + 'home_works_author_type', + 'home_works_img', + 'home_works_sort', + 'home_works_intro' + ]) + ->order('home_works_sort', 'asc') + ->select()->toArray(); + return ModelHomeWorks::exportExcel($select); + } +} diff --git a/app/common/model/ExaminationInformation/InfoArticle.php b/app/common/model/ExaminationInformation/InfoArticle.php index 4ffdfa5..9f4a830 100644 --- a/app/common/model/ExaminationInformation/InfoArticle.php +++ b/app/common/model/ExaminationInformation/InfoArticle.php @@ -9,6 +9,8 @@ use app\common\arw\adjfut\src\Excel; use app\Request; use app\common\exception\Tool; use think\facade\Db; +use app\common\model\Dictionary\Dictionary as ModelDictionary; +use app\common\model\ExaminationInformation\InfoArticleType as ModelInfoArticleType; class InfoArticle extends BaseModel { @@ -63,10 +65,12 @@ class InfoArticle extends BaseModel // excel导入/下载模板表头 public const EXCELFIELD = [ + 'info_article_type_name' => '文章类型', 'info_article_title' => '文章标题', 'info_article_cover' => '文章封面', - 'info_article_content' => '文章内容', + // 'info_article_content' => '文章内容', 'info_article_order' => '文章排序', + 'info_article_status' => '首页是否展示', ]; //排序字段 @@ -115,17 +119,24 @@ class InfoArticle extends BaseModel public static function exportExcel($select) { $data = [[ + '文章类型', '文章标题', '文章封面', // '文章内容', - '文章排序' + '文章排序', + "首页是否展示" ]]; foreach ($select as $key => $val) { + $show_status = ModelDictionary::getDictionaryData('show_status'); + $val['info_article_status'] = ModelDictionary::getDataDictionaryName($show_status, $val['info_article_status']); + $data[] = [ + $val['info_article_title'], $val['info_article_title'], Excel::ExportImgFiled($val['info_article_cover']), // $val['info_article_content'], $val['info_article_order'], + $val['info_article_status'], ]; } $excel = (new Excel())->exporTsheet($data); @@ -153,7 +164,7 @@ class InfoArticle extends BaseModel foreach ($data as $line => $value) { try { $model = self::importExcelInit($value); - $msg[] = "{$line} 新增成功!
"; + $msg[] = "{$line} {$model->info_article_title}新增成功!
"; } catch (\Throwable $th) { $msg[] = "{$line} {$th->getMessage()}
"; } @@ -171,15 +182,25 @@ class InfoArticle extends BaseModel */ public static function importExcelInit($value) { + $info_article_type_name = $value['info_article_type_name']; $info_article_title = $value['info_article_title']; $info_article_cover = $value['info_article_cover']; - $info_article_content = $value['info_article_content']; $info_article_order = $value['info_article_order']; + $info_article_status = $value['info_article_status']; + + $info_article_type = ModelInfoArticleType::where('info_article_type_name',$info_article_type_name)->find(); + if(!$info_article_type) throwErrorMsg($info_article_type_name . "不存在,请重新确认!"); + $info_article_type_guid = $info_article_type->info_article_type_guid; + + $show_status = ModelDictionary::getDictionaryData('show_status'); + $info_article_status = ModelDictionary::getDataDictionaryValue($show_status, $info_article_status); + return self::create([ + 'info_article_type_guid' => $info_article_type_guid, 'info_article_title' => $info_article_title, 'info_article_cover' => $info_article_cover, - 'info_article_content' => $info_article_content, 'info_article_order' => $info_article_order, + 'info_article_status' => $info_article_status, ]); } } diff --git a/app/common/model/Home/HomeEnv.php b/app/common/model/Home/HomeEnv.php new file mode 100644 index 0000000..f1d65da --- /dev/null +++ b/app/common/model/Home/HomeEnv.php @@ -0,0 +1,104 @@ + 'int', + 'home_env_guid' => 'string', + 'home_env_img' => 'string', + 'home_env_sort' => 'string', + 'home_env_create_time' => 'datetime', + 'home_env_create_user_guid' => 'string', + 'home_env_update_time' => 'datetime', + 'home_env_update_user_guid' => 'string', + 'home_env_delete_time' => 'datetime', + 'home_env_delete_user_guid' => 'string', + + ]; + // 设置json类型字段 + protected $json = ['']; + // 开启自动写入时间戳字段 + protected $autoWriteTimestamp = 'datetime'; + // 创建时间 + protected $createTime = 'home_env_create_time'; + // 修改时间 + protected $updateTime = 'home_env_update_time'; + + + //排序字段 + public $order_field = 'home_env_sort'; + + /** + * 新增前 + */ + public static function onBeforeInsert(self $model): void + { + Tool::sortInsertProc( + self::class, + $model->home_env_sort, + ); + $model->completeCreateField(); + } + + /** + * 更新前 + */ + public static function onBeforeUpdate(self $model): void + { + Tool::sortEditProc( + self::class, + $model->home_env_guid, + $model->home_env_sort, + ); + $model->completeUpdateField(); + } + + /** + * 删除前 + */ + public static function onBeforeDelete(self $model): void + { + Tool::sortDeleteProc(self::class, $model->home_env_guid); + $model->completeDeleteField(); + } + + + /** + * 导出Excel + * + * @param array $select 导出的数据 + */ + public static function exportExcel(array $select): void + { + $data = [[ + '图片', + '排序' + ]]; + foreach ($select as $key => $val) { + $data[] = [ + Excel::ExportImgFiled($val['home_env_img']), + $val['home_env_sort'], + ]; + } + $excel = (new Excel())->exporTsheet($data); + $excel->save('首页环境.xlsx'); + } +} diff --git a/app/common/model/Home/HomeWorks.php b/app/common/model/Home/HomeWorks.php new file mode 100644 index 0000000..61cce64 --- /dev/null +++ b/app/common/model/Home/HomeWorks.php @@ -0,0 +1,112 @@ + 'int', + 'home_works_guid' => 'string', + 'home_works_author_type' => 'string', + 'home_works_img' => 'string', + 'home_works_sort' => 'int', + 'home_works_intro' => 'string', + 'home_works_create_time' => 'datetime', + 'home_works_create_user_guid' => 'string', + 'home_works_update_time' => 'datetime', + 'home_works_update_user_guid' => 'string', + 'home_works_delete_time' => 'datetime', + 'home_works_delete_user_guid' => 'string', + + ]; + // 设置json类型字段 + protected $json = ['']; + // 开启自动写入时间戳字段 + protected $autoWriteTimestamp = 'datetime'; + // 创建时间 + protected $createTime = 'home_works_create_time'; + // 修改时间 + protected $updateTime = 'home_works_update_time'; + + + + //排序字段 + public $order_field = 'home_works_sort'; + + /** + * 新增前 + */ + public static function onBeforeInsert(self $model): void + { + Tool::sortInsertProc( + self::class, + $model->home_works_sort, + ['home_works_author_type' => $model->home_works_author_type] + ); + $model->completeCreateField(); + } + + /** + * 更新前 + */ + public static function onBeforeUpdate(self $model): void + { + Tool::sortEditProc( + self::class, + $model->home_works_guid, + $model->home_works_sort, + ['home_works_author_type' => $model->home_works_author_type] + ); + $model->completeUpdateField(); + } + + /** + * 删除前 + */ + public static function onBeforeDelete(self $model): void + { + Tool::sortDeleteProc(self::class, $model->home_works_guid); + $model->completeDeleteField(); + } + + /** + * 导出Excel + * + * @param array $select 导出的数据 + */ + public static function exportExcel(array $select): void + { + $data = [[ + '作者类型', + '图片', + '排序', + '介绍' + ]]; + foreach ($select as $key => $val) { + $data[] = [ + Excel::ExportImgFiled($val['home_works_author_type']), + $val['home_works_img'], + $val['home_works_sort'], + $val['home_works_intro'], + ]; + } + $excel = (new Excel())->exporTsheet($data); + $excel->save('首页作品.xlsx'); + } +} diff --git a/public/excel/艺考资讯/资讯文章导入模板.xlsx b/public/excel/艺考资讯/资讯文章导入模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e7fa11bca91bfe6dd95e83f6481e3c3c34699286 GIT binary patch literal 9144 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 a{)eelS3-uLE&zZ5|Ga{S1JqPMfBhfuf3Z^l literal 0 HcmV?d00001