diff --git a/app/admin/controller/WishList/WishList.php b/app/admin/controller/WishList/WishList.php new file mode 100644 index 0000000..3ef1591 --- /dev/null +++ b/app/admin/controller/WishList/WishList.php @@ -0,0 +1,173 @@ +param(); + $con = []; + + $con = Tool::getOptionalQuery(['wish_list_name', 'LIKE'], ['wish_list_author', 'LIKE'], ['wish_list_status', '='],); + + $query = ModelWishList::where($con) + ->field([ + 'wish_list_id', + 'wish_list_guid', + 'wish_list_name', + 'wish_list_author', + 'wish_list_status', + 'wish_list_complete_date', + 'wish_list_sort', + 'wish_list_create_time' + ]) + ->order('wish_list_sort', 'desc'); + + return $isExport ? $query->select()->toArray() : msg("获取心愿单列表成功!", $query); + } + + /** + * 添加心愿单 + */ + public function addWishList(Request $request): array + { + Db::startTrans(); + Tool::adminLockTableWrite('wish_list'); + try { + $params = $request->param(); + $this->validate($params, [ + 'wish_list_name|心愿名称' => 'require', + 'wish_list_status|完成状态' => 'require' + ]); + $model = ModelWishList::create($params, [ + 'wish_list_name', + 'wish_list_author', + 'wish_list_status', + 'wish_list_complete_date', + 'wish_list_sort', + 'wish_list_guid', + 'wish_list_create_user_guid', + 'wish_list_update_user_guid' + ]); + Db::commit(); + Tool::unlockTable(); + return msg('添加成功!'); + } catch (\Throwable $th) { + Db::rollback(); + Tool::unlockTable(); + throw $th; + } + } + + /** + * 编辑心愿单 + */ + public function editWishList(Request $request): array + { + Db::startTrans(); + Tool::adminLockTableWrite('wish_list'); + try { + $params = $request->param(); + $this->validate($params, [ + 'wish_list_name|心愿名称' => 'require', + 'wish_list_status|完成状态' => 'require' + ]); + $model = ModelWishList::where('wish_list_guid', $params['wish_list_guid'])->find(); + if (!$model) throwErrorMsg("该心愿单不存在", 1); + $model->allowField([ + 'wish_list_name', + 'wish_list_author', + 'wish_list_status', + 'wish_list_complete_date', + 'wish_list_sort', + 'wish_list_update_user_guid' + ])->save($params); + Db::commit(); + Tool::unlockTable(); + return msg('编辑成功!'); + } catch (\Throwable $th) { + Db::rollback(); + Tool::unlockTable(); + throw $th; + } + } + + /** + * 删除心愿单 + */ + public function deleteWishList(Request $request): array + { + Db::startTrans(); + Tool::adminLockTableWrite('wish_list'); + try { + $params = $request->param(); + $this->validate($params, [ + 'wish_list_guid' => 'require', + ]); + $wish_list = ModelWishList::where([ + 'wish_list_guid' => explode(',', $params['wish_list_guid']) + ])->select(); + $wish_list->delete(); + Db::commit(); + Tool::unlockTable(); + return msg('删除成功!'); + } catch (\Throwable $th) { + Db::rollback(); + Tool::unlockTable(); + throw $th; + } + } + + /** + * 导出Excel + */ + public function exportExcel(Request $request): void + { + ModelWishList::exportExcel(self::getWishListList($request, true)); + } + + /** + * 下载导入模板 + */ + public function downloadTemplate(Request $request): void + { + $params = $request->param(); + $data = [ + array_values(ModelWishList::EXCELFIELD), + ['默认值1', '默认值2', '默认值3', '默认值4','默认值5'] + ]; + $excel = (new Excel())->exporTsheet($data); + $excel->save('心愿单导入模板.xlsx'); + } + + /** + * 导入excel + */ + public function importExcel(Request $request): array + { + $file = new UploadFile('uploads', 'fileExt:xlsx'); + $file->putFile('wish_list'); + $msg = ModelWishList::importExcel($file); + return [ + 'code' => 0, + 'msg' => $msg + ]; + } +} diff --git a/app/common/model/WishList/WishList.php b/app/common/model/WishList/WishList.php new file mode 100644 index 0000000..4792777 --- /dev/null +++ b/app/common/model/WishList/WishList.php @@ -0,0 +1,203 @@ + 'int', + 'wish_list_guid' => 'string', + 'wish_list_name' => 'string', + 'wish_list_author' => 'string', + 'wish_list_status' => 'int', + 'wish_list_sort' => 'int', + 'wish_list_complete_date' => 'date', + 'wish_list_create_time' => 'datetime', + 'wish_list_create_user_guid' => 'string', + 'wish_list_update_time' => 'datetime', + 'wish_list_update_user_guid' => 'string', + 'wish_list_delete_time' => 'datetime', + 'wish_list_delete_user_guid' => 'string', + + ]; + // 设置json类型字段 + protected $json = ['']; + // 开启自动写入时间戳字段 + protected $autoWriteTimestamp = 'datetime'; + // 创建时间 + protected $createTime = 'wish_list_create_time'; + // 修改时间 + protected $updateTime = 'wish_list_update_time'; + + //排序字段 + public $order_field = 'wish_list_sort'; + + // excel导入/下载模板表头 + public const EXCELFIELD = [ + 'wish_list_name' => '心愿名称', + 'wish_list_author' => '作者', + 'wish_list_status' => '完成状态', + 'wish_list_complete_date' => '完成日期', + 'wish_list_sort' => '排序', + ]; + + /** + * 新增前 + */ + public static function onBeforeInsert(self $model): void + { + Tool::dataAddSortProc($model); + $model->completeCreateField(); + } + + /** + * 更新前 + */ + public static function onBeforeUpdate(self $model): void + { + Tool::dataEditSortProc($model); + $model->completeUpdateField(); + } + + /** + * 删除前 + */ + public static function onBeforeDelete(self $model): void + { + Tool::dataDeleteSortProc($model); + $model->completeDeleteField(); + } + + /** + * 创建时间获取器 + */ + public function getWishListCreateTimeAttr($value, $data) + { + $wish_list_create_time = $data['wish_list_create_time']; + return date('Y-m-d', strtotime($wish_list_create_time)); + } + + + /** + * 导出Excel + * + * @param array $select 导出的数据 + */ + public static function exportExcel(array $select): void + { + $data = [[ + '心愿名称', + '作者', + '完成状态', + '完成日期', + '排序' + ]]; + foreach ($select as $key => $val) { + // 获取新闻类型名称 + $complete_status = ModelDictionary::getDictionaryData('complete_status'); + $val['wish_list_status'] = ModelDictionary::getDataDictionaryName($complete_status, $val['wish_list_status']); + + $data[] = [ + $val['wish_list_name'], + $val['wish_list_author'], + $val['wish_list_status'], + $val['wish_list_complete_date'], + $val['wish_list_sort'], + ]; + } + $excel = (new Excel())->exporTsheet($data); + $excel->save('心愿单.xlsx'); + } + + + /** + * 导入excel + * + * @param \app\common\arw\adjfut\src\UploadFile $file excel + */ + public static function importExcel(\app\common\arw\adjfut\src\UploadFile $file): string + { + $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} 【{$value['wish_list_name']}】新增成功!
"; + } catch (\Throwable $th) { + $msg[] = "{$line} {$th->getMessage()}
"; + } + } + Db::commit(); + return implode(', ', $msg); + } catch (\Throwable $th) { + Db::rollback(); + throw $th; + } + } + + + /** + * 导入excel初始化 + * + * @param array $value excel每行数据 + */ + public static function importExcelInit(array $value): void + { + $wish_list_name = $value['wish_list_name']; + $wish_list_author = $value['wish_list_author']; + $wish_list_status = $value['wish_list_status']; + $wish_list_complete_date = $value['wish_list_complete_date']; + $wish_list_sort = $value['wish_list_sort']; + + // 获取完成状态的字典值 + $complete_status_dic = ModelDictionary::getDictionaryData('complete_status'); + $wish_list_status = ModelDictionary::getDataDictionaryValue($complete_status_dic, $wish_list_status); + if (!$wish_list_status) throwErrorMsg("完成状态:【{$wish_list_status}】 不存在,请重新确认!"); + + self::create( + [ + 'wish_list_name' => $wish_list_name, + 'wish_list_author' => $wish_list_author, + 'wish_list_status' => $wish_list_status, + 'wish_list_complete_date' => $wish_list_complete_date, + 'wish_list_sort' => $wish_list_sort, + ], + [ + 'wish_list_name', + 'wish_list_author', + 'wish_list_status', + 'wish_list_sort', + 'wish_list_guid', + 'wish_list_create_user_guid', + 'wish_list_update_user_guid' + ] + ); + } +}