'like', 'status' => '=', ]; /** 等级列表 */ #[GetRoute(authorize: 'query')] public function query(Request $request): JsonResponse { $params = $request->all(); $pageSize = $params['pageSize'] ?? 10; $data = $this->buildSearch($params, CustomerLevelModel::query()) ->orderBy('sort') ->orderBy('id', 'desc') ->paginate($pageSize) ->toArray(); return $this->success($data); } /** 上传等级图片文件 */ #[PostRoute('/upload', 'create')] public function uploadImage(Request $request, SysFileService $service): JsonResponse { $data = $request->validate(['file' => 'required|file']); $result = $service->upload( $data['file'], 8, 20, Auth::id() ); return $this->success($result); } /** 创建等级 */ #[PostRoute(authorize: 'create')] public function create(CustomerLevelFormRequest $request): JsonResponse { CustomerLevelModel::create($request->validated()); return $this->success(); } /** 编辑等级 */ #[PutRoute(route: '/{id}', authorize: 'update', where: ['id' => '[0-9]+'])] public function update(int $id, CustomerLevelFormRequest $request): JsonResponse { $model = CustomerLevelModel::find($id); if (empty($model)) { throw new RepositoryException('客户等级不存在'); } $model->update($request->validated()); return $this->success(); } /** 删除等级(被门店引用时拒绝) */ #[DeleteRoute(route: '/{id}', authorize: 'delete', where: ['id' => '[0-9]+'])] public function delete(int $id): JsonResponse { $model = CustomerLevelModel::find($id); if (empty($model)) { throw new RepositoryException('客户等级不存在'); } if ($model->stores()->exists()) { throw new RepositoryException('该等级下存在门店,无法删除'); } if ($model->prices()->exists()) { throw new RepositoryException('该等级下存在商品价格,无法删除'); } $model->delete(); return $this->success(); } /** 等级下拉选项(门店表单 / 价格矩阵用) */ #[GetRoute('/options', 'query')] public function options(): JsonResponse { $data = CustomerLevelModel::query() ->where('status', CustomerLevelModel::STATUS_NORMAL) ->orderBy('sort') ->get(['id', 'name']) ->toArray(); return $this->success($data); } }