# 习正陪伴业务流程完整分析 > 创建时间: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 订单状态流转图 ```mermaid 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. 管理师派单(分配teacherId,status保持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的权限管理 - 易于添加新角色 --- **文档结束** > 本文档详细描述了习正陪伴系统的完整业务流程,包括核心流程、支撑流程和管理流程。 > 建议开发人员在开发新功能或修复问题时,先参考本文档理解业务逻辑。