peixue-dev/Archive/[重要]习正陪伴业务流程完整分析.md

24 KiB
Raw Blame History

习正陪伴业务流程完整分析

创建时间2026-01-27
文档类型:系统架构与业务流程分析
适用范围:全体开发人员、产品经理、运营人员


📋 目录

  1. 核心业务流程
  2. 支撑业务流程
  3. 管理业务流程
  4. 数据模型
  5. 状态流转规则

🎯 一、核心业务流程

1.1 订单创建流程

参与角色: 家长(用户)

流程步骤:

家长端 → 选择服务 → 填写订单信息 → 创建订单

关键代码位置:

  • Controller: OrderController.createOrder()
  • Service: OrderServiceImpl.createOrder()
  • Entity: Order.java

业务逻辑:

  1. 服务验证

    • 检查服务是否存在serviceId
    • 特殊处理家长学院课程不在service表中跳过检查
  2. 订单初始化

    • 生成订单号:PD + yyyyMMddHHmmss + 4位随机数
    • 生成核销码12位随机数字
    • 设置初始状态:status=0(待支付)
    • 设置支付状态:payStatus=0(未支付)
  3. 数据保存

    • 保存订单到数据库
    • 发送订单创建通知给家长

订单字段说明:

字段 说明 示例
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()

支付方式:

  1. 微信支付 (paymentMethod = "wechat")

    • 调用微信支付接口
    • 等待支付回调
  2. 钱包支付 (paymentMethod = "wallet")

    • 检查钱包余额
    • 调用 walletService.consume() 扣款
    • 立即完成支付
  3. 其他支付方式

    • 支付宝、银行卡等

支付成功后的处理:

  1. 更新订单状态

    • payStatus = 1(已支付)
    • status = 0(待派单)
    • 记录支付时间和支付方式
  2. 创建购买记录(针对特定服务类型)

    • 家长学院订单:创建 parent_academy_purchase 记录
    • 套餐订单:创建 user_package 记录
  3. 创建分销订单

    • 自动调用 distributorService.createDistributorOrderFromOrder()
    • 记录分销关系和佣金信息
  4. 发送通知

    • 通知家长支付成功
    • 通知管理师有新订单待派单

状态流转:

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()

派单逻辑:

  1. 查看订单详情

    • 显示家长信息(姓名、电话)
    • 显示学生信息(姓名、年级、年龄)
    • 显示订单信息(服务名称、金额、时间、地址)
  2. 选择陪伴员

    • 查看陪伴员列表
    • 筛选条件:等级、状态、距离等
    • 查看陪伴员详情(评分、服务次数等)
  3. 确认派单

    • 更新订单的 teacherId 字段
    • 订单状态保持为 status = 0(待派单)
    • 等待陪伴员接单
  4. 发送通知

    • 通知陪伴员有新订单待接单
    • 通知家长订单已派单

状态流转:

status: 0(待派单) → 0(待派单,但已分配陪伴员)
teacherId: null → 具体陪伴员ID

1.4 接单流程

参与角色: 陪伴员

流程步骤:

陪伴员端 → 查看待接单列表 → 查看订单详情 → 接单/拒单

关键代码位置:

  • Controller: OrderController.acceptOrder() / rejectOrder()
  • Service: OrderServiceImpl.acceptOrder() / rejectOrder()

接单逻辑:

  1. 查看订单详情

    • 服务时间、地址
    • 学生信息
    • 服务要求
  2. 接单

    • 前置条件:订单状态为 status = 1(待接单)且已分配陪伴员
    • 更新订单状态为 status = 2(待服务)
    • 发送通知给家长
  3. 拒单

    • 前置条件:订单状态为 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

签到(开始服务):

  1. 前置条件

    • 订单状态为 status = 2(待服务)
    • 陪伴员已到达服务地点
  2. 签到信息

    • 拍照上传
    • 获取GPS位置
    • 填写备注
  3. 系统处理

    • 更新订单状态为 status = 3(服务中)
    • 设置 isVerified = 1(已核销)
    • 记录 verifyTime(核销时间)
    • 记录 serviceStartTime(服务开始时间)
    • 创建签到记录到 check_in_record
  4. 发送通知

    • 通知家长:陪伴员已到达,服务开始
    • 通知管理师:订单已核销

