# 用户搜索 API - 快速总结 ## ✅ 已完成 ### 新增 API 端点 ``` GET /user.user/search ``` **功能**: 搜索用户/患者,用于创建订单等场景 ### 后端实现 **文件**: `server/app/adminapi/controller/user/UserController.php` ```php public function search() { // 获取搜索参数 $keyword = $this->request->get('keyword', ''); $page_no = $this->request->get('page_no', 1); $page_size = $this->request->get('page_size', 10); // 如果没有关键词,返回空结果 if (empty($keyword)) { return $this->success('', ['lists' => [], 'count' => 0]); } // 计算分页偏移 $offset = ($page_no - 1) * $page_size; // 搜索用户(按昵称、手机号、账号) $lists = \app\common\model\user\User::where('nickname|mobile|account', 'like', '%' . $keyword . '%') ->field(['id', 'nickname', 'mobile', 'account', 'avatar']) ->limit($offset, $page_size) ->order('id desc') ->select() ->toArray(); // 获取总数 $count = \app\common\model\user\User::where('nickname|mobile|account', 'like', '%' . $keyword . '%') ->count(); // 返回结果 return $this->success('', [ 'lists' => $lists, 'count' => $count, 'page_no' => $page_no, 'page_size' => $page_size ]); } ``` ### 前端实现 **文件**: `admin/src/api/order.ts` ```typescript // 搜索用户/患者 export function searchPatients(params: any) { return request.get({ url: '/user.user/search', params }) } ``` ### 组件集成 **文件**: `admin/src/views/order/index.vue` ```typescript import { searchPatients as searchPatientsAPI } from '@/api/order' const searchPatients = async (query: string) => { if (!query) { patientList.value = [] return } try { patientLoading.value = true const res = await searchPatientsAPI({ keyword: query, page_no: 1, page_size: 10 }) patientList.value = res?.lists || [] } finally { patientLoading.value = false } } ``` ## 🔌 API 使用 ### 请求 ```bash GET /user.user/search?keyword=张三&page_no=1&page_size=10 ``` ### 参数 | 参数 | 说明 | |------|------| | keyword | 搜索关键词(必填) | | page_no | 页码(可选,默认1) | | page_size | 每页数量(可选,默认10) | ### 响应 ```json { "code": 1, "msg": "success", "data": { "lists": [ { "id": 1, "nickname": "张三", "mobile": "13800138000", "account": "zhangsan", "avatar": "https://example.com/avatar.jpg" } ], "count": 1, "page_no": 1, "page_size": 10 } } ``` ## 🎯 使用场景 在创建订单时搜索患者: ```vue ``` ## 📊 搜索字段 - `nickname` - 用户昵称 - `mobile` - 手机号码 - `account` - 账号 ## ✨ 特性 ✅ 多字段搜索 ✅ 分页支持 ✅ 性能优化 ✅ 模糊匹配 ✅ 权限控制 ## 📝 修改的文件 1. `server/app/adminapi/controller/user/UserController.php` - 新增 search() 方法 2. `admin/src/api/order.ts` - 新增 searchPatients() 函数 3. `admin/src/views/order/index.vue` - 更新患者搜索逻辑 ## 🚀 立即使用 无需额外配置,创建订单时患者搜索框会自动使用新的 API。 ## 📚 详细文档 - `USER_SEARCH_API.md` - 完整 API 文档 - `USER_SEARCH_IMPLEMENTATION.md` - 实现细节 --- **创建日期**: 2024-03-10 **版本**: 1.0.0 **状态**: ✅ 完成