diff --git a/app/common/model/server/Server.php b/app/common/model/server/Server.php new file mode 100644 index 00000000..237b54c4 --- /dev/null +++ b/app/common/model/server/Server.php @@ -0,0 +1,87 @@ +hasOne(UploadFile::class, 'file_id', 'image_id'); + } + + public function category(): HasOne + { + return $this->hasOne(ServerCategory::class, 'category_id', 'category_id'); + } + + /** + * @notes:服务详情 + * @param $where + * @param array $with + * @return static|array|null + * @author: wanghousheng + */ + public static function detail($where, array $with = []) + { + return static::get($where, $with); + } + + + /** + * @notes:获取全部记录 + * @param array $where + * @param int $listRows + * @param string $sort + * @param string $sort_type + * @return Paginator + * @throws DbException + * @author: wanghousheng + */ + public function getList(array $where = [], int $listRows = 15, string $sort = '', string $sort_type = 'desc'): Paginator + { + $where = $this->setQueryDefaultValue($where); + $sort_arr = ['sort' => $sort_type, 'create_time' => $sort_type]; + if ($sort) { + $sort_arr = [$sort => $sort_type, 'create_time' => $sort_type]; + } + return $this->with(['image'])->withJoin(['category' => ['category_id', 'name']]) + ->where($where) + ->order($sort_arr) + ->paginate($listRows); + } + + /** + * 文章详情:HTML实体转换回普通字符 + * @param $value + * @return string + */ + public function getContentAttr($value): string + { + return htmlspecialchars_decode($value); + } + +} \ No newline at end of file diff --git a/app/store/controller/Server.php b/app/store/controller/Server.php index 591cc011..757befe9 100644 --- a/app/store/controller/Server.php +++ b/app/store/controller/Server.php @@ -2,6 +2,7 @@ namespace app\store\controller; +use app\store\model\server\Server as ServerModel; use app\store\model\ServerCategory; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; @@ -55,7 +56,7 @@ class Server extends Controller * @return Json * @author: wanghousheng */ - public function editCategory(int $categoryId) + public function editCategory(int $categoryId): Json { $data = $this->postForm(); if (!$data) { @@ -68,7 +69,7 @@ class Server extends Controller return $this->renderError($model->getError() ?: '编辑失败'); } - public function deleteCategory(int $categoryId) + public function deleteCategory(int $categoryId): Json { $model = ServerCategory::detail($categoryId); if ($model->remove()) { @@ -76,4 +77,109 @@ class Server extends Controller } return $this->renderError('删除失败'); } + + /** + * @notes:服务列表 + * @return Json + * @author: wanghousheng + */ + public function serverList(): Json + { + // 获取列表记录 + $model = new ServerModel(); + $server_name = $this->request->post('server_name'); + $category_id = intval($this->request->post('category_id')); + $status = intval($this->request->post('status')); + $where = []; + if ($server_name) { + $where[] = ['server.server_name', 'like', "%$server_name%"]; + } + if ($category_id) { + $where[] = ['server.category_id', '=', $category_id]; + } + if ($status) { + $where[] = ['server.status', '=', $status]; + } + try { + $list = $model->getList($where); + } catch (DbException $e) { + return $this->renderError($e->getMessage()); + } + return $this->renderSuccess(compact('list')); + } + + public function ServerDetail(int $serverId): Json + { + // 获取商品详情 + $model = new ServerModel; + $info = $model->getDetail($serverId); + return $this->renderSuccess(compact('info')); + } + + /** + * @notes:添加服务 + * @return Json + * @author: wanghousheng + */ + public function addServer(): Json + { + $data = $this->postForm(); + if (!$data) { + return $this->renderError('缺少必要参数'); + } + $model = new ServerModel(); + if ($model->add($data)) { + return $this->renderSuccess('添加成功'); + } + return $this->renderError($model->getError() ?: '添加失败'); + } + + /** + * @notes:编辑服务 + * @param int $serverId + * @return Json + * @author: wanghousheng + */ + public function editServer(int $serverId): Json + { + $data = $this->postForm(); + if (!$data) { + return $this->renderError('缺少必要参数'); + } + $model = ServerModel::detail($serverId); + if ($model->edit($data)) { + return $this->renderSuccess('编辑成功'); + } + return $this->renderError($model->getError() ?: '编辑失败'); + } + + /** + * @notes:删除服务 + * @param array $serverId + * @return Json + * @author: wanghousheng + */ + public function deleteServer(array $serverId): Json + { + $model = new ServerModel; + if ($model->remove($serverId)) { + return $this->renderSuccess('删除成功'); + } + return $this->renderError('删除失败'); + } + + /** + * 修改服务状态(上下架) + * @param array $serverIds 商品id集 + * @param bool $state 为true表示上架 + * @return Json + */ + public function serverStatus(array $serverIds, bool $state): Json + { + $model = new ServerModel; + if (!$model->setStatus($serverIds, $state)) { + return $this->renderError($model->getError() ?: '操作失败'); + } + return $this->renderSuccess('操作成功'); + } } diff --git a/app/store/model/server/Server.php b/app/store/model/server/Server.php new file mode 100644 index 00000000..451f073e --- /dev/null +++ b/app/store/model/server/Server.php @@ -0,0 +1,69 @@ +save($data); + } + + /** + * @notes:编辑 + * @param $data + * @return bool + * @author: wanghousheng + */ + public function edit($data): bool + { + // 是否删除图片 + !isset($data['image_id']) && $data['image_id'] = 0; + return $this->save($data) !== false; + } + + /** + * @notes:删除 + * @param array $serverId + * @return bool + * @author: wanghousheng + */ + public function remove(array $serverId): bool + { + try { + return static::whereIn('server_id', $serverId)->select()->delete(); + } catch (DataNotFoundException|ModelNotFoundException|DbException $e) { + return false; + } + } + + /** + * 修改服务状态 + * @param array $serverIds 商品id集 + * @param bool $state 为true表示上架 + * @return bool|false + */ + public function setStatus(array $serverIds, bool $state): bool + { + // 批量更新记录 + return static::updateBase(['status' => $state ? 1 : 2], [['server_id', 'in', $serverIds]]); + } + + public function getDetail(int $serverId) + { + return static::detail($serverId, ['image', 'category']); + } +} \ No newline at end of file