'=', 'status' => '=', ]; protected array $quickSearchField = ['nickname', 'phone']; /** 小程序用户列表 */ #[GetRoute(authorize: 'query')] public function query(Request $request): JsonResponse { $params = $request->all(); $pageSize = $params['pageSize'] ?? 10; $data = $this->buildSearch($params, UserModel::query()->with('store:id,name')) ->orderBy('id', 'desc') ->paginate($pageSize) ->toArray(); return $this->success($data); } /** * 绑定门店(一个门店可绑多个账号,一个账号只绑一个门店) */ #[PutRoute(route: '/{id}/bind', authorize: 'bind', where: ['id' => '[0-9]+'])] public function bind(int $id, MiniUserBindRequest $request): JsonResponse { $validated = $request->validated(); $user = UserModel::find($id); if (empty($user)) { throw new RepositoryException('用户不存在'); } $store = StoreModel::find((int) $validated['store_id']); if (empty($store)) { throw new RepositoryException('门店不存在'); } $user->store_id = $store->id; $user->save(); return $this->success(); } /** 启用/停用 */ #[PutRoute(route: '/{id}/status', authorize: 'update', where: ['id' => '[0-9]+'])] public function status(int $id, Request $request): JsonResponse { $data = $request->validate([ 'status' => 'required|integer|in:0,1', ], [ 'status.required' => '状态不能为空', 'status.in' => '状态值不正确', ]); $user = UserModel::find($id); if (empty($user)) { throw new RepositoryException('用户不存在'); } $user->status = (int) $data['status']; $user->save(); return $this->success(); } }