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'
+ ]
+ );
+ }
+}