diff --git a/coupon/pages/order/order.js b/coupon/pages/order/order.js index 7536745..8a905a5 100644 --- a/coupon/pages/order/order.js +++ b/coupon/pages/order/order.js @@ -11,7 +11,7 @@ Page({ height: '', url: app.globalData.url, - statusType: ["全部", "待接单", "已接单", "待服务", "服务中", "已完成","已取消"], + statusType: ["全部", "待接单", "已接单", "服务中", "待支付", "已完成","已取消"], status: ["", "0", "1", "2", "3","4","-2"], currentType: 0, tabClass: ["", "", "", "", "", "", ""], @@ -38,7 +38,7 @@ Page({ height: 46 + statusBarHeight, }); }, - //条目点击---订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:已支付(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算 + //条目点击---订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算 itemclick(e) { @@ -144,7 +144,7 @@ Page({ onShareAppMessage: function () { }, - //订单状态:-2:已取消 -1:拒绝接单 0:待付款 1:已付款 2:已接单(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算 + //订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算 getOrderList: function () { var that = this; wx.request({ diff --git a/coupon/pages/order/order.wxml b/coupon/pages/order/order.wxml index 0b62e34..2d6cdaf 100644 --- a/coupon/pages/order/order.wxml +++ b/coupon/pages/order/order.wxml @@ -18,14 +18,13 @@ 订单号:{{item.orderNumber}} - + {{"已取消"}} {{"拒绝接单"}} {{"待接单"}} {{"已接单"}} - {{"待服务"}} - {{"服务中"}} + {{"服务中"}} + {{"待支付"}} {{"已完成"}} {{"申请退款"}} {{"退款中"}} @@ -42,7 +41,7 @@ {{item.serviceTime}}天 实付款:¥{{item.yuguMoney}}元 - 去付款 + 去付款 diff --git a/coupon/pages/orderdetail/orderdetail.js b/coupon/pages/orderdetail/orderdetail.js index fc71f3d..0e5bdc5 100644 --- a/coupon/pages/orderdetail/orderdetail.js +++ b/coupon/pages/orderdetail/orderdetail.js @@ -218,7 +218,7 @@ Page({ }) }, /** - * 订单状态:2:待服务 时候的取消订单 + * 订单状态:2:服务中 时候的操作 */ cancelOrderdfw() { this.setData({ @@ -227,7 +227,7 @@ Page({ }) }, /** - * 订单状态:3:服务中 时候的取消订单 + * 订单状态:3:待支付 时候的付款 */ cancelOrderfwz() { @@ -343,7 +343,7 @@ Page({ }); }, /** - * 待服务时被坚持取消订单 + * 服务中时确认完成服务 */ cancelokdfw() { //关闭服务人员正在赶来弹框 diff --git a/coupon/pages/orderdetail/orderdetail.wxml b/coupon/pages/orderdetail/orderdetail.wxml index 3bc1391..0cf11f2 100644 --- a/coupon/pages/orderdetail/orderdetail.wxml +++ b/coupon/pages/orderdetail/orderdetail.wxml @@ -10,8 +10,8 @@ {{"拒绝接单"}} {{"待接单"}} {{"已接单"}} - {{"待服务"}} - {{"服务中"}} + {{"服务中"}} + {{"待支付"}} {{"已完成"}} {{"申请退款"}} {{"退款中"}} @@ -37,30 +37,23 @@ + + 确认开始服务 + 取消订单 - + - - 确认开始服务 - - - 取消订单并退款 - - - - - 确认服务完成 - - + + 付款 diff --git a/coupon/shopping/pages/paysuccess/paysuccess.js b/coupon/shopping/pages/paysuccess/paysuccess.js index 41d4e91..5621b21 100644 --- a/coupon/shopping/pages/paysuccess/paysuccess.js +++ b/coupon/shopping/pages/paysuccess/paysuccess.js @@ -13,8 +13,8 @@ Page({ '-1': '拒绝接单', '0': '待接单', '1': '已接单', - '2': '待服务', - '3': '服务中', + '2': '服务中', + '3': '待支付', '4': '已完成', '5': '申请退款', '6': '退款中', diff --git a/coupon/项目文档.txt b/coupon/项目文档.txt new file mode 100644 index 0000000..b7162a4 --- /dev/null +++ b/coupon/项目文档.txt @@ -0,0 +1,441 @@ +======================================== + 瑞来康健小程序项目文档 +======================================== + +一、项目概述 +---------------------------------------- +项目名称:瑞来康健小程序(coupon) +项目类型:微信小程序 +项目版本:1.0.0 +小程序AppID:wx2d5ca40a16ebd1b3 +开发框架:微信小程序原生开发 +UI组件库:@vant/weapp (v1.10.0) + +项目简介: +瑞来康健是一个医疗陪诊服务小程序,主要为用户提供医院陪诊、陪护等医疗相关服务。 +用户可以通过小程序预约陪诊服务、查看订单、管理钱包等功能。 + +二、项目结构 +---------------------------------------- +├── app.js # 应用入口文件 +├── app.json # 应用配置文件 +├── app.wxss # 应用全局样式 +├── package.json # 项目依赖配置 +├── project.config.json # 项目配置文件 +├── sitemap.json # 站点地图配置 +│ +├── pages/ # 主包页面目录 +│ ├── index/ # 首页 +│ ├── order/ # 订单列表页 +│ ├── my/ # 我的页面 +│ ├── peizhen/ # 陪诊服务页 +│ ├── peihu/ # 陪护服务页 +│ ├── orderdetail/ # 订单详情页 +│ ├── reforderdetail/ # 退款订单详情页 +│ ├── wodeqianbao/ # 我的钱包页 +│ ├── mechanism/ # 机构信息页 +│ ├── guanyu/ # 关于页面 +│ ├── webpage/ # 网页页面 +│ ├── tuiguang/ # 推广页面 +│ └── myshoucang/ # 我的收藏页 +│ +├── shopping/ # 分包目录 +│ └── pages/ +│ ├── goddess/ # 商品/服务详情页 +│ ├── payment/ # 支付页面 +│ ├── paysuccess/ # 支付成功页 +│ └── withdrawal/ # 提现页面 +│ +├── component/ # 自定义组件目录 +│ └── picker/ # 日期时间选择器组件 +│ +├── utils/ # 工具函数目录 +│ ├── util.js # 通用工具函数 +│ ├── dateTimePicker.js # 日期时间选择器工具 +│ └── shareLogo.js # 分享Logo配置 +│ +├── miniprogram/ # 小程序npm包目录 +│ └── @vant/weapp/ # Vant Weapp组件库 +│ +└── pages/image/ # 图片资源目录 + +三、核心功能模块 +---------------------------------------- + +3.1 首页模块(pages/index/) +功能描述: +- 展示轮播图banner +- 展示医疗服务项目列表: + * 全程陪诊(200元):排队、预约、挂号、缴费、取药、记录医嘱 + * 诊前约号(20元):协助办理完成挂号 + * 代办问诊(100元):使用病人或家属取检查报告化验单向医生问明情况 + * 取送结果(50元):包括给病人或家属取检查报告化验单等 +- 展示医院列表(从后端API获取) +- 点击服务项目跳转到服务详情页 +- 点击医院跳转到陪护服务页 + +主要接口: +- GET /system/hospital/list - 获取医院列表 + +3.2 订单模块(pages/order/) +功能描述: +- 订单列表展示,支持按状态筛选 +- 订单状态类型: + * 全部 + * 待付款(status: "1") + * 待服务(status: "2") + * 服务中(status: "3") + * 已完成(status: "4") + * 已取消(status: "-2") +- 支持下拉刷新 +- 点击订单跳转到订单详情页 + +主要接口: +- GET /system/view/list - 获取订单列表 + 参数:pageNum, pageSize, status, usercId + +3.3 订单详情模块(pages/orderdetail/) +功能描述: +- 展示订单详细信息 +- 支持订单操作(付款、取消等) + +3.4 陪诊服务模块(pages/peizhen/) +功能描述: +- 展示陪诊服务列表 +- 支持医院筛选 +- 跳转到服务详情页 + +主要接口: +- GET /system/hospitalUserView/list - 获取医院用户视图列表 + +3.5 陪护服务模块(pages/peihu/) +功能描述: +- 展示院内陪护服务 +- 支持医院筛选 +- 跳转到服务详情页 + +主要接口: +- GET /system/hospitalUserView/list - 获取医院用户视图列表 + 参数:hospitalId(可选) + +3.6 我的模块(pages/my/) +功能描述: +- 用户登录(微信授权登录) +- 获取用户手机号 +- 用户信息展示 +- 功能入口: + * 我的收藏 + * 我的订单 + * 我的钱包 + * 关于我们 + +主要接口: +- POST /weixinLogin - 微信登录 + 参数:encryptedData, iv, wxcode +- POST /member/logintwo - 登录测试数据上传 + +3.7 钱包模块(pages/wodeqianbao/) +功能描述: +- 展示资金明细列表 +- 资金流水类型: + * 微信提现 + * 订单退款 + * 购买商品 + +主要接口: +- POST /app/Goddesswechat/getCapitalDetails - 获取资金明细 + 参数:version_number, uid, token, page, page_size + +3.8 支付模块(shopping/pages/payment/) +功能描述: +- 订单支付 +- 跳转到提现页面 + +3.9 提现模块(shopping/pages/withdrawal/) +功能描述: +- 用户提现功能 + +3.10 服务详情模块(shopping/pages/goddess/) +功能描述: +- 展示服务/商品详情 +- 支持下单购买 + +四、技术架构 +---------------------------------------- + +4.1 开发环境 +- 微信开发者工具 +- Node.js环境(用于npm包管理) +- 微信小程序基础库版本:3.13.2 + +4.2 技术栈 +- 微信小程序原生框架 +- JavaScript ES6+ +- Vant Weapp UI组件库(v1.10.0) + +4.3 数据存储 +- 使用微信小程序本地存储(wx.setStorageSync/wx.getStorageSync) +- 存储内容: + * uid - 用户ID + * token - 用户认证令牌 + * phone - 用户手机号 + * uidFlag - 登录标识 + +4.4 网络请求 +- 使用wx.request进行HTTP请求 +- 请求头配置: + * content-type: application/x-www-form-urlencoded + * Authorization: Bearer {token} +- 基础URL:https://ruilaizipj.com + +4.5 认证机制 +- 使用Bearer Token认证 +- Token存储在本地存储中 +- 请求时自动在Header中添加Authorization + +五、全局配置 +---------------------------------------- + +5.1 应用配置(app.json) +- TabBar配置: + * 首页(pages/index/index) + * 订单(pages/order/order) + * 我的(pages/my/my) +- 导航栏:自定义样式(navigationStyle: "custom") +- 分包配置: + * shopping分包(独立分包:false) + +5.2 全局数据(app.js) +- globalData: + * url: 'https://ruilaizipj.com' - API基础地址 + * uid - 用户ID + * token - 认证令牌 + * phone - 用户手机号 + * code - 微信登录code + * version_number: '1.0.0' - 版本号 + +5.3 全局方法(app.js) +- getRequestHeader() - 获取请求头 +- buildUrl(path, params) - 构建URL +- buildUrltwo(path, params) - 构建第二个URL +- getCache(key) - 获取缓存 +- setCache(key, value) - 设置缓存 +- tip(params) - 显示提示弹窗 + +六、自定义组件 +---------------------------------------- + +6.1 日期时间选择器(component/picker/) +功能: +- 支持年、月、日、时、分、秒不同粒度的时间选择 +- 支持设置开始时间和结束时间范围 +- 支持默认值设置 +- 支持禁用状态 + +属性: +- start: 开始时间(默认:'1900-00-00 00:00:00') +- end: 结束时间(默认:'2500-12-30 23:59:59') +- value: 默认值(默认:'2019-03-15 10:45:00') +- fields: 时间粒度(year/month/day/hour/minute/second) +- disabled: 是否禁用 + +事件: +- changedatepicker: 时间改变事件 +- canceldatepicker: 取消选择事件 + +七、工具函数 +---------------------------------------- + +7.1 util.js +- token() - 获取Token +- getShareInfo(opts) - 获取分享信息配置 +- formatTime(date) - 格式化时间 + +7.2 dateTimePicker.js +- 日期时间选择器相关工具函数 + +7.3 shareLogo.js +- 分享Logo配置数组 + +八、API接口文档 +---------------------------------------- + +8.1 用户相关接口 +- POST /weixinLogin - 微信登录 + 请求参数: + encryptedData: 加密数据 + iv: 初始向量 + wxcode: 微信code + 返回数据: + code: 状态码(200表示成功) + data: {phoneNumber, userId, token} + msg: 提示信息 + +8.2 医院相关接口 +- GET /system/hospital/list - 获取医院列表 + 请求头:Authorization: Bearer {token} + 返回数据: + code: 状态码(200表示成功) + data: 医院列表数组 + +8.3 订单相关接口 +- GET /system/view/list - 获取订单列表 + 请求头:Authorization: Bearer {token} + 请求参数: + pageNum: 页码 + pageSize: 每页数量 + status: 订单状态(可选) + usercId: 用户ID + 返回数据: + code: 状态码(200表示成功) + data: 订单列表数组 + +8.4 服务相关接口 +- GET /system/hospitalUserView/list - 获取医院用户视图列表 + 请求头:Authorization: Bearer {token} + 请求参数: + hospitalId: 医院ID(可选) + 返回数据: + code: 状态码(200表示成功) + data: 服务列表数组 + +8.5 钱包相关接口 +- POST /app/Goddesswechat/getCapitalDetails - 获取资金明细 + 请求头:Authorization: Bearer {token} + 请求参数: + version_number: 版本号 + uid: 用户ID + token: 认证令牌 + page: 页码 + page_size: 每页数量 + 返回数据: + erro: 错误码(0表示成功) + detail: 资金明细数组 + total: 总记录数 + +九、页面路由 +---------------------------------------- + +9.1 主包页面路由 +- /pages/index/index - 首页 +- /pages/order/order - 订单列表 +- /pages/my/my - 我的 +- /pages/peizhen/peizhen - 陪诊服务 +- /pages/peizhen/peizhendetail - 陪诊详情 +- /pages/peihu/peihu - 陪护服务 +- /pages/orderdetail/orderdetail - 订单详情 +- /pages/reforderdetail/reforderdetail - 退款订单详情 +- /pages/wodeqianbao/qianbao - 我的钱包 +- /pages/mechanism/mechanism - 机构信息 +- /pages/guanyu/guanyu - 关于我们 +- /pages/webpage/webpage - 网页页面 +- /pages/tuiguang/extensionInfor - 推广信息 + +9.2 分包页面路由(shopping) +- /shopping/pages/goddess/goddess - 服务/商品详情 +- /shopping/pages/payment/payment - 支付页面 +- /shopping/pages/paysuccess/paysuccess - 支付成功 +- /shopping/pages/withdrawal/withdrawal - 提现页面 + +十、订单状态说明 +---------------------------------------- +订单状态码定义: +- -2: 已取消 +- -1: 拒绝接单 +- 0: 待接单/待付款 +- 1: 已接单/已付款 +- 2: 已接单(待服务) +- 3: 服务中 +- 4: 已完成 +- 5: 申请退款 +- 6: 退款中 +- 7: 已退款 +- 8: 已结算 + +十一、开发规范 +---------------------------------------- + +11.1 代码规范 +- 使用ES6+语法 +- 使用微信小程序原生API +- 页面文件命名:小写字母,多个单词用下划线分隔 +- 组件文件命名:小写字母 + +11.2 文件结构规范 +- 每个页面包含4个文件:.js, .wxml, .wxss, .json +- 组件包含:.js, .wxml, .wxss, .json +- 工具函数统一放在utils目录 + +11.3 命名规范 +- 变量命名:驼峰命名法 +- 函数命名:驼峰命名法 +- 页面路径:小写字母,多个单词用下划线分隔 + +十二、部署说明 +---------------------------------------- + +12.1 开发环境配置 +1. 安装Node.js环境 +2. 安装项目依赖:npm install +3. 使用微信开发者工具打开项目 +4. 配置小程序AppID:wx2d5ca40a16ebd1b3 +5. 配置服务器域名(在微信公众平台配置) + +12.2 构建说明 +- 项目使用微信小程序原生开发,无需构建 +- 使用微信开发者工具直接编译运行 +- 需要配置npm构建(project.config.json中已配置) + +12.3 发布流程 +1. 在微信开发者工具中点击"上传" +2. 填写版本号和项目备注 +3. 在微信公众平台提交审核 +4. 审核通过后发布 + +十三、注意事项 +---------------------------------------- + +13.1 安全相关 +- Token存储在本地,注意安全性 +- API请求使用HTTPS协议 +- 用户敏感信息需要加密传输 + +13.2 性能优化 +- 使用分包加载减少主包大小 +- 图片资源建议使用CDN +- 合理使用本地缓存 + +13.3 兼容性 +- 基础库版本要求:3.13.2 +- 需要测试不同版本的微信客户端 +- 注意iOS和Android的差异 + +十四、已知问题 +---------------------------------------- + +1. 部分页面存在测试数据,需要对接真实API +2. 部分功能可能未完全实现(如提现功能) +3. 错误处理机制需要完善 +4. 部分接口可能需要调整 + +十五、后续优化建议 +---------------------------------------- + +1. 完善错误处理和用户提示 +2. 优化页面加载性能 +3. 增加数据缓存机制 +4. 完善用户反馈功能 +5. 增加数据统计和分析 +6. 优化UI/UX体验 +7. 增加更多服务类型 +8. 完善支付和退款流程 + +十六、联系方式 +---------------------------------------- +项目仓库:https://gitee.com/fang_hoo/coupon.git +项目版本:1.0.0 + +======================================== +文档生成时间:2024年 +文档版本:1.0 +======================================== diff --git a/docs/项目功能的prd文档.md b/docs/项目功能的prd文档.md new file mode 100644 index 0000000..e8af256 --- /dev/null +++ b/docs/项目功能的prd文档.md @@ -0,0 +1,713 @@ +# 瑞来健康 — 陪诊 SAAS 平台 PRD 文档 + +> 项目名称:瑞来兹医助管理系统(瑞来健康) +> PRD 版本:v1.0 +> 撰写日期:2026-05-12 +> 代码仓库:`http://101.43.95.130:3001/admin/rlz` (Gitea) +> 服务器 IP:`101.43.95.130` +> 本地路径:`D:\androidPj\rlz` + +--- + +## 目录 + +1. [产品概述](#一产品概述) +2. [用户角色](#二用户角色) +3. [功能需求详述](#三功能需求详述) +4. [业务流程](#四业务流程) +5. [数据模型](#五数据模型) +6. [API 接口设计](#六api-接口设计) +7. [非功能性需求](#七非功能性需求) +8. [技术架构](#八技术架构) +9. [部署架构](#九部署架构) +10. [项目里程碑](#十项目里程碑) +11. [风险评估](#十一风险评估) +12. [后续规划](#十二后续规划) + +--- + +## 一、产品概述 + +### 1.1 项目背景 + +随着医疗服务不断发展与人口老龄化趋势加剧,患者就医过程中对专业陪诊服务的需求日益增长。许多患者(尤其是老年人、异地就医者)在医院挂号、缴费、取药、检查等环节面临困难。陪诊 SAAS 系统旨在通过互联网技术连接患者、陪护人员和医院,提供线上预约、线下服务的 O2O 医疗陪诊服务。 + +### 1.2 产品定位 + +瑞来健康是一个**多端协同的医疗陪诊服务平台**,包含: + +| 端 | 终端形态 | 用户 | 技术栈 | +|---|---------|------|-------| +| **管理后台** | Web 浏览器 | 平台管理员 | Spring Boot + Vue 2 + Element UI | +| **患者端** | 微信小程序 | 患者/家属 | 微信原生 + Vant Weapp | +| **陪护端** | Android App | 陪护人员 | Java + MVP 架构 | + +### 1.3 服务类型与定价 + +| 服务类型 | 价格 | 服务内容 | +|---------|------|---------| +| **全程陪诊** | 200 元/次 | 排队、预约、挂号、缴费、取药、记录医嘱 | +| **诊前约号** | 20 元/次 | 协助办理完成挂号 | +| **取送结果** | 50 元/次 | 为病人或家属取检查报告、化验单等 | +| **代办问诊** | 100 元/次 | 使用病人资料向医生问明情况 | + +### 1.4 产品核心价值 + +- **患者**:便捷的陪诊服务预约渠道,降低就医门槛 +- **陪护人员**:稳定的工作机会和收入来源 +- **平台**:标准化陪诊服务流程,优化医疗资源配置 + +--- + +## 二、用户角色 + +### 2.1 患者(C 端用户) + +- **终端**:微信小程序 +- **标识**:`userType = "C"` +- **核心场景**: + - 浏览陪诊服务、选择医院、下单支付 + - 查看订单状态与服务进度 + - 申请退款、评价服务 + +### 2.2 陪护人员(B 端用户) + +- **终端**:Android App +- **标识**:`userType = "B"` +- **核心场景**: + - 查看待接订单、接单/拒单 + - 执行服务(开始 → 服务中 → 完成) + - 查看收入明细、提现 + +### 2.3 系统管理员 + +- **终端**:Web 后台管理系统 +- **标识**:`userType = "00"` +- **核心场景**: + - 用户管理、订单管理、医院管理 + - 退款审核、结算管理 + - 数据统计与系统配置 + +--- + +## 三、功能需求详述 + +### 模块 A:患者端(微信小程序) + +#### A1. 用户登录与注册 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 微信授权登录 | 微信一键登录,获取 openid,自动创建账号 | P0 | +| 手机号登录 | 短信验证码登录,支持快速注册 | P0 | +| 用户信息完善 | 绑定手机号,设置昵称/头像 | P1 | + +**页面**:`pages/index/index`(首页承载登录入口) + +#### A2. 首页 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 服务类型展示 | 4 种陪诊服务入口,含价格与说明 | P0 | +| 医院列表 | 显示合作医院,支持搜索和筛选 | P0 | +| Banner 轮播 | 活动、公告等信息展示 | P2 | + +**页面**:`pages/index/index`(首页) +**TabBar 入口**:首页 + +#### A3. 陪诊下单 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 服务选择 | 选择服务类型(全程陪诊/诊前约号/取送结果/代办问诊) | P0 | +| 医院选择 | 从列表中选择医院,支持搜索 | P0 | +| 订单信息填写 | 就诊人姓名、电话(必填)、服务日期/时间、送达地址、备注 | P0 | +| 订单提交 | 创建订单 → 生成订单号 → 跳转支付 | P0 | + +**页面**:`pages/peizhen/peizhen`、`pages/peizhen/peizhendetail`、`pages/peihu/peihu` + +#### A4. 订单管理 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 订单列表 | 按状态分类:全部/待付款/待服务/服务中/已完成/已取消 | P0 | +| 下拉刷新/上拉加载 | 列表支持分页加载 | P1 | +| 订单详情 | 查看订单基本信息、就诊人信息、陪护信息 | P0 | +| 取消订单 | 待付款/待服务状态可取消 | P1 | +| 删除订单 | 已取消/已完成订单可删除 | P2 | + +**页面**:`pages/order/order`(订单列表 TabBar)、`pages/orderdetail/orderdetail`(订单详情)、`pages/reforderdetail/reforderdetail`(退款订单详情) +**TabBar 入口**:订单 + +#### A5. 微信支付 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 发起支付 | 调用微信支付接口 | P0 | +| 支付回执 | 支付成功/失败/取消处理 | P0 | +| 状态更新 | 支付成功 → 订单状态变更为"已支付" | P0 | + +**页面**:`shopping/pages/payment/payment`、`shopping/pages/paysuccess/paysuccess` + +#### A6. 退款 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 申请退款 | 选择退款原因、上传凭证图片、填写说明 | P1 | +| 退款进度 | 查看退款状态(申请中/退款中/已退款/退款失败) | P1 | + +**退款原因选项**:不喜欢/不想要、信息与描述不符、买多/买错、更换其他项目、没有时间、其他原因 + +#### A7. 个人中心 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 个人信息 | 查看/修改昵称、头像 | P1 | +| 我的钱包 | 余额、累计收益、提现 | P1 | +| 收藏 | 我的收藏列表 | P2 | +| 设置 | 关于我们、隐私政策、退出登录 | P2 | + +**页面**:`pages/my/my`(TabBar)、`pages/wodeqianbao/qianbao`(钱包)、`pages/myshoucang/myshoucang`(收藏) +**TabBar 入口**:我的 + +#### A8. 其他页面 + +| 页面路径 | 功能 | +|---------|------| +| `pages/mechanism/mechanism` | 机构展示 | +| `pages/tuiguang/extensionInfor` | 推广分销 | +| `pages/guanyu/guanyu` | 关于我们 | +| `pages/webpage/webpage` | 内嵌网页 | +| `shopping/pages/goddess/goddess` | 女神活动 | +| `shopping/pages/withdrawal/withdrawal` | 提现 | + +--- + +### 模块 B:陪护端(Android App) + +**包名**:`com.ruilaizi.service` +**根 Activity**:`SplashActivity` → `NewCodeLoginActivity` / `LoginPasswordActivity` → `MainActivity` + +#### B1. 登录认证 + +| 功能 | 描述 | Activity | +|------|------|----------| +| 启动页 | Logo 展示,停留 1-2 秒 | `SplashActivity` | +| 验证码登录 | 手机号 + 验证码登录 | `NewCodeLoginActivity` | +| 密码登录 | 手机号 + 密码登录 | `LoginPasswordActivity` | +| 忘记密码 | 通过手机号重置密码 | `ForgetPasActivity` | +| 修改密码 | 登录后修改密码 | `ModifyPasActivity` | + +#### B2. 首页 + +| 功能 | 描述 | 优先级 | +|------|------|-------| +| 待接订单列表 | 显示 `status=0` 的订单,可接单/拒单 | P0 | +| 已接订单列表 | 按状态筛选(已接单/服务中/已完成) | P0 | +| 收入概览 | 累计收益、余额展示 | P0 | + +**Activity**:`MainActivity`(主界面,含底部导航) + +#### B3. 订单操作 + +| 功能 | 描述 | Activity | +|------|------|----------| +| 订单详情 | 查看患者信息、服务要求、订单金额 | `OrderActivity` | +| 接单 | 确认接单 → `status` 0→1 | 内嵌于列表操作 | +| 拒单 | 拒绝接单 → `status` 0→-1 | `refuseActivity` | +| 开始服务 | 到达医院 → `status` 1→3 | 内嵌于详情操作 | +| 完成服务 | 上传凭证 → `status` 3→4 | `ConfirmOrderActivity` | +| 双向选择 | 服务前确认 | `TwoWayActivity` | + +#### B4. 客户管理 + +| 功能 | 描述 | Activity | +|------|------|----------| +| 客户列表 | 查看客户信息 | `CustomerDetailActivity` | +| 添加客户 | 添加新客户资料 | `AddCustomerActivity` | +| 客户分配 | 分配客户给陪护 | `AllocationActivity` | +| 客户搜索 | 按条件搜索客户 | `SearchActivity` | +| 客户风格/预算 | 客户偏好设置 | `StyleActivity`、`BudgetActivity` | +| 客户订单 | 查看客户相关订单 | `FpOrderInfoActivity` | + +#### B5. 个人中心 + +| 功能 | 描述 | Activity | +|------|------|----------| +| 个人信息 | 查看/编辑个人资料、上传头像 | `PersonalProfileActivity` | +| 实名认证 | 上传身份证、认证审核 | `ShimingActivity` | +| 我的信息 | 基本信息展示 | `MyInfoActivity` | +| 红包 | 红包收发 | `HongBaoActivity` | +| 明细 | 收支明细 | `mingXiActivity` | +| 设置 | 系统设置 | `SettingActivity` | + +#### B6. 其他功能 + +| 功能 | 描述 | Activity | +|------|------|----------| +| 消息通知 | 系统消息列表 | `MessageNoticeActivity` | +| 即时通讯 | 会话列表 | `ConversationActivity` | +| 评论 | 评价管理 | `CommentActivity` | +| WebView | 内嵌网页 | `XfiveWebActivity` | +| 列表展示 | 通用列表 | `ListActivity`、`DemoActivity`、`MainsdfdsfActivity` | + +**关键权限**(AndroidManifest): +- 网络、WiFi、定位(GPS/粗略/精确) +- 相机、录音、震动 +- 读取联系人、通话记录、日历 +- 读写外部存储、安装应用 +- 腾讯 Bugly(异常上报) + +--- + +### 模块 C:管理后台(Web) + +**入口**:`http://101.43.95.130:8085`(Nginx 代理) +**默认账号**:`admin / admin123` + +#### C1. 系统管理 + +| 模块 | 功能 | 路由 | +|------|------|------| +| **用户管理** | 列表查询、增删改查、角色分配、状态管理 | `/system/user` | +| **角色管理** | 角色创建、权限分配、用户关联 | `/system/role` | +| **菜单管理** | 菜单树配置、按钮权限 | `/system/menu` | +| **部门管理** | 组织机构树 | `/system/dept` | +| **岗位管理** | 职务配置 | `/system/post` | +| **字典管理** | 数据字典维护(类型+数据) | `/system/dict` | +| **参数配置** | 系统参数键值管理 | `/system/config` | +| **通知公告** | 发布/编辑/删除公告 | `/system/notice` | + +#### C2. 业务管理 + +| 模块 | 功能 | 路由 | +|------|------|------| +| **医院管理** | 医院信息增删改查、状态管理 | `/system/hospital` | +| **订单管理** | 订单列表、详情、状态修改、退款审核、结算 | `/system/order` | +| **认证管理** | 陪护人员实名认证审核 | `/system/renzheng` | + +#### C3. 系统监控 + +| 模块 | 功能 | 路由 | +|------|------|------| +| **在线用户** | 查看当前在线用户 | `/monitor/online` | +| **操作日志** | 操作记录查询 | `/monitor/operlog` | +| **登录日志** | 登录记录与异常查询 | `/monitor/logininfor` | +| **定时任务** | 任务调度管理 | `/monitor/job` | +| **服务监控** | CPU、内存、磁盘等信息 | `/monitor/server` | +| **缓存监控** | Redis 信息查询 | `/monitor/cache` | + +#### C4. 开发工具 + +| 模块 | 功能 | 路由 | +|------|------|------| +| **代码生成** | 数据库表 → 前后端代码自动生成 | `/tool/gen` | +| **Swagger** | API 接口文档 | `/tool/swagger` | +| **表单构建** | 拖拽式表单设计 | `/tool/build` | + +#### C5. 仪表盘 + +首页仪表盘展示关键指标:BarChart、LineChart、PanelGroup、PieChart、RaddarChart + +--- + +## 四、业务流程 + +### 4.1 核心流程:患者下单 → 陪护接单 → 服务执行 + +``` +┌──────────────┐ ┌──────────────┐ ┌──────────────┐ +│ 患者(小程序) │ │ 陪护(Android)│ │ 管理员(Web) │ +└──────┬───────┘ └──────┬───────┘ └──────┬───────┘ + │ │ │ + │ ①选择服务类型+医院 │ │ + │ ②填写订单信息 │ │ + │ ③提交订单(status=0) │ │ + │ │ │ + │ │ ④查看待接订单 │ + │ │ ⑤接单(status=0→1) │ + │ ⑥收到接单通知 │ │ + │ │ │ + │ ⑦微信支付(status→2) │ │ + │ │ │ + │ │ ⑧到达医院 │ + │ │ ⑨开始服务(status→3) │ + │ ⑩查看服务中状态 │ │ + │ │ ⑪完成服务(status→4) │ + │ ⑫确认完成/评价 │ │ + │ │ │ + │ │ ⑬结算(status→8) +``` + +### 4.2 订单状态机 + +``` + ┌─────────┐ + │ 待接单(0) │ + └────┬────┘ + ┌─────────┼─────────┐ + ▼ ▼ ▼ + 已接单(1) 拒单(-1) 已取消(-2) + │ │ + │ [重新分配→0] + ▼ + 已支付(2) ───────────┐ + │ │ + ▼ ▼ + 服务中(3) 申请退款(5) + │ │ + ▼ ▼ + 已完成(4) 退款中(6) + │ │ + ▼ ▼ + 已结算(8) 已退款(7) +``` + +### 4.3 退款流程 + +1. 患者在已完成/服务中/已支付状态下发起退款 +2. 选择退款原因、上传凭证、提交申请(status → 5) +3. 后台管理员审核 +4. 审核通过 → 退款中(status → 6)→ 退款执行 → 已退款(status → 7) +5. 审核不通过 → 恢复原状态,通知患者 + +--- + +## 五、数据模型 + +### 5.1 核心实体 + +#### 用户表 (`sys_user`) + +| 字段 | 类型 | 说明 | +|------|------|------| +| userId | bigint | 主键 | +| userName | varchar(30) | 用户名 | +| nickName | varchar(30) | 昵称 | +| phonenumber | varchar(11) | 手机号 | +| email | varchar(50) | 邮箱 | +| sex | char(1) | 0=男 1=女 2=未知 | +| avatar | varchar(100) | 头像 URL | +| userType | varchar(2) | 00=系统用户 C=患者 B=陪护 | +| openid | varchar(50) | 微信 openid | +| status | char(1) | 0=正常 1=停用 | +| createTime | datetime | 创建时间 | + +#### 订单表 (`rlz_order`) + +| 字段 | 类型 | 说明 | +|------|------|------| +| orderId | bigint | 主键 | +| orderNumber | varchar(32) | 订单号 | +| bId | bigint | 陪护人员 ID | +| cId | bigint | 患者 ID | +| hospitalId | bigint | 医院 ID | +| startTime | datetime | 服务开始时间 | +| endTime | datetime | 服务结束时间 | +| **status** | int | **订单状态**(见下表) | +| yuguMoney | decimal | 预估金额 | +| jiesuanMoney | decimal | 结算金额 | +| kouchuMoney | decimal | 扣费金额 | +| fanxianMoney | decimal | 返现给陪护金额 | +| tuihuiMoney | decimal | 退回给患者金额 | +| yuliu9 | varchar | 订单大类(1=陪护 2=陪诊) | +| yuliu10 | varchar | 订单类型(1=全程陪诊 2=诊前约号 3=取送结果 4=代办问诊) | +| yuliu11 | varchar | 患者电话 | +| yuliu12 | varchar | 特殊要求/备注 | +| yuliu13 | varchar | 送达地址 | +| yuliu14 | varchar | 患者身份证号 | +| createTime | datetime | 创建时间 | +| updateTime | datetime | 更新时间 | + +**订单状态枚举**: + +| 状态码 | 含义 | +|--------|------| +| -2 | 已取消 | +| -1 | 拒绝接单 | +| 0 | 待接单 | +| 1 | 已接单 | +| 2 | 已支付(待服务) | +| 3 | 服务中 | +| 4 | 已完成 | +| 5 | 申请退款 | +| 6 | 退款中 | +| 7 | 已退款 | +| 8 | 已结算 | + +#### 医院表 (`sys_hospital`) + +| 字段 | 类型 | 说明 | +|------|------|------| +| hospitalId | bigint | 主键 | +| hospitalName | varchar(100) | 医院名称 | +| hospitalAddress | varchar(200) | 医院地址 | +| hospitalPhone | varchar(20) | 联系电话 | +| hospitalLevel | varchar(10) | 医院等级 | +| hospitalDesc | varchar(500) | 医院简介 | +| status | char(1) | 0=正常 1=停用 | + +### 5.2 数据关系 + +``` +sys_user (C端患者) ──1:N──▶ rlz_order ◀──N:1── sys_user (B端陪护) + │ + N:1 + │ + ▼ + sys_hospital +``` + +--- + +## 六、API 接口设计 + +**基础路径**:`http://101.43.95.130:8039` +**请求前缀**:`/dev-api` +**认证方式**:JWT Token(Header: `Authorization: Bearer {token}`) +**统一响应格式**:`{ "code": 200, "msg": "操作成功", "data": {} }` + +### 6.1 患者端接口 + +| 方法 | URL | 说明 | +|------|-----|------| +| POST | `/weixinLogin` | 微信小程序登录 | +| GET | `/getUserToken` | 获取用户 Token | +| GET | `/getInfo` | 获取用户信息 | +| POST | `/system/order/insertOrderPz` | 创建陪诊订单 | +| GET | `/system/view/list` | 获取订单列表 | +| GET | `/system/view/getInfo` | 获取订单详情 | +| GET | `/system/order/weixinPay/{orderId}` | 微信支付 | +| POST | `/system/order/refundOrder/{orderId}` | 申请退款 | +| GET | `/system/order/concelOrder/{orderId}` | 取消订单 | +| GET | `/system/hospital/list` | 获取医院列表 | +| GET | `/system/config/configKey/price` | 获取价格配置 | +| GET | `/system/config/configKey/priceType` | 获取价格类型 | + +### 6.2 陪护端接口 + +| 方法 | URL | 说明 | +|------|-----|------| +| POST | `/appLogin` | 密码登录 | +| POST | `/smsLogin` | 短信验证码登录 | +| GET | `/system/view/list` | 获取订单列表 | +| GET | `/system/view/getInfo` | 获取订单详情 | +| POST | `/system/view/startServiceWithOrder` | 开始服务 | +| POST | `/system/view/completeOrder` | 完成服务 | +| GET | `/system/user/getAppIndexInfo` | 首页信息(收入统计) | + +### 6.3 后台管理接口 + +| 方法 | URL | 说明 | +|------|-----|------| +| GET | `/system/user/list` | 用户列表 | +| POST | `/system/user` | 新增用户 | +| PUT | `/system/user` | 修改用户 | +| DELETE | `/system/user/{userIds}` | 删除用户 | +| GET | `/system/order/list` | 订单列表 | +| GET | `/system/order/{orderId}` | 订单详情 | +| PUT | `/system/order` | 修改订单 | +| GET | `/captchaImage` | 获取验证码 | +| POST | `/login` | 后台登录 | + +--- + +## 七、非功能性需求 + +### 7.1 性能 + +| 指标 | 要求 | +|------|------| +| 页面加载时间 | < 3 秒 | +| API 响应时间 | < 1 秒 | +| 支付接口响应 | < 2 秒 | +| 并发用户 | 1000+ | +| 订单处理能力 | > 100 单/分钟 | +| 数据容量 | 10 万+ 用户,100 万+ 订单 | + +### 7.2 安全 + +- JWT Token 认证,令牌有效期 30000 分钟 +- 密码 BCrypt 加密存储 +- 用户敏感信息加密存储 +- 微信支付使用官方 SDK +- 防 SQL 注入、XSS 攻击 +- 操作日志、登录日志审计 +- MySQL 使用 SSL 连接(腾讯云 CynosDB) + +### 7.3 可用性 + +- 系统可用率 > 99.5% +- 7×24 小时服务 +- 异常友好提示 + 自动重试 +- Docker 容器化部署,健康检查自动重启 + +### 7.4 兼容性 + +| 平台 | 要求 | +|------|------| +| 微信小程序 | 微信 7.0+,支持 iOS/Android | +| Android App | Android 8.0+(API 26+),适配主流品牌 | +| Web 后台 | Chrome / Firefox / Safari / Edge | + +--- + +## 八、技术架构 + +### 8.1 总体架构 + +``` +┌────────────────────────────────────────────┐ +│ 前端层 │ +│ ┌──────────┐ ┌──────────┐ ┌────────────┐ │ +│ │ 微信小程序 │ │ Android │ │ Vue 管理后台 │ │ +│ │ (患者端) │ │ (陪护端) │ │ (管理员端) │ │ +│ └────┬─────┘ └────┬─────┘ └─────┬──────┘ │ +└───────┼────────────┼─────────────┼─────────┘ + │ │ │ + ▼ ▼ ▼ +┌────────────────────────────────────────────┐ +│ Nginx 反向代理 │ +│ Port: 8085 (HTTP) / 8443 (HTTPS) │ +└──────────────────┬─────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────┐ +│ Spring Boot 后端服务 │ +│ RuoYi 3.8.3 (Java 1.8) │ +│ Port: 8039 (内部) │ +│ ┌──────────┬──────────┬──────────────┐ │ +│ │ Security │ MyBatis │ Quartz │ │ +│ │ + JWT │ ORM │ 定时任务 │ │ +│ └──────────┴──────────┴──────────────┘ │ +└──────┬──────────────┬──────────────────────┘ + │ │ + ▼ ▼ +┌─────────────┐ ┌──────────────┐ +│ Redis 7 │ │ MySQL 8 │ +│ (缓存) │ │ (腾讯云 │ +│ Port: 6379 │ │ CynosDB) │ +└─────────────┘ └──────────────┘ +``` + +### 8.2 技术栈明细 + +| 层级 | 技术 | 版本 | +|------|------|------| +| **后端框架** | Spring Boot | 2.5.14 | +| **安全** | Spring Security + JWT | 0.9.1 | +| **ORM** | MyBatis Spring Boot | 2.2.2 | +| **连接池** | Druid | 1.2.11 | +| **缓存** | Redis | 7 (Alpine) | +| **数据库** | MySQL (CynosDB) | 8 | +| **定时任务** | Quartz | - | +| **API 文档** | Swagger | 3.0.0 | +| **JSON** | FastJSON2 | 2.0.8 | +| **前端框架** | Vue | 2.6.12 | +| **UI 组件** | Element UI | 2.15.8 | +| **图表** | ECharts | 4.9.0 | +| **状态管理** | Vuex | 3.6.0 | +| **路由** | Vue Router | 3.4.9 | +| **HTTP 客户端** | Axios | 0.24.0 | +| **小程序 UI** | Vant Weapp | 1.x | +| **Android 网络** | Retrofit + OkHttp | 2.4.0 + 3.5.0 | +| **Android 图片** | Glide | 4.9.0 | +| **Android 架构** | MVP | - | +| **构建/部署** | Maven + Gradle + Docker Compose | - | + +--- + +## 九、部署架构 + +### 9.1 服务器信息 + +| 项目 | 详情 | +|------|------| +| **IP** | `101.43.95.130` | +| **OS** | CentOS 7.9 | +| **CPU** | 2 核 | +| **内存** | 7.5 GB | +| **磁盘** | 118 GB | + +### 9.2 Docker 服务 + +| 容器 | 端口 | 说明 | +|------|------|------| +| rlz-backend | `8039` | Java 后端服务 | +| rlz-redis | `6379` (内部) | Redis 缓存 | +| rlz-redis-6379 | `127.0.0.1:6379` | Redis 宿主机访问 | + +### 9.3 数据库 + +| 参数 | 值 | +|------|-----| +| 类型 | MySQL 8(腾讯云 CynosDB) | +| 地址 | `gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com` | +| 端口 | `24936` | +| 数据库 | `rlz` | +| SSL | 启用 | + +### 9.4 Docker Compose 启动 + +```bash +cd /home/renjianbo/saars/rlz +cp .env.docker.example .env # 编辑 .env 填写数据库密码 +docker compose up -d --build +``` + +健康检查:`curl -sS http://127.0.0.1:8039/captchaImage` + +--- + +## 十、项目里程碑 + +| 阶段 | 周期 | 内容 | +|------|------|------| +| **第一阶段** | 2 个月 | 用户注册登录、订单创建和支付、陪护接单、基础订单管理 | +| **第二阶段** | 1.5 个月 | 服务执行流程、退款功能、收入结算、后台管理基础功能 | +| **第三阶段** | 1 个月 | 消息通知、评价系统、数据统计、性能优化 | +| **第四阶段** | 0.5 个月 | 功能测试、性能测试、安全测试、上线部署 | + +--- + +## 十一、风险评估 + +| 类别 | 风险 | 缓解措施 | +|------|------|----------| +| **技术** | 微信支付集成复杂 | 使用官方 SDK,充分测试回调 | +| **技术** | 高并发订单处理 | Redis 缓存 + 数据库连接池优化 | +| **技术** | 数据一致性 | 事务 + 状态机严格控制 | +| **业务** | 陪护服务质量 | 实名认证 + 评价体系 + 培训 | +| **业务** | 退款纠纷 | 明确退款规则 + 凭证审核 | +| **运营** | 用户获取成本高 | 推广分销机制 | +| **运营** | 医院合作拓展 | 逐步引入,先覆盖重点医院 | + +--- + +## 十二、后续规划 + +### 功能扩展 +- 在线客服(IM) +- 服务评价与评分体系 +- 会员等级 + 优惠券系统 +- 智能推荐陪护人员 +- 服务轨迹追踪(地图) + +### 技术优化 +- 微服务架构改造 +- 消息队列(订单异步处理) +- 分布式缓存 +- 大数据分析看板 + +### 业务拓展 +- 多城市覆盖 +- 更多服务类型(如康复护理) +- 企业客户服务 +- 保险合作 + +--- + +> **相关文档**: +> - 项目技术文档:`D:\androidPj\rlz\项目文档0511.md` +> - 服务器信息:`D:\cd\tengxunyun\云服务器信息.md` +> - Git 仓库:`http://101.43.95.130:3001/admin/rlz` diff --git a/docs/项目文档0511.md b/docs/项目文档0511.md new file mode 100644 index 0000000..36a0be7 --- /dev/null +++ b/docs/项目文档0511.md @@ -0,0 +1,355 @@ +# 瑞来兹医助 (RLZ) 项目文档 + +> 最后更新:2026-05-11 +> 项目路径:`/home/renjianbo/saars/rlz/` +> Git 仓库:`http://101.43.95.130:3001/admin/rlz` + +--- + +## 项目概述 + +瑞来兹医助是一个**陪诊服务**综合平台,包含以下子系统: + +| 子系统 | 技术栈 | 说明 | +|--------|--------|------| +| **rlz** (后端) | Java 1.8 + Spring Boot + MyBatis + Maven | 基于若依(RuoYi) 3.8.3 的后端管理系统 | +| **rlz-ui** (管理前端) | Vue 2.6 + Element UI + Vuex + Vue Router | 基于若依-Vue 的管理后台界面 | +| **peizhen** (Android) | Android (Gradle 8.7.3) + Java | 陪诊师端 Android App | +| **coupon** (微信小程序) | 微信原生 + Vant Weapp | 用户端微信小程序 | + +--- + +## 一、rlz — 后端服务 + +### 技术栈 + +- **框架**: Spring Boot (若依 RuoYi 3.8.3) +- **语言**: Java 1.8 +- **构建**: Maven +- **数据库**: MySQL 8 (腾讯云 CynosDB) +- **缓存**: Redis 7 +- **ORM**: MyBatis +- **连接池**: Druid 1.2.11 +- **其他**: JWT, Swagger, Fastjson, PageHelper + +### 模块结构 + +``` +rlz/ +├── ruoyi-admin/ # 主应用模块 (Controller + 配置) +├── ruoyi-common/ # 公共工具模块 +├── ruoyi-framework/ # 框架核心模块 +├── ruoyi-system/ # 系统管理模块 +├── ruoyi-quartz/ # 定时任务模块 +├── ruoyi-generator/ # 代码生成模块 +├── sql/ # 数据库脚本 +│ ├── ry_20220625.sql # 基础数据 +│ └── quartz.sql # 定时任务表 +├── Dockerfile # 多阶段构建 +└── pom.xml # 根 POM +``` + +### 核心功能 + +- **系统管理**: 用户/角色/菜单/部门/岗位/字典管理 +- **业务功能**: 医院管理、订单管理、认证管理 +- **监控管理**: 在线用户、操作日志、登录日志、服务监控、缓存监控 +- **开发工具**: 代码生成器、Swagger 文档 + +### 配置文件 + +| 文件 | 说明 | +|------|------| +| `application.yml` | 主配置 | +| `application-docker.yml` | Docker 环境配置 | +| `application-dev.yml` | 开发环境配置 | +| `application-druid.yml` | Druid 数据源配置 | +| `logback.xml` | 日志配置 | + +### Docker 部署 + +- **端口**: `8039` +- **构建**: `docker build -t rlz-backend:latest .` +- **编排**: `docker compose up -d --build`(项目根目录) +- **依赖**: Redis (容器内) + MySQL (腾讯云 CynosDB 外部) +- **JVM**: `-Xms512m -Xmx1024m` + +### 数据库连接 + +| 参数 | 值 | +|------|-----| +| Host | `gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com` | +| Port | `24936` | +| Database | `rlz` | +| User | `root` | + +--- + +## 二、rlz-ui — 管理后台前端 + +### 技术栈 + +- **框架**: Vue 2.6.12 +- **UI 库**: Element UI 2.15.8 +- **状态管理**: Vuex 3.6 +- **路由**: Vue Router 3.4 +- **图表**: ECharts 4.9 +- **HTTP**: Axios 0.24 +- **构建**: Vue CLI 4.4.6 +- **富文本**: Quill 1.3 +- **代码高亮**: Highlight.js + +### 目录结构 + +``` +rlz-ui/ +├── src/ +│ ├── views/ +│ │ ├── system/ # 系统管理页面 +│ │ │ ├── user/ # 用户管理 +│ │ │ ├── role/ # 角色管理 +│ │ │ ├── menu/ # 菜单管理 +│ │ │ ├── dept/ # 部门管理 +│ │ │ ├── post/ # 岗位管理 +│ │ │ ├── dict/ # 字典管理 +│ │ │ ├── config/ # 参数配置 +│ │ │ ├── notice/ # 公告管理 +│ │ │ ├── hospital/ # 医院管理 +│ │ │ ├── order/ # 订单管理 +│ │ │ └── renzheng/ # 认证管理 +│ │ ├── monitor/ # 监控管理 +│ │ ├── tool/ # 开发工具 +│ │ └── dashboard/ # 仪表盘 +│ ├── layout/ # 布局组件 +│ ├── router/ # 路由配置 +│ ├── plugins/ # 插件 +│ └── App.vue # 根组件 +├── public/ # 静态资源 +├── dist/ # 构建产物 +└── package.json +``` + +### 启动命令 + +```bash +npm run dev # 开发模式 +npm run build:prod # 生产构建 +npm run build:stage # 预发布构建 +``` + +--- + +## 三、peizhen — 陪诊 Android App + +### 技术栈 + +- **语言**: Java +- **构建**: Gradle 8.7.3 + Android Gradle Plugin 8.7.3 +- **编译 SDK**: 34 +- **最低 SDK**: 26 (Android 8.0) +- **目标 SDK**: 34 +- **包名**: `com.ruilaizi.service` +- **版本**: 1.0.1 (versionCode 101) + +### 项目结构 + +``` +peizhen/ +├── app/ +│ ├── src/main/ +│ │ ├── java/com/ruilaizi/service/ +│ │ │ ├── main/ +│ │ │ │ ├── activity/ # 主 Activity(登录、主页等) +│ │ │ │ ├── find/ # 发现模块 +│ │ │ │ ├── kehu/ # 客户管理模块 +│ │ │ │ ├── my/ # 我的模块(订单、红包、认证等) +│ │ │ │ └── task/ # 任务模块 +│ │ │ ├── base/ # 基础类(BaseActivity, BaseFragment 等) +│ │ │ ├── network/ # 网络层(Retrofit + HTTP) +│ │ │ ├── okgonet/ # 自定义网络框架 +│ │ │ ├── db/ # 本地数据库 +│ │ │ ├── dialog/ # 对话框组件 +│ │ │ ├── utils/ # 工具类 +│ │ │ ├── view/ # 自定义 View(含 WebView) +│ │ │ ├── widget/ # 小组件 +│ │ │ ├── common/ # 公共常量 +│ │ │ └── wxapi/ # 微信 SDK 回调 +│ │ ├── res/ # 资源文件 +│ │ └── AndroidManifest.xml +│ ├── libs/ # JAR 依赖 +│ │ ├── wechat-sdk-android-without-mta-1.0.2.jar +│ │ ├── ShareSDK-Wechat-Core-2.8.3.jar +│ │ ├── fastjson-1.1.43.android.jar +│ │ ├── eventbus-2.4.0.jar +│ │ └── tbs_sdk_thirdapp_v3.2.0...jar (腾讯浏览服务) +│ ├── release/output-metadata.json +│ └── build.gradle +├── baselibs/ # 基础库模块 +├── citypicker/ # 城市选择器模块 +├── gradle/ +├── build.gradle # 根构建脚本 +├── settings.gradle +└── gradle.properties +``` + +### 核心功能 + +- **用户登录**: 密码登录、验证码登录、短信登录、微信登录 +- **陪诊订单**: 订单管理、接单、完成、评价 +- **客户管理**: 客户信息、客户分配、客户跟进 +- **红包/钱包**: 红包收发、钱包管理 +- **认证**: 实名认证 +- **IM 即时通讯**: 会话、评论 +- **消息通知**: 系统消息推送 + +### 签名配置 + +- **签名文件**: `ruilaizi.jks` +- **别名**: `123456` + +--- + +## 四、coupon — 微信小程序 + +### 技术栈 + +- **框架**: 微信原生小程序 +- **UI**: Vant Weapp 组件库 +- **AppID**: `wx2d5ca40a16ebd1b3` +- **基础库**: 2.21.0 +- **分包**: 支持 (shopping 子包) + +### 目录结构 + +``` +coupon/ +├── pages/ # 主包页面 +│ ├── index/ # 首页 +│ ├── order/ # 订单列表 +│ ├── orderdetail/ # 订单详情 +│ ├── reforderdetail/ # 退款订单详情 +│ ├── peizhen/ # 陪诊服务 +│ ├── peihu/ # 陪护服务 +│ ├── my/ # 我的 +│ ├── mechanism/ # 机构 +│ ├── myshoucang/ # 我的收藏 +│ ├── wodeqianbao/ # 钱包 +│ ├── tuiguang/ # 推广 +│ ├── guanyu/ # 关于 +│ └── webpage/ # Web页面 +├── shopping/ # 分包 (购物) +│ └── pages/ +│ ├── goddess/ # 女神 +│ ├── payment/ # 支付 +│ ├── paysuccess/ # 支付成功 +│ └── withdrawal/ # 提现 +├── component/ # 组件 +│ └── picker/ # 日期选择器 +├── miniprogram/@vant/weapp/ # Vant 组件库 +├── utils/ # 工具函数 +├── app.js # 小程序入口 +├── app.json # 小程序配置 +├── app.wxss # 全局样式 +└── project.config.json # 项目配置 +``` + +### TabBar + +| 页面 | 路径 | +|------|------| +| 首页 | `pages/index/index` | +| 订单 | `pages/order/order` | +| 我的 | `pages/my/my` | + +### 核心功能 + +- 陪诊/陪护服务展示与预约 +- 订单管理(下单、支付、退款) +- 钱包/余额管理 +- 推广分销 +- 机构展示 + +--- + +## 五、Docker 环境 + +### Docker Compose 服务 + +| 服务 | 镜像 | 端口 | 说明 | +|------|------|------|------| +| rlz-redis | redis:7-alpine | 6379 (内部) | Redis 缓存 | +| rlz-backend | rlz-backend:latest | **8039** | Java 后端 | + +### 相关卷 + +| 卷名 | 用途 | +|------|------| +| rlz-redis-data | Redis 持久化数据 | +| rlz-upload | 文件上传目录 | +| rlz-logs | 应用日志 | + +--- + +## 六、部署架构 + +``` +┌─────────────────────────────────────────┐ +│ 腾讯云服务器 101.43.95.130 │ +│ │ +│ ┌──────────────┐ ┌──────────────────┐ │ +│ │ rlz-backend │ │ rlz-redis │ │ +│ │ (Java 1.8) │ │ (Redis 7) │ │ +│ │ Port: 8039 │ │ Port: 6379 │ │ +│ └──────┬───────┘ └──────────────────┘ │ +│ │ │ +└─────────┼────────────────────────────────┘ + │ + ▼ +┌─────────────────────┐ +│ 腾讯云 CynosDB │ +│ (MySQL 8) │ +│ Port: 24936 │ +└─────────────────────┘ +``` + +--- + +## 七、关键脚本与测试文件 + +| 文件 | 说明 | +|------|------| +| `docker-compose.yml` | Docker 编排,一键启动 Redis + 后端 | +| `.env` | Docker Compose 环境变量(含数据库密码,需保密) | +| `Docker部署说明.md` | Docker 部署文档 | +| `fix_firewall.sh` | 防火墙修复脚本 | +| `test_api.py` / `test_api.sh` | API 测试脚本 | +| `test_weixin_login.sh` | 微信登录测试 | +| `test_sms_login.py` | 短信登录测试 | +| `test_password_login.py` | 密码登录测试 | +| `test_postman_api.sh` | Postman API 测试 | +| `postman_test_token.sh` | Postman Token 测试 | +| `quick_test.sh` | 快速测试 | +| `测试公网连接.sh` | 公网连接测试 | + +## 八、相关文档 + +| 文档 | 说明 | +|------|------| +| `陪诊项目需求文档.txt` | 项目需求说明 | +| `项目文档.txt` | 项目总览文档 | +| `API文档.txt` | API 接口文档 | +| `Android接口配置说明.txt` | Android 接口配置 | +| `Android配置说明.txt` | Android 配置说明 | +| `后台管理系统访问说明.md` | 后台访问说明 | +| `对外访问地址说明.md` | 外部访问地址说明 | +| `完整配置检查清单.txt` | 配置检查清单 | +| `前端服务启动说明.md` | 前端启动文档 | +| `Docker部署说明.md` | Docker 部署文档 | + +--- + +## 九、Git 仓库信息 + +- **Gitea**: `http://101.43.95.130:3001/admin/rlz` +- **当前分支**: `main` +- **最新提交**: 包含 peizhen (Android) 和 coupon (小程序) 代码,已作为普通目录纳入仓库 diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/activity/CustomerDetailActivity.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/activity/CustomerDetailActivity.java index 6c7201b..d122376 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/activity/CustomerDetailActivity.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/activity/CustomerDetailActivity.java @@ -24,7 +24,7 @@ public class CustomerDetailActivity extends BaseActivity { super.onCreate(savedInstanceState); ActivityCustomerDetailBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_customer_detail); dataBean = (KehuinfoBean) getIntent().getSerializableExtra("dataBean"); - // //条目点击---订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:已支付(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算 + // //条目点击---订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算 switch (dataBean.getStatus()) { case "-2": dataBean.setStatusname("已取消"); @@ -53,17 +53,6 @@ public class CustomerDetailActivity extends BaseActivity { dataBean.setStatusname("已接单"); break; case "2": - dataBean.setStatusname("待服务"); - binding.rl01.setBackgroundResource(R.drawable.bg_detail_b); - - drawable_n = getResources().getDrawable(R.mipmap.icon_time_b); - drawable_n.setBounds(0, 0, drawable_n.getMinimumWidth(),drawable_n.getMinimumHeight()); //此为必须写的,如果不写图片显示不出来 - binding.tvDraUserName.setCompoundDrawables(drawable_n, null, null, null); - binding.tvDraUserName.setText("待服务"); - binding.tvDraUserName.setTextColor(getResources().getColor(R.color.color_228BFE)); - binding.tvDarUserPhone.setText("服务开始时间:"+dataBean.getStartTime()); - break; - case "3": dataBean.setStatusname("服务中"); binding.rl01.setBackgroundResource(R.drawable.bg_markingxinxii); @@ -72,7 +61,18 @@ public class CustomerDetailActivity extends BaseActivity { binding.tvDraUserName.setCompoundDrawables(drawable_n, null, null, null); binding.tvDraUserName.setText("已服务:3天6小时"); binding.tvDraUserName.setTextColor(getResources().getColor(R.color.color_FF8F1F)); - binding.tvDarUserPhone.setText("请认真完成此次服务,订单完成后可在“我的—累计收益—收益明细”中查看本单收益"); + binding.tvDarUserPhone.setText("请认真完成此次服务,订单完成后可在我的—累计收益—收益明细中查看本单收益"); + break; + case "3": + dataBean.setStatusname("待支付"); + binding.rl01.setBackgroundResource(R.drawable.bg_detail_b); + + drawable_n = getResources().getDrawable(R.mipmap.icon_time_b); + drawable_n.setBounds(0, 0, drawable_n.getMinimumWidth(),drawable_n.getMinimumHeight()); //此为必须写的,如果不写图片显示不出来 + binding.tvDraUserName.setCompoundDrawables(drawable_n, null, null, null); + binding.tvDraUserName.setText("待支付"); + binding.tvDraUserName.setTextColor(getResources().getColor(R.color.color_228BFE)); + binding.tvDarUserPhone.setText("服务已完成,等待患者付款"); break; case "4": dataBean.setStatusname("已完成"); diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/adapter/CusListAdapter.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/adapter/CusListAdapter.java index 7f908a0..3ce3801 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/adapter/CusListAdapter.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/adapter/CusListAdapter.java @@ -35,7 +35,7 @@ public class CusListAdapter extends BaseQuickAdapter() { diff --git a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/fragment/TobeSerFragment.java b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/fragment/TobeSerFragment.java index 5e42036..70e69a3 100644 --- a/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/fragment/TobeSerFragment.java +++ b/peizhen/app/src/main/java/com/ruilaizi/service/main/kehu/fragment/TobeSerFragment.java @@ -233,10 +233,10 @@ public class TobeSerFragment extends MobanFragment { return; } - //订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单(待支付) 2:已支付(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算 - // 待服务客户包含状态 1(已接单) 和 2(已支付) + //订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算 + // 待服务客户 = 状态 1(已接单) final HttpParams paramsPost = new HttpParams(); - paramsPost.put("status", "1,2"); + paramsPost.put("status", "1"); paramsPost.put("pageSize", "10"); paramsPost.put("pageNum", "1"); new NetApi().getPostDatatwo(paramsPost, HttpConstants.URi_syste_view_list).subscribe(new Observer() { diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzOrderController.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzOrderController.java index 1512a75..5955cdf 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzOrderController.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/controller/RlzOrderController.java @@ -198,6 +198,9 @@ public AjaxResult completeOrder(@PathVariable("orderId") Long orderId) if(null==order.getYuguMoney()|| StringUtils.isEmpty(order.getYuguMoney())){ return a.error("订单金额不能为0!"); } + if(!"3".equals(order.getStatus())){ + return a.error("当前订单状态不允许支付!"); + } try { Long userId=this.getLoginUser().getUserId(); SysUser sysUser = iSysUserService.selectUserById(userId); diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderViewServiceImpl.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderViewServiceImpl.java index df8c9b0..0092dae 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderViewServiceImpl.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OrderViewServiceImpl.java @@ -117,8 +117,8 @@ public class OrderViewServiceImpl implements IOrderViewService public int startServiceWithOrder(OrderView orderView) { int res=0; RlzOrder order=rlzOrderMapper.selectRlzOrderByOrderId(orderView.getOrderId()); - if("2".equals(order.getStatus())){//已经接单状态才能点确认服务 - order.setStatus("3");//服务中 + if("1".equals(order.getStatus())){//已接单状态才能点开始服务 + order.setStatus("2");//服务中 res = rlzOrderMapper.updateRlzOrder(order); } return res; @@ -128,8 +128,8 @@ public class OrderViewServiceImpl implements IOrderViewService public int completeOrder(OrderView orderView) { int res=0; RlzOrder order=rlzOrderMapper.selectRlzOrderByOrderId(orderView.getOrderId()); - if("3".equals(order.getStatus())){//服务中的订单才能确认完成 - order.setStatus("4");//服务中 + if("2".equals(order.getStatus())){//服务中的订单才能确认完成 + order.setStatus("3");//待支付 res = rlzOrderMapper.updateRlzOrder(order); } return res; diff --git a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java index b517586..a9d4284 100644 --- a/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java +++ b/rlz/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/RlzOrderServiceImpl.java @@ -179,14 +179,14 @@ public class RlzOrderServiceImpl implements IRlzOrderService public String concelOrderByOrderId(Long orderId) throws GeneralSecurityException, IOException, NotFoundException, HttpCodeException { RlzOrder order=this.selectRlzOrderByOrderId(orderId); String state=order.getStatus(); - if(!("0".equals(state)||"1".equals(state)||"2".equals(state))){ - return "只有待接单、已接单和已支付的订单可以取消!"; + if(!("0".equals(state)||"1".equals(state))){ + return "只有待接单和已接单的订单可以取消!"; } - order.setStatus("-2");//订单状态:订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:已支付3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算 + order.setStatus("-2");//订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算 int a=this.updateRlzOrder(order); String res; if(a>0){ - if("2".equals(state)){ + if("4".equals(state)){ CreateRequest request = new CreateRequest(); request.setOutRefundNo(order.getYuliu5()); request.setOutTradeNo(order.getYuliu5()); @@ -223,7 +223,7 @@ public String weixinPayOrderNext(String decryptOrder) { rlzOrder.setYuliu5(orderid);//设置商户订单号 rlzOrder.setYuliu6(jsonObj.get("transaction_id").toString());//设置微信支付订单号 rlzOrder.setYuliu7(decryptOrder);//记录支付返回信息 - rlzOrder.setStatus("2"); + rlzOrder.setStatus("4");//已完成(已支付) int i = rlzOrderMapper.updateRlzOrder(rlzOrder); if(i>0){ return "SUCCESS";