Files
xk-docs/docs/projects/xk-api/modules/salesperson.md
2026-07-08 15:04:42 +08:00

229 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 销售推广模块
## 概述
销售推广模块负责推广员管理、佣金计算、佣金结算等。
---
## 推广员管理
### 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `salesperson/list` | 推广员列表 |
| GET | `salesperson/detail` | 推广员详情 |
| POST | `salesperson/create` | 创建推广员 |
| POST | `salesperson/update` | 更新推广员 |
| POST | `salesperson/delete` | 删除推广员 |
| GET | `salesperson/option` | 推广员选项 |
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `SalespersonController` | `app/Http/Controllers/admin/salesperson/SalespersonController.php` | 控制器 |
| `SalespersonService` | `app/Service/admin/salesperson/SalespersonService.php` | 业务服务 |
### 关联模型
| 模型 | 表名 | 说明 |
|------|------|------|
| `ClinicSalespersonModel` | `xk_clinic_salesperson` | 门店推广员 |
| `AdminSalespersonModel` | `xk_admin_salesperson` | 管理员-推广员关联 |
| `UserSalespersonModel` | `xk_user_salesperson` | 用户-推广员绑定 |
| `SalespersonQrCodeModel` | `xk_salesperson_qr_code` | 推广员二维码 |
| `SalespersonStoreConfigModel` | `xk_salesperson_store_config` | 推广员门店配置 |
---
## 佣金计算
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `SalespersonCommissionAccrualService` | `app/Service/admin/salesperson/SalespersonCommissionAccrualService.php` | 佣金计提 |
| `SalespersonCommissionCalculator` | `app/Service/admin/salesperson/SalespersonCommissionCalculator.php` | 佣金计算 |
| `SalespersonCommissionRecordFormatter` | `app/Service/admin/salesperson/SalespersonCommissionRecordFormatter.php` | 记录格式化 |
| `SalespersonOrderBindService` | `app/Service/admin/salesperson/SalespersonOrderBindService.php` | 订单绑定 |
### 关联模型
| 模型 | 表名 | 说明 |
|------|------|------|
| `SalespersonCommissionRecordModel` | `xk_salesperson_commission_record` | 佣金记录 |
| `SalespersonCommissionTemplateModel` | `xk_salesperson_commission_template` | 佣金模板 |
| `SalespersonCommissionTemplateItemModel` | `xk_salesperson_commission_template_item` | 佣金模板明细 |
| `SalespersonDrugCommissionModel` | `xk_salesperson_drug_commission` | 药品佣金配置 |
### 佣金计算方式
| 方式 | 说明 |
|------|------|
| 固定金额 | 按模板/药品配置固定佣金 |
| 百分比 | 按订单金额百分比计算 |
### 佣金来源
| 来源 | 说明 |
|------|------|
| 直接 | 推广员直接推广的订单 |
| 邀请 | 推广员邀请的用户产生的订单 |
### 佣金计提流程
```mermaid
sequenceDiagram
participant C as 定时任务
participant SVC as SalespersonCommissionAccrualService
participant DB as 数据库
C->>SVC: app:accrue-salesperson-commission
SVC->>DB: 查询今天已付款但无佣金的订单
loop 每个订单
SVC->>SVC: calculateCommission(order)
SVC->>DB: INSERT INTO xk_salesperson_commission_record
end
```
---
## 佣金结算
### 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `settlement/list` | 结算单列表 |
| GET | `settlement/detail` | 结算单详情 |
| POST | `settlement/create` | 创建结算单 |
| POST | `settlement/settle` | 执行结算 |
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `SalespersonSettlementService` | `app/Service/admin/salesperson/SalespersonSettlementService.php` | 结算服务 |
### 关联模型
| 模型 | 表名 | 说明 |
|------|------|------|
| `SalespersonSettlementModel` | `xk_salesperson_settlement` | 推广员结算单 |
| `SalespersonSettlementRecordModel` | `xk_salesperson_settlement_record` | 结算-佣金关联 |
### 结算方式
| 方式 | 值 | 说明 |
|------|-----|------|
| 按时段 | 1 | 按时间段结算 |
| 按订单 | 2 | 按订单逐笔结算 |
---
## 佣金冲销
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `SalespersonCommissionReversalService` | `app/Service/admin/salesperson/SalespersonCommissionReversalService.php` | 冲销服务 |
### 关联 Job
| Job | 文件 | 说明 |
|-----|------|------|
| `SalespersonCommissionRefundJob` | `app/Jobs/SalespersonCommissionRefundJob.php` | 退款后佣金冲销 |
### 冲销流程
```mermaid
sequenceDiagram
participant R as 退款回调
participant J as SalespersonCommissionRefundJob
participant SVC as SalespersonCommissionReversalService
participant DB as 数据库
R->>J: 退款成功
J->>SVC: reverseCommission(order_id)
SVC->>DB: 查询原佣金记录
SVC->>DB: INSERT INTO xk_salesperson_commission_record (record_type=退款冲销)
```
---
## 佣金模板
### 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `commission-template/list` | 模板列表 |
| POST | `commission-template/create` | 创建模板 |
| POST | `commission-template/update` | 更新模板 |
| POST | `commission-template/delete` | 删除模板 |
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `SalespersonCommissionTemplateService` | `app/Service/admin/salesperson/SalespersonCommissionTemplateService.php` | 模板服务 |
### 关联模型
| 模型 | 表名 | 说明 |
|------|------|------|
| `SalespersonCommissionTemplateModel` | `xk_salesperson_commission_template` | 佣金模板 |
| `SalespersonCommissionTemplateItemModel` | `xk_salesperson_commission_template_item` | 佣金模板明细 |
---
## 门店推广员
### 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `clinic-salesperson-self/info` | 门店推广员信息 |
| POST | `clinic-salesperson-self/update` | 更新信息 |
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `ClinicSalespersonSelfController` | `app/Http/Controllers/admin/salesperson/ClinicSalespersonSelfController.php` | 控制器 |
| `SalespersonAdminAccountService` | `app/Service/admin/salesperson/SalespersonAdminAccountService.php` | 账户服务 |
---
## 推广员门店配置
### 接口
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `salesperson-store-config/list` | 配置列表 |
| POST | `salesperson-store-config/update` | 更新配置 |
### 关联类
| 类 | 文件 | 说明 |
|----|------|------|
| `SalespersonStoreConfigController` | `app/Http/Controllers/admin/salesperson/SalespersonStoreConfigController.php` | 控制器 |
| `SalespersonStoreConfigService` | `app/Service/admin/salesperson/SalespersonStoreConfigService.php` | 业务服务 |
### 关联模型
| 模型 | 表名 | 说明 |
|------|------|------|
| `SalespersonStoreConfigModel` | `xk_salesperson_store_config` | 推广员门店配置 |
### 配置说明
| 字段 | 类型 | 说明 |
|------|------|------|
| `store_id` | int | 门店 ID唯一 |
| `see_price` | tinyint | 是否可见价格0=否, 1=是 |