'=', 'store_id' => '=', 'supplier_id' => '=', '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', 'supplier: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('用户不存在'); } if ((int) $validated['type'] === UserModel::TYPE_STORE) { $store = StoreModel::find((int) $validated['store_id']); if (empty($store)) { throw new RepositoryException('门店不存在'); } $user->type = UserModel::TYPE_STORE; $user->store_id = $store->id; $user->supplier_id = 0; } else { $supplier = SupplierModel::find((int) $validated['supplier_id']); if (empty($supplier)) { throw new RepositoryException('供应商不存在'); } $user->type = UserModel::TYPE_SUPPLIER; $user->supplier_id = $supplier->id; $user->store_id = 0; } $user->save(); return $this->success(); } /** 启用/停用(停用后登录时检查 status 拒绝,token 鉴权拦截) */ #[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(); } }