'like', 'code' => 'like', 'level_id' => '=', 'status' => '=', ]; protected array $quickSearchField = ['name', 'code', 'contact', 'phone']; /** 门店列表(含等级名回显) */ #[GetRoute(authorize: 'query')] public function query(Request $request): JsonResponse { $params = $request->all(); $pageSize = $params['pageSize'] ?? 10; $data = $this->buildSearch($params, StoreModel::query()->with('level:id,name')) ->orderBy('id', 'desc') ->paginate($pageSize) ->toArray(); return $this->success($data); } /** 创建门店 */ #[PostRoute(authorize: 'create')] public function create(StoreFormRequest $request): JsonResponse { StoreModel::create($request->validated()); return $this->success(); } /** 编辑门店 */ #[PutRoute(route: '/{id}', authorize: 'update', where: ['id' => '[0-9]+'])] public function update(int $id, StoreFormRequest $request): JsonResponse { $model = StoreModel::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 = StoreModel::find($id); if (empty($model)) { throw new RepositoryException('门店不存在'); } $model->delete(); return $this->success(); } /** 门店下拉选项(小程序用户绑定、订单筛选用) */ #[GetRoute('/options', 'query')] public function options(): JsonResponse { $data = StoreModel::query() ->where('status', StoreModel::STATUS_NORMAL) ->orderBy('id') ->get(['id', 'name', 'code']) ->toArray(); return $this->success($data); } }