24 KiB
习正陪伴业务流程完整分析
创建时间:2026-01-27
文档类型:系统架构与业务流程分析
适用范围:全体开发人员、产品经理、运营人员
📋 目录
🎯 一、核心业务流程
1.1 订单创建流程
参与角色: 家长(用户)
流程步骤:
家长端 → 选择服务 → 填写订单信息 → 创建订单
关键代码位置:
- Controller:
OrderController.createOrder() - Service:
OrderServiceImpl.createOrder() - Entity:
Order.java
业务逻辑:
-
服务验证
- 检查服务是否存在(serviceId)
- 特殊处理:家长学院课程不在service表中,跳过检查
-
订单初始化
- 生成订单号:
PD + yyyyMMddHHmmss + 4位随机数 - 生成核销码:12位随机数字
- 设置初始状态:
status=0(待支付) - 设置支付状态:
payStatus=0(未支付)
- 生成订单号:
-
数据保存
- 保存订单到数据库
- 发送订单创建通知给家长
订单字段说明:
| 字段 | 说明 | 示例 |
|---|---|---|
| orderNo | 订单号 | PD20260127143025001 |
| verificationCode | 核销码(12位) | 123456789012 |
| status | 订单状态 | 0=待支付 |
| payStatus | 支付状态 | 0=未支付 |
| userId | 家长ID | 1 |
| studentId | 学生ID | 可为null |
| serviceId | 服务ID | 1 |
| serviceName | 服务名称 | 陪伴服务 |
| serviceType | 服务类型 | basic/package/parent_academy |
| price | 服务价格 | 100.00 |
| payAmount | 实付金额 | 90.00 |
1.2 支付流程
参与角色: 家长(用户)
流程步骤:
家长端 → 选择支付方式 → 发起支付 → 支付成功 → 订单状态更新
关键代码位置:
- Controller:
OrderController.payOrder() - Service:
OrderServiceImpl.payOrder()
支付方式:
-
微信支付 (
paymentMethod = "wechat")- 调用微信支付接口
- 等待支付回调
-
钱包支付 (
paymentMethod = "wallet")- 检查钱包余额
- 调用
walletService.consume()扣款 - 立即完成支付
-
其他支付方式
- 支付宝、银行卡等
支付成功后的处理:
-
更新订单状态
payStatus = 1(已支付)status = 0(待派单)- 记录支付时间和支付方式
-
创建购买记录(针对特定服务类型)
- 家长学院订单:创建
parent_academy_purchase记录 - 套餐订单:创建
user_package记录
- 家长学院订单:创建
-
创建分销订单
- 自动调用
distributorService.createDistributorOrderFromOrder() - 记录分销关系和佣金信息
- 自动调用
-
发送通知
- 通知家长支付成功
- 通知管理师有新订单待派单
状态流转:
status: 0(待支付) → 0(待派单)
payStatus: 0(未支付) → 1(已支付)
1.3 派单流程
参与角色: 管理师
流程步骤:
管理师端 → 查看待派单列表 → 选择订单 → 选择陪伴员 → 确认派单
关键代码位置:
- 前端页面:
manager-package/pages/manager/work-order-detail.vue - 前端页面:
manager-package/pages/manager/assign.vue - Controller:
WorkOrderController.createWorkOrder()
派单逻辑:
-
查看订单详情
- 显示家长信息(姓名、电话)
- 显示学生信息(姓名、年级、年龄)
- 显示订单信息(服务名称、金额、时间、地址)
-
选择陪伴员
- 查看陪伴员列表
- 筛选条件:等级、状态、距离等
- 查看陪伴员详情(评分、服务次数等)
-
确认派单
- 更新订单的
teacherId字段 - 订单状态保持为
status = 0(待派单) - 等待陪伴员接单
- 更新订单的
-
发送通知
- 通知陪伴员有新订单待接单
- 通知家长订单已派单
状态流转:
status: 0(待派单) → 0(待派单,但已分配陪伴员)
teacherId: null → 具体陪伴员ID
1.4 接单流程
参与角色: 陪伴员
流程步骤:
陪伴员端 → 查看待接单列表 → 查看订单详情 → 接单/拒单
关键代码位置:
- Controller:
OrderController.acceptOrder()/rejectOrder() - Service:
OrderServiceImpl.acceptOrder()/rejectOrder()
接单逻辑:
-
查看订单详情
- 服务时间、地址
- 学生信息
- 服务要求
-
接单
- 前置条件:订单状态为
status = 1(待接单)且已分配陪伴员 - 更新订单状态为
status = 2(待服务) - 发送通知给家长
- 前置条件:订单状态为
-
拒单
- 前置条件:订单状态为
status = 1(待接单) - 订单状态回退为
status = 0(待派单) - 清除
teacherId,让管理师重新分配 - 记录拒单原因
- 发送通知给家长和管理师
- 前置条件:订单状态为
状态流转:
接单:
status: 1(待接单) → 2(待服务)
拒单:
status: 1(待接单) → 0(待派单)
teacherId: 具体陪伴员ID → null
1.5 服务流程
参与角色: 陪伴员、家长
流程步骤:
陪伴员端 → 签到(开始服务)→ 服务中 → 签退(完成服务)
关键代码位置:
- Controller:
OrderController.startService()/completeService() - Service:
OrderServiceImpl.startServiceWithCheckIn()/completeService() - Entity:
CheckInRecord.java
签到(开始服务):
-
前置条件
- 订单状态为
status = 2(待服务) - 陪伴员已到达服务地点
- 订单状态为
-
签到信息
- 拍照上传
- 获取GPS位置
- 填写备注
-
系统处理
- 更新订单状态为
status = 3(服务中) - 设置
isVerified = 1(已核销) - 记录
verifyTime(核销时间) - 记录
serviceStartTime(服务开始时间) - 创建签到记录到
check_in_record表
- 更新订单状态为
-
发送通知
- 通知家长:陪伴员已到达,服务开始
- 通知管理师:订单已核销
签退(完成服务):
-
前置条件
- 订单状态为
status = 3(服务中) - 服务已完成
- 订单状态为
-
签退信息
- 拍照上传
- 获取GPS位置
- 填写服务总结
-
系统处理
- 更新订单状态为
status = 4(已完成) - 记录
completeTime(完成时间) - 创建签退记录到
check_in_record表 - 计算实际服务时长
- 更新订单状态为
-
时卡/套餐扣减
- 如果订单关联时卡:扣减时卡时长
- 如果订单关联套餐:扣减套餐时长
- 记录使用明细
-
收益结算
- 创建陪伴员收益记录(
teacher_salary) - 陪伴员分成比例:70%
- 钱包收益入账
- 创建陪伴员收益记录(
-
分销佣金
- 触发分销佣金状态更新
- 佣金状态:待结算 → 可提现
-
更新统计
- 更新课程销量
- 更新陪伴员服务次数
状态流转:
签到:
status: 2(待服务) → 3(服务中)
isVerified: 0 → 1
签退:
status: 3(服务中) → 4(已完成)
1.6 评价流程
参与角色: 家长
流程步骤:
家长端 → 查看已完成订单 → 提交评价 → 评价成功
关键代码位置:
- Controller:
ReviewController.submitReview() - Service:
ReviewService.submitReview() - Entity:
Review.java
评价内容:
-
评分
- 1-5星评分
- 必填项
-
评价内容
- 文字评价
- 可选项
-
评价标签
- 预设标签(如:耐心、专业、准时等)
- 多选
-
系统处理
- 保存评价到
review表 - 更新订单的
reviewed字段为true - 更新陪伴员的平均评分
- 发送通知给陪伴员
- 保存评价到
陪伴员回复:
- 陪伴员可以回复评价
- 回复内容保存到
review表的reply_content字段
🔧 二、支撑业务流程
2.1 支付系统
核心功能: 处理订单支付、退款、支付记录
涉及实体:
PaymentRecord:支付记录Order:订单支付状态
支付方式:
-
微信支付
- 调用微信支付API
- 处理支付回调
- 更新订单状态
-
钱包支付
- 检查余额
- 扣减余额
- 记录交易流水
-
支付宝支付
- 调用支付宝API
- 处理支付回调
退款流程:
用户申请退款 → 审核 → 原路退回 → 更新订单状态
2.2 钱包系统
核心功能: 管理用户钱包余额、充值、消费、提现
涉及实体:
Wallet:钱包账户WalletTransaction:钱包交易记录
关键代码位置:
- Controller:
WalletController - Service:
WalletServiceImpl
钱包功能:
-
充值
- 选择充值金额
- 选择支付方式
- 充值成功后增加余额
- 记录交易流水
-
消费
- 订单支付时扣减余额
- 检查余额是否足够
- 记录交易流水
-
提现(陪伴员)
- 申请提现
- 审核
- 转账到银行卡
- 扣减余额
-
收益入账(陪伴员)
- 订单完成后自动入账
- 收益 = 订单金额 × 70%
- 记录交易流水
钱包余额计算:
当前余额 = 初始余额 + 充值金额 + 收益金额 - 消费金额 - 提现金额
2.3 优惠券系统
核心功能: 发放优惠券、使用优惠券、优惠券统计
涉及实体:
Coupon:优惠券模板UserCoupon:用户优惠券
关键代码位置:
- Controller:
CouponController,UserCouponController - Service:
CouponServiceImpl,UserCouponServiceImpl
优惠券类型:
-
满减券
- 满X元减Y元
- 例:满100减20
-
折扣券
- X折优惠
- 例:8折券
-
代金券
- 直接抵扣金额
- 例:10元代金券
优惠券流程:
-
发放
- 管理员创建优惠券模板
- 系统自动发放或手动发放给用户
- 用户领取优惠券
-
使用
- 下单时选择可用优惠券
- 系统计算优惠金额
- 支付时扣减优惠金额
- 标记优惠券为已使用
-
过期
- 定时任务检查过期优惠券
- 标记为已过期
优惠券字段:
couponName:优惠券名称couponType:类型(满减/折扣/代金)discountAmount:优惠金额minAmount:最低消费金额validFrom:有效期开始validTo:有效期结束status:状态(未使用/已使用/已过期)
2.4 成长记录系统
核心功能: 记录学生成长轨迹、陪伴员反馈
涉及实体:
GrowthRecord:成长记录
关键代码位置:
- Controller:
GrowthRecordController - Service:
GrowthRecordServiceImpl
成长记录内容:
-
陪伴员反馈
- 服务完成后填写
- 记录学生表现
- 上传照片/视频
-
管理师补充
- 管理师可以补充反馈内容
- 字段:
supplement
-
家长查看
- 家长端查看学生成长记录
- 按时间倒序展示
成长记录字段:
orderId:关联订单studentId:学生IDteacherId:陪伴员IDcontent:反馈内容photos:照片URL(多张,逗号分隔)videos:视频URLsupplement:管理师补充内容recordDate:记录日期
2.5 时卡/套餐系统
核心功能: 管理用户购买的时卡和套餐
涉及实体:
Package:套餐模板UserPackage:用户套餐TimeCard:时卡PackageUsage:套餐使用记录
关键代码位置:
- Service:
PackageService,TimeCardService,PackageUsageService
套餐类型:
-
时卡套餐
- 按小时计费
- 例:100小时套餐
-
次卡套餐
- 按次数计费
- 例:10次套餐
套餐流程:
-
购买套餐
- 用户下单购买套餐
- 支付成功后创建
user_package记录 - 初始化总时长和剩余时长
-
使用套餐
- 预约服务时选择套餐
- 订单关联
userPackageId - 服务完成后扣减套餐时长
-
套餐扣减
- 计算实际服务时长
- 扣减剩余时长
- 记录使用明细到
package_usage
-
套餐过期
- 检查有效期
- 过期后不可使用
👥 三、管理业务流程
3.1 分销系统
核心功能: 管理分销员、分销订单、佣金结算
涉及实体:
Distributor:分销员DistributorOrder:分销订单DistributorCustomer:分销客户关系DistributorWithdraw:分销员提现记录
关键代码位置:
- Controller:
DistributorController - Service:
DistributorServiceImpl - Listener:
OrderStatusListener
分销流程:
-
分销员注册
- 用户申请成为分销员
- 审核通过后开通分销权限
- 生成专属邀请码
-
客户绑定
- 新用户通过邀请码注册
- 建立分销关系(
distributor_customer) - 关系永久绑定
-
订单分佣
- 客户下单支付成功
- 自动创建分销订单记录
- 计算佣金金额(订单金额 × 佣金比例)
- 佣金状态:待结算
-
佣金结算
- 订单完成后,佣金状态变为可提现
- 分销员申请提现
- 审核通过后转账
-
佣金取消
- 订单取消或退款
- 扣减对应佣金
- 更新分销订单状态
佣金计算规则:
佣金金额 = 订单实付金额 × 佣金比例
佣金比例 = 10%(可配置)
分销员等级:
- 普通分销员:10%佣金
- 高级分销员:15%佣金
- 金牌分销员:20%佣金
3.2 培训系统
核心功能: 陪伴员培训、考试、证书管理
涉及实体:
TrainingCourse:培训课程TrainingLearningRecord:学习记录TrainingExam:考试TrainingExamRecord:考试记录TrainingCertificate:证书
关键代码位置:
- Controller:
TrainingController - Service:
TrainingServiceImpl
培训流程:
-
课程学习
- 陪伴员选择培训课程
- 观看视频、阅读文档
- 记录学习进度
-
考试
- 完成课程后参加考试
- 题型:单选、多选、判断
- 及格分数:60分
-
获得证书
- 考试通过后颁发证书
- 证书包含:课程名称、成绩、颁发时间
-
等级提升
- 完成指定培训课程
- 考试成绩达标
- 服务次数达标
- 评分达标
- 自动提升陪伴员等级
培训课程类型:
- 基础培训:新人必修
- 进阶培训:提升技能
- 专项培训:特殊服务
3.3 权限管理系统
核心功能: 管理用户角色、权限、操作日志
涉及实体:
User:用户(包含角色信息)Permission:权限OperationLog:操作日志
关键代码位置:
- Controller:
PermissionController - Service:
PermissionService
角色类型:
-
家长(user)
- 下单、支付
- 查看订单
- 评价服务
- 查看成长记录
-
陪伴员(teacher)
- 接单、拒单
- 签到、签退
- 提交反馈
- 查看收益
-
管理师(manager)
- 派单
- 查看所有订单
- 补充反馈
- 处理投诉
-
分销员(distributor)
- 推广邀请
- 查看客户
- 查看佣金
- 申请提现
-
管理员(admin)
- 系统配置
- 用户管理
- 数据统计
- 权限管理
权限控制:
- 基于角色的访问控制(RBAC)
- API接口权限验证
- 前端路由权限控制
📊 四、数据模型
4.1 核心实体关系
User(用户)
├─ 1:N → Order(订单)
├─ 1:N → Student(学生)
├─ 1:1 → Wallet(钱包)
└─ 1:N → UserCoupon(用户优惠券)
Order(订单)
├─ N:1 → User(家长)
├─ N:1 → Student(学生)
├─ N:1 → Teacher(陪伴员)
├─ N:1 → Service(服务)
├─ 1:N → CheckInRecord(签到记录)
├─ 1:N → GrowthRecord(成长记录)
├─ 1:1 → Review(评价)
└─ 1:1 → DistributorOrder(分销订单)
Teacher(陪伴员)
├─ 1:N → Order(订单)
├─ 1:N → TeacherSalary(收益记录)
└─ 1:1 → Wallet(钱包)
Distributor(分销员)
├─ 1:N → DistributorCustomer(客户关系)
└─ 1:N → DistributorOrder(分销订单)
4.2 订单状态定义
订单状态(status):
| 状态值 | 状态名称 | 说明 |
|---|---|---|
| 0 | 待派单 | 已支付,等待管理师派单 |
| 1 | 待接单 | 已派单,等待陪伴员接单 |
| 2 | 待服务 | 已接单,等待签到开始服务 |
| 3 | 服务中 | 已签到,正在服务 |
| 4 | 已完成 | 已签退,服务完成 |
| -1 | 已取消 | 用户取消或超时取消 |
| -2 | 已退款 | 退款成功 |
支付状态(payStatus):
| 状态值 | 状态名称 | 说明 |
|---|---|---|
| 0 | 未支付 | 订单已创建,等待支付 |
| 1 | 已支付 | 支付成功 |
| 2 | 支付失败 | 支付失败 |
| 3 | 已退款 | 已退款 |
🔄 五、状态流转规则
5.1 订单状态流转图
graph LR
A[0-待支付] -->|支付成功| B[0-待派单]
A -->|取消订单| F[-1-已取消]
B -->|管理师派单| C[1-待接单]
C -->|陪伴员接单| D[2-待服务]
C -->|陪伴员拒单| B
C -->|取消/退款| F
D -->|签到| E[3-服务中]
D -->|取消/退款| F
E -->|签退| G[4-已完成]
E -->|退款| H[-2-已退款]
5.2 状态流转规则
代码位置: OrderServiceImpl.isValidStatusTransition()
合法的状态流转:
| 当前状态 | 允许流转到 | 触发条件 |
|---|---|---|
| 0-待支付 | 0-待派单 | 支付成功 |
| 0-待支付 | -1-已取消 | 取消订单 |
| 0-待派单 | 1-待接单 | 管理师派单 |
| 1-待接单 | 2-待服务 | 陪伴员接单 |
| 1-待接单 | 0-待派单 | 陪伴员拒单 |
| 1-待接单 | -1-已取消 | 取消订单 |
| 1-待接单 | -2-已退款 | 申请退款 |
| 2-待服务 | 3-服务中 | 签到 |
| 2-待服务 | -1-已取消 | 取消订单 |
| 2-待服务 | -2-已退款 | 申请退款 |
| 3-服务中 | 4-已完成 | 签退 |
| 3-服务中 | -2-已退款 | 申请退款 |
终态(不允许再流转):
- 4-已完成
- -1-已取消
- -2-已退款
📱 六、前端页面结构
6.1 家长端(user-package)
pages/
├── index/ # 首页
├── order/ # 订单管理
│ ├── list.vue # 订单列表
│ ├── detail.vue # 订单详情
│ └── create.vue # 创建订单
├── service/ # 服务相关
│ ├── list.vue # 服务列表
│ └── detail.vue # 服务详情
├── growth/ # 成长记录
│ └── list.vue # 成长记录列表
├── review/ # 评价
│ └── create.vue # 提交评价
└── wallet/ # 钱包
├── index.vue # 钱包首页
└── recharge.vue # 充值
6.2 陪伴员端(teacher-package)
pages/
├── index/ # 首页
├── order/ # 订单管理
│ ├── list.vue # 订单列表(待接单/服务中/已完成)
│ └── detail.vue # 订单详情
├── checkin/ # 签到签退
│ ├── checkin.vue # 签到
│ └── checkout.vue # 签退
├── feedback/ # 反馈
│ └── create.vue # 提交反馈
├── salary/ # 收益
│ └── list.vue # 收益列表
└── training/ # 培训
├── list.vue # 培训课程列表
└── exam.vue # 考试
6.3 管理师端(manager-package)
pages/
├── index/ # 首页(待派单数量统计)
├── work-order/ # 工单管理
│ ├── list.vue # 工单列表
│ └── detail.vue # 工单详情
├── assign/ # 派单
│ └── index.vue # 选择陪伴员派单
└── statistics/ # 统计
└── index.vue # 数据统计
6.4 分销员端(distributor-package)
pages/
├── index/ # 首页
├── customer/ # 客户管理
│ └── list.vue # 客户列表
├── order/ # 分销订单
│ └── list.vue # 订单列表
├── commission/ # 佣金
│ └── list.vue # 佣金列表
└── withdraw/ # 提现
└── apply.vue # 申请提现
🔔 七、通知系统
7.1 通知类型
关键代码位置: NotificationService
通知场景:
-
订单相关
- 订单创建成功
- 支付成功
- 派单成功
- 陪伴员接单
- 陪伴员拒单
- 签到通知
- 服务完成
- 订单取消
- 退款成功
-
评价相关
- 收到新评价
- 评价被回复
-
钱包相关
- 充值成功
- 消费成功
- 收益入账
- 提现成功
-
分销相关
- 新客户绑定
- 佣金到账
- 提现审核通过
7.2 通知方式
-
站内消息
- 保存到
notification表 - 前端轮询或WebSocket推送
- 保存到
-
微信模板消息
- 调用微信API发送
-
短信通知
- 调用短信API发送
📊 八、数据统计
8.1 管理师端统计
-
订单统计
- 待派单数量
- 服务中订单数量
- 已完成订单数量
- 今日订单数量
-
陪伴员统计
- 在线陪伴员数量
- 服务中陪伴员数量
- 空闲陪伴员数量
-
收入统计
- 今日收入
- 本月收入
- 总收入
8.2 陪伴员端统计
-
服务统计
- 服务次数
- 服务时长
- 平均评分
-
收益统计
- 今日收益
- 本月收益
- 总收益
- 可提现金额
8.3 分销员端统计
-
客户统计
- 客户总数
- 本月新增客户
-
佣金统计
- 待结算佣金
- 可提现佣金
- 已提现佣金
- 总佣金
🎯 九、关键业务规则
9.1 派单规则
-
陪伴员筛选条件
- 状态:在线且空闲
- 等级:满足服务要求
- 距离:优先推荐距离近的
- 评分:优先推荐评分高的
-
派单限制
- 同一时间段不能重复派单
- 陪伴员服务中不能接新单
9.2 收益分成规则
-
陪伴员收益
- 分成比例:70%
- 结算时机:订单完成后
- 入账方式:自动入账到钱包
-
平台收益
- 分成比例:30%
-
分销佣金
- 佣金比例:10%-20%(根据等级)
- 结算时机:订单完成后
- 提现条件:满100元可提现
9.3 时卡扣减规则
-
扣减时机
- 订单完成(签退)后自动扣减
-
扣减规则
- 按实际服务时长扣减
- 不足1小时按1小时计算
-
余额不足
- 提示用户充值或购买套餐
📝 十、总结
10.1 核心流程总结
完整的订单生命周期:
1. 家长创建订单(status=0,待支付)
2. 家长支付订单(status=0,待派单,payStatus=1)
3. 管理师派单(分配teacherId,status保持0)
4. 陪伴员接单(status=2,待服务)
5. 陪伴员签到(status=3,服务中)
6. 陪伴员签退(status=4,已完成)
7. 家长评价(reviewed=true)
10.2 关键技术点
-
状态机管理
- 严格的状态流转规则
- 防止非法状态跳转
-
事务管理
- 支付、扣减、收益结算使用事务
- 保证数据一致性
-
异步处理
- 通知发送异步处理
- 不影响主流程
-
分布式锁
- 钱包扣减使用乐观锁
- 防止并发问题
10.3 扩展性设计
-
支付方式扩展
- 支持多种支付方式
- 易于添加新支付方式
-
服务类型扩展
- 支持多种服务类型
- 易于添加新服务
-
角色权限扩展
- 基于RBAC的权限管理
- 易于添加新角色
文档结束
本文档详细描述了习正陪伴系统的完整业务流程,包括核心流程、支撑流程和管理流程。
建议开发人员在开发新功能或修复问题时,先参考本文档理解业务逻辑。