feat: implement serve-first-pay-later order flow
- Redesign order status: 0待接单→1已接单→2服务中→3待支付→4已完成 - Backend: startService now requires status=1, completeOrder sets status=3 - Backend: payment callback sets status=4, only status=3 can pay - Backend: cancel only allowed at status 0/1 (not during service) - Mini-program: update status labels and payment button to status=3 - Android: TobeSerFragment queries status=1, SerFragment queries status=2 - Update all status comments and UI mappings across three platforms Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -18,14 +18,13 @@
|
||||
<view style=" padding: 0 24rpx;height:366rpx;position: relative;background: #ffffff;">
|
||||
<view style="height:66rpx;">
|
||||
<text class="time_msg">订单号:{{item.orderNumber}}</text>
|
||||
<!-- 订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单(待支付) 2:已支付(待服务)
|
||||
3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算 -->
|
||||
<!-- 订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算 -->
|
||||
<view wx:if="{{item.status==-2}}" class="status_msg">{{"已取消"}}</view>
|
||||
<view wx:if="{{item.status==-1}}" class="status_msg">{{"拒绝接单"}}</view>
|
||||
<view wx:if="{{item.status==0}}" class="status_msg">{{"待接单"}}</view>
|
||||
<view wx:if="{{item.status==1}}" class="status_msg">{{"已接单"}}</view>
|
||||
<view wx:if="{{item.status==2}}" class="status_msg">{{"待服务"}}</view>
|
||||
<view wx:if="{{item.status==3}}" class="status_msg">{{"服务中"}}</view>
|
||||
<view wx:if="{{item.status==2}}" class="status_msg">{{"服务中"}}</view>
|
||||
<view wx:if="{{item.status==3}}" class="status_msg">{{"待支付"}}</view>
|
||||
<view wx:if="{{item.status==4}}" class="status_msg">{{"已完成"}}</view>
|
||||
<view wx:if="{{item.status==5}}" class="status_msg">{{"申请退款"}}</view>
|
||||
<view wx:if="{{item.status==6}}" class="status_msg">{{"退款中"}}</view>
|
||||
@@ -42,7 +41,7 @@
|
||||
<view class="detail_number">{{item.serviceTime}}天</view>
|
||||
<view class="money">实付款:<text style="font-size: 30rpx;color: #FF8F1F;font-family: PingFang SC;font-weight: bold;">¥{{item.yuguMoney}}元</text></view>
|
||||
</view>
|
||||
<view class="detail_btn" bindtap="go_pay" data-id="{{item.order_id}}" wx:if="{{item.status==4}}" data-item="{{item}}">去付款</view>
|
||||
<view class="detail_btn" bindtap="go_pay" data-id="{{item.order_id}}" wx:if="{{item.status==3}}" data-item="{{item}}">去付款</view>
|
||||
|
||||
<!-- <view class="detail_btn" bindtap="go_Qcode" data-id="{{item.order_id}}" wx:if="{{item.status==1}}">查看二维码</view> -->
|
||||
</view>
|
||||
|
||||
@@ -218,7 +218,7 @@ Page({
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 订单状态:2:待服务 时候的取消订单
|
||||
* 订单状态:2:服务中 时候的操作
|
||||
*/
|
||||
cancelOrderdfw() {
|
||||
this.setData({
|
||||
@@ -227,7 +227,7 @@ Page({
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 订单状态:3:服务中 时候的取消订单
|
||||
* 订单状态:3:待支付 时候的付款
|
||||
*/
|
||||
cancelOrderfwz() {
|
||||
|
||||
@@ -343,7 +343,7 @@ Page({
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 待服务时被坚持取消订单
|
||||
* 服务中时确认完成服务
|
||||
*/
|
||||
cancelokdfw() {
|
||||
//关闭服务人员正在赶来弹框
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
<view wx:if="{{item.status==-1}}" class="status_msg">{{"拒绝接单"}}</view>
|
||||
<view wx:if="{{item.status==0}}" class="status_msg">{{"待接单"}}</view>
|
||||
<view wx:if="{{item.status==1}}" class="status_msg">{{"已接单"}}</view>
|
||||
<view wx:if="{{item.status==2}}" class="status_msg">{{"待服务"}}</view>
|
||||
<view wx:if="{{item.status==3}}" class="status_msg">{{"服务中"}}</view>
|
||||
<view wx:if="{{item.status==2}}" class="status_msg">{{"服务中"}}</view>
|
||||
<view wx:if="{{item.status==3}}" class="status_msg">{{"待支付"}}</view>
|
||||
<view wx:if="{{item.status==4}}" class="status_msg">{{"已完成"}}</view>
|
||||
<view wx:if="{{item.status==5}}" class="status_msg">{{"申请退款"}}</view>
|
||||
<view wx:if="{{item.status==6}}" class="status_msg">{{"退款中"}}</view>
|
||||
@@ -37,30 +37,23 @@
|
||||
|
||||
<!-- 订单状态:1:已接单 -->
|
||||
<view wx:if="{{item.status==1}}" class="opt_view">
|
||||
<view class="detail_btn" style="padding:0 30rpx" bindtap="startService">
|
||||
确认开始服务
|
||||
</view>
|
||||
<view class="detail_btn" bindtap="cancelOrder">
|
||||
取消订单
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 订单状态:2:待服务 -->
|
||||
<!-- 订单状态:2:服务中 -->
|
||||
<view wx:if="{{item.status==2}}" class="opt_view">
|
||||
<view class="detail_btn" style="padding:0 30rpx" bindtap="startService">
|
||||
确认开始服务
|
||||
</view>
|
||||
<view class="detail_btn" bindtap="cancelOrderdfw">
|
||||
取消订单并退款
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 订单状态:3:服务中 -->
|
||||
<view wx:if="{{item.status==3}}" class="opt_view">
|
||||
<view class="detail_btn" bindtap="cancelOrderfwz">
|
||||
确认服务完成
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 订单状态:4:已完成(待付款) -->
|
||||
<view wx:if="{{item.status==4}}" class="opt_view">
|
||||
<!-- 订单状态:3:待支付 -->
|
||||
<view wx:if="{{item.status==3}}" class="opt_view">
|
||||
<view class="detail_btn" style="padding:0 30rpx" bindtap="confirm_pay">
|
||||
付款
|
||||
</view>
|
||||
|
||||
@@ -13,8 +13,8 @@ Page({
|
||||
'-1': '拒绝接单',
|
||||
'0': '待接单',
|
||||
'1': '已接单',
|
||||
'2': '待服务',
|
||||
'3': '服务中',
|
||||
'2': '服务中',
|
||||
'3': '待支付',
|
||||
'4': '已完成',
|
||||
'5': '申请退款',
|
||||
'6': '退款中',
|
||||
|
||||
441
coupon/项目文档.txt
Normal file
441
coupon/项目文档.txt
Normal file
@@ -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
|
||||
========================================
|
||||
713
docs/项目功能的prd文档.md
Normal file
713
docs/项目功能的prd文档.md
Normal file
@@ -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`
|
||||
355
docs/项目文档0511.md
Normal file
355
docs/项目文档0511.md
Normal file
@@ -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 (小程序) 代码,已作为普通目录纳入仓库
|
||||
@@ -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("已完成");
|
||||
|
||||
@@ -35,7 +35,7 @@ public class CusListAdapter extends BaseQuickAdapter<KehuinfoBean, BaseViewHolde
|
||||
CircleImageView iv_dea_avatar = helper.getView(R.id.iv_dea_avatar);
|
||||
GlideTools.init(mContext).displaypic(iv_dea_avatar, item.getUserbAvatar(), R.mipmap.icon_default_head);
|
||||
TextView tv_status = helper.getView(R.id.tv_status);
|
||||
//条目点击---订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单(待支付) 2:已支付(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算
|
||||
//条目点击---订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算
|
||||
String status = item.getStatus();
|
||||
switch(status){
|
||||
case "-2" :
|
||||
@@ -51,10 +51,10 @@ public class CusListAdapter extends BaseQuickAdapter<KehuinfoBean, BaseViewHolde
|
||||
tv_status.setText("已接单");
|
||||
break; //可选
|
||||
case "2" :
|
||||
tv_status.setText("待服务");
|
||||
tv_status.setText("服务中");
|
||||
break; //可选
|
||||
case "3" :
|
||||
tv_status.setText("服务中");
|
||||
tv_status.setText("待支付");
|
||||
break; //可选
|
||||
case "4" :
|
||||
tv_status.setText("已完成");
|
||||
|
||||
@@ -222,7 +222,7 @@ public class ComFragment extends MobanFragment {
|
||||
}
|
||||
|
||||
|
||||
//订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单(待支付) 2:已支付(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算
|
||||
//订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算
|
||||
final HttpParams paramsPost = new HttpParams();
|
||||
paramsPost.put("status", "4");
|
||||
paramsPost.put("pageSize", "10");
|
||||
|
||||
@@ -35,7 +35,7 @@ import de.greenrobot.event.EventBus;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
/**
|
||||
* 待服务客户
|
||||
* 服务中客户
|
||||
*/
|
||||
public class SerFragment extends MobanFragment {
|
||||
|
||||
@@ -222,9 +222,9 @@ public class SerFragment extends MobanFragment {
|
||||
}
|
||||
|
||||
|
||||
//订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单(待支付) 2:已支付(待服务)3:服务中 4:已完成 5申请退款 6退款中 7已退款 8:已结算
|
||||
//订单状态:-2:已取消 -1:拒绝接单 0:待接单 1:已接单 2:服务中 3:待支付 4:已完成 5申请退款 6退款中 7已退款 8:已结算
|
||||
final HttpParams paramsPost = new HttpParams();
|
||||
paramsPost.put("status", "3");
|
||||
paramsPost.put("status", "2");
|
||||
paramsPost.put("pageSize", "10");
|
||||
paramsPost.put("pageNum", "1");
|
||||
new NetApi().getPostDatatwo(paramsPost, HttpConstants.URi_syste_view_list).subscribe(new Observer<Response>() {
|
||||
|
||||
@@ -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<Response>() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user