签退(完成服务):

  1. 前置条件

    • 订单状态为 status = 3(服务中)
    • 服务已完成
  2. 签退信息

    • 拍照上传
    • 获取GPS位置
    • 填写服务总结
  3. 系统处理

    • 更新订单状态为 status = 4(已完成)
    • 记录 completeTime(完成时间)
    • 创建签退记录到 check_in_record
    • 计算实际服务时长
  4. 时卡/套餐扣减

    • 如果订单关联时卡:扣减时卡时长
    • 如果订单关联套餐:扣减套餐时长
    • 记录使用明细
  5. 收益结算

    • 创建陪伴员收益记录(teacher_salary
    • 陪伴员分成比例70%
    • 钱包收益入账
  6. 分销佣金

    • 触发分销佣金状态更新
    • 佣金状态:待结算 → 可提现
  7. 更新统计

    • 更新课程销量
    • 更新陪伴员服务次数

状态流转:

签到:

status: 2(待服务) → 3(服务中)
isVerified: 0 → 1

签退:

status: 3(服务中) → 4(已完成)

1.6 评价流程

参与角色: 家长

流程步骤:

家长端 → 查看已完成订单 → 提交评价 → 评价成功

关键代码位置:

  • Controller: ReviewController.submitReview()
  • Service: ReviewService.submitReview()
  • Entity: Review.java

评价内容:

  1. 评分

    • 1-5星评分
    • 必填项
  2. 评价内容

    • 文字评价
    • 可选项
  3. 评价标签

    • 预设标签(如:耐心、专业、准时等)
    • 多选
  4. 系统处理

    • 保存评价到 review
    • 更新订单的 reviewed 字段为 true
    • 更新陪伴员的平均评分
    • 发送通知给陪伴员

陪伴员回复:

  • 陪伴员可以回复评价
  • 回复内容保存到 review 表的 reply_content 字段

🔧 二、支撑业务流程

2.1 支付系统

核心功能: 处理订单支付、退款、支付记录

涉及实体:

  • PaymentRecord:支付记录
  • Order:订单支付状态

支付方式:

  1. 微信支付

    • 调用微信支付API
    • 处理支付回调
    • 更新订单状态
  2. 钱包支付

    • 检查余额
    • 扣减余额
    • 记录交易流水
  3. 支付宝支付

    • 调用支付宝API
    • 处理支付回调

退款流程:

用户申请退款 → 审核 → 原路退回 → 更新订单状态

2.2 钱包系统

核心功能: 管理用户钱包余额、充值、消费、提现

涉及实体:

  • Wallet:钱包账户
  • WalletTransaction:钱包交易记录

关键代码位置:

  • Controller: WalletController
  • Service: WalletServiceImpl

钱包功能:

  1. 充值

    • 选择充值金额
    • 选择支付方式
    • 充值成功后增加余额
    • 记录交易流水
  2. 消费

    • 订单支付时扣减余额
    • 检查余额是否足够
    • 记录交易流水
  3. 提现(陪伴员)

    • 申请提现
    • 审核
    • 转账到银行卡
    • 扣减余额
  4. 收益入账(陪伴员)

    • 订单完成后自动入账
    • 收益 = 订单金额 × 70%
    • 记录交易流水

钱包余额计算:

当前余额 = 初始余额 + 充值金额 + 收益金额 - 消费金额 - 提现金额

2.3 优惠券系统

核心功能: 发放优惠券、使用优惠券、优惠券统计

涉及实体:

  • Coupon:优惠券模板
  • UserCoupon:用户优惠券

关键代码位置:

  • Controller: CouponController, UserCouponController
  • Service: CouponServiceImpl, UserCouponServiceImpl

优惠券类型:

  1. 满减券

    • 满X元减Y元
    • 满100减20
  2. 折扣券

    • X折优惠
    • 8折券
  3. 代金券

    • 直接抵扣金额
    • 10元代金券

优惠券流程:

  1. 发放

    • 管理员创建优惠券模板
    • 系统自动发放或手动发放给用户
    • 用户领取优惠券
  2. 使用

    • 下单时选择可用优惠券
    • 系统计算优惠金额
    • 支付时扣减优惠金额
    • 标记优惠券为已使用
  3. 过期

    • 定时任务检查过期优惠券
    • 标记为已过期

优惠券字段:

  • couponName:优惠券名称
  • couponType:类型(满减/折扣/代金)
  • discountAmount:优惠金额
  • minAmount:最低消费金额
  • validFrom:有效期开始
  • validTo:有效期结束
  • status:状态(未使用/已使用/已过期)

2.4 成长记录系统

核心功能: 记录学生成长轨迹、陪伴员反馈

涉及实体:

  • GrowthRecord:成长记录

关键代码位置:

  • Controller: GrowthRecordController
  • Service: GrowthRecordServiceImpl

成长记录内容:

  1. 陪伴员反馈

    • 服务完成后填写
    • 记录学生表现
    • 上传照片/视频
  2. 管理师补充

    • 管理师可以补充反馈内容
    • 字段:supplement
  3. 家长查看

    • 家长端查看学生成长记录
    • 按时间倒序展示

成长记录字段:

  • orderId:关联订单
  • studentId学生ID
  • teacherId陪伴员ID
  • content:反馈内容
  • photos照片URL多张逗号分隔
  • videos视频URL
  • supplement:管理师补充内容
  • recordDate:记录日期

2.5 时卡/套餐系统

核心功能: 管理用户购买的时卡和套餐

涉及实体:

  • Package:套餐模板
  • UserPackage:用户套餐
  • TimeCard:时卡
  • PackageUsage:套餐使用记录

关键代码位置:

  • Service: PackageService, TimeCardService, PackageUsageService

套餐类型:

  1. 时卡套餐

    • 按小时计费
    • 100小时套餐
  2. 次卡套餐

    • 按次数计费
    • 10次套餐

套餐流程:

  1. 购买套餐

    • 用户下单购买套餐
    • 支付成功后创建 user_package 记录
    • 初始化总时长和剩余时长
  2. 使用套餐

    • 预约服务时选择套餐
    • 订单关联 userPackageId
    • 服务完成后扣减套餐时长
  3. 套餐扣减

    • 计算实际服务时长
    • 扣减剩余时长
    • 记录使用明细到 package_usage
  4. 套餐过期

    • 检查有效期
    • 过期后不可使用

👥 三、管理业务流程

3.1 分销系统

核心功能: 管理分销员、分销订单、佣金结算

涉及实体:

  • Distributor:分销员
  • DistributorOrder:分销订单
  • DistributorCustomer:分销客户关系
  • DistributorWithdraw:分销员提现记录

关键代码位置:

  • Controller: DistributorController
  • Service: DistributorServiceImpl
  • Listener: OrderStatusListener

分销流程:

  1. 分销员注册

    • 用户申请成为分销员
    • 审核通过后开通分销权限
    • 生成专属邀请码
  2. 客户绑定

    • 新用户通过邀请码注册
    • 建立分销关系(distributor_customer
    • 关系永久绑定
  3. 订单分佣

    • 客户下单支付成功
    • 自动创建分销订单记录
    • 计算佣金金额(订单金额 × 佣金比例)
    • 佣金状态:待结算
  4. 佣金结算

    • 订单完成后,佣金状态变为可提现
    • 分销员申请提现
    • 审核通过后转账
  5. 佣金取消

    • 订单取消或退款
    • 扣减对应佣金
    • 更新分销订单状态

佣金计算规则:

佣金金额 = 订单实付金额 × 佣金比例
佣金比例 = 10%(可配置)

分销员等级:

  • 普通分销员10%佣金
  • 高级分销员15%佣金
  • 金牌分销员20%佣金

3.2 培训系统

核心功能: 陪伴员培训、考试、证书管理

涉及实体:

  • TrainingCourse:培训课程
  • TrainingLearningRecord:学习记录
  • TrainingExam:考试
  • TrainingExamRecord:考试记录
  • TrainingCertificate:证书

关键代码位置:

  • Controller: TrainingController
  • Service: TrainingServiceImpl

培训流程:

  1. 课程学习

    • 陪伴员选择培训课程
    • 观看视频、阅读文档
    • 记录学习进度
  2. 考试

    • 完成课程后参加考试
    • 题型:单选、多选、判断
    • 及格分数60分
  3. 获得证书

    • 考试通过后颁发证书
    • 证书包含:课程名称、成绩、颁发时间
  4. 等级提升

    • 完成指定培训课程
    • 考试成绩达标
    • 服务次数达标
    • 评分达标
    • 自动提升陪伴员等级

培训课程类型:

  • 基础培训:新人必修
  • 进阶培训:提升技能
  • 专项培训:特殊服务

3.3 权限管理系统

核心功能: 管理用户角色、权限、操作日志

涉及实体:

  • User:用户(包含角色信息)
  • Permission:权限
  • OperationLog:操作日志

关键代码位置:

  • Controller: PermissionController
  • Service: PermissionService

角色类型:

  1. 家长user

    • 下单、支付
    • 查看订单
    • 评价服务
    • 查看成长记录
  2. 陪伴员teacher

    • 接单、拒单
    • 签到、签退
    • 提交反馈
    • 查看收益
  3. 管理师manager

    • 派单
    • 查看所有订单
    • 补充反馈
    • 处理投诉
  4. 分销员distributor

    • 推广邀请
    • 查看客户
    • 查看佣金
    • 申请提现
  5. 管理员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

通知场景:

  1. 订单相关

    • 订单创建成功
    • 支付成功
    • 派单成功
    • 陪伴员接单
    • 陪伴员拒单
    • 签到通知
    • 服务完成
    • 订单取消
    • 退款成功
  2. 评价相关

    • 收到新评价
    • 评价被回复
  3. 钱包相关

    • 充值成功
    • 消费成功
    • 收益入账
    • 提现成功
  4. 分销相关

    • 新客户绑定
    • 佣金到账
    • 提现审核通过

7.2 通知方式

  1. 站内消息

    • 保存到 notification
    • 前端轮询或WebSocket推送
  2. 微信模板消息

    • 调用微信API发送
  3. 短信通知

    • 调用短信API发送

📊 八、数据统计

8.1 管理师端统计

  1. 订单统计

    • 待派单数量
    • 服务中订单数量
    • 已完成订单数量
    • 今日订单数量
  2. 陪伴员统计

    • 在线陪伴员数量
    • 服务中陪伴员数量
    • 空闲陪伴员数量
  3. 收入统计

    • 今日收入
    • 本月收入
    • 总收入

8.2 陪伴员端统计

  1. 服务统计

    • 服务次数
    • 服务时长
    • 平均评分
  2. 收益统计

    • 今日收益
    • 本月收益
    • 总收益
    • 可提现金额

8.3 分销员端统计

  1. 客户统计

    • 客户总数
    • 本月新增客户
  2. 佣金统计

    • 待结算佣金
    • 可提现佣金
    • 已提现佣金
    • 总佣金

🎯 九、关键业务规则

9.1 派单规则

  1. 陪伴员筛选条件

    • 状态:在线且空闲
    • 等级:满足服务要求
    • 距离:优先推荐距离近的
    • 评分:优先推荐评分高的
  2. 派单限制

    • 同一时间段不能重复派单
    • 陪伴员服务中不能接新单

9.2 收益分成规则

  1. 陪伴员收益

    • 分成比例70%
    • 结算时机:订单完成后
    • 入账方式:自动入账到钱包
  2. 平台收益

    • 分成比例30%
  3. 分销佣金

    • 佣金比例10%-20%(根据等级)
    • 结算时机:订单完成后
    • 提现条件满100元可提现

9.3 时卡扣减规则

  1. 扣减时机

    • 订单完成(签退)后自动扣减
  2. 扣减规则

    • 按实际服务时长扣减
    • 不足1小时按1小时计算
  3. 余额不足

    • 提示用户充值或购买套餐

📝 十、总结

10.1 核心流程总结

完整的订单生命周期:

1. 家长创建订单status=0待支付
2. 家长支付订单status=0待派单payStatus=1
3. 管理师派单分配teacherIdstatus保持0
4. 陪伴员接单status=2待服务
5. 陪伴员签到status=3服务中
6. 陪伴员签退status=4已完成
7. 家长评价reviewed=true

10.2 关键技术点

  1. 状态机管理

    • 严格的状态流转规则
    • 防止非法状态跳转
  2. 事务管理

    • 支付、扣减、收益结算使用事务
    • 保证数据一致性
  3. 异步处理

    • 通知发送异步处理
    • 不影响主流程
  4. 分布式锁

    • 钱包扣减使用乐观锁
    • 防止并发问题

10.3 扩展性设计

  1. 支付方式扩展

    • 支持多种支付方式
    • 易于添加新支付方式
  2. 服务类型扩展

    • 支持多种服务类型
    • 易于添加新服务
  3. 角色权限扩展

    • 基于RBAC的权限管理
    • 易于添加新角色

文档结束

本文档详细描述了习正陪伴系统的完整业务流程,包括核心流程、支撑流程和管理流程。
建议开发人员在开发新功能或修复问题时,先参考本文档理解业务逻辑。