diff --git a/app/controller/admin/PackageController.php b/app/controller/admin/PackageController.php new file mode 100644 index 0000000..e3676e4 --- /dev/null +++ b/app/controller/admin/PackageController.php @@ -0,0 +1,67 @@ + 1, + 'name' => '', + 'price' => '', + 'level' => '', + 'point' => 0, + 'status' => 1 + ]); + validate(PackageValidate::class)->check($params, 'save'); + return success($service->saveData($params)); + } + + public function update(PackageService $service): Response + { + $params = requestOnly([ + 'id' => '', + 'type' => 1, + 'name' => '', + 'price' => '', + 'level' => '', + 'point' => 0, + 'status' => 1 + ]); + validate(PackageValidate::class)->check($params, 'update'); + return success($service->updateData(ArrayUtils::filterNotEmpty($params))); + } + + public function index(PackageService $service): Response + { + $params = requestOnly([ + 'name' => '', + 'type' => '', + 'begin_time' => '', + 'end_time' => '' + ]); + return success($service->listData($params)); + } + + public function read(PackageService $service): Response + { + $id = input('id'); + return success($service->readData($id)); + } + + public function delete(PackageService $service): Response + { + $ids = input('ids'); + return success($service->deleteData($ids)); + } + + public function pureIndex(PackageService $service) + { + return success($service->selectData()); + } +} \ No newline at end of file diff --git a/app/dao/admin/PackageDao.php b/app/dao/admin/PackageDao.php new file mode 100644 index 0000000..6696cec --- /dev/null +++ b/app/dao/admin/PackageDao.php @@ -0,0 +1,15 @@ +setParams(['perm' => ['packageSave']]); + Route::post('/update', [PackageController::class, 'update'])->setParams(['perm' => ['packageUpdate']]); + Route::get('/index', [PackageController::class, 'index'])->setParams(['perm' => ['packageIndex']]); + Route::get('/read', [PackageController::class, 'read'])->setParams(['perm' => ['packageRead']]); + Route::post('/delete', [PackageController::class, 'delete'])->setParams(['perm' => ['packageDelete']]); + //下拉数据 + Route::get('/pure/index', [PackageController::class, 'pureIndex'])->setParams(['perm' => 'packageIndex']); }); })->middleware([ diff --git a/app/service/admin/PackageService.php b/app/service/admin/PackageService.php new file mode 100644 index 0000000..e93883a --- /dev/null +++ b/app/service/admin/PackageService.php @@ -0,0 +1,119 @@ +dao = $dao; + } + + /** + * 保存信息 + * @param array $params + * @return array + */ + public function saveData(array $params): array + { + Db::startTrans(); + try { + $data = $this->dao->save($params); + Db::commit(); + } catch (\Exception $exception) { + Db::rollback(); + throw new ApiException($exception->getMessage()); + } + return $data->toArray(); + } + + /** + * 修改信息 + * @param array $params + * @return array + */ + public function updateData(array $params): array + { + // 落库 + Db::startTrans(); + try { + $this->dao->update(['id' => $params['id']], $params); + Db::commit(); + } catch (\Exception $exception) { + Db::rollback(); + throw new ApiException($exception->getMessage()); + } + return $params; + } + + /** + * 获取列表 + * @param array $params + * @return array + */ + public function listData(array $params): array + { + [$page, $limit] = RequestUtils::getPageParameter(); + [$sortRule, $sortField] = RequestUtils::getSortParameter(); + $query = [ + 'delete_time' => 0 + ]; + if (isNotBlank($params['name'])) { + $query[] = ['name', 'like', '%' . $params['name'] . '%']; + } + $list = $this->dao->getList($query, '*', $page, $limit, "$sortField $sortRule"); + $count = $this->dao->getCount($query); + return compact('list', 'count'); + } + + /** + * 获取信息 + * @param mixed $id + * @return array + */ + public function readData(mixed $id): array + { + $package = $this->dao->get(['id' => $id]); + if (empty($package)) { + throw new ApiException('数据不存在'); + } + return $package->toArray(); + } + + /** + * 删除信息 + * @param mixed $id + * @return array + */ + public function deleteData(array $ids): array + { + // 落库 + Db::startTrans(); + try { + $this->dao->update([['id', 'in', $ids]], ['delete_time' => time()]); + Db::commit(); + } catch (\Exception $exception) { + Db::rollback(); + throw new ApiException($exception->getMessage()); + } + return ['id' => $ids]; + } + + public function selectData() + { + $query = [ + 'delete_time' => 0 + ]; + $list = $this->dao->getList($query, '*', 0, 0, 'id DESC'); + return $list; + } +} \ No newline at end of file diff --git a/app/validate/PackageValidate.php b/app/validate/PackageValidate.php new file mode 100644 index 0000000..f0b9174 --- /dev/null +++ b/app/validate/PackageValidate.php @@ -0,0 +1,36 @@ + [ + 'name' => 'require', + 'price' => 'require|number', + 'level' => 'require|number', + 'point' => 'require', + 'status' => 'require' + ], + 'update' => [ + 'id' => 'require', + 'name' => 'require', + 'price' => 'require|number', + 'level' => 'require|number', + 'point' => 'require', + 'status' => 'require' + ], + ]; + protected $message = [ + 'id.require' => 'ID不能为空', + 'name.require' => '套餐名称不能为空', + 'price.require' => '价格不能为空', + 'price.number' => '价格只能为数字', + 'level.require' => '等级不能为空', + 'level.number' => '等级只能为数字', + 'point' => '可得点数不能为空', + 'status' => '状态不能为空' + ]; +} \ No newline at end of file