diff --git a/app/admin/controller/HonoraryAchievement/Achievement.php b/app/admin/controller/HonoraryAchievement/Achievement.php new file mode 100644 index 0000000..9604066 --- /dev/null +++ b/app/admin/controller/HonoraryAchievement/Achievement.php @@ -0,0 +1,159 @@ +param(); + $con = []; + + $con = Tool::getOptionalQuery(['school_category_guid', '='], ['achievement_title', 'LIKE'],); + + $query = ModelAchievement::where($con) + ->field([ + 'a.achievement_id', + 'a.achievement_guid', + 'a.school_category_guid', + 'b.school_category_name', + 'a.achievement_title', + 'a.achievement_content', + 'a.achievement_sub_content', + 'a.achievement_sort' + ]) + ->alias('a') + ->leftjoin('school_category b','a.school_category_guid = b.school_category_guid') + ->order('achievement_sort', 'asc'); + + return msg("获取录取院校成绩列表成功!", $query); + } + + /** + * 编辑录取院校成绩 + */ + public function editAchievement(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'school_category_guid|录取院校' => 'require', + 'achievement_title|标题' => 'require', + 'achievement_content|内容' => 'require', + 'achievement_sub_content|副内容' => 'require', + 'achievement_sort|排序' => 'require' + ]); + $model = ModelAchievement::where('achievement_guid', $params['achievement_guid'])->find(); + if (!$model) throwErrorMsg("该录取院校成绩不存在", 1); + $model->allowField([ + 'achievement_update_user_guid', + 'school_category_guid', + 'achievement_title', + 'achievement_content', + 'achievement_sub_content', + 'achievement_sort' + ])->save($params); + return msg('编辑成功!'); + } + + /** + * 添加录取院校成绩 + */ + public function addAchievement(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'school_category_guid|录取院校' => 'require', + 'achievement_title|标题' => 'require', + 'achievement_content|内容' => 'require', + 'achievement_sub_content|副内容' => 'require', + 'achievement_sort|排序' => 'require' + ]); + $model = ModelAchievement::create($params, [ + 'achievement_guid', + 'achievement_create_user_guid', + 'achievement_update_user_guid', + 'school_category_guid', + 'achievement_title', + 'achievement_content', + 'achievement_sub_content', + 'achievement_sort' + ]); + return msg('添加成功!'); + } + + /** + * 删除录取院校成绩 + */ + public function deleteAchievement(Request $request): array + { + $params = $request->param(); + $this->validate($params, [ + 'achievement_guid' => 'require', + ]); + $achievement = ModelAchievement::where([ + 'achievement_guid' => explode(',', $params['achievement_guid']) + ])->select(); + $achievement->delete(); + return msg('删除成功!'); + } + + /** + * 导出Excel + */ + public function exportExcel(Request $request) + { + $params = $request->param(); + $select = ModelAchievement::field([ + 'school_category_guid', + 'achievement_title', + 'achievement_content', + 'achievement_sub_content', + 'achievement_sort' + ]) + ->order('achievement_sort', 'asc') + ->select(); + return ModelAchievement::exportExcel($select); + } + + /** + * 下载导入模板 + */ + public function downloadTemplate(Request $request) + { + $params = $request->param(); + $data = array_values(ModelAchievement::EXCELFIELD); + $excel = (new Excel())->exporTsheet($data); + $excel->save('录取院校成绩导入模板.xlsx'); + } + + /** + * 导入excel + */ + public function importExcel(Request $request) + { + $file = new UploadFile('uploads', 'fileExt:xlsx'); + $file->putFile('achievement'); + + $msg = ModelAchievement::importExcel($file); + return [ + 'code' => 0, + 'msg' => $msg + ]; + } +} diff --git a/app/admin/controller/HonoraryAchievement/SchoolCategory.php b/app/admin/controller/HonoraryAchievement/SchoolCategory.php index 1afe5f6..506b728 100644 --- a/app/admin/controller/HonoraryAchievement/SchoolCategory.php +++ b/app/admin/controller/HonoraryAchievement/SchoolCategory.php @@ -114,8 +114,7 @@ class SchoolCategory extends BaseController $select = ModelSchoolCategory::field([ 'school_category_title', 'school_category_name', - 'school_category_img', - 'school_category_sort' + 'school_category_img' ]) ->order('school_category_sort', 'asc') ->select(); diff --git a/app/common/model/HonoraryAchievement/Achievement.php b/app/common/model/HonoraryAchievement/Achievement.php new file mode 100644 index 0000000..4288a78 --- /dev/null +++ b/app/common/model/HonoraryAchievement/Achievement.php @@ -0,0 +1,176 @@ + "int", + + "achievement_guid" => "string", + + "school_category_guid" => "string", + + "achievement_title" => "string", + + "achievement_content" => "string", + + "achievement_sub_content" => "string", + + "achievement_sort" => "string", + + "achievement_create_time" => "datetime", + + "achievement_create_user_guid" => "string", + + "achievement_update_time" => "datetime", + + "achievement_update_user_guid" => "string", + + "achievement_delete_time" => "datetime", + + "achievement_delete_user_guid" => "string", + + ]; + // 设置json类型字段 + protected $json = ['']; + // 开启自动写入时间戳字段 + protected $autoWriteTimestamp = 'datetime'; + // 创建时间 + protected $createTime = 'achievement_create_time'; + // 修改时间 + protected $updateTime = 'achievement_update_time'; + + + // excel导入/下载模板表头 + public const EXCELFIELD = [ + 'school_category_guid' => '录取院校', + 'achievement_title' => '标题', + 'achievement_content' => '内容', + 'achievement_sub_content' => '副内容', + 'achievement_sort' => '排序', + ]; + + + + /** + * 新增前 + */ + public static function onBeforeInsert(self $model): void + { + // self::checkRepeatData($model); + $model->completeCreateField(); + } + + /** + * 更新前 + */ + public static function onBeforeUpdate(self $model): void + { + // self::checkRepeatData($model); + $model->completeUpdateField(); + } + + /** + * 删除前 + */ + public static function onBeforeDelete(self $model): void + { + $model->completeDeleteField(); + } + + /** + * 导出Excel + */ + public static function exportExcel($select) + { + $data = [[ + '录取院校', + '标题', + '内容', + '副内容', + '排序' + ]]; + foreach ($select as $key => $val) { + $data[] = [ + $val['school_category_guid'], + $val['achievement_title'], + $val['achievement_content'], + $val['achievement_sub_content'], + $val['achievement_sort'], + ]; + } + $excel = (new Excel())->exporTsheet($data); + $excel->save('录取院校成绩.xlsx'); + } + + /** + * 导入excel + */ + public static function importExcel($file) + { + $msg = []; + + Db::startTrans(); + try { + $excel = new Excel($file); + $data = $excel->parseExcel( + Tool::getExcelRule(self::EXCELFIELD), + [ + 'titleLine' => [1] + ] + ); + if (!$data) throwErrorMsg('excel无数据', 1); + $msg = []; + foreach ($data as $line => $value) { + try { + $model = self::importExcelInit($value); + $msg[] = "{$line} 新增成功!
"; + } catch (\Throwable $th) { + $msg[] = "{$line} {$th->getMessage()}
"; + } + } + Db::commit(); + return implode(', ', $msg); + } catch (\Throwable $th) { + Db::rollback(); + throw $th; + } + } + + /** + * 导入excel初始化 + */ + public static function importExcelInit($value) + { + $school_category_guid = $value['school_category_guid']; + $achievement_title = $value['achievement_title']; + $achievement_content = $value['achievement_content']; + $achievement_sub_content = $value['achievement_sub_content']; + $achievement_sort = $value['achievement_sort']; + return self::create([ + 'school_category_guid' => $school_category_guid, + 'achievement_title' => $achievement_title, + 'achievement_content' => $achievement_content, + 'achievement_sub_content' => $achievement_sub_content, + 'achievement_sort' => $achievement_sort, + ]); + } +} diff --git a/app/common/model/HonoraryAchievement/SchoolCategory.php b/app/common/model/HonoraryAchievement/SchoolCategory.php index b382f82..48d7c23 100644 --- a/app/common/model/HonoraryAchievement/SchoolCategory.php +++ b/app/common/model/HonoraryAchievement/SchoolCategory.php @@ -107,17 +107,15 @@ class SchoolCategory extends BaseModel public static function exportExcel($select) { $data = [[ - '标题', - '名称', - '图片', - '排序' + '录取院校分类标题', + '录取院校分类名称', + '录取院校分类图片', ]]; foreach ($select as $key => $val) { $data[] = [ $val['school_category_title'], $val['school_category_name'], Excel::ExportImgFiled($val['school_category_img']), - $val['school_category_sort'], ]; } $excel = (new Excel())->exporTsheet($data);