# uni-app-patient-nest **Repository Path**: mengshaopeng/uni-app-patient-nest ## Basic Information - **Project Name**: uni-app-patient-nest - **Description**: 优医问诊小程序-患者端(后端) - **Primary Language**: NodeJS - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-02-19 - **Last Updated**: 2025-02-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 优医问诊接口文档 ## 项目启动 安装依赖 ```cmd pnpm i ``` 启动项目 ```cmd pnpm start ``` 请求地址: ``` http://127.0.0.1:3000 ``` ## 项目前端仓库 https://gitee.com/zhou-hope-2004/community-healthcare-project ## 一、小程序患者端 ### 1.注册 **接口url:** Post /users/register **body请求参数:** | 参数名 | 是否必填 | 参数类型 | | -------- | -------- | -------- | | phone | 是 | string | | password | 是 | string | **响应示例:** 成功: ```ts { code: 200, msg: "恭喜,注册成功!", data: {} } ``` 失败: ``` { code: 200, msg: "该手机号已被注册!" } ``` ### 2.登录 **接口url:** Post /users/login **body请求参数:** | 参数名 | 是否必填 | 参数类型 | | -------- | -------- | -------- | | phone | 是 | string | | password | 是 | string | **响应示例:** 成功: ``` { "code": 200, "msg": "恭喜,登录成功!", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwaG9uZSI6IjE4ODg4ODg4ODg5IiwiaWF0IjoxNzM3NjE2OTY1fQ.5LQTHWTTilV5fYgUvka7DsHMvQMbWEa1f-ti9M3WM8o" } ``` 失败: ``` { code: 200, msg: "密码错误!", } ``` 失败: ``` { "code": 200, "msg": "该手机号未注册!" } ``` ### 3.根据姓名或疾病搜索医生 **接口url:** Get /doctors/search **query请求参数:** | 参数名 | 是否必填 | 参数类型 | | ------ | -------- | -------- | | input | 是 | string | **响应示例:** 成功: ``` { "code": 200, "msg": "搜索成功!", "data": [ { "_id": "6792361228059b7a78ecbb88", "isDeleted": 0, "name": "张复旦", "department": "内科", "professionalTitle": "副主任医师", "level": "三甲", "hospital": "北京协和医院", "specialties": "小儿呼吸、小儿消化、儿童过敏、婴幼儿保健、小儿鼻炎", "star": "4.9", "num": "6.2", "price": "69", "online": false, "commentId": "4", "createTime": 1737635346, "updateTime": 1737635346, "__v": 0 } ] } ``` 成功: ``` { "code": 200, "msg": "暂无搜索结果!" } ``` 失败(input.trim()为空字符串): ``` { "code": 200, "msg": "搜索参数不能为空!" } ``` ### 4.根据id查询医生详情 **接口url:** Get /doctors/search/:id **响应示例:** 成功: ``` { "code": 200, "msg": "查询成功!", "data": { "_id": "6792357128059b7a78ecbb82", "isDeleted": 0, "name": "张清北", "department": "内分泌科", "professionalTitle": "副主任医师", "level": "三甲", "hospital": "北京协和医院", "specialties": "小儿呼吸、小儿消化、儿童过敏", "star": "4.9", "num": "1.2", "price": "49", "online": true, "commentId": "1", "createTime": 1737635185, "updateTime": 1737635185, "__v": 0 } } ``` 失败: ``` { "statusCode": 500, "message": "Internal server error" } ``` ### 5.查找医生对应的评论列表 **接口url:** Get /commits/:id > 注:id为上一步拿到的commentId **响应示例:** 成功: ``` { "code": 200, "msg": "获取评论成功!", "data": [ { "_id": "6792479c667c9565f23bad00", "isDeleted": 0, "commentId": "4", "name": "匿名用户4610", "star": "4.2", "content": "谢谢张医生!我们已经都做过检测了在准备手术了。", "time": "2020-02-25 10:15", "createTime": 1737639836, "updateTime": 1737639836, "__v": 0 } ] } ``` 失败: ``` { "code": 200, "msg": "该医生暂无评论!" } ``` ### 6.首页文章卡片分类、分页查询 **接口url:** Get /knowledge **query请求参数:** | 参数名 | 是否必填 | 参数类型 | | -------- | -------- | -------- | | pageNum | 是 | number | | likeFlag | 是 | number | **响应示例:** 成功: ``` { "code": 200, "msg": "搜索成功!", "data": [ { "_id": "67a6c346338715fda1196ee8", "collectionNumber": "6435", "commentNumber": 126, "content": "癌症的发病机制。。。", "coverUrl": [ "https://s2.loli.net/2025/02/08/1XVKnBszGtW8xv9.png", "https://s2.loli.net/2025/02/08/P7iJnCY1bIowSx3.png", "https://s2.loli.net/2025/02/08/cr8Ql5UASKRgvje.png" ], "creatorAvatar": "https://s2.loli.net/2025/02/08/eyvnWID49fgbLNE.png", "creatorDep": "肿瘤科", "creatorHospitalName": "扬州大学附属医院", "creatorId": "1003", "creatorName": "张医生", "creatorTitles": "副主任医师", "hospitalGrade": "三级甲等", "likeFlag": 0, "title": "癌症是气出来的?经常生气,容易引发哪些癌症?肿瘤科医生告诉你", "topics": "癌症预防", "createTime": "2025-02-08T02:36:54.621Z", "updateTime": "2025-02-08T02:36:54.621Z", "__v": 0 } ] } ``` 失败: ``` { "code": 200, "msg": "暂无更多数据!" } ``` 失败: ``` { "code": 200, "msg": "入参不合法!" } ``` ### 7.首页根据id跳转文章详情 **接口url:** Get /knowledge/:id **响应示例:** 成功: ``` { "code": 200, "msg": "查询成功!", "data": { "_id": "67a6b808338715fda1196ec7", "collectionNumber": "11", "commentNumber": 7, "content": "饮食与肝脏的健康。。。", "coverUrl": [ "https://s2.loli.net/2025/02/07/oHQLEfZeMsN6a4D.webp", "https://s2.loli.net/2025/02/07/yadfAPTcBR64gYo.webp", "https://s2.loli.net/2025/02/07/68lbuIAjco5nxVi.webp" ], "creatorAvatar": "https://s2.loli.net/2025/02/08/c5t41zjkuGKJXNp.webp", "creatorDep": "肝病科", "creatorHospitalName": "中国中医科学院西苑医院", "creatorId": "1001", "creatorName": "郭医生", "creatorTitles": "主任医师", "hospitalGrade": "三级甲等", "likeFlag": 1, "title": "伤肝厉害的“水果”,便宜也少买,不少人还整袋往家提,要少吃", "topics": "饮食健康", "createTime": "2025-02-08T01:48:56.463Z", "updateTime": "2025-02-08T01:48:56.463Z", "__v": 0 } } ``` 失败: ``` { "code": 200, "msg": "入参不合法!" } ``` ### 8.支付宝沙箱支付 > 更多详情参考:https://opendocs.alipay.com/open/028r8t?scene=22 **接口url:** Post /alipay/pay **body请求参数:** | 参数名 | 是否必填 | 参数类型 | 描述 | | ---------------- | -------- | -------- | ------------------------------------------------------------ | | **out_trade_no** | 是 | string | 商户订单号,由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。 | | **total_amount** | 是 | number | 订单总金额,单位为元,精确到小数点后两位,取值范围为 [0.01,100000000]。金额不能为0。 | | **subject** | 是 | string | 订单标题。 | | **product_code** | 是 | string | 销售产品码,与支付宝签约的产品码名称。注:目前电脑支付场景下仅支持FAST_INSTANT_TRADE_PAY | **响应示例:** ```
``` ### 9.订单管理 #### **① 添加订单** **接口url:** Post /order **body请求参数:** | 参数名 | 是否必填 | 参数类型 | 描述 | | ----------------- | -------- | ------------- | ---------------------------------------------------------- | | OrderNumber | 是 | string | 唯一订单号 | | PaymentIsDone | 是 | string | 订单状态(已完成 \| 已取消 \| 待支付 \| 待接诊 \| 咨询中) | | age | 是 | string | 病人年龄 | | description | 是 | string | 病人病情描述 | | img | 否 | Array | 病人上传文件地址 | | identity | 否 | string | 病人身份证号 | | money | 是 | number | 应付金额 | | name | 是 | string | 病人姓名 | | record | 是 | string | 是否去医院就诊过 | | sex | 是 | string | 病人性别 | | time | 是 | string | 病人患病时长 | | creatTime | 是 | string | 订单创建时间 | | docName | 是 | string | 接诊医生姓名 | | department | 是 | string | 接诊医生科室 | | professionalTitle | 是 | string | 接诊医生职称 | | hospital | 是 | string | 接诊医生所在医院 | | coupon | 是 | number | 优惠券抵扣金额 | | points | 是 | number | 积分抵扣金额 | | paymentType | 是 | string | 订单类型(图文问诊 \| 开药问诊) | **响应示例:** ``` { code: 200, msg: "添加成功!", data: {} } ``` #### **② 根据订单类型获取订单** **接口url:** Get /order/search **query请求参数:** | 参数名 | 是否必填 | 参数类型 | | ----------- | -------- | -------- | | paymentType | 是 | string | **响应示例:** 成功(有数据): ``` { code: 200, msg: "查询成功!", data } ``` 成功(无数据): ``` { code: 200, msg: "暂无订单数据!" } ``` 失败: ``` { code: 200, msg: "入参不合法!" } ``` #### ③ 根据订单号查询订单详情 **接口url:** Get /order/search/:OrderNumber **响应示例:** ``` { code: 200, msg: "查询成功!", data } ``` #### ④ 根据订单号修改订单状态 **接口url:** Put /order/put/:OrderNumber **body请求参数:** | 参数名 | 是否必填 | 参数类型 | | ------------- | -------- | ---------------------------------------------- | | PaymentIsDone | 是 | 已完成 \| 待支付 \| 已取消 \| 待接诊 \| 咨询中 | **响应示例:** 成功: ``` { code: 200, msg: "修改成功!", data: {} } ``` 失败: ``` { code: 200, msg: "入参不合法!" } ``` ### 10.线上问诊模块 **接口url:** Socket.IO ws://127.0.0.1:3000 #### ① 用户连接时绑定ID emit参数 > 事件名:setUser > > 其他参数:用户自己的唯一Id ```javascript //示例 socket.emit("setUser", "123"); ``` #### ② 监听接收消息 on参数 > 事件名: "onMessage" > > 其他参数:({对方用户的唯一Id,消息内容 }) => void) ```javascript //示例 socket.on("onMessage", (e: { senderId: string; content: string }) => { console.log(e); }); ``` #### ③ 发送消息 emit参数 > 事件名:"newMessage" > > 其他参数: > > > 目标用户的唯一Id > > > > 消息内容 ```javascript //示例 socket.emit("newMessage", { targetUserId: "456", content: "你好", }); ``` ### 11.文件上传模块 #### ① 上传 **接口url:** Post /upload **body请求参数:** | 参数名 | 是否必填 | 参数类型 | | ------ | -------- | -------- | | file | 是 | file | **响应示例:** ```ts { code: 200, msg: "成功上传 屏幕截图 2025-02-02 192400.png" } ``` #### ② 查询 **接口url:** Get /upload/all **响应示例:** ```ts { "code": 200, "msg": "查询成功!", "data": [ { "_id": "67b3f4a202001457023d13b0", "isDeleted": 0, "fieldname": "file", "originalname": "屏幕截图 2025-02-02 192400.png", "encoding": "7bit", "mimetype": "image/png", "filename": "1739846818166.png", "size": 1325136, "createTime": 1739846818, "updateTime": 1739846818, "__v": 0 } ] } ``` #### **③ 访问** **接口url:** Get /public/filename