diff --git a/app/api/controller/Recovery.php b/app/api/controller/Recovery.php index 08897916..fec56b97 100644 --- a/app/api/controller/Recovery.php +++ b/app/api/controller/Recovery.php @@ -61,12 +61,12 @@ class Recovery extends Controller */ public function detail(): Json { - $recoveryId = intval($this->request->post('recovery_id')); - if (!$recoveryId) { + $orderId = intval($this->request->post('order_id')); + if (!$orderId) { return $this->renderError('缺少必要参数'); } $model = new RecoveryOrder(); - $info = $model->getDetails($recoveryId); + $info = $model->getDetails($orderId); if ($info && !empty($info['images'])) { $info['is_cancel'] = 0; if ($info['order_status'] == RecoveryStatusEnum::ACCEPTED) { @@ -91,12 +91,12 @@ class Recovery extends Controller */ public function cancel(): Json { - $recoveryId = intval($this->request->post('recovery_id')); - if (!$recoveryId) { + $orderId = intval($this->request->post('order_id')); + if (!$orderId) { return $this->renderError('缺少必要参数'); } $model = new RecoveryOrder(); - if ($model->cancel($recoveryId)) { + if ($model->cancel($orderId)) { return $this->renderSuccess('操作成功'); } return $this->renderError('操作失败'); @@ -200,8 +200,8 @@ class Recovery extends Controller */ public function update(): Json { - $recovery_id = intval($this->request->post('recovery_id')); - if (!$recovery_id) { + $order_id = intval($this->request->post('order_id')); + if (!$order_id) { return $this->renderError('缺少必要参数'); } $imageIds = $this->request->post('image_ids'); @@ -276,7 +276,7 @@ class Recovery extends Controller 'shop_id' => $shop_id, ]; $model = new RecoveryOrder(); - if ($model->edit($data, $recovery_id, $imageIds)) { + if ($model->edit($data, $order_id, $imageIds)) { return $this->renderSuccess('操作成功'); } return $this->renderError('操作失败'); diff --git a/app/api/model/RecoveryImage.php b/app/api/model/RecoveryImage.php index 069a28ea..8583382e 100644 --- a/app/api/model/RecoveryImage.php +++ b/app/api/model/RecoveryImage.php @@ -18,15 +18,15 @@ class RecoveryImage extends BaseRecoveryImage /** * 更新关系记录 - * @param int $recoveryId + * @param int $orderId * @param array $imageIds 新的图片集 * @return array|false */ - public static function updates(int $recoveryId, array $imageIds) + public static function updates(int $orderId, array $imageIds) { // 删除所有的sku记录 - static::deleteAll(['recovery_id' => $recoveryId]); + static::deleteAll(['order_id' => $orderId]); // 批量写入商品图片记录 - return static::increased($recoveryId, $imageIds); + return static::increased($orderId, $imageIds); } } \ No newline at end of file diff --git a/app/api/model/RecoveryOrder.php b/app/api/model/RecoveryOrder.php index 83f6714d..07e33610 100644 --- a/app/api/model/RecoveryOrder.php +++ b/app/api/model/RecoveryOrder.php @@ -46,14 +46,14 @@ class RecoveryOrder extends BaseRecoveryOrder /** * @notes:订单详情 - * @param int $recoveryId + * @param int $orderId * @return BaseRecoveryOrder|array|null * @throws BaseException * @author: wanghousheng */ - public function getDetails(int $recoveryId) + public function getDetails(int $orderId) { - $where['recovery_id'] = $recoveryId; + $where['order_id'] = $orderId; $where['user_id'] = UserService::getCurrentLoginUserId(); return static::detail($where, ['images.file']); } @@ -86,16 +86,16 @@ class RecoveryOrder extends BaseRecoveryOrder /** * @notes:更新 * @param array $data - * @param int $recoveryId + * @param int $orderId * @param array $imageIds * @return bool * @author: wanghousheng */ - public function edit(array $data, int $recoveryId, array $imageIds = []): bool + public function edit(array $data, int $orderId, array $imageIds = []): bool { - if ($this->where(['recovery_id' => $recoveryId])->save($data)) { + if ($this->where(['order_id' => $orderId])->save($data)) { if ($imageIds) { - RecoveryImage::updates($recoveryId, $imageIds); + RecoveryImage::updates($orderId, $imageIds); } return true; } @@ -104,14 +104,14 @@ class RecoveryOrder extends BaseRecoveryOrder /** * @notes:取消 - * @param int $recoveryId + * @param int $orderId * @return bool * @throws BaseException * @author: wanghousheng */ - public function cancel(int $recoveryId): bool + public function cancel(int $orderId): bool { - $where['recovery_id'] = $recoveryId; + $where['order_id'] = $orderId; // 当前用户ID $userId = UserService::getCurrentLoginUserId(); if (!UserService::isStore()) { @@ -119,7 +119,7 @@ class RecoveryOrder extends BaseRecoveryOrder } $info = static::detail($where); if (!$info->isEmpty() && $info['order_status'] == RecoveryStatusEnum::ACCEPTED) { - $this->where(['recovery_id' => $recoveryId])->save(['order_status' => RecoveryStatusEnum::CANCEL]); + $this->where(['order_id' => $orderId])->save(['order_status' => RecoveryStatusEnum::CANCEL]); return true; } return false; diff --git a/app/api/model/Server/ServerCategory.php b/app/api/model/Server/ServerCategory.php index d87abd0d..6d1ae23b 100644 --- a/app/api/model/Server/ServerCategory.php +++ b/app/api/model/Server/ServerCategory.php @@ -44,6 +44,7 @@ class ServerCategory extends BaseServerCategory public function list(): array { return $this->with(['image']) + ->where(['status' => 1]) ->order(['sort', 'create_time']) ->select() ->toArray(); diff --git a/app/common/model/RecoveryImage.php b/app/common/model/RecoveryImage.php index 3bef1370..8bfb97fa 100644 --- a/app/common/model/RecoveryImage.php +++ b/app/common/model/RecoveryImage.php @@ -28,18 +28,18 @@ class RecoveryImage extends BaseModel /** * @notes:批量插入回收图片记录 - * @param int $recoveryId 回收ID + * @param int $orderId 回收ID * @param array $imageIds 图片ID集 * @return array|false * @author: wanghousheng */ - public static function increased(int $recoveryId, array $imageIds) + public static function increased(int $orderId, array $imageIds) { $dataset = []; foreach ($imageIds as $imageId) { $dataset[] = [ 'image_id' => $imageId, - 'recovery_id' => $recoveryId, + 'order_id' => $orderId, 'store_id' => self::$storeId ]; } diff --git a/app/common/model/RecoveryOrder.php b/app/common/model/RecoveryOrder.php index 3ba62b77..7082596f 100644 --- a/app/common/model/RecoveryOrder.php +++ b/app/common/model/RecoveryOrder.php @@ -11,10 +11,10 @@ use think\model\relation\HasMany; class RecoveryOrder extends BaseModel { // 定义表名 - protected $name = 'server_recovery'; + protected $name = 'server_recovery_order'; // 定义主键 - protected $pk = 'recovery_id'; + protected $pk = 'order_id'; /** * 追加字段 * @var array @@ -30,7 +30,7 @@ class RecoveryOrder extends BaseModel */ public function images(): HasMany { - return $this->hasMany(RecoveryImage::class, 'recovery_id', 'recovery_id')->order(['id']); + return $this->hasMany(RecoveryImage::class, 'order_id', 'order_id')->order(['id']); } public function getOrderStatusTextAttr($value, $data) diff --git a/app/common/model/server/RecoveryCategory.php b/app/common/model/server/RecoveryCategory.php new file mode 100644 index 00000000..caf993df --- /dev/null +++ b/app/common/model/server/RecoveryCategory.php @@ -0,0 +1,61 @@ +hasOne(UploadFile::class, 'file_id', 'image_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 + * @return array + * @throws DataNotFoundException + * @throws DbException + * @throws ModelNotFoundException + * @author: wanghousheng + */ + public function getList(array $where = []): array + { + $where = $this->setQueryDefaultValue($where); + return $this->with(['image']) + ->where($where) + ->order(['sort', 'create_time']) + ->select() + ->toArray(); + } +} \ No newline at end of file diff --git a/app/common/model/server/ServerRecovery.php b/app/common/model/server/ServerRecovery.php new file mode 100644 index 00000000..3f0e57f0 --- /dev/null +++ b/app/common/model/server/ServerRecovery.php @@ -0,0 +1,76 @@ +hasOne(UploadFile::class, 'file_id', 'image_id') + ->bind(['recovery_image' => 'preview_url']); + } + + public function category(): HasOne + { + return $this->hasOne(RecoveryCategory::class, 'category_id', 'category_id') + ->bind(['recovery_category' => 'name']); + } + + /** + * @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); + } +} \ No newline at end of file diff --git a/app/store/controller/Recovery.php b/app/store/controller/Recovery.php new file mode 100644 index 00000000..893eadc7 --- /dev/null +++ b/app/store/controller/Recovery.php @@ -0,0 +1,198 @@ +request->post('name'); + $where = []; + if (!empty($name)) { + $where[] = ['name', 'like', `%$name%`]; + } + $model = new RecoveryCategory(); + try { + $list = $model->getList($where); + } catch (DataNotFoundException|ModelNotFoundException|DbException $e) { + return $this->renderError($e->getMessage() ?: '接口异常'); + } + return $this->renderSuccess(compact('list')); + } + + /** + * @notes:添加分类 + * @return Json + * @author: wanghousheng + */ + public function addCategory(): Json + { + $data = $this->postForm(); + if (!$data) { + return $this->renderError('缺少必要参数'); + } + $model = new RecoveryCategory(); + if ($model->add($data)) { + return $this->renderSuccess('添加成功'); + } + return $this->renderError($model->getError() ?: '添加失败'); + } + + /** + * @notes:编辑分类 + * @param int $categoryId + * @return Json + * @author: wanghousheng + */ + public function editCategory(int $categoryId): Json + { + $data = $this->postForm(); + if (!$data) { + return $this->renderError('缺少必要参数'); + } + $model = RecoveryCategory::detail($categoryId); + if ($model->edit($data)) { + return $this->renderSuccess('编辑成功'); + } + return $this->renderError($model->getError() ?: '编辑失败'); + } + + public function deleteCategory(int $categoryId): Json + { + $model = RecoveryCategory::detail($categoryId); + if ($model->remove()) { + return $this->renderSuccess('删除成功'); + } + return $this->renderError('删除失败'); + } + + /** + * @notes:回收列表 + * @return Json + * @author: wanghousheng + */ + public function recoveryList(): Json + { + // 获取列表记录 + $model = new ServerRecovery(); + $recovery_name = $this->request->post('recovery_name'); + $category_id = intval($this->request->post('category_id')); + $status = intval($this->request->post('status')); + $where = []; + if ($recovery_name) { + $where[] = ['recovery.server_name', 'like', "%$recovery_name%"]; + } + if ($category_id) { + $where[] = ['recovery.category_id', '=', $category_id]; + } + if ($status) { + $where[] = ['recovery.status', '=', $status]; + } + try { + $list = $model->getList($where); + } catch (DbException $e) { + return $this->renderError($e->getMessage()); + } + return $this->renderSuccess(compact('list')); + } + + public function recoveryDetail(int $recoveryId): Json + { + // 获取商品详情 + $model = new ServerRecovery; + $info = $model->getDetail($recoveryId); + return $this->renderSuccess(compact('info')); + } + + /** + * @notes:添加回收 + * @return Json + * @author: wanghousheng + */ + public function addRecovery(): Json + { + $data = $this->postForm(); + if (!$data) { + return $this->renderError('缺少必要参数'); + } + $model = new ServerRecovery(); + if ($model->add($data)) { + return $this->renderSuccess('添加成功'); + } + return $this->renderError($model->getError() ?: '添加失败'); + } + + /** + * @notes:编辑回收 + * @param int $recoveryId + * @return Json + * @author: wanghousheng + */ + public function editRecovery(int $recoveryId): Json + { + $data = $this->postForm(); + if (!$data) { + return $this->renderError('缺少必要参数'); + } + $model = ServerRecovery::detail($recoveryId); + if ($model->edit($data)) { + return $this->renderSuccess('编辑成功'); + } + return $this->renderError($model->getError() ?: '编辑失败'); + } + + /** + * @notes:订单状态 + * @return Json + * @author: wanghousheng + */ + public function orderStatus(): Json + { + $list = array_values(RecoveryStatusEnum::data()); + return $this->renderSuccess(compact('list')); + } + + /** + * @notes:删除回收 + * @param array $recoveryId + * @return Json + * @author: wanghousheng + */ + public function deleteRecovery(array $recoveryId): Json + { + $model = new ServerRecovery; + if ($model->remove($recoveryId)) { + return $this->renderSuccess('删除成功'); + } + return $this->renderError('删除失败'); + } + + /** + * 修改回收状态(上下架) + * @param array $recoveryIds id集 + * @param bool $state 为true表示上架 + * @return Json + */ + public function recoveryStatus(array $recoveryIds, bool $state): Json + { + $model = new ServerRecovery; + if (!$model->setStatus($recoveryIds, $state)) { + return $this->renderError($model->getError() ?: '操作失败'); + } + return $this->renderSuccess('操作成功'); + } +} \ No newline at end of file diff --git a/app/store/model/server/RecoveryCategory.php b/app/store/model/server/RecoveryCategory.php new file mode 100644 index 00000000..6220ba71 --- /dev/null +++ b/app/store/model/server/RecoveryCategory.php @@ -0,0 +1,48 @@ +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:删除 + * @return bool + * @author: wanghousheng + */ + public function remove(): bool + { + if (!static::detail(['category_id' => $this['category_id']])) { + $this->error = '记录不存在'; + return false; + } + return $this->delete(); + } +} \ No newline at end of file diff --git a/app/store/model/server/ServerRecovery.php b/app/store/model/server/ServerRecovery.php new file mode 100644 index 00000000..29e16d3a --- /dev/null +++ b/app/store/model/server/ServerRecovery.php @@ -0,0 +1,62 @@ +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 $recoveryId + * @return bool + * @author: wanghousheng + */ + public function remove(array $recoveryId): bool + { + return static::whereIn('server_id', $recoveryId)->delete(); + } + + /** + * 修改回收状态 + * @param array $recoveryIds 商品id集 + * @param bool $state 为true表示上架 + * @return bool|false + */ + public function setStatus(array $recoveryIds, bool $state): bool + { + // 批量更新记录 + return static::updateBase(['status' => $state ? 1 : 2], [['recovery_id', 'in', $recoveryIds]]); + } + + public function getDetail(int $recoveryId) + { + return static::detail($recoveryId, ['image', 'category']); + } +} \ No newline at end of file