feat: 添加心愿单管理

This commit is contained in:
lwh 2023-08-24 17:17:09 +08:00
parent 7dc456195e
commit 669a897106
2 changed files with 376 additions and 0 deletions

View File

@ -0,0 +1,173 @@
<?php
namespace app\admin\controller\WishList;
use app\BaseController;
use app\common\model\WishList\WishList as ModelWishList;
use app\Request;
use think\Validate;
use think\exception\ValidateException;
use think\facade\Filesystem;
use app\common\arw\adjfut\src\Excel;
use app\common\arw\adjfut\src\UploadFile;
use app\common\exception\Tool;
use think\facade\Db;
use think\facade\Env;
class WishList extends BaseController
{
/**
* 获取心愿单列表
*/
public function getWishListList(Request $request, $isExport = false): array
{
$params = $request->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
];
}
}

View File

@ -0,0 +1,203 @@
<?php
namespace app\common\model\WishList;
use app\common\arw\adjfut\src\Validate;
use app\BaseModel;
use think\model\concern\SoftDelete;
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;
class WishList extends BaseModel
{
use SoftDelete;
// 删除字段
protected $deleteTime = 'wish_list_delete_time';
// 设置主键名
protected $pk = 'wish_list_guid';
// 设置废弃字段
protected $disuse = [];
// 设置字段信息
protected $schema = [
'wish_list_id' => '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} <span style='color:#27af49'>【{$value['wish_list_name']}】新增成功!</span><br>";
} catch (\Throwable $th) {
$msg[] = "{$line} <span style='color:red'>{$th->getMessage()}</span><br>";
}
}
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'
]
);
}
}