150 changed files with 17193 additions and 603 deletions
@ -0,0 +1,980 @@ |
|||
# 智慧教务系统 API 接口文档 |
|||
|
|||
## 📋 接口概述 |
|||
|
|||
### 基础信息 |
|||
- **API Base URL**: `http://localhost:20080` |
|||
- **接口版本**: v1.0 |
|||
- **数据格式**: JSON |
|||
- **字符编码**: UTF-8 |
|||
- **认证方式**: JWT Token |
|||
|
|||
### 接口前缀 |
|||
- **管理端接口**: `/adminapi/*` |
|||
- **客户端接口**: `/api/*` |
|||
|
|||
### 统一响应格式 |
|||
```json |
|||
{ |
|||
"code": 1, // 状态码:1-成功,0-失败 |
|||
"msg": "操作成功", // 响应消息 |
|||
"data": {} // 响应数据 |
|||
} |
|||
``` |
|||
|
|||
### 状态码说明 |
|||
| 状态码 | 说明 | 描述 | |
|||
|--------|------|------| |
|||
| 1 | 成功 | 请求处理成功 | |
|||
| 0 | 失败 | 请求处理失败 | |
|||
| 401 | 未授权 | Token无效或已过期 | |
|||
| 403 | 禁止访问 | 权限不足 | |
|||
| 404 | 未找到 | 资源不存在 | |
|||
| 500 | 服务器错误 | 内部服务器错误 | |
|||
|
|||
## 🔐 认证机制 |
|||
|
|||
### JWT Token 认证 |
|||
所有需要认证的接口都需要在请求头中携带Token: |
|||
|
|||
```http |
|||
Authorization: Bearer {token} |
|||
``` |
|||
|
|||
### Token 获取 |
|||
通过登录接口获取Token,Token有效期为24小时。 |
|||
|
|||
### Token 刷新 |
|||
当Token即将过期时,可通过刷新接口获取新Token。 |
|||
|
|||
## 🔑 管理端接口 (/adminapi) |
|||
|
|||
### 认证相关 |
|||
|
|||
#### 1. 管理员登录 |
|||
**接口地址**: `POST /adminapi/login/login` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"username": "admin", // 用户名 |
|||
"password": "123456" // 密码 |
|||
} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "登录成功", |
|||
"data": { |
|||
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", |
|||
"expire": 86400, |
|||
"user_info": { |
|||
"uid": 1, |
|||
"username": "admin", |
|||
"nickname": "超级管理员", |
|||
"avatar": "", |
|||
"role_ids": [1], |
|||
"permissions": ["*"] |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
**curl 示例**: |
|||
```bash |
|||
curl -X POST http://localhost:20080/adminapi/login/login \ |
|||
-H "Content-Type: application/json" \ |
|||
-d '{"username":"admin","password":"123456"}' |
|||
``` |
|||
|
|||
#### 2. 获取用户信息 |
|||
**接口地址**: `GET /adminapi/user/info` |
|||
|
|||
**请求头**: |
|||
```http |
|||
Authorization: Bearer {token} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"uid": 1, |
|||
"username": "admin", |
|||
"nickname": "超级管理员", |
|||
"avatar": "", |
|||
"role_ids": [1], |
|||
"permissions": ["*"], |
|||
"campus_ids": [0] // 0表示所有校区 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 3. 退出登录 |
|||
**接口地址**: `POST /adminapi/login/logout` |
|||
|
|||
**请求头**: |
|||
```http |
|||
Authorization: Bearer {token} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "退出成功", |
|||
"data": null |
|||
} |
|||
``` |
|||
|
|||
### 校区管理 |
|||
|
|||
#### 1. 校区列表 |
|||
**接口地址**: `GET /adminapi/campus/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 // 页码 |
|||
limit: 20 // 每页数量 |
|||
keyword: "" // 搜索关键词 |
|||
status: "" // 状态筛选:1-启用,0-禁用 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 1, |
|||
"campus_name": "总校区", |
|||
"address": "北京市朝阳区xxx路xxx号", |
|||
"phone": "010-12345678", |
|||
"contact_person": "张三", |
|||
"status": 1, |
|||
"created_at": "2025-01-01 10:00:00", |
|||
"updated_at": "2025-01-14 15:30:00" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 新增校区 |
|||
**接口地址**: `POST /adminapi/campus/add` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"campus_name": "新校区", |
|||
"address": "北京市海淀区xxx路xxx号", |
|||
"phone": "010-87654321", |
|||
"contact_person": "李四", |
|||
"status": 1, |
|||
"remark": "备注信息" |
|||
} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "添加成功", |
|||
"data": { |
|||
"id": 2 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 3. 编辑校区 |
|||
**接口地址**: `PUT /adminapi/campus/edit/{id}` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"campus_name": "更新后的校区名称", |
|||
"address": "更新后的地址", |
|||
"phone": "010-11111111", |
|||
"contact_person": "王五", |
|||
"status": 1, |
|||
"remark": "更新后的备注" |
|||
} |
|||
``` |
|||
|
|||
#### 4. 删除校区 |
|||
**接口地址**: `DELETE /adminapi/campus/delete/{id}` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "删除成功", |
|||
"data": null |
|||
} |
|||
``` |
|||
|
|||
### 人员管理 |
|||
|
|||
#### 1. 员工列表 |
|||
**接口地址**: `GET /adminapi/personnel/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 |
|||
limit: 20 |
|||
keyword: "" // 姓名或工号搜索 |
|||
campus_id: "" // 校区筛选 |
|||
dept_id: "" // 部门筛选 |
|||
status: "" // 状态筛选 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 51, |
|||
"name": "花花", |
|||
"employee_id": "EMP001", |
|||
"phone": "13800138000", |
|||
"email": "huahua@example.com", |
|||
"dept_name": "教练部", |
|||
"campus_name": "总校区", |
|||
"role_type": 10, |
|||
"role_name": "校长", |
|||
"status": 1, |
|||
"created_at": "2025-01-01 10:00:00" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 新增员工 |
|||
**接口地址**: `POST /adminapi/personnel/add` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"name": "新员工", |
|||
"employee_id": "EMP002", |
|||
"phone": "13900139000", |
|||
"email": "newstaff@example.com", |
|||
"dept_id": 2, |
|||
"campus_ids": [1, 2], |
|||
"role_type": 5, |
|||
"password": "123456", |
|||
"status": 1 |
|||
} |
|||
``` |
|||
|
|||
#### 3. 学员列表 |
|||
**接口地址**: `GET /adminapi/student/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 |
|||
limit: 20 |
|||
keyword: "" // 姓名或学号搜索 |
|||
campus_id: "" // 校区筛选 |
|||
class_id: "" // 班级筛选 |
|||
status: "" // 状态筛选 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 1, |
|||
"student_name": "小明", |
|||
"student_no": "STU001", |
|||
"gender": 1, |
|||
"age": 8, |
|||
"phone": "13700137000", |
|||
"parent_name": "明爸爸", |
|||
"parent_phone": "13600136000", |
|||
"campus_name": "总校区", |
|||
"class_name": "跳绳初级班", |
|||
"status": 1, |
|||
"created_at": "2025-01-01 10:00:00" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
### 课程管理 |
|||
|
|||
#### 1. 课程列表 |
|||
**接口地址**: `GET /adminapi/course/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 |
|||
limit: 20 |
|||
keyword: "" // 课程名称搜索 |
|||
course_type: "" // 课程类型筛选 |
|||
status: "" // 状态筛选 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 1, |
|||
"course_name": "跳绳基础课程", |
|||
"course_type": "跳绳", |
|||
"duration": 60, |
|||
"session_count": 12, |
|||
"single_session_count": 1, |
|||
"price": 1200.00, |
|||
"age_range": "6-12岁", |
|||
"description": "适合初学者的跳绳课程", |
|||
"cover_image": "/uploads/course/cover1.jpg", |
|||
"status": 1, |
|||
"created_at": "2025-01-01 10:00:00" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 新增课程 |
|||
**接口地址**: `POST /adminapi/course/add` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"course_name": "新课程", |
|||
"course_type": "篮球", |
|||
"duration": 90, |
|||
"session_count": 16, |
|||
"single_session_count": 1, |
|||
"price": 1600.00, |
|||
"age_range": "8-16岁", |
|||
"description": "篮球基础技能训练", |
|||
"cover_image": "/uploads/course/cover2.jpg", |
|||
"status": 1 |
|||
} |
|||
``` |
|||
|
|||
### 班级管理 |
|||
|
|||
#### 1. 班级列表 |
|||
**接口地址**: `GET /adminapi/class/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 |
|||
limit: 20 |
|||
keyword: "" // 班级名称搜索 |
|||
campus_id: "" // 校区筛选 |
|||
course_id: "" // 课程筛选 |
|||
status: "" // 状态筛选 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 1, |
|||
"class_name": "跳绳初级班A", |
|||
"campus_name": "总校区", |
|||
"course_name": "跳绳基础课程", |
|||
"head_coach": "张教练", |
|||
"assistant_coach": "李助教", |
|||
"capacity": 15, |
|||
"current_count": 12, |
|||
"status": 1, |
|||
"created_at": "2025-01-01 10:00:00" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 新增班级 |
|||
**接口地址**: `POST /adminapi/class/add` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"class_name": "新班级", |
|||
"campus_id": 1, |
|||
"course_id": 1, |
|||
"head_coach": 51, |
|||
"assistant_coach": 52, |
|||
"capacity": 20, |
|||
"status": 1, |
|||
"remark": "备注信息" |
|||
} |
|||
``` |
|||
|
|||
### 排课系统 |
|||
|
|||
#### 1. 课程安排列表 |
|||
**接口地址**: `GET /adminapi/schedule/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 |
|||
limit: 20 |
|||
date_start: "2025-01-01" // 开始日期 |
|||
date_end: "2025-01-31" // 结束日期 |
|||
campus_id: "" // 校区筛选 |
|||
coach_id: "" // 教练筛选 |
|||
venue_id: "" // 场地筛选 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 1, |
|||
"course_name": "跳绳基础课程", |
|||
"class_name": "跳绳初级班A", |
|||
"coach_name": "张教练", |
|||
"venue_name": "训练场地A", |
|||
"course_date": "2025-01-15", |
|||
"time_slot": "09:00-10:00", |
|||
"available_capacity": 15, |
|||
"booked_count": 12, |
|||
"status": 1, |
|||
"remarks": "正常上课" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 新增课程安排 |
|||
**接口地址**: `POST /adminapi/schedule/add` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"course_id": 1, |
|||
"class_id": 1, |
|||
"coach_id": 51, |
|||
"venue_id": 1, |
|||
"course_date": "2025-01-15", |
|||
"time_slot": "09:00-10:00", |
|||
"available_capacity": 15, |
|||
"remarks": "正常上课" |
|||
} |
|||
``` |
|||
|
|||
### 财务管理 |
|||
|
|||
#### 1. 收费记录列表 |
|||
**接口地址**: `GET /adminapi/finance/payment/list` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
page: 1 |
|||
limit: 20 |
|||
date_start: "2025-01-01" |
|||
date_end: "2025-01-31" |
|||
campus_id: "" |
|||
student_id: "" |
|||
payment_type: "" // 支付方式 |
|||
status: "" // 状态 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"list": [ |
|||
{ |
|||
"id": 1, |
|||
"student_name": "小明", |
|||
"course_name": "跳绳基础课程", |
|||
"amount": 1200.00, |
|||
"payment_type": "微信支付", |
|||
"payment_time": "2025-01-15 10:30:00", |
|||
"operator": "收费员", |
|||
"status": 1, |
|||
"remark": "学费" |
|||
} |
|||
], |
|||
"total": 1, |
|||
"page": 1, |
|||
"limit": 20, |
|||
"summary": { |
|||
"total_amount": 1200.00, |
|||
"count": 1 |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 新增收费记录 |
|||
**接口地址**: `POST /adminapi/finance/payment/add` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"student_id": 1, |
|||
"course_id": 1, |
|||
"amount": 1200.00, |
|||
"payment_type": "微信支付", |
|||
"payment_time": "2025-01-15 10:30:00", |
|||
"remark": "学费" |
|||
} |
|||
``` |
|||
|
|||
### 数据统计 |
|||
|
|||
#### 1. 数据看板 |
|||
**接口地址**: `GET /adminapi/statistics/dashboard` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
date_start: "2025-01-01" |
|||
date_end: "2025-01-31" |
|||
campus_id: "" // 校区筛选,空表示所有校区 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"today": { |
|||
"income": 5600.00, |
|||
"new_students": 3, |
|||
"classes": 12, |
|||
"attendance_rate": 95.5 |
|||
}, |
|||
"month": { |
|||
"income": 156000.00, |
|||
"new_students": 45, |
|||
"total_students": 320, |
|||
"total_classes": 280 |
|||
}, |
|||
"trends": { |
|||
"income_trend": [1200, 1500, 1800, 2100, 1900, 2200, 2400], |
|||
"student_trend": [2, 3, 1, 4, 2, 3, 5], |
|||
"attendance_trend": [92.5, 94.2, 96.1, 93.8, 95.5, 97.2, 95.8] |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 收入统计 |
|||
**接口地址**: `GET /adminapi/statistics/income` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
date_start: "2025-01-01" |
|||
date_end: "2025-01-31" |
|||
campus_id: "" |
|||
group_by: "day" // 分组方式:day/week/month |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"total_amount": 156000.00, |
|||
"chart_data": [ |
|||
{ |
|||
"date": "2025-01-01", |
|||
"amount": 5200.00, |
|||
"count": 4 |
|||
}, |
|||
{ |
|||
"date": "2025-01-02", |
|||
"amount": 6800.00, |
|||
"count": 5 |
|||
} |
|||
], |
|||
"summary": { |
|||
"avg_daily": 5200.00, |
|||
"max_daily": 8900.00, |
|||
"min_daily": 2100.00 |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
## 📱 客户端接口 (/api) |
|||
|
|||
### 员工端认证 |
|||
|
|||
#### 1. 员工登录 |
|||
**接口地址**: `POST /api/staff/login` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"employee_id": "EMP001", // 工号 |
|||
"password": "123456" // 密码 |
|||
} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "登录成功", |
|||
"data": { |
|||
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", |
|||
"expire": 86400, |
|||
"user_info": { |
|||
"user_id": 51, |
|||
"name": "花花", |
|||
"employee_id": "EMP001", |
|||
"role_type": 10, |
|||
"role_name": "校长", |
|||
"campus_ids": [1, 2], |
|||
"avatar": "/uploads/avatar/51.jpg" |
|||
} |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 2. 获取员工信息 |
|||
**接口地址**: `GET /api/staff/info` |
|||
|
|||
**请求头**: |
|||
```http |
|||
Authorization: Bearer {token} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"user_id": 51, |
|||
"name": "花花", |
|||
"employee_id": "EMP001", |
|||
"phone": "13800138000", |
|||
"email": "huahua@example.com", |
|||
"role_type": 10, |
|||
"role_name": "校长", |
|||
"dept_name": "管理部", |
|||
"campus_ids": [1, 2], |
|||
"campus_names": ["总校区", "分校区A"], |
|||
"avatar": "/uploads/avatar/51.jpg" |
|||
} |
|||
} |
|||
``` |
|||
|
|||
### 员工端业务功能 |
|||
|
|||
#### 1. 我的课程安排 |
|||
**接口地址**: `GET /api/staff/schedule` |
|||
|
|||
**请求参数**: |
|||
``` |
|||
date: "2025-01-15" // 查询日期,默认今天 |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": [ |
|||
{ |
|||
"id": 1, |
|||
"course_name": "跳绳基础课程", |
|||
"class_name": "跳绳初级班A", |
|||
"venue_name": "训练场地A", |
|||
"time_slot": "09:00-10:00", |
|||
"student_count": 12, |
|||
"status": 1, |
|||
"remarks": "正常上课" |
|||
} |
|||
] |
|||
} |
|||
``` |
|||
|
|||
#### 2. 班级学员列表 |
|||
**接口地址**: `GET /api/staff/class/{class_id}/students` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": { |
|||
"class_info": { |
|||
"id": 1, |
|||
"class_name": "跳绳初级班A", |
|||
"course_name": "跳绳基础课程", |
|||
"capacity": 15, |
|||
"current_count": 12 |
|||
}, |
|||
"students": [ |
|||
{ |
|||
"id": 1, |
|||
"student_name": "小明", |
|||
"student_no": "STU001", |
|||
"gender": 1, |
|||
"age": 8, |
|||
"parent_name": "明爸爸", |
|||
"parent_phone": "13600136000", |
|||
"avatar": "/uploads/student/1.jpg", |
|||
"status": 1 |
|||
} |
|||
] |
|||
} |
|||
} |
|||
``` |
|||
|
|||
#### 3. 考勤打卡 |
|||
**接口地址**: `POST /api/staff/attendance/checkin` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"type": 1, // 打卡类型:1-上班,2-下班 |
|||
"latitude": 39.9042, // 纬度 |
|||
"longitude": 116.4074, // 经度 |
|||
"address": "北京市朝阳区xxx路xxx号", |
|||
"remark": "正常打卡" |
|||
} |
|||
``` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "打卡成功", |
|||
"data": { |
|||
"id": 1, |
|||
"checkin_time": "2025-01-15 08:30:00", |
|||
"type": 1, |
|||
"status": 1 |
|||
} |
|||
} |
|||
``` |
|||
|
|||
### 学员端功能 |
|||
|
|||
#### 1. 学员登录 |
|||
**接口地址**: `POST /api/student/login` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"phone": "13700137000", // 手机号 |
|||
"code": "123456" // 验证码 |
|||
} |
|||
``` |
|||
|
|||
#### 2. 我的课程 |
|||
**接口地址**: `GET /api/student/courses` |
|||
|
|||
**响应示例**: |
|||
```json |
|||
{ |
|||
"code": 1, |
|||
"msg": "获取成功", |
|||
"data": [ |
|||
{ |
|||
"id": 1, |
|||
"course_name": "跳绳基础课程", |
|||
"class_name": "跳绳初级班A", |
|||
"coach_name": "张教练", |
|||
"total_sessions": 12, |
|||
"completed_sessions": 8, |
|||
"remaining_sessions": 4, |
|||
"next_class_time": "2025-01-16 09:00:00", |
|||
"venue_name": "训练场地A" |
|||
} |
|||
] |
|||
} |
|||
``` |
|||
|
|||
#### 3. 课程预约 |
|||
**接口地址**: `POST /api/student/booking` |
|||
|
|||
**请求参数**: |
|||
```json |
|||
{ |
|||
"schedule_id": 1, // 课程安排ID |
|||
"remark": "正常预约" |
|||
} |
|||
``` |
|||
|
|||
## 🔧 开发调试 |
|||
|
|||
### 环境配置 |
|||
```bash |
|||
# 启动开发环境 |
|||
./start.sh |
|||
|
|||
# 查看服务状态 |
|||
docker ps |
|||
|
|||
# 查看API日志 |
|||
docker-compose logs -f php |
|||
``` |
|||
|
|||
### 测试工具 |
|||
|
|||
#### Postman 集合 |
|||
可以导入以下Postman集合进行接口测试: |
|||
|
|||
```json |
|||
{ |
|||
"info": { |
|||
"name": "智慧教务系统API", |
|||
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" |
|||
}, |
|||
"variable": [ |
|||
{ |
|||
"key": "base_url", |
|||
"value": "http://localhost:20080" |
|||
}, |
|||
{ |
|||
"key": "admin_token", |
|||
"value": "" |
|||
}, |
|||
{ |
|||
"key": "staff_token", |
|||
"value": "" |
|||
} |
|||
] |
|||
} |
|||
``` |
|||
|
|||
#### curl 测试脚本 |
|||
```bash |
|||
#!/bin/bash |
|||
|
|||
# 设置基础URL |
|||
BASE_URL="http://localhost:20080" |
|||
|
|||
# 管理员登录 |
|||
echo "=== 管理员登录 ===" |
|||
ADMIN_TOKEN=$(curl -s -X POST $BASE_URL/adminapi/login/login \ |
|||
-H "Content-Type: application/json" \ |
|||
-d '{"username":"admin","password":"123456"}' | \ |
|||
jq -r '.data.token') |
|||
|
|||
echo "Admin Token: $ADMIN_TOKEN" |
|||
|
|||
# 获取校区列表 |
|||
echo "=== 获取校区列表 ===" |
|||
curl -s -H "Authorization: Bearer $ADMIN_TOKEN" \ |
|||
"$BASE_URL/adminapi/campus/list" | jq |
|||
|
|||
# 获取员工列表 |
|||
echo "=== 获取员工列表 ===" |
|||
curl -s -H "Authorization: Bearer $ADMIN_TOKEN" \ |
|||
"$BASE_URL/adminapi/personnel/list" | jq |
|||
``` |
|||
|
|||
### 错误处理 |
|||
|
|||
#### 常见错误码 |
|||
| 错误码 | 错误信息 | 解决方案 | |
|||
|--------|----------|----------| |
|||
| 10001 | 参数错误 | 检查请求参数格式和必填字段 | |
|||
| 10002 | Token无效 | 重新登录获取新Token | |
|||
| 10003 | 权限不足 | 检查用户角色权限 | |
|||
| 10004 | 数据不存在 | 确认请求的资源ID是否正确 | |
|||
| 10005 | 数据库错误 | 检查数据库连接和SQL语句 | |
|||
|
|||
#### 调试技巧 |
|||
1. **查看详细错误信息** |
|||
```bash |
|||
# 开启调试模式 |
|||
echo "APP_DEBUG=true" >> niucloud/.env |
|||
|
|||
# 重启PHP服务 |
|||
docker-compose restart php |
|||
``` |
|||
|
|||
2. **查看SQL执行日志** |
|||
```bash |
|||
# 进入MySQL容器 |
|||
docker exec -it niucloud_mysql mysql -u niucloud -pniucloud123 |
|||
|
|||
# 开启查询日志 |
|||
SET GLOBAL general_log = 'ON'; |
|||
SET GLOBAL general_log_file = '/var/log/mysql/query.log'; |
|||
``` |
|||
|
|||
3. **API响应时间监控** |
|||
```bash |
|||
# 使用curl测试响应时间 |
|||
curl -w "@curl-format.txt" -o /dev/null -s "http://localhost:20080/adminapi/user/info" |
|||
``` |
|||
|
|||
## 📋 更新日志 |
|||
|
|||
### v1.0.0 (2025-01-14) |
|||
- 初始版本发布 |
|||
- 完成基础认证功能 |
|||
- 实现校区管理接口 |
|||
- 实现人员管理接口 |
|||
- 实现课程管理接口 |
|||
- 实现班级管理接口 |
|||
- 实现排课系统接口 |
|||
- 实现财务管理接口 |
|||
- 实现数据统计接口 |
|||
- 完成员工端基础功能 |
|||
- 完成学员端基础功能 |
|||
|
|||
--- |
|||
|
|||
**文档维护**: 开发团队 |
|||
**最后更新**: 2025-01-14 |
|||
**文档版本**: v1.0 |
|||
**联系方式**: [技术支持邮箱] |
|||
@ -0,0 +1,638 @@ |
|||
| 1月汇总数据 | | | | 2月汇总数据 | | | | 3月汇总数据 | | | | 4月汇总数据 | | | | 5月汇总数据 | | | | 6月汇总数据 | | | | 7月汇总数据 | | | | 8月汇总数据 | | | | |
|||
|--------|-----------|------|----|--------|-----------|------|----|--------|-----------|------|----|--------|-----------|------|----|--------|-----------|------|----|--------|-----------|------|----|--------|-----------|------|----|--------|-----------|------|--------| |
|||
| 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | |
|||
| 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | 1月汇总数据 | | | | 2月汇总数据 | | | | 3月汇总数据 | | | | 4月汇总数据 | | | | 5月汇总数据 | | | | 6月汇总数据 | | | | 7月汇总数据 | | | | 8月汇总数据 | | | | |
|||
| 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | 时限 | 渠道 | 具体内容 | 合计 | |
|||
| 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | 当月 | 体验包(地推)一访 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | | 体验包(活动)一访 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | | 上门(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | | 美团(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | | 大众点评(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | | 抖音(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | | 小红书(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | | 异业合作(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | | 其他(一访) | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | | 全渠道(当月汇总) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | 往月 | 体验包(地推)一访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | | 体验包(地推)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | | 体验包(活动)一访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | | 体验包(活动)二访 | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | |
|||
| | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | | | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | | 上门(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | | 上门(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | | 美团(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | | 美团(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | | 大众点评(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | | 大众点评(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | | 抖音(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | | 抖音(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | | 小红书(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | | 小红书(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | | 异业合作(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | | 异业合作(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | | 其他(一访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | | 其他(二访) | 邀约数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | 合计 | 体验包(地推) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | | 体验包(活动) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | | 体验包(合计) | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | | 转介绍 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | | 上门 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | | 美团 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | | 大众点评 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | | 抖音 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | | 小红书 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | | 异业合作 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | | 其他 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
| 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | 汇总 | 全渠道 | 名单数 | | |
|||
| | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | | | 到访数 | | |
|||
| | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | | | 到访率 | | |
|||
| | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | | | 关单数 | | |
|||
| | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | | | 关单率 | | |
|||
| | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | | | 关单金额 | | |
|||
@ -0,0 +1,309 @@ |
|||
# Dashboard WebView 业务逻辑文档 |
|||
|
|||
## 概述 |
|||
|
|||
Dashboard WebView 是一个为移动端应用提供数据可视化展示的功能模块,通过WebView组件在客户端中嵌入HTML页面,展示不同角色的统计数据和图表。 |
|||
|
|||
## 系统架构 |
|||
|
|||
### 技术栈 |
|||
- **后端**: ThinkPHP 框架 |
|||
- **前端**: HTML5 + CSS3 + JavaScript |
|||
- **图表库**: ECharts 5.4.0 |
|||
- **渲染方式**: ThinkPHP view() 模板渲染 |
|||
- **数据传输**: JWT Token + HTTP GET 参数 |
|||
|
|||
### 文件结构 |
|||
``` |
|||
niucloud/app/api/ |
|||
├── controller/Dashboard.php # 控制器(业务逻辑) |
|||
└── view/dashboard/ # 视图模板目录 |
|||
├── main.html # 主页面模板 |
|||
├── error.html # 错误页面模板 |
|||
└── layouts/ |
|||
└── base.html # 基础布局模板 |
|||
``` |
|||
|
|||
## 业务流程 |
|||
|
|||
### 1. 页面访问流程 |
|||
``` |
|||
客户端 → API请求 → Token验证 → 角色识别 → 页面类型判断 → 数据获取 → 模板渲染 → HTML输出 |
|||
``` |
|||
|
|||
### 2. 请求参数说明 |
|||
| 参数名 | 类型 | 必填 | 说明 | 示例值 | |
|||
|--------|------|------|------|--------| |
|||
| type | string | 否 | 页面类型 | my_data / dept_data / campus_data | |
|||
| token | string | 是 | 用户认证Token | JWT格式 | |
|||
| platform | string | 否 | 平台标识 | web / app / miniprogram | |
|||
|
|||
### 3. 页面类型定义 |
|||
- **my_data**: 我的数据 - 显示个人业绩统计 |
|||
- **dept_data**: 部门数据 - 显示所属部门统计 |
|||
- **campus_data**: 校区数据 - 显示整个校区统计 |
|||
|
|||
## 数据统计业务逻辑 |
|||
|
|||
### 1. 我的数据 (my_data) |
|||
**适用角色**: |
|||
市场人员(school_departments.id=1的部门=school_sys_role.dept_id的角色) |
|||
**数据维度**: |
|||
- 本月录入资源数量 |
|||
- 当天录入资源数量 |
|||
- 获得绩效金额 |
|||
- 其他奖金 |
|||
|
|||
**图表展示**: |
|||
- 月度录入资源数量趋势图(折线图) |
|||
- 客户来源分布图(饼图) |
|||
|
|||
**算法逻辑**: |
|||
|
|||
|
|||
### 2. 部门数据 (dept_data) |
|||
**适用角色**: 部门主管及以上 |
|||
**权限控制**: 只能查看本部门数据 |
|||
**数据维度**: |
|||
- 部门总业绩 |
|||
- 团队人数 |
|||
- 人均业绩 |
|||
- 部门排名 |
|||
|
|||
**图表展示**: |
|||
- 团队成员业绩排行榜(柱状图) |
|||
- 部门月度趋势对比(折线图) |
|||
|
|||
**算法逻辑**: |
|||
```php |
|||
// 基于用户所属部门统计部门数据 |
|||
function getDeptData($userInfo) { |
|||
$deptId = $userInfo['department_id']; |
|||
|
|||
// 部门总业绩:部门内所有员工的本月业绩总和 |
|||
$deptPerformance = Contract::whereIn('staff_id', function($query) use ($deptId) { |
|||
$query->select('id')->from('staff')->where('department_id', $deptId); |
|||
})->where('status', 'signed') |
|||
->whereMonth('sign_time', date('m')) |
|||
->sum('amount'); |
|||
|
|||
// 团队人数:部门内员工总数 |
|||
$teamCount = Staff::where('department_id', $deptId) |
|||
->where('status', 'active') |
|||
->count(); |
|||
|
|||
// 人均业绩:部门总业绩 / 团队人数 |
|||
$avgPerformance = $teamCount > 0 ? $deptPerformance / $teamCount : 0; |
|||
|
|||
// 部门排名:按业绩排序获取当前部门排名 |
|||
$deptRanking = $this->calculateDeptRanking($deptId); |
|||
} |
|||
``` |
|||
|
|||
### 3. 校区数据 (campus_data) |
|||
**适用角色**: 校区管理员、校长级别 |
|||
**权限控制**: 只能查看所属校区数据 |
|||
**数据维度**: |
|||
- 校区总业绩 |
|||
- 部门数量 |
|||
- 员工总数 |
|||
- 客户总数 |
|||
|
|||
**图表展示**: |
|||
- 各部门业绩对比(柱状图) |
|||
- 校区业绩趋势图(折线图) |
|||
|
|||
**算法逻辑**: |
|||
```php |
|||
// 基于用户所属校区统计校区数据 |
|||
function getCampusData($userInfo) { |
|||
$campusId = $userInfo['campus_id']; |
|||
|
|||
// 校区总业绩:校区内所有员工的本月业绩总和 |
|||
$campusPerformance = Contract::whereIn('staff_id', function($query) use ($campusId) { |
|||
$query->select('id')->from('staff')->where('campus_id', $campusId); |
|||
})->where('status', 'signed') |
|||
->whereMonth('sign_time', date('m')) |
|||
->sum('amount'); |
|||
|
|||
// 部门数量:校区内部门总数 |
|||
$deptCount = Department::where('campus_id', $campusId) |
|||
->where('status', 'active') |
|||
->count(); |
|||
|
|||
// 员工总数:校区内所有员工数量 |
|||
$staffCount = Staff::where('campus_id', $campusId) |
|||
->where('status', 'active') |
|||
->count(); |
|||
|
|||
// 客户总数:校区内所有客户数量 |
|||
$customerCount = Customer::whereIn('staff_id', function($query) use ($campusId) { |
|||
$query->select('id')->from('staff')->where('campus_id', $campusId); |
|||
})->count(); |
|||
} |
|||
``` |
|||
|
|||
## 权限控制逻辑 |
|||
|
|||
### 1. Token验证 |
|||
```php |
|||
// JWT Token 解析获取用户信息 |
|||
function verifyToken($token) { |
|||
try { |
|||
$payload = JWT::decode($token, $secretKey); |
|||
return [ |
|||
'user_id' => $payload->user_id, |
|||
'user_type' => $payload->user_type, |
|||
'role_type' => $payload->role_type, |
|||
'campus_id' => $payload->campus_id ?? 0, |
|||
'department_id' => $payload->department_id ?? 0 |
|||
]; |
|||
} catch (Exception $e) { |
|||
throw new AuthException('Token验证失败'); |
|||
} |
|||
} |
|||
``` |
|||
|
|||
### 2. 页面访问权限 |
|||
```php |
|||
// 页面类型访问权限控制 |
|||
function checkPageAccess($pageType, $userInfo) { |
|||
$rolePermissions = [ |
|||
'staff' => ['my_data'], // 普通员工只能查看个人数据 |
|||
'supervisor' => ['my_data', 'dept_data'], // 主管可查看个人和部门数据 |
|||
'manager' => ['my_data', 'dept_data', 'campus_data'], // 经理可查看所有类型数据 |
|||
'admin' => ['my_data', 'dept_data', 'campus_data'] // 管理员可查看所有类型数据 |
|||
]; |
|||
|
|||
$userRole = $this->getUserRole($userInfo['user_id']); |
|||
$allowedPages = $rolePermissions[$userRole] ?? []; |
|||
|
|||
if (!in_array($pageType, $allowedPages)) { |
|||
throw new PermissionException('无权限访问该页面'); |
|||
} |
|||
} |
|||
``` |
|||
|
|||
### 3. 数据范围控制 |
|||
```php |
|||
// 数据查询范围限制 |
|||
function applyDataScope($query, $userInfo, $pageType) { |
|||
switch ($pageType) { |
|||
case 'my_data': |
|||
// 只能查看自己的数据 |
|||
$query->where('staff_id', $userInfo['user_id']); |
|||
break; |
|||
|
|||
case 'dept_data': |
|||
// 只能查看本部门数据 |
|||
$deptStaffIds = Staff::where('department_id', $userInfo['department_id']) |
|||
->pluck('id')->toArray(); |
|||
$query->whereIn('staff_id', $deptStaffIds); |
|||
break; |
|||
|
|||
case 'campus_data': |
|||
// 只能查看本校区数据 |
|||
$campusStaffIds = Staff::where('campus_id', $userInfo['campus_id']) |
|||
->pluck('id')->toArray(); |
|||
$query->whereIn('staff_id', $campusStaffIds); |
|||
break; |
|||
} |
|||
} |
|||
``` |
|||
|
|||
## 图表配置说明 |
|||
|
|||
### 1. ECharts 配置标准 |
|||
- **主题色**: #29d3b4 (青绿色) |
|||
- **背景色**: #181A20 (深灰色) |
|||
- **字体**: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif |
|||
|
|||
### 2. 图表类型映射 |
|||
- **折线图**: 趋势数据(月度业绩、时间序列) |
|||
- **柱状图**: 对比数据(成员排行、部门对比) |
|||
- **饼图**: 占比数据(客户来源分布、业务分布) |
|||
|
|||
### 3. 响应式设计 |
|||
- 移动端优化:小于480px时单列布局 |
|||
- 图表自适应:监听窗口大小变化自动调整 |
|||
|
|||
## 性能优化 |
|||
|
|||
### 1. 缓存策略 |
|||
```php |
|||
// Redis缓存用户统计数据(5分钟有效期) |
|||
$cacheKey = "dashboard_data_{$userInfo['user_id']}_{$pageType}"; |
|||
$cachedData = Redis::get($cacheKey); |
|||
|
|||
if (!$cachedData) { |
|||
$data = $this->calculateRealData($pageType, $userInfo); |
|||
Redis::setex($cacheKey, 300, json_encode($data)); // 5分钟缓存 |
|||
} else { |
|||
$data = json_decode($cachedData, true); |
|||
} |
|||
``` |
|||
|
|||
### 2. 数据库优化 |
|||
- 为统计查询添加复合索引 |
|||
- 使用预计算表存储统计结果 |
|||
- 分页查询避免大数据量 |
|||
|
|||
### 3. 前端优化 |
|||
- CDN加载ECharts库 |
|||
- 图片懒加载和压缩 |
|||
- CSS压缩和合并 |
|||
|
|||
## 扩展规划 |
|||
|
|||
### 1. 角色细分支持 |
|||
**计划支持的角色类型**: |
|||
- **销售专员**: 基础销售数据统计 |
|||
- **销售主管**: 团队管理数据 + 个人数据 |
|||
- **市场专员**: 线索获取和转化数据 |
|||
- **客服专员**: 客户服务相关数据 |
|||
- **财务专员**: 收款和财务相关数据 |
|||
- **教研专员**: 课程和教学数据 |
|||
- **校长**: 全校区综合数据 |
|||
|
|||
### 2. 数据维度扩展 |
|||
**计划新增的统计维度**: |
|||
- 客户满意度统计 |
|||
- 课程完成率统计 |
|||
- 退费率统计 |
|||
- 续费率统计 |
|||
- 员工绩效评分 |
|||
- 市场推广效果统计 |
|||
|
|||
### 3. 图表类型扩展 |
|||
**计划支持的图表类型**: |
|||
- 雷达图:综合能力评估 |
|||
- 热力图:时间分布统计 |
|||
- 仪表盘:目标完成度 |
|||
- 漏斗图:业务流程转化 |
|||
- 地图:地域分布统计 |
|||
|
|||
## 数据表设计要求 |
|||
|
|||
### 统计相关表 |
|||
|
|||
|
|||
## 错误处理 |
|||
|
|||
### 1. 异常类型定义 |
|||
```php |
|||
class DashboardException extends Exception { |
|||
const TOKEN_INVALID = 1001; // Token无效 |
|||
const PERMISSION_DENIED = 1002; // 权限不足 |
|||
const DATA_NOT_FOUND = 1003; // 数据不存在 |
|||
const TEMPLATE_ERROR = 1004; // 模板渲染错误 |
|||
} |
|||
``` |
|||
|
|||
### 2. 错误页面展示 |
|||
- 友好的错误提示界面 |
|||
- 错误代码和消息展示 |
|||
- 返回和重试按钮 |
|||
|
|||
|
|||
|
|||
*该文档会根据实际开发需求持续更新和完善* |
|||
@ -0,0 +1,333 @@ |
|||
<template> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
title="工资条详情" |
|||
width="50%" |
|||
class="diy-dialog-wrap" |
|||
:destroy-on-close="true" |
|||
> |
|||
<div v-loading="loading" class="salary-detail"> |
|||
<div class="detail-header"> |
|||
<el-row :gutter="24" class="mb-6"> |
|||
<el-col :span="8"> |
|||
<div class="info-item"> |
|||
<span class="label">员工姓名:</span> |
|||
<span class="value">{{ detailData.staff_name || '-' }}</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="info-item"> |
|||
<span class="label">校区:</span> |
|||
<span class="value">{{ detailData.campus_name || '-' }}</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="info-item"> |
|||
<span class="label">工资月份:</span> |
|||
<span class="value">{{ detailData.salary_month || '-' }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
</div> |
|||
|
|||
<el-divider>考勤信息</el-divider> |
|||
<el-row :gutter="24" class="mb-6"> |
|||
<el-col :span="8"> |
|||
<div class="info-item"> |
|||
<span class="label">应出勤天数:</span> |
|||
<span class="value">{{ detailData.full_attendance_days || 0 }} 天</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="info-item"> |
|||
<span class="label">实际出勤天数:</span> |
|||
<span class="value">{{ detailData.attendance || 0 }} 天</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="info-item"> |
|||
<span class="label">出勤率:</span> |
|||
<span class="value">{{ attendanceRate }}%</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-divider>工资构成</el-divider> |
|||
<div class="salary-breakdown"> |
|||
<el-row :gutter="24" class="mb-4"> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">基础工资:</span> |
|||
<span class="value">¥{{ (detailData.base_salary || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">出勤工资:</span> |
|||
<span class="value">¥{{ (detailData.work_salary || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24" class="mb-4"> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">管理绩效:</span> |
|||
<span class="value">¥{{ (detailData.mgr_performance || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">绩效奖金:</span> |
|||
<span class="value">¥{{ (detailData.performance_bonus || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24" class="mb-4"> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">其他补贴:</span> |
|||
<span class="value">¥{{ (detailData.other_subsidies || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">其他扣减:</span> |
|||
<span class="value text-red">-¥{{ (detailData.deductions || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24" class="mb-4"> |
|||
<el-col :span="24"> |
|||
<div class="salary-item highlight"> |
|||
<span class="label">应发工资:</span> |
|||
<span class="value text-blue">¥{{ (detailData.gross_salary || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
</div> |
|||
|
|||
<el-divider>扣除项目</el-divider> |
|||
<el-row :gutter="24" class="mb-4"> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">社保扣除:</span> |
|||
<span class="value text-red">-¥{{ (detailData.social_security || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<div class="salary-item"> |
|||
<span class="label">个人所得税:</span> |
|||
<span class="value text-red">-¥{{ (detailData.individual_income_tax || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24" class="mb-6"> |
|||
<el-col :span="24"> |
|||
<div class="salary-item highlight final"> |
|||
<span class="label">实发工资:</span> |
|||
<span class="value text-green">¥{{ (detailData.net_salary || 0).toFixed(2) }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-divider>其他信息</el-divider> |
|||
<el-row :gutter="24" class="mb-4"> |
|||
<el-col :span="12"> |
|||
<div class="info-item"> |
|||
<span class="label">状态:</span> |
|||
<el-tag v-if="detailData.status === 0" type="info">草稿</el-tag> |
|||
<el-tag v-else-if="detailData.status === 1" type="warning">已提交</el-tag> |
|||
<el-tag v-else-if="detailData.status === 2" type="success">已发放</el-tag> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<div class="info-item"> |
|||
<span class="label">创建时间:</span> |
|||
<span class="value">{{ detailData.created_at || '-' }}</span> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<div v-if="detailData.remarks" class="remarks-section"> |
|||
<div class="info-item"> |
|||
<span class="label">备注:</span> |
|||
<div class="remarks-content">{{ detailData.remarks }}</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<template #footer> |
|||
<span class="dialog-footer"> |
|||
<el-button @click="showDialog = false">关闭</el-button> |
|||
</span> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script lang="ts" setup> |
|||
import { ref, reactive, computed } from 'vue' |
|||
import { ElMessage } from 'element-plus' |
|||
import { getSalaryInfo, type SalaryItem } from '@/app/api/salary' |
|||
|
|||
const showDialog = ref(false) |
|||
const loading = ref(false) |
|||
|
|||
// 详情数据 |
|||
const detailData = reactive<Partial<SalaryItem>>({}) |
|||
|
|||
// 出勤率计算 |
|||
const attendanceRate = computed(() => { |
|||
if (!detailData.full_attendance_days || detailData.full_attendance_days === 0) { |
|||
return '0' |
|||
} |
|||
const rate = ((detailData.attendance || 0) / detailData.full_attendance_days * 100) |
|||
return rate.toFixed(1) |
|||
}) |
|||
|
|||
// 设置数据并显示弹窗 |
|||
const setDetailData = async (row: SalaryItem) => { |
|||
if (!row || !row.id) { |
|||
ElMessage.error('数据有误') |
|||
return |
|||
} |
|||
|
|||
showDialog.value = true |
|||
loading.value = true |
|||
|
|||
try { |
|||
const res = await getSalaryInfo(row.id) |
|||
if (res.data) { |
|||
Object.assign(detailData, res.data) |
|||
} |
|||
} catch (error) { |
|||
console.error('加载详情失败:', error) |
|||
ElMessage.error('加载详情失败') |
|||
showDialog.value = false |
|||
} finally { |
|||
loading.value = false |
|||
} |
|||
} |
|||
|
|||
defineExpose({ |
|||
showDialog, |
|||
setDetailData |
|||
}) |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.salary-detail { |
|||
.detail-header { |
|||
background-color: #f8f9ff; |
|||
padding: 16px; |
|||
border-radius: 8px; |
|||
margin-bottom: 20px; |
|||
} |
|||
|
|||
.info-item { |
|||
display: flex; |
|||
align-items: flex-start; |
|||
margin-bottom: 12px; |
|||
|
|||
.label { |
|||
color: #666; |
|||
font-weight: 500; |
|||
min-width: 100px; |
|||
display: inline-block; |
|||
} |
|||
|
|||
.value { |
|||
color: #333; |
|||
font-weight: 500; |
|||
} |
|||
} |
|||
|
|||
.salary-item { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
padding: 12px 16px; |
|||
background-color: #fafafa; |
|||
border-radius: 6px; |
|||
margin-bottom: 8px; |
|||
|
|||
.label { |
|||
color: #666; |
|||
font-weight: 500; |
|||
} |
|||
|
|||
.value { |
|||
color: #333; |
|||
font-weight: 600; |
|||
} |
|||
|
|||
&.highlight { |
|||
background-color: #e8f4fd; |
|||
border: 1px solid #b3d8ff; |
|||
|
|||
.label, .value { |
|||
font-size: 16px; |
|||
font-weight: 600; |
|||
} |
|||
} |
|||
|
|||
&.final { |
|||
background-color: #f0f9ff; |
|||
border: 2px solid #16a34a; |
|||
|
|||
.label, .value { |
|||
font-size: 18px; |
|||
font-weight: 700; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.remarks-section { |
|||
margin-top: 20px; |
|||
padding: 16px; |
|||
background-color: #f8f9fa; |
|||
border-radius: 8px; |
|||
|
|||
.remarks-content { |
|||
margin-top: 8px; |
|||
padding: 12px; |
|||
background-color: white; |
|||
border-radius: 6px; |
|||
color: #333; |
|||
line-height: 1.5; |
|||
word-break: break-all; |
|||
} |
|||
} |
|||
|
|||
.text-red { |
|||
color: #f56565 !important; |
|||
} |
|||
|
|||
.text-blue { |
|||
color: #2563eb !important; |
|||
} |
|||
|
|||
.text-green { |
|||
color: #16a34a !important; |
|||
} |
|||
|
|||
.el-divider { |
|||
margin: 24px 0 16px 0; |
|||
|
|||
.el-divider__text { |
|||
background-color: white; |
|||
font-weight: 600; |
|||
color: #333; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
|
|||
<style lang="scss"> |
|||
.diy-dialog-wrap .el-form-item__label { |
|||
height: auto !important; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,481 @@ |
|||
<template> |
|||
<el-dialog |
|||
v-model="showDialog" |
|||
:title="formData.id ? '编辑工资条' : '新增工资条'" |
|||
width="60%" |
|||
class="diy-dialog-wrap" |
|||
:destroy-on-close="true" |
|||
> |
|||
<el-form |
|||
:model="formData" |
|||
label-width="120px" |
|||
ref="formRef" |
|||
:rules="formRules" |
|||
class="page-form" |
|||
v-loading="loading" |
|||
> |
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="员工" prop="staff_id"> |
|||
<el-select |
|||
v-model="formData.staff_id" |
|||
placeholder="请选择员工" |
|||
clearable |
|||
filterable |
|||
class="w-full" |
|||
@change="handleStaffChange" |
|||
> |
|||
<el-option |
|||
v-for="item in personnelList" |
|||
:key="item.id" |
|||
:label="item.name" |
|||
:value="item.id" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="校区" prop="campus_id"> |
|||
<el-select |
|||
v-model="formData.campus_id" |
|||
placeholder="请选择校区" |
|||
clearable |
|||
class="w-full" |
|||
> |
|||
<el-option |
|||
v-for="item in campusList" |
|||
:key="item.id" |
|||
:label="item.name" |
|||
:value="item.id" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="工资月份" prop="salary_month"> |
|||
<el-date-picker |
|||
v-model="formData.salary_month" |
|||
type="month" |
|||
placeholder="请选择工资月份" |
|||
format="YYYY-MM" |
|||
value-format="YYYY-MM" |
|||
clearable |
|||
class="w-full" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="基础工资(元)" prop="base_salary"> |
|||
<el-input-number |
|||
v-model="formData.base_salary" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入基础工资" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="应出勤天数" prop="full_attendance_days"> |
|||
<el-input-number |
|||
v-model="formData.full_attendance_days" |
|||
:min="0" |
|||
:precision="0" |
|||
class="w-full" |
|||
placeholder="请输入应出勤天数" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="实际出勤天数" prop="attendance"> |
|||
<el-input-number |
|||
v-model="formData.attendance" |
|||
:min="0" |
|||
:precision="0" |
|||
class="w-full" |
|||
placeholder="请输入实际出勤天数" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="出勤工资(元)"> |
|||
<el-input |
|||
v-model="workSalary" |
|||
disabled |
|||
class="w-full" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="管理绩效(元)" prop="mgr_performance"> |
|||
<el-input-number |
|||
v-model="formData.mgr_performance" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入管理绩效" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="绩效奖金(元)" prop="performance_bonus"> |
|||
<el-input-number |
|||
v-model="formData.performance_bonus" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入绩效奖金" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="其他补贴(元)" prop="other_subsidies"> |
|||
<el-input-number |
|||
v-model="formData.other_subsidies" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入其他补贴" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="其他扣减(元)" prop="deductions"> |
|||
<el-input-number |
|||
v-model="formData.deductions" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入其他扣减" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="应发工资(元)"> |
|||
<el-input |
|||
v-model="grossSalary" |
|||
disabled |
|||
class="w-full" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="社保扣除(元)" prop="social_security"> |
|||
<el-input-number |
|||
v-model="formData.social_security" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入社保扣除" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="个人所得税(元)" prop="individual_income_tax"> |
|||
<el-input-number |
|||
v-model="formData.individual_income_tax" |
|||
:min="0" |
|||
:precision="2" |
|||
class="w-full" |
|||
placeholder="请输入个人所得税" |
|||
@change="calculateSalary" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="24"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="实发工资(元)"> |
|||
<el-input |
|||
v-model="netSalary" |
|||
disabled |
|||
class="w-full" |
|||
style="font-weight: 600; color: #16a34a;" |
|||
/> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="状态" prop="status"> |
|||
<el-select |
|||
v-model="formData.status" |
|||
placeholder="请选择状态" |
|||
class="w-full" |
|||
> |
|||
<el-option label="草稿" :value="0" /> |
|||
<el-option label="已提交" :value="1" /> |
|||
<el-option label="已发放" :value="2" /> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-form-item label="备注"> |
|||
<el-input |
|||
v-model="formData.remarks" |
|||
type="textarea" |
|||
:rows="3" |
|||
placeholder="请输入备注信息" |
|||
class="w-full" |
|||
/> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<template #footer> |
|||
<span class="dialog-footer"> |
|||
<el-button @click="showDialog = false">取消</el-button> |
|||
<el-button |
|||
type="primary" |
|||
:loading="loading" |
|||
@click="confirm(formRef)" |
|||
> |
|||
确认 |
|||
</el-button> |
|||
</span> |
|||
</template> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script lang="ts" setup> |
|||
import { ref, reactive, computed, watch } from 'vue' |
|||
import type { FormInstance } from 'element-plus' |
|||
import { ElMessage } from 'element-plus' |
|||
import { |
|||
createSalary, |
|||
updateSalary, |
|||
getSalaryInfo, |
|||
getPersonnelList, |
|||
getCampusList, |
|||
calculateWorkSalary, |
|||
calculateGrossSalary, |
|||
calculateNetSalary, |
|||
type SalaryFormData |
|||
} from '@/app/api/salary' |
|||
|
|||
const showDialog = ref(false) |
|||
const loading = ref(false) |
|||
|
|||
// 表单数据 |
|||
const initialFormData: SalaryFormData = { |
|||
staff_id: undefined, |
|||
campus_id: undefined, |
|||
salary_month: '', |
|||
base_salary: 0, |
|||
full_attendance_days: 0, |
|||
attendance: 0, |
|||
mgr_performance: 0, |
|||
performance_bonus: 0, |
|||
other_subsidies: 0, |
|||
deductions: 0, |
|||
social_security: 0, |
|||
individual_income_tax: 0, |
|||
remarks: '' |
|||
} |
|||
|
|||
const formData: Record<string, any> = reactive({ ...initialFormData }) |
|||
const formRef = ref<FormInstance>() |
|||
|
|||
// 列表数据 |
|||
const personnelList = ref<any[]>([]) |
|||
const campusList = ref<any[]>([]) |
|||
|
|||
// 计算属性 |
|||
const workSalary = computed(() => { |
|||
return calculateWorkSalary( |
|||
formData.base_salary || 0, |
|||
formData.full_attendance_days || 0, |
|||
formData.attendance || 0 |
|||
).toFixed(2) |
|||
}) |
|||
|
|||
const grossSalary = computed(() => { |
|||
const work = calculateWorkSalary( |
|||
formData.base_salary || 0, |
|||
formData.full_attendance_days || 0, |
|||
formData.attendance || 0 |
|||
) |
|||
return calculateGrossSalary( |
|||
work, |
|||
formData.mgr_performance || 0, |
|||
formData.performance_bonus || 0, |
|||
formData.other_subsidies || 0, |
|||
formData.deductions || 0 |
|||
).toFixed(2) |
|||
}) |
|||
|
|||
const netSalary = computed(() => { |
|||
const work = calculateWorkSalary( |
|||
formData.base_salary || 0, |
|||
formData.full_attendance_days || 0, |
|||
formData.attendance || 0 |
|||
) |
|||
const gross = calculateGrossSalary( |
|||
work, |
|||
formData.mgr_performance || 0, |
|||
formData.performance_bonus || 0, |
|||
formData.other_subsidies || 0, |
|||
formData.deductions || 0 |
|||
) |
|||
return calculateNetSalary( |
|||
gross, |
|||
formData.social_security || 0, |
|||
formData.individual_income_tax || 0 |
|||
).toFixed(2) |
|||
}) |
|||
|
|||
// 表单验证规则 |
|||
const formRules = computed(() => { |
|||
return { |
|||
staff_id: [ |
|||
{ required: true, message: '请选择员工', trigger: 'change' } |
|||
], |
|||
salary_month: [ |
|||
{ required: true, message: '请选择工资月份', trigger: 'change' } |
|||
], |
|||
base_salary: [ |
|||
{ required: true, message: '请输入基础工资', trigger: 'blur' }, |
|||
{ type: 'number', min: 0, message: '基础工资不能小于0', trigger: 'blur' } |
|||
], |
|||
full_attendance_days: [ |
|||
{ required: true, message: '请输入应出勤天数', trigger: 'blur' }, |
|||
{ type: 'number', min: 0, message: '应出勤天数不能小于0', trigger: 'blur' } |
|||
], |
|||
attendance: [ |
|||
{ required: true, message: '请输入实际出勤天数', trigger: 'blur' }, |
|||
{ type: 'number', min: 0, message: '实际出勤天数不能小于0', trigger: 'blur' } |
|||
] |
|||
} |
|||
}) |
|||
|
|||
const emit = defineEmits(['complete']) |
|||
|
|||
// 加载数据 |
|||
const loadOptions = async () => { |
|||
try { |
|||
const [personnelRes, campusRes] = await Promise.all([ |
|||
getPersonnelList(), |
|||
getCampusList() |
|||
]) |
|||
personnelList.value = personnelRes.data |
|||
campusList.value = campusRes.data |
|||
} catch (error) { |
|||
console.error('加载选项数据失败:', error) |
|||
} |
|||
} |
|||
|
|||
// 员工变更事件 |
|||
const handleStaffChange = (staffId: number) => { |
|||
if (staffId) { |
|||
const staff = personnelList.value.find(item => item.id === staffId) |
|||
if (staff && staff.campus_id) { |
|||
formData.campus_id = staff.campus_id |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 计算工资 |
|||
const calculateSalary = () => { |
|||
// 工资计算在计算属性中自动完成 |
|||
} |
|||
|
|||
// 确认保存 |
|||
const confirm = async (formEl: FormInstance | undefined) => { |
|||
if (loading.value || !formEl) return |
|||
|
|||
await formEl.validate(async (valid) => { |
|||
if (valid) { |
|||
loading.value = true |
|||
|
|||
const saveData = { ...formData } |
|||
const saveAction = formData.id ? updateSalary : createSalary |
|||
|
|||
try { |
|||
await saveAction(saveData) |
|||
ElMessage.success(formData.id ? '更新成功' : '创建成功') |
|||
showDialog.value = false |
|||
emit('complete') |
|||
} catch (error) { |
|||
console.error('保存失败:', error) |
|||
ElMessage.error('保存失败') |
|||
} finally { |
|||
loading.value = false |
|||
} |
|||
} |
|||
}) |
|||
} |
|||
|
|||
// 设置表单数据 |
|||
const setFormData = async (row: any = null) => { |
|||
Object.assign(formData, initialFormData) |
|||
loading.value = true |
|||
|
|||
try { |
|||
if (row && row.id) { |
|||
const res = await getSalaryInfo(row.id) |
|||
if (res.data) { |
|||
Object.keys(formData).forEach((key: string) => { |
|||
if (res.data[key] !== undefined) { |
|||
formData[key] = res.data[key] |
|||
} |
|||
}) |
|||
} |
|||
} else { |
|||
// 新增时设置默认值 |
|||
formData.status = 0 |
|||
formData.full_attendance_days = 22 |
|||
formData.attendance = 22 |
|||
} |
|||
} catch (error) { |
|||
console.error('加载数据失败:', error) |
|||
ElMessage.error('加载数据失败') |
|||
} finally { |
|||
loading.value = false |
|||
} |
|||
} |
|||
|
|||
// 初始化时加载选项数据 |
|||
loadOptions() |
|||
|
|||
defineExpose({ |
|||
showDialog, |
|||
setFormData |
|||
}) |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.w-full { |
|||
width: 100%; |
|||
} |
|||
</style> |
|||
|
|||
<style lang="scss"> |
|||
.diy-dialog-wrap .el-form-item__label { |
|||
height: auto !important; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,223 @@ |
|||
<template> |
|||
<div class="direct-upload-wrapper"> |
|||
<el-upload |
|||
ref="uploadRef" |
|||
:action="''" |
|||
:auto-upload="false" |
|||
:show-file-list="false" |
|||
:accept="accept" |
|||
:before-upload="beforeUpload" |
|||
:on-change="handleFileChange" |
|||
v-bind="$attrs" |
|||
> |
|||
<slot> |
|||
<el-button type="primary" :loading="uploading"> |
|||
{{ uploading ? `上传中 ${uploadProgress}%` : '选择文件' }} |
|||
</el-button> |
|||
</slot> |
|||
</el-upload> |
|||
</div> |
|||
</template> |
|||
|
|||
<script lang="ts" setup> |
|||
import { ref, computed } from 'vue' |
|||
import { ElMessage } from 'element-plus' |
|||
import type { UploadFile, UploadProps } from 'element-plus' |
|||
import { uploadFile, isDirectUploadSupported } from '@/utils/directUpload' |
|||
import { getToken } from '@/utils/common' |
|||
|
|||
interface Props { |
|||
fileType: 'image' | 'video' | 'document' |
|||
maxSize?: number // MB |
|||
accept?: string |
|||
fallbackUrl?: string // 后备上传接口URL |
|||
} |
|||
|
|||
const props = withDefaults(defineProps<Props>(), { |
|||
fileType: 'image', |
|||
maxSize: 10, |
|||
accept: '*/*' |
|||
}) |
|||
|
|||
const emit = defineEmits<{ |
|||
success: [url: string, file: UploadFile] |
|||
error: [error: string] |
|||
progress: [percent: number] |
|||
}>() |
|||
|
|||
const uploading = ref(false) |
|||
const uploadProgress = ref(0) |
|||
const uploadRef = ref() |
|||
|
|||
// 文件类型对应的accept |
|||
const acceptMap = { |
|||
image: 'image/*', |
|||
video: 'video/*', |
|||
document: '.pdf,.doc,.docx,.ppt,.pptx,.xls,.xlsx' |
|||
} |
|||
|
|||
const computedAccept = computed(() => { |
|||
return props.accept !== '*/*' ? props.accept : acceptMap[props.fileType] |
|||
}) |
|||
|
|||
/** |
|||
* 上传前验证 |
|||
*/ |
|||
const beforeUpload: UploadProps['beforeUpload'] = (file) => { |
|||
// 文件类型验证 |
|||
let isValidType = false |
|||
let errorMsg = '' |
|||
|
|||
switch (props.fileType) { |
|||
case 'image': |
|||
isValidType = file.type.startsWith('image/') |
|||
errorMsg = '请选择图片文件' |
|||
break |
|||
case 'video': |
|||
isValidType = file.type.startsWith('video/') |
|||
errorMsg = '请选择视频文件' |
|||
break |
|||
case 'document': |
|||
isValidType = [ |
|||
'application/pdf', |
|||
'application/msword', |
|||
'application/vnd.openxmlformats-officedocument.wordprocessingml.document', |
|||
'application/vnd.ms-powerpoint', |
|||
'application/vnd.openxmlformats-officedocument.presentationml.presentation', |
|||
'application/vnd.ms-excel', |
|||
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' |
|||
].includes(file.type) |
|||
errorMsg = '请选择有效的文档文件' |
|||
break |
|||
} |
|||
|
|||
if (!isValidType) { |
|||
ElMessage.error(errorMsg) |
|||
return false |
|||
} |
|||
|
|||
// 文件大小验证 |
|||
const maxSizeBytes = props.maxSize * 1024 * 1024 |
|||
if (file.size > maxSizeBytes) { |
|||
ElMessage.error(`文件大小不能超过 ${props.maxSize}MB`) |
|||
return false |
|||
} |
|||
|
|||
return true |
|||
} |
|||
|
|||
/** |
|||
* 文件选择改变时触发 |
|||
*/ |
|||
const handleFileChange = async (uploadFile: UploadFile) => { |
|||
if (!uploadFile.raw) return |
|||
|
|||
uploading.value = true |
|||
uploadProgress.value = 0 |
|||
|
|||
try { |
|||
// 检查是否支持直传 |
|||
const supportDirectUpload = await isDirectUploadSupported() |
|||
|
|||
if (supportDirectUpload) { |
|||
// 使用直传 |
|||
await handleDirectUpload(uploadFile.raw, uploadFile) |
|||
} else { |
|||
// 降级到传统上传 |
|||
await handleFallbackUpload(uploadFile.raw, uploadFile) |
|||
} |
|||
} catch (error) { |
|||
const errorMsg = error instanceof Error ? error.message : '上传失败' |
|||
ElMessage.error(errorMsg) |
|||
emit('error', errorMsg) |
|||
} finally { |
|||
uploading.value = false |
|||
uploadProgress.value = 0 |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 直传上传 |
|||
*/ |
|||
const handleDirectUpload = async (file: File, uploadFile: UploadFile) => { |
|||
const result = await uploadFile({ |
|||
file, |
|||
fileType: props.fileType, |
|||
onProgress: (percent) => { |
|||
uploadProgress.value = percent |
|||
emit('progress', percent) |
|||
} |
|||
}) |
|||
|
|||
if (result.success) { |
|||
ElMessage.success('上传成功') |
|||
emit('success', result.url, uploadFile) |
|||
} else { |
|||
throw new Error(result.error || '上传失败') |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 后备上传(传统方式) |
|||
*/ |
|||
const handleFallbackUpload = async (file: File, uploadFile: UploadFile) => { |
|||
if (!props.fallbackUrl) { |
|||
throw new Error('直传不可用且未配置后备上传接口') |
|||
} |
|||
|
|||
return new Promise<void>((resolve, reject) => { |
|||
const formData = new FormData() |
|||
formData.append('file', file) |
|||
|
|||
const xhr = new XMLHttpRequest() |
|||
|
|||
// 上传进度 |
|||
xhr.upload.addEventListener('progress', (event) => { |
|||
if (event.lengthComputable) { |
|||
const percent = Math.round((event.loaded / event.total) * 100) |
|||
uploadProgress.value = percent |
|||
emit('progress', percent) |
|||
} |
|||
}) |
|||
|
|||
// 上传完成 |
|||
xhr.addEventListener('load', () => { |
|||
try { |
|||
const response = JSON.parse(xhr.responseText) |
|||
if (response.code === 1) { |
|||
ElMessage.success('上传成功') |
|||
emit('success', response.data.url, uploadFile) |
|||
resolve() |
|||
} else { |
|||
reject(new Error(response.msg || '上传失败')) |
|||
} |
|||
} catch (error) { |
|||
reject(new Error('响应解析失败')) |
|||
} |
|||
}) |
|||
|
|||
// 上传错误 |
|||
xhr.addEventListener('error', () => { |
|||
reject(new Error('网络错误,上传失败')) |
|||
}) |
|||
|
|||
// 执行上传 |
|||
xhr.open('POST', props.fallbackUrl, true) |
|||
xhr.setRequestHeader('token', getToken() || '') |
|||
xhr.send(formData) |
|||
}) |
|||
} |
|||
|
|||
// 暴露方法给父组件 |
|||
defineExpose({ |
|||
clearFiles: () => { |
|||
uploadRef.value?.clearFiles() |
|||
} |
|||
}) |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.direct-upload-wrapper { |
|||
display: inline-block; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,255 @@ |
|||
/** |
|||
* 对象存储直传工具类 |
|||
* 支持腾讯云COS和阿里云OSS |
|||
*/ |
|||
|
|||
import { getToken } from '@/utils/common' |
|||
import { ElMessage } from 'element-plus' |
|||
|
|||
export interface UploadCredentials { |
|||
storage_type: 'tencent' | 'aliyun' |
|||
upload_url: string |
|||
credentials: any |
|||
file_path: string |
|||
domain: string |
|||
max_size: number |
|||
expired: number |
|||
} |
|||
|
|||
export interface UploadResult { |
|||
success: boolean |
|||
url: string |
|||
error?: string |
|||
} |
|||
|
|||
export interface UploadOptions { |
|||
file: File |
|||
fileType: 'image' | 'video' | 'document' |
|||
onProgress?: (percent: number) => void |
|||
onSuccess?: (result: UploadResult) => void |
|||
onError?: (error: string) => void |
|||
} |
|||
|
|||
/** |
|||
* 对象存储直传类 |
|||
*/ |
|||
export class DirectUpload { |
|||
private baseUrl: string |
|||
|
|||
constructor() { |
|||
this.baseUrl = import.meta.env.VITE_IMG_DOMAIN || 'http://localhost:20080' |
|||
} |
|||
|
|||
/** |
|||
* 获取上传凭证 |
|||
*/ |
|||
private async getUploadCredentials(fileType: string, fileName?: string): Promise<UploadCredentials> { |
|||
const params = new URLSearchParams({ |
|||
file_type: fileType |
|||
}) |
|||
if (fileName) { |
|||
params.append('file_name', fileName) |
|||
} |
|||
|
|||
const response = await fetch(`${this.baseUrl}/adminapi/sys/direct/credentials?${params}`, { |
|||
method: 'GET', |
|||
headers: { |
|||
'token': getToken() || '', |
|||
'Content-Type': 'application/json' |
|||
} |
|||
}) |
|||
|
|||
const result = await response.json() |
|||
if (result.code !== 1) { |
|||
throw new Error(result.msg || '获取上传凭证失败') |
|||
} |
|||
|
|||
return result.data |
|||
} |
|||
|
|||
/** |
|||
* 执行直传上传 |
|||
*/ |
|||
async upload(options: UploadOptions): Promise<UploadResult> { |
|||
const { file, fileType, onProgress, onSuccess, onError } = options |
|||
|
|||
try { |
|||
// 1. 获取上传凭证
|
|||
const credentials = await this.getUploadCredentials(fileType, file.name) |
|||
|
|||
// 2. 验证文件大小
|
|||
if (credentials.max_size > 0 && file.size > credentials.max_size) { |
|||
const maxSizeMB = Math.round(credentials.max_size / 1024 / 1024) |
|||
throw new Error(`文件大小不能超过 ${maxSizeMB}MB`) |
|||
} |
|||
|
|||
// 3. 根据存储类型执行上传
|
|||
let uploadResult: UploadResult |
|||
if (credentials.storage_type === 'tencent') { |
|||
uploadResult = await this.uploadToTencent(file, credentials, onProgress) |
|||
} else if (credentials.storage_type === 'aliyun') { |
|||
uploadResult = await this.uploadToAliyun(file, credentials, onProgress) |
|||
} else { |
|||
throw new Error('不支持的存储类型') |
|||
} |
|||
|
|||
// 4. 上传成功回调
|
|||
if (uploadResult.success && onSuccess) { |
|||
onSuccess(uploadResult) |
|||
} |
|||
|
|||
return uploadResult |
|||
} catch (error) { |
|||
const errorMsg = error instanceof Error ? error.message : '上传失败' |
|||
if (onError) { |
|||
onError(errorMsg) |
|||
} |
|||
return { |
|||
success: false, |
|||
url: '', |
|||
error: errorMsg |
|||
} |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 腾讯云COS直传 |
|||
*/ |
|||
private async uploadToTencent( |
|||
file: File, |
|||
credentials: UploadCredentials, |
|||
onProgress?: (percent: number) => void |
|||
): Promise<UploadResult> { |
|||
return new Promise((resolve, reject) => { |
|||
const formData = new FormData() |
|||
|
|||
// 生成文件路径(替换模板中的${filename})
|
|||
const filePath = credentials.file_path.replace('${filename}', file.name) |
|||
|
|||
// 添加腾讯云COS必需的字段
|
|||
formData.append('key', filePath) |
|||
formData.append('policy', credentials.credentials.policy) |
|||
formData.append('q-sign-algorithm', credentials.credentials['q-sign-algorithm']) |
|||
formData.append('q-ak', credentials.credentials['q-ak']) |
|||
formData.append('q-key-time', credentials.credentials['q-key-time']) |
|||
formData.append('q-signature', credentials.credentials['q-signature']) |
|||
formData.append('file', file) |
|||
|
|||
const xhr = new XMLHttpRequest() |
|||
|
|||
// 上传进度
|
|||
if (onProgress) { |
|||
xhr.upload.addEventListener('progress', (event) => { |
|||
if (event.lengthComputable) { |
|||
const percent = Math.round((event.loaded / event.total) * 100) |
|||
onProgress(percent) |
|||
} |
|||
}) |
|||
} |
|||
|
|||
// 上传完成
|
|||
xhr.addEventListener('load', () => { |
|||
if (xhr.status === 204 || xhr.status === 200) { |
|||
const fileUrl = `${credentials.domain}/${filePath}` |
|||
resolve({ |
|||
success: true, |
|||
url: fileUrl |
|||
}) |
|||
} else { |
|||
reject(new Error('上传失败,请重试')) |
|||
} |
|||
}) |
|||
|
|||
// 上传错误
|
|||
xhr.addEventListener('error', () => { |
|||
reject(new Error('网络错误,上传失败')) |
|||
}) |
|||
|
|||
// 执行上传
|
|||
xhr.open('POST', credentials.upload_url, true) |
|||
xhr.send(formData) |
|||
}) |
|||
} |
|||
|
|||
/** |
|||
* 阿里云OSS直传 |
|||
*/ |
|||
private async uploadToAliyun( |
|||
file: File, |
|||
credentials: UploadCredentials, |
|||
onProgress?: (percent: number) => void |
|||
): Promise<UploadResult> { |
|||
return new Promise((resolve, reject) => { |
|||
const formData = new FormData() |
|||
|
|||
// 生成文件路径(替换模板中的${filename})
|
|||
const filePath = credentials.file_path.replace('${filename}', file.name) |
|||
|
|||
// 添加阿里云OSS必需的字段
|
|||
formData.append('OSSAccessKeyId', credentials.credentials.OSSAccessKeyId) |
|||
formData.append('policy', credentials.credentials.policy) |
|||
formData.append('signature', credentials.credentials.signature) |
|||
formData.append('key', filePath) |
|||
formData.append('success_action_status', credentials.credentials.success_action_status) |
|||
formData.append('file', file) |
|||
|
|||
const xhr = new XMLHttpRequest() |
|||
|
|||
// 上传进度
|
|||
if (onProgress) { |
|||
xhr.upload.addEventListener('progress', (event) => { |
|||
if (event.lengthComputable) { |
|||
const percent = Math.round((event.loaded / event.total) * 100) |
|||
onProgress(percent) |
|||
} |
|||
}) |
|||
} |
|||
|
|||
// 上传完成
|
|||
xhr.addEventListener('load', () => { |
|||
if (xhr.status === 200) { |
|||
const fileUrl = `${credentials.domain}/${filePath}` |
|||
resolve({ |
|||
success: true, |
|||
url: fileUrl |
|||
}) |
|||
} else { |
|||
reject(new Error('上传失败,请重试')) |
|||
} |
|||
}) |
|||
|
|||
// 上传错误
|
|||
xhr.addEventListener('error', () => { |
|||
reject(new Error('网络错误,上传失败')) |
|||
}) |
|||
|
|||
// 执行上传
|
|||
xhr.open('POST', credentials.upload_url, true) |
|||
xhr.send(formData) |
|||
}) |
|||
} |
|||
} |
|||
|
|||
// 导出单例实例
|
|||
export const directUpload = new DirectUpload() |
|||
|
|||
/** |
|||
* 便捷的上传方法 |
|||
*/ |
|||
export async function uploadFile(options: UploadOptions): Promise<UploadResult> { |
|||
return directUpload.upload(options) |
|||
} |
|||
|
|||
/** |
|||
* 检查是否支持直传 |
|||
*/ |
|||
export async function isDirectUploadSupported(): Promise<boolean> { |
|||
try { |
|||
const directUploadInstance = new DirectUpload() |
|||
await directUploadInstance.getUploadCredentials('image') |
|||
return true |
|||
} catch (error) { |
|||
console.warn('Direct upload not supported:', error) |
|||
return false |
|||
} |
|||
} |
|||
@ -0,0 +1,59 @@ |
|||
<?php |
|||
// +---------------------------------------------------------------------- |
|||
// | Niucloud-admin 企业快速开发的多应用管理平台 |
|||
// +---------------------------------------------------------------------- |
|||
// | 官方网址:https://www.niucloud.com |
|||
// +---------------------------------------------------------------------- |
|||
// | niucloud团队 版权所有 开源版本可自由商用 |
|||
// +---------------------------------------------------------------------- |
|||
// | Author: Niucloud Team |
|||
// +---------------------------------------------------------------------- |
|||
|
|||
namespace app\adminapi\controller\upload; |
|||
|
|||
use app\service\admin\upload\DirectUploadService; |
|||
use core\base\BaseAdminController; |
|||
use think\Response; |
|||
|
|||
/** |
|||
* 对象存储直传控制器 |
|||
*/ |
|||
class DirectUpload extends BaseAdminController |
|||
{ |
|||
/** |
|||
* 获取对象存储直传临时凭证 |
|||
* @return Response |
|||
*/ |
|||
public function getUploadCredentials() |
|||
{ |
|||
$data = $this->request->params([ |
|||
['file_type', 'image'], // 文件类型:image、video、document |
|||
['file_name', ''], // 文件名(可选) |
|||
]); |
|||
|
|||
$service = new DirectUploadService(); |
|||
$result = $service->getUploadCredentials($data['file_type'], $data['file_name']); |
|||
|
|||
return success($result); |
|||
} |
|||
|
|||
/** |
|||
* 确认文件上传完成,将文件信息保存到数据库 |
|||
* @return Response |
|||
*/ |
|||
public function confirmUpload() |
|||
{ |
|||
$data = $this->request->params([ |
|||
['file_url', ''], // 文件URL |
|||
['file_name', ''], // 文件名 |
|||
['file_size', 0], // 文件大小 |
|||
['file_type', 'image'], // 文件类型 |
|||
['storage_type', 'tencent'], // 存储类型 |
|||
]); |
|||
|
|||
$service = new DirectUploadService(); |
|||
$result = $service->confirmUpload($data); |
|||
|
|||
return success($result); |
|||
} |
|||
} |
|||
@ -0,0 +1,237 @@ |
|||
<?php |
|||
// +---------------------------------------------------------------------- |
|||
// | Niucloud-admin 企业快速开发的多应用管理平台 |
|||
// +---------------------------------------------------------------------- |
|||
// | 官方网址:https://www.niucloud.com |
|||
// +---------------------------------------------------------------------- |
|||
// | niucloud团队 版权所有 开源版本可自由商用 |
|||
// +---------------------------------------------------------------------- |
|||
// | Author: Niucloud Team |
|||
// +---------------------------------------------------------------------- |
|||
|
|||
namespace app\service\admin\upload; |
|||
|
|||
use app\service\core\sys\CoreConfigService; |
|||
use core\base\BaseAdminService; |
|||
use core\exception\AdminException; |
|||
|
|||
/** |
|||
* 对象存储直传服务类 |
|||
*/ |
|||
class DirectUploadService extends BaseAdminService |
|||
{ |
|||
/** |
|||
* 获取上传凭证 |
|||
* @param string $file_type 文件类型 |
|||
* @param string $file_name 文件名 |
|||
* @return array |
|||
*/ |
|||
public function getUploadCredentials($file_type = 'image', $file_name = '') |
|||
{ |
|||
// 获取存储配置 |
|||
$config_data = (new CoreConfigService())->getConfig('STORAGE'); |
|||
if (empty($config_data) || empty($config_data['value'])) { |
|||
throw new AdminException('存储配置未设置'); |
|||
} |
|||
|
|||
$storage_config = $config_data['value']; |
|||
if (is_string($storage_config)) { |
|||
$storage_config = json_decode($storage_config, true); |
|||
} |
|||
|
|||
if (empty($storage_config)) { |
|||
throw new AdminException('存储配置格式错误'); |
|||
} |
|||
|
|||
$default_storage = $storage_config['default'] ?? 'local'; |
|||
if ($default_storage == 'local') { |
|||
throw new AdminException('本地存储不支持直传'); |
|||
} |
|||
|
|||
if (!isset($storage_config[$default_storage])) { |
|||
throw new AdminException('存储配置错误'); |
|||
} |
|||
|
|||
$config = $storage_config[$default_storage]; |
|||
|
|||
// 生成文件路径 |
|||
$file_path = $this->generateFilePath($file_type, $file_name); |
|||
|
|||
// 根据不同存储类型获取凭证 |
|||
switch ($default_storage) { |
|||
case 'tencent': |
|||
return $this->getTencentCredentials($config, $file_path, $file_type); |
|||
case 'aliyun': |
|||
return $this->getAliyunCredentials($config, $file_path, $file_type); |
|||
default: |
|||
throw new AdminException('不支持的存储类型'); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 获取腾讯云COS直传凭证 |
|||
* @param array $config 配置信息 |
|||
* @param string $file_path 文件路径 |
|||
* @param string $file_type 文件类型 |
|||
* @return array |
|||
*/ |
|||
private function getTencentCredentials($config, $file_path, $file_type) |
|||
{ |
|||
// 检查必要的配置 |
|||
$required_keys = ['bucket', 'region', 'access_key', 'secret_key']; |
|||
foreach ($required_keys as $key) { |
|||
if (empty($config[$key])) { |
|||
throw new AdminException("腾讯云配置缺少必要参数: {$key}"); |
|||
} |
|||
} |
|||
|
|||
// 生成策略 |
|||
$expired = time() + 3600; // 1小时过期 |
|||
$policy = [ |
|||
'expiration' => gmdate('Y-m-d\TH:i:s.000\Z', $expired), |
|||
'conditions' => [ |
|||
['bucket' => $config['bucket']], |
|||
['starts-with' => '$key', $file_path] |
|||
] |
|||
]; |
|||
|
|||
// 根据文件类型设置大小限制 |
|||
$max_size = $this->getMaxFileSize($file_type); |
|||
if ($max_size > 0) { |
|||
$policy['conditions'][] = ['content-length-range', 0, $max_size]; |
|||
} |
|||
|
|||
$policy_encoded = base64_encode(json_encode($policy)); |
|||
$signature = hash_hmac('sha1', $policy_encoded, $config['secret_key'], true); |
|||
$signature_encoded = base64_encode($signature); |
|||
|
|||
return [ |
|||
'storage_type' => 'tencent', |
|||
'upload_url' => "https://{$config['bucket']}.cos.{$config['region']}.myqcloud.com", |
|||
'credentials' => [ |
|||
'policy' => $policy_encoded, |
|||
'q-sign-algorithm' => 'sha1', |
|||
'q-ak' => $config['access_key'], |
|||
'q-key-time' => time() . ';' . $expired, |
|||
'q-signature' => $signature_encoded, |
|||
], |
|||
'file_path' => $file_path, |
|||
'domain' => $config['domain'] ?? "https://{$config['bucket']}.cos.{$config['region']}.myqcloud.com", |
|||
'max_size' => $max_size, |
|||
'expired' => $expired |
|||
]; |
|||
} |
|||
|
|||
/** |
|||
* 获取阿里云OSS直传凭证 |
|||
* @param array $config 配置信息 |
|||
* @param string $file_path 文件路径 |
|||
* @param string $file_type 文件类型 |
|||
* @return array |
|||
*/ |
|||
private function getAliyunCredentials($config, $file_path, $file_type) |
|||
{ |
|||
// 检查必要的配置 |
|||
$required_keys = ['bucket', 'endpoint', 'access_key', 'secret_key']; |
|||
foreach ($required_keys as $key) { |
|||
if (empty($config[$key])) { |
|||
throw new AdminException("阿里云配置缺少必要参数: {$key}"); |
|||
} |
|||
} |
|||
|
|||
$expired = time() + 3600; // 1小时过期 |
|||
$dir = dirname($file_path) . '/'; |
|||
|
|||
// 生成策略 |
|||
$policy = [ |
|||
'expiration' => gmdate('Y-m-d\TH:i:s.000\Z', $expired), |
|||
'conditions' => [ |
|||
['starts-with' => '$key', $dir], |
|||
] |
|||
]; |
|||
|
|||
// 根据文件类型设置大小限制 |
|||
$max_size = $this->getMaxFileSize($file_type); |
|||
if ($max_size > 0) { |
|||
$policy['conditions'][] = ['content-length-range', 0, $max_size]; |
|||
} |
|||
|
|||
$policy_encoded = base64_encode(json_encode($policy)); |
|||
$signature = base64_encode(hash_hmac('sha1', $policy_encoded, $config['secret_key'], true)); |
|||
|
|||
return [ |
|||
'storage_type' => 'aliyun', |
|||
'upload_url' => "https://{$config['bucket']}.{$config['endpoint']}", |
|||
'credentials' => [ |
|||
'OSSAccessKeyId' => $config['access_key'], |
|||
'policy' => $policy_encoded, |
|||
'signature' => $signature, |
|||
'key' => $file_path, |
|||
'success_action_status' => '200', |
|||
], |
|||
'file_path' => $file_path, |
|||
'domain' => $config['domain'] ?? "https://{$config['bucket']}.{$config['endpoint']}", |
|||
'max_size' => $max_size, |
|||
'expired' => $expired |
|||
]; |
|||
} |
|||
|
|||
/** |
|||
* 生成文件路径 |
|||
* @param string $file_type 文件类型 |
|||
* @param string $file_name 文件名 |
|||
* @return string |
|||
*/ |
|||
private function generateFilePath($file_type, $file_name = '') |
|||
{ |
|||
$type_dir_map = [ |
|||
'image' => 'upload/attachment/image', |
|||
'video' => 'upload/attachment/video', |
|||
'document' => 'upload/attachment/document' |
|||
]; |
|||
|
|||
$dir = $type_dir_map[$file_type] ?? 'upload/attachment/file'; |
|||
$date_dir = date('Y/m/d'); |
|||
|
|||
if (empty($file_name)) { |
|||
$file_name = uniqid() . '_${filename}'; // ${filename} 将被前端替换 |
|||
} |
|||
|
|||
return $dir . '/' . $date_dir . '/' . $file_name; |
|||
} |
|||
|
|||
/** |
|||
* 根据文件类型获取最大文件大小 |
|||
* @param string $file_type 文件类型 |
|||
* @return int 字节数,0表示不限制 |
|||
*/ |
|||
private function getMaxFileSize($file_type) |
|||
{ |
|||
$size_map = [ |
|||
'image' => 10 * 1024 * 1024, // 10MB |
|||
'video' => 500 * 1024 * 1024, // 500MB |
|||
'document' => 50 * 1024 * 1024, // 50MB |
|||
]; |
|||
|
|||
return $size_map[$file_type] ?? 10 * 1024 * 1024; |
|||
} |
|||
|
|||
/** |
|||
* 确认上传完成 |
|||
* @param array $data 文件信息 |
|||
* @return array |
|||
*/ |
|||
public function confirmUpload($data) |
|||
{ |
|||
// 这里可以将文件信息保存到附件表,供后续管理使用 |
|||
// 暂时直接返回文件URL,实际项目中可以根据需要保存到数据库 |
|||
|
|||
return [ |
|||
'url' => $data['file_url'], |
|||
'name' => $data['file_name'], |
|||
'size' => $data['file_size'], |
|||
'type' => $data['file_type'], |
|||
'storage_type' => $data['storage_type'] |
|||
]; |
|||
} |
|||
} |
|||
@ -0,0 +1,72 @@ |
|||
# 智慧教务系统数据库文档 |
|||
|
|||
## 概述 |
|||
本目录包含智慧教务系统所有数据表的功能用途文档,共计 **122个** 数据表的详细说明文档。 |
|||
|
|||
## 文档结构 |
|||
每个数据表文档包含以下内容: |
|||
- **表概述**: 表名和功能描述 |
|||
- **字段说明**: 详细的字段信息,包括类型、约束、注释等 |
|||
- **功能用途**: 主要功能和业务场景说明 |
|||
- **关联关系**: 与其他表的直接和间接关联关系 |
|||
- **索引建议**: 基于字段特点的索引优化建议 |
|||
- **注意事项**: 重要的使用注意事项和最佳实践 |
|||
|
|||
## 核心业务表 |
|||
### 基础数据表 |
|||
- `school_campus.md` - 校区信息管理表 |
|||
- `school_sys_user.md` - 系统用户管理表 |
|||
- `school_sys_role.md` - 角色权限管理表 |
|||
- `school_sys_menu.md` - 菜单权限管理表 |
|||
|
|||
### 学员管理表 |
|||
- `school_student.md` - 学员信息管理表 |
|||
- `school_class.md` - 班级管理表 |
|||
- `school_class_personnel_rel.md` - 班级人员关系表 |
|||
|
|||
### 课程管理表 |
|||
- `school_course.md` - 课程信息管理表 |
|||
- `school_schedule.md` - 课程安排表 |
|||
- `school_attendance.md` - 考勤记录表 |
|||
|
|||
### 财务管理表 |
|||
- `school_fee.md` - 费用管理表 |
|||
- `school_account_log.md` - 账单日志表 |
|||
- `school_campus_pay.md` - 校区支付配置表 |
|||
|
|||
### 系统管理表 |
|||
- `school_addon.md` - 插件管理表 |
|||
- `school_sys_config.md` - 系统配置表 |
|||
- `school_sys_cron_task.md` - 定时任务表 |
|||
|
|||
## 文档使用说明 |
|||
|
|||
### 开发人员 |
|||
1. 在进行数据库设计时,参考相关表的字段说明和关联关系 |
|||
2. 根据索引建议优化数据库查询性能 |
|||
3. 遵循注意事项中的最佳实践 |
|||
|
|||
### 运维人员 |
|||
1. 了解表的功能用途,合理规划数据备份策略 |
|||
2. 根据关联关系分析数据依赖,避免误删重要数据 |
|||
3. 参考索引建议进行数据库性能优化 |
|||
|
|||
### 产品经理 |
|||
1. 通过功能用途和业务场景了解系统数据结构 |
|||
2. 基于表关联关系理解业务流程 |
|||
3. 为新功能设计提供数据支撑 |
|||
|
|||
## 文档维护 |
|||
- 文档生成时间: 2025年12月 |
|||
- 数据库版本: MySQL 8.0 |
|||
- 文档状态: 已完成所有表的详细说明 |
|||
- 更新频率: 随数据库结构变更同步更新 |
|||
|
|||
## 注意事项 |
|||
1. 所有文档基于当前数据库结构生成,如有结构变更需要同步更新文档 |
|||
2. 关联关系分析基于字段命名和业务逻辑推断,实际使用时请结合具体业务场景 |
|||
3. 索引建议仅供参考,实际创建时需要结合具体的查询场景和数据量 |
|||
4. 涉及个人隐私的表(如学员信息)需要严格遵循数据保护法规 |
|||
|
|||
## 联系方式 |
|||
如有文档相关问题或建议,请联系系统开发团队。 |
|||
@ -0,0 +1,95 @@ |
|||
# role_menu_permissions 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: role_menu_permissions |
|||
**功能**: 角色菜单权限关联表,用于管理系统中角色与菜单之间的权限关联关系,实现基于角色的访问控制(RBAC),支持细粒度的菜单权限管理和动态权限分配,为系统安全和权限控制提供核心数据支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
role_id int NULL NO MUL NULL select,insert,update,references 角色ID |
|||
menu_id int NULL NO MUL NULL select,insert,update,references 菜单ID |
|||
is_enabled tinyint(1) NULL YES 1 select,insert,update,references 是否启用 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **角色菜单权限关联**: 建立角色与菜单之间的权限关联关系 |
|||
- **权限控制**: 控制不同角色对系统菜单的访问权限 |
|||
- **权限启用管理**: 通过is_enabled字段控制权限的启用和禁用 |
|||
- **细粒度权限**: 实现菜单级别的精细化权限控制 |
|||
- **权限继承**: 支持角色权限的继承和覆盖机制 |
|||
- **动态权限**: 支持运行时动态调整角色菜单权限 |
|||
- **权限审计**: 记录权限分配的时间和变更历史 |
|||
- **批量权限**: 支持批量分配和回收角色权限 |
|||
- **权限模板**: 为角色权限分配提供模板支持 |
|||
|
|||
### 业务场景 |
|||
- **权限分配**: 为新创建的角色分配菜单访问权限 |
|||
- **权限调整**: 根据业务需要调整角色的菜单权限 |
|||
- **权限回收**: 回收离职人员或角色变更的菜单权限 |
|||
- **权限审核**: 定期审核和清理不必要的权限分配 |
|||
- **功能上线**: 新功能菜单上线时的权限分配 |
|||
- **权限继承**: 角色层级变化时的权限继承处理 |
|||
- **临时权限**: 临时授予特定角色某些菜单权限 |
|||
- **权限模板**: 基于角色模板快速分配权限 |
|||
- **合规检查**: 满足权限管理的合规性要求 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_sys_role`: 系统角色表 (role_id外键关联) |
|||
- `school_sys_menu`: 系统菜单表 (menu_id外键关联) |
|||
- `school_personnel`: 人员信息表 (通过角色关联用户) |
|||
- `sys_log`: 系统日志表 (权限变更日志) |
|||
- `school_sys_config`: 系统配置表 (权限相关配置) |
|||
- `school_campus`: 校区信息表 (数据权限范围) |
|||
|
|||
### 关联说明 |
|||
- **角色关联**: role_id关联school_sys_role表,确定权限归属角色 |
|||
- **菜单关联**: menu_id关联school_sys_menu表,确定可访问的菜单 |
|||
- **用户关联**: 通过角色间接关联用户,实现用户菜单权限控制 |
|||
- **日志关联**: 权限变更操作记录到系统日志中 |
|||
- **配置关联**: 权限相关的系统配置参数 |
|||
- **数据权限**: 结合校区等信息实现数据级权限控制 |
|||
- **层级关联**: 支持菜单层级权限的继承和控制 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- role_id (角色权限查询) |
|||
- menu_id (菜单权限查询) |
|||
- **业务索引**: |
|||
- is_enabled (启用状态查询) |
|||
- **复合索引**: |
|||
- (role_id, menu_id) (角色菜单权限唯一性) |
|||
- (role_id, is_enabled) (角色启用权限查询) |
|||
- (menu_id, is_enabled) (菜单启用权限查询) |
|||
- (role_id, menu_id, is_enabled) (完整权限查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **权限唯一性**: (role_id, menu_id)组合应保证唯一性,避免重复权限记录 |
|||
- **外键完整性**: role_id和menu_id必须在对应的表中存在 |
|||
- **权限一致性**: 权限变更时需要同步更新相关缓存和会话 |
|||
- **启用状态**: is_enabled字段变更需要实时生效到用户权限 |
|||
- **权限继承**: 角色层级变化时需要重新计算权限继承关系 |
|||
- **批量操作**: 批量权限分配时需要保证事务一致性 |
|||
- **权限验证**: 菜单访问时需要验证对应的权限记录 |
|||
- **软删除**: 建议使用软删除而非物理删除权限记录 |
|||
- **权限缓存**: 频繁访问的权限信息建议使用缓存机制 |
|||
- **审计日志**: 权限变更操作需要记录详细的审计日志 |
|||
- **默认权限**: 新角色创建时需要分配默认的基础权限 |
|||
- **权限回收**: 角色删除时需要同步清理相关权限记录 |
|||
- **数据完整性**: 删除角色或菜单时需要检查权限依赖关系 |
|||
- **权限模板**: 建议建立权限模板机制简化权限分配 |
|||
- **最小权限**: 遵循最小权限原则,只分配必要的菜单权限 |
|||
- **权限监控**: 建立权限使用监控,及时发现异常权限访问 |
|||
- **时效性**: 权限变更需要及时生效,避免权限延迟 |
|||
@ -0,0 +1,97 @@ |
|||
# school_account_log 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_account_log |
|||
**功能**: 账户日志管理表,负责记录教务系统中的各种账户交易日志,包括支付、退款、转账等财务操作的详细记录 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
type varchar(255) utf8mb4_general_ci NO pay select,insert,update,references 账单类型pay,refund,transfer |
|||
money decimal(10,2) NULL NO 0.00 select,insert,update,references 交易金额 |
|||
trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 对应类型交易单号 |
|||
create_time varchar(255) utf8mb4_general_ci NO 0 select,insert,update,references 添加时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **交易日志记录**: 记录所有账户相关的交易操作日志 |
|||
- **交易类型管理**: 区分支付、退款、转账等不同类型的交易 |
|||
- **金额追踪**: 记录每笔交易的具体金额信息 |
|||
- **交易单号关联**: 通过交易单号关联具体的业务订单 |
|||
- **时间记录**: 记录交易发生的准确时间 |
|||
- **审计追踪**: 提供完整的财务操作审计轨迹 |
|||
- **数据统计**: 支持各种财务数据的统计和分析 |
|||
- **异常监控**: 监控异常交易和可疑操作 |
|||
- **对账支持**: 为财务对账提供详细数据支持 |
|||
|
|||
### 业务场景 |
|||
- **支付记录**: 记录学员缴费、课程购买等支付操作 |
|||
- **退款处理**: 记录退课、退费等退款操作 |
|||
- **转账管理**: 记录账户间的资金转移操作 |
|||
- **财务对账**: 与第三方支付平台进行对账 |
|||
- **审计检查**: 财务审计时提供详细的交易记录 |
|||
- **异常排查**: 排查账户异常和交易问题 |
|||
- **报表生成**: 生成各种财务报表和统计数据 |
|||
- **风控监控**: 监控可疑交易和风险操作 |
|||
- **数据分析**: 分析收入趋势和交易模式 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_pay`: 支付表 (支付交易关联) |
|||
- `school_order_table`: 订单表 (订单交易关联) |
|||
- `school_contract`: 合同表 (合同交易关联) |
|||
- `school_member`: 会员表 (会员交易关联) |
|||
- `school_refund`: 退款表 (退款交易关联) |
|||
- `school_transfer`: 转账表 (转账交易关联) |
|||
- `school_personnel`: 人员表 (操作人员关联) |
|||
- `school_campus`: 校区表 (校区财务关联) |
|||
|
|||
### 关联说明 |
|||
- **支付关联**: trade_no关联支付表的支付单号,记录支付日志 |
|||
- **订单关联**: 通过交易单号关联订单,追踪订单支付状态 |
|||
- **合同关联**: 记录合同相关的收款和退款操作 |
|||
- **会员关联**: 记录会员的充值、消费、退款等操作 |
|||
- **退款关联**: trade_no关联退款单号,记录退款日志 |
|||
- **转账关联**: 记录账户间的转账操作日志 |
|||
- **人员关联**: 记录操作人员,便于责任追踪 |
|||
- **校区关联**: 区分不同校区的财务操作 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: |
|||
- trade_no (交易单号唯一) |
|||
- **业务索引**: |
|||
- type (交易类型查询) |
|||
- money (金额查询) |
|||
- create_time (时间查询) |
|||
- **复合索引**: |
|||
- (type, create_time) (类型时间查询) |
|||
- (trade_no, type) (交易单号类型查询) |
|||
- (create_time, type) (时间类型排序查询) |
|||
- **范围索引**: |
|||
- money (金额范围查询) |
|||
- create_time (时间范围查询) |
|||
|
|||
## 注意事项 |
|||
- **交易单号唯一性**: trade_no必须唯一,避免重复记录 |
|||
- **金额精度**: money字段使用decimal(10,2)确保金额精度 |
|||
- **交易类型**: type字段需要严格控制枚举值(pay、refund、transfer) |
|||
- **时间格式**: create_time字段格式需要统一和规范 |
|||
- **数据完整性**: 所有字段都不能为空,确保日志完整性 |
|||
- **只增不删**: 日志数据原则上只能新增,不能修改或删除 |
|||
- **实时记录**: 交易发生时必须立即记录日志 |
|||
- **异常处理**: 记录日志失败时需要有补偿机制 |
|||
- **数据备份**: 财务日志数据需要定期备份 |
|||
- **访问控制**: 日志数据需要严格的访问权限控制 |
|||
- **审计要求**: 满足财务审计的相关要求 |
|||
- **性能优化**: 大量日志数据需要考虑查询性能 |
|||
- **数据归档**: 历史日志数据需要定期归档 |
|||
- **监控告警**: 异常交易需要及时告警 |
|||
- **对账机制**: 支持与外部系统的对账功能 |
|||
- **数据一致性**: 确保与业务表数据的一致性 |
|||
- **并发控制**: 高并发场景下的数据一致性保证 |
|||
@ -0,0 +1,107 @@ |
|||
# school_addon 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_addon |
|||
**功能**: 插件管理表,负责管理教务系统中的插件安装、配置、版本控制、状态管理等扩展功能模块 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
title varchar(40) utf8mb4_general_ci NO select,insert,update,references 插件名称 |
|||
icon varchar(255) utf8mb4_general_ci NO select,insert,update,references 插件图标 |
|||
key varchar(20) utf8mb4_general_ci NO select,insert,update,references 插件标识 |
|||
desc text utf8mb4_general_ci YES NULL select,insert,update,references 插件描述 |
|||
status tinyint NULL NO 1 select,insert,update,references 状态 |
|||
author varchar(40) utf8mb4_general_ci NO select,insert,update,references 作者 |
|||
version varchar(20) utf8mb4_general_ci NO select,insert,update,references 版本号 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
install_time int NULL NO 0 select,insert,update,references 安装时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
cover varchar(255) utf8mb4_general_ci NO select,insert,update,references 封面 |
|||
type varchar(255) utf8mb4_general_ci NO app select,insert,update,references 插件类型app,addon |
|||
support_app varchar(255) utf8mb4_general_ci NO select,insert,update,references 插件支持的应用空表示通用插件 |
|||
is_star tinyint NULL NO 1 select,insert,update,references 是否加星 |
|||
compile varchar(2000) utf8mb4_general_ci NO select,insert,update,references 编译端口 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **插件安装管理**: 管理插件的安装、卸载和重新安装 |
|||
- **版本控制**: 跟踪插件的版本信息和更新历史 |
|||
- **状态管理**: 控制插件的启用、禁用和运行状态 |
|||
- **插件信息**: 管理插件名称、描述、图标等基本信息 |
|||
- **作者管理**: 记录插件开发者和维护者信息 |
|||
- **类型分类**: 区分不同类型的插件(app、addon等) |
|||
- **应用支持**: 管理插件支持的应用范围 |
|||
- **编译配置**: 管理插件的编译端口和配置信息 |
|||
- **星标管理**: 支持插件的收藏和推荐功能 |
|||
|
|||
### 业务场景 |
|||
- **系统扩展**: 通过插件扩展系统功能和特性 |
|||
- **功能定制**: 根据业务需要安装特定功能插件 |
|||
- **版本升级**: 管理插件的版本更新和兼容性 |
|||
- **插件市场**: 支持插件的发布、下载和安装 |
|||
- **功能开关**: 通过启用/禁用控制插件功能 |
|||
- **系统集成**: 插件与核心系统的集成和配置 |
|||
- **开发调试**: 插件开发过程中的测试和调试 |
|||
- **性能优化**: 根据需要选择性加载插件 |
|||
- **安全管理**: 控制插件的安装权限和安全性 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_sys_config`: 系统配置表 (插件配置关联) |
|||
- `school_sys_menu`: 系统菜单表 (插件菜单关联) |
|||
- `school_sys_role`: 系统角色表 (插件权限关联) |
|||
- `sys_log`: 系统日志表 (插件操作日志) |
|||
- `school_personnel`: 人员表 (插件使用权限) |
|||
- `school_campus`: 校区表 (插件应用范围) |
|||
|
|||
### 关联说明 |
|||
- **配置关联**: 插件可能有专门的配置项存储在系统配置表中 |
|||
- **菜单关联**: 插件安装时可能添加新的菜单项 |
|||
- **权限关联**: 插件功能需要相应的角色权限控制 |
|||
- **日志关联**: 插件的安装、卸载、启用等操作记录在日志中 |
|||
- **用户关联**: 不同用户可能有不同的插件使用权限 |
|||
- **校区关联**: 插件可能只在特定校区启用或配置 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: |
|||
- key (插件标识唯一) |
|||
- **业务索引**: |
|||
- status (状态查询) |
|||
- type (类型查询) |
|||
- is_star (星标查询) |
|||
- author (作者查询) |
|||
- **复合索引**: |
|||
- (status, type) (有效插件类型查询) |
|||
- (type, support_app) (应用插件查询) |
|||
- (status, is_star) (推荐插件查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- install_time (安装时间查询) |
|||
- update_time (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **插件标识唯一性**: key字段必须唯一,避免插件标识冲突 |
|||
- **版本兼容性**: 插件版本需要与系统版本兼容 |
|||
- **状态一致性**: 插件状态变更需要同步更新相关配置 |
|||
- **安装顺序**: 某些插件可能有依赖关系,需要按顺序安装 |
|||
- **卸载检查**: 卸载插件前需要检查是否有其他插件依赖 |
|||
- **权限验证**: 插件安装和管理需要相应的管理权限 |
|||
- **数据备份**: 插件操作前建议备份相关数据 |
|||
- **编译配置**: compile字段存储编译相关配置,格式需要规范 |
|||
- **应用范围**: support_app字段控制插件的应用范围 |
|||
- **安全检查**: 插件安装前需要进行安全性检查 |
|||
- **资源管理**: 插件可能占用系统资源,需要监控 |
|||
- **配置迁移**: 插件更新时需要处理配置数据迁移 |
|||
- **错误处理**: 插件加载失败时需要有容错机制 |
|||
- **日志记录**: 插件操作需要详细的日志记录 |
|||
- **缓存清理**: 插件状态变更时需要清理相关缓存 |
|||
- **测试验证**: 插件安装后需要验证功能正常性 |
|||
- **回滚机制**: 插件更新失败时需要支持回滚 |
|||
- **文档维护**: 插件需要维护详细的使用文档 |
|||
@ -0,0 +1,91 @@ |
|||
# school_addon_log 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_addon_log |
|||
**功能**: 插件操作日志表,用于记录插件的安装、卸载、更新等操作历史,包括版本变更追踪、操作审计和故障排查支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
action varchar(40) utf8mb4_general_ci NO select,insert,update,references 操作类型 install 安装 uninstall 卸载 update 更新 |
|||
key varchar(20) utf8mb4_general_ci NO select,insert,update,references 插件标识 |
|||
from_version varchar(20) utf8mb4_general_ci NO select,insert,update,references 升级前的版本号 |
|||
to_version varchar(20) utf8mb4_general_ci NO select,insert,update,references 升级后的版本号 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **插件操作日志**: 记录插件的安装、卸载、更新等操作历史 |
|||
- **版本追踪**: 跟踪插件版本变更历史,记录升级前后版本号 |
|||
- **操作审计**: 提供插件操作的审计追踪和历史记录 |
|||
- **故障排查**: 为插件相关问题提供操作历史支持 |
|||
- **回滚支持**: 为插件回滚操作提供版本信息参考 |
|||
- **操作统计**: 统计插件的使用和更新频率 |
|||
- **合规记录**: 满足系统变更管理的合规性要求 |
|||
- **时间追踪**: 记录每次操作的具体时间 |
|||
- **插件标识**: 通过key字段唯一标识操作的插件 |
|||
|
|||
### 业务场景 |
|||
- **插件安装**: 记录新插件的安装操作和版本信息 |
|||
- **插件卸载**: 记录插件卸载操作,保留历史信息 |
|||
- **版本升级**: 记录插件版本升级的完整过程 |
|||
- **故障诊断**: 通过操作历史排查插件相关问题 |
|||
- **系统审计**: 定期审计插件变更操作 |
|||
- **回滚操作**: 基于历史记录进行插件版本回滚 |
|||
- **变更管理**: 管理和跟踪系统插件变更 |
|||
- **操作报告**: 生成插件操作统计报告 |
|||
- **合规检查**: 满足系统变更的合规性检查 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_addon`: 插件管理表 (key字段关联) |
|||
- `school_personnel`: 人员信息表 (操作人员关联) |
|||
- `school_sys_config`: 系统配置表 (插件配置关联) |
|||
- `sys_log`: 系统日志表 (操作日志关联) |
|||
- `school_campus`: 校区信息表 (操作范围关联) |
|||
|
|||
### 关联说明 |
|||
- **插件关联**: key字段关联school_addon表的插件标识 |
|||
- **操作人员**: 通过系统日志关联操作人员信息 |
|||
- **配置关联**: 插件操作可能涉及相关配置变更 |
|||
- **日志关联**: 与系统操作日志形成完整的审计链 |
|||
- **范围关联**: 插件操作可能限定在特定校区范围 |
|||
- **版本关联**: from_version和to_version形成版本变更链 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- key (插件标识查询) |
|||
- action (操作类型查询) |
|||
- from_version (源版本查询) |
|||
- to_version (目标版本查询) |
|||
- **复合索引**: |
|||
- (key, action) (插件操作类型查询) |
|||
- (key, create_time) (插件操作时间查询) |
|||
- (action, create_time) (操作类型时间查询) |
|||
- (key, from_version, to_version) (版本变更查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
|
|||
## 注意事项 |
|||
- **操作类型**: action字段限定为install、uninstall、update三种类型 |
|||
- **插件标识**: key字段必须与school_addon表中的插件标识保持一致 |
|||
- **版本格式**: from_version和to_version需要遵循版本号格式规范 |
|||
- **只增不删**: 日志记录应该只增不删,保持完整的操作历史 |
|||
- **时间精度**: create_time需要精确记录操作时间 |
|||
- **数据完整性**: 所有字段都不允许为空,确保日志完整性 |
|||
- **版本一致性**: 升级操作的to_version应该与实际安装版本一致 |
|||
- **操作原子性**: 插件操作和日志记录应该在同一事务中完成 |
|||
- **日志清理**: 建立合理的日志清理策略,避免数据过度膨胀 |
|||
- **权限控制**: 只有授权人员才能进行插件操作 |
|||
- **备份策略**: 重要插件操作前需要进行数据备份 |
|||
- **回滚验证**: 记录的版本信息需要支持插件回滚操作 |
|||
- **异常处理**: 操作失败时也需要记录相应的日志信息 |
|||
- **监控告警**: 建立插件操作的监控和异常告警机制 |
|||
- **审计要求**: 满足系统变更管理的审计要求 |
|||
- **性能考虑**: 大量日志查询时需要考虑性能优化 |
|||
@ -0,0 +1,86 @@ |
|||
# school_applet_site_version 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_applet_site_version |
|||
**功能**: 小程序站点版本管理表,负责管理教务系统中小程序的版本操作记录,包括版本下载、更新等操作的追踪和管理 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
version_id int NULL NO 0 select,insert,update,references 版本id |
|||
type varchar(20) utf8mb4_general_ci NO select,insert,update,references 小程序类型 |
|||
action varchar(20) utf8mb4_general_ci NO select,insert,update,references 操作方式 download 下载 upgrade 更新 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **版本操作记录**: 记录小程序版本的下载和更新操作 |
|||
- **小程序类型管理**: 区分不同类型的小程序版本操作 |
|||
- **操作追踪**: 跟踪版本操作的时间和类型 |
|||
- **版本关联**: 关联具体的版本ID进行操作记录 |
|||
- **操作统计**: 统计版本操作的频率和类型 |
|||
- **历史记录**: 保存版本操作的完整历史 |
|||
- **审计支持**: 为版本管理提供审计追踪 |
|||
- **时间管理**: 记录每次操作的具体时间 |
|||
- **操作分类**: 区分下载和更新两种主要操作类型 |
|||
|
|||
### 业务场景 |
|||
- **版本下载**: 记录小程序版本的下载操作 |
|||
- **版本更新**: 记录小程序版本的更新操作 |
|||
- **操作审计**: 审计小程序版本的操作历史 |
|||
- **使用统计**: 统计不同版本的使用情况 |
|||
- **问题排查**: 通过操作记录排查版本相关问题 |
|||
- **版本管理**: 管理小程序的版本生命周期 |
|||
- **操作监控**: 监控版本操作的频率和状态 |
|||
- **数据分析**: 分析版本操作的趋势和模式 |
|||
- **合规记录**: 满足版本管理的合规性要求 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_applet_version`: 小程序版本表 (version_id字段关联) |
|||
- `school_personnel`: 人员信息表 (操作人员关联) |
|||
- `school_campus`: 校区信息表 (操作范围关联) |
|||
- `school_sys_config`: 系统配置表 (小程序配置关联) |
|||
- `sys_log`: 系统日志表 (操作日志关联) |
|||
|
|||
### 关联说明 |
|||
- **版本关联**: version_id字段关联school_applet_version表的版本信息 |
|||
- **操作人员**: 通过系统日志关联具体的操作人员 |
|||
- **小程序类型**: type字段区分不同类型的小程序 |
|||
- **操作类型**: action字段区分下载和更新操作 |
|||
- **时间关联**: create_time记录操作的具体时间 |
|||
- **业务关联**: 与小程序管理业务流程紧密关联 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: version_id (版本关联查询) |
|||
- **业务索引**: |
|||
- type (小程序类型查询) |
|||
- action (操作类型查询) |
|||
- **复合索引**: |
|||
- (version_id, action) (版本操作查询) |
|||
- (type, action) (类型操作查询) |
|||
- (version_id, create_time) (版本时间查询) |
|||
- (action, create_time) (操作时间查询) |
|||
- **时间索引**: create_time (创建时间查询) |
|||
|
|||
## 注意事项 |
|||
- **版本ID完整性**: version_id必须关联到有效的小程序版本 |
|||
- **操作类型限制**: action字段限定为download和upgrade两种类型 |
|||
- **小程序类型**: type字段需要与系统支持的小程序类型保持一致 |
|||
- **时间精度**: create_time需要精确记录操作时间 |
|||
- **数据完整性**: 所有必填字段都不允许为空 |
|||
- **操作原子性**: 版本操作和记录插入应该在同一事务中完成 |
|||
- **重复操作**: 需要考虑同一版本的重复操作记录 |
|||
- **权限控制**: 只有授权人员才能进行版本操作 |
|||
- **日志清理**: 建立合理的操作记录清理策略 |
|||
- **性能优化**: 大量记录查询时需要考虑性能 |
|||
- **监控告警**: 建立版本操作的监控机制 |
|||
- **审计要求**: 满足版本管理的审计要求 |
|||
- **数据一致性**: 确保操作记录与实际版本状态一致 |
|||
- **异常处理**: 操作失败时的记录处理策略 |
|||
@ -0,0 +1,110 @@ |
|||
# school_applet_version 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_applet_version |
|||
**功能**: 小程序版本管理表,负责管理教务系统中小程序的版本信息,包括版本配置、状态管理、发布控制等核心功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
config varchar(255) utf8mb4_general_ci NO select,insert,update,references 配置信息 |
|||
type varchar(20) utf8mb4_general_ci NO select,insert,update,references 小程序类型 |
|||
desc text utf8mb4_general_ci YES NULL select,insert,update,references 插件描述 |
|||
status tinyint NULL NO 1 select,insert,update,references 状态 下架 上架 |
|||
uid varchar(40) utf8mb4_general_ci NO select,insert,update,references 发布者 |
|||
path varchar(255) utf8mb4_general_ci NO select,insert,update,references 小程序包地址 |
|||
version varchar(20) utf8mb4_general_ci NO select,insert,update,references 版本号 |
|||
version_num varchar(20) utf8mb4_general_ci NO select,insert,update,references 版本号数字(用于排序) |
|||
release_version varchar(20) utf8mb4_general_ci NO select,insert,update,references 发布线上版本号 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
delete_time int NULL NO 0 select,insert,update,references 删除时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **版本信息管理**: 管理小程序的版本号、配置信息和描述 |
|||
- **状态控制**: 控制小程序版本的上架和下架状态 |
|||
- **发布管理**: 管理小程序的发布版本和线上版本 |
|||
- **配置管理**: 存储小程序的配置信息和参数 |
|||
- **版本排序**: 通过版本号数字进行版本排序管理 |
|||
- **发布者管理**: 记录版本的发布者信息 |
|||
- **包路径管理**: 管理小程序包的存储路径 |
|||
- **类型分类**: 区分不同类型的小程序版本 |
|||
- **生命周期管理**: 管理版本的创建、更新和删除 |
|||
- **软删除支持**: 支持版本的逻辑删除和恢复 |
|||
|
|||
### 业务场景 |
|||
- **版本发布**: 发布新的小程序版本到系统 |
|||
- **版本更新**: 更新现有小程序版本的信息和配置 |
|||
- **版本下架**: 将有问题的版本下架处理 |
|||
- **版本回滚**: 回滚到之前的稳定版本 |
|||
- **版本审核**: 审核小程序版本的质量和合规性 |
|||
- **版本分发**: 向不同校区分发小程序版本 |
|||
- **版本监控**: 监控小程序版本的运行状态 |
|||
- **版本统计**: 统计版本的使用情况和性能 |
|||
- **版本维护**: 维护和优化小程序版本 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_applet_site_version`: 小程序站点版本表 (版本操作记录关联) |
|||
- `school_personnel`: 人员信息表 (发布者关联) |
|||
- `school_campus`: 校区信息表 (版本分发关联) |
|||
- `school_sys_config`: 系统配置表 (小程序配置关联) |
|||
- `school_addon`: 插件管理表 (小程序插件关联) |
|||
- `sys_log`: 系统日志表 (版本操作日志关联) |
|||
- `school_sys_attachment`: 附件表 (小程序包文件关联) |
|||
|
|||
### 关联说明 |
|||
- **操作记录**: school_applet_site_version表记录此表版本的操作历史 |
|||
- **发布者关联**: uid字段关联发布者的人员信息 |
|||
- **小程序类型**: type字段区分不同类型的小程序 |
|||
- **版本状态**: status字段控制版本的可用性 |
|||
- **包路径**: path字段关联小程序包的存储位置 |
|||
- **版本号管理**: version和version_num字段管理版本信息 |
|||
- **发布版本**: release_version字段管理线上发布版本 |
|||
- **配置关联**: config字段存储小程序的配置信息 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- type (小程序类型查询) |
|||
- status (状态查询) |
|||
- uid (发布者查询) |
|||
- version (版本号查询) |
|||
- release_version (发布版本查询) |
|||
- **复合索引**: |
|||
- (type, status) (类型状态查询) |
|||
- (uid, create_time) (发布者时间查询) |
|||
- (type, version) (类型版本查询) |
|||
- (status, create_time) (状态时间查询) |
|||
- (version_num, type) (版本排序查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- delete_time (删除时间查询) |
|||
- **全文索引**: desc (描述内容搜索) |
|||
|
|||
## 注意事项 |
|||
- **版本号格式**: version和version_num需要遵循统一的版本号格式规范 |
|||
- **状态一致性**: status字段变更需要与实际小程序状态保持一致 |
|||
- **发布者验证**: uid字段必须关联到有效的系统用户 |
|||
- **包路径有效性**: path字段必须指向有效的小程序包文件 |
|||
- **配置格式**: config字段需要遵循JSON格式规范 |
|||
- **版本唯一性**: 同类型小程序的版本号不能重复 |
|||
- **软删除机制**: 使用delete_time实现软删除,避免物理删除 |
|||
- **发布版本控制**: release_version变更需要经过审核流程 |
|||
- **权限控制**: 只有授权人员才能发布和管理版本 |
|||
- **版本回滚**: 版本回滚操作需要保留历史版本信息 |
|||
- **包文件管理**: 删除版本时需要同步处理相关的包文件 |
|||
- **依赖检查**: 删除版本前需要检查是否有其他组件依赖 |
|||
- **审计要求**: 版本变更操作需要记录完整的审计日志 |
|||
- **性能优化**: 大量版本查询时需要考虑缓存策略 |
|||
- **备份策略**: 重要版本需要建立备份和恢复机制 |
|||
- **监控告警**: 建立版本状态的监控和异常告警 |
|||
- **数据一致性**: 确保版本信息与实际部署状态一致 |
|||
- **版本清理**: 建立过期版本的清理策略 |
|||
@ -0,0 +1,98 @@ |
|||
# school_approval_config 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_approval_config |
|||
**功能**: 审批配置管理表,负责管理教务系统中各种业务流程的审批配置,包括审批流程模板、业务类型配置、状态控制等核心功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 配置ID |
|||
config_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 配置名称 |
|||
description text utf8mb4_general_ci YES NULL select,insert,update,references 配置描述 |
|||
status tinyint(1) NULL NO 1 select,insert,update,references 状态: 0-禁用, 1-启用 |
|||
creator_id int NULL NO NULL select,insert,update,references 创建人ID |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
business_type varchar(100) utf8mb4_general_ci YES NULL select,insert,update,references 业务类型标识 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **审批配置管理**: 管理系统中各种业务流程的审批配置 |
|||
- **业务类型分类**: 通过business_type字段区分不同业务的审批配置 |
|||
- **配置状态控制**: 通过status字段控制审批配置的启用和禁用 |
|||
- **配置描述**: 提供详细的配置说明和使用描述 |
|||
- **创建人追踪**: 记录配置的创建人员信息 |
|||
- **时间管理**: 记录配置的创建和修改时间 |
|||
- **配置模板**: 为不同业务提供审批流程模板 |
|||
- **动态配置**: 支持运行时动态调整审批配置 |
|||
- **配置继承**: 支持基于模板的配置继承机制 |
|||
|
|||
### 业务场景 |
|||
- **请假审批**: 配置员工请假的审批流程 |
|||
- **报销审批**: 配置费用报销的审批流程 |
|||
- **合同审批**: 配置合同签署的审批流程 |
|||
- **课程审批**: 配置课程安排的审批流程 |
|||
- **学员退费**: 配置学员退费的审批流程 |
|||
- **薪资调整**: 配置薪资变更的审批流程 |
|||
- **权限申请**: 配置系统权限申请的审批流程 |
|||
- **资源申请**: 配置教学资源申请的审批流程 |
|||
- **流程优化**: 根据业务需要优化审批流程配置 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_approval_process`: 审批流程表 (配置关联) |
|||
- `school_approval_config_node`: 审批配置节点表 (配置详情) |
|||
- `school_personnel`: 人员信息表 (creator_id外键关联) |
|||
- `school_approval_history`: 审批历史表 (配置使用记录) |
|||
- `school_approval_participants`: 审批参与者表 (审批人员) |
|||
- `school_campus`: 校区信息表 (配置范围) |
|||
- `sys_log`: 系统日志表 (配置变更日志) |
|||
|
|||
### 关联说明 |
|||
- **创建人关联**: creator_id关联school_personnel表,记录配置创建人 |
|||
- **流程关联**: 与审批流程表关联,定义具体的审批步骤 |
|||
- **节点关联**: 与配置节点表关联,定义审批流程的详细节点 |
|||
- **历史关联**: 审批历史记录使用的配置信息 |
|||
- **参与者关联**: 配置中定义的审批参与人员 |
|||
- **业务关联**: business_type关联具体的业务模块 |
|||
- **日志关联**: 配置变更操作记录到系统日志 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- creator_id (创建人查询) |
|||
- **业务索引**: |
|||
- business_type (业务类型查询) |
|||
- status (状态查询) |
|||
- config_name (配置名称查询) |
|||
- **复合索引**: |
|||
- (business_type, status) (业务启用配置查询) |
|||
- (creator_id, created_at) (创建人时间查询) |
|||
- (status, updated_at) (启用配置更新时间查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **配置名称唯一性**: config_name在同一business_type下应保证唯一性 |
|||
- **业务类型规范**: business_type需要遵循系统定义的业务类型标准 |
|||
- **状态一致性**: 配置状态变更需要同步更新相关审批流程 |
|||
- **创建人验证**: creator_id必须是有效的人员ID |
|||
- **配置完整性**: 配置禁用前需要检查是否有正在进行的审批流程 |
|||
- **描述规范**: description字段应提供清晰的配置说明 |
|||
- **权限控制**: 只有授权人员才能创建和修改审批配置 |
|||
- **配置备份**: 重要配置修改前需要备份原始配置 |
|||
- **依赖检查**: 删除配置前需要检查相关流程和历史记录 |
|||
- **版本管理**: 建议建立配置版本管理机制 |
|||
- **测试验证**: 新配置上线前需要进行充分测试 |
|||
- **文档维护**: 配置变更需要同步更新相关文档 |
|||
- **监控告警**: 建立配置使用情况的监控机制 |
|||
- **性能优化**: 频繁使用的配置建议使用缓存机制 |
|||
- **审计要求**: 配置变更需要满足审计合规要求 |
|||
- **回滚机制**: 建立配置变更的回滚机制 |
|||
- **通知机制**: 配置变更需要通知相关使用人员 |
|||
@ -0,0 +1,98 @@ |
|||
# school_approval_config_node 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_approval_config_node |
|||
**功能**: 审批配置节点表,用于定义和管理审批流程中的具体节点配置,包括审批人类型(用户/角色/部门)、审批方式(或签/会签)、节点顺序等,支持灵活的审批流程设计和多维度审批人配置,为学校提供完整的审批流程节点管理和配置功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 节点ID |
|||
config_id int NULL NO MUL NULL select,insert,update,references 配置ID |
|||
node_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 节点名称 |
|||
approver_type enum('user','role','department') utf8mb4_general_ci NO NULL select,insert,update,references 审批人类型: user-指定用户, role-指定角色, department-指定部门 |
|||
approver_ids varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 审批人ID集合,逗号分隔 |
|||
sign_type enum('or_sign','and_sign') utf8mb4_general_ci NO or_sign select,insert,update,references 审批类型: or_sign-或签(一人通过即可), and_sign-会签(需全部通过) |
|||
sequence int NULL NO NULL select,insert,update,references 节点顺序 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **审批节点配置**: 定义审批流程中的具体节点信息和配置 |
|||
2. **审批人管理**: 配置每个节点的审批人类型和具体审批人员 |
|||
3. **审批类型控制**: 支持或签(一人通过即可)和会签(需全部通过)两种审批模式 |
|||
4. **节点顺序管理**: 通过sequence字段控制审批节点的执行顺序 |
|||
5. **多维度审批人**: 支持指定用户、角色、部门三种审批人类型 |
|||
6. **审批人集合**: 支持一个节点配置多个审批人,用逗号分隔存储 |
|||
7. **节点命名**: 提供节点名称字段,便于识别和管理 |
|||
8. **配置关联**: 与审批配置表关联,形成完整的审批流程 |
|||
9. **时间追踪**: 记录节点配置的创建和修改时间 |
|||
|
|||
### 业务场景 |
|||
1. **流程设计**: 设计多级审批流程,配置每个审批节点 |
|||
2. **权限分配**: 为不同审批节点分配相应的审批人员或角色 |
|||
3. **并行审批**: 配置会签节点,需要多人同时审批通过 |
|||
4. **串行审批**: 配置或签节点,任意一人审批即可通过 |
|||
5. **部门审批**: 配置部门级别的审批,由部门负责人审批 |
|||
6. **角色审批**: 配置基于角色的审批,如财务审批、人事审批 |
|||
7. **用户审批**: 配置指定用户的审批,如总经理审批 |
|||
8. **流程优化**: 根据业务需要调整审批节点和审批人配置 |
|||
9. **审批监控**: 通过节点配置监控审批流程的执行情况 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_approval_config**: 审批配置表 (config_id) |
|||
2. **school_approval_process**: 审批流程表 (通过config_id间接关联) |
|||
3. **school_approval_participants**: 审批参与人表 (节点配置关联) |
|||
4. **school_approval_history**: 审批历史记录表 (节点执行记录) |
|||
5. **school_personnel**: 人员表 (审批人关联) |
|||
6. **school_sys_role**: 角色表 (角色审批人关联) |
|||
7. **school_department**: 部门表 (部门审批人关联) |
|||
8. **school_campus**: 校区表 (审批范围关联) |
|||
|
|||
### 关联说明 |
|||
- **配置关联**: config_id关联school_approval_config表,确定节点所属的审批配置 |
|||
- **审批人关联**: approver_ids根据approver_type关联不同的人员、角色或部门表 |
|||
- **流程关联**: 通过config_id间接关联审批流程,确定节点在流程中的位置 |
|||
- **执行关联**: 审批执行时根据节点配置创建参与人和历史记录 |
|||
- **顺序关联**: sequence字段确定节点在审批流程中的执行顺序 |
|||
- **类型关联**: approver_type决定审批人的查找方式和权限验证 |
|||
- **签名关联**: sign_type影响节点的审批通过条件和逻辑 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (自动创建) |
|||
- **外键索引**: config_id (审批配置查询) |
|||
- **业务索引**: |
|||
- (config_id, sequence) (按配置和顺序查询节点) |
|||
- approver_type (按审批人类型查询) |
|||
- sign_type (按签名类型查询) |
|||
- **复合索引**: |
|||
- (config_id, approver_type) (配置内按类型查询) |
|||
- (approver_type, approver_ids) (审批人查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- updated_at (修改时间查询) |
|||
|
|||
## 注意事项 |
|||
1. **外键完整性**: config_id必须存在于school_approval_config表中 |
|||
2. **审批人类型**: approver_type只能是user、role、department三种类型之一 |
|||
3. **审批人ID格式**: approver_ids使用逗号分隔,需要验证ID的有效性 |
|||
4. **签名类型**: sign_type影响审批逻辑,or_sign和and_sign有不同的通过条件 |
|||
5. **节点顺序**: sequence在同一config_id下应该唯一,确保顺序的正确性 |
|||
6. **节点名称**: node_name应该具有描述性,便于识别节点功能 |
|||
7. **审批人验证**: 根据approver_type验证approver_ids中的ID是否存在 |
|||
8. **权限检查**: 审批人必须具有相应的审批权限 |
|||
9. **数据一致性**: 修改节点配置时需要考虑正在进行的审批流程 |
|||
10. **删除限制**: 删除节点前需要检查是否有正在使用的审批流程 |
|||
11. **配置完整性**: 确保审批配置的所有必要节点都已配置 |
|||
12. **顺序连续性**: sequence应该连续,避免跳跃或重复 |
|||
13. **审批人数量**: 会签节点的审批人数量应该合理,避免过多影响效率 |
|||
14. **角色权限**: 基于角色的审批需要确保角色权限的正确配置 |
|||
15. **部门层级**: 基于部门的审批需要考虑部门层级关系 |
|||
16. **并发控制**: 多人同时修改节点配置时需要并发控制 |
|||
17. **审计要求**: 节点配置的变更需要记录审计日志 |
|||
@ -0,0 +1,98 @@ |
|||
# school_approval_history 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_approval_history |
|||
**功能**: 审批历史记录表,用于记录审批流程中每个节点的操作历史和结果,包括审批人操作、审批意见、操作时间等,支持审批追溯、合规审计和流程优化,为学校提供完整的审批操作审计轨迹 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 历史记录ID |
|||
process_id int NULL NO MUL NULL select,insert,update,references 流程ID |
|||
participant_id int NULL NO MUL NULL select,insert,update,references 审批人ID |
|||
sequence int NULL NO NULL select,insert,update,references 审批顺序 |
|||
action enum('approve','reject','forward','cancel') utf8mb4_0900_ai_ci NO NULL select,insert,update,references 操作类型 |
|||
status enum('approved','rejected','forwarded','cancelled') utf8mb4_0900_ai_ci NO NULL select,insert,update,references 操作结果 |
|||
remarks text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 审批意见 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 操作时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **审批历史记录**: 记录审批流程中每个节点的操作历史和结果 |
|||
- **操作类型管理**: 支持批准、拒绝、转发、取消四种操作类型 |
|||
- **状态结果跟踪**: 记录每次操作的具体结果状态 |
|||
- **审批顺序管理**: 记录审批人在流程中的执行顺序 |
|||
- **审批意见存储**: 存储审批人的详细审批意见和备注 |
|||
- **时间追踪**: 记录每次审批操作的具体时间 |
|||
- **审计追踪**: 提供完整的审批操作审计轨迹 |
|||
- **流程关联**: 关联具体的审批流程和参与人 |
|||
- **历史查询**: 支持审批历史的查询和统计 |
|||
|
|||
### 业务场景 |
|||
- **审批记录**: 记录每次审批操作的详细信息 |
|||
- **审批追溯**: 追溯审批流程的完整历史轨迹 |
|||
- **审批统计**: 统计审批人的审批效率和结果 |
|||
- **审批分析**: 分析审批流程的瓶颈和优化点 |
|||
- **合规审计**: 提供审批操作的合规性审计 |
|||
- **争议处理**: 处理审批争议时提供历史依据 |
|||
- **流程优化**: 基于历史数据优化审批流程 |
|||
- **绩效考核**: 评估审批人员的工作绩效 |
|||
- **报表生成**: 生成审批相关的统计报表 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_approval_process`: 审批流程表 (process_id外键关联) |
|||
- `school_approval_participants`: 审批参与人表 (participant_id外键关联) |
|||
- `school_personnel`: 人员信息表 (审批人信息关联) |
|||
- `school_approval_config`: 审批配置表 (流程配置关联) |
|||
- `school_approval_config_node`: 审批节点配置表 (节点配置关联) |
|||
- `sys_log`: 系统日志表 (操作日志关联) |
|||
|
|||
### 关联说明 |
|||
- **流程关联**: process_id关联school_approval_process表,确定历史记录所属流程 |
|||
- **参与人关联**: participant_id关联school_approval_participants表,确定操作的审批人 |
|||
- **人员关联**: 通过participant_id间接关联school_personnel表获取审批人详细信息 |
|||
- **配置关联**: 通过流程关联审批配置和节点配置信息 |
|||
- **日志关联**: 审批操作同时记录到系统日志中 |
|||
- **顺序关联**: sequence字段确定审批操作在流程中的执行顺序 |
|||
- **操作关联**: action和status字段关联,记录操作类型和结果 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- process_id (流程历史查询) |
|||
- participant_id (审批人历史查询) |
|||
- **业务索引**: |
|||
- action (操作类型查询) |
|||
- status (操作结果查询) |
|||
- sequence (审批顺序查询) |
|||
- **复合索引**: |
|||
- (process_id, sequence) (流程顺序查询) |
|||
- (participant_id, created_at) (审批人时间查询) |
|||
- (process_id, action, status) (流程操作结果查询) |
|||
- (action, status, created_at) (操作结果时间查询) |
|||
- **时间索引**: |
|||
- created_at (操作时间查询) |
|||
|
|||
## 注意事项 |
|||
- **操作类型**: action字段限定为approve、reject、forward、cancel四种类型 |
|||
- **状态结果**: status字段限定为approved、rejected、forwarded、cancelled四种状态 |
|||
- **外键完整性**: process_id和participant_id必须在对应表中存在 |
|||
- **顺序唯一性**: 同一流程中的sequence应该是唯一的 |
|||
- **操作一致性**: action和status应该保持逻辑一致性 |
|||
- **只增不删**: 历史记录表应该只允许插入,不允许删除或修改 |
|||
- **时间精度**: created_at使用timestamp类型,确保时间精度 |
|||
- **审批意见**: remarks字段可以为空,但重要操作建议填写 |
|||
- **数据完整性**: 每次审批操作都必须记录完整的历史信息 |
|||
- **并发控制**: 防止同一审批人同时进行多次操作 |
|||
- **权限验证**: 确保只有授权的审批人才能进行操作 |
|||
- **审计要求**: 所有操作都必须有完整的审计轨迹 |
|||
- **数据备份**: 重要的审批历史数据需要定期备份 |
|||
- **性能优化**: 大量历史数据查询时需要考虑分页和索引优化 |
|||
- **监控告警**: 建立异常审批操作的监控机制 |
|||
- **数据归档**: 建立历史数据的归档策略 |
|||
- **查询优化**: 复杂的历史查询需要优化SQL性能 |
|||
@ -0,0 +1,101 @@ |
|||
# school_approval_participants 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_approval_participants |
|||
**功能**: 审批参与人管理表,用于管理审批流程中的参与人员信息和审批状态,包括审批顺序、审批类型(或签/会签)、审批状态跟踪等,支持多种审批模式和流程控制,为学校提供完整的审批流程参与人管理和状态监控功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 参与编号 |
|||
process_id int NULL NO MUL NULL select,insert,update,references 流程ID |
|||
participant_id int NULL NO NULL select,insert,update,references 参与人ID |
|||
sequence int NULL NO NULL select,insert,update,references 审批顺序 |
|||
status enum('pending','approved','rejected') utf8mb4_general_ci NO NULL select,insert,update,references 当前状态: pending-待审批, approved-已批准, rejected-已拒绝 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 备注 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
sign_type enum('or_sign','and_sign') utf8mb4_general_ci NO or_sign select,insert,update,references 审批类型: or_sign-或签, and_sign-会签 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **审批参与人管理**: 管理审批流程中的参与人员和角色分配 |
|||
- **审批顺序控制**: 控制审批人员在流程中的执行顺序 |
|||
- **审批状态跟踪**: 跟踪每个参与人的审批状态(待审批/已批准/已拒绝) |
|||
- **审批类型管理**: 支持或签(or_sign)和会签(and_sign)两种审批类型 |
|||
- **审批备注记录**: 记录审批人的审批意见和备注信息 |
|||
- **流程关联**: 关联具体的审批流程实例 |
|||
- **时间管理**: 记录参与人的创建和更新时间 |
|||
- **参与人权限**: 管理不同参与人的审批权限 |
|||
- **审批结果统计**: 统计参与人的审批结果和效率 |
|||
|
|||
### 业务场景 |
|||
- **流程分配**: 为审批流程分配具体的审批参与人 |
|||
- **顺序审批**: 按照设定的顺序进行逐级审批 |
|||
- **并行审批**: 支持多人同时进行审批(或签模式) |
|||
- **会签审批**: 要求所有指定人员都同意才能通过(会签模式) |
|||
- **审批替代**: 处理审批人请假或不在时的替代审批 |
|||
- **审批监控**: 监控审批进度和参与人状态 |
|||
- **审批提醒**: 提醒相关人员及时进行审批 |
|||
- **权限控制**: 控制不同级别人员的审批权限 |
|||
- **审批统计**: 统计各参与人的审批效率和结果 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_approval_process`: 审批流程表 (process_id外键关联) |
|||
- `school_personnel`: 人员信息表 (participant_id外键关联) |
|||
- `school_approval_history`: 审批历史表 (审批操作记录关联) |
|||
- `school_approval_config`: 审批配置表 (流程配置关联) |
|||
- `school_approval_config_node`: 审批节点配置表 (节点配置关联) |
|||
- `school_sys_role`: 角色表 (审批权限关联) |
|||
- `school_campus`: 校区表 (数据权限关联) |
|||
|
|||
### 关联说明 |
|||
- **流程关联**: process_id关联school_approval_process表,确定参与人所属的审批流程 |
|||
- **人员关联**: participant_id关联school_personnel表,确定具体的审批参与人 |
|||
- **历史关联**: 与school_approval_history表关联,记录参与人的审批操作历史 |
|||
- **配置关联**: 通过流程关联审批配置,获取审批规则和节点信息 |
|||
- **权限关联**: 通过人员信息关联角色权限,控制审批权限 |
|||
- **顺序关联**: sequence字段确定审批的执行顺序 |
|||
- **类型关联**: sign_type字段确定审批类型(或签/会签) |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- process_id (流程参与人查询) |
|||
- participant_id (人员审批查询) |
|||
- **业务索引**: |
|||
- status (审批状态查询) |
|||
- sequence (审批顺序查询) |
|||
- sign_type (审批类型查询) |
|||
- **复合索引**: |
|||
- (process_id, sequence) (流程顺序查询) |
|||
- (participant_id, status) (人员状态查询) |
|||
- (process_id, status) (流程状态查询) |
|||
- (sign_type, status, created_at) (类型状态时间查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **审批状态**: status字段限定为pending、approved、rejected三种状态 |
|||
- **审批类型**: sign_type字段限定为or_sign(或签)和and_sign(会签)两种类型 |
|||
- **外键完整性**: process_id和participant_id必须在对应表中存在 |
|||
- **顺序唯一性**: 同一流程中的sequence应该是唯一的 |
|||
- **状态流转**: 状态只能从pending转换为approved或rejected |
|||
- **审批权限**: 确保参与人具有相应的审批权限 |
|||
- **或签逻辑**: or_sign模式下,任一人审批通过即可 |
|||
- **会签逻辑**: and_sign模式下,所有人都必须审批通过 |
|||
- **时间一致性**: created_at和updated_at时间应该合理 |
|||
- **备注规范**: remarks字段建议填写审批意见 |
|||
- **并发控制**: 防止同一参与人重复审批 |
|||
- **数据完整性**: 确保参与人信息的完整性和准确性 |
|||
- **权限验证**: 验证参与人是否有权限参与该流程审批 |
|||
- **状态同步**: 参与人状态变更需要同步到流程状态 |
|||
- **审计要求**: 所有状态变更都需要记录审计日志 |
|||
- **性能优化**: 大量参与人查询时需要考虑索引优化 |
|||
- **监控告警**: 建立审批超时和异常的监控机制 |
|||
@ -0,0 +1,111 @@ |
|||
# school_approval_process 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_approval_process |
|||
**功能**: 审批流程管理表,负责管理教务系统中的各种业务审批流程,包括流程状态跟踪、审批人管理、业务数据关联等核心功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 流程编号 |
|||
process_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 流程名称 |
|||
applicant_id int NULL NO NULL select,insert,update,references 申请人ID |
|||
application_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 申请时间 |
|||
current_approver_id int NULL NO NULL select,insert,update,references 当前审批人ID |
|||
approval_status enum('pending','approved','rejected') utf8mb4_general_ci NO NULL select,insert,update,references 审批状态: pending-待审批, approved-已批准, rejected-已拒绝 |
|||
approval_time timestamp NULL YES NULL select,insert,update,references 审批时间 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 备注 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
business_type varchar(255) utf8mb4_general_ci YES MUL NULL select,insert,update,references 业务方法名 |
|||
business_id int NULL YES NULL select,insert,update,references 关联业务ID |
|||
business_data longtext utf8mb4_general_ci YES NULL select,insert,update,references 业务数据JSON |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **审批流程管理**: 管理各种业务的审批流程实例 |
|||
- **流程状态跟踪**: 跟踪审批流程的当前状态(待审批/已批准/已拒绝) |
|||
- **申请人管理**: 记录流程的发起人和申请时间 |
|||
- **当前审批人跟踪**: 跟踪当前负责审批的人员 |
|||
- **业务数据关联**: 关联具体的业务类型和业务数据 |
|||
- **审批时间管理**: 记录申请时间和审批完成时间 |
|||
- **流程备注记录**: 记录流程相关的备注和说明信息 |
|||
- **业务类型分类**: 支持多种业务类型的审批流程 |
|||
- **JSON数据存储**: 存储复杂的业务数据结构 |
|||
|
|||
### 业务场景 |
|||
- **请假审批**: 员工请假申请的审批流程 |
|||
- **报销审批**: 费用报销的审批流程 |
|||
- **合同审批**: 合同签署的审批流程 |
|||
- **课程审批**: 新课程开设的审批流程 |
|||
- **学员退费**: 学员退费申请的审批流程 |
|||
- **薪资调整**: 员工薪资调整的审批流程 |
|||
- **权限申请**: 系统权限申请的审批流程 |
|||
- **资源申请**: 教学资源申请的审批流程 |
|||
- **变更审批**: 各种业务变更的审批流程 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_personnel`: 人员信息表 (applicant_id、current_approver_id外键关联) |
|||
- `school_approval_config`: 审批配置表 (business_type关联) |
|||
- `school_approval_participants`: 审批参与人表 (流程参与人关联) |
|||
- `school_approval_history`: 审批历史表 (流程操作历史关联) |
|||
- `school_approval_config_node`: 审批节点配置表 (流程节点关联) |
|||
- `school_contract`: 合同表 (business_id关联,当business_type为合同时) |
|||
- `school_member`: 会员表 (business_id关联,当business_type为退费时) |
|||
- `school_salary`: 薪资表 (business_id关联,当business_type为薪资时) |
|||
- `sys_log`: 系统日志表 (操作日志关联) |
|||
|
|||
### 关联说明 |
|||
- **申请人关联**: applicant_id关联school_personnel表,确定流程发起人 |
|||
- **审批人关联**: current_approver_id关联school_personnel表,确定当前审批人 |
|||
- **配置关联**: business_type关联school_approval_config表,获取审批配置 |
|||
- **参与人关联**: 与school_approval_participants表关联,管理流程参与人 |
|||
- **历史关联**: 与school_approval_history表关联,记录审批操作历史 |
|||
- **业务关联**: business_id根据business_type关联不同的业务表 |
|||
- **节点关联**: 通过配置关联审批节点信息 |
|||
- **数据关联**: business_data存储具体的业务数据JSON |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- applicant_id (申请人查询) |
|||
- current_approver_id (当前审批人查询) |
|||
- business_type (业务类型查询,已存在MUL) |
|||
- **业务索引**: |
|||
- approval_status (审批状态查询) |
|||
- business_id (业务ID查询) |
|||
- **复合索引**: |
|||
- (applicant_id, approval_status) (申请人状态查询) |
|||
- (current_approver_id, approval_status) (审批人状态查询) |
|||
- (business_type, approval_status) (业务类型状态查询) |
|||
- (business_type, business_id) (业务关联查询) |
|||
- (approval_status, application_time) (状态时间查询) |
|||
- **时间索引**: |
|||
- application_time (申请时间查询) |
|||
- approval_time (审批时间查询) |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **审批状态**: approval_status字段限定为pending、approved、rejected三种状态 |
|||
- **外键完整性**: applicant_id和current_approver_id必须在school_personnel表中存在 |
|||
- **业务类型**: business_type应该与school_approval_config表中的配置一致 |
|||
- **业务关联**: business_id应该在对应的业务表中存在 |
|||
- **状态流转**: 状态只能从pending转换为approved或rejected |
|||
- **时间逻辑**: approval_time应该晚于application_time |
|||
- **当前审批人**: current_approver_id应该与当前审批节点的参与人一致 |
|||
- **JSON数据**: business_data应该是有效的JSON格式 |
|||
- **流程完整性**: 确保流程配置和参与人配置的完整性 |
|||
- **权限验证**: 验证申请人和审批人的权限 |
|||
- **并发控制**: 防止同一流程被多人同时操作 |
|||
- **数据一致性**: 确保流程状态与参与人状态的一致性 |
|||
- **审计要求**: 所有状态变更都需要记录详细的审计日志 |
|||
- **性能优化**: 大量流程查询时需要考虑分页和索引优化 |
|||
- **监控告警**: 建立流程超时和异常的监控机制 |
|||
- **数据备份**: 重要的审批流程数据需要定期备份 |
|||
- **清理策略**: 建立已完成流程的归档和清理策略 |
|||
@ -0,0 +1,108 @@ |
|||
# school_assignment 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_assignment |
|||
**功能**: 作业管理表,负责管理教务系统中的作业布置、提交、批改等全流程,支持班级作业和学员个人作业两种模式,支持图片、视频、文本等多种作业内容类型 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
type int NULL NO 2 select,insert,update,references 1班级作业 2学员作业 |
|||
class_id int NULL YES NULL select,insert,update,references 班级id |
|||
course_id int NULL YES NULL select,insert,update,references 课程id |
|||
personnel_id int NULL YES NULL select,insert,update,references 老师id |
|||
student_id int NULL NO NULL select,insert,update,references 学员id |
|||
description text utf8mb4_general_ci NO NULL select,insert,update,references 作业描述(老师留作业的描述) |
|||
content_type enum('1','2','3') utf8mb4_general_ci NO 1 select,insert,update,references 作业类型1图片2视频3文本 |
|||
content_text text utf8mb4_general_ci YES NULL select,insert,update,references 学生提交的作业内容(根据content_type字段判断学生提交的内容是|文本,视频oss绝对路径url,图片oss上的绝对路径ur) |
|||
deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
status int NULL NO 1 select,insert,update,references 状态 1未提交 2已提交 3待批改 4已批改 |
|||
create_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 校区创建时间 |
|||
update_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 校区更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **作业管理**: 管理班级作业和学员个人作业的布置和提交 |
|||
- **作业类型分类**: 支持班级作业(type=1)和学员作业(type=2)两种类型 |
|||
- **多媒体作业**: 支持图片、视频、文本三种作业内容类型 |
|||
- **作业状态跟踪**: 跟踪作业从未提交到已批改的完整流程 |
|||
- **作业描述**: 记录老师布置作业的详细描述和要求 |
|||
- **内容存储**: 存储学员提交的作业内容(文本/图片/视频) |
|||
- **关联管理**: 关联班级、课程、老师、学员等相关信息 |
|||
- **逻辑删除**: 支持作业的逻辑删除和恢复 |
|||
- **时间追踪**: 记录作业的创建和更新时间 |
|||
|
|||
### 业务场景 |
|||
- **作业布置**: 老师为班级或特定学员布置作业任务 |
|||
- **作业提交**: 学员提交图片、视频或文本形式的作业 |
|||
- **作业批改**: 老师对学员提交的作业进行批改和评价 |
|||
- **作业跟踪**: 跟踪作业的完成进度和批改状态 |
|||
- **作业统计**: 统计班级作业完成情况和批改进度 |
|||
- **作业归档**: 对已完成的作业进行归档管理 |
|||
- **作业查询**: 查询特定课程或学员的作业记录 |
|||
- **作业提醒**: 提醒学员及时提交作业 |
|||
- **教学评估**: 基于作业情况评估教学效果 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_class`: 班级信息表 (class_id外键关联) |
|||
- `school_course`: 课程信息表 (course_id外键关联) |
|||
- `school_personnel`: 人员信息表 (personnel_id外键关联,老师) |
|||
- `school_student`: 学员信息表 (student_id外键关联) |
|||
- `school_sys_attachment`: 附件表 (作业文件关联) |
|||
- `school_campus`: 校区信息表 (数据范围关联) |
|||
|
|||
### 关联说明 |
|||
- **班级关联**: class_id关联school_class表,确定作业所属班级 |
|||
- **课程关联**: course_id关联school_course表,确定作业所属课程 |
|||
- **老师关联**: personnel_id关联school_personnel表,确定布置作业的老师 |
|||
- **学员关联**: student_id关联school_student表,确定作业归属学员 |
|||
- **附件关联**: 作业中的图片和视频文件关联附件表 |
|||
- **校区关联**: 通过班级或课程间接关联校区信息 |
|||
- **类型关联**: type字段区分班级作业和个人作业 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- class_id (班级作业查询) |
|||
- course_id (课程作业查询) |
|||
- personnel_id (老师作业查询) |
|||
- student_id (学员作业查询) |
|||
- **业务索引**: |
|||
- type (作业类型查询) |
|||
- status (作业状态查询) |
|||
- content_type (作业内容类型查询) |
|||
- deleted_at (逻辑删除查询) |
|||
- **复合索引**: |
|||
- (class_id, status) (班级作业状态查询) |
|||
- (student_id, status) (学员作业状态查询) |
|||
- (personnel_id, create_time) (老师作业时间查询) |
|||
- (course_id, type, status) (课程作业类型状态查询) |
|||
- (type, status, create_time) (作业类型状态时间查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **作业类型**: type字段限定为1(班级作业)和2(学员作业)两种类型 |
|||
- **外键完整性**: class_id、course_id、personnel_id、student_id必须在对应表中存在 |
|||
- **内容类型**: content_type限定为1(图片)、2(视频)、3(文本)三种类型 |
|||
- **状态流转**: status状态流转应遵循1→2→3→4的顺序(未提交→已提交→待批改→已批改) |
|||
- **逻辑删除**: 使用deleted_at字段进行逻辑删除,0表示未删除 |
|||
- **内容存储**: content_text根据content_type存储不同类型的内容 |
|||
- **文件路径**: 图片和视频需要存储OSS的绝对路径URL |
|||
- **作业描述**: description字段不能为空,必须提供作业要求 |
|||
- **数据完整性**: 班级作业必须有class_id,学员作业必须有student_id |
|||
- **权限控制**: 只有授权老师才能布置和批改作业 |
|||
- **文件安全**: 上传的图片和视频需要进行安全检查 |
|||
- **存储优化**: 大文件建议使用CDN加速访问 |
|||
- **备份策略**: 重要作业内容需要定期备份 |
|||
- **性能优化**: 大量作业查询时需要考虑分页和缓存 |
|||
- **监控告警**: 建立作业提交和批改的监控机制 |
|||
- **数据清理**: 建立过期作业的清理策略 |
|||
- **审计要求**: 作业操作需要记录详细的操作日志 |
|||
@ -0,0 +1,90 @@ |
|||
# school_attendance 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_attendance |
|||
**功能**: 考勤管理表,存储教务系统中所有员工的考勤记录,包括签到签退时间、请假信息、考勤状态等核心数据 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 考勤编号 |
|||
campus_id int NULL NO NULL select,insert,update,references 校区ID |
|||
staff_id int NULL NO NULL select,insert,update,references 人员ID |
|||
attendance_date date NULL NO NULL select,insert,update,references 考勤日期 |
|||
check_in_time time NULL YES NULL select,insert,update,references 签到时间 |
|||
check_out_time time NULL YES NULL select,insert,update,references 签退时间 |
|||
leave_start_time time NULL YES NULL select,insert,update,references 请假开始时间|默认null,只有status=请假的时候本字段必须有值 |
|||
leave_end_time time NULL YES NULL select,insert,update,references 请假结束时间|默认null,只有status=请假的时候本字段必须有值 |
|||
status enum('present','absent','late','leave_early','leave') utf8mb4_general_ci NO NULL select,insert,update,references 考勤状态: present-出勤, absent-缺勤, late-迟到, leave_early-早退,leave-请假 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 备注 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
coordinate varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 坐标|经度,纬度 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **考勤记录管理**: 记录员工每日的签到签退时间 |
|||
2. **请假管理**: 管理员工请假的开始和结束时间 |
|||
3. **考勤状态跟踪**: 自动判断和记录考勤状态(出勤、缺勤、迟到、早退、请假) |
|||
4. **地理位置验证**: 通过坐标字段验证员工打卡位置 |
|||
5. **校区考勤管理**: 按校区分别管理员工考勤 |
|||
6. **考勤异常处理**: 记录和处理考勤异常情况 |
|||
7. **考勤备注管理**: 支持考勤异常或特殊情况的备注说明 |
|||
|
|||
### 业务场景 |
|||
1. **日常打卡**: 员工上下班时进行签到签退操作 |
|||
2. **请假申请**: 员工申请请假时记录请假时间段 |
|||
3. **考勤统计**: 按月度、季度统计员工考勤情况 |
|||
4. **薪资计算**: 根据考勤记录计算员工工资和绩效 |
|||
5. **异常处理**: 处理迟到、早退、缺勤等异常考勤 |
|||
6. **位置验证**: 验证员工是否在指定地点打卡 |
|||
7. **考勤报表**: 生成各类考勤统计报表 |
|||
8. **人事管理**: 为人事决策提供考勤数据支持 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_personnel**: 人员表(staff_id字段关联) |
|||
2. **school_campus**: 校区表(campus_id字段关联) |
|||
3. **school_salary**: 薪资表(考勤数据用于薪资计算) |
|||
4. **school_performance_records**: 绩效记录表(考勤影响绩效) |
|||
5. **school_sys_schedule**: 排班表(与排班计划对比) |
|||
6. **school_approval_process**: 审批流程表(请假审批关联) |
|||
|
|||
### 关联说明 |
|||
1. **人员关联**: 通过staff_id与人员表关联,确定考勤记录所属员工 |
|||
2. **校区关联**: 通过campus_id关联校区,实现多校区考勤管理 |
|||
3. **薪资关联**: 考勤数据作为薪资计算的重要依据 |
|||
4. **绩效关联**: 考勤情况影响员工绩效评估 |
|||
5. **排班关联**: 与排班计划对比,判断考勤是否正常 |
|||
6. **审批关联**: 请假等需要审批的考勤状态与审批流程关联 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: |
|||
- staff_id(员工关联查询) |
|||
- campus_id(校区关联查询) |
|||
3. **普通索引**: |
|||
- attendance_date(考勤日期查询) |
|||
- status(考勤状态筛选) |
|||
- created_at(创建时间排序) |
|||
4. **复合索引**: |
|||
- (staff_id, attendance_date)(员工+日期查询) |
|||
- (campus_id, attendance_date)(校区+日期查询) |
|||
- (attendance_date, status)(日期+状态查询) |
|||
- (staff_id, status, attendance_date)(员工+状态+日期查询) |
|||
|
|||
## 注意事项 |
|||
1. **时间逻辑**: check_in_time应早于check_out_time |
|||
2. **请假时间**: 请假状态时leave_start_time和leave_end_time必须有值 |
|||
3. **状态一致性**: 考勤状态需要与时间字段保持逻辑一致 |
|||
4. **唯一性约束**: 同一员工同一天只能有一条考勤记录 |
|||
5. **坐标验证**: 打卡坐标需要在允许的范围内 |
|||
6. **数据完整性**: 签到时间为必填,签退时间可为空(未签退) |
|||
7. **状态自动判断**: 系统应根据时间自动判断迟到、早退等状态 |
|||
8. **异常处理**: 需要处理跨天打卡、忘记打卡等异常情况 |
|||
9. **权限控制**: 员工只能查看自己的考勤记录 |
|||
10. **数据备份**: 考勤数据涉及薪资计算,需要定期备份 |
|||
@ -0,0 +1,77 @@ |
|||
# school_campus 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_campus |
|||
**功能**: 校区信息管理表,用于存储和管理学校各个校区的基本信息、地理位置、状态等核心数据,是整个教务系统的基础数据表。 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键ID |
|||
campus_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 校区名称 |
|||
campus_address varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 校区地址 |
|||
campus_preview_image varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 校区预览图,存储图片路径 |
|||
campus_coordinates varchar(512) utf8mb4_general_ci YES NULL select,insert,update,references 校区坐标,格式为经度,纬度 |
|||
campus_introduction text utf8mb4_general_ci YES NULL select,insert,update,references 校区介绍 |
|||
campus_status tinyint NULL YES 1 select,insert,update,references 校区状态:0-禁用,1-启用 |
|||
create_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 校区创建时间 |
|||
update_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 校区更新时间 |
|||
delete_time int NULL NO 0 select,insert,update,references 逻辑删除字段,0表示未删除,非空表示已删除 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **校区基础信息管理**: 存储校区名称、地址、介绍等基本信息 |
|||
2. **地理位置管理**: 通过坐标字段支持地图定位和导航功能 |
|||
3. **校区展示**: 支持校区预览图片展示,用于宣传和介绍 |
|||
4. **状态控制**: 支持校区启用/禁用状态管理 |
|||
5. **数据完整性**: 提供软删除机制,保证数据的完整性和可追溯性 |
|||
|
|||
### 业务场景 |
|||
- 多校区学校的校区信息管理 |
|||
- 学生选择校区时的信息展示 |
|||
- 校区相关的课程、教师、学生数据关联 |
|||
- 校区地理位置查询和导航 |
|||
- 校区宣传和介绍展示 |
|||
- 系统数据按校区进行分类管理 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 直接关联表 |
|||
1. **school_student**: 通过campus_id字段关联学生所属校区 |
|||
2. **school_teacher**: 通过campus_id字段关联教师所属校区 |
|||
3. **school_course**: 通过campus_id字段关联课程开设校区 |
|||
4. **school_classroom**: 通过campus_id字段关联教室所属校区 |
|||
5. **school_department**: 通过campus_id字段关联院系所属校区 |
|||
|
|||
### 间接关联表 |
|||
1. **school_class**: 通过校区间接关联班级信息 |
|||
2. **school_schedule**: 通过校区间接关联课程安排 |
|||
3. **school_exam**: 通过校区间接关联考试安排 |
|||
4. **school_fee**: 通过校区间接关联费用管理 |
|||
|
|||
### 关联说明 |
|||
- `id`字段作为主键,在多个业务表中作为campus_id外键引用 |
|||
- 校区是整个教务系统的基础维度,几乎所有业务数据都与校区相关 |
|||
- 支持多校区独立管理,也支持跨校区数据统计分析 |
|||
- 校区状态影响相关业务数据的可用性 |
|||
|
|||
## 索引建议 |
|||
- 主键索引:id(自动创建) |
|||
- 唯一索引:campus_name(校区名称唯一性) |
|||
- 普通索引:campus_status(按状态查询活跃校区) |
|||
- 普通索引:delete_time(软删除查询) |
|||
- 复合索引:campus_status + delete_time(查询有效校区) |
|||
- 普通索引:create_time(按创建时间排序) |
|||
|
|||
## 注意事项 |
|||
1. **数据完整性**: 校区是基础数据,删除前需要检查关联的业务数据 |
|||
2. **软删除**: 使用delete_time字段实现软删除,避免影响历史数据 |
|||
3. **坐标格式**: campus_coordinates字段建议使用标准的"经度,纬度"格式 |
|||
4. **图片路径**: campus_preview_image存储相对路径,需要配合文件服务使用 |
|||
5. **状态一致性**: campus_status和delete_time需要保持逻辑一致性 |
|||
6. **唯一性约束**: 校区名称应该保持唯一性,避免重复 |
|||
7. **时区处理**: timestamp字段需要注意时区设置和显示 |
|||
8. **级联影响**: 校区状态变更会影响所有关联的业务数据可用性 |
|||
@ -0,0 +1,93 @@ |
|||
# school_campus_pay 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_campus_pay |
|||
**功能**: 校区支付配置表,用于管理各校区独立的支付参数和密钥配置,包括微信支付商户号、API密钥、证书等,支持多校区支付、密钥管理和支付安全,为学校提供分校区的支付配置和财务管理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
campus_id int NULL NO UNI NULL select,insert,update,references 校区id |
|||
mchid varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 商户号 |
|||
pay_sign_key varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references APIv3密钥 |
|||
apiclient_key varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 商户私钥 |
|||
apiclient_cert varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 商户公钥 |
|||
wx_pay_key varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 微信支付公钥 |
|||
wx_pay_key_id varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 微信支付公钥ID |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **校区支付配置**: 管理各校区独立的支付参数和密钥配置 |
|||
- **微信支付集成**: 存储微信支付相关的商户号、密钥等配置信息 |
|||
- **支付安全管理**: 管理支付过程中的各种密钥和证书 |
|||
- **多校区支付**: 支持不同校区使用不同的支付配置 |
|||
- **支付参数管理**: 统一管理支付接口所需的各种参数 |
|||
- **密钥轮换**: 支持支付密钥的更新和轮换 |
|||
- **支付渠道配置**: 配置不同支付渠道的参数 |
|||
- **安全认证**: 管理支付过程中的安全认证信息 |
|||
- **配置版本管理**: 跟踪支付配置的变更历史 |
|||
|
|||
### 业务场景 |
|||
- **校区收费**: 各校区独立进行学费、杂费等收费操作 |
|||
- **在线支付**: 学员通过微信等渠道在线支付费用 |
|||
- **退费处理**: 处理学员退费时的支付渠道配置 |
|||
- **分校区结算**: 不同校区的收入分别结算到不同账户 |
|||
- **支付配置更新**: 定期更新支付密钥和证书 |
|||
- **多渠道支付**: 支持微信、支付宝等多种支付方式 |
|||
- **支付安全审计**: 定期检查支付配置的安全性 |
|||
- **异常支付处理**: 处理支付异常时的配置问题 |
|||
- **财务对账**: 基于校区维度进行财务对账 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_campus`: 校区表 (campus_id字段关联) |
|||
- `school_pay`: 支付表 (支付配置关联) |
|||
- `school_order`: 订单表 (支付处理关联) |
|||
- `school_member`: 会员表 (支付用户关联) |
|||
- `school_sys_config`: 系统配置表 (全局支付配置) |
|||
- `school_account_log`: 账户日志表 (支付日志关联) |
|||
- `school_pay_refund`: 退款表 (退款配置关联) |
|||
|
|||
### 关联说明 |
|||
- **校区关联**: campus_id关联校区表,实现校区级别的支付配置 |
|||
- **支付关联**: 支付操作时根据校区获取对应的支付配置 |
|||
- **订单关联**: 订单支付时使用对应校区的支付配置 |
|||
- **用户关联**: 用户支付时根据所属校区使用相应配置 |
|||
- **配置关联**: 与全局支付配置形成层级关系 |
|||
- **日志关联**: 支付操作产生的日志记录使用的配置信息 |
|||
- **退款关联**: 退款操作使用相同的支付配置进行处理 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: |
|||
- campus_id (校区唯一配置) |
|||
- **业务索引**: |
|||
- mchid (商户号查询) |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
- **复合索引**: |
|||
- (campus_id, mchid) (校区商户查询) |
|||
|
|||
## 注意事项 |
|||
- **校区唯一性**: 每个校区只能有一套支付配置,campus_id必须唯一 |
|||
- **密钥安全**: 所有密钥字段需要加密存储,防止泄露 |
|||
- **配置完整性**: 所有支付相关字段都不能为空,确保支付功能正常 |
|||
- **密钥格式**: 各种密钥和证书需要符合微信支付的格式要求 |
|||
- **权限控制**: 支付配置的查看和修改需要严格的权限控制 |
|||
- **配置验证**: 保存配置前需要验证密钥和证书的有效性 |
|||
- **备份恢复**: 支付配置需要定期备份,支持快速恢复 |
|||
- **变更记录**: 配置变更需要记录操作人员和变更时间 |
|||
- **测试验证**: 配置更新后需要进行支付测试验证 |
|||
- **监控告警**: 支付配置异常时需要及时告警 |
|||
- **合规要求**: 支付配置需要符合相关法规和安全标准 |
|||
- **密钥轮换**: 定期更换支付密钥,提高安全性 |
|||
- **环境隔离**: 测试环境和生产环境的支付配置需要严格隔离 |
|||
- **访问日志**: 记录支付配置的访问和使用日志 |
|||
- **异常处理**: 支付配置错误时需要有降级和容错机制 |
|||
@ -0,0 +1,89 @@ |
|||
# school_campus_person_role 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_campus_person_role |
|||
**功能**: 校区人员角色关系表,用于管理人员在不同校区的角色分配和权限设置,支持多校区权限管理和组织架构维护 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 关系编号 |
|||
campus_id int NULL NO 0 select,insert,update,references 校区ID |
|||
person_id int NULL NO NULL select,insert,update,references 人员ID |
|||
role_id int NULL NO NULL select,insert,update,references 角色ID |
|||
dept_id int NULL YES NULL select,insert,update,references 部门表 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
phone varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references |
|||
task_num int NULL NO 0 select,insert,update,references |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **人员角色分配**: 管理人员在不同校区的角色分配和权限设置 |
|||
- **多校区权限管理**: 支持人员在多个校区拥有不同角色和权限 |
|||
- **部门关联管理**: 关联人员在特定校区的部门归属关系 |
|||
- **任务数量统计**: 记录人员在该校区角色下的任务数量 |
|||
- **联系方式管理**: 存储人员在该校区的联系电话信息 |
|||
- **时间追踪**: 记录角色分配的创建和更新时间 |
|||
- **逻辑删除支持**: 支持逻辑删除功能,保留历史角色分配记录 |
|||
- **权限继承**: 支持角色权限的继承和覆盖机制 |
|||
|
|||
### 业务场景 |
|||
- **多校区管理**: 集团化运营中人员在不同校区担任不同角色 |
|||
- **权限分级管理**: 根据校区和角色进行细粒度的权限控制 |
|||
- **人员调动**: 处理人员在校区间的调动和角色变更 |
|||
- **临时授权**: 为人员在特定校区临时分配角色和权限 |
|||
- **部门协作**: 管理跨部门、跨校区的人员协作关系 |
|||
- **任务分配**: 基于校区角色进行任务的分配和管理 |
|||
- **绩效考核**: 按校区和角色维度进行人员绩效评估 |
|||
- **组织架构管理**: 维护复杂的多校区组织架构关系 |
|||
- **应急响应**: 在紧急情况下快速调配人员和权限 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_campus**: 校区表,关联人员所属的校区信息 |
|||
- **school_personnel**: 人员表,关联具体的人员基本信息 |
|||
- **school_sys_role**: 系统角色表,关联人员被分配的角色 |
|||
- **school_department**: 部门表,关联人员在校区的部门归属 |
|||
- **school_sys_user**: 系统用户表,关联人员的登录账户信息 |
|||
- **school_permission**: 权限表,通过角色关联具体的权限设置 |
|||
- **school_task**: 任务表,关联人员在该角色下的具体任务 |
|||
- **school_organization**: 组织架构表,关联校区的组织结构 |
|||
|
|||
### 关联说明 |
|||
- `campus_id` 关联 `school_campus.id`,标识人员所属的校区 |
|||
- `person_id` 关联 `school_personnel.id`,标识被分配角色的人员 |
|||
- `role_id` 关联 `school_sys_role.id`,标识人员被分配的角色 |
|||
- `dept_id` 关联 `school_department.id`,标识人员在校区的部门归属 |
|||
- 与权限系统关联,实现基于校区和角色的权限控制 |
|||
- 与工作流系统关联,支持角色变更的审批流程 |
|||
- 与考勤系统关联,按校区角色进行考勤管理 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **校区索引**: `INDEX idx_campus_id (campus_id)` - 支持按校区查询人员角色 |
|||
- **人员索引**: `INDEX idx_person_id (person_id)` - 支持按人员查询角色分配 |
|||
- **角色索引**: `INDEX idx_role_id (role_id)` - 支持按角色查询人员 |
|||
- **部门索引**: `INDEX idx_dept_id (dept_id)` - 支持按部门查询 |
|||
- **电话索引**: `INDEX idx_phone (phone)` - 支持按联系方式查询 |
|||
- **时间索引**: `INDEX idx_created_at (created_at)` - 支持按创建时间查询 |
|||
- **逻辑删除索引**: `INDEX idx_deleted_at (deleted_at)` - 支持逻辑删除查询 |
|||
- **复合索引**: `INDEX idx_campus_person (campus_id, person_id)` - 支持校区和人员的复合查询 |
|||
- **唯一索引**: `UNIQUE INDEX uk_campus_person_role (campus_id, person_id, role_id, deleted_at)` - 防止重复分配 |
|||
|
|||
## 注意事项 |
|||
- **权限冲突检查**: 分配角色时需要检查权限冲突,避免权限过度集中 |
|||
- **角色继承规则**: 明确角色权限的继承和覆盖规则,避免权限混乱 |
|||
- **数据一致性**: 确保人员、校区、角色数据的一致性和完整性 |
|||
- **权限审计**: 定期审计人员的角色分配,确保权限的合理性 |
|||
- **批量操作控制**: 对批量角色分配操作进行严格控制和审批 |
|||
- **历史记录保留**: 保留角色分配的历史记录,支持权限变更的追溯 |
|||
- **并发控制**: 在高并发环境下确保角色分配的原子性 |
|||
- **权限缓存**: 合理使用权限缓存,提高系统性能 |
|||
- **安全控制**: 严格控制超级管理员等高权限角色的分配 |
|||
- **监控告警**: 建立权限异常变更的监控告警机制 |
|||
@ -0,0 +1,98 @@ |
|||
# school_chat_friends 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_chat_friends |
|||
**功能**: 聊天好友关系管理表,用于管理员工与学生客户资源之间的聊天关系和消息状态 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references |
|||
personnel_id int NULL NO NULL select,insert,update,references 员工人力资源表id |
|||
customer_resources_id int NULL NO NULL select,insert,update,references 学生资源表id |
|||
unread_count_personnel int NULL NO 0 select,insert,update,references 员工未读消息数量|默认0 |
|||
unread_count_customer_resources int NULL NO 0 select,insert,update,references 学生端未读消息数量|默认0 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 添加时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
delete_time int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **好友关系管理**: 建立和维护员工与学生客户之间的聊天关系 |
|||
- **消息状态跟踪**: 分别跟踪员工端和学生端的未读消息数量 |
|||
- **聊天会话管理**: 管理一对一的聊天会话和对话历史 |
|||
- **消息计数器**: 实时更新双方的未读消息统计 |
|||
- **关系状态维护**: 维护聊天关系的有效性和活跃状态 |
|||
- **消息提醒**: 支持基于未读消息数量的提醒功能 |
|||
- **会话列表**: 为聊天应用提供好友列表和会话列表 |
|||
- **消息同步**: 确保双方消息状态的同步更新 |
|||
- **关系删除**: 支持聊天关系的逻辑删除和恢复 |
|||
|
|||
### 业务场景 |
|||
- **客户咨询**: 学生客户向销售或客服人员进行课程咨询 |
|||
- **学习指导**: 教师与学员进行一对一的学习指导和答疑 |
|||
- **课程服务**: 班主任与学员进行课程安排和学习跟进 |
|||
- **售后服务**: 客服人员处理学员的投诉和建议 |
|||
- **招生沟通**: 招生顾问与潜在客户进行招生宣传和答疑 |
|||
- **家长沟通**: 教师与学员家长进行学习情况沟通 |
|||
- **紧急通知**: 学校向学员发送紧急通知和重要信息 |
|||
- **作业辅导**: 教师为学员提供课后作业指导 |
|||
- **考试答疑**: 考前为学员提供专门的答疑服务 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_personnel`: 人员表(员工信息) |
|||
- `school_customer_resources`: 客户资源表(学生客户信息) |
|||
- `school_chat_messages`: 聊天消息表(具体的聊天消息) |
|||
- `school_member`: 会员表(正式学员信息) |
|||
- `school_sys_user`: 系统用户表(用户登录信息) |
|||
- `school_course`: 课程表(相关课程信息) |
|||
- `school_class`: 班级表(班级关联信息) |
|||
- `school_campus`: 校区表(所属校区) |
|||
|
|||
### 关联说明 |
|||
- **员工关联**: personnel_id关联到school_personnel表的员工信息 |
|||
- **客户关联**: customer_resources_id关联到客户资源表 |
|||
- **消息关联**: 与聊天消息表形成一对多关系 |
|||
- **用户关联**: 通过人员和客户资源关联到系统用户 |
|||
- **业务关联**: 可能关联到具体的课程、班级等业务对象 |
|||
- **校区关联**: 通过人员和客户资源间接关联到校区 |
|||
- **时间关联**: 记录关系建立和更新的时间信息 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id(已存在) |
|||
- **外键索引**: |
|||
- personnel_id(员工查询) |
|||
- customer_resources_id(客户查询) |
|||
- **复合索引**: |
|||
- (personnel_id, customer_resources_id)(唯一好友关系) |
|||
- (personnel_id, delete_time)(员工有效关系查询) |
|||
- (customer_resources_id, delete_time)(客户有效关系查询) |
|||
- **时间索引**: |
|||
- created_at(创建时间查询) |
|||
- updated_at(更新时间查询) |
|||
- **状态索引**: delete_time(逻辑删除查询) |
|||
- **消息统计索引**: |
|||
- unread_count_personnel(员工未读消息) |
|||
- unread_count_customer_resources(客户未读消息) |
|||
|
|||
## 注意事项 |
|||
- **唯一性约束**: 确保同一员工与同一客户只能有一个有效的聊天关系 |
|||
- **消息计数准确性**: 保证未读消息计数的准确性和实时性 |
|||
- **逻辑删除**: 使用delete_time字段进行逻辑删除,保留历史记录 |
|||
- **权限控制**: 严格控制聊天关系的建立和访问权限 |
|||
- **数据同步**: 确保消息状态与实际聊天记录的同步 |
|||
- **性能优化**: 大量聊天关系时需要优化查询性能 |
|||
- **消息清理**: 定期清理过期的聊天关系和消息记录 |
|||
- **隐私保护**: 保护聊天关系和消息内容的隐私安全 |
|||
- **并发控制**: 处理消息计数更新时的并发问题 |
|||
- **关系恢复**: 支持已删除聊天关系的恢复功能 |
|||
- **监控告警**: 监控异常的聊天行为和消息量 |
|||
- **备份策略**: 重要的聊天关系数据需要定期备份 |
|||
- **消息推送**: 基于未读消息数量进行消息推送 |
|||
- **会话管理**: 合理管理长期不活跃的聊天会话 |
|||
- **数据迁移**: 支持聊天关系数据的迁移和同步 |
|||
@ -0,0 +1,129 @@ |
|||
# school_chat_messages 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_chat_messages |
|||
**功能**: 聊天消息管理表,用于记录和管理系统内部的即时通讯消息,支持员工与学员、员工之间的多种类型消息交流,包括文本、图片、系统通知等,为教育机构提供完整的内部沟通平台 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references |
|||
from_type enum('personnel','customer','system') utf8mb4_general_ci NO NULL select,insert,update,references 发送者类型|personnel=员工,customer=学生(客户)system(系统消息) |
|||
from_id int NULL NO NULL select,insert,update,references 发送者ID(员工/学生)根据from_type进行判断为presonnel时,必然是员工id,为customer时必然是学生id |
|||
to_id int NULL NO MUL NULL select,insert,update,references 接收者ID(员工/学生)根据from_type进行判断为presonnel时,必然是员工id,为customer时必然是学生id |
|||
to_type enum('personnel','customer','member') utf8mb4_general_ci NO customer select,insert,update,references 接收者类型 |
|||
friend_id int NULL NO NULL select,insert,update,references 关联chat_friends表id |
|||
message_type enum('text','img','system','notification','homework','feedback','reminder','order','student_courses','person_course_schedule') utf8mb4_general_ci YES text select,insert,update,references |
|||
content text utf8mb4_general_ci NO NULL select,insert,update,references 文本内容(JSON 格式扩展字段) |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 添加时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
delete_time int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
is_read tinyint(1) NULL YES 0 select,insert,update,references 是否已读 0-未读 1-已读 |
|||
read_time timestamp NULL YES NULL select,insert,update,references 已读时间 |
|||
title varchar(255) utf8mb4_general_ci YES select,insert,update,references 消息标题 |
|||
business_id int NULL YES NULL select,insert,update,references 关联业务ID |
|||
business_type varchar(50) utf8mb4_general_ci YES select,insert,update,references 业务类型 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **多类型消息支持**: 支持文本、图片、系统通知、作业、反馈等多种消息类型 |
|||
- **用户身份管理**: 区分员工、学员、系统等不同发送者和接收者类型 |
|||
- **好友关系维护**: 通过friend_id关联聊天好友关系 |
|||
- **消息状态跟踪**: 跟踪消息的已读状态和阅读时间 |
|||
- **业务消息关联**: 支持与具体业务对象的关联,如课程、订单等 |
|||
- **软删除机制**: 支持消息的逻辑删除,保护数据完整性 |
|||
- **消息标题管理**: 支持消息标题,便于消息分类和展示 |
|||
- **时间戳记录**: 完整记录消息的创建和更新时间 |
|||
|
|||
### 业务场景 |
|||
- **师生沟通**: 教师与学员之间的课程咨询和学习交流 |
|||
- **作业布置**: 教师向学员布置和批改作业 |
|||
- **学习反馈**: 学员向教师反馈学习情况和问题 |
|||
- **课程提醒**: 系统自动发送课程安排和变更通知 |
|||
- **订单通知**: 支付成功、课程购买等订单相关通知 |
|||
- **系统公告**: 重要系统公告和通知的推送 |
|||
- **客服咨询**: 学员与客服人员的在线咨询 |
|||
- **内部协作**: 员工之间的工作协作和信息交流 |
|||
- **家校沟通**: 教师与家长的沟通交流 |
|||
- **紧急通知**: 紧急情况下的即时通知和提醒 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_chat_friends**: 聊天好友表,通过friend_id关联好友关系 |
|||
- **school_personnel**: 人员表,当from_type或to_type为personnel时关联 |
|||
- **school_student**: 学员表,当from_type或to_type为customer时关联 |
|||
- **school_member**: 会员表,当to_type为member时关联 |
|||
- **school_course**: 课程表,当business_type为课程相关时关联 |
|||
- **school_pay**: 支付表,当business_type为订单相关时关联 |
|||
- **school_person_course_schedule**: 个人课程安排表,当message_type为person_course_schedule时关联 |
|||
- **school_student_courses**: 学员课程表,当message_type为student_courses时关联 |
|||
|
|||
### 关联说明 |
|||
- 通过from_id和to_id建立消息发送者和接收者的关联 |
|||
- 通过friend_id关联具体的好友关系记录 |
|||
- 通过business_id和business_type关联具体的业务对象 |
|||
- 支持多种用户类型之间的消息交流 |
|||
- 消息类型决定了消息的展示方式和处理逻辑 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 接收者索引(用于查询接收的消息) |
|||
INDEX idx_to_id (to_id) |
|||
|
|||
-- 好友关系索引(用于查询好友间的消息) |
|||
INDEX idx_friend_id (friend_id) |
|||
|
|||
-- 发送者索引(用于查询发送的消息) |
|||
INDEX idx_from_id (from_id) |
|||
|
|||
-- 已读状态索引(用于查询未读消息) |
|||
INDEX idx_is_read (is_read) |
|||
|
|||
-- 创建时间索引(用于按时间排序) |
|||
INDEX idx_created_at (created_at) |
|||
|
|||
-- 删除时间索引(用于软删除查询) |
|||
INDEX idx_delete_time (delete_time) |
|||
|
|||
-- 消息类型索引(用于按类型查询) |
|||
INDEX idx_message_type (message_type) |
|||
|
|||
-- 业务关联索引(用于查询业务相关消息) |
|||
INDEX idx_business (business_type, business_id) |
|||
|
|||
-- 复合索引(接收者和已读状态) |
|||
INDEX idx_to_read (to_id, is_read) |
|||
|
|||
-- 复合索引(好友和时间) |
|||
INDEX idx_friend_time (friend_id, created_at) |
|||
|
|||
-- 复合索引(发送者类型和ID) |
|||
INDEX idx_from_type_id (from_type, from_id) |
|||
|
|||
-- 复合索引(接收者类型和ID) |
|||
INDEX idx_to_type_id (to_type, to_id) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **消息安全**: 确保消息内容的安全性,防止敏感信息泄露 |
|||
- **权限控制**: 严格控制消息的发送和接收权限 |
|||
- **内容审核**: 建立消息内容的审核机制,防止不当内容 |
|||
- **存储优化**: 大量消息数据需要考虑存储优化和归档策略 |
|||
- **实时性**: 确保消息的实时推送和接收 |
|||
- **消息格式**: JSON格式的content字段需要规范化处理 |
|||
- **文件管理**: 图片等文件类型消息需要配套的文件存储方案 |
|||
- **消息限制**: 设置合理的消息长度和发送频率限制 |
|||
- **数据清理**: 定期清理过期的已删除消息数据 |
|||
- **备份策略**: 重要消息需要建立备份和恢复机制 |
|||
- **性能监控**: 监控消息系统的性能和响应时间 |
|||
- **用户体验**: 优化消息的展示和交互体验 |
|||
- **离线消息**: 处理用户离线时的消息存储和推送 |
|||
- **消息统计**: 建立消息发送和接收的统计分析 |
|||
- **异常处理**: 处理消息发送失败和网络异常情况 |
|||
@ -0,0 +1,98 @@ |
|||
# school_class 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_class |
|||
**功能**: 班级信息管理表,存储教务系统中所有班级的基本信息、教练配置、课程关联、学员管理等核心数据 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 班级编号 |
|||
campus_id int NULL NO NULL select,insert,update,references 校区ID |
|||
campus_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 校区名称 |
|||
class_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级名称 |
|||
head_coach varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级主教练 |
|||
age_group varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级授课年龄段 |
|||
class_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级类型 |
|||
assistant_coach varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 班级助教 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
deleted_at varchar(255) utf8mb4_general_ci YES 0 select,insert,update,references 逻辑删除时间 |
|||
status tinyint NULL YES 1 select,insert,update,references 班级状态(1开启 2关闭) |
|||
sort_order int NULL NO NULL select,insert,update,references 班级排序 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 班级备注 |
|||
educational_id int NULL NO 0 select,insert,update,references 教务id |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **班级基础管理**: 存储班级名称、编号、类型、状态等基本信息 |
|||
2. **教练配置管理**: 配置主教练(head_coach)和助理教练(assistant_coach) |
|||
3. **课程关联管理**: 通过course_id关联具体课程信息 |
|||
4. **学员容量管理**: 设置班级最大学员数量限制 |
|||
5. **时间周期管理**: 管理班级开始和结束时间 |
|||
6. **校区归属管理**: 通过campus_id关联所属校区 |
|||
7. **班级状态控制**: 管理班级的启用/禁用状态 |
|||
8. **排序展示管理**: 通过sort字段控制班级显示顺序 |
|||
|
|||
### 业务场景 |
|||
1. **班级创建**: 新建班级,配置基本信息和教练 |
|||
2. **学员报名**: 学员选择班级进行课程学习 |
|||
3. **排课管理**: 为班级安排具体的上课时间和地点 |
|||
4. **教练调配**: 根据需要调整班级的主教练和助理教练 |
|||
5. **容量控制**: 限制班级学员数量,避免超员 |
|||
6. **班级调整**: 修改班级信息、合并或拆分班级 |
|||
7. **数据统计**: 统计班级学员数量、课程进度等信息 |
|||
8. **校区管理**: 不同校区的班级独立管理 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_course**: 课程表(course_id字段关联) |
|||
2. **school_personnel**: 人员表(head_coach, assistant_coach关联) |
|||
3. **school_campus**: 校区表(campus_id字段关联) |
|||
4. **school_class_member**: 班级学员关联表 |
|||
5. **school_schedule**: 排课表(班级排课关联) |
|||
6. **school_class_course**: 班级课程关联表 |
|||
7. **school_attendance**: 考勤表(班级考勤统计) |
|||
8. **school_homework**: 作业表(班级作业管理) |
|||
|
|||
### 关联说明 |
|||
1. **课程关联**: 通过course_id与课程表关联,确定班级所属课程 |
|||
2. **教练关联**: head_coach和assistant_coach关联人员表,配置班级教练 |
|||
3. **校区关联**: 通过campus_id关联校区,实现多校区班级管理 |
|||
4. **学员关联**: 通过班级学员关联表管理班级内的学员 |
|||
5. **排课关联**: 班级与排课表关联,安排具体上课时间 |
|||
6. **教学关联**: 与考勤、作业等教学管理功能关联 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: |
|||
- course_id(课程关联查询) |
|||
- campus_id(校区关联查询) |
|||
- head_coach(主教练查询) |
|||
- assistant_coach(助理教练查询) |
|||
3. **普通索引**: |
|||
- class_name(班级名称搜索) |
|||
- class_type(班级类型筛选) |
|||
- status(状态筛选) |
|||
- sort(排序查询) |
|||
- create_time(创建时间排序) |
|||
4. **复合索引**: |
|||
- (campus_id, status)(校区+状态查询) |
|||
- (course_id, status)(课程+状态查询) |
|||
- (status, sort)(状态+排序查询) |
|||
|
|||
## 注意事项 |
|||
1. **容量控制**: max_students字段需要与实际报名人数进行校验 |
|||
2. **教练配置**: 主教练和助理教练不能为同一人 |
|||
3. **时间逻辑**: start_time不能晚于end_time |
|||
4. **软删除**: 使用deleted_at字段实现软删除,保护历史数据 |
|||
5. **状态管理**: 班级状态变更需要考虑已报名学员的影响 |
|||
6. **课程关联**: course_id变更需要验证课程的有效性 |
|||
7. **校区归属**: campus_id变更需要考虑教练和学员的校区匹配 |
|||
8. **排序维护**: sort字段需要保证在同一校区内的唯一性和连续性 |
|||
9. **教练权限**: 教练只能管理自己负责的班级 |
|||
10. **数据一致性**: 班级删除时需要处理相关的学员、排课等数据 |
|||
@ -0,0 +1,112 @@ |
|||
# school_class_personnel_rel 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_class_personnel_rel |
|||
**功能**: 班级人员关联表,用于管理班级与教学人员之间的多对多关联关系,支持主教练、助教、教务等不同角色的分工管理,记录人员在班级中的加入时间、离开时间和状态信息,为班级教学管理和人员调配提供完整的关联数据支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
class_id int NULL NO NULL select,insert,update,references 班级id |
|||
campus_id int NULL YES NULL select,insert,update,references 校区id |
|||
source_id int NULL YES NULL select,insert,update,references 数据id |
|||
join_time int NULL YES NULL select,insert,update,references 加入时间 |
|||
out_time int NULL YES NULL select,insert,update,references 离开时间 |
|||
status tinyint NULL YES NULL select,insert,update,references 状态1正常2请假 |
|||
create_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
update_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
role varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 主教练coach,asistantcoach助教,affairs教务 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **班级人员关联**: 建立班级与教师、教务等人员的多对多关联关系 |
|||
- **角色分工管理**: 通过role字段区分主教练、助教、教务等不同角色 |
|||
- **人员状态跟踪**: 管理人员在班级中的状态(正常、请假等) |
|||
- **时间周期管理**: 记录人员加入和离开班级的具体时间 |
|||
- **校区关联管理**: 关联人员所属的校区信息 |
|||
- **数据源追踪**: 通过source_id字段追踪人员数据的来源 |
|||
- **人员变更记录**: 完整记录班级人员的变更历史 |
|||
- **多角色支持**: 支持一个人员在同一班级担任多个角色 |
|||
- **时间段管理**: 支持人员在不同时间段的角色变更 |
|||
|
|||
### 业务场景 |
|||
- **班级组建**: 新班级创建时分配主教练、助教等教学人员 |
|||
- **人员调配**: 根据教学需要调整班级的教学人员配置 |
|||
- **请假管理**: 教师请假时更新状态,安排代课教师 |
|||
- **角色变更**: 助教晋升为主教练,或教务转为教学岗位 |
|||
- **跨校区教学**: 教师在多个校区的不同班级任教 |
|||
- **临时支援**: 临时安排教师支援其他班级的教学工作 |
|||
- **人员考核**: 统计教师在各班级的任教情况和时长 |
|||
- **排课管理**: 根据班级人员配置进行课程安排 |
|||
- **工作量统计**: 统计教师的班级数量和教学工作量 |
|||
- **人员流动**: 跟踪教师在不同班级间的流动情况 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_class**: 班级表,通过class_id字段关联 |
|||
- **school_campus**: 校区表,通过campus_id字段关联 |
|||
- **school_personnel**: 人员表,通过source_id字段关联 |
|||
- **school_course**: 课程表,班级关联的课程信息 |
|||
- **school_schedule**: 排课表,根据班级人员安排课程 |
|||
- **school_attendance**: 考勤表,记录班级人员的考勤情况 |
|||
- **school_sys_user**: 系统用户表,人员可能对应系统用户 |
|||
|
|||
### 关联说明 |
|||
- **班级关联**: 通过class_id与school_class表建立多对一关系 |
|||
- **校区关联**: 通过campus_id与school_campus表建立多对一关系 |
|||
- **人员关联**: 通过source_id与school_personnel表建立多对一关系 |
|||
- **课程关联**: 班级人员配置影响课程的教学安排 |
|||
- **排课关联**: 班级人员信息是排课的重要依据 |
|||
- **考勤关联**: 班级人员的考勤记录与此表相关 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 班级ID索引(用于查询班级人员) |
|||
INDEX idx_class_id (class_id) |
|||
|
|||
-- 校区ID索引(用于按校区查询) |
|||
INDEX idx_campus_id (campus_id) |
|||
|
|||
-- 数据源ID索引(用于查询人员班级) |
|||
INDEX idx_source_id (source_id) |
|||
|
|||
-- 状态索引(用于查询有效人员) |
|||
INDEX idx_status (status) |
|||
|
|||
-- 角色索引(用于按角色查询) |
|||
INDEX idx_role (role) |
|||
|
|||
-- 复合索引(用于班级人员查询) |
|||
INDEX idx_class_status (class_id, status) |
|||
|
|||
-- 复合索引(用于人员班级查询) |
|||
INDEX idx_source_class (source_id, class_id) |
|||
|
|||
-- 时间范围索引(用于查询在职人员) |
|||
INDEX idx_time_range (join_time, out_time) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **角色规范**: role字段应使用标准的角色代码(coach、assistantcoach、affairs) |
|||
- **时间逻辑**: join_time应小于out_time,out_time为空表示仍在职 |
|||
- **状态一致性**: 人员状态变更应与实际工作状态保持一致 |
|||
- **重复检查**: 避免同一人员在同一班级同一时间段重复分配 |
|||
- **权限控制**: 不同角色的人员应有不同的班级管理权限 |
|||
- **数据完整性**: source_id应确保在school_personnel表中存在 |
|||
- **校区一致性**: 人员所属校区应与班级所属校区保持一致 |
|||
- **时间精度**: 时间字段应保证足够的精度,支持精确的时间管理 |
|||
- **状态流转**: 人员状态变更应遵循合理的流转规则 |
|||
- **历史记录**: 重要的人员变更应保留完整的历史记录 |
|||
- **并发控制**: 人员分配操作需要考虑并发安全问题 |
|||
- **业务规则**: 主教练不能为空,每个班级至少要有一个主教练 |
|||
- **离职处理**: 人员离职时应及时更新out_time字段 |
|||
- **数据清理**: 定期清理过期的人员关联记录 |
|||
- **审计追踪**: 重要的人员变更操作应记录操作日志 |
|||
@ -0,0 +1,114 @@ |
|||
# school_class_resources_rel 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_class_resources_rel |
|||
**功能**: 班级学员关联表,用于管理班级与学员之间的多对多关联关系,支持正式学员和临时学员的分类管理,记录学员在班级中的加入时间、离开时间和状态变化,为班级学员管理、学籍管理和学员流动追踪提供完整的数据支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
class_id int NULL NO NULL select,insert,update,references 班级id |
|||
resource_id int NULL YES NULL select,insert,update,references 资源id |
|||
campus_id int NULL YES NULL select,insert,update,references 校区id |
|||
source_id int NULL YES NULL select,insert,update,references 数据id |
|||
source_type varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 数据资源类型student是学员,temporary是非正式学员 |
|||
join_time int NULL YES NULL select,insert,update,references 加入时间 |
|||
out_time int NULL YES NULL select,insert,update,references 离开时间 |
|||
status tinyint NULL YES NULL select,insert,update,references 状态1新入2续费3过期4转班5转校 |
|||
create_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
update_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **班级学员关联**: 建立班级与学员之间的多对多关联关系 |
|||
- **学员类型管理**: 通过source_type区分正式学员(student)和临时学员(temporary) |
|||
- **学员状态跟踪**: 管理学员在班级中的状态(新入、续费、过期、转班、转校) |
|||
- **时间周期管理**: 记录学员加入和离开班级的具体时间 |
|||
- **校区关联管理**: 关联学员所属的校区信息 |
|||
- **学员流动追踪**: 完整记录学员在不同班级间的流动历史 |
|||
- **学籍状态管理**: 管理学员的学籍状态和变更记录 |
|||
- **多校区支持**: 支持学员在不同校区间的转移和管理 |
|||
- **数据源追踪**: 通过source_id字段追踪学员数据的来源 |
|||
|
|||
### 业务场景 |
|||
- **学员报名入班**: 新学员报名后分配到相应的班级 |
|||
- **学员续费管理**: 学员续费后更新在班级中的状态 |
|||
- **学员转班操作**: 学员因各种原因需要转到其他班级 |
|||
- **学员转校管理**: 学员在不同校区间的转移管理 |
|||
- **学员退学处理**: 学员退学时更新离开时间和状态 |
|||
- **试听学员管理**: 临时学员的试听课程管理 |
|||
- **班级人数统计**: 统计各班级的学员人数和构成 |
|||
- **学员流动分析**: 分析学员在不同班级间的流动情况 |
|||
- **学籍状态查询**: 查询学员的当前学籍状态和历史记录 |
|||
- **收费管理**: 根据学员在班级的状态进行收费管理 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联 |
|||
- **school_class**: 关联班级信息,获取班级基本信息、课程信息和状态 |
|||
- **school_member**: 通过source_id关联学员信息,获取学员基本资料 |
|||
- **school_campus**: 关联校区信息,支持多校区学员管理 |
|||
|
|||
### 间接关联 |
|||
- **school_course**: 通过班级关联课程信息,了解学员所学课程 |
|||
- **school_personnel**: 通过班级关联教师信息,了解学员的任课教师 |
|||
- **school_contract**: 通过学员关联合同信息,管理学员的合同状态 |
|||
- **school_pay**: 通过学员关联缴费信息,管理学员的缴费状态 |
|||
- **school_attendance**: 关联考勤记录,跟踪学员的出勤情况 |
|||
- **school_grade**: 关联成绩记录,跟踪学员的学习成绩 |
|||
|
|||
## 索引建议 |
|||
|
|||
### 主要索引 |
|||
```sql |
|||
-- 班级学员查询索引 |
|||
CREATE INDEX idx_class_student_class_id ON school_class_resources_rel(class_id); |
|||
|
|||
-- 学员班级查询索引 |
|||
CREATE INDEX idx_class_student_source ON school_class_resources_rel(source_type, source_id); |
|||
|
|||
-- 校区学员查询索引 |
|||
CREATE INDEX idx_class_student_campus_id ON school_class_resources_rel(campus_id); |
|||
|
|||
-- 状态查询索引 |
|||
CREATE INDEX idx_class_student_status ON school_class_resources_rel(status); |
|||
``` |
|||
|
|||
### 复合索引 |
|||
```sql |
|||
-- 班级状态复合索引 |
|||
CREATE INDEX idx_class_student_class_status ON school_class_resources_rel(class_id, status); |
|||
|
|||
-- 学员状态复合索引 |
|||
CREATE INDEX idx_class_student_source_status ON school_class_resources_rel(source_type, source_id, status); |
|||
|
|||
-- 时间范围查询索引 |
|||
CREATE INDEX idx_class_student_time_range ON school_class_resources_rel(join_time, leave_time); |
|||
|
|||
-- 校区班级复合索引 |
|||
CREATE INDEX idx_class_student_campus_class ON school_class_resources_rel(campus_id, class_id); |
|||
``` |
|||
|
|||
## 注意事项 |
|||
|
|||
### 数据完整性 |
|||
- 确保class_id和source_id的有效性,避免无效关联 |
|||
- 合理设置学员的加入和离开时间,确保时间逻辑正确 |
|||
- 及时更新学员状态,保持数据的准确性 |
|||
- 避免同一学员在同一时间段内重复加入同一班级 |
|||
|
|||
### 性能优化 |
|||
- 定期清理历史的学员关联记录 |
|||
- 合理使用索引提高查询效率 |
|||
- 避免频繁的学员状态变更操作 |
|||
- 对于大量学员的批量操作要注意性能影响 |
|||
|
|||
### 业务规则 |
|||
- 学员在同一时间只能属于一个班级(除非支持多班级学习) |
|||
- 学员转班时需要正确处理原班级的离开时间和新班级的加入时间 |
|||
- 删除班级时需要妥善处理相关的学员关联记录 |
|||
- 临时学员和正式学员的管理规则可能不同,需要区别对待 |
|||
@ -0,0 +1,108 @@ |
|||
# school_coach_performance 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_coach_performance |
|||
**功能**: 教练绩效管理表,用于记录和管理教练人员的绩效考核数据,包括绩效金额、资源销售数量、绩效配置和算法等信息,为教练薪酬计算、绩效评估和激励管理提供数据支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
personnel_id int NULL YES NULL select,insert,update,references 人员ID |
|||
campus_id int NULL YES NULL select,insert,update,references 校区ID |
|||
performance_amount decimal(10,2) NULL YES NULL select,insert,update,references 绩效金额 |
|||
new_resource_count int NULL YES NULL select,insert,update,references 新购买课程资源数量 |
|||
renew_resource_count int NULL YES NULL select,insert,update,references 续费资源数量 |
|||
performance_date date NULL YES NULL select,insert,update,references 绩效日期 |
|||
performance_config varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 绩效配置 |
|||
performance_algorithm varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 绩效算法 |
|||
created_at timestamp NULL YES NULL select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES NULL select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **绩效金额管理**: 记录教练的绩效金额和奖金计算结果 |
|||
- **资源销售统计**: 统计教练的新购买和续费资源销售数量 |
|||
- **绩效配置管理**: 管理教练绩效考核的配置参数 |
|||
- **算法规则应用**: 应用不同的绩效计算算法和规则 |
|||
- **日期维度统计**: 按日期维度记录和统计绩效数据 |
|||
- **校区绩效分析**: 支持按校区维度进行绩效分析 |
|||
- **人员绩效跟踪**: 跟踪个人教练的绩效变化趋势 |
|||
- **薪酬计算基础**: 为教练薪酬和奖金计算提供数据基础 |
|||
|
|||
### 业务场景 |
|||
- **月度绩效考核**: 按月统计和考核教练的销售绩效 |
|||
- **季度奖金计算**: 基于绩效数据计算季度奖金 |
|||
- **年度绩效评估**: 进行年度绩效评估和排名 |
|||
- **销售目标管理**: 设定和跟踪教练的销售目标完成情况 |
|||
- **团队绩效比较**: 比较不同教练和团队的绩效表现 |
|||
- **校区绩效分析**: 分析不同校区教练的绩效水平 |
|||
- **绩效趋势分析**: 分析教练绩效的变化趋势 |
|||
- **激励政策制定**: 基于绩效数据制定激励政策 |
|||
- **培训需求识别**: 识别绩效较低教练的培训需求 |
|||
- **薪酬结构优化**: 优化教练的薪酬结构和激励机制 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_personnel**: 人员表,关联教练的基本信息 |
|||
- **school_campus**: 校区表,关联教练所属的校区信息 |
|||
- **school_performance_config**: 绩效配置表,关联绩效考核的配置规则 |
|||
- **school_course**: 课程表,关联教练销售的课程资源 |
|||
- **school_pay**: 支付表,关联教练销售产生的支付记录 |
|||
- **school_contract**: 合同表,关联教练签署的销售合同 |
|||
- **school_sales_performance**: 销售绩效表,可能存在关联的销售绩效数据 |
|||
- **school_member**: 会员表,关联教练服务的会员客户 |
|||
|
|||
### 关联说明 |
|||
- 通过personnel_id关联具体的教练人员信息 |
|||
- 通过campus_id关联教练所属的校区 |
|||
- 通过performance_config关联具体的绩效配置规则 |
|||
- 绩效数据与教练的课程销售、合同签署等业务活动关联 |
|||
- 支持多维度的绩效数据分析和统计 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 人员ID索引(用于查询特定教练的绩效) |
|||
INDEX idx_personnel_id (personnel_id) |
|||
|
|||
-- 校区ID索引(用于按校区统计绩效) |
|||
INDEX idx_campus_id (campus_id) |
|||
|
|||
-- 绩效日期索引(用于按时间查询和统计) |
|||
INDEX idx_performance_date (performance_date) |
|||
|
|||
-- 创建时间索引(用于按创建时间排序) |
|||
INDEX idx_created_at (created_at) |
|||
|
|||
-- 复合索引(人员和日期) |
|||
INDEX idx_personnel_date (personnel_id, performance_date) |
|||
|
|||
-- 复合索引(校区和日期) |
|||
INDEX idx_campus_date (campus_id, performance_date) |
|||
|
|||
-- 绩效金额索引(用于绩效排名) |
|||
INDEX idx_performance_amount (performance_amount) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **数据准确性**: 确保绩效数据的准确性,避免计算错误 |
|||
- **算法一致性**: 保持绩效计算算法的一致性和公平性 |
|||
- **时间维度**: 注意绩效统计的时间维度和周期设置 |
|||
- **配置管理**: 妥善管理绩效配置的变更和版本控制 |
|||
- **数据安全**: 绩效数据涉及薪酬信息,需要严格的权限控制 |
|||
- **审计追踪**: 建立绩效数据的审计追踪机制 |
|||
- **异常处理**: 处理绩效计算中的异常情况和边界条件 |
|||
- **数据备份**: 定期备份重要的绩效数据 |
|||
- **性能优化**: 大量数据时需要优化查询和统计性能 |
|||
- **报表生成**: 支持各种绩效报表的生成和导出 |
|||
- **历史数据**: 妥善保存历史绩效数据,支持趋势分析 |
|||
- **多维分析**: 支持按人员、校区、时间等多维度分析 |
|||
- **激励透明**: 确保绩效计算过程的透明性和可解释性 |
|||
- **定期审核**: 定期审核绩效数据和计算规则的合理性 |
|||
@ -0,0 +1,120 @@ |
|||
# school_communication_records 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_communication_records |
|||
**功能**: 沟通记录管理表,用于记录和管理员工与各类资源对象之间的沟通交流信息,支持多种沟通方式和结果跟踪,为客户关系管理和服务质量监控提供完整的沟通历史记录 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 沟通记录编号 |
|||
staff_id int NULL NO NULL select,insert,update,references 员工ID |
|||
resource_id int NULL NO NULL select,insert,update,references 资源ID |
|||
resource_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 资源类型(如设备、文件、系统等) |
|||
communication_type enum('phone','email','meeting','other') utf8mb4_general_ci NO NULL select,insert,update,references 沟通类型: phone-电话, email-邮件, meeting-会议, other-其他 |
|||
communication_result enum('success','failure','pending') utf8mb4_general_ci NO NULL select,insert,update,references 沟通结果: success-成功, failure-失败, pending-待定 |
|||
communication_time datetime NULL NO NULL select,insert,update,references 沟通时间 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 备注 |
|||
tag enum('high','medium','low') utf8mb4_general_ci YES NULL select,insert,update,references 标签:|默认null high-高, medium-中, low-低 |
|||
business_id int NULL YES NULL select,insert,update,references 关联的业务ID |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **沟通记录管理**: 完整记录各种沟通交流的详细信息和内容 |
|||
- **参与者跟踪**: 通过user_id和target_id跟踪沟通的参与双方 |
|||
- **沟通类型分类**: 通过type字段区分不同类型的沟通方式 |
|||
- **内容存储**: 详细记录沟通的具体内容和相关信息 |
|||
- **状态管理**: 跟踪沟通记录的处理状态和进展情况 |
|||
- **时间轴记录**: 完整记录沟通的发生时间和更新时间 |
|||
- **优先级管理**: 通过priority字段标识沟通的重要程度 |
|||
- **结果跟踪**: 记录沟通的结果和后续处理情况 |
|||
- **软删除支持**: 支持软删除机制,保留重要的沟通历史 |
|||
|
|||
### 业务场景 |
|||
- **客户沟通**: 记录与客户的电话、微信、面谈等沟通记录 |
|||
- **家校沟通**: 记录学校与家长之间的各种沟通交流 |
|||
- **内部沟通**: 记录员工之间的工作沟通和协调记录 |
|||
- **投诉处理**: 记录投诉的沟通过程和处理结果 |
|||
- **咨询服务**: 记录客户咨询的问题和解答过程 |
|||
- **销售跟进**: 记录销售人员与潜在客户的沟通跟进 |
|||
- **售后服务**: 记录售后服务过程中的沟通记录 |
|||
- **问题反馈**: 记录用户问题反馈和处理沟通 |
|||
- **会议记录**: 记录重要会议的沟通内容和决议 |
|||
- **培训沟通**: 记录培训过程中的师生沟通交流 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_sys_user**: 系统用户表,通过user_id关联发起沟通的用户 |
|||
- **school_member**: 会员表,通过target_id关联沟通对象(会员) |
|||
- **school_personnel**: 人员表,通过target_id关联沟通对象(员工) |
|||
- **school_student**: 学员表,通过target_id关联沟通对象(学员) |
|||
- **school_course**: 课程表,课程相关的沟通记录 |
|||
- **school_class**: 班级表,班级相关的沟通记录 |
|||
- **school_pay**: 支付表,支付相关的沟通记录 |
|||
- **school_contract**: 合同表,合同相关的沟通记录 |
|||
|
|||
### 关联说明 |
|||
- **用户关联**: user_id关联发起沟通的系统用户 |
|||
- **目标关联**: target_id根据沟通对象类型关联不同的用户表 |
|||
- **类型关联**: type字段标识沟通类型,可能关联不同的业务场景 |
|||
- **业务关联**: 根据沟通内容可能与课程、班级、支付等业务表关联 |
|||
- **状态关联**: status字段可能与工作流状态表关联 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 用户ID索引(用于查询用户发起的沟通) |
|||
INDEX idx_user_id (user_id) |
|||
|
|||
-- 目标ID索引(用于查询与特定对象的沟通) |
|||
INDEX idx_target_id (target_id) |
|||
|
|||
-- 沟通类型索引(用于按类型查询) |
|||
INDEX idx_type (type) |
|||
|
|||
-- 状态索引(用于按状态查询) |
|||
INDEX idx_status (status) |
|||
|
|||
-- 优先级索引(用于按优先级查询) |
|||
INDEX idx_priority (priority) |
|||
|
|||
-- 创建时间索引(用于按时间查询) |
|||
INDEX idx_create_time (create_time) |
|||
|
|||
-- 更新时间索引(用于按更新时间查询) |
|||
INDEX idx_update_time (update_time) |
|||
|
|||
-- 复合索引(用于用户沟通统计) |
|||
INDEX idx_user_type_time (user_id, type, create_time) |
|||
|
|||
-- 复合索引(用于目标对象沟通查询) |
|||
INDEX idx_target_status_time (target_id, status, create_time) |
|||
|
|||
-- 软删除索引(用于查询有效记录) |
|||
INDEX idx_delete_time (delete_time) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **数据完整性**: 确保user_id和target_id字段的数据完整性 |
|||
- **隐私保护**: 沟通内容可能涉及隐私,需要严格的访问控制 |
|||
- **内容审核**: 沟通内容应经过适当的审核和过滤 |
|||
- **状态一致性**: 沟通状态应与实际处理进度保持一致 |
|||
- **时间精度**: 时间字段应保证足够精度,支持精确的时间统计 |
|||
- **类型规范**: type字段应有明确的分类标准和枚举值 |
|||
- **优先级管理**: priority字段应有清晰的优先级定义 |
|||
- **内容长度**: content字段长度应满足实际沟通内容的存储需求 |
|||
- **权限控制**: 不同角色用户应有不同的沟通记录访问权限 |
|||
- **数据备份**: 重要的沟通记录需要定期备份 |
|||
- **查询优化**: 针对常用查询场景优化索引和查询语句 |
|||
- **数据清理**: 定期清理过期或无效的沟通记录 |
|||
- **并发控制**: 多人同时处理同一沟通记录时需要考虑并发控制 |
|||
- **通知机制**: 重要沟通应有相应的通知提醒机制 |
|||
- **跟进提醒**: 建立沟通跟进的提醒和督办机制 |
|||
@ -0,0 +1,106 @@ |
|||
# school_contract 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_contract |
|||
**功能**: 合同信息管理表,存储教务系统中所有学员合同的基本信息、课程关联、价格体系、课时管理等核心数据 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 合同编号 |
|||
contract_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 合同名称 |
|||
contract_template text utf8mb4_general_ci NO NULL select,insert,update,references 合同模板 |
|||
contract_content longtext utf8mb4_general_ci YES NULL select,insert,update,references 合同内容(Word解析后的内容) |
|||
contract_status varchar(50) utf8mb4_general_ci NO NULL select,insert,update,references 合同状态 |
|||
contract_type varchar(50) utf8mb4_general_ci NO NULL select,insert,update,references 合同类型 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 合同备注 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
placeholder text utf8mb4_general_ci YES NULL select,insert,update,references 占位符配置 |
|||
placeholder_config json NULL YES NULL select,insert,update,references 占位符配置 |
|||
original_filename varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 原始文件名 |
|||
file_size int NULL YES 0 select,insert,update,references 文件大小(字节) |
|||
file_hash varchar(64) utf8mb4_general_ci YES NULL select,insert,update,references 文件hash值,用于防重复 |
|||
placeholders json NULL YES NULL select,insert,update,references 从模板中解析出的占位符列表 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **合同基础管理**: 存储合同编号、名称、类型、状态等基本信息 |
|||
2. **学员关联管理**: 通过member_id关联具体学员信息 |
|||
3. **课程关联管理**: 通过course_id关联具体课程信息 |
|||
4. **价格体系管理**: 管理合同总价、已付金额、优惠金额等财务信息 |
|||
5. **课时管理系统**: 管理总课时、已消耗课时、剩余课时等课时信息 |
|||
6. **合同周期管理**: 管理合同开始和结束时间 |
|||
7. **合同状态控制**: 管理合同的各种状态(待审核、生效、暂停、结束等) |
|||
8. **校区归属管理**: 通过campus_id关联所属校区 |
|||
9. **销售跟踪管理**: 记录销售人员和签约信息 |
|||
|
|||
### 业务场景 |
|||
1. **合同签署**: 学员报名时创建合同,记录课程和价格信息 |
|||
2. **课时消耗**: 学员上课时扣减合同中的剩余课时 |
|||
3. **财务结算**: 根据合同进行学费收取和退费处理 |
|||
4. **合同变更**: 修改合同内容、延期、转课等操作 |
|||
5. **课时预警**: 当剩余课时不足时进行提醒 |
|||
6. **合同续费**: 合同到期时进行续费操作 |
|||
7. **数据统计**: 统计合同收入、课时消耗等业务数据 |
|||
8. **合同审核**: 合同创建后的审核流程管理 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_member**: 会员表(member_id字段关联) |
|||
2. **school_course**: 课程表(course_id字段关联) |
|||
3. **school_campus**: 校区表(campus_id字段关联) |
|||
4. **school_personnel**: 人员表(销售人员关联) |
|||
5. **school_order**: 订单表(合同支付关联) |
|||
6. **school_class_member**: 班级学员表(合同对应班级) |
|||
7. **school_schedule**: 排课表(课时消耗关联) |
|||
8. **school_refund**: 退费表(合同退费关联) |
|||
9. **school_contract_log**: 合同变更日志表 |
|||
10. **school_payment**: 付款记录表 |
|||
|
|||
### 关联说明 |
|||
1. **学员关联**: 通过member_id与会员表关联,确定合同所属学员 |
|||
2. **课程关联**: 通过course_id与课程表关联,确定合同对应的课程 |
|||
3. **校区关联**: 通过campus_id关联校区,实现多校区合同管理 |
|||
4. **财务关联**: 与订单、付款、退费等财务数据关联 |
|||
5. **教学关联**: 与班级、排课等教学管理功能关联 |
|||
6. **销售关联**: 记录销售人员的业绩和跟进情况 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: |
|||
- member_id(学员关联查询) |
|||
- course_id(课程关联查询) |
|||
- campus_id(校区关联查询) |
|||
3. **唯一索引**: |
|||
- contract_no(合同编号唯一) |
|||
4. **普通索引**: |
|||
- contract_name(合同名称搜索) |
|||
- status(状态筛选) |
|||
- start_time(开始时间排序) |
|||
- end_time(结束时间排序) |
|||
- create_time(创建时间排序) |
|||
5. **复合索引**: |
|||
- (member_id, status)(学员+状态查询) |
|||
- (campus_id, status)(校区+状态查询) |
|||
- (course_id, status)(课程+状态查询) |
|||
- (status, end_time)(状态+到期时间查询) |
|||
|
|||
## 注意事项 |
|||
1. **财务精度**: 价格相关字段使用decimal类型,避免浮点数精度问题 |
|||
2. **课时逻辑**: used_class_hour不能超过total_class_hour |
|||
3. **时间逻辑**: start_time不能晚于end_time |
|||
4. **合同编号**: contract_no需要保证全局唯一性 |
|||
5. **状态流转**: 合同状态变更需要记录操作日志 |
|||
6. **软删除**: 使用deleted_at字段实现软删除,保护历史数据 |
|||
7. **课时扣减**: 课时消耗需要原子性操作,避免并发问题 |
|||
8. **合同变更**: 重要字段变更需要审核流程 |
|||
9. **到期提醒**: 需要定时任务检查合同到期情况 |
|||
10. **数据一致性**: 合同删除时需要处理相关的课时、付款等数据 |
|||
11. **权限控制**: 不同角色对合同的操作权限不同 |
|||
12. **审计追踪**: 重要操作需要记录操作人和操作时间 |
|||
@ -0,0 +1,107 @@ |
|||
# school_contract_sign 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_contract_sign |
|||
**功能**: 合同签署管理表,用于管理合同的电子签署流程,支持内部人员和外部学员的合同签署,包括电子签名、状态跟踪、自动分发和数据填充等功能,为合同管理提供完整的数字化解决方案 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
contract_id int NULL NO NULL select,insert,update,references 合同 |
|||
personnel_id int NULL NO NULL select,insert,update,references 下发人员 |
|||
sign_file text utf8mb4_general_ci YES NULL select,insert,update,references 签署附件 |
|||
status int NULL NO 1 select,insert,update,references 1未签署 2已签署3 已生效 4 已失效 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
sign_time datetime NULL YES NULL select,insert,update,references 签署时间 |
|||
signature_image varchar(500) utf8mb4_general_ci YES NULL select,insert,update,references 签名图片路径 |
|||
source_type varchar(50) utf8mb4_general_ci YES manual select,insert,update,references 分发来源:manual手动分发,auto_course自动课程分发 |
|||
source_id int NULL YES NULL select,insert,update,references 来源ID(如课程ID、订单ID等) |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
type tinyint(1) NULL YES NULL select,insert,update,references 签订类型1内部人员2外部人员 |
|||
fill_data text utf8mb4_general_ci YES NULL select,insert,update,references 填充数据JSON |
|||
error_msg varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 错误信息 |
|||
student_id int NULL YES NULL select,insert,update,references 学员 Id |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **合同签署管理**: 管理合同的签署流程和状态跟踪 |
|||
- **电子签名**: 支持电子签名图片的存储和验证 |
|||
- **多角色签署**: 支持内部人员和外部人员(学员)的合同签署 |
|||
- **签署文件管理**: 存储签署后的合同附件和相关文档 |
|||
- **自动化分发**: 支持手动分发和自动课程分发两种模式 |
|||
- **数据填充**: 支持合同模板的动态数据填充 |
|||
- **状态追踪**: 完整的签署状态生命周期管理 |
|||
|
|||
### 业务场景 |
|||
- **学员入学合同**: 新学员报名时签署入学协议和课程合同 |
|||
- **员工劳动合同**: 内部人员入职时签署劳动合同和保密协议 |
|||
- **课程服务协议**: 学员购买课程时自动生成并分发服务协议 |
|||
- **合同续签**: 到期合同的续签和重新签署流程 |
|||
- **批量合同处理**: 批量生成和分发合同给多个签署人 |
|||
- **合同审核**: 签署完成后的合同审核和生效流程 |
|||
- **电子存档**: 已签署合同的电子化存档和管理 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_contract**: 通过contract_id关联合同基础信息 |
|||
- **school_personnel**: 通过personnel_id关联下发人员信息 |
|||
- **school_student**: 通过student_id关联学员信息 |
|||
- **school_course**: 通过source_id关联课程信息(当source_type为auto_course时) |
|||
- **school_sys_user**: 关联系统用户信息 |
|||
|
|||
### 关联说明 |
|||
- `contract_id` → `school_contract.id`: 多对一关系,一个合同可以有多个签署记录 |
|||
- `personnel_id` → `school_personnel.id`: 记录合同的分发人员 |
|||
- `student_id` → `school_student.id`: 外部人员签署时关联学员信息 |
|||
- `source_id`: 根据source_type关联不同的业务对象(课程、订单等) |
|||
- 支持软删除机制,通过deleted_at字段管理数据生命周期 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(已存在) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 合同查询索引 |
|||
INDEX idx_contract_id (contract_id) |
|||
|
|||
-- 人员查询索引 |
|||
INDEX idx_personnel_id (personnel_id) |
|||
|
|||
-- 学员查询索引 |
|||
INDEX idx_student_id (student_id) |
|||
|
|||
-- 状态查询索引 |
|||
INDEX idx_status (status) |
|||
|
|||
-- 签署类型索引 |
|||
INDEX idx_type (type) |
|||
|
|||
-- 来源查询索引 |
|||
INDEX idx_source (source_type, source_id) |
|||
|
|||
-- 复合索引:合同+状态 |
|||
INDEX idx_contract_status (contract_id, status) |
|||
|
|||
-- 软删除查询索引 |
|||
INDEX idx_deleted_at (deleted_at) |
|||
|
|||
-- 时间范围查询索引 |
|||
INDEX idx_created_at (created_at) |
|||
INDEX idx_sign_time (sign_time) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **法律效力**: 电子签名需要符合相关法律法规要求 |
|||
- **身份验证**: 签署前必须验证签署人的身份信息 |
|||
- **签名安全**: 签名图片应加密存储,防止篡改 |
|||
- **状态一致性**: 签署状态变更需要保证数据一致性 |
|||
- **文件完整性**: 签署文件的完整性和不可篡改性验证 |
|||
- **时间戳**: 签署时间的准确性和不可篡改性 |
|||
- **错误处理**: 签署失败时的错误信息记录和处理机制 |
|||
- **数据备份**: 重要合同数据的定期备份和恢复机制 |
|||
@ -0,0 +1,94 @@ |
|||
# school_course 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_course |
|||
**功能**: 课程信息管理表,存储教务系统中所有课程的基本信息、价格体系、课时配置、提醒设置等核心数据 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 课程编号 |
|||
course_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 课程名称 |
|||
course_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 课程类型 |
|||
duration int NULL NO NULL select,insert,update,references 课程时长 |
|||
session_count int NULL NO NULL select,insert,update,references 课时数量 |
|||
single_session_count int NULL NO 0 select,insert,update,references 单次消课数量 |
|||
gift_session_count int NULL NO 0 select,insert,update,references 赠送课时数量 |
|||
price decimal(10,2) NULL NO NULL select,insert,update,references 课程价格 |
|||
internal_reminder int NULL YES NULL select,insert,update,references 内部提醒课时 |
|||
customer_reminder int NULL YES NULL select,insert,update,references 客户提醒课时 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 课程备注 |
|||
created_at int NULL YES 0 select,insert,update,references 创建时间 |
|||
updated_at int NULL YES 0 select,insert,update,references 更新时间 |
|||
deleted_at int NULL YES 0 select,insert,update,references 逻辑删除时间 |
|||
contract_id int NULL YES NULL select,insert,update,references 合同 id |
|||
status tinyint NULL YES 1 select,insert,update,references 课程状态 1 有效 0 无效 |
|||
is_regular_course tinyint NULL YES 1 select,insert,update,references 是否为正式课 1 是 0 否 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **课程基础管理**: 存储课程名称、类型、时长等基本信息 |
|||
2. **课时体系管理**: 管理总课时数、单次消课数、赠送课时等 |
|||
3. **价格体系管理**: 设置课程价格,支持灵活定价策略 |
|||
4. **提醒机制管理**: 内部提醒和客户提醒的课时阈值设置 |
|||
5. **课程状态管理**: 控制课程的有效性和可用性 |
|||
6. **正式课程标识**: 区分正式课程和体验课程 |
|||
7. **合同关联管理**: 与合同模板进行关联绑定 |
|||
|
|||
### 业务场景 |
|||
1. **课程创建**: 新课程录入,设置基本信息和价格体系 |
|||
2. **课程销售**: 销售人员根据课程信息进行推广销售 |
|||
3. **课时消耗**: 学员上课时按照单次消课数扣减课时 |
|||
4. **库存预警**: 根据提醒阈值进行课时不足预警 |
|||
5. **财务结算**: 基于课程价格进行收费和分成计算 |
|||
6. **合同生成**: 选择课程后自动关联对应的合同模板 |
|||
7. **数据分析**: 课程销售情况、受欢迎程度等数据统计 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_contract**: 合同表(contract_id字段关联) |
|||
2. **school_order**: 订单表(课程购买记录) |
|||
3. **school_course_member**: 会员课程关联表 |
|||
4. **school_class_course**: 班级课程关联表 |
|||
5. **school_schedule**: 排课表(课程安排) |
|||
6. **school_course_category**: 课程分类表 |
|||
7. **school_teacher_course**: 教师课程关联表 |
|||
8. **school_campus_course**: 校区课程关联表 |
|||
|
|||
### 关联说明 |
|||
1. **合同关联**: 通过contract_id与合同模板关联,支持自动合同生成 |
|||
2. **销售关联**: 与订单表关联,记录课程销售情况 |
|||
3. **教学关联**: 与班级、排课表关联,实现课程教学安排 |
|||
4. **人员关联**: 与会员、教师表关联,管理课程参与者 |
|||
5. **校区关联**: 支持多校区课程管理和独立定价 |
|||
6. **分类关联**: 通过课程分类实现课程体系化管理 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: |
|||
- contract_id(合同关联查询) |
|||
3. **普通索引**: |
|||
- course_type(课程类型筛选) |
|||
- status(状态筛选) |
|||
- is_regular_course(正式课程筛选) |
|||
- created_at(创建时间排序) |
|||
- price(价格范围查询) |
|||
4. **复合索引**: |
|||
- (status, course_type)(状态+类型查询) |
|||
- (is_regular_course, status)(正式课程+状态查询) |
|||
5. **全文索引**: |
|||
- course_name(课程名称搜索) |
|||
|
|||
## 注意事项 |
|||
1. **课时逻辑**: session_count必须大于0,single_session_count不能超过总课时 |
|||
2. **价格精度**: price字段使用decimal(10,2)确保财务精度 |
|||
3. **软删除**: 使用deleted_at字段实现软删除,保护历史数据 |
|||
4. **状态管理**: status字段变更需要同步更新相关业务数据 |
|||
5. **提醒阈值**: 提醒课时数应小于总课时数,避免逻辑错误 |
|||
6. **合同关联**: contract_id变更需要验证合同模板的有效性 |
|||
7. **赠送课时**: gift_session_count需要在业务逻辑中正确处理 |
|||
8. **正式课标识**: is_regular_course影响计费和统计逻辑 |
|||
@ -0,0 +1,126 @@ |
|||
# school_course_schedule 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_course_schedule |
|||
**功能**: 课程安排管理表,负责管理教务系统中的课程排课信息,包括上课时间、场地安排、教练分配、学员管理等核心排课功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 课程安排编号 |
|||
campus_id int NULL NO NULL select,insert,update,references 校区ID |
|||
venue_id int NULL NO MUL NULL select,insert,update,references 场地ID |
|||
course_date date NULL NO MUL NULL select,insert,update,references 上课日期 |
|||
time_slot varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 上课时段 |
|||
start_time time NULL YES NULL select,insert,update,references |
|||
end_time time NULL YES NULL select,insert,update,references |
|||
course_id int NULL NO NULL select,insert,update,references 课程ID |
|||
coach_id int NULL NO MUL NULL select,insert,update,references 上课教练ID |
|||
participants json NULL YES NULL select,insert,update,references 参与人员列表,存储为JSON数组,包含学员ID和来源信息 |
|||
student_ids json NULL YES NULL select,insert,update,references 上课学生ID列表,存储为JSON数组 |
|||
available_capacity int NULL YES NULL select,insert,update,references 根据场地容量判断的可安排学员位置数量 |
|||
status enum('pending','upcoming','ongoing','completed') utf8mb4_general_ci YES pending select,insert,update,references 课程状态: pending-待开始, upcoming-即将开始, ongoing-进行中, completed-已结束 |
|||
auto_schedule tinyint(1) NULL YES NULL select,insert,update,references 是否自动排课1是0否 |
|||
created_by enum('manual','system') utf8mb4_general_ci NO NULL select,insert,update,references 课程安排创建方式: manual-人员安排, system-系统创建 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
deleted_at int NULL YES 0 select,insert,update,references 逻辑删除时间 |
|||
assistant_ids varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 助教ID列表(逗号分隔) |
|||
education_id int NULL YES NULL select,insert,update,references 教务ID |
|||
recurring_type enum('none','daily','weekly','monthly') utf8mb4_general_ci YES none select,insert,update,references 重复类型 |
|||
recurring_end_date date NULL YES NULL select,insert,update,references 重复结束日期 |
|||
is_trial_class tinyint(1) NULL YES 0 select,insert,update,references 是否体验课 |
|||
max_students int NULL YES NULL select,insert,update,references 本次课程最大学员数 |
|||
remarks varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 课程备注 |
|||
begin_img varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 开课图片 |
|||
class_id int NULL YES NULL select,insert,update,references 班级 id |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **课程排期管理**: 管理具体的上课日期、时段和时间安排 |
|||
- **场地资源调度**: 分配和管理上课场地,控制场地使用冲突 |
|||
- **教练安排**: 分配主教练和助教,支持教练排课管理 |
|||
- **学员管理**: 管理参与课程的学员列表,控制课程容量 |
|||
- **容量控制**: 根据场地容量和课程设置控制学员数量上限 |
|||
- **课程状态跟踪**: 跟踪课程从待开始到已结束的全生命周期状态 |
|||
- **自动排课**: 支持系统自动排课和人工手动排课两种模式 |
|||
- **重复课程**: 支持日、周、月重复课程的批量生成 |
|||
- **体验课管理**: 区分正式课程和体验课程 |
|||
- **教务管理**: 支持教务人员的课程管理和监督 |
|||
|
|||
### 业务场景 |
|||
- **日常排课**: 教务人员根据课程计划安排具体的上课时间和场地 |
|||
- **教练调配**: 根据教练时间安排和专业能力分配合适的教练 |
|||
- **学员选课**: 学员根据课程安排选择合适的时间段上课 |
|||
- **场地管理**: 避免场地冲突,合理利用场地资源 |
|||
- **容量控制**: 确保课程人数不超过场地和教学质量要求 |
|||
- **课程调整**: 处理临时的课程时间、教练、场地变更 |
|||
- **体验课安排**: 为潜在学员安排体验课程 |
|||
- **批量排课**: 使用重复功能批量生成常规课程安排 |
|||
- **课程监控**: 实时监控课程状态和进度 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_campus`: 校区信息表 (campus_id) |
|||
- `school_venue`: 场地信息表 (venue_id) |
|||
- `school_course`: 课程信息表 (course_id) |
|||
- `school_personnel`: 人员信息表 (coach_id, assistant_ids, education_id) |
|||
- `school_class`: 班级信息表 (class_id) |
|||
- `school_member`: 学员信息表 (通过student_ids关联) |
|||
- `school_attendance`: 考勤记录表 (关联上课记录) |
|||
- `school_homework`: 作业管理表 (关联课程作业) |
|||
- `school_class_member`: 班级学员表 (关联班级学员) |
|||
|
|||
### 关联说明 |
|||
- **校区场地**: campus_id和venue_id确定上课的具体位置和场地 |
|||
- **课程关联**: course_id关联具体的课程信息,class_id关联班级 |
|||
- **人员关联**: coach_id关联主教练,assistant_ids关联助教,education_id关联教务 |
|||
- **学员关联**: student_ids(JSON)存储参与课程的学员ID列表 |
|||
- **参与人员**: participants(JSON)存储详细的参与人员信息 |
|||
- **教学关联**: 与考勤、作业等教学管理功能关联 |
|||
- **容量关联**: available_capacity与场地容量和课程设置关联 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- campus_id (校区查询) |
|||
- venue_id (场地查询,已存在MUL) |
|||
- course_id (课程查询) |
|||
- coach_id (教练查询,已存在MUL) |
|||
- class_id (班级查询) |
|||
- education_id (教务查询) |
|||
- **时间索引**: |
|||
- course_date (上课日期查询,已存在MUL) |
|||
- created_at (创建时间查询) |
|||
- **状态索引**: status (课程状态查询) |
|||
- **复合索引**: |
|||
- (campus_id, course_date) (校区日期查询) |
|||
- (venue_id, course_date, time_slot) (场地时间冲突检查) |
|||
- (coach_id, course_date) (教练排课查询) |
|||
- (course_id, course_date) (课程安排查询) |
|||
- (class_id, course_date) (班级课程查询) |
|||
- (course_date, status) (日期状态查询) |
|||
- **特殊索引**: |
|||
- recurring_type (重复课程查询) |
|||
- is_trial_class (体验课查询) |
|||
|
|||
## 注意事项 |
|||
- **时间逻辑**: end_time必须大于start_time,course_date不能是过去的日期 |
|||
- **场地冲突**: 同一场地在同一时间段不能安排多个课程 |
|||
- **教练冲突**: 同一教练在同一时间不能安排多个课程 |
|||
- **容量控制**: 实际学员数不能超过available_capacity和max_students |
|||
- **JSON字段**: student_ids和participants使用JSON格式,需要注意数据格式验证 |
|||
- **状态流转**: 课程状态有严格的时间顺序,不能随意跳跃 |
|||
- **重复课程**: recurring_type不为none时,必须设置recurring_end_date |
|||
- **软删除**: 使用deleted_at字段进行逻辑删除,删除时需要考虑关联数据 |
|||
- **自动排课**: auto_schedule为1时,系统可能自动调整课程安排 |
|||
- **体验课标识**: is_trial_class影响课程的计费和统计逻辑 |
|||
- **助教管理**: assistant_ids使用逗号分隔,需要验证人员ID的有效性 |
|||
- **图片管理**: begin_img需要验证图片格式和大小 |
|||
- **权限控制**: 不同角色对课程安排的操作权限需要严格控制 |
|||
- **数据一致性**: 修改课程安排时需要同步更新相关的考勤、作业等数据 |
|||
- **时区处理**: 时间字段需要考虑时区问题,确保时间显示正确 |
|||
@ -0,0 +1,88 @@ |
|||
# school_customer_resource_changes 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_customer_resource_changes |
|||
**功能**: 客户资源变更记录表,用于记录和追踪客户资源的所有变更操作,包括字段级别的修改记录、操作人员信息、变更时间等,支持数据审计、回滚操作和合规管理 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 修改编号 |
|||
customer_resource_id int NULL NO NULL select,insert,update,references 客户资源的ID |
|||
operator_id int NULL NO NULL select,insert,update,references 操作人的ID |
|||
campus_id int NULL NO NULL select,insert,update,references 操作校区的ID |
|||
modified_fields text utf8mb4_general_ci NO NULL select,insert,update,references 修改的哪些字段 |
|||
old_values text utf8mb4_general_ci NO NULL select,insert,update,references 修改前的值 |
|||
new_values text utf8mb4_general_ci NO NULL select,insert,update,references 修改后的值 |
|||
modification_time timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 修改的时间 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建的时间 |
|||
deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
is_rolled_back tinyint(1) NULL YES 0 select,insert,update,references 数据是否回滚 |
|||
rollback_time timestamp NULL YES NULL select,insert,update,references 回滚的时间 |
|||
action_type varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 操作类型:新增、修改 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **变更记录追踪**: 详细记录客户资源的所有变更操作,实现完整的数据变更审计 |
|||
- **字段级别监控**: 精确记录被修改的字段名称,实现字段级别的变更追踪 |
|||
- **数据对比存储**: 完整保存修改前后的数据值,支持数据对比和分析 |
|||
- **操作人员记录**: 记录执行变更操作的人员信息,确保操作可追溯 |
|||
- **校区级别管理**: 按校区维度管理变更记录,支持多校区数据隔离 |
|||
- **回滚功能支持**: 支持数据回滚操作,可以恢复到变更前的状态 |
|||
- **操作类型分类**: 区分新增、修改等不同类型的操作,便于分类管理 |
|||
- **逻辑删除支持**: 支持逻辑删除功能,保留历史变更记录 |
|||
|
|||
### 业务场景 |
|||
- **客户信息变更**: 记录客户基本信息、联系方式、状态等关键数据的变更 |
|||
- **数据合规审计**: 满足数据保护法规要求,提供完整的数据变更审计轨迹 |
|||
- **操作行为监控**: 监控员工对客户数据的操作行为,识别异常操作 |
|||
- **数据质量管理**: 通过变更记录分析数据质量问题,优化数据管理流程 |
|||
- **客户服务支持**: 为客户服务提供历史变更信息,提升服务质量 |
|||
- **错误数据恢复**: 在数据错误时快速定位问题并恢复正确数据 |
|||
- **业务流程优化**: 分析变更模式,优化客户管理业务流程 |
|||
- **权限审计**: 配合权限系统,审计用户的数据操作权限使用情况 |
|||
- **数据分析支持**: 为客户行为分析和业务决策提供历史数据支持 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_customer_resources**: 客户资源表,记录被变更的客户资源信息 |
|||
- **school_personnel**: 人员表,关联执行变更操作的人员信息 |
|||
- **school_campus**: 校区表,关联变更操作发生的校区 |
|||
- **school_sys_user**: 系统用户表,关联操作用户的详细信息 |
|||
- **school_six_speed_modification_log**: 六速修改日志表,可能存在相似的变更记录 |
|||
- **school_member**: 会员表,客户资源可能关联到具体的会员信息 |
|||
|
|||
### 关联说明 |
|||
- `customer_resource_id` 关联 `school_customer_resources.id`,标识被变更的客户资源 |
|||
- `operator_id` 关联 `school_personnel.id` 或 `school_sys_user.id`,标识执行变更的操作人员 |
|||
- `campus_id` 关联 `school_campus.id`,标识变更操作发生的校区 |
|||
- 与权限管理系统关联,验证操作权限的合法性 |
|||
- 与工作流系统关联,支持变更审批和流程管理 |
|||
- 与通知系统关联,及时通知相关人员重要的数据变更 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **客户资源索引**: `INDEX idx_customer_resource_id (customer_resource_id)` - 支持按客户查询变更历史 |
|||
- **操作人索引**: `INDEX idx_operator_id (operator_id)` - 支持按操作人查询 |
|||
- **校区索引**: `INDEX idx_campus_id (campus_id)` - 支持按校区查询 |
|||
- **时间索引**: `INDEX idx_modification_time (modification_time)` - 支持按变更时间查询 |
|||
- **回滚状态索引**: `INDEX idx_is_rolled_back (is_rolled_back)` - 支持按回滚状态查询 |
|||
- **操作类型索引**: `INDEX idx_action_type (action_type)` - 支持按操作类型查询 |
|||
- **逻辑删除索引**: `INDEX idx_deleted_at (deleted_at)` - 支持逻辑删除查询 |
|||
- **复合索引**: `INDEX idx_customer_time (customer_resource_id, modification_time)` - 支持客户和时间的复合查询 |
|||
|
|||
## 注意事项 |
|||
- **数据完整性**: 确保变更前后数据的完整记录,避免数据丢失 |
|||
- **存储空间管理**: 大量变更记录可能占用大量存储空间,需要制定数据清理策略 |
|||
- **性能影响**: 高频变更操作可能影响系统性能,需要优化记录机制 |
|||
- **敏感信息保护**: 对敏感信息的变更需要特殊处理,考虑加密或脱敏 |
|||
- **回滚操作验证**: 执行回滚前需要验证数据一致性,避免产生冲突 |
|||
- **权限控制**: 严格控制变更记录的查看和操作权限 |
|||
- **并发处理**: 在高并发环境下确保变更记录的原子性和一致性 |
|||
- **数据保留策略**: 制定合理的历史数据保留策略,平衡审计需求和存储成本 |
|||
- **监控告警**: 建立异常变更的监控告警机制,及时发现问题 |
|||
- **备份恢复**: 定期备份变更记录,确保数据的安全性和可恢复性 |
|||
@ -0,0 +1,140 @@ |
|||
# school_customer_resources 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_customer_resources |
|||
**功能**: 客户资源管理表,负责管理教务系统中的潜在客户信息、销售线索跟踪、客户转化流程等客户关系管理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 编号 |
|||
member_id int NULL YES 0 select,insert,update,references 会员表id(登录时使用member表) |
|||
create_year_month varchar(7) utf8mb4_general_ci NO NULL select,insert,update,references 入会时间 |
|||
create_date date NULL NO NULL select,insert,update,references 创建日期 |
|||
source_channel varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 来源渠道|0=线下 |
|||
source varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 来源 |
|||
consultant varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 顾问 |
|||
name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 姓名 |
|||
age varchar(5) utf8mb4_general_ci YES NULL select,insert,update,references 年龄 |
|||
gender enum('male','female','other') utf8mb4_general_ci NO NULL select,insert,update,references 性别: male-男性, female-女性, other-其他 |
|||
phone_number varchar(15) utf8mb4_general_ci NO UNI NULL select,insert,update,references 联系电话|唯一的 |
|||
demand text utf8mb4_general_ci YES NULL select,insert,update,references 需求 |
|||
purchasing_power varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 购买力 |
|||
cognitive_idea text utf8mb4_general_ci YES NULL select,insert,update,references 认知理念 |
|||
optional_class_time varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 可选上课时间 |
|||
distance varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 距离 |
|||
decision_maker varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 决策人 |
|||
initial_intent varchar(10) utf8mb4_general_ci YES NULL select,insert,update,references 客户初步意向度: high-高, medium-中, low-低 |
|||
campus int NULL YES NULL select,insert,update,references 所属校区 |
|||
trial_class_count int NULL YES 0 select,insert,update,references 体验课次数|默认0 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
deleted_at int NULL NO 0 select,insert,update,references 逻辑删除时间 |
|||
member_label varchar(255) utf8mb4_general_ci NO select,insert,update,references 会员标签 |
|||
rf_type varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 资源新增类型market市场人员新增sale销售人员新增teacher教练新增 |
|||
status varchar(15) utf8mb4_general_ci YES NULL select,insert,update,references 客户状态 |
|||
miniopenid varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 小程序 openid |
|||
wechatopenid varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 公众号 openid |
|||
referral_resource_id int NULL YES 0 select,insert,update,references 推荐人资源ID |
|||
password varchar(255) utf8mb4_general_ci YES select,insert,update,references 会员密码 |
|||
login_ip varchar(255) utf8mb4_general_ci YES select,insert,update,references 当前登录ip |
|||
login_count int NULL YES 0 select,insert,update,references 登录次数 |
|||
login_time int NULL YES 0 select,insert,update,references 当前登录时间 |
|||
blacklist tinyint NULL YES 1 select,insert,update,references 是否加入黑名单1 可追单 0 黑名单 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **客户信息管理**: 管理潜在客户的基本信息和联系方式 |
|||
- **来源渠道跟踪**: 记录客户的来源渠道和获客方式 |
|||
- **销售线索管理**: 跟踪客户的购买意向和决策过程 |
|||
- **顾问分配**: 为客户分配专属销售顾问进行跟进 |
|||
- **意向度评估**: 评估和记录客户的购买意向强度 |
|||
- **体验课管理**: 记录客户的体验课参与情况 |
|||
- **推荐关系**: 管理客户推荐关系和转介绍业务 |
|||
- **黑名单管理**: 控制不良客户的追单权限 |
|||
- **登录账户**: 支持客户登录查看相关信息 |
|||
- **微信集成**: 关联小程序和公众号用户身份 |
|||
|
|||
### 业务场景 |
|||
- **线索收集**: 从各种渠道收集潜在客户信息 |
|||
- **销售跟进**: 销售顾问跟进客户并记录沟通情况 |
|||
- **体验课安排**: 为潜在客户安排和记录体验课 |
|||
- **意向评估**: 评估客户购买意向并制定跟进策略 |
|||
- **转化分析**: 分析不同渠道的客户转化效果 |
|||
- **推荐奖励**: 处理客户推荐带来的新客户 |
|||
- **客户服务**: 为已注册客户提供信息查询服务 |
|||
- **营销活动**: 基于客户标签进行精准营销 |
|||
- **数据分析**: 分析客户来源、转化率等关键指标 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (member_id) |
|||
- `school_campus`: 校区信息表 (campus) |
|||
- `school_personnel`: 人员信息表 (顾问关联) |
|||
- `school_course_schedule`: 课程安排表 (体验课关联) |
|||
- `school_order_table`: 订单信息表 (转化订单) |
|||
- `school_contract`: 合同信息表 (签约转化) |
|||
- `school_follow_record`: 跟进记录表 (客户跟进) |
|||
- `school_trial_class`: 体验课记录表 (体验课管理) |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: member_id关联正式会员,支持客户转化为正式学员 |
|||
- **校区关联**: campus确定客户所属校区,便于就近服务 |
|||
- **顾问关联**: consultant字段关联销售顾问,支持客户分配和跟进 |
|||
- **推荐关联**: referral_resource_id建立客户推荐关系链 |
|||
- **体验课关联**: trial_class_count记录体验课参与情况 |
|||
- **转化关联**: 通过订单和合同表跟踪客户转化结果 |
|||
- **微信关联**: 通过openid关联微信生态用户身份 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: phone_number (已存在,客户唯一标识) |
|||
- **外键索引**: |
|||
- member_id (会员关联查询) |
|||
- campus (校区客户查询) |
|||
- referral_resource_id (推荐关系查询) |
|||
- **业务索引**: |
|||
- status (客户状态查询) |
|||
- initial_intent (意向度查询) |
|||
- source_channel (来源渠道分析) |
|||
- consultant (顾问客户查询) |
|||
- rf_type (资源类型查询) |
|||
- blacklist (黑名单过滤) |
|||
- **时间索引**: |
|||
- create_date (创建日期查询) |
|||
- create_year_month (月度统计) |
|||
- created_at (创建时间查询) |
|||
- login_time (登录时间查询) |
|||
- **软删除索引**: deleted_at (有效客户查询) |
|||
- **复合索引**: |
|||
- (campus, status, deleted_at) (校区有效客户查询) |
|||
- (consultant, status) (顾问客户状态查询) |
|||
- (source_channel, create_date) (渠道效果分析) |
|||
- (initial_intent, status) (意向客户查询) |
|||
- **微信索引**: |
|||
- miniopenid (小程序用户查询) |
|||
- wechatopenid (公众号用户查询) |
|||
|
|||
## 注意事项 |
|||
- **手机号唯一性**: phone_number字段具有唯一约束,确保客户不重复 |
|||
- **性别枚举**: gender字段使用枚举类型,只能是male/female/other |
|||
- **意向度标准**: initial_intent使用high/medium/low标准化意向度评估 |
|||
- **软删除机制**: deleted_at字段控制逻辑删除,保证数据完整性 |
|||
- **密码安全**: password字段需要加密存储,不能明文保存 |
|||
- **登录控制**: 通过login_count和login_time跟踪客户登录行为 |
|||
- **黑名单逻辑**: blacklist字段控制追单权限(1=可追单,0=黑名单) |
|||
- **推荐关系**: referral_resource_id建立推荐链,需要防止循环推荐 |
|||
- **体验课计数**: trial_class_count需要与实际体验课记录保持一致 |
|||
- **校区归属**: campus字段确定客户归属,影响服务分配 |
|||
- **来源跟踪**: source_channel和source字段用于渠道效果分析 |
|||
- **顾问分配**: consultant字段需要与人员表保持一致性 |
|||
- **微信绑定**: openid字段用于微信生态集成,需要保证唯一性 |
|||
- **数据完整性**: 客户转化为会员时需要同步更新member_id |
|||
- **时间一致性**: create_date和created_at需要保持逻辑一致 |
|||
- **标签管理**: member_label支持多标签,建议使用JSON格式 |
|||
- **状态流转**: status字段变更需要记录变更日志 |
|||
- **权限控制**: 不同角色对客户信息的访问权限需要严格控制 |
|||
@ -0,0 +1,91 @@ |
|||
# school_departments 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_departments |
|||
**功能**: 部门管理表,负责管理教务系统中的组织架构和部门层级关系,支持多级部门结构和部门路径管理 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 部门编号 |
|||
department_name varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 部门名称 |
|||
parent_department_id int NULL YES NULL select,insert,update,references 上级部门ID |
|||
path varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 部门路径 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
deleted_at int NULL NO 0 select,insert,update,references |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **部门层级管理**: 管理多级部门组织架构,支持无限级部门嵌套 |
|||
2. **部门信息维护**: 维护部门名称、上级部门等基本信息 |
|||
3. **部门路径管理**: 通过path字段记录部门的完整层级路径 |
|||
4. **组织架构展示**: 为系统提供完整的组织架构数据 |
|||
5. **权限范围控制**: 为权限管理提供部门范围控制 |
|||
6. **人员归属管理**: 为人员分配提供部门归属依据 |
|||
7. **逻辑删除支持**: 支持部门的逻辑删除和恢复 |
|||
8. **时间追踪**: 记录部门的创建和修改时间 |
|||
|
|||
### 业务场景 |
|||
1. **组织架构搭建**: 初始化和维护学校的组织架构 |
|||
2. **部门人员管理**: 为人员分配和管理提供部门依据 |
|||
3. **权限分级管理**: 基于部门层级进行权限分配和控制 |
|||
4. **数据权限控制**: 控制用户只能查看本部门及下级部门数据 |
|||
5. **报表统计分析**: 按部门维度进行各类业务数据统计 |
|||
6. **审批流程设计**: 为审批流程提供部门层级依据 |
|||
7. **成本核算管理**: 按部门进行成本分摊和核算 |
|||
8. **绩效考核管理**: 按部门进行绩效考核和评估 |
|||
9. **组织架构调整**: 支持部门的新增、修改、删除等调整操作 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_personnel**: 人员表(部门人员关联) |
|||
2. **school_campus**: 校区表(校区部门关联) |
|||
3. **school_sys_role**: 角色表(部门角色权限关联) |
|||
4. **school_approval_config**: 审批配置表(部门审批流程关联) |
|||
5. **school_performance_records**: 绩效记录表(部门绩效关联) |
|||
6. **school_salary**: 薪资表(部门薪资管理关联) |
|||
7. **school_course**: 课程表(部门课程管理关联) |
|||
|
|||
### 关联说明 |
|||
1. **自关联**: parent_department_id与本表id形成父子部门关系 |
|||
2. **人员关联**: 人员表通过部门ID关联,确定员工所属部门 |
|||
3. **权限关联**: 与角色权限系统关联,实现基于部门的权限控制 |
|||
4. **业务关联**: 各业务表通过部门关联实现数据权限控制 |
|||
5. **路径关联**: path字段存储完整部门路径,便于层级查询 |
|||
6. **审批关联**: 审批流程中的部门审批人配置 |
|||
7. **统计关联**: 各类统计报表按部门维度进行数据汇总 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: parent_department_id(父部门查询) |
|||
3. **普通索引**: |
|||
- department_name(部门名称查询) |
|||
- path(路径查询) |
|||
- deleted_at(逻辑删除查询) |
|||
4. **复合索引**: |
|||
- (parent_department_id, deleted_at)(父部门有效子部门查询) |
|||
- (path, deleted_at)(路径有效部门查询) |
|||
5. **时间索引**: |
|||
- created_at(创建时间查询) |
|||
- updated_at(更新时间查询) |
|||
|
|||
## 注意事项 |
|||
1. **层级完整性**: 删除部门时需要检查是否有子部门 |
|||
2. **路径一致性**: path字段需要与实际层级关系保持一致 |
|||
3. **循环引用**: 防止部门层级出现循环引用 |
|||
4. **逻辑删除**: 使用deleted_at字段进行逻辑删除,0表示未删除 |
|||
5. **人员迁移**: 删除部门前需要处理部门内人员的归属 |
|||
6. **权限更新**: 部门变更时需要同步更新相关权限配置 |
|||
7. **路径更新**: 修改部门层级时需要更新所有子部门的path |
|||
8. **名称唯一性**: 同级部门名称应保持唯一 |
|||
9. **数据一致性**: 部门变更时需要同步更新相关业务数据 |
|||
10. **性能优化**: 深层级查询时需要考虑性能优化 |
|||
11. **备份策略**: 组织架构数据需要定期备份 |
|||
12. **审计要求**: 部门变更操作需要记录详细日志 |
|||
13. **并发控制**: 多用户同时修改部门时需要并发控制 |
|||
14. **历史追踪**: 重要的部门变更需要保留历史记录 |
|||
@ -0,0 +1,104 @@ |
|||
# school_diy_form 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_form |
|||
**功能**: 自定义表单管理表,负责管理教务系统中的动态表单创建、表单配置、数据收集、表单模板等自定义表单功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
form_id int NULL NO PRI NULL auto_increment select,insert,update,references 表单id |
|||
page_title varchar(255) utf8mb4_general_ci NO select,insert,update,references 表单名称(用于后台展示) |
|||
title varchar(255) utf8mb4_general_ci NO select,insert,update,references 表单名称(用于前台展示) |
|||
type varchar(255) utf8mb4_general_ci NO select,insert,update,references 表单类型 |
|||
status tinyint NULL NO 0 select,insert,update,references 状态(0,关闭,1:开启) |
|||
template varchar(255) utf8mb4_general_ci NO select,insert,update,references 模板名称 |
|||
value longtext utf8mb4_general_ci YES NULL select,insert,update,references 表单数据,json格式,包含展示组件 |
|||
addon varchar(255) utf8mb4_general_ci NO select,insert,update,references 所属插件标识 |
|||
share varchar(1000) utf8mb4_general_ci NO select,insert,update,references 分享内容 |
|||
write_num int NULL NO 0 select,insert,update,references 表单填写总数量 |
|||
remark varchar(255) utf8mb4_general_ci NO select,insert,update,references 备注说明 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **动态表单创建**: 支持用户自定义创建各种类型的表单 |
|||
- **表单模板管理**: 管理和维护表单模板,支持模板复用 |
|||
- **表单配置**: 配置表单的字段、验证规则、显示样式等 |
|||
- **数据收集**: 收集和统计表单填写数据 |
|||
- **表单状态控制**: 管理表单的启用、禁用状态 |
|||
- **表单分享**: 支持表单的分享和传播功能 |
|||
- **填写统计**: 统计表单的填写次数和数据 |
|||
- **插件集成**: 支持与各种插件的集成使用 |
|||
- **JSON数据存储**: 灵活存储表单的结构和配置数据 |
|||
|
|||
### 业务场景 |
|||
- **信息收集**: 收集学生、教师、家长的各种信息 |
|||
- **报名登记**: 课程报名、活动报名等登记表单 |
|||
- **问卷调查**: 满意度调查、需求调研等问卷 |
|||
- **申请审批**: 各种申请表单的在线填写 |
|||
- **数据录入**: 批量数据录入和信息采集 |
|||
- **反馈收集**: 意见反馈、建议收集等 |
|||
- **考试报名**: 考试报名表单和信息收集 |
|||
- **活动报名**: 学校活动、比赛报名表单 |
|||
- **资料提交**: 各种资料和文档的在线提交 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_student`: 学生信息表 (学生填写表单) |
|||
- `school_personnel`: 人员信息表 (教师创建和管理表单) |
|||
- `school_course`: 课程信息表 (课程相关表单) |
|||
- `school_campus`: 校区信息表 (校区相关表单) |
|||
- `school_addon`: 插件表 (表单所属插件) |
|||
- `school_sys_attachment`: 附件表 (表单附件关联) |
|||
- `sys_log`: 系统日志表 (表单操作日志) |
|||
|
|||
### 关联说明 |
|||
- **用户关联**: 学生和教师可以填写和创建表单 |
|||
- **业务关联**: 表单可能关联具体的课程、校区等业务对象 |
|||
- **插件关联**: addon字段关联表单所属的插件模块 |
|||
- **附件关联**: 表单可能包含文件上传等附件功能 |
|||
- **模板关联**: template字段关联表单使用的模板 |
|||
- **数据关联**: value字段存储表单的结构和配置数据 |
|||
- **统计关联**: write_num字段统计表单的填写次数 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: form_id (已存在) |
|||
- **业务索引**: |
|||
- type (表单类型查询) |
|||
- status (状态查询) |
|||
- template (模板查询) |
|||
- addon (插件查询) |
|||
- **复合索引**: |
|||
- (status, type) (有效表单类型查询) |
|||
- (addon, status) (插件有效表单查询) |
|||
- (template, status) (模板有效表单查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **全文索引**: |
|||
- title (表单标题搜索) |
|||
- page_title (后台标题搜索) |
|||
|
|||
## 注意事项 |
|||
- **JSON格式验证**: value字段存储JSON数据,需要验证格式正确性 |
|||
- **表单状态一致性**: status字段变更需要同步更新相关业务逻辑 |
|||
- **模板有效性**: template字段需要确保模板文件存在且有效 |
|||
- **插件依赖**: addon字段确定表单归属,删除插件时需要处理相关表单 |
|||
- **数据完整性**: 表单配置数据需要保证完整性和一致性 |
|||
- **填写统计**: write_num字段需要实时更新,确保统计准确性 |
|||
- **权限控制**: 表单的创建、编辑、删除需要严格的权限控制 |
|||
- **数据备份**: 重要表单数据需要定期备份 |
|||
- **性能优化**: 大量表单数据查询时需要考虑性能优化 |
|||
- **表单验证**: 表单提交时需要验证数据的有效性 |
|||
- **分享安全**: 表单分享功能需要考虑安全性和隐私保护 |
|||
- **模板管理**: 表单模板的版本管理和兼容性 |
|||
- **数据导出**: 支持表单数据的导出和分析功能 |
|||
- **移动端适配**: 表单需要支持移动端的显示和填写 |
|||
- **缓存策略**: 频繁访问的表单可以使用缓存提高性能 |
|||
- **监控告警**: 表单异常情况需要监控和告警机制 |
|||
@ -0,0 +1,99 @@ |
|||
# school_diy_form_fields 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_form_fields |
|||
**功能**: 自定义表单字段管理表,负责管理教务系统中自定义表单的字段配置,包括字段类型、验证规则、显示属性、隐私保护等字段级别的详细配置 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
field_id int NULL NO PRI NULL auto_increment select,insert,update,references 字段id |
|||
form_id int NULL NO 0 select,insert,update,references 所属万能表单id |
|||
field_key varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段唯一标识 |
|||
field_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段类型 |
|||
field_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段名称 |
|||
field_remark varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段说明 |
|||
field_default text utf8mb4_general_ci YES NULL select,insert,update,references 字段默认值 |
|||
write_num int NULL NO 0 select,insert,update,references 字段填写总数量 |
|||
field_required tinyint NULL NO 0 select,insert,update,references 字段是否必填 0:否 1:是 |
|||
field_hidden tinyint NULL NO 0 select,insert,update,references 字段是否隐藏 0:否 1:是 |
|||
field_unique tinyint NULL NO 0 select,insert,update,references 字段内容防重复 0:否 1:是 |
|||
privacy_protection tinyint NULL NO 0 select,insert,update,references 隐私保护 0:关闭 1:开启 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **字段配置管理**: 管理表单中每个字段的详细配置信息 |
|||
- **字段类型控制**: 支持多种字段类型(文本、数字、选择、日期等) |
|||
- **验证规则设置**: 配置字段的必填、唯一性、格式验证等规则 |
|||
- **显示控制**: 管理字段的显示/隐藏状态 |
|||
- **默认值设置**: 为字段设置默认值,提升用户体验 |
|||
- **隐私保护**: 对敏感字段进行隐私保护设置 |
|||
- **填写统计**: 统计每个字段的填写次数和使用情况 |
|||
- **字段标识**: 通过field_key提供字段的唯一标识 |
|||
- **字段说明**: 为字段提供详细的说明和帮助信息 |
|||
|
|||
### 业务场景 |
|||
- **表单设计**: 在创建自定义表单时配置各种字段 |
|||
- **数据收集**: 根据字段配置收集和验证用户输入数据 |
|||
- **表单验证**: 基于字段规则进行数据验证和格式检查 |
|||
- **隐私合规**: 对涉及隐私的字段进行特殊保护处理 |
|||
- **用户体验**: 通过默认值和说明提升表单填写体验 |
|||
- **数据分析**: 分析各字段的填写情况和使用频率 |
|||
- **表单优化**: 根据字段使用统计优化表单设计 |
|||
- **权限控制**: 根据字段属性控制不同用户的访问权限 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_form`: 自定义表单表 (form_id) |
|||
- `school_diy_form_data`: 表单数据表 (通过field_key关联) |
|||
- `school_student`: 学生信息表 (表单填写者) |
|||
- `school_personnel`: 人员信息表 (表单创建者) |
|||
- `sys_log`: 系统日志表 (字段操作日志) |
|||
|
|||
### 关联说明 |
|||
- **表单关联**: form_id关联到school_diy_form表,确定字段所属表单 |
|||
- **数据关联**: field_key作为字段标识,关联到具体的表单数据 |
|||
- **用户关联**: 字段配置影响用户填写表单的体验和验证 |
|||
- **日志关联**: 字段的创建、修改、删除操作需要记录日志 |
|||
- **统计关联**: write_num字段统计该字段的填写次数 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: field_id (已存在) |
|||
- **外键索引**: form_id (表单字段查询) |
|||
- **唯一索引**: (form_id, field_key) (表单内字段唯一性) |
|||
- **业务索引**: |
|||
- field_type (字段类型查询) |
|||
- field_required (必填字段查询) |
|||
- field_hidden (显示字段查询) |
|||
- field_unique (唯一字段查询) |
|||
- **复合索引**: |
|||
- (form_id, field_hidden) (表单可见字段查询) |
|||
- (form_id, field_required) (表单必填字段查询) |
|||
- (field_type, field_required) (特定类型必填字段) |
|||
- **统计索引**: write_num (字段使用统计) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **字段标识唯一性**: field_key在同一表单内必须唯一,作为字段的唯一标识 |
|||
- **表单关联完整性**: form_id必须对应有效的表单记录 |
|||
- **字段类型一致性**: field_type需要与实际数据类型保持一致 |
|||
- **验证规则合理性**: 必填、唯一性等规则需要合理设置,避免冲突 |
|||
- **默认值格式**: field_default需要符合字段类型的格式要求 |
|||
- **隐私保护合规**: privacy_protection字段涉及数据隐私,需要严格管理 |
|||
- **字段依赖关系**: 修改字段配置时需要考虑对现有数据的影响 |
|||
- **统计数据准确性**: write_num需要实时更新,确保统计准确 |
|||
- **字段删除影响**: 删除字段前需要检查是否有关联的表单数据 |
|||
- **权限控制**: 字段配置的修改需要适当的权限验证 |
|||
- **数据迁移**: 修改字段类型时需要考虑数据迁移和兼容性 |
|||
- **性能优化**: 大量字段的表单需要考虑查询性能优化 |
|||
- **缓存策略**: 频繁访问的字段配置可以使用缓存 |
|||
- **版本管理**: 字段配置的变更需要版本控制和回滚机制 |
|||
- **监控告警**: 字段配置异常需要监控和告警 |
|||
@ -0,0 +1,95 @@ |
|||
# school_diy_form_records 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_form_records |
|||
**功能**: 自定义表单填写记录表,负责管理教务系统中用户填写自定义表单的记录数据,包括表单数据存储、填写人信息、业务关联等核心记录管理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
record_id int NULL NO PRI NULL auto_increment select,insert,update,references 表单填写记录id |
|||
form_id int NULL NO 0 select,insert,update,references 所属万能表单id |
|||
value longtext utf8mb4_general_ci YES NULL select,insert,update,references 填写的表单数据 |
|||
member_id int NULL NO 0 select,insert,update,references 填写人会员id |
|||
relate_id int NULL NO 0 select,insert,update,references 关联业务id |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
student_id int NULL YES NULL select,insert,update,references 学员 id |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **表单记录管理**: 存储用户填写的表单完整记录信息 |
|||
- **数据持久化**: 将表单填写的数据以JSON格式持久化存储 |
|||
- **用户关联**: 记录表单填写者的会员和学员身份信息 |
|||
- **业务关联**: 支持表单记录与其他业务对象的关联 |
|||
- **数据追溯**: 提供表单填写的时间追溯和历史记录 |
|||
- **多身份支持**: 同时支持会员和学员两种身份的表单填写 |
|||
- **记录查询**: 支持按表单、用户、时间等维度查询记录 |
|||
- **数据统计**: 为表单使用情况统计提供基础数据 |
|||
- **数据导出**: 支持表单填写数据的导出和分析 |
|||
|
|||
### 业务场景 |
|||
- **信息收集**: 收集学生、教师、家长填写的各种信息表单 |
|||
- **报名记录**: 记录课程报名、活动报名等表单填写数据 |
|||
- **调查问卷**: 存储满意度调查、需求调研等问卷填写结果 |
|||
- **申请审批**: 记录各种申请表单的填写和提交数据 |
|||
- **数据录入**: 批量数据录入和信息采集的记录存储 |
|||
- **反馈收集**: 存储意见反馈、建议收集等表单数据 |
|||
- **考试报名**: 记录考试报名表单的填写信息 |
|||
- **活动参与**: 存储学校活动、比赛报名的参与记录 |
|||
- **资料提交**: 记录各种资料和文档的在线提交数据 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_form`: 自定义表单表 (form_id) |
|||
- `school_member`: 会员信息表 (member_id) |
|||
- `school_student`: 学生信息表 (student_id) |
|||
- `school_diy_form_records_fields`: 表单记录字段表 (record_id) |
|||
- `school_personnel`: 人员信息表 (业务关联) |
|||
- `school_course`: 课程信息表 (relate_id业务关联) |
|||
- `school_class`: 班级信息表 (relate_id业务关联) |
|||
- `sys_log`: 系统日志表 (记录操作日志) |
|||
|
|||
### 关联说明 |
|||
- **表单关联**: form_id关联到school_diy_form表,确定记录所属表单 |
|||
- **用户关联**: member_id和student_id分别关联会员和学员信息 |
|||
- **字段关联**: 通过school_diy_form_records_fields表存储详细字段数据 |
|||
- **业务关联**: relate_id可以关联到不同的业务对象(课程、班级等) |
|||
- **数据关联**: value字段存储完整的表单填写数据(JSON格式) |
|||
- **时间关联**: create_time记录表单填写的具体时间 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: record_id (已存在) |
|||
- **外键索引**: |
|||
- form_id (表单记录查询) |
|||
- member_id (会员记录查询) |
|||
- student_id (学员记录查询) |
|||
- **业务索引**: relate_id (业务关联查询) |
|||
- **复合索引**: |
|||
- (form_id, member_id) (表单会员记录查询) |
|||
- (form_id, student_id) (表单学员记录查询) |
|||
- (form_id, create_time) (表单时间记录查询) |
|||
- (member_id, create_time) (会员时间记录查询) |
|||
- **时间索引**: create_time (创建时间查询) |
|||
- **全文索引**: value (表单内容搜索,如果需要) |
|||
|
|||
## 注意事项 |
|||
- **JSON格式验证**: value字段存储JSON数据,需要验证格式正确性 |
|||
- **表单关联完整性**: form_id必须对应有效的表单记录 |
|||
- **用户身份一致性**: member_id和student_id需要保持逻辑一致性 |
|||
- **数据完整性**: 表单记录的数据需要与表单字段配置保持一致 |
|||
- **业务关联有效性**: relate_id需要确保关联的业务对象存在 |
|||
- **数据隐私保护**: 涉及隐私的表单数据需要特殊保护 |
|||
- **存储空间管理**: value字段可能存储大量数据,需要考虑存储优化 |
|||
- **查询性能**: 大量记录查询时需要合理使用索引 |
|||
- **数据备份**: 重要表单记录需要定期备份 |
|||
- **权限控制**: 表单记录的查看和修改需要严格权限控制 |
|||
- **数据导出**: 支持表单数据的批量导出和分析 |
|||
- **历史记录**: 表单记录一般不允许删除,保证数据完整性 |
|||
- **关联清理**: 删除表单时需要处理相关记录数据 |
|||
- **性能监控**: 监控表单记录的查询和存储性能 |
|||
- **数据统计**: 为业务分析提供准确的统计数据 |
|||
- **缓存策略**: 频繁访问的记录可以使用缓存提高性能 |
|||
@ -0,0 +1,114 @@ |
|||
# school_diy_form_records_fields 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_form_records_fields |
|||
**功能**: 自定义表单记录字段详情表,负责管理教务系统中表单填写记录的字段级详细数据,包括字段值存储、字段属性、修改追踪等字段级数据管理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
form_id int NULL NO 0 select,insert,update,references 所属万能表单id |
|||
form_field_id int NULL NO 0 select,insert,update,references 关联表单字段id |
|||
record_id int NULL NO 0 select,insert,update,references 关联表单填写记录id |
|||
member_id int NULL NO 0 select,insert,update,references 填写会员id |
|||
field_key varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段唯一标识 |
|||
field_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段类型 |
|||
field_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 字段名称 |
|||
field_value longtext utf8mb4_general_ci NO NULL select,insert,update,references 字段值,根据类型展示对应效果 |
|||
field_required tinyint NULL NO 0 select,insert,update,references 字段是否必填 0:否 1:是 |
|||
field_hidden tinyint NULL NO 0 select,insert,update,references 字段是否隐藏 0:否 1:是 |
|||
field_unique tinyint NULL NO 0 select,insert,update,references 字段内容防重复 0:否 1:是 |
|||
privacy_protection tinyint NULL NO 0 select,insert,update,references 隐私保护 0:关闭 1:开启 |
|||
update_num int NULL NO 0 select,insert,update,references 字段修改次数 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **字段级数据存储**: 存储表单记录中每个字段的具体值和属性 |
|||
- **字段值管理**: 管理不同类型字段的值存储和格式化 |
|||
- **字段属性记录**: 记录字段的必填、隐藏、唯一等属性状态 |
|||
- **修改追踪**: 跟踪字段值的修改次数和变更历史 |
|||
- **隐私保护**: 对敏感字段进行隐私保护标记和处理 |
|||
- **字段关联**: 关联表单配置中的字段定义和实际填写值 |
|||
- **数据验证**: 基于字段类型和属性进行数据验证 |
|||
- **查询优化**: 支持按字段维度的高效查询和统计 |
|||
- **数据分析**: 为字段级数据分析提供基础数据支持 |
|||
|
|||
### 业务场景 |
|||
- **表单数据查询**: 按字段维度查询和筛选表单填写数据 |
|||
- **字段统计分析**: 分析特定字段的填写情况和数据分布 |
|||
- **数据验证**: 验证字段值是否符合配置的规则和格式 |
|||
- **隐私数据处理**: 对涉及隐私的字段进行特殊处理和保护 |
|||
- **数据导出**: 按字段维度导出和分析表单数据 |
|||
- **字段使用统计**: 统计各字段的使用频率和修改情况 |
|||
- **数据清洗**: 对字段数据进行清洗和标准化处理 |
|||
- **报表生成**: 基于字段数据生成各种统计报表 |
|||
- **数据迁移**: 在表单结构变更时进行数据迁移 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_form`: 自定义表单表 (form_id) |
|||
- `school_diy_form_fields`: 表单字段配置表 (form_field_id) |
|||
- `school_diy_form_records`: 表单记录表 (record_id) |
|||
- `school_member`: 会员信息表 (member_id) |
|||
- `school_student`: 学生信息表 (通过member关联) |
|||
- `sys_log`: 系统日志表 (字段操作日志) |
|||
|
|||
### 关联说明 |
|||
- **表单关联**: form_id关联到school_diy_form表,确定字段所属表单 |
|||
- **字段配置关联**: form_field_id关联到school_diy_form_fields表,获取字段配置信息 |
|||
- **记录关联**: record_id关联到school_diy_form_records表,确定字段所属记录 |
|||
- **用户关联**: member_id关联到填写表单的会员信息 |
|||
- **字段标识**: field_key作为字段的唯一标识,用于数据关联 |
|||
- **值存储**: field_value存储字段的实际填写值 |
|||
- **属性同步**: 字段属性与配置表保持同步 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- form_id (表单字段查询) |
|||
- form_field_id (字段配置查询) |
|||
- record_id (记录字段查询) |
|||
- member_id (会员字段查询) |
|||
- **唯一索引**: (record_id, field_key) (记录内字段唯一性) |
|||
- **业务索引**: |
|||
- field_key (字段标识查询) |
|||
- field_type (字段类型查询) |
|||
- field_required (必填字段查询) |
|||
- field_hidden (显示字段查询) |
|||
- **复合索引**: |
|||
- (form_id, field_key) (表单字段查询) |
|||
- (record_id, field_key) (记录字段查询) |
|||
- (member_id, field_key) (用户字段查询) |
|||
- (form_id, field_type) (表单类型字段查询) |
|||
- **统计索引**: update_num (修改统计查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **全文索引**: field_value (字段值搜索,根据需要) |
|||
|
|||
## 注意事项 |
|||
- **字段关联完整性**: form_field_id必须对应有效的字段配置 |
|||
- **记录关联一致性**: record_id必须对应有效的表单记录 |
|||
- **字段标识唯一性**: field_key在同一记录内必须唯一 |
|||
- **字段值格式**: field_value需要符合field_type的格式要求 |
|||
- **属性同步**: 字段属性需要与配置表保持同步 |
|||
- **隐私保护合规**: privacy_protection字段需要严格管理 |
|||
- **修改追踪**: update_num需要准确记录字段修改次数 |
|||
- **数据类型一致性**: 字段值类型需要与字段配置保持一致 |
|||
- **必填验证**: field_required为1时,field_value不能为空 |
|||
- **唯一性检查**: field_unique为1时,需要检查值的唯一性 |
|||
- **隐藏字段处理**: field_hidden为1的字段需要特殊处理 |
|||
- **存储优化**: field_value可能存储大量数据,需要优化存储 |
|||
- **查询性能**: 大量字段数据查询时需要合理使用索引 |
|||
- **数据备份**: 重要字段数据需要定期备份 |
|||
- **权限控制**: 字段数据的访问需要严格权限控制 |
|||
- **数据清理**: 删除记录时需要同步清理字段数据 |
|||
- **性能监控**: 监控字段数据的查询和存储性能 |
|||
- **缓存策略**: 频繁访问的字段数据可以使用缓存 |
|||
@ -0,0 +1,111 @@ |
|||
# school_diy_form_submit_config 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_form_submit_config |
|||
**功能**: 自定义表单提交配置表,负责管理教务系统中表单的提交规则和配置,包括提交限制、验证规则、通知设置等表单提交行为的控制和管理 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键id |
|||
form_id int NULL NO 0 select,insert,update,references 所属万能表单id |
|||
submit_after_action varchar(255) utf8mb4_general_ci NO select,insert,update,references 填表人提交后操作,text:文字信息,voucher:核销凭证 |
|||
tips_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 提示内容类型,default:默认提示,diy:自定义提示 |
|||
tips_text varchar(255) utf8mb4_general_ci NO select,insert,update,references 自定义提示内容 |
|||
time_limit_type varchar(255) utf8mb4_general_ci NO 0 select,insert,update,references 核销凭证有效期限制类型,no_limit:不限制,specify_time:指定固定开始结束时间,submission_time:按提交时间设置有效期 |
|||
time_limit_rule text utf8mb4_general_ci YES NULL select,insert,update,references 核销凭证时间限制规则,json格式 |
|||
voucher_content_rule text utf8mb4_general_ci YES NULL select,insert,update,references 核销凭证内容,json格式 |
|||
success_after_action text utf8mb4_general_ci YES NULL select,insert,update,references 填写成功后续操作 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **提交规则配置**: 配置表单的提交次数限制、时间限制等规则 |
|||
- **验证规则管理**: 设置表单提交时的数据验证规则和要求 |
|||
- **通知配置**: 配置表单提交后的通知方式和接收人 |
|||
- **权限控制**: 设置表单提交的权限要求和访问控制 |
|||
- **状态管理**: 管理表单的启用/禁用状态和提交开关 |
|||
- **限制设置**: 设置单用户提交次数、总提交次数等限制 |
|||
- **时间控制**: 配置表单的开放时间和截止时间 |
|||
- **审核配置**: 设置表单提交后的审核流程和规则 |
|||
- **数据处理**: 配置提交数据的处理方式和存储规则 |
|||
|
|||
### 业务场景 |
|||
- **报名表单**: 配置课程报名表单的提交限制和验证规则 |
|||
- **调查问卷**: 设置问卷调查的提交次数和时间限制 |
|||
- **申请表单**: 配置各类申请表单的审核流程和通知 |
|||
- **反馈表单**: 设置用户反馈表单的提交规则和处理方式 |
|||
- **考试报名**: 配置考试报名表单的时间限制和资格验证 |
|||
- **活动报名**: 设置活动报名表单的人数限制和条件 |
|||
- **信息收集**: 配置信息收集表单的数据验证和处理 |
|||
- **预约表单**: 设置预约表单的时间限制和冲突检查 |
|||
- **评价表单**: 配置课程评价表单的提交规则和统计 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_form`: 自定义表单表 (form_id) |
|||
- `school_diy_form_records`: 表单记录表 (提交记录) |
|||
- `school_member`: 会员信息表 (提交权限) |
|||
- `school_student`: 学生信息表 (学员权限) |
|||
- `school_personnel`: 人员信息表 (教职工权限) |
|||
- `school_course`: 课程信息表 (课程相关表单) |
|||
- `school_class`: 班级信息表 (班级相关表单) |
|||
- `sys_log`: 系统日志表 (配置变更日志) |
|||
|
|||
### 关联说明 |
|||
- **表单关联**: form_id关联到school_diy_form表,确定配置所属表单 |
|||
- **提交记录**: 与school_diy_form_records表关联,控制提交行为 |
|||
- **用户权限**: 通过member_id等关联用户信息,控制提交权限 |
|||
- **业务关联**: 可能关联课程、班级等业务对象 |
|||
- **配置继承**: 子表单可以继承父表单的提交配置 |
|||
- **规则应用**: 配置规则应用到实际的表单提交过程 |
|||
- **通知关联**: 提交后的通知与用户和管理员关联 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- form_id (表单配置查询) |
|||
- site_id (站点配置查询) |
|||
- **唯一索引**: form_id (每个表单唯一配置) |
|||
- **业务索引**: |
|||
- status (状态查询) |
|||
- submit_limit_type (限制类型查询) |
|||
- is_need_login (登录要求查询) |
|||
- is_need_verify (验证要求查询) |
|||
- **复合索引**: |
|||
- (site_id, status) (站点状态查询) |
|||
- (form_id, status) (表单状态查询) |
|||
- (submit_limit_type, submit_limit_num) (限制规则查询) |
|||
- **时间索引**: |
|||
- submit_start_time (开始时间查询) |
|||
- submit_end_time (结束时间查询) |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **统计索引**: |
|||
- submit_limit_num (限制数量统计) |
|||
- total_submit_num (总提交数统计) |
|||
|
|||
## 注意事项 |
|||
- **表单关联完整性**: form_id必须对应有效的表单记录 |
|||
- **时间逻辑一致性**: submit_start_time必须小于submit_end_time |
|||
- **限制规则合理性**: submit_limit_num必须为正数且合理 |
|||
- **状态管理**: status变更需要考虑已有提交记录的影响 |
|||
- **权限验证**: is_need_login和is_need_verify需要与实际验证逻辑一致 |
|||
- **时间有效性**: 需要定期检查表单的时间有效性 |
|||
- **限制计数**: submit_limit_num的计数需要准确维护 |
|||
- **并发控制**: 高并发提交时需要考虑限制数量的准确性 |
|||
- **配置缓存**: 频繁查询的配置可以使用缓存提高性能 |
|||
- **变更影响**: 配置变更可能影响正在进行的提交流程 |
|||
- **数据一致性**: 配置与实际提交行为需要保持一致 |
|||
- **审核流程**: 如果启用审核,需要配置相应的审核人员 |
|||
- **通知设置**: 通知配置需要确保接收人的有效性 |
|||
- **备份恢复**: 重要配置需要定期备份 |
|||
- **权限控制**: 配置修改需要严格的权限控制 |
|||
- **日志记录**: 配置变更需要详细的日志记录 |
|||
- **性能监控**: 监控配置对表单提交性能的影响 |
|||
- **兼容性**: 配置变更需要考虑向后兼容性 |
|||
@ -0,0 +1,113 @@ |
|||
# school_diy_form_write_config 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_form_write_config |
|||
**功能**: 自定义表单填写配置表,负责管理教务系统中表单的填写权限、规则和限制,包括填写方式、参与人员、次数限制、时间控制等表单填写行为的详细配置 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键id |
|||
form_id int NULL NO 0 select,insert,update,references 所属万能表单id |
|||
write_way varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 填写方式,no_limit:不限制,scan:仅限微信扫一扫,url:仅限链接进入 |
|||
join_member_type varchar(255) utf8mb4_general_ci NO all_member select,insert,update,references 参与会员,all_member:所有会员参与,selected_member_level:指定会员等级,selected_member_label:指定会员标签 |
|||
level_ids text utf8mb4_general_ci YES NULL select,insert,update,references 会员等级id集合 |
|||
label_ids text utf8mb4_general_ci YES NULL select,insert,update,references 会员标签id集合 |
|||
member_write_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 每人可填写次数,no_limit:不限制,diy:自定义 |
|||
member_write_rule text utf8mb4_general_ci NO NULL select,insert,update,references 每人可填写次数自定义规则 |
|||
form_write_type varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 表单可填写数量,no_limit:不限制,diy:自定义 |
|||
form_write_rule text utf8mb4_general_ci NO NULL select,insert,update,references 表单可填写总数自定义规则 |
|||
time_limit_type varchar(255) utf8mb4_general_ci NO 0 select,insert,update,references 填写时间限制类型,no_limit:不限制, specify_time:指定开始结束时间,open_day_time:设置每日开启时间 |
|||
time_limit_rule text utf8mb4_general_ci NO NULL select,insert,update,references 填写时间限制规则 |
|||
is_allow_update_content tinyint NULL NO 0 select,insert,update,references 是否允许修改自己填写的内容,0:否,1:是 |
|||
write_instruction text utf8mb4_general_ci YES NULL select,insert,update,references 表单填写须知 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **填写方式控制**: 配置表单的填写入口方式(不限制、扫码、链接) |
|||
- **参与人员管理**: 设置表单填写的参与人员范围和权限 |
|||
- **会员等级限制**: 基于会员等级控制表单填写权限 |
|||
- **会员标签筛选**: 通过会员标签精确控制参与人员 |
|||
- **次数限制管理**: 设置个人和表单总体的填写次数限制 |
|||
- **时间控制**: 配置表单的开放时间和填写时间限制 |
|||
- **修改权限**: 控制用户是否可以修改已填写的内容 |
|||
- **填写须知**: 提供表单填写的说明和注意事项 |
|||
- **规则引擎**: 支持复杂的填写规则配置和验证 |
|||
|
|||
### 业务场景 |
|||
- **课程报名**: 配置课程报名表单的参与人员和时间限制 |
|||
- **活动报名**: 设置活动报名的人数限制和资格要求 |
|||
- **问卷调查**: 配置调查问卷的填写次数和时间范围 |
|||
- **考试报名**: 设置考试报名的资格限制和截止时间 |
|||
- **信息收集**: 配置信息收集表单的填写权限和规则 |
|||
- **预约服务**: 设置服务预约的时间限制和人员范围 |
|||
- **反馈收集**: 配置反馈表单的填写频次和修改权限 |
|||
- **申请审批**: 设置申请表单的填写资格和时间控制 |
|||
- **会员专享**: 配置会员专享表单的等级和标签限制 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_form`: 自定义表单表 (form_id) |
|||
- `school_member_level`: 会员等级表 (level_ids) |
|||
- `school_member_label`: 会员标签表 (label_ids) |
|||
- `school_diy_form_records`: 表单记录表 (填写记录) |
|||
- `school_member`: 会员信息表 (参与人员) |
|||
- `school_student`: 学生信息表 (学员参与) |
|||
- `school_personnel`: 人员信息表 (教职工参与) |
|||
- `sys_log`: 系统日志表 (配置变更日志) |
|||
|
|||
### 关联说明 |
|||
- **表单关联**: form_id关联到school_diy_form表,确定配置所属表单 |
|||
- **等级关联**: level_ids关联到school_member_level表,控制等级权限 |
|||
- **标签关联**: label_ids关联到school_member_label表,筛选参与人员 |
|||
- **记录关联**: 与school_diy_form_records表关联,统计填写次数 |
|||
- **用户关联**: 通过会员、学生、人员表控制填写权限 |
|||
- **规则应用**: 配置规则应用到实际的表单填写过程 |
|||
- **权限验证**: 填写时验证用户是否符合配置要求 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: form_id (表单配置查询) |
|||
- **唯一索引**: form_id (每个表单唯一配置) |
|||
- **业务索引**: |
|||
- write_way (填写方式查询) |
|||
- join_member_type (参与类型查询) |
|||
- member_write_type (个人次数类型查询) |
|||
- form_write_type (表单次数类型查询) |
|||
- time_limit_type (时间限制类型查询) |
|||
- is_allow_update_content (修改权限查询) |
|||
- **复合索引**: |
|||
- (form_id, write_way) (表单填写方式查询) |
|||
- (join_member_type, member_write_type) (参与规则查询) |
|||
- (time_limit_type, form_write_type) (时间次数规则查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **全文索引**: |
|||
- write_instruction (填写须知搜索) |
|||
|
|||
## 注意事项 |
|||
- **表单关联完整性**: form_id必须对应有效的表单记录 |
|||
- **等级ID格式**: level_ids需要使用正确的JSON或逗号分隔格式 |
|||
- **标签ID格式**: label_ids需要使用正确的JSON或逗号分隔格式 |
|||
- **规则JSON格式**: 各种rule字段需要使用有效的JSON格式 |
|||
- **填写方式枚举**: write_way必须是预定义的枚举值 |
|||
- **参与类型一致性**: join_member_type与level_ids、label_ids的使用要一致 |
|||
- **次数限制合理性**: 填写次数限制必须为正数且合理 |
|||
- **时间规则有效性**: 时间限制规则需要符合逻辑和格式要求 |
|||
- **权限验证**: 填写时需要严格验证用户是否符合配置要求 |
|||
- **规则缓存**: 频繁查询的配置规则可以使用缓存 |
|||
- **并发控制**: 次数限制在高并发时需要准确控制 |
|||
- **配置变更影响**: 配置变更可能影响正在进行的填写流程 |
|||
- **数据一致性**: 配置与实际填写行为需要保持一致 |
|||
- **备份恢复**: 重要配置需要定期备份 |
|||
- **权限控制**: 配置修改需要严格的权限控制 |
|||
- **日志记录**: 配置变更需要详细的日志记录 |
|||
- **性能监控**: 监控配置对表单填写性能的影响 |
|||
- **兼容性**: 配置变更需要考虑向后兼容性 |
|||
@ -0,0 +1,113 @@ |
|||
# school_diy_page 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_page |
|||
**功能**: 自定义页面管理表,负责管理教务系统中的自定义页面内容,包括页面设计、内容编辑、布局配置、发布管理等页面构建和展示功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
page_title varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面名称(用于后台展示) |
|||
title varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面标题(用于前台展示) |
|||
name varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面标识 |
|||
type varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面模板 |
|||
template varchar(255) utf8mb4_general_ci NO select,insert,update,references 模板名称 |
|||
mode varchar(255) utf8mb4_general_ci NO diy select,insert,update,references 页面展示模式,diy:自定义,fixed:固定 |
|||
value longtext utf8mb4_general_ci YES NULL select,insert,update,references 页面数据,json格式 |
|||
is_default int NULL NO 0 select,insert,update,references 是否默认页面,1:是,0:否 |
|||
is_change int NULL NO 0 select,insert,update,references 数据是否发生过变化,1:变化了,2:没有 |
|||
share varchar(1000) utf8mb4_general_ci NO select,insert,update,references 分享内容 |
|||
visit_count int NULL NO 0 select,insert,update,references 访问量 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **页面内容管理**: 管理自定义页面的标题、内容和描述信息 |
|||
- **页面设计配置**: 支持页面的布局设计和样式配置 |
|||
- **页面状态控制**: 管理页面的发布状态和可见性 |
|||
- **页面分类管理**: 支持页面的分类和标签管理 |
|||
- **页面模板系统**: 提供页面模板的创建和应用 |
|||
- **内容编辑器**: 支持富文本编辑和可视化编辑 |
|||
- **页面预览**: 提供页面预览和实时编辑功能 |
|||
- **SEO优化**: 支持页面的SEO设置和优化 |
|||
- **访问统计**: 记录页面的访问量和用户行为 |
|||
- **版本管理**: 支持页面内容的版本控制和回滚 |
|||
|
|||
### 业务场景 |
|||
- **学校介绍**: 创建学校简介、师资力量等展示页面 |
|||
- **课程展示**: 制作课程详情、教学大纲等介绍页面 |
|||
- **活动宣传**: 设计活动介绍、报名须知等宣传页面 |
|||
- **新闻公告**: 发布学校新闻、通知公告等信息页面 |
|||
- **招生简章**: 制作招生政策、报名流程等说明页面 |
|||
- **教学资源**: 创建学习资料、教学视频等资源页面 |
|||
- **联系我们**: 设计联系方式、地址导航等信息页面 |
|||
- **帮助中心**: 制作使用说明、常见问题等帮助页面 |
|||
- **政策制度**: 发布学校规章、管理制度等政策页面 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_route`: 自定义路由表 (页面路由配置) |
|||
- `school_addon`: 插件表 (页面功能扩展) |
|||
- `sys_attachment`: 附件表 (页面图片、文件) |
|||
- `school_member`: 会员表 (页面访问权限) |
|||
- `school_personnel`: 人员表 (页面编辑权限) |
|||
- `sys_log`: 系统日志表 (页面操作日志) |
|||
- `school_site_config`: 站点配置表 (页面全局设置) |
|||
- `school_navigation`: 导航表 (页面导航链接) |
|||
|
|||
### 关联说明 |
|||
- **路由关联**: 与school_diy_route表关联,配置页面的访问路由 |
|||
- **插件关联**: 通过school_addon表扩展页面功能和组件 |
|||
- **附件关联**: 与sys_attachment表关联,管理页面中的图片和文件 |
|||
- **权限关联**: 通过会员和人员表控制页面的访问和编辑权限 |
|||
- **日志关联**: 与sys_log表关联,记录页面的操作和访问日志 |
|||
- **配置关联**: 与站点配置表关联,应用全局页面设置 |
|||
- **导航关联**: 与导航表关联,将页面添加到网站导航中 |
|||
- **内容关联**: 页面内容可能引用其他业务数据和信息 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- title (页面标题查询) |
|||
- status (页面状态查询) |
|||
- type (页面类型查询) |
|||
- is_published (发布状态查询) |
|||
- sort_order (排序查询) |
|||
- **复合索引**: |
|||
- (type, status) (类型状态查询) |
|||
- (is_published, sort_order) (发布排序查询) |
|||
- (status, create_time) (状态时间查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- publish_time (发布时间查询) |
|||
- **全文索引**: |
|||
- title (标题搜索) |
|||
- content (内容搜索) |
|||
- description (描述搜索) |
|||
|
|||
## 注意事项 |
|||
- **内容安全**: 页面内容需要进行XSS和SQL注入防护 |
|||
- **HTML验证**: 页面HTML内容需要验证格式和安全性 |
|||
- **图片处理**: 页面图片需要压缩优化和格式转换 |
|||
- **缓存策略**: 页面内容需要合理的缓存策略提升性能 |
|||
- **SEO优化**: 页面需要设置合适的标题、关键词和描述 |
|||
- **响应式设计**: 页面需要适配不同设备和屏幕尺寸 |
|||
- **加载性能**: 页面内容和资源需要优化加载速度 |
|||
- **版本控制**: 重要页面修改需要保留历史版本 |
|||
- **权限控制**: 页面编辑和发布需要严格的权限控制 |
|||
- **内容审核**: 页面发布前需要内容审核和质量检查 |
|||
- **备份恢复**: 页面内容需要定期备份和恢复机制 |
|||
- **链接检查**: 页面中的链接需要定期检查有效性 |
|||
- **移动适配**: 页面需要在移动端有良好的显示效果 |
|||
- **搜索优化**: 页面内容需要便于搜索引擎收录 |
|||
- **用户体验**: 页面设计需要注重用户体验和易用性 |
|||
- **数据统计**: 需要统计页面的访问量和用户行为 |
|||
- **错误处理**: 页面加载失败需要友好的错误提示 |
|||
- **国际化**: 多语言环境下需要支持国际化 |
|||
@ -0,0 +1,107 @@ |
|||
# school_diy_route 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_route |
|||
**功能**: 自定义路由管理表,负责管理教务系统中的自定义页面路由配置,包括路由规则、访问控制、重定向设置、SEO优化等路由管理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
title varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面名称 |
|||
name varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面标识 |
|||
page varchar(255) utf8mb4_general_ci NO select,insert,update,references 页面路径 |
|||
share varchar(1000) utf8mb4_general_ci NO select,insert,update,references 分享内容 |
|||
is_share int NULL NO 0 select,insert,update,references 是否支持分享 |
|||
sort int NULL NO 0 select,insert,update,references 排序 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **路由规则管理**: 配置自定义页面的访问路径和路由规则 |
|||
- **URL美化**: 提供友好的URL格式和SEO优化路径 |
|||
- **访问控制**: 设置路由的访问权限和用户限制 |
|||
- **重定向管理**: 配置页面重定向和跳转规则 |
|||
- **参数传递**: 支持路由参数的定义和传递 |
|||
- **路由缓存**: 提供路由缓存机制提升访问性能 |
|||
- **多语言路由**: 支持多语言环境下的路由配置 |
|||
- **移动端适配**: 配置移动端专用的路由规则 |
|||
- **路由监控**: 监控路由的访问情况和性能指标 |
|||
- **动态路由**: 支持动态生成和配置路由规则 |
|||
|
|||
### 业务场景 |
|||
- **页面访问**: 为自定义页面配置友好的访问路径 |
|||
- **SEO优化**: 设置搜索引擎友好的URL结构 |
|||
- **权限控制**: 根据用户权限控制页面访问 |
|||
- **多语言支持**: 配置不同语言版本的页面路由 |
|||
- **移动适配**: 为移动端用户提供专门的页面路由 |
|||
- **营销推广**: 配置营销活动页面的专用路由 |
|||
- **API接口**: 为前端API调用配置路由规则 |
|||
- **静态资源**: 管理静态资源文件的访问路由 |
|||
- **错误处理**: 配置404、500等错误页面路由 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_page`: 自定义页面表 (page_id) |
|||
- `school_addon`: 插件表 (路由功能扩展) |
|||
- `school_member`: 会员表 (访问权限控制) |
|||
- `school_personnel`: 人员表 (管理权限控制) |
|||
- `sys_log`: 系统日志表 (路由访问日志) |
|||
- `school_site_config`: 站点配置表 (全局路由设置) |
|||
- `school_navigation`: 导航表 (导航链接路由) |
|||
- `sys_attachment`: 附件表 (静态资源路由) |
|||
|
|||
### 关联说明 |
|||
- **页面关联**: page_id关联到school_diy_page表,确定路由对应的页面 |
|||
- **插件关联**: 通过school_addon表扩展路由功能和中间件 |
|||
- **权限关联**: 与会员和人员表关联,控制路由的访问权限 |
|||
- **日志关联**: 与sys_log表关联,记录路由的访问和操作日志 |
|||
- **配置关联**: 与站点配置表关联,应用全局路由设置 |
|||
- **导航关联**: 与导航表关联,为导航项配置路由 |
|||
- **资源关联**: 与附件表关联,管理静态资源的路由访问 |
|||
- **业务关联**: 路由可能关联到各种业务模块和功能 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: page_id (页面路由查询) |
|||
- **唯一索引**: |
|||
- route_path (路由路径唯一性) |
|||
- (domain, route_path) (域名路径组合唯一) |
|||
- **业务索引**: |
|||
- status (路由状态查询) |
|||
- type (路由类型查询) |
|||
- is_active (激活状态查询) |
|||
- priority (优先级排序) |
|||
- **复合索引**: |
|||
- (status, is_active) (状态激活查询) |
|||
- (type, priority) (类型优先级查询) |
|||
- (domain, status) (域名状态查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **全文索引**: |
|||
- route_name (路由名称搜索) |
|||
- description (描述搜索) |
|||
|
|||
## 注意事项 |
|||
- **路径唯一性**: route_path在同一域名下必须保持唯一 |
|||
- **页面关联完整性**: page_id必须对应有效的页面记录 |
|||
- **路由格式验证**: 路由路径需要符合URL规范和格式要求 |
|||
- **权限验证**: 路由访问需要严格的权限验证机制 |
|||
- **缓存策略**: 路由规则需要合理的缓存策略提升性能 |
|||
- **重定向循环**: 避免重定向规则造成的无限循环 |
|||
- **SEO友好**: 路由设计需要考虑搜索引擎优化 |
|||
- **参数安全**: 路由参数需要进行安全验证和过滤 |
|||
- **性能监控**: 监控路由的访问性能和响应时间 |
|||
- **错误处理**: 路由匹配失败需要友好的错误处理 |
|||
- **版本兼容**: 路由变更需要考虑向后兼容性 |
|||
- **多语言支持**: 多语言环境下路由配置的一致性 |
|||
- **移动适配**: 移动端路由的特殊处理和优化 |
|||
- **安全防护**: 防止路由注入和恶意访问 |
|||
- **日志记录**: 详细记录路由的访问和操作日志 |
|||
- **备份恢复**: 重要路由配置需要备份和恢复机制 |
|||
- **测试验证**: 路由配置变更需要充分的测试验证 |
|||
- **文档维护**: 保持路由配置文档的及时更新 |
|||
@ -0,0 +1,104 @@ |
|||
# school_diy_theme 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_diy_theme |
|||
**功能**: 自定义主题配色管理表,负责管理教务系统中的界面主题和配色方案,包括主题创建、配色设置、模式切换等界面个性化定制功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
title varchar(255) utf8mb4_general_ci NO select,insert,update,references 标题 |
|||
type varchar(255) utf8mb4_general_ci NO select,insert,update,references 插件类型app,addon |
|||
addon varchar(255) utf8mb4_general_ci NO select,insert,update,references 所属应用,app:系统,shop:商城、o2o:上门服务 |
|||
color_mark varchar(255) utf8mb4_general_ci NO select,insert,update,references 颜色标识 |
|||
color_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 颜色名称 |
|||
mode varchar(255) utf8mb4_general_ci NO select,insert,update,references 模式,default:默认【跟随系统】,diy:自定义配色 |
|||
value text utf8mb4_general_ci YES NULL select,insert,update,references 配色 |
|||
diy_value text utf8mb4_general_ci YES NULL select,insert,update,references 自定义配色 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **主题管理**: 创建和管理不同的界面主题方案 |
|||
- **配色设置**: 设置和调整系统的配色方案 |
|||
- **模式切换**: 支持默认模式和自定义模式的切换 |
|||
- **颜色标识**: 为不同主题设置颜色标识和名称 |
|||
- **应用适配**: 支持不同应用模块的主题适配 |
|||
- **配色预览**: 提供主题配色的预览功能 |
|||
- **主题导入导出**: 支持主题配置的导入和导出 |
|||
- **版本管理**: 管理主题的版本和更新 |
|||
- **用户个性化**: 支持用户个性化主题设置 |
|||
- **主题分享**: 支持主题配置的分享和复用 |
|||
|
|||
### 业务场景 |
|||
- **品牌定制**: 根据机构品牌色彩定制系统主题 |
|||
- **节日主题**: 在特殊节日使用特定的主题配色 |
|||
- **用户体验**: 提供多样化的界面风格选择 |
|||
- **视觉识别**: 通过主题强化品牌视觉识别 |
|||
- **季节变换**: 根据季节变化调整系统配色 |
|||
- **活动推广**: 配合营销活动使用特定主题 |
|||
- **个性化服务**: 为不同用户群体提供个性化界面 |
|||
- **无障碍设计**: 提供高对比度等无障碍主题 |
|||
- **夜间模式**: 提供护眼的夜间模式主题 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_diy_page`: 自定义页面表 (主题应用) |
|||
- `school_sys_config`: 系统配置表 (默认主题设置) |
|||
- `school_sys_user`: 系统用户表 (用户主题偏好) |
|||
- `school_campus`: 校区表 (校区主题定制) |
|||
- `school_addon`: 插件表 (插件主题适配) |
|||
- `school_web_adv`: 网站广告表 (主题适配) |
|||
- `school_template_message`: 模板消息表 (主题色彩) |
|||
- `sys_log`: 系统日志表 (主题操作日志) |
|||
|
|||
### 关联说明 |
|||
- **页面关联**: 自定义页面应用特定的主题配色 |
|||
- **配置关联**: 系统配置中设置默认主题 |
|||
- **用户关联**: 用户可以设置个人主题偏好 |
|||
- **校区关联**: 不同校区可以使用不同的主题 |
|||
- **插件关联**: 插件模块适配相应的主题风格 |
|||
- **广告关联**: 广告内容与主题色彩协调 |
|||
- **消息关联**: 消息模板使用主题配色 |
|||
- **日志关联**: 记录主题的操作和变更历史 |
|||
- **业务关联**: 各业务模块应用统一的主题风格 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- type (插件类型查询) |
|||
- addon (应用类型查询) |
|||
- mode (模式查询) |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **复合索引**: |
|||
- (type, addon) (类型应用查询) |
|||
- (addon, mode) (应用模式查询) |
|||
- **全文索引**: |
|||
- title (主题标题搜索) |
|||
- color_name (颜色名称搜索) |
|||
|
|||
## 注意事项 |
|||
- **主题兼容性**: 确保主题在不同设备和浏览器上的兼容性 |
|||
- **配色规范**: 遵循UI设计规范和无障碍设计标准 |
|||
- **性能影响**: 主题切换不应影响系统性能 |
|||
- **数据格式**: value和diy_value字段存储JSON格式数据 |
|||
- **默认主题**: 系统必须有一个默认主题作为备选 |
|||
- **颜色对比度**: 确保文字和背景有足够的对比度 |
|||
- **主题缓存**: 主题配置应该合理缓存提升加载速度 |
|||
- **版本控制**: 主题更新时需要考虑向后兼容性 |
|||
- **用户体验**: 主题切换应该平滑无闪烁 |
|||
- **移动适配**: 主题在移动端的显示效果 |
|||
- **品牌一致性**: 主题设计应符合机构品牌形象 |
|||
- **配色数量**: 避免过多的配色选项影响用户选择 |
|||
- **主题测试**: 新主题上线前需要充分测试 |
|||
- **回滚机制**: 主题出现问题时的快速回滚机制 |
|||
- **用户反馈**: 收集用户对主题的反馈和建议 |
|||
- **定期更新**: 定期更新主题以保持界面的现代感 |
|||
- **数据备份**: 重要主题配置需要备份 |
|||
@ -0,0 +1,109 @@ |
|||
# school_document_data_source_config 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_document_data_source_config |
|||
**功能**: 文档数据源配置表,负责管理教务系统中文档生成的数据源配置,包括数据源定义、字段映射、查询条件等文档数据获取和处理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
contract_id int NULL NO MUL NULL select,insert,update,references 合同ID |
|||
placeholder varchar(255) utf8mb4_0900_ai_ci NO NULL select,insert,update,references 占位符 |
|||
data_type enum('database','system','user_input','sign_img','signature') utf8mb4_0900_ai_ci YES user_input select,insert,update,references 数据类型 |
|||
system_function varchar(100) utf8mb4_0900_ai_ci YES select,insert,update,references 系统函数名称 |
|||
table_name varchar(100) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 数据表名 |
|||
field_name varchar(100) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 字段名 |
|||
field_type varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 字段类型 |
|||
is_required tinyint NULL YES 0 select,insert,update,references 是否必填 |
|||
default_value text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 默认值 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references |
|||
validation_rule text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 数据验证规则,JSON格式存储 |
|||
sign_party enum('party_a','party_b') utf8mb4_0900_ai_ci YES NULL select,insert,update,references 签署方:party_a-甲方,party_b-乙方 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **数据源管理**: 配置和管理文档生成的数据源 |
|||
- **字段映射**: 定义数据源字段与文档模板的映射关系 |
|||
- **查询配置**: 设置数据查询的条件和参数 |
|||
- **数据过滤**: 配置数据筛选和过滤规则 |
|||
- **格式转换**: 处理数据格式转换和标准化 |
|||
- **关联查询**: 配置多表关联查询逻辑 |
|||
- **数据验证**: 验证数据源的有效性和完整性 |
|||
- **缓存策略**: 配置数据缓存和更新策略 |
|||
- **权限控制**: 控制数据源的访问权限 |
|||
- **版本管理**: 管理数据源配置的版本和变更 |
|||
|
|||
### 业务场景 |
|||
- **成绩单生成**: 配置学生成绩数据源生成成绩单 |
|||
- **证书制作**: 配置学员信息数据源生成证书 |
|||
- **报表生成**: 配置统计数据源生成各类报表 |
|||
- **通知书制作**: 配置学员数据生成入学通知书 |
|||
- **档案整理**: 配置学员档案数据生成档案文件 |
|||
- **财务报表**: 配置财务数据生成财务报表 |
|||
- **教学计划**: 配置课程数据生成教学计划文档 |
|||
- **考试安排**: 配置考试数据生成考试安排表 |
|||
- **毕业证书**: 配置毕业生数据生成毕业证书 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_document_template`: 文档模板表 (模板数据源) |
|||
- `school_document_generate_log`: 文档生成日志表 (生成记录) |
|||
- `school_student`: 学员表 (学员数据源) |
|||
- `school_course`: 课程表 (课程数据源) |
|||
- `school_class`: 班级表 (班级数据源) |
|||
- `school_teacher`: 教师表 (教师数据源) |
|||
- `school_exam`: 考试表 (考试数据源) |
|||
- `school_grade`: 成绩表 (成绩数据源) |
|||
- `school_finance`: 财务表 (财务数据源) |
|||
- `sys_config`: 系统配置表 (配置参数) |
|||
|
|||
### 关联说明 |
|||
- **模板关联**: 文档模板使用特定的数据源配置 |
|||
- **日志关联**: 记录数据源在文档生成中的使用情况 |
|||
- **学员关联**: 学员相关文档使用学员数据源 |
|||
- **课程关联**: 课程相关文档使用课程数据源 |
|||
- **班级关联**: 班级相关文档使用班级数据源 |
|||
- **教师关联**: 教师相关文档使用教师数据源 |
|||
- **考试关联**: 考试相关文档使用考试数据源 |
|||
- **成绩关联**: 成绩相关文档使用成绩数据源 |
|||
- **财务关联**: 财务相关文档使用财务数据源 |
|||
- **配置关联**: 系统配置影响数据源的行为 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- template_id (模板查询) |
|||
- data_source_type (数据源类型查询) |
|||
- status (状态查询) |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **复合索引**: |
|||
- (template_id, data_source_type) (模板数据源查询) |
|||
- (data_source_type, status) (类型状态查询) |
|||
- **全文索引**: |
|||
- name (数据源名称搜索) |
|||
- description (描述搜索) |
|||
|
|||
## 注意事项 |
|||
- **数据安全**: 确保数据源配置不泄露敏感信息 |
|||
- **性能优化**: 合理配置查询条件避免性能问题 |
|||
- **数据一致性**: 确保数据源配置与实际数据结构一致 |
|||
- **权限控制**: 严格控制数据源的访问权限 |
|||
- **配置验证**: 数据源配置变更前需要验证有效性 |
|||
- **版本兼容**: 数据源配置变更需要考虑向后兼容性 |
|||
- **错误处理**: 完善的错误处理和异常捕获机制 |
|||
- **日志记录**: 详细记录数据源的使用和变更日志 |
|||
- **缓存管理**: 合理使用缓存提升数据获取效率 |
|||
- **数据格式**: config字段存储JSON格式的配置信息 |
|||
- **查询优化**: 优化数据源查询语句提升性能 |
|||
- **连接管理**: 合理管理数据库连接避免连接泄露 |
|||
- **事务处理**: 涉及多表操作时注意事务一致性 |
|||
- **监控告警**: 监控数据源的可用性和性能 |
|||
- **备份恢复**: 重要配置需要定期备份 |
|||
- **文档同步**: 配置变更时同步更新相关文档 |
|||
@ -0,0 +1,118 @@ |
|||
# school_document_data_source_config_backup 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_document_data_source_config_backup |
|||
**功能**: 文档数据源配置备份表,用于备份和管理文档生成时的数据源配置信息 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 配置ID |
|||
contract_id int NULL NO MUL 0 select,insert,update,references 合同ID |
|||
table_name varchar(64) utf8mb4_general_ci NO MUL NULL select,insert,update,references 数据表名 |
|||
table_alias varchar(64) utf8mb4_general_ci YES NULL select,insert,update,references 表别名(显示名称) |
|||
field_name varchar(64) utf8mb4_general_ci NO NULL select,insert,update,references 字段名 |
|||
field_alias varchar(64) utf8mb4_general_ci YES NULL select,insert,update,references 字段别名(显示名称) |
|||
field_type varchar(32) utf8mb4_general_ci YES text select,insert,update,references 字段类型:text-文本,number-数字,date-日期,datetime-日期时间 |
|||
is_active tinyint(1) NULL YES MUL 1 select,insert,update,references 是否启用:1-启用,0-禁用 |
|||
sort_order int NULL YES 0 select,insert,update,references 排序 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **配置备份**: 备份文档生成时使用的数据源配置信息 |
|||
- **合同关联**: 通过contract_id关联具体的合同文档 |
|||
- **表结构映射**: 记录数据表名和字段名的映射关系 |
|||
- **别名管理**: 管理表名和字段名的显示别名,提高可读性 |
|||
- **字段类型**: 定义字段的数据类型(文本、数字、日期等) |
|||
- **状态控制**: 通过is_active控制配置的启用状态 |
|||
- **排序管理**: 通过sort_order控制字段的显示顺序 |
|||
- **版本控制**: 记录配置的创建和更新时间,支持版本追踪 |
|||
- **数据恢复**: 在配置丢失时可以从备份中恢复 |
|||
- **配置审计**: 提供配置变更的审计追踪功能 |
|||
|
|||
### 业务场景 |
|||
- **合同文档生成**: 为合同文档生成提供数据源配置备份 |
|||
- **报表模板**: 为各类报表模板提供数据字段配置 |
|||
- **文档模板**: 为文档模板系统提供数据源映射配置 |
|||
- **数据导出**: 为数据导出功能提供字段配置信息 |
|||
- **配置恢复**: 在系统故障时恢复数据源配置 |
|||
- **版本管理**: 管理不同版本的数据源配置 |
|||
- **配置迁移**: 在系统升级时迁移配置数据 |
|||
- **模板复制**: 复制现有模板的数据源配置 |
|||
- **批量处理**: 批量处理多个合同的配置备份 |
|||
- **配置审计**: 审计配置变更历史和操作记录 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_contract**: 合同表,通过contract_id关联合同信息 |
|||
- **school_document_data_source_config**: 原始数据源配置表 |
|||
- **school_document_template**: 文档模板表,关联模板信息 |
|||
- **school_document_generate_log**: 文档生成日志表,关联生成记录 |
|||
- **school_sys_user**: 系统用户表,关联配置操作用户 |
|||
- **school_member**: 会员表,合同相关的会员信息 |
|||
- **school_course**: 课程表,课程相关的合同配置 |
|||
- **school_campus**: 校区表,校区相关的配置信息 |
|||
|
|||
### 关联说明 |
|||
- `contract_id` 关联 `school_contract.id`,标识配置所属的合同 |
|||
- `table_name` 标识数据源表名,对应系统中的实际数据表 |
|||
- `field_name` 标识具体的字段名,对应表中的实际字段 |
|||
- `table_alias` 和 `field_alias` 提供用户友好的显示名称 |
|||
- **配置关联**: 与原始配置表关联,实现配置的备份和恢复 |
|||
- **模板关联**: 与文档模板关联,支持模板的数据源配置 |
|||
- **合同关联**: 与合同表关联,获取合同的详细信息 |
|||
- **日志关联**: 与生成日志关联,追踪配置的使用情况 |
|||
- **用户关联**: 与用户表关联,记录配置的操作者 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 合同ID索引(用于查询合同的配置备份) |
|||
INDEX idx_contract_id (contract_id) |
|||
|
|||
-- 表名索引(用于按表查询配置) |
|||
INDEX idx_table_name (table_name) |
|||
|
|||
-- 启用状态索引(用于查询启用的配置) |
|||
INDEX idx_is_active (is_active) |
|||
|
|||
-- 创建时间索引(用于按时间查询) |
|||
INDEX idx_created_at (created_at) |
|||
|
|||
-- 更新时间索引(用于按更新时间查询) |
|||
INDEX idx_updated_at (updated_at) |
|||
|
|||
-- 复合索引(用于查询合同的启用配置) |
|||
INDEX idx_contract_active (contract_id, is_active) |
|||
|
|||
-- 复合索引(用于查询表的字段配置) |
|||
INDEX idx_table_field (table_name, field_name) |
|||
|
|||
-- 复合索引(用于排序查询) |
|||
INDEX idx_contract_sort (contract_id, sort_order) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **数据一致性**: 确保备份的配置与原始配置保持一致 |
|||
- **字段类型**: field_type字段值需要严格按照规范设置 |
|||
- **表名有效性**: table_name必须对应系统中实际存在的数据表 |
|||
- **字段名有效性**: field_name必须对应表中实际存在的字段 |
|||
- **别名唯一性**: 在同一合同内,别名应该保持唯一性 |
|||
- **排序合理性**: sort_order应该保证字段显示的合理顺序 |
|||
- **状态管理**: is_active状态变更需要考虑对文档生成的影响 |
|||
- **备份时机**: 在配置变更前应及时创建备份 |
|||
- **数据清理**: 定期清理过期或无效的配置备份 |
|||
- **权限控制**: 配置备份的查看和操作需要严格权限控制 |
|||
- **版本管理**: 通过时间戳实现配置的版本管理 |
|||
- **恢复验证**: 从备份恢复配置时需要验证数据完整性 |
|||
- **性能优化**: 大量配置查询时需要考虑缓存机制 |
|||
- **监控告警**: 监控配置备份的创建和使用情况 |
|||
- **数据备份**: 重要的配置备份数据需要定期备份到外部存储 |
|||
@ -0,0 +1,113 @@ |
|||
# school_document_generate_log 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_document_generate_log |
|||
**功能**: 文档生成日志表,负责记录教务系统中文档生成的操作日志,包括生成记录、状态跟踪、错误信息等文档生成过程的完整记录和监控功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
user_type int NULL NO 0 select,insert,update,references 人员类型1内部 2外部 |
|||
template_id int NULL NO MUL NULL select,insert,update,references 模板ID |
|||
template_name varchar(255) utf8mb4_0900_ai_ci YES select,insert,update,references 模板名称 |
|||
user_id int NULL NO NULL select,insert,update,references 操作用户 |
|||
user_name varchar(100) utf8mb4_0900_ai_ci YES select,insert,update,references 用户姓名 |
|||
business_id int NULL YES NULL select,insert,update,references 关联业务ID |
|||
business_type varchar(50) utf8mb4_0900_ai_ci YES select,insert,update,references 业务类型 |
|||
fill_data text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 填充数据JSON |
|||
original_data longtext utf8mb4_0900_ai_ci YES NULL select,insert,update,references 生成时使用的原始数据JSON |
|||
generated_file varchar(500) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 生成文件路径 |
|||
file_size bigint NULL YES 0 select,insert,update,references 生成文件大小 |
|||
download_count int NULL YES 0 select,insert,update,references 下载次数 |
|||
status enum('pending','processing','completed','failed') utf8mb4_0900_ai_ci YES MUL pending select,insert,update,references |
|||
error_msg text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 错误信息 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
completed_at timestamp NULL YES NULL select,insert,update,references 完成时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **生成记录**: 记录文档生成的完整过程和结果 |
|||
- **状态跟踪**: 跟踪文档生成的各个阶段状态 |
|||
- **错误日志**: 记录生成过程中的错误和异常信息 |
|||
- **性能监控**: 监控文档生成的耗时和性能指标 |
|||
- **用户追踪**: 记录文档生成的操作用户信息 |
|||
- **模板使用**: 记录使用的文档模板和数据源 |
|||
- **文件管理**: 管理生成的文档文件路径和存储信息 |
|||
- **批量处理**: 支持批量文档生成的日志记录 |
|||
- **审计追踪**: 提供完整的文档生成审计轨迹 |
|||
- **统计分析**: 支持文档生成的统计和分析功能 |
|||
|
|||
### 业务场景 |
|||
- **成绩单生成**: 记录学生成绩单的生成过程和结果 |
|||
- **证书制作**: 记录各类证书的制作日志和状态 |
|||
- **报表生成**: 记录各种报表的生成历史和性能 |
|||
- **通知书制作**: 记录入学通知书等文档的生成情况 |
|||
- **批量导出**: 记录批量文档导出的处理过程 |
|||
- **定时任务**: 记录定时生成文档任务的执行情况 |
|||
- **错误排查**: 通过日志排查文档生成失败的原因 |
|||
- **性能优化**: 分析生成耗时优化文档生成性能 |
|||
- **合规审计**: 提供文档生成的合规性审计记录 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_document_template`: 文档模板表 (使用的模板) |
|||
- `school_document_data_source_config`: 数据源配置表 (使用的数据源) |
|||
- `school_student`: 学员表 (文档相关学员) |
|||
- `school_course`: 课程表 (文档相关课程) |
|||
- `school_class`: 班级表 (文档相关班级) |
|||
- `school_teacher`: 教师表 (文档相关教师) |
|||
- `school_exam`: 考试表 (文档相关考试) |
|||
- `sys_user`: 系统用户表 (操作用户) |
|||
- `sys_file`: 系统文件表 (生成的文件) |
|||
- `sys_log`: 系统日志表 (系统操作日志) |
|||
|
|||
### 关联说明 |
|||
- **模板关联**: 记录使用的文档模板信息 |
|||
- **数据源关联**: 记录使用的数据源配置 |
|||
- **学员关联**: 记录文档涉及的学员信息 |
|||
- **课程关联**: 记录文档涉及的课程信息 |
|||
- **班级关联**: 记录文档涉及的班级信息 |
|||
- **教师关联**: 记录文档涉及的教师信息 |
|||
- **考试关联**: 记录文档涉及的考试信息 |
|||
- **用户关联**: 记录执行文档生成的用户 |
|||
- **文件关联**: 关联生成的文档文件 |
|||
- **日志关联**: 与系统日志形成完整的操作记录 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- template_id (模板查询) |
|||
- user_id (用户查询) |
|||
- status (状态查询) |
|||
- generate_time (生成时间查询) |
|||
- create_time (创建时间查询) |
|||
- **复合索引**: |
|||
- (template_id, status) (模板状态查询) |
|||
- (user_id, generate_time) (用户时间查询) |
|||
- (status, generate_time) (状态时间查询) |
|||
- **时间索引**: |
|||
- generate_time (按生成时间排序) |
|||
- create_time (按创建时间排序) |
|||
|
|||
## 注意事项 |
|||
- **日志保留**: 合理设置日志保留期限避免数据过度膨胀 |
|||
- **性能影响**: 日志记录不应影响文档生成的性能 |
|||
- **存储优化**: 大量日志数据需要考虑存储优化策略 |
|||
- **隐私保护**: 日志中不应包含敏感的个人信息 |
|||
- **错误处理**: 完善的错误信息记录便于问题排查 |
|||
- **并发控制**: 高并发场景下的日志写入控制 |
|||
- **数据完整性**: 确保日志记录的完整性和准确性 |
|||
- **查询优化**: 优化日志查询性能避免影响系统 |
|||
- **归档策略**: 制定合理的历史日志归档策略 |
|||
- **监控告警**: 监控异常日志并及时告警 |
|||
- **数据格式**: params和result字段存储JSON格式数据 |
|||
- **文件清理**: 定期清理无效的生成文件 |
|||
- **统计分析**: 利用日志数据进行业务分析和优化 |
|||
- **备份恢复**: 重要日志数据需要定期备份 |
|||
- **权限控制**: 控制日志数据的访问权限 |
|||
- **实时性**: 确保日志记录的实时性和准确性 |
|||
@ -0,0 +1,104 @@ |
|||
# school_document_generate_log_backup 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_document_generate_log_backup |
|||
**功能**: 文档生成日志备份表,用于备份和管理文档生成的历史记录,包括生成状态、文件信息和下载统计 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 记录ID |
|||
template_id int NULL NO MUL NULL select,insert,update,references 模板ID(关联school_contract.id) |
|||
user_id int NULL NO MUL NULL select,insert,update,references 操作用户ID |
|||
user_type varchar(20) utf8mb4_general_ci YES admin select,insert,update,references 用户类型:1 员工 2 外部用户 |
|||
fill_data json NULL YES NULL select,insert,update,references 填充数据JSON格式 |
|||
generated_file_path varchar(500) utf8mb4_general_ci YES NULL select,insert,update,references 生成文件路径 |
|||
generated_file_name varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 生成文件名 |
|||
status enum('pending','processing','completed','failed') utf8mb4_general_ci NO MUL pending select,insert,update,references 生成状态:pending-等待,processing-处理中,completed-完成,failed-失败 |
|||
error_msg text utf8mb4_general_ci YES NULL select,insert,update,references 错误信息 |
|||
process_start_time timestamp NULL YES NULL select,insert,update,references 处理开始时间 |
|||
process_end_time timestamp NULL YES NULL select,insert,update,references 处理完成时间 |
|||
download_count int NULL YES 0 select,insert,update,references 下载次数 |
|||
last_download_time timestamp NULL YES NULL select,insert,update,references 最后下载时间 |
|||
created_at int NULL NO MUL 0 select,insert,update,references 创建时间 |
|||
updated_at int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **日志备份**: 备份文档生成的历史记录和操作日志 |
|||
- **状态追踪**: 跟踪文档生成的完整生命周期状态 |
|||
- **文件管理**: 管理生成文件的存储路径和文件名信息 |
|||
- **错误记录**: 记录文档生成过程中的错误信息和失败原因 |
|||
- **性能监控**: 监控文档生成的处理时间和性能指标 |
|||
- **下载统计**: 统计生成文档的下载次数和使用情况 |
|||
- **用户追踪**: 记录文档生成的操作用户和用户类型 |
|||
- **数据恢复**: 提供文档生成数据的备份和恢复功能 |
|||
- **审计追溯**: 支持文档生成操作的审计和追溯 |
|||
|
|||
### 业务场景 |
|||
- **合同文档生成**: 备份教学合同、协议等文档的生成记录 |
|||
- **报表文档生成**: 备份各种统计报表的生成历史 |
|||
- **证书文档生成**: 备份学员证书、荣誉证书的生成记录 |
|||
- **通知文档生成**: 备份家长通知、缴费通知等文档生成 |
|||
- **批量文档生成**: 备份批量生成文档的操作记录 |
|||
- **模板文档生成**: 备份基于模板生成文档的历史记录 |
|||
- **自定义文档生成**: 备份用户自定义文档的生成记录 |
|||
- **系统文档生成**: 备份系统自动生成文档的记录 |
|||
- **历史数据恢复**: 从备份中恢复历史文档生成数据 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_contract`: 合同表(模板ID关联合同记录) |
|||
- `school_document_generate_log`: 文档生成日志表(主表备份关系) |
|||
- `school_sys_user`: 系统用户表(操作用户关联) |
|||
- `school_member`: 会员表(外部用户关联) |
|||
- `school_document_template`: 文档模板表(模板配置关联) |
|||
- `school_sys_attachment`: 附件表(生成文件关联) |
|||
- `school_campus`: 校区表(校区相关文档) |
|||
|
|||
### 关联说明 |
|||
- **模板关联**: template_id关联到具体的文档模板或合同记录 |
|||
- **用户关联**: user_id根据user_type关联到不同的用户表 |
|||
- **文件关联**: generated_file_path关联到实际的文件存储位置 |
|||
- **状态关联**: status字段反映文档生成的当前状态 |
|||
- **时间关联**: 记录文档生成的完整时间线信息 |
|||
- **备份关联**: 与主日志表保持数据一致性和完整性 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id(已存在) |
|||
- **外键索引**: |
|||
- template_id(模板查询) |
|||
- user_id(用户查询) |
|||
- **状态索引**: status(状态查询) |
|||
- **时间索引**: |
|||
- created_at(创建时间查询) |
|||
- updated_at(更新时间查询) |
|||
- process_start_time(处理开始时间) |
|||
- process_end_time(处理完成时间) |
|||
- last_download_time(最后下载时间) |
|||
- **复合索引**: |
|||
- (user_id, user_type)(用户类型查询优化) |
|||
- (template_id, status)(模板状态查询) |
|||
- (status, created_at)(状态时间查询) |
|||
- (user_id, created_at)(用户历史查询) |
|||
|
|||
## 注意事项 |
|||
- **数据一致性**: 确保备份数据与主表数据的一致性 |
|||
- **存储管理**: 生成文件的存储路径需要有效管理,防止文件丢失 |
|||
- **状态同步**: 文档生成状态变更需要及时同步到备份表 |
|||
- **文件清理**: 定期清理过期的生成文件,释放存储空间 |
|||
- **权限控制**: 备份数据的访问需要严格的权限控制 |
|||
- **错误处理**: 详细记录错误信息,便于问题排查和解决 |
|||
- **性能监控**: 监控文档生成的性能,优化处理效率 |
|||
- **备份策略**: 制定合理的数据备份和归档策略 |
|||
- **数据恢复**: 建立完善的数据恢复机制和流程 |
|||
- **审计合规**: 确保备份数据符合审计和合规要求 |
|||
- **版本管理**: 支持备份数据的版本管理和历史追溯 |
|||
- **安全保护**: 备份数据需要加密存储,防止数据泄露 |
|||
- **监控告警**: 建立异常情况的监控和告警机制 |
|||
- **容量规划**: 合理规划备份数据的存储容量和增长 |
|||
- **数据迁移**: 系统升级时需要考虑备份数据的迁移 |
|||
@ -0,0 +1,100 @@ |
|||
# school_exam_answers 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_exam_answers |
|||
**功能**: 考试答题记录表,负责管理教务系统中的具体答题记录,记录用户对每道题目的答案和正确性判断 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 答题记录编号 |
|||
campus_id int NULL NO NULL select,insert,update,references 校区ID |
|||
user_id int NULL NO NULL select,insert,update,references 人员ID |
|||
question_id int NULL NO NULL select,insert,update,references 试题ID |
|||
answer text utf8mb4_general_ci YES NULL select,insert,update,references 用户答案 |
|||
is_correct tinyint(1) NULL YES NULL select,insert,update,references 是否正确 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **答题记录管理**: 记录用户对每道题目的具体答案 |
|||
2. **正确性判断**: 自动判断和记录答案的正确性 |
|||
3. **人员答题跟踪**: 跟踪特定人员的答题情况 |
|||
4. **题目答题统计**: 统计每道题目的答题情况 |
|||
5. **校区数据管理**: 按校区管理答题记录 |
|||
6. **答题时间记录**: 记录答题的时间信息 |
|||
7. **成绩计算支持**: 为考试成绩计算提供基础数据 |
|||
8. **答题分析支持**: 为答题情况分析提供详细数据 |
|||
9. **考试过程追踪**: 详细记录考试过程中的每一步 |
|||
|
|||
### 业务场景 |
|||
1. **实时答题**: 记录考试过程中的实时答题情况 |
|||
2. **成绩计算**: 基于答题记录计算考试总成绩 |
|||
3. **错题分析**: 分析学员/员工的错题情况,提供针对性指导 |
|||
4. **题目质量评估**: 基于答题统计评估题目的难度和质量 |
|||
5. **学习效果评估**: 评估学员的学习效果和知识掌握情况 |
|||
6. **考试作弊检测**: 通过答题模式检测可能的作弊行为 |
|||
7. **个性化推荐**: 基于答题情况推荐相关学习内容 |
|||
8. **教学改进**: 为教师提供学员答题数据,改进教学方法 |
|||
9. **数据挖掘**: 挖掘答题数据中的学习规律和趋势 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_exam_questions**: 考试题目表(question_id外键关联) |
|||
2. **school_personnel**: 人员表(user_id关联员工) |
|||
3. **school_student**: 学员表(user_id关联学员) |
|||
4. **school_campus**: 校区表(campus_id外键关联) |
|||
5. **school_exam_records**: 考试记录表(考试实例关联) |
|||
6. **school_exam_papers**: 试卷表(间接关联) |
|||
7. **school_course**: 课程表(课程答题关联) |
|||
8. **school_class**: 班级表(班级答题关联) |
|||
|
|||
### 关联说明 |
|||
1. **题目关联**: question_id字段关联到具体的考试题目 |
|||
2. **人员关联**: user_id字段关联到答题人员(员工或学员) |
|||
3. **校区关联**: campus_id字段关联到具体校区 |
|||
4. **考试关联**: 通过user_id和时间关联到具体的考试记录 |
|||
5. **试卷关联**: 通过题目间接关联到试卷 |
|||
6. **课程关联**: 答题可以关联到具体的课程或班级 |
|||
7. **正确性关联**: is_correct字段用于成绩计算和统计 |
|||
8. **答案关联**: answer字段存储用户的具体答案内容 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: |
|||
- campus_id(校区查询) |
|||
- user_id(人员查询) |
|||
- question_id(题目查询) |
|||
3. **普通索引**: |
|||
- is_correct(正确性查询) |
|||
4. **复合索引**: |
|||
- (user_id, question_id)(人员+题目查询,防重复答题) |
|||
- (question_id, is_correct)(题目+正确性统计) |
|||
- (campus_id, user_id)(校区+人员查询) |
|||
- (user_id, is_correct)(人员+正确性查询) |
|||
5. **时间索引**: |
|||
- created_at(答题时间查询) |
|||
- updated_at(更新时间查询) |
|||
6. **全文索引**: |
|||
- answer(答案内容搜索) |
|||
|
|||
## 注意事项 |
|||
1. **外键完整性**: campus_id、user_id、question_id必须存在 |
|||
2. **答案格式**: answer字段格式需要与题目类型匹配 |
|||
3. **正确性判断**: is_correct应基于标准答案自动判断 |
|||
4. **重复答题**: 同一用户同一题目可能有多次答题记录 |
|||
5. **答案验证**: 答案内容需要进行格式和有效性验证 |
|||
6. **数据一致性**: 答题记录与考试记录的时间应保持一致 |
|||
7. **权限控制**: 只有答题人员本人和管理员可以查看答题记录 |
|||
8. **答案安全**: 答案内容需要进行安全性检查 |
|||
9. **性能优化**: 大量答题记录查询需要考虑性能 |
|||
10. **数据完整性**: 删除题目或人员时需要处理相关答题记录 |
|||
11. **审计要求**: 答题过程需要记录详细的操作日志 |
|||
12. **备份策略**: 重要答题数据需要定期备份 |
|||
13. **数据归档**: 历史答题记录需要定期归档处理 |
|||
14. **统计准确性**: 基于答题记录的统计数据需要保证准确性 |
|||
@ -0,0 +1,101 @@ |
|||
# school_exam_papers 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_exam_papers |
|||
**功能**: 试卷管理表,负责管理教务系统中的考试试卷配置,支持随机组卷和手动组卷两种模式,管理试卷题目、分数设置和考试类型 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 试卷编号 |
|||
selection_mode enum('random','manual') utf8mb4_general_ci NO NULL select,insert,update,references 题目选择模式: random-随机主题, manual-自选题目 |
|||
total_score decimal(5,2) NULL NO NULL select,insert,update,references 总分 |
|||
passing_score decimal(5,2) NULL NO NULL select,insert,update,references 合格分数 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
questions_ids text utf8mb4_general_ci YES NULL select,insert,update,references 问题 id |
|||
title varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 试卷名称 |
|||
single_choice_count int NULL NO 0 select,insert,update,references 单选题数量 |
|||
multiple_choice_count int NULL NO 0 select,insert,update,references 多选题数量 |
|||
true_false_count int NULL NO 0 select,insert,update,references 判断题数量 |
|||
every_score decimal(10,1) unsigned NULL NO 0.0 select,insert,update,references 每道题分数 |
|||
number_answers int NULL YES NULL select,insert,update,references 答题次数 |
|||
answer_type tinyint NULL YES NULL select,insert,update,references 答题类型 1 员工考试 2 学员考试 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **试卷配置管理**: 创建和管理考试试卷的基本配置信息 |
|||
2. **组卷模式控制**: 支持随机组卷和手动选题两种组卷方式 |
|||
3. **分数设置管理**: 设置试卷总分、合格分数和每题分数 |
|||
4. **题型数量控制**: 管理单选题、多选题、判断题的数量配置 |
|||
5. **题目关联管理**: 通过questions_ids字段关联具体的考试题目 |
|||
6. **考试类型分类**: 区分员工考试和学员考试两种类型 |
|||
7. **答题次数限制**: 控制试卷的答题次数限制 |
|||
8. **试卷命名管理**: 为试卷提供清晰的标题和标识 |
|||
9. **时间追踪**: 记录试卷的创建和修改时间 |
|||
|
|||
### 业务场景 |
|||
1. **员工考核**: 创建员工技能考试、入职考试、培训考试试卷 |
|||
2. **学员测评**: 创建学员课程测试、阶段考试、毕业考试试卷 |
|||
3. **随机考试**: 使用随机组卷模式创建不同难度的考试 |
|||
4. **定制考试**: 使用手动选题模式创建针对性考试 |
|||
5. **分级考试**: 根据不同级别设置不同的合格分数 |
|||
6. **题型配置**: 根据考试需要配置不同题型的数量比例 |
|||
7. **重复考试**: 设置答题次数限制,支持多次考试 |
|||
8. **考试分析**: 基于试卷配置进行考试结果分析 |
|||
9. **模板管理**: 创建试卷模板供重复使用 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_exam_questions**: 考试题目表(questions_ids字段关联) |
|||
2. **school_exam_records**: 考试记录表(试卷考试记录关联) |
|||
3. **school_exam_answers**: 考试答案表(试卷答题记录关联) |
|||
4. **school_personnel**: 人员表(员工考试关联) |
|||
5. **school_student**: 学员表(学员考试关联) |
|||
6. **school_course**: 课程表(课程考试关联) |
|||
7. **school_class**: 班级表(班级考试关联) |
|||
8. **school_campus**: 校区表(校区考试管理关联) |
|||
|
|||
### 关联说明 |
|||
1. **题目关联**: questions_ids字段存储试卷包含的题目ID列表 |
|||
2. **考试记录**: 考试记录表记录基于此试卷的具体考试实例 |
|||
3. **答题记录**: 答案表记录学员/员工对此试卷的答题情况 |
|||
4. **人员关联**: 根据answer_type区分员工考试和学员考试 |
|||
5. **课程关联**: 试卷可以关联到具体的课程或班级 |
|||
6. **校区关联**: 试卷可以按校区进行管理和使用 |
|||
7. **类型关联**: answer_type字段区分不同的考试对象 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **普通索引**: |
|||
- title(试卷名称查询) |
|||
- selection_mode(组卷模式查询) |
|||
- answer_type(考试类型查询) |
|||
3. **复合索引**: |
|||
- (answer_type, selection_mode)(类型+模式查询) |
|||
- (total_score, passing_score)(分数范围查询) |
|||
4. **时间索引**: |
|||
- created_at(创建时间查询) |
|||
- updated_at(更新时间查询) |
|||
5. **全文索引**: |
|||
- title(试卷标题搜索) |
|||
|
|||
## 注意事项 |
|||
1. **分数逻辑**: passing_score不能大于total_score |
|||
2. **题目数量**: 各题型数量之和应与实际题目数量一致 |
|||
3. **分数计算**: every_score * 题目总数应等于total_score |
|||
4. **题目ID格式**: questions_ids字段需要验证JSON格式和题目ID有效性 |
|||
5. **组卷模式**: 随机模式需要足够的题库支持 |
|||
6. **答题次数**: number_answers为0表示无限制,大于0表示限制次数 |
|||
7. **考试类型**: answer_type必须为1(员工)或2(学员) |
|||
8. **数据完整性**: 删除试卷前需要检查是否有关联的考试记录 |
|||
9. **题目更新**: 修改questions_ids时需要重新计算分数 |
|||
10. **权限控制**: 不同角色对试卷的操作权限需要严格控制 |
|||
11. **备份策略**: 重要试卷数据需要定期备份 |
|||
12. **版本管理**: 试卷修改时建议保留历史版本 |
|||
13. **性能优化**: 大量题目的试卷查询需要考虑性能 |
|||
14. **审计要求**: 试卷操作需要记录详细的操作日志 |
|||
@ -0,0 +1,97 @@ |
|||
# school_exam_questions 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_exam_questions |
|||
**功能**: 考试题目管理表,负责管理教务系统中的考试题库,支持单选题、多选题、判断题三种题型,支持文本和图片两种题干类型 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 试题编号 |
|||
question_type enum('single_choice','multiple_choice','true_false') utf8mb4_general_ci NO NULL select,insert,update,references 题型: single_choice-单选, multiple_choice-多选, true_false-判断 |
|||
title varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 题目标题 |
|||
question_content_type enum('text','image') utf8mb4_general_ci NO NULL select,insert,update,references 题干类型: text-文本, image-图片 |
|||
question_content text utf8mb4_general_ci NO NULL select,insert,update,references 题干内容(如果是图片则存储URL) |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
option_json text utf8mb4_general_ci YES NULL select,insert,update,references 选项 |
|||
correct_answer varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 正确答案 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **题目信息管理**: 创建和维护考试题目的基本信息 |
|||
2. **题型分类管理**: 支持单选题、多选题、判断题三种题型 |
|||
3. **题干内容管理**: 支持文本和图片两种题干内容类型 |
|||
4. **选项配置管理**: 通过option_json字段管理题目选项 |
|||
5. **答案设置管理**: 设置和管理题目的正确答案 |
|||
6. **题目标题管理**: 为题目提供清晰的标题标识 |
|||
7. **内容类型控制**: 区分文本题干和图片题干 |
|||
8. **时间追踪**: 记录题目的创建和修改时间 |
|||
9. **题库构建**: 为试卷组卷提供题目资源 |
|||
|
|||
### 业务场景 |
|||
1. **题库建设**: 构建完整的考试题库资源 |
|||
2. **试卷组卷**: 为试卷提供题目选择和组合 |
|||
3. **员工考试**: 创建员工技能测试、入职考试题目 |
|||
4. **学员测评**: 创建学员课程测试、阶段考试题目 |
|||
5. **随机抽题**: 支持系统随机抽取题目组成试卷 |
|||
6. **题目分类**: 按照题型和难度对题目进行分类管理 |
|||
7. **题目复用**: 同一题目可以在多个试卷中使用 |
|||
8. **题目维护**: 定期更新和维护题目内容和答案 |
|||
9. **质量控制**: 对题目质量进行审核和管理 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_exam_papers**: 试卷表(试卷题目关联) |
|||
2. **school_exam_answers**: 考试答案表(答题记录关联) |
|||
3. **school_exam_records**: 考试记录表(考试题目关联) |
|||
4. **school_personnel**: 人员表(出题人关联) |
|||
5. **school_student**: 学员表(答题人关联) |
|||
6. **school_course**: 课程表(课程题目关联) |
|||
7. **school_sys_attachment**: 附件表(图片题干关联) |
|||
8. **school_campus**: 校区表(题库管理关联) |
|||
|
|||
### 关联说明 |
|||
1. **试卷关联**: 试卷通过questions_ids字段关联到具体题目 |
|||
2. **答题关联**: 答案表记录用户对具体题目的答题情况 |
|||
3. **考试关联**: 考试记录关联到具体的题目和答案 |
|||
4. **人员关联**: 题目可以关联到出题人和答题人 |
|||
5. **课程关联**: 题目可以按课程进行分类和管理 |
|||
6. **附件关联**: 图片类型题干关联到附件表 |
|||
7. **校区关联**: 题目可以按校区进行管理和使用 |
|||
8. **内容关联**: 题干内容根据类型存储文本或图片URL |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **普通索引**: |
|||
- question_type(题型查询) |
|||
- question_content_type(内容类型查询) |
|||
- title(题目标题查询) |
|||
3. **复合索引**: |
|||
- (question_type, question_content_type)(题型+内容类型查询) |
|||
4. **时间索引**: |
|||
- created_at(创建时间查询) |
|||
- updated_at(更新时间查询) |
|||
5. **全文索引**: |
|||
- title(题目标题搜索) |
|||
- question_content(题干内容搜索) |
|||
|
|||
## 注意事项 |
|||
1. **题型一致性**: question_type必须为枚举值中的一种 |
|||
2. **选项格式**: option_json字段必须为有效的JSON格式 |
|||
3. **答案格式**: correct_answer格式需要与题型匹配 |
|||
4. **内容类型**: question_content_type决定question_content的存储格式 |
|||
5. **图片URL**: 图片类型题干需要验证URL的有效性 |
|||
6. **选项数量**: 单选题和多选题必须有足够的选项 |
|||
7. **答案验证**: 正确答案必须在选项范围内 |
|||
8. **JSON结构**: option_json需要统一的数据结构 |
|||
9. **内容安全**: 题目内容需要进行安全性检查 |
|||
10. **数据完整性**: 删除题目前需要检查是否被试卷使用 |
|||
11. **版本管理**: 题目修改时建议保留历史版本 |
|||
12. **权限控制**: 题目的创建和修改需要权限验证 |
|||
13. **备份策略**: 重要题目数据需要定期备份 |
|||
14. **审计要求**: 题目操作需要记录详细的操作日志 |
|||
@ -0,0 +1,103 @@ |
|||
# school_exam_records 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_exam_records |
|||
**功能**: 考试记录管理表,负责管理教务系统中的考试实例记录,跟踪考试过程、记录考试成绩和管理考试状态 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 记录编号 |
|||
campus_id int NULL NO NULL select,insert,update,references 校区ID |
|||
user_id int NULL NO NULL select,insert,update,references 人员ID |
|||
paper_id int NULL NO NULL select,insert,update,references 试卷ID |
|||
score decimal(5,2) NULL YES NULL select,insert,update,references 得分 |
|||
status enum('in_progress','completed') utf8mb4_general_ci YES in_progress select,insert,update,references 考试状态: in_progress-进行中, completed-已完成 |
|||
start_time datetime NULL YES NULL select,insert,update,references 考试开始时间 |
|||
end_time datetime NULL YES NULL select,insert,update,references 考试结束时间 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **考试实例管理**: 创建和管理具体的考试实例记录 |
|||
2. **考试状态跟踪**: 跟踪考试的进行状态(进行中/已完成) |
|||
3. **成绩记录管理**: 记录和管理考试的最终得分 |
|||
4. **时间管理**: 记录考试的开始时间和结束时间 |
|||
5. **人员关联管理**: 关联考试人员和试卷信息 |
|||
6. **校区管理**: 按校区管理考试记录 |
|||
7. **考试过程控制**: 控制考试的开始、进行和结束流程 |
|||
8. **数据统计支持**: 为考试数据分析提供基础数据 |
|||
9. **时间追踪**: 记录考试记录的创建和修改时间 |
|||
|
|||
### 业务场景 |
|||
1. **员工考试**: 记录员工技能测试、入职考试、培训考试过程 |
|||
2. **学员测评**: 记录学员课程测试、阶段考试、毕业考试过程 |
|||
3. **考试监控**: 实时监控考试进行状态和完成情况 |
|||
4. **成绩管理**: 统计和管理考试成绩,生成成绩报告 |
|||
5. **考试分析**: 分析考试时长、通过率等数据 |
|||
6. **补考管理**: 管理需要补考的人员和考试安排 |
|||
7. **考试审计**: 提供考试过程的审计追踪 |
|||
8. **数据导出**: 导出考试记录用于外部分析 |
|||
9. **考试统计**: 按时间、人员、试卷等维度统计考试情况 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_exam_papers**: 试卷表(paper_id外键关联) |
|||
2. **school_personnel**: 人员表(user_id关联员工) |
|||
3. **school_student**: 学员表(user_id关联学员) |
|||
4. **school_campus**: 校区表(campus_id外键关联) |
|||
5. **school_exam_answers**: 考试答案表(考试答题记录关联) |
|||
6. **school_course**: 课程表(课程考试关联) |
|||
7. **school_class**: 班级表(班级考试关联) |
|||
8. **school_exam_questions**: 考试题目表(间接关联) |
|||
|
|||
### 关联说明 |
|||
1. **试卷关联**: paper_id字段关联到具体的试卷配置 |
|||
2. **人员关联**: user_id字段关联到考试人员(员工或学员) |
|||
3. **校区关联**: campus_id字段关联到具体校区 |
|||
4. **答题关联**: 考试答案表记录此次考试的具体答题情况 |
|||
5. **课程关联**: 考试可以关联到具体的课程或班级 |
|||
6. **题目关联**: 通过试卷间接关联到考试题目 |
|||
7. **状态关联**: 考试状态决定是否可以查看成绩 |
|||
8. **时间关联**: 开始和结束时间用于计算考试时长 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **外键索引**: |
|||
- campus_id(校区查询) |
|||
- user_id(人员查询) |
|||
- paper_id(试卷查询) |
|||
3. **普通索引**: |
|||
- status(状态查询) |
|||
- score(成绩查询) |
|||
4. **复合索引**: |
|||
- (campus_id, user_id)(校区+人员查询) |
|||
- (paper_id, status)(试卷+状态查询) |
|||
- (user_id, status)(人员+状态查询) |
|||
- (start_time, end_time)(时间范围查询) |
|||
5. **时间索引**: |
|||
- start_time(开始时间查询) |
|||
- end_time(结束时间查询) |
|||
- created_at(创建时间查询) |
|||
- updated_at(更新时间查询) |
|||
|
|||
## 注意事项 |
|||
1. **状态一致性**: status必须为枚举值中的一种 |
|||
2. **时间逻辑**: end_time必须大于start_time |
|||
3. **成绩范围**: score应在试卷设定的分数范围内 |
|||
4. **外键完整性**: campus_id、user_id、paper_id必须存在 |
|||
5. **状态流转**: 只能从in_progress转换为completed |
|||
6. **并发控制**: 同一人员同一试卷同时只能有一个进行中的考试 |
|||
7. **时间控制**: 考试时间不能超过试卷设定的时间限制 |
|||
8. **成绩计算**: 成绩应基于答题情况自动计算 |
|||
9. **数据完整性**: 删除考试记录需要同时删除相关答题记录 |
|||
10. **权限验证**: 只有考试人员本人和管理员可以查看考试记录 |
|||
11. **审计要求**: 考试过程需要记录详细的操作日志 |
|||
12. **备份策略**: 重要考试数据需要定期备份 |
|||
13. **性能优化**: 大量考试记录查询需要考虑性能 |
|||
14. **数据归档**: 历史考试记录需要定期归档处理 |
|||
@ -0,0 +1,103 @@ |
|||
# school_generate_column 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_generate_column |
|||
**功能**: 代码生成器字段配置表,用于管理代码生成器中每个字段的详细配置信息,包括表单控件类型、显示属性、验证规则、查询方式等,支持动态表单生成和自动化代码生成 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references id |
|||
table_id int NULL NO 0 select,insert,update,references 表id |
|||
column_name varchar(100) utf8mb4_general_ci NO select,insert,update,references 字段名称 |
|||
column_comment varchar(300) utf8mb4_general_ci NO select,insert,update,references 字段描述 |
|||
column_type varchar(100) utf8mb4_general_ci NO select,insert,update,references 字段类型 |
|||
is_required tinyint(1) NULL YES 0 select,insert,update,references 是否必填 0-非必填 1-必填 |
|||
is_pk tinyint(1) NULL YES 0 select,insert,update,references 是否为主键 0-不是 1-是 |
|||
is_insert tinyint(1) NULL YES 0 select,insert,update,references 是否为插入字段 0-不是 1-是 |
|||
is_update tinyint(1) NULL YES 0 select,insert,update,references 是否为更新字段 0-不是 1-是 |
|||
is_lists tinyint(1) NULL YES 1 select,insert,update,references 是否为列表字段 0-不是 1-是 |
|||
is_query tinyint(1) NULL YES 1 select,insert,update,references 是否为查询字段 0-不是 1-是 |
|||
is_search tinyint(1) NULL YES 1 select,insert,update,references 是否搜索字段 |
|||
query_type varchar(100) utf8mb4_general_ci YES = select,insert,update,references 查询类型 |
|||
view_type varchar(100) utf8mb4_general_ci YES input select,insert,update,references 显示类型 |
|||
dict_type varchar(255) utf8mb4_general_ci YES select,insert,update,references 字典类型 |
|||
addon varchar(255) utf8mb4_general_ci YES select,insert,update,references 远程下拉关联应用 |
|||
model varchar(255) utf8mb4_general_ci YES select,insert,update,references 远程下拉关联model |
|||
label_key varchar(255) utf8mb4_general_ci YES select,insert,update,references 远程下拉标题字段 |
|||
value_key varchar(255) utf8mb4_general_ci YES select,insert,update,references 远程下拉value字段 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 修改时间 |
|||
is_delete tinyint NULL YES 0 select,insert,update,references 是否为软删除字段 0-不是 1-是 |
|||
is_order tinyint NULL YES 0 select,insert,update,references 是否为排序字段 0-不是 1-是 |
|||
validate_type varchar(255) utf8mb4_general_ci YES select,insert,update,references 验证类型 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **字段配置管理**: 管理代码生成器中每个字段的详细配置信息 |
|||
- **表单控件配置**: 定义字段在表单中的显示类型和交互方式 |
|||
- **列表显示控制**: 控制字段是否在列表页面中显示 |
|||
- **查询条件配置**: 设置字段的查询类型和搜索方式 |
|||
- **数据验证规则**: 定义字段的验证类型和必填规则 |
|||
- **字典关联管理**: 配置字段与数据字典的关联关系 |
|||
- **远程数据源**: 支持远程下拉选择的数据源配置 |
|||
- **字段权限控制**: 控制字段的增删改查权限 |
|||
|
|||
### 业务场景 |
|||
- **代码自动生成**: 根据配置自动生成CRUD页面和表单 |
|||
- **动态表单构建**: 根据配置动态生成各种业务表单 |
|||
- **数据列表定制**: 自定义数据列表的显示字段和格式 |
|||
- **搜索条件配置**: 配置高级搜索的查询条件和方式 |
|||
- **数据导入导出**: 配置数据导入导出的字段映射 |
|||
- **报表字段配置**: 定义报表中的字段显示和计算规则 |
|||
- **API接口生成**: 根据配置自动生成RESTful API接口 |
|||
- **移动端适配**: 配置字段在移动端的显示方式 |
|||
- **多语言支持**: 支持字段标签的多语言配置 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_generate_table**: 生成表配置表,关联字段所属的表配置 |
|||
- **school_sys_dict_type**: 字典类型表,关联字段的字典配置 |
|||
- **school_sys_dict_data**: 字典数据表,提供字段的选项数据 |
|||
- **school_sys_addon**: 插件表,关联远程下拉的插件信息 |
|||
- **school_sys_model**: 模型表,关联远程下拉的数据模型 |
|||
- **school_sys_user**: 用户表,关联配置的创建和修改人员 |
|||
- **school_form_template**: 表单模板表,关联生成的表单模板 |
|||
- **school_report_config**: 报表配置表,关联报表字段配置 |
|||
|
|||
### 关联说明 |
|||
- `table_id` 关联 `school_generate_table.id`,标识字段所属的表 |
|||
- `dict_type` 关联 `school_sys_dict_type.type`,关联字典类型 |
|||
- `addon` 关联 `school_sys_addon.key`,关联远程数据源插件 |
|||
- `model` 关联 `school_sys_model.name`,关联数据模型 |
|||
- `label_key` 和 `value_key` 定义远程下拉的显示和值字段 |
|||
- 与代码生成器引擎关联,实现自动化代码生成 |
|||
- 与表单渲染引擎关联,实现动态表单生成 |
|||
- 与数据验证引擎关联,实现字段验证规则 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **表ID索引**: `INDEX idx_table_id (table_id)` - 支持按表查询字段配置 |
|||
- **字段名索引**: `INDEX idx_column_name (column_name)` - 支持按字段名查询 |
|||
- **字段类型索引**: `INDEX idx_column_type (column_type)` - 支持按字段类型查询 |
|||
- **显示类型索引**: `INDEX idx_view_type (view_type)` - 支持按显示类型查询 |
|||
- **字典类型索引**: `INDEX idx_dict_type (dict_type)` - 支持按字典类型查询 |
|||
- **创建时间索引**: `INDEX idx_create_time (create_time)` - 支持按创建时间查询 |
|||
- **复合索引**: `INDEX idx_table_column (table_id, column_name)` - 支持表和字段的复合查询 |
|||
- **状态索引**: `INDEX idx_flags (is_required, is_pk, is_insert, is_update)` - 支持按字段状态查询 |
|||
|
|||
## 注意事项 |
|||
- **配置一致性**: 确保字段配置与实际数据库表结构保持一致 |
|||
- **类型匹配**: 验证字段类型与显示类型的兼容性 |
|||
- **权限控制**: 严格控制字段配置的修改权限,防止误操作 |
|||
- **缓存管理**: 合理使用缓存提高配置读取性能 |
|||
- **版本控制**: 建立配置变更的版本控制和回滚机制 |
|||
- **数据验证**: 确保验证规则的正确性和有效性 |
|||
- **性能优化**: 避免过多的字段配置影响页面渲染性能 |
|||
- **兼容性**: 确保配置在不同浏览器和设备上的兼容性 |
|||
- **安全性**: 防止通过字段配置进行SQL注入等安全攻击 |
|||
- **备份恢复**: 定期备份重要的字段配置数据 |
|||
@ -0,0 +1,98 @@ |
|||
# school_generate_table 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_generate_table |
|||
**功能**: 代码生成表管理表,用于存储和管理代码生成器的表配置信息,支持自动化代码生成、表结构管理和代码模板配置,为系统开发提供快速的代码生成服务 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
table_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 表名 |
|||
table_content varchar(255) utf8mb4_general_ci NO select,insert,update,references 描述前缀 |
|||
module_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 模块名 |
|||
class_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 类名前缀 |
|||
create_time int NULL NO 0 select,insert,update,references 添加时间 |
|||
edit_type int NULL NO 1 select,insert,update,references 编辑方式 1-弹框 2-新页面 |
|||
addon_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 插件名 |
|||
order_type int NULL NO 0 select,insert,update,references 排序方式 0-无排序 1-正序 2-倒序 |
|||
parent_menu varchar(255) utf8mb4_general_ci NO select,insert,update,references 上级菜单 |
|||
relations text utf8mb4_general_ci YES NULL select,insert,update,references 关联配置 |
|||
synchronous_number int NULL NO 0 select,insert,update,references 同步次数 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **表配置管理**: 存储数据库表的基本信息和生成配置 |
|||
- **代码生成配置**: 管理代码生成的模板和参数设置 |
|||
- **表结构分析**: 记录表的字段信息和结构特征 |
|||
- **生成历史跟踪**: 跟踪代码生成的历史记录和版本信息 |
|||
- **模板管理**: 管理不同类型的代码生成模板 |
|||
- **自动化配置**: 支持批量表的自动化代码生成配置 |
|||
- **权限控制**: 控制不同用户对代码生成功能的访问权限 |
|||
- **备注说明**: 记录表的用途和生成说明信息 |
|||
|
|||
### 业务场景 |
|||
- **快速开发**: 为新功能模块快速生成基础代码框架 |
|||
- **CRUD生成**: 自动生成增删改查的控制器和服务代码 |
|||
- **API接口生成**: 根据表结构自动生成RESTful API接口 |
|||
- **前端页面生成**: 生成对应的前端表单和列表页面 |
|||
- **数据模型生成**: 自动生成数据模型和实体类 |
|||
- **文档生成**: 根据表结构生成API文档和数据字典 |
|||
- **测试代码生成**: 生成单元测试和集成测试代码 |
|||
- **数据库迁移**: 生成数据库迁移脚本和SQL语句 |
|||
- **代码重构**: 支持现有代码的重构和优化 |
|||
- **多语言支持**: 支持生成多种编程语言的代码 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_generate_column**: 代码生成字段表,存储表字段的详细配置 |
|||
- **school_sys_user**: 系统用户表,记录代码生成的操作用户 |
|||
- **school_sys_menu**: 系统菜单表,可能生成对应的菜单项 |
|||
- **school_sys_dict**: 系统字典表,可能引用字典数据进行代码生成 |
|||
- **information_schema.tables**: 数据库表信息,获取实际表结构 |
|||
- **information_schema.columns**: 数据库字段信息,获取字段详情 |
|||
|
|||
### 关联说明 |
|||
- 与school_generate_column表形成一对多关系,一个表对应多个字段配置 |
|||
- 通过table_name字段关联实际的数据库表 |
|||
- 生成的代码可能涉及多个系统表的关联和引用 |
|||
- 支持跨表关联的代码生成和业务逻辑处理 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 表名唯一索引(确保表名唯一性) |
|||
UNIQUE INDEX idx_table_name (table_name) |
|||
|
|||
-- 模块名索引(用于按模块查询) |
|||
INDEX idx_module_name (module_name) |
|||
|
|||
-- 创建时间索引(用于按时间排序) |
|||
INDEX idx_create_time (create_time) |
|||
|
|||
-- 更新时间索引(用于查询最近更新的配置) |
|||
INDEX idx_update_time (update_time) |
|||
|
|||
-- 复合索引(模块名+表名) |
|||
INDEX idx_module_table (module_name, table_name) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **表名规范**: 确保table_name与实际数据库表名保持一致 |
|||
- **代码规范**: 生成的代码应符合项目的编码规范和标准 |
|||
- **版本控制**: 代码生成前应备份现有代码,避免覆盖重要修改 |
|||
- **权限安全**: 严格控制代码生成功能的使用权限 |
|||
- **模板管理**: 定期更新和维护代码生成模板 |
|||
- **配置验证**: 生成前验证表配置的完整性和正确性 |
|||
- **依赖关系**: 考虑表间的依赖关系,合理安排生成顺序 |
|||
- **性能优化**: 大批量生成时需要考虑性能和资源消耗 |
|||
- **错误处理**: 完善的错误处理和回滚机制 |
|||
- **文档同步**: 生成代码后及时更新相关文档 |
|||
- **测试验证**: 生成的代码需要经过充分的测试验证 |
|||
- **备份恢复**: 建立完善的备份和恢复机制 |
|||
@ -0,0 +1,98 @@ |
|||
# school_jobs 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_jobs |
|||
**功能**: 队列任务管理表,负责管理教务系统中的异步任务队列,支持任务调度、重试机制和任务状态跟踪 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
queue varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references |
|||
payload longtext utf8mb4_general_ci NO NULL select,insert,update,references |
|||
attempts tinyint unsigned NULL NO 0 select,insert,update,references |
|||
reserve_time int unsigned NULL YES 0 select,insert,update,references |
|||
available_time int unsigned NULL YES 0 select,insert,update,references |
|||
create_time int unsigned NULL YES 0 select,insert,update,references |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **队列任务管理**: 管理系统中的异步任务队列 |
|||
2. **任务负载存储**: 通过payload字段存储任务的具体数据和参数 |
|||
3. **重试机制**: 通过attempts字段跟踪任务的执行次数 |
|||
4. **任务调度**: 通过reserve_time和available_time控制任务的执行时机 |
|||
5. **队列分类**: 通过queue字段对不同类型的任务进行分类管理 |
|||
6. **任务状态跟踪**: 跟踪任务的执行状态和进度 |
|||
7. **延迟执行**: 支持任务的延迟执行和定时调度 |
|||
8. **失败重试**: 自动重试失败的任务,提高系统可靠性 |
|||
9. **任务监控**: 监控任务队列的执行情况和性能 |
|||
|
|||
### 业务场景 |
|||
1. **邮件发送**: 异步处理邮件发送任务,避免阻塞主流程 |
|||
2. **数据导出**: 处理大量数据的导出任务,如成绩单、报表等 |
|||
3. **文件处理**: 处理文件上传、转换、压缩等耗时操作 |
|||
4. **通知推送**: 批量发送系统通知、短信、微信消息等 |
|||
5. **数据同步**: 与第三方系统进行数据同步和交换 |
|||
6. **定时任务**: 执行定时的数据清理、备份、统计等任务 |
|||
7. **图片处理**: 处理图片的缩放、裁剪、水印等操作 |
|||
8. **报表生成**: 生成复杂的统计报表和分析数据 |
|||
9. **系统维护**: 执行系统清理、优化、更新等维护任务 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_sys_user**: 系统用户表(任务创建者关联) |
|||
2. **school_campus**: 校区表(任务校区关联) |
|||
3. **school_sys_config**: 系统配置表(队列配置关联) |
|||
4. **school_addon**: 插件表(插件任务关联) |
|||
5. **sys_log**: 系统日志表(任务执行日志关联) |
|||
6. **school_sys_attachment**: 附件表(文件处理任务关联) |
|||
7. **school_order_table**: 订单表(支付任务关联) |
|||
8. **school_member**: 会员表(通知任务关联) |
|||
|
|||
### 关联说明 |
|||
1. **队列分类**: queue字段标识任务类型和处理队列 |
|||
2. **任务数据**: payload字段存储任务的具体执行参数 |
|||
3. **执行控制**: reserve_time和available_time控制任务执行时机 |
|||
4. **重试机制**: attempts字段记录任务重试次数 |
|||
5. **时间管理**: create_time记录任务创建时间 |
|||
6. **状态跟踪**: 通过时间字段判断任务执行状态 |
|||
7. **业务关联**: 任务可能关联到各种业务表的数据处理 |
|||
8. **系统集成**: 与系统配置和日志系统集成 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **业务索引**: |
|||
- queue(队列类型查询) |
|||
- attempts(重试次数查询) |
|||
3. **时间索引**: |
|||
- reserve_time(预约时间查询) |
|||
- available_time(可用时间查询) |
|||
- create_time(创建时间查询) |
|||
4. **复合索引**: |
|||
- (queue, available_time)(队列可用任务查询) |
|||
- (queue, attempts)(队列重试任务查询) |
|||
- (available_time, attempts)(可执行任务查询) |
|||
5. **状态索引**: |
|||
- (reserve_time, available_time)(任务状态查询) |
|||
|
|||
## 注意事项 |
|||
1. **队列名称**: queue字段应使用标准的队列命名规范 |
|||
2. **负载格式**: payload字段应存储有效的JSON或序列化数据 |
|||
3. **重试限制**: attempts字段应设置合理的重试上限,避免无限重试 |
|||
4. **时间精度**: 时间字段使用Unix时间戳,注意时区处理 |
|||
5. **任务超时**: 长时间未处理的任务需要超时机制 |
|||
6. **并发控制**: 同一任务避免重复执行,需要锁机制 |
|||
7. **内存管理**: payload字段可能存储大量数据,注意内存使用 |
|||
8. **错误处理**: 任务执行失败需要记录详细的错误信息 |
|||
9. **队列监控**: 需要监控队列长度和处理速度 |
|||
10. **数据清理**: 已完成的任务需要定期清理,避免表过大 |
|||
11. **优先级管理**: 重要任务需要优先级机制 |
|||
12. **死锁检测**: 避免任务间的死锁情况 |
|||
13. **资源限制**: 控制并发任务数量,避免系统资源耗尽 |
|||
14. **备份恢复**: 重要任务数据需要备份和恢复机制 |
|||
15. **性能优化**: 大量任务处理时需要考虑性能优化 |
|||
16. **安全控制**: 任务执行需要适当的权限和安全控制 |
|||
@ -0,0 +1,90 @@ |
|||
# school_jobs_failed 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_jobs_failed |
|||
**功能**: 任务失败记录表,用于记录和管理系统中执行失败的异步任务信息,包括任务队列、载荷数据、异常信息等,为系统任务监控、错误排查和故障恢复提供完整的失败任务记录 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
connection text utf8mb4_general_ci NO NULL select,insert,update,references |
|||
queue text utf8mb4_general_ci NO NULL select,insert,update,references |
|||
payload longtext utf8mb4_general_ci NO NULL select,insert,update,references |
|||
exception longtext utf8mb4_general_ci NO NULL select,insert,update,references |
|||
fail_time timestamp NULL NO CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **失败任务记录**: 记录执行失败的异步任务的完整信息 |
|||
- **队列信息管理**: 记录任务所属的队列和连接信息 |
|||
- **载荷数据保存**: 保存任务的完整载荷数据,便于重新执行 |
|||
- **异常信息记录**: 详细记录任务失败的异常信息和错误堆栈 |
|||
- **失败时间跟踪**: 记录任务失败的具体时间点 |
|||
- **错误分析支持**: 为系统错误分析和故障排查提供数据支持 |
|||
- **任务重试基础**: 为失败任务的重新执行提供数据基础 |
|||
- **系统监控**: 支持系统任务执行状态的监控和告警 |
|||
|
|||
### 业务场景 |
|||
- **邮件发送失败**: 记录邮件发送任务的失败信息 |
|||
- **短信发送失败**: 记录短信发送任务的失败详情 |
|||
- **数据同步失败**: 记录数据同步任务的失败情况 |
|||
- **文件处理失败**: 记录文件上传、转换等处理任务的失败 |
|||
- **支付回调失败**: 记录支付回调处理任务的失败 |
|||
- **报表生成失败**: 记录报表生成任务的失败信息 |
|||
- **数据导入失败**: 记录批量数据导入任务的失败 |
|||
- **定时任务失败**: 记录定时执行任务的失败情况 |
|||
- **API调用失败**: 记录第三方API调用任务的失败 |
|||
- **消息推送失败**: 记录消息推送任务的失败详情 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_sys_cron_task**: 定时任务表,可能产生失败的定时任务记录 |
|||
- **school_sys_notice_log**: 通知发送日志表,通知发送失败时的记录 |
|||
- **school_sys_notice_sms_log**: 短信发送日志表,短信发送失败时的记录 |
|||
- **school_service_logs**: 服务日志表,记录相关的服务执行日志 |
|||
- **school_sys_export**: 导出任务表,导出任务失败时的记录 |
|||
- **school_pay**: 支付表,支付相关任务失败时的关联 |
|||
- **school_sys_log**: 系统日志表,记录相关的系统操作日志 |
|||
|
|||
### 关联说明 |
|||
- 作为系统任务队列的失败记录存储,与各业务模块的异步任务关联 |
|||
- 通过queue字段标识不同类型的任务队列 |
|||
- 通过payload字段保存任务的完整上下文信息 |
|||
- 为任务重试和错误恢复提供数据支持 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 队列索引(用于按队列查询失败任务) |
|||
INDEX idx_queue (queue(100)) |
|||
|
|||
-- 连接索引(用于按连接查询失败任务) |
|||
INDEX idx_connection (connection(100)) |
|||
|
|||
-- 失败时间索引(用于按时间排序和清理) |
|||
INDEX idx_fail_time (fail_time) |
|||
|
|||
-- 复合索引(队列和时间) |
|||
INDEX idx_queue_time (queue(50), fail_time) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **数据清理**: 定期清理过期的失败任务记录,避免表数据过大 |
|||
- **异常信息长度**: exception字段可能包含很长的错误堆栈信息 |
|||
- **载荷数据安全**: payload字段可能包含敏感信息,需要注意数据安全 |
|||
- **存储空间**: longtext字段会占用较大存储空间,需要监控表大小 |
|||
- **查询性能**: 大量数据时需要注意查询性能,合理使用索引 |
|||
- **重试机制**: 建立合理的任务重试机制,避免无限重试 |
|||
- **监控告警**: 建立失败任务的监控和告警机制 |
|||
- **错误分类**: 对不同类型的错误进行分类处理 |
|||
- **日志关联**: 与系统日志建立关联,便于问题追踪 |
|||
- **备份策略**: 重要的失败任务记录需要建立备份策略 |
|||
- **权限控制**: 严格控制对失败任务记录的访问权限 |
|||
- **数据分析**: 定期分析失败任务的模式,优化系统稳定性 |
|||
@ -0,0 +1,95 @@ |
|||
# school_lesson_course_teaching 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_lesson_course_teaching |
|||
**功能**: 课程教学内容管理表,用于管理各种类型的教学资源和教案库,包括视频、文件、图片等多媒体素材,支持多项目教学内容分类、权限控制和个性化推送 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
title varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 课程标题 |
|||
image varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 预览图 |
|||
type tinyint NULL YES NULL select,insert,update,references 素材类型 (1视频 2文件 3图片) |
|||
content text utf8mb4_general_ci YES NULL select,insert,update,references 课程内容 |
|||
status tinyint NULL YES NULL select,insert,update,references 状态 (1开启 2关闭) |
|||
create_time datetime NULL YES NULL select,insert,update,references 创建时间 |
|||
update_time datetime NULL YES NULL select,insert,update,references 修改时间 |
|||
delete_time varchar(32) utf8mb4_general_ci YES 0 select,insert,update,references 删除时间 |
|||
table_type int NULL YES NULL select,insert,update,references 类型 1课程教学大纲 2跳绳教案库 3增高教案库 4篮球教案库 5强化教案库 6空中忍者教案库 7少儿安防教案库 8体能教案库 9热身动作库 10体能动作库 11趣味游戏库 12放松动作库 13训练内容 14训练视频 15课后作业 16优秀一堂课 17空中忍者 18篮球动作 19跳绳动作 20跑酷动作 21安防动作 22标准化动作 233-6岁体测 247+体测 253-6岁体测讲解—解读 267+岁体测讲解—解读 27互动游戏 28套圈游戏 29鼓励方式 |
|||
user_permission text utf8mb4_general_ci YES NULL select,insert,update,references 用户权限 |
|||
user_permission_name text utf8mb4_general_ci YES NULL select,insert,update,references 用户名称(权限) |
|||
url text utf8mb4_general_ci YES NULL select,insert,update,references 素材路径 |
|||
exam_papers_id int NULL YES 0 select,insert,update,references 试卷id |
|||
answers_num int NULL YES 0 select,insert,update,references 答题次数 |
|||
student_ids text utf8mb4_general_ci YES NULL select,insert,update,references 学员 Id |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **教学内容管理**: 统一管理各种类型的教学内容和教案资源 |
|||
- **多媒体素材支持**: 支持视频、文件、图片等多种类型的教学素材 |
|||
- **教案库分类**: 按运动项目和教学内容进行详细的分类管理 |
|||
- **权限控制**: 支持用户权限管理,控制教学内容的访问和使用 |
|||
- **状态管理**: 管理教学内容的启用/禁用状态,支持动态调整 |
|||
- **考试集成**: 集成试卷功能,支持教学效果评估 |
|||
- **学员关联**: 关联具体学员,支持个性化教学内容推送 |
|||
- **版本控制**: 支持教学内容的版本管理和更新追踪 |
|||
|
|||
### 业务场景 |
|||
- **标准化教学**: 建立标准化的教学内容库,确保教学质量一致性 |
|||
- **多项目教学**: 支持跳绳、篮球、体能、安防等多个运动项目的教学 |
|||
- **分龄教学**: 针对不同年龄段(3-6岁、7+岁)提供专门的教学内容 |
|||
- **教师培训**: 为教师提供标准化的教案和教学参考资料 |
|||
- **课程设计**: 支持教师根据教案库设计个性化的课程内容 |
|||
- **教学评估**: 通过试卷和作业评估教学效果和学员掌握情况 |
|||
- **资源共享**: 在校区间共享优质的教学资源和教案 |
|||
- **教学创新**: 收集和管理创新的教学方法和优秀课程案例 |
|||
- **家庭教育**: 为家长提供课后作业和家庭教育指导 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_course**: 课程表,关联教学内容所属的课程 |
|||
- **school_class**: 班级表,关联使用该教学内容的班级 |
|||
- **school_member**: 学员表,关联接受教学内容的学员 |
|||
- **school_personnel**: 教师表,关联创建和使用教学内容的教师 |
|||
- **school_exam_papers**: 试卷表,关联教学内容的考试评估 |
|||
- **school_sys_attachment**: 附件表,关联教学素材的文件存储 |
|||
- **school_sys_user**: 用户表,关联有权限访问内容的用户 |
|||
- **school_campus**: 校区表,关联教学内容的使用范围 |
|||
|
|||
### 关联说明 |
|||
- `exam_papers_id` 关联 `school_exam_papers.id`,关联相关的试卷和考试 |
|||
- `student_ids` 存储关联的学员ID列表,支持个性化推送 |
|||
- `user_permission` 存储用户权限信息,控制内容访问 |
|||
- `table_type` 字段区分不同类型的教学内容(教案库、动作库、游戏库等) |
|||
- 与文件存储系统关联,管理教学素材的上传和下载 |
|||
- 与权限系统关联,实现细粒度的内容访问控制 |
|||
- 与统计系统关联,分析教学内容的使用效果 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **类型索引**: `INDEX idx_table_type (table_type)` - 支持按教学内容类型查询 |
|||
- **状态索引**: `INDEX idx_status (status)` - 支持按状态查询 |
|||
- **试卷索引**: `INDEX idx_exam_papers_id (exam_papers_id)` - 支持按试卷查询 |
|||
- **素材类型索引**: `INDEX idx_type (type)` - 支持按素材类型查询 |
|||
- **时间索引**: `INDEX idx_create_time (create_time)` - 支持按创建时间查询 |
|||
- **更新时间索引**: `INDEX idx_update_time (update_time)` - 支持按更新时间查询 |
|||
- **逻辑删除索引**: `INDEX idx_delete_time (delete_time)` - 支持逻辑删除查询 |
|||
- **标题索引**: `INDEX idx_title (title)` - 支持按标题搜索 |
|||
- **复合索引**: `INDEX idx_type_status (table_type, status)` - 支持类型和状态的复合查询 |
|||
|
|||
## 注意事项 |
|||
- **内容版权**: 确保教学内容的版权合规,避免侵权问题 |
|||
- **文件大小控制**: 对上传的视频和文件进行大小限制,避免存储压力 |
|||
- **权限安全**: 严格控制教学内容的访问权限,保护知识产权 |
|||
- **内容质量**: 建立内容审核机制,确保教学内容的质量和准确性 |
|||
- **存储优化**: 对大量的多媒体文件进行存储优化和CDN加速 |
|||
- **备份策略**: 制定重要教学内容的备份和恢复策略 |
|||
- **版本管理**: 妥善管理教学内容的版本更新,避免内容混乱 |
|||
- **使用统计**: 统计教学内容的使用情况,优化内容库结构 |
|||
- **性能优化**: 对大量教学内容的查询和加载进行性能优化 |
|||
- **移动适配**: 确保教学内容在移动设备上的良好展示效果 |
|||
@ -0,0 +1,87 @@ |
|||
# school_market_performance 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_market_performance |
|||
**功能**: 市场绩效管理表,用于记录和管理市场人员的绩效数据,包括绩效金额、资源数量、绩效配置和算法等,为市场人员的绩效考核和薪酬计算提供数据支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
personnel_id int NULL YES NULL select,insert,update,references 人员ID |
|||
campus_id int NULL YES NULL select,insert,update,references 校区ID |
|||
performance_amount decimal(10,2) NULL YES 0.00 select,insert,update,references 绩效金额 |
|||
resource_count int NULL YES NULL select,insert,update,references 资源数量 |
|||
performance_date date NULL YES NULL select,insert,update,references 绩效日期 |
|||
performance_config varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 绩效配置 |
|||
performance_algorithm varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 绩效算法 |
|||
status tinyint NULL YES NULL select,insert,update,references 1新录入2待联系3已关单 |
|||
created_at timestamp NULL YES NULL select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES NULL select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **绩效记录**: 记录市场人员的日常绩效数据和业绩表现 |
|||
- **绩效计算**: 根据配置的算法自动计算绩效金额 |
|||
- **资源统计**: 统计市场人员获取的客户资源数量 |
|||
- **绩效配置**: 管理不同的绩效计算配置和规则 |
|||
- **状态跟踪**: 跟踪绩效记录的处理状态(新录入/待联系/已关单) |
|||
- **校区分析**: 按校区维度分析市场绩效表现 |
|||
- **时间管理**: 按日期维度管理和查询绩效数据 |
|||
- **算法管理**: 支持多种绩效计算算法和规则 |
|||
- **绩效审核**: 对绩效数据进行审核和确认 |
|||
|
|||
### 业务场景 |
|||
- **日常绩效录入**: 市场人员每日录入获取的客户资源和业绩数据 |
|||
- **绩效计算**: 系统根据配置的算法自动计算绩效金额 |
|||
- **绩效审核**: 管理人员审核和确认市场人员的绩效数据 |
|||
- **薪酬计算**: 基于绩效数据计算市场人员的薪酬和奖金 |
|||
- **业绩分析**: 分析市场人员和校区的业绩表现趋势 |
|||
- **资源管理**: 管理和分配市场获取的客户资源 |
|||
- **绩效考核**: 定期对市场人员进行绩效考核和评估 |
|||
- **激励机制**: 根据绩效表现制定激励和奖惩措施 |
|||
- **数据报表**: 生成各类绩效分析报表和统计数据 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 可能的关联表 |
|||
- **school_personnel**: 通过personnel_id关联人员信息表,获取市场人员详细信息 |
|||
- **school_campus**: 通过campus_id关联校区表,确定绩效所属校区 |
|||
- **school_member**: 关联学员表,统计市场人员获取的客户资源 |
|||
- **school_contract**: 关联合同表,分析签约转化率和业绩 |
|||
- **school_finance_record**: 关联财务记录,计算实际收入绩效 |
|||
- **school_sys_config**: 关联系统配置,获取绩效计算参数 |
|||
|
|||
### 关联说明 |
|||
- **与personnel表**: personnel_id关联school_personnel.id,确定绩效归属的市场人员 |
|||
- **与campus表**: campus_id关联school_campus.id,确定绩效所属的校区 |
|||
- **业务关联**: 通过人员和校区信息关联相关的业务数据 |
|||
- **配置关联**: performance_config字段关联绩效配置规则 |
|||
- **算法关联**: performance_algorithm字段关联具体的计算算法 |
|||
- **时间关联**: performance_date字段用于时间维度的数据分析 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id字段(已存在) |
|||
- **人员索引**: personnel_id字段,用于查询特定人员的绩效记录 |
|||
- **校区索引**: campus_id字段,用于按校区查询绩效数据 |
|||
- **日期索引**: performance_date字段,用于按时间范围查询 |
|||
- **状态索引**: status字段,用于按状态筛选绩效记录 |
|||
- **复合索引**: |
|||
- (personnel_id, performance_date) 用于查询人员的时间范围绩效 |
|||
- (campus_id, performance_date) 用于查询校区的时间范围绩效 |
|||
- (status, performance_date) 用于查询特定状态的时间范围数据 |
|||
|
|||
## 注意事项 |
|||
- **数据精度**: performance_amount使用decimal(10,2)确保金额计算精度 |
|||
- **状态管理**: status字段值需要严格控制(1新录入/2待联系/3已关单) |
|||
- **算法配置**: performance_algorithm字段需要与系统支持的算法保持一致 |
|||
- **日期有效性**: performance_date不能超过当前日期 |
|||
- **权限控制**: 确保只有相关人员能够修改绩效数据 |
|||
- **数据完整性**: personnel_id和campus_id必须在对应表中存在 |
|||
- **计算准确性**: 绩效金额计算需要严格按照配置的算法执行 |
|||
- **审核流程**: 重要的绩效数据变更需要经过审核流程 |
|||
- **历史数据**: 已确认的绩效数据不应随意修改 |
|||
- **性能优化**: 大量数据查询时需要合理使用索引和分页 |
|||
@ -0,0 +1,121 @@ |
|||
# school_member 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member |
|||
**功能**: 会员用户管理表,存储教务系统中所有会员用户的基本信息、登录状态、积分余额、推广关系等核心数据 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
member_id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
member_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 会员编码 |
|||
pid int NULL NO 0 select,insert,update,references 推广会员id |
|||
username varchar(255) utf8mb4_general_ci NO select,insert,update,references 会员用户名 |
|||
mobile varchar(20) utf8mb4_general_ci NO select,insert,update,references 手机号 |
|||
password varchar(255) utf8mb4_general_ci NO select,insert,update,references 会员密码 |
|||
nickname varchar(255) utf8mb4_general_ci NO select,insert,update,references 会员昵称 |
|||
headimg varchar(1000) utf8mb4_general_ci NO select,insert,update,references 会员头像 |
|||
member_level int NULL NO 0 select,insert,update,references 会员等级 |
|||
member_label varchar(255) utf8mb4_general_ci NO select,insert,update,references 会员标签 |
|||
wx_openid varchar(255) utf8mb4_general_ci NO select,insert,update,references 微信用户openid |
|||
weapp_openid varchar(255) utf8mb4_general_ci NO select,insert,update,references 微信小程序openid |
|||
wx_unionid varchar(255) utf8mb4_general_ci NO select,insert,update,references 微信unionid |
|||
ali_openid varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付宝账户id |
|||
douyin_openid varchar(255) utf8mb4_general_ci NO select,insert,update,references 抖音小程序openid |
|||
register_channel varchar(255) utf8mb4_general_ci NO H5 select,insert,update,references 注册来源 |
|||
register_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 注册方式 |
|||
login_ip varchar(255) utf8mb4_general_ci NO select,insert,update,references 当前登录ip |
|||
login_type varchar(255) utf8mb4_general_ci NO h5 select,insert,update,references 当前登录的操作终端类型 |
|||
login_channel varchar(255) utf8mb4_general_ci NO select,insert,update,references |
|||
login_count int NULL NO 0 select,insert,update,references 登录次数 |
|||
login_time int NULL NO 0 select,insert,update,references 当前登录时间 |
|||
create_time int NULL NO 0 select,insert,update,references 注册时间 |
|||
last_visit_time int NULL NO 0 select,insert,update,references 最后访问时间 |
|||
last_consum_time int NULL NO 0 select,insert,update,references 最后消费时间 |
|||
sex tinyint NULL NO 0 select,insert,update,references 性别 0保密 1男 2女 |
|||
status tinyint NULL NO 1 select,insert,update,references 用户状态 用户状态默认为1 |
|||
birthday varchar(20) utf8mb4_general_ci NO select,insert,update,references 出生日期 |
|||
point int NULL NO 0 select,insert,update,references 可用积分 |
|||
point_get int NULL NO 0 select,insert,update,references 累计获取积分 |
|||
balance decimal(10,2) NULL NO 0.00 select,insert,update,references 可用余额 |
|||
balance_get decimal(10,2) NULL NO 0.00 select,insert,update,references 累计获取余额 |
|||
money decimal(10,2) NULL NO 0.00 select,insert,update,references 可用余额(可提现) |
|||
money_get decimal(10,2) NULL NO 0.00 select,insert,update,references 累计获取余额(可提现) |
|||
money_cash_outing decimal(10,2) NULL NO 0.00 select,insert,update,references 提现中余额(可提现) |
|||
growth int NULL NO 0 select,insert,update,references 成长值 |
|||
growth_get int NULL NO 0 select,insert,update,references 累计获得成长值 |
|||
commission decimal(10,2) NULL NO 0.00 select,insert,update,references 当前佣金 |
|||
commission_get decimal(10,2) NULL NO 0.00 select,insert,update,references 佣金获取 |
|||
commission_cash_outing decimal(10,2) NULL NO 0.00 select,insert,update,references 提现中佣金 |
|||
is_member tinyint NULL NO 0 select,insert,update,references 是否是会员 |
|||
member_time int NULL NO 0 select,insert,update,references 成为会员时间 |
|||
is_del tinyint NULL NO 0 select,insert,update,references 0正常 1已删除 |
|||
province_id int NULL NO 0 select,insert,update,references 省id |
|||
city_id int NULL NO 0 select,insert,update,references 市id |
|||
district_id int NULL NO 0 select,insert,update,references 区县id |
|||
address varchar(255) utf8mb4_general_ci NO select,insert,update,references 详细地址 |
|||
location varchar(255) utf8mb4_general_ci NO select,insert,update,references 定位地址 |
|||
delete_time int NULL NO 0 select,insert,update,references 删除时间 |
|||
update_time int NULL NO 0 select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **用户身份管理**: 存储会员基本信息(用户名、手机号、昵称、头像等) |
|||
2. **多平台登录支持**: 支持微信、支付宝、抖音等多平台账号绑定 |
|||
3. **积分与余额管理**: 管理用户积分、余额、佣金等财务数据 |
|||
4. **推广体系**: 支持会员推广关系管理(pid字段) |
|||
5. **用户等级管理**: 会员等级、标签、成长值等用户分层 |
|||
6. **地理位置管理**: 用户地址、定位信息存储 |
|||
|
|||
### 业务场景 |
|||
1. **用户注册登录**: 新用户注册、老用户多平台登录验证 |
|||
2. **会员权益管理**: 根据会员等级提供不同服务权益 |
|||
3. **积分商城**: 用户通过积分兑换课程或商品 |
|||
4. **推广营销**: 会员推广新用户获得佣金奖励 |
|||
5. **用户画像分析**: 基于用户行为数据进行精准营销 |
|||
6. **财务结算**: 用户余额充值、消费、提现等财务操作 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_member_level**: 会员等级表(member_level字段关联) |
|||
2. **school_order**: 订单表(member_id关联) |
|||
3. **school_course_member**: 会员课程关联表 |
|||
4. **school_point_log**: 积分变动记录表 |
|||
5. **school_balance_log**: 余额变动记录表 |
|||
6. **school_commission_log**: 佣金记录表 |
|||
7. **sys_region**: 地区表(province_id, city_id, district_id关联) |
|||
|
|||
### 关联说明 |
|||
1. **推广关系**: pid字段形成会员推广树状结构 |
|||
2. **财务关联**: 与各种财务日志表关联,记录资金变动 |
|||
3. **课程关联**: 通过中间表与课程、班级等教学资源关联 |
|||
4. **地理关联**: 与地区表关联,支持按地区统计分析 |
|||
5. **等级关联**: 与会员等级表关联,实现会员分层管理 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: member_id(已存在) |
|||
2. **唯一索引**: |
|||
- mobile(手机号唯一) |
|||
- username(用户名唯一) |
|||
3. **普通索引**: |
|||
- pid(推广查询) |
|||
- member_level(等级筛选) |
|||
- status(状态筛选) |
|||
- create_time(注册时间排序) |
|||
- last_visit_time(活跃度分析) |
|||
4. **复合索引**: |
|||
- (status, member_level)(状态+等级查询) |
|||
- (province_id, city_id, district_id)(地区查询) |
|||
|
|||
## 注意事项 |
|||
1. **数据安全**: password字段需要加密存储,不可明文 |
|||
2. **软删除**: 使用is_del字段实现软删除,保护历史数据 |
|||
3. **财务精度**: 所有金额字段使用decimal(10,2)确保精度 |
|||
4. **状态管理**: status字段控制用户可用性,需要业务逻辑配合 |
|||
5. **多平台openid**: 各平台openid字段需要做唯一性校验 |
|||
6. **积分余额**: 涉及财务的字段变更需要记录操作日志 |
|||
7. **推广关系**: pid字段变更需要重新计算推广层级关系 |
|||
@ -0,0 +1,101 @@ |
|||
# school_member_account_log 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_account_log |
|||
**功能**: 会员账户日志表,负责记录会员账户的所有变动操作,包括积分、余额等账户数据的增减记录和审计追踪 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references |
|||
member_id int NULL NO 0 select,insert,update,references 用户id |
|||
account_type varchar(255) utf8mb4_general_ci NO point select,insert,update,references 账户类型 |
|||
account_data decimal(10,2) NULL NO 0.00 select,insert,update,references 账户数据 |
|||
account_sum decimal(10,2) NULL NO 0.00 select,insert,update,references 变动后的账户余额 |
|||
from_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 来源类型 |
|||
related_id varchar(50) utf8mb4_general_ci NO select,insert,update,references 关联Id |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
memo varchar(255) utf8mb4_general_ci NO select,insert,update,references 备注信息 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **账户变动记录**: 记录会员账户的所有变动操作 |
|||
2. **账户类型管理**: 支持多种账户类型(积分、余额等) |
|||
3. **变动金额跟踪**: 记录每次变动的具体金额 |
|||
4. **余额计算**: 记录变动后的账户余额 |
|||
5. **来源追踪**: 记录账户变动的来源类型 |
|||
6. **关联业务**: 通过关联ID关联具体的业务操作 |
|||
7. **操作备注**: 记录详细的操作说明和备注信息 |
|||
8. **时间记录**: 记录操作的准确时间 |
|||
9. **审计支持**: 提供完整的账户操作审计轨迹 |
|||
|
|||
### 业务场景 |
|||
- 会员充值时增加账户余额 |
|||
- 会员消费时扣减账户余额 |
|||
- 积分获得和消费记录 |
|||
- 会员退款时账户余额变动 |
|||
- 系统调账和账户纠错 |
|||
- 促销活动赠送积分或余额 |
|||
- 会员等级升级奖励 |
|||
- 推荐奖励和返利记录 |
|||
- 账户冻结和解冻操作 |
|||
- 财务对账和审计检查 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_member**: 通过member_id关联会员信息 |
|||
2. **school_pay**: 通过related_id关联支付记录 |
|||
3. **school_order_table**: 通过related_id关联订单信息 |
|||
4. **school_contract**: 通过related_id关联合同记录 |
|||
5. **school_member_level**: 会员等级变动关联 |
|||
6. **school_member_sign**: 签到奖励关联 |
|||
7. **school_sys_user**: 操作人员关联 |
|||
8. **school_campus**: 校区操作关联 |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: member_id关联会员基本信息和账户状态 |
|||
- **支付关联**: 充值、退款等操作关联支付记录 |
|||
- **订单关联**: 消费扣款关联具体订单 |
|||
- **合同关联**: 合同相关的账户操作 |
|||
- **等级关联**: 会员等级变动产生的奖励记录 |
|||
- **签到关联**: 签到获得的积分奖励 |
|||
- **操作关联**: 记录具体的操作人员 |
|||
- **校区关联**: 区分不同校区的账户操作 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id(已存在) |
|||
- **外键索引**: member_id(会员账户查询) |
|||
- **业务索引**: |
|||
- account_type(账户类型查询) |
|||
- from_type(来源类型查询) |
|||
- related_id(关联业务查询) |
|||
- **复合索引**: |
|||
- (member_id, account_type)(会员特定账户查询) |
|||
- (member_id, create_time)(会员时间序列查询) |
|||
- (from_type, related_id)(来源业务查询) |
|||
- (account_type, create_time)(类型时间查询) |
|||
- **时间索引**: |
|||
- create_time(时间范围查询) |
|||
- **金额索引**: |
|||
- account_data(金额范围查询) |
|||
|
|||
## 注意事项 |
|||
1. **数据完整性**: 所有字段都不能为空,确保日志完整性 |
|||
2. **余额一致性**: account_sum必须与实际账户余额保持一致 |
|||
3. **账户类型**: account_type需要严格控制枚举值 |
|||
4. **金额精度**: 使用decimal(10,2)确保金额计算精度 |
|||
5. **时间戳**: create_time使用时间戳格式记录 |
|||
6. **只增不改**: 日志记录原则上只能新增,不能修改删除 |
|||
7. **关联有效性**: related_id必须关联有效的业务记录 |
|||
8. **来源追踪**: from_type必须明确标识变动来源 |
|||
9. **并发控制**: 账户操作需要防止并发冲突 |
|||
10. **备注规范**: memo字段应记录详细的操作说明 |
|||
11. **审计要求**: 满足财务审计的相关要求 |
|||
12. **数据备份**: 账户日志需要定期备份 |
|||
13. **性能优化**: 大量日志数据需要考虑查询性能 |
|||
14. **数据归档**: 历史日志数据需要定期归档 |
|||
15. **监控告警**: 异常账户变动需要及时告警 |
|||
@ -0,0 +1,95 @@ |
|||
# school_member_address 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_address |
|||
**功能**: 会员地址管理表,用于存储和管理会员的收货地址信息,支持多地址管理、默认地址设置和地理位置定位 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references |
|||
member_id int NULL NO MUL 0 select,insert,update,references 会员id |
|||
name varchar(255) utf8mb4_general_ci NO select,insert,update,references 用户姓名 |
|||
mobile varchar(255) utf8mb4_general_ci NO select,insert,update,references 手机 |
|||
province_id int NULL NO 0 select,insert,update,references 省id |
|||
city_id int NULL NO 0 select,insert,update,references 市id |
|||
district_id int NULL NO 0 select,insert,update,references 区县id |
|||
address varchar(255) utf8mb4_general_ci NO select,insert,update,references 地址信息 |
|||
address_name varchar(255) utf8mb4_general_ci NO select,insert,update,references |
|||
full_address varchar(255) utf8mb4_general_ci NO select,insert,update,references 详细地址信息 |
|||
lng varchar(255) utf8mb4_general_ci NO select,insert,update,references 经度 |
|||
lat varchar(255) utf8mb4_general_ci NO select,insert,update,references 纬度 |
|||
is_default tinyint NULL NO 0 select,insert,update,references 是否是默认地址 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **多地址管理**: 支持会员添加和管理多个收货地址 |
|||
- **默认地址设置**: 通过is_default字段设置和管理默认收货地址 |
|||
- **地理位置定位**: 存储地址的经纬度信息,支持地图定位和距离计算 |
|||
- **行政区划管理**: 通过省市区三级联动管理地址的行政区划 |
|||
- **联系信息存储**: 存储收货人姓名和联系电话 |
|||
- **详细地址记录**: 支持完整的地址信息存储,包括门牌号等详细信息 |
|||
- **地址验证**: 支持地址信息的完整性和准确性验证 |
|||
- **快速选择**: 为会员提供快速选择常用地址的功能 |
|||
|
|||
### 业务场景 |
|||
- **商品配送**: 为会员购买的教材、用品等商品提供配送地址 |
|||
- **证书邮寄**: 为学员的毕业证书、结业证书等提供邮寄地址 |
|||
- **活动物料**: 为线上活动的奖品、礼品等提供收货地址 |
|||
- **教学用品**: 为在线课程的教学用品、学习资料等提供配送服务 |
|||
- **紧急联系**: 在紧急情况下作为会员的联系地址 |
|||
- **就近服务**: 基于地理位置为会员推荐就近的校区或服务点 |
|||
- **区域分析**: 分析会员的地理分布,优化服务布局 |
|||
- **物流优化**: 基于地址信息优化配送路线和成本 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_member**: 会员表,通过member_id关联会员基本信息 |
|||
- **school_sys_area**: 地区表,通过province_id、city_id、district_id关联行政区划 |
|||
- **school_order**: 订单表,关联订单的收货地址信息 |
|||
- **school_delivery**: 配送表,关联配送记录和地址信息 |
|||
- **school_campus**: 校区表,用于计算最近校区和服务范围 |
|||
|
|||
### 关联说明 |
|||
- `member_id` 关联 `school_member.id`,标识地址所属的会员 |
|||
- `province_id`、`city_id`、`district_id` 关联地区表,获取完整的行政区划信息 |
|||
- 与订单系统关联,为订单提供准确的收货地址 |
|||
- 与配送系统关联,支持物流配送和跟踪 |
|||
- 与校区系统关联,计算会员与各校区的距离 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 会员索引(用于查询会员的所有地址) |
|||
INDEX idx_member_id (member_id) |
|||
|
|||
-- 默认地址索引(用于快速查找默认地址) |
|||
INDEX idx_member_default (member_id, is_default) |
|||
|
|||
-- 省市区索引(用于地区统计) |
|||
INDEX idx_province_city_district (province_id, city_id, district_id) |
|||
|
|||
-- 手机号索引(用于联系方式查询) |
|||
INDEX idx_mobile (mobile) |
|||
|
|||
-- 地理位置索引(用于位置查询) |
|||
INDEX idx_location (lng, lat) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **默认地址唯一性**: 每个会员只能有一个默认地址,设置新默认地址时需要取消其他地址的默认状态 |
|||
- **地址完整性**: 确保地址信息的完整性,包括省市区和详细地址 |
|||
- **联系方式验证**: 验证手机号格式的正确性和有效性 |
|||
- **地理坐标精度**: 经纬度信息应保证足够精度,支持准确的位置计算 |
|||
- **数据同步**: 地址变更时需要同步更新相关订单和配送信息 |
|||
- **隐私保护**: 地址信息涉及用户隐私,需要严格的访问控制 |
|||
- **地址验证**: 建议集成地址验证服务,确保地址的真实性 |
|||
- **存储优化**: 对于大量地址数据,考虑分表或分区策略 |
|||
- **缓存策略**: 常用地址信息可以适当缓存,提高查询效率 |
|||
- **数据清理**: 定期清理无效或重复的地址信息 |
|||
@ -0,0 +1,110 @@ |
|||
# school_member_cash_out 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_cash_out |
|||
**功能**: 会员提现管理表,用于管理会员的资金提现申请和处理流程,包括提现申请、审核、转账、状态跟踪等完整的提现业务流程,支持多种提现方式和账户类型,为会员资金管理和财务结算提供完整的提现服务 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
cash_out_no varchar(50) utf8mb4_general_ci NO select,insert,update,references 提现交易号 |
|||
member_id int NULL NO 0 select,insert,update,references 会员id |
|||
account_type varchar(255) utf8mb4_general_ci NO money select,insert,update,references 提现账户类型 |
|||
transfer_type varchar(20) utf8mb4_general_ci NO 0 select,insert,update,references 转账提现类型 |
|||
transfer_realname varchar(50) utf8mb4_general_ci NO select,insert,update,references 联系人名称 |
|||
transfer_mobile varchar(11) utf8mb4_general_ci NO select,insert,update,references 手机号 |
|||
transfer_bank varchar(255) utf8mb4_general_ci NO select,insert,update,references 银行名称 |
|||
transfer_account varchar(255) utf8mb4_general_ci NO select,insert,update,references 收款账号 |
|||
transfer_payee varchar(255) utf8mb4_general_ci NO select,insert,update,references 转账收款方(json),主要用于对接在线的打款方式 |
|||
transfer_payment_code varchar(500) utf8mb4_general_ci NO select,insert,update,references 收款码图片 |
|||
transfer_fail_reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 失败原因 |
|||
transfer_status varchar(20) utf8mb4_general_ci NO select,insert,update,references 转账状态 |
|||
transfer_time int NULL NO 0 select,insert,update,references 转账时间 |
|||
apply_money decimal(10,2) NULL NO 0.00 select,insert,update,references 提现申请金额 |
|||
rate decimal(10,2) NULL NO 0.00 select,insert,update,references 提现手续费比率 |
|||
service_money decimal(10,2) NULL NO 0.00 select,insert,update,references 提现手续费 |
|||
money decimal(10,2) NULL NO 0.00 select,insert,update,references 提现到账金额 |
|||
audit_time int NULL NO 0 select,insert,update,references 审核时间 |
|||
status int NULL NO 0 select,insert,update,references 状态1待审核2.待转账3已转账 -1拒绝 -2 已取消 |
|||
remark varchar(255) utf8mb4_general_ci NO select,insert,update,references 备注 |
|||
create_time int NULL NO 0 select,insert,update,references 申请时间 |
|||
refuse_reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 拒绝理由 |
|||
update_time int NULL NO 0 select,insert,update,references |
|||
transfer_no varchar(50) utf8mb4_general_ci NO select,insert,update,references 转账单号 |
|||
cancel_time int NULL NO 0 select,insert,update,references 取消时间 |
|||
final_transfer_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 转账方式 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **会员提现申请管理**: 处理会员的提现申请,包括申请金额、手续费计算等 |
|||
- **提现账户信息管理**: 管理提现的收款账户信息(银行卡、支付宝、微信等) |
|||
- **提现流程控制**: 管理提现的完整流程(申请→审核→转账→完成) |
|||
- **提现状态跟踪**: 实时跟踪提现状态变化和处理进度 |
|||
- **手续费计算**: 根据提现金额和费率计算手续费,确定实际到账金额 |
|||
- **转账记录管理**: 记录转账操作的详细信息和结果 |
|||
- **审核机制**: 支持人工审核,防范风险和异常提现 |
|||
- **失败处理**: 记录提现失败原因,支持重新处理 |
|||
- **取消机制**: 支持用户主动取消提现申请 |
|||
|
|||
### 业务场景 |
|||
- **会员余额提现**: 会员将账户余额提现到银行卡或第三方支付账户 |
|||
- **佣金提现**: 推广员或代理商提现佣金收入 |
|||
- **退费提现**: 课程退费后的资金提现 |
|||
- **批量提现处理**: 财务人员批量处理提现申请 |
|||
- **提现审核**: 风控人员审核大额或异常提现申请 |
|||
- **自动转账**: 系统自动处理符合条件的提现申请 |
|||
- **提现对账**: 与银行或第三方支付平台进行提现对账 |
|||
- **提现统计**: 生成提现相关的财务报表和统计数据 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (member_id) |
|||
- `school_member_cash_out_account`: 提现账户表 (通过member_id和账户信息关联) |
|||
- `school_member_account`: 会员账户表 (member_id) |
|||
- `school_pay`: 支付记录表 (通过业务关联) |
|||
- `school_sys_user`: 系统用户表 (审核人员信息) |
|||
- `school_member_account_log`: 账户流水表 (资金变动记录) |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: member_id关联会员基本信息,确定提现申请人 |
|||
- **账户关联**: 与会员账户表关联,验证可提现余额 |
|||
- **收款账户**: 通过账户类型和账户信息关联具体的收款方式 |
|||
- **资金流水**: 提现成功后在账户流水表中记录资金变动 |
|||
- **审核关联**: 审核操作可能关联系统用户信息 |
|||
- **支付关联**: 提现可能涉及原始支付记录的关联 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: cash_out_no (提现交易号唯一性) |
|||
- **外键索引**: member_id (会员查询) |
|||
- **状态索引**: status (状态查询) |
|||
- **时间索引**: |
|||
- create_time (申请时间查询) |
|||
- audit_time (审核时间查询) |
|||
- transfer_time (转账时间查询) |
|||
- **复合索引**: |
|||
- (member_id, status) (会员提现状态查询) |
|||
- (status, create_time) (状态时间查询) |
|||
- (transfer_status, transfer_time) (转账状态时间查询) |
|||
- (account_type, status) (账户类型状态查询) |
|||
|
|||
## 注意事项 |
|||
- **金额精度**: 所有金额字段使用decimal(10,2),确保财务计算精度 |
|||
- **状态流转**: 提现状态有严格的流转规则,不能随意跳跃 |
|||
- **余额验证**: 提现前必须验证会员账户余额是否充足 |
|||
- **手续费计算**: 手续费计算必须准确,避免财务差错 |
|||
- **账户安全**: 收款账户信息需要验证真实性和有效性 |
|||
- **审核机制**: 大额提现或异常提现必须人工审核 |
|||
- **时间逻辑**: 各个时间字段的逻辑关系必须正确 |
|||
- **失败处理**: 提现失败时必须记录详细原因,便于问题排查 |
|||
- **取消限制**: 已审核或已转账的提现不能取消 |
|||
- **重复申请**: 防止同一笔资金重复申请提现 |
|||
- **数据一致性**: 提现成功后必须同步更新会员账户余额 |
|||
- **日志记录**: 所有提现操作都应该有详细的日志记录 |
|||
- **风控规则**: 建立完善的风控规则,防范异常提现 |
|||
- **对账机制**: 定期与银行或第三方支付平台进行对账 |
|||
@ -0,0 +1,74 @@ |
|||
# school_member_cash_out_account 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_cash_out_account |
|||
**功能**: 会员提现账户管理表,用于存储和管理会员的提现账户信息,支持多种账户类型和支付方式,为会员资金提现提供安全可靠的账户管理服务 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
account_id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
member_id int NULL NO 0 select,insert,update,references 会员id |
|||
account_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 账户类型 |
|||
bank_name varchar(255) utf8mb4_general_ci NO select,insert,update,references 银行名称 |
|||
realname varchar(255) utf8mb4_general_ci NO select,insert,update,references 真实名称 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 修改时间 |
|||
account_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 提现账户 |
|||
transfer_payment_code varchar(255) utf8mb4_general_ci NO select,insert,update,references 收款码 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **提现账户管理**: 存储会员的提现账户信息,支持多种账户类型 |
|||
- **银行账户绑定**: 管理会员绑定的银行卡信息,包括银行名称、账户号码 |
|||
- **收款码管理**: 支持移动支付收款码的存储和管理 |
|||
- **实名认证**: 记录账户持有人的真实姓名信息 |
|||
- **账户安全**: 提供账户创建和修改的时间追踪 |
|||
|
|||
### 业务场景 |
|||
- **会员提现申请**: 会员申请提现时选择已绑定的提现账户 |
|||
- **多账户管理**: 支持会员绑定多个不同类型的提现账户 |
|||
- **风控审核**: 提现审核时验证账户信息的真实性和有效性 |
|||
- **财务结算**: 财务人员根据账户信息进行资金转账操作 |
|||
- **账户变更**: 会员可以修改或更新已绑定的账户信息 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_member**: 通过member_id关联会员基础信息 |
|||
- **school_member_cash_out**: 关联具体的提现申请记录 |
|||
- **school_pay**: 可能关联支付相关的账户验证 |
|||
|
|||
### 关联说明 |
|||
- `member_id` → `school_member.member_id`: 一对多关系,一个会员可以有多个提现账户 |
|||
- 与提现申请表形成业务关联,提现时选择对应的账户信息 |
|||
- 支持账户类型的扩展,适应不同的支付方式需求 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(已存在) |
|||
PRIMARY KEY (account_id) |
|||
|
|||
-- 会员账户查询索引 |
|||
INDEX idx_member_id (member_id) |
|||
|
|||
-- 账户类型查询索引 |
|||
INDEX idx_account_type (account_type) |
|||
|
|||
-- 复合索引:会员+账户类型 |
|||
INDEX idx_member_account_type (member_id, account_type) |
|||
|
|||
-- 创建时间索引 |
|||
INDEX idx_create_time (create_time) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **数据安全**: 银行账户信息属于敏感数据,需要加密存储 |
|||
- **实名验证**: 真实姓名必须与银行账户持有人一致 |
|||
- **账户唯一性**: 同一会员的同类型账户应避免重复绑定 |
|||
- **状态管理**: 建议增加账户状态字段(启用/禁用) |
|||
- **审核机制**: 新增账户应经过审核验证后才能用于提现 |
|||
- **日志记录**: 账户信息的修改应记录详细的操作日志 |
|||
@ -0,0 +1,95 @@ |
|||
# school_member_label 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_label |
|||
**功能**: 会员标签管理表,负责管理教务系统中的会员标签分类,包括标签创建、分类管理、排序设置等会员分组和标识功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
label_id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 标签id |
|||
label_name varchar(50) utf8mb4_general_ci NO select,insert,update,references 标签名称 |
|||
memo varchar(1000) utf8mb4_general_ci NO select,insert,update,references 备注 |
|||
sort int NULL NO 0 select,insert,update,references 排序 |
|||
create_time int NULL NO 0 select,insert,update,references 添加时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **标签创建管理**: 创建和管理各种会员标签类型 |
|||
- **标签分类**: 对会员进行分类标识和管理 |
|||
- **排序控制**: 设置标签的显示顺序和优先级 |
|||
- **标签描述**: 提供标签的详细说明和备注信息 |
|||
- **标签维护**: 支持标签的修改、删除和更新操作 |
|||
- **标签统计**: 统计各标签下的会员数量 |
|||
- **标签筛选**: 支持基于标签的会员筛选和查询 |
|||
- **标签应用**: 为会员分配和移除标签 |
|||
- **标签权限**: 控制标签的使用权限和可见性 |
|||
|
|||
### 业务场景 |
|||
- **会员分组**: 根据不同特征对会员进行分组管理 |
|||
- **营销活动**: 基于标签进行精准营销和推广 |
|||
- **课程推荐**: 根据会员标签推荐合适的课程 |
|||
- **权益管理**: 为不同标签的会员提供差异化权益 |
|||
- **数据分析**: 基于标签进行会员行为分析 |
|||
- **客户服务**: 根据标签提供个性化服务 |
|||
- **活动报名**: 限制特定标签会员参与活动 |
|||
- **消息推送**: 向特定标签会员推送消息 |
|||
- **会员筛选**: 在各种业务场景中筛选目标会员 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (标签关联) |
|||
- `school_member_label_relation`: 会员标签关系表 (多对多关联) |
|||
- `school_diy_form_write_config`: 表单配置表 (标签筛选) |
|||
- `school_course`: 课程表 (课程推荐) |
|||
- `school_activity`: 活动表 (活动参与限制) |
|||
- `school_message`: 消息表 (消息推送) |
|||
- `school_personnel`: 人员表 (标签管理权限) |
|||
- `sys_log`: 系统日志表 (标签操作日志) |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: 通过关系表与会员信息建立多对多关联 |
|||
- **表单关联**: 在表单配置中用于筛选参与人员 |
|||
- **课程关联**: 基于标签进行课程推荐和限制 |
|||
- **活动关联**: 控制活动的参与人员范围 |
|||
- **消息关联**: 实现精准的消息推送和通知 |
|||
- **权限关联**: 控制标签的创建和管理权限 |
|||
- **日志关联**: 记录标签的操作和变更历史 |
|||
- **业务关联**: 在各种业务场景中作为筛选条件 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: label_id (已存在) |
|||
- **唯一索引**: label_name (标签名称唯一) |
|||
- **业务索引**: |
|||
- sort (排序查询) |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
- **复合索引**: |
|||
- (sort, create_time) (排序时间查询) |
|||
- **全文索引**: |
|||
- label_name (标签名称搜索) |
|||
- memo (备注内容搜索) |
|||
|
|||
## 注意事项 |
|||
- **标签名称唯一性**: label_name必须保持唯一,避免重复标签 |
|||
- **排序值管理**: sort字段需要合理设置,避免排序冲突 |
|||
- **标签删除检查**: 删除标签前需要检查是否有会员关联 |
|||
- **备注信息完整性**: memo字段应提供清晰的标签说明 |
|||
- **标签层级**: 如需要层级结构,需要扩展表结构 |
|||
- **标签数量控制**: 避免创建过多无用标签影响管理 |
|||
- **权限控制**: 标签的创建和修改需要适当的权限控制 |
|||
- **标签应用**: 标签分配给会员时需要验证标签有效性 |
|||
- **数据一致性**: 标签修改时需要同步更新相关业务 |
|||
- **性能考虑**: 大量标签时需要考虑查询性能 |
|||
- **标签规范**: 建立标签命名和使用规范 |
|||
- **定期清理**: 定期清理无用或过期的标签 |
|||
- **标签统计**: 定期统计标签使用情况和效果 |
|||
- **备份恢复**: 重要标签配置需要备份 |
|||
- **版本控制**: 标签变更需要记录历史版本 |
|||
- **国际化**: 多语言环境下标签名称的处理 |
|||
- **缓存策略**: 频繁使用的标签可以缓存提升性能 |
|||
@ -0,0 +1,98 @@ |
|||
# school_member_level 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_level |
|||
**功能**: 会员等级管理表,负责管理教务系统中的会员等级体系、成长值要求、等级权益、等级礼包等会员激励机制 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
level_id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 会员等级 |
|||
level_name varchar(50) utf8mb4_general_ci NO select,insert,update,references 等级名称 |
|||
growth int NULL NO 0 select,insert,update,references 所需成长值 |
|||
remark varchar(255) utf8mb4_general_ci NO select,insert,update,references 备注 |
|||
status int NULL NO 1 select,insert,update,references 状态 0已禁用1已启用 |
|||
create_time int NULL NO 0 select,insert,update,references 添加时间 |
|||
update_time int NULL NO 0 select,insert,update,references 更新时间 |
|||
level_benefits text utf8mb4_general_ci YES NULL select,insert,update,references 等级权益 |
|||
level_gifts text utf8mb4_general_ci YES NULL select,insert,update,references 等级礼包 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **等级体系管理**: 建立完整的会员等级体系和等级名称 |
|||
- **成长值设定**: 设定各等级所需的成长值门槛 |
|||
- **等级权益管理**: 配置不同等级享有的权益和特权 |
|||
- **等级礼包配置**: 设置等级升级时的奖励礼包 |
|||
- **等级状态控制**: 管理等级的启用和禁用状态 |
|||
- **等级排序**: 支持等级的排序和层级管理 |
|||
- **权益差异化**: 实现不同等级的差异化服务 |
|||
- **激励机制**: 通过等级体系激励会员消费和活跃 |
|||
- **等级备注**: 支持等级说明和备注信息 |
|||
|
|||
### 业务场景 |
|||
- **会员注册**: 新会员默认分配初始等级 |
|||
- **等级升级**: 会员达到成长值要求时自动升级 |
|||
- **权益享受**: 会员根据等级享受相应权益和服务 |
|||
- **礼包发放**: 等级升级时自动发放等级礼包 |
|||
- **营销活动**: 基于等级开展差异化营销活动 |
|||
- **服务定价**: 不同等级享受不同的服务价格 |
|||
- **客户维护**: 通过等级体系维护高价值客户 |
|||
- **数据分析**: 分析不同等级会员的行为和价值 |
|||
- **等级调整**: 根据业务需要调整等级体系 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (会员等级关联) |
|||
- `school_member_account_log`: 会员账户日志表 (成长值变化记录) |
|||
- `school_order_table`: 订单表 (消费产生成长值) |
|||
- `school_contract`: 合同表 (签约产生成长值) |
|||
- `school_pay`: 支付表 (支付产生成长值) |
|||
- `school_member_sign`: 会员签到表 (签到产生成长值) |
|||
- `school_course`: 课程表 (等级享受课程优惠) |
|||
- `school_gift`: 赠品表 (等级礼包关联) |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: 会员表中的level_id字段关联此表的level_id |
|||
- **成长值关联**: 会员的各种行为产生成长值,影响等级升级 |
|||
- **消费关联**: 订单、合同、支付等消费行为产生成长值 |
|||
- **活跃关联**: 签到、学习等活跃行为产生成长值 |
|||
- **权益关联**: 等级权益影响课程价格、服务质量等 |
|||
- **礼包关联**: 等级升级时发放相应的礼品和优惠 |
|||
- **营销关联**: 等级信息用于精准营销和客户分层 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: level_id (已存在) |
|||
- **唯一索引**: |
|||
- level_name (等级名称唯一) |
|||
- growth (成长值唯一,避免重复门槛) |
|||
- **业务索引**: |
|||
- status (状态查询) |
|||
- sort (排序查询) |
|||
- **复合索引**: |
|||
- (status, sort) (有效等级排序查询) |
|||
- (growth, status) (成长值门槛查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- update_time (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **等级唯一性**: level_name必须唯一,避免等级名称重复 |
|||
- **成长值递增**: growth值应该递增设置,确保等级层次合理 |
|||
- **成长值唯一**: 同一成长值不能对应多个等级 |
|||
- **状态控制**: 禁用等级时需要考虑现有会员的处理 |
|||
- **权益格式**: level_benefits字段建议使用JSON格式存储 |
|||
- **礼包格式**: level_gifts字段建议使用JSON格式存储 |
|||
- **等级排序**: sort字段用于控制等级显示顺序 |
|||
- **数据完整性**: 删除等级前需要检查是否有会员使用 |
|||
- **升级逻辑**: 会员成长值达到门槛时需要自动升级 |
|||
- **降级处理**: 需要考虑是否支持等级降级机制 |
|||
- **权益兑现**: 等级权益需要在相关业务中实际生效 |
|||
- **礼包发放**: 等级升级时需要自动发放对应礼包 |
|||
- **历史记录**: 建议记录会员等级变更历史 |
|||
- **缓存策略**: 等级信息变更频率低,适合缓存 |
|||
- **权限控制**: 等级配置需要严格的权限控制 |
|||
- **数据备份**: 等级配置是核心业务数据,需要定期备份 |
|||
@ -0,0 +1,101 @@ |
|||
# school_member_sign 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_member_sign |
|||
**功能**: 会员签到记录表,负责管理教务系统中的会员签到功能,包括签到记录、签到统计、连续签到、签到奖励等会员活跃度管理功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
sign_id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references |
|||
member_id int NULL NO 0 select,insert,update,references 会员id |
|||
days int NULL NO 0 select,insert,update,references 连续签到天数 |
|||
day_award varchar(255) utf8mb4_general_ci NO select,insert,update,references 日签奖励 |
|||
continue_award varchar(255) utf8mb4_general_ci NO select,insert,update,references 连签奖励 |
|||
continue_tag varchar(30) utf8mb4_general_ci NO select,insert,update,references 连签奖励标识 |
|||
create_time int NULL NO 0 select,insert,update,references 签到时间 |
|||
start_time int NULL NO 0 select,insert,update,references 签到周期开始时间 |
|||
is_sign tinyint(1) NULL NO 0 select,insert,update,references 是否签到(0未签到 1已签到) |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **签到记录**: 记录会员每日签到情况和时间 |
|||
- **签到统计**: 统计会员的签到次数和频率 |
|||
- **连续签到**: 计算和记录会员连续签到天数 |
|||
- **签到奖励**: 根据签到情况发放积分或奖励 |
|||
- **签到提醒**: 提醒会员进行每日签到 |
|||
- **签到历史**: 查看会员的历史签到记录 |
|||
- **签到排行**: 展示签到排行榜和活跃度排名 |
|||
- **补签功能**: 支持会员补签漏签的日期 |
|||
- **签到验证**: 验证签到的有效性和防作弊 |
|||
- **签到分析**: 分析会员签到行为和活跃度 |
|||
|
|||
### 业务场景 |
|||
- **会员活跃**: 通过签到提升会员活跃度和粘性 |
|||
- **积分获取**: 会员通过签到获得积分奖励 |
|||
- **习惯养成**: 培养会员定期访问的习惯 |
|||
- **数据分析**: 分析会员活跃度和使用频率 |
|||
- **营销活动**: 基于签到数据开展营销活动 |
|||
- **会员等级**: 签到作为会员等级提升的条件 |
|||
- **课程提醒**: 结合签到提醒会员上课 |
|||
- **社区建设**: 通过签到增强社区氛围 |
|||
- **用户留存**: 提高用户留存率和回访率 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (签到用户) |
|||
- `school_member_account_log`: 会员账户日志表 (签到奖励) |
|||
- `school_member_sign_config`: 签到配置表 (签到规则) |
|||
- `school_course`: 课程表 (课程签到) |
|||
- `school_class`: 班级表 (班级签到) |
|||
- `school_activity`: 活动表 (活动签到) |
|||
- `school_message`: 消息表 (签到提醒) |
|||
- `sys_log`: 系统日志表 (签到日志) |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: 记录具体会员的签到行为和数据 |
|||
- **账户关联**: 签到奖励通过账户日志记录积分变化 |
|||
- **配置关联**: 根据签到配置执行签到规则和奖励 |
|||
- **课程关联**: 课程相关的签到记录和统计 |
|||
- **班级关联**: 班级成员的签到情况统计 |
|||
- **活动关联**: 活动期间的特殊签到要求 |
|||
- **消息关联**: 发送签到提醒和奖励通知 |
|||
- **日志关联**: 记录签到操作的详细日志 |
|||
- **业务关联**: 与各种业务场景的签到需求关联 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: sign_id (已存在) |
|||
- **业务索引**: |
|||
- member_id (会员查询) |
|||
- sign_date (签到日期查询) |
|||
- create_time (创建时间查询) |
|||
- continuous_days (连续天数查询) |
|||
- **复合索引**: |
|||
- (member_id, sign_date) (会员签到记录查询) |
|||
- (member_id, create_time) (会员签到历史) |
|||
- (sign_date, create_time) (日期时间查询) |
|||
- **唯一索引**: |
|||
- (member_id, sign_date) (防止重复签到) |
|||
|
|||
## 注意事项 |
|||
- **重复签到防护**: 同一会员同一天只能签到一次 |
|||
- **时间有效性**: 签到时间需要在有效的时间范围内 |
|||
- **连续天数计算**: 连续签到天数的计算逻辑要准确 |
|||
- **时区处理**: 跨时区用户的签到时间处理 |
|||
- **补签限制**: 补签功能需要设置合理的时间限制 |
|||
- **奖励发放**: 签到奖励的发放需要保证准确性 |
|||
- **数据一致性**: 签到记录与奖励记录保持一致 |
|||
- **性能优化**: 大量签到数据的查询性能优化 |
|||
- **防作弊机制**: 防止恶意刷签到的安全措施 |
|||
- **数据清理**: 定期清理过期的签到数据 |
|||
- **统计准确性**: 签到统计数据的准确性验证 |
|||
- **异常处理**: 处理签到过程中的各种异常情况 |
|||
- **缓存策略**: 签到状态和统计数据的缓存 |
|||
- **并发控制**: 高并发签到时的数据一致性 |
|||
- **历史数据**: 长期签到历史数据的存储策略 |
|||
- **备份恢复**: 重要签到数据的备份和恢复 |
|||
- **监控告警**: 签到异常情况的监控和告警 |
|||
@ -0,0 +1,118 @@ |
|||
# school_order_table 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_order_table |
|||
**功能**: 订单信息管理表,负责管理教务系统中的所有订单信息,包括新订单、续费订单、转校订单等各种类型的订单处理 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 订单编号 |
|||
payment_id varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 支付编号 |
|||
order_type varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 订单类型1新订单2续费订单3内部员工订单4 转校 5 客户内转课订单 |
|||
order_status enum('pending','paid','signed','completed','transfer') utf8mb4_general_ci YES pending select,insert,update,references 订单状态: pending-待支付, paid-已支付,signed待签约,completed已完成,transfer转学 |
|||
payment_type enum('cash','scan_code','subscription','wxpay_online') utf8mb4_general_ci NO NULL select,insert,update,references 付款类型: cash-现金支付, scan_code-扫码支付, subscription-订阅支付, wxpay_online-微信在线代付 |
|||
order_amount decimal(10,2) NULL NO NULL select,insert,update,references 订单金额 |
|||
course_id int NULL NO NULL select,insert,update,references 课程ID |
|||
class_id int NULL YES NULL select,insert,update,references 班级ID |
|||
staff_id int NULL NO NULL select,insert,update,references 人员ID|员工表school_personnel.id |
|||
resource_id int NULL NO NULL select,insert,update,references 资源ID|客户资源表school_customer_resources.id |
|||
after_sales_status varchar(50) utf8mb4_general_ci YES NULL select,insert,update,references 售后状态 |
|||
after_sales_reason text utf8mb4_general_ci YES NULL select,insert,update,references 售后原因 |
|||
after_sales_time timestamp NULL YES NULL select,insert,update,references 售后时间 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
payment_time timestamp NULL YES NULL select,insert,update,references 支付时间 |
|||
subscription_payment_time timestamp NULL YES NULL select,insert,update,references 订阅支付生成时间 |
|||
ipv3 varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references |
|||
accounting_time timestamp NULL YES NULL select,insert,update,references 核算时间 |
|||
campus_id int NULL NO NULL select,insert,update,references 校区ID |
|||
gift_id int NULL YES NULL select,insert,update,references 赠品 id |
|||
discount_amount decimal(10,2) NULL YES NULL select,insert,update,references 优惠金额 |
|||
course_plan_id int NULL YES NULL select,insert,update,references 课程计划 id |
|||
student_id int NULL NO NULL select,insert,update,references 学员 id |
|||
remark varchar(512) utf8mb4_general_ci YES NULL select,insert,update,references 订单备注 |
|||
contract_id int NULL YES NULL select,insert,update,references 合同 id |
|||
gift_type tinyint NULL YES NULL select,insert,update,references 赠品使用类型 1 减现2 赠课 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **订单生命周期管理**: 管理从订单创建到完成的全流程状态跟踪 |
|||
- **多类型订单支持**: 支持新订单、续费订单、内部员工订单、转校订单、客户内转课订单 |
|||
- **支付管理**: 关联支付信息,支持多种支付方式(现金、扫码、订阅、微信在线代付) |
|||
- **课程订单关联**: 建立订单与课程、班级的关联关系 |
|||
- **售后服务管理**: 处理订单售后状态、原因和时间记录 |
|||
- **财务核算**: 订单金额、优惠金额、核算时间等财务相关信息管理 |
|||
- **赠品管理**: 支持赠品关联和赠品类型管理(减现、赠课) |
|||
- **合同关联**: 订单与合同的关联管理 |
|||
|
|||
### 业务场景 |
|||
- **订单创建**: 学员报名时创建新订单,记录课程、金额、支付方式等信息 |
|||
- **续费管理**: 处理学员续费订单,延续学习服务 |
|||
- **转校业务**: 处理学员转校相关的订单和费用结算 |
|||
- **内部订单**: 处理员工内部订单,可能享受特殊优惠政策 |
|||
- **支付处理**: 跟踪订单支付状态,从待支付到已支付的状态流转 |
|||
- **售后服务**: 处理退费、换课等售后需求 |
|||
- **财务结算**: 进行订单核算,生成财务报表 |
|||
- **营销活动**: 通过赠品和优惠金额支持各种营销活动 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_course`: 课程信息表 (course_id) |
|||
- `school_class`: 班级信息表 (class_id) |
|||
- `school_personnel`: 人员信息表 (staff_id) |
|||
- `school_customer_resources`: 客户资源表 (resource_id) |
|||
- `school_campus`: 校区信息表 (campus_id) |
|||
- `school_member`: 学员信息表 (student_id) |
|||
- `school_contract`: 合同信息表 (contract_id) |
|||
- `school_pay`: 支付信息表 (payment_id) |
|||
- `school_course_plan`: 课程计划表 (course_plan_id) |
|||
- `school_gift`: 赠品信息表 (gift_id) |
|||
|
|||
### 关联说明 |
|||
- **课程关联**: 通过course_id关联具体课程,class_id关联具体班级 |
|||
- **人员关联**: staff_id关联处理订单的员工,student_id关联购买的学员 |
|||
- **支付关联**: payment_id关联支付记录,跟踪支付状态和支付方式 |
|||
- **合同关联**: contract_id关联生成的合同,建立订单与合同的对应关系 |
|||
- **校区关联**: campus_id确定订单所属校区,用于区域化管理 |
|||
- **资源关联**: resource_id关联客户资源,跟踪订单来源 |
|||
- **赠品关联**: gift_id关联赠品信息,支持营销活动 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- course_id (课程查询) |
|||
- class_id (班级查询) |
|||
- staff_id (员工订单查询) |
|||
- student_id (学员订单查询) |
|||
- campus_id (校区订单查询) |
|||
- contract_id (合同关联查询) |
|||
- **状态索引**: order_status (订单状态查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- payment_time (支付时间查询) |
|||
- accounting_time (核算时间查询) |
|||
- **复合索引**: |
|||
- (student_id, order_status) (学员订单状态查询) |
|||
- (campus_id, created_at) (校区订单时间查询) |
|||
- (order_type, order_status) (订单类型状态查询) |
|||
- (payment_type, order_status) (支付方式状态查询) |
|||
|
|||
## 注意事项 |
|||
- **金额精度**: order_amount和discount_amount使用decimal(10,2),确保财务计算精度 |
|||
- **状态流转**: 订单状态有严格的流转规则,不能随意跳跃状态 |
|||
- **支付关联**: payment_id可能为空,表示未关联支付记录的订单 |
|||
- **订单类型**: order_type决定了订单的处理流程和业务逻辑 |
|||
- **售后处理**: 售后状态、原因、时间需要同步更新,保持数据一致性 |
|||
- **时间逻辑**: 支付时间不能早于创建时间,核算时间不能早于支付时间 |
|||
- **校区归属**: 订单必须归属于特定校区,不能为空 |
|||
- **学员关联**: student_id不能为空,每个订单必须有明确的学员 |
|||
- **合同生成**: 订单状态为signed时,应该有对应的contract_id |
|||
- **赠品逻辑**: gift_type和gift_id需要配套使用,确保赠品逻辑正确 |
|||
- **优惠计算**: 实际支付金额 = order_amount - discount_amount |
|||
- **数据完整性**: 删除订单时需要考虑关联数据的处理 |
|||
- **权限控制**: 不同角色对订单的操作权限需要严格控制 |
|||
@ -0,0 +1,108 @@ |
|||
# school_pay 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_pay |
|||
**功能**: 支付信息管理表,负责管理教务系统中的所有支付记录,包括支付流水、支付状态、支付方式等核心支付信息 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
main_id int NULL NO 0 select,insert,update,references 支付会员id |
|||
from_main_id int NULL NO 0 select,insert,update,references 发起支付会员id |
|||
out_trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付流水号 |
|||
trade_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 业务类型 |
|||
trade_id int NULL NO 0 select,insert,update,references 业务id |
|||
trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 交易单号 |
|||
body varchar(1000) utf8mb4_general_ci NO select,insert,update,references 支付主体 |
|||
money decimal(10,2) NULL NO NULL select,insert,update,references 支付金额 |
|||
voucher varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付票据 |
|||
status int NULL NO 0 select,insert,update,references 支付状态(0.待支付 1. 支付中 2. 已支付 -1已取消) |
|||
json varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付扩展用支付信息 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
pay_time int NULL NO 0 select,insert,update,references 支付时间 |
|||
cancel_time int NULL NO 0 select,insert,update,references 关闭时间 |
|||
type varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付方式 |
|||
mch_id varchar(50) utf8mb4_general_ci NO select,insert,update,references 商户收款账号 |
|||
main_type varchar(255) utf8mb4_general_ci NO select,insert,update,references |
|||
channel varchar(50) utf8mb4_general_ci NO select,insert,update,references 支付渠道 |
|||
fail_reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 失败原因 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **支付流水管理**: 生成和管理唯一的支付流水号,确保支付记录可追溯 |
|||
- **多业务类型支持**: 支持不同业务类型的支付处理(订单支付、充值等) |
|||
- **支付状态跟踪**: 实时跟踪支付状态(待支付、支付中、已支付、已取消) |
|||
- **多支付方式**: 支持多种支付渠道和支付方式 |
|||
- **代付功能**: 支持发起支付会员和实际支付会员的分离管理 |
|||
- **支付票据管理**: 管理支付凭证和票据信息 |
|||
- **商户账号管理**: 管理不同的商户收款账号 |
|||
- **支付时间记录**: 记录支付创建、完成、取消等关键时间节点 |
|||
- **失败原因追踪**: 记录支付失败的具体原因,便于问题排查 |
|||
|
|||
### 业务场景 |
|||
- **订单支付**: 学员购买课程时的支付处理 |
|||
- **充值支付**: 学员账户余额充值 |
|||
- **代付服务**: 家长为孩子支付学费等代付场景 |
|||
- **退款处理**: 处理退费相关的支付记录 |
|||
- **支付对账**: 与第三方支付平台进行对账 |
|||
- **财务结算**: 生成财务报表和收入统计 |
|||
- **支付监控**: 监控支付成功率和失败原因 |
|||
- **风控管理**: 识别异常支付行为 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (main_id, from_main_id) |
|||
- `school_order_table`: 订单信息表 (通过trade_id关联) |
|||
- `school_contract`: 合同信息表 (通过trade_id关联) |
|||
- `school_refund`: 退款信息表 (通过trade_id关联) |
|||
- `school_recharge`: 充值记录表 (通过trade_id关联) |
|||
- `sys_pay_config`: 支付配置表 (通过type关联) |
|||
|
|||
### 关联说明 |
|||
- **会员关联**: main_id关联实际支付的会员,from_main_id关联发起支付的会员 |
|||
- **业务关联**: 通过trade_type和trade_id关联具体的业务记录(订单、合同、充值等) |
|||
- **支付配置**: 通过type字段关联支付方式配置 |
|||
- **商户关联**: mch_id关联具体的商户收款账号 |
|||
- **渠道关联**: channel字段标识支付渠道来源 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: out_trade_no (支付流水号唯一性) |
|||
- **外键索引**: |
|||
- main_id (支付会员查询) |
|||
- from_main_id (发起支付会员查询) |
|||
- **业务索引**: |
|||
- trade_type (业务类型查询) |
|||
- trade_id (业务ID查询) |
|||
- trade_no (交易单号查询) |
|||
- **状态索引**: status (支付状态查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- pay_time (支付时间查询) |
|||
- **复合索引**: |
|||
- (main_id, status) (会员支付状态查询) |
|||
- (trade_type, trade_id) (业务关联查询) |
|||
- (type, status) (支付方式状态查询) |
|||
- (create_time, status) (时间状态查询) |
|||
- (mch_id, status) (商户支付状态查询) |
|||
|
|||
## 注意事项 |
|||
- **流水号唯一性**: out_trade_no必须全局唯一,避免重复支付 |
|||
- **金额精度**: money字段使用decimal(10,2),确保财务计算精度 |
|||
- **状态流转**: 支付状态有严格的流转规则(0→1→2或0→-1) |
|||
- **时间逻辑**: pay_time不能早于create_time,cancel_time只在取消时设置 |
|||
- **代付逻辑**: from_main_id和main_id可以不同,支持代付场景 |
|||
- **业务关联**: trade_type和trade_id必须配套使用,确保业务关联正确 |
|||
- **支付方式**: type字段决定了支付的具体处理逻辑 |
|||
- **商户配置**: mch_id必须与系统配置的商户账号匹配 |
|||
- **支付渠道**: channel字段用于区分不同的支付来源 |
|||
- **失败处理**: 支付失败时必须记录fail_reason,便于问题排查 |
|||
- **数据安全**: 支付相关敏感信息需要加密存储 |
|||
- **幂等性**: 同一笔支付请求多次提交应该返回相同结果 |
|||
- **对账机制**: 定期与第三方支付平台进行对账,确保数据一致性 |
|||
- **监控告警**: 支付失败率过高时需要及时告警 |
|||
@ -0,0 +1,82 @@ |
|||
# school_pay_channel 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_pay_channel |
|||
**功能**: 支付渠道配置管理表,用于管理和配置各种支付方式的参数信息,包括微信支付、支付宝、银行卡等多种支付渠道,支持渠道启用控制、配置参数管理、排序设置和状态监控,为学校提供完整的支付渠道管理和配置功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
type varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付类型 |
|||
channel varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付渠道 |
|||
config text utf8mb4_general_ci NO NULL select,insert,update,references 支付配置 |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
update_time int NULL NO 0 select,insert,update,references 修改时间 |
|||
status int NULL NO 0 select,insert,update,references 是否启用 |
|||
sort int NULL NO 0 select,insert,update,references 排序 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **支付渠道管理**: 统一管理各种支付渠道的配置信息,支持多种支付方式 |
|||
- **支付类型分类**: 按支付类型进行分类管理,如在线支付、线下支付等 |
|||
- **渠道配置存储**: 存储各支付渠道的详细配置参数,如API密钥、商户号等 |
|||
- **渠道状态控制**: 支持启用/禁用支付渠道,灵活控制可用的支付方式 |
|||
- **渠道排序管理**: 支持支付渠道的排序功能,控制支付方式的展示顺序 |
|||
- **配置参数管理**: 支持复杂的JSON配置存储,满足不同支付渠道的配置需求 |
|||
- **时间追踪**: 记录支付渠道的创建和修改时间,便于配置变更追踪 |
|||
- **渠道唯一标识**: 通过唯一ID确保支付渠道的准确识别和调用 |
|||
|
|||
### 业务场景 |
|||
- **学费缴纳**: 为学员提供多种学费缴纳方式,如微信支付、支付宝、银行卡等 |
|||
- **课程购买**: 支持在线课程购买的多种支付渠道选择 |
|||
- **充值续费**: 为会员账户充值和课程续费提供便捷的支付方式 |
|||
- **活动缴费**: 支持各类教育活动、比赛报名的在线缴费 |
|||
- **教材费用**: 处理教材、资料等额外费用的支付 |
|||
- **退费处理**: 配合退费流程,支持原路退回等退费方式 |
|||
- **分期付款**: 支持学费分期付款的支付渠道配置 |
|||
- **企业付款**: 为企业客户提供专门的支付渠道和配置 |
|||
- **国际支付**: 支持国际学员的跨境支付需求 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_pay**: 支付记录表,记录使用该支付渠道的具体支付信息 |
|||
- **school_order_table**: 订单表,关联订单的支付渠道选择 |
|||
- **school_member_account_log**: 会员账户日志表,记录通过该渠道的充值记录 |
|||
- **school_refund_record**: 退费记录表,记录退费时使用的支付渠道 |
|||
- **school_campus**: 校区表,不同校区可能配置不同的支付渠道 |
|||
- **school_sys_config**: 系统配置表,可能存储全局的支付配置信息 |
|||
|
|||
### 关联说明 |
|||
- 与 `school_pay` 关联,记录每笔支付使用的具体支付渠道 |
|||
- 与 `school_order_table` 关联,订单可以选择可用的支付渠道 |
|||
- 与 `school_member_account_log` 关联,记录会员充值使用的支付方式 |
|||
- 与退费系统关联,支持原支付渠道的退费处理 |
|||
- 与财务系统关联,提供支付渠道的财务对账和统计 |
|||
- 与风控系统关联,监控不同支付渠道的风险情况 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **支付类型索引**: `INDEX idx_type (type)` - 支持按支付类型查询 |
|||
- **支付渠道索引**: `INDEX idx_channel (channel)` - 支持按支付渠道查询 |
|||
- **状态索引**: `INDEX idx_status (status)` - 支持按启用状态查询 |
|||
- **排序索引**: `INDEX idx_sort (sort)` - 支持按排序字段查询 |
|||
- **时间索引**: `INDEX idx_create_time (create_time)` - 支持按创建时间查询 |
|||
- **复合索引**: `INDEX idx_type_status_sort (type, status, sort)` - 支持多条件查询 |
|||
- **唯一索引**: `UNIQUE INDEX idx_type_channel (type, channel)` - 确保同类型下渠道唯一 |
|||
|
|||
## 注意事项 |
|||
- **配置安全**: 支付渠道配置包含敏感信息,需要加密存储和传输 |
|||
- **参数验证**: 严格验证支付渠道配置参数的正确性,避免支付失败 |
|||
- **状态同步**: 及时同步支付渠道的可用状态,避免使用不可用渠道 |
|||
- **配置备份**: 定期备份支付渠道配置,防止配置丢失 |
|||
- **权限控制**: 严格控制支付渠道配置的修改权限,防止误操作 |
|||
- **测试验证**: 配置变更后需要进行充分的测试验证 |
|||
- **监控告警**: 建立支付渠道的监控告警机制,及时发现异常 |
|||
- **合规要求**: 确保支付渠道配置符合相关法规和合规要求 |
|||
- **版本管理**: 对支付渠道配置进行版本管理,支持配置回滚 |
|||
- **日志记录**: 详细记录配置变更日志,便于问题追踪和审计 |
|||
@ -0,0 +1,112 @@ |
|||
# school_pay_refund 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_pay_refund |
|||
**功能**: 支付退款管理表,用于处理和管理各种业务场景下的退款申请和处理流程,包括课程退费、订单取消、服务纠纷等退款场景,支持多渠道退款、状态跟踪、失败处理和凭证管理,为学校提供完整的退款业务管理和财务对账功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键 |
|||
refund_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 退款单号 |
|||
out_trade_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付流水号 |
|||
type varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付方式 |
|||
channel varchar(50) utf8mb4_general_ci NO select,insert,update,references 支付渠道 |
|||
money decimal(10,2) NULL NO 0.00 select,insert,update,references 支付金额 |
|||
reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 退款原因 |
|||
status varchar(255) utf8mb4_general_ci NO 0 select,insert,update,references 支付状态(0.待退款 1. 退款中 2. 已退款 -1已关闭) |
|||
create_time int NULL NO 0 select,insert,update,references 创建时间 |
|||
refund_time int NULL NO 0 select,insert,update,references 支付时间 |
|||
close_time int NULL NO 0 select,insert,update,references 关闭时间 |
|||
fail_reason varchar(255) utf8mb4_general_ci NO select,insert,update,references 失败原因 |
|||
voucher varchar(255) utf8mb4_general_ci NO select,insert,update,references 支付凭证 |
|||
trade_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 业务类型 |
|||
trade_id varchar(50) utf8mb4_general_ci NO select,insert,update,references 业务关联id |
|||
refund_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 退款方式 |
|||
main_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 操作人类型 |
|||
main_id int NULL NO 0 select,insert,update,references 操作人 |
|||
pay_refund_no varchar(255) utf8mb4_general_ci NO select,insert,update,references 外部支付方式的退款单号 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **退款申请管理**: 处理各种业务场景下的退款申请和审批流程 |
|||
- **退款流程控制**: 管理退款的完整流程(申请→审核→退款→完成) |
|||
- **退款状态跟踪**: 实时跟踪退款状态变化和处理进度 |
|||
- **多渠道退款**: 支持多种支付渠道的退款处理(微信、支付宝、银行卡等) |
|||
- **退款金额管理**: 精确计算和管理退款金额,支持部分退款 |
|||
- **退款凭证管理**: 管理退款凭证和相关票据信息 |
|||
- **失败处理机制**: 记录退款失败原因,支持重新处理 |
|||
- **业务关联**: 与原始支付记录和相关业务进行关联 |
|||
- **操作人员管理**: 记录退款操作的具体执行人员 |
|||
|
|||
### 业务场景 |
|||
- **课程退费**: 学员申请课程退费的退款处理 |
|||
- **订单取消退款**: 订单取消后的自动退款 |
|||
- **服务纠纷退款**: 因服务质量问题产生的退款 |
|||
- **系统错误退款**: 因系统错误导致的多收费用退款 |
|||
- **部分退款**: 课程部分完成后的按比例退款 |
|||
- **批量退款**: 因活动取消等原因的批量退款处理 |
|||
- **退款审核**: 财务人员审核退款申请的合理性 |
|||
- **退款对账**: 与第三方支付平台进行退款对账 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_pay`: 支付记录表 (out_trade_no) |
|||
- `school_member`: 会员信息表 (main_id) |
|||
- `school_order`: 订单信息表 (通过trade_id关联) |
|||
- `school_contract`: 合同信息表 (通过trade_id关联) |
|||
- `school_course`: 课程信息表 (通过业务关联) |
|||
- `school_sys_user`: 系统用户表 (操作人员信息) |
|||
- `school_member_account`: 会员账户表 (退款到余额) |
|||
- `school_member_account_log`: 账户流水表 (资金变动记录) |
|||
|
|||
### 关联说明 |
|||
- **支付关联**: out_trade_no关联原始支付记录,确保退款与支付匹配 |
|||
- **会员关联**: main_id关联退款接收方的会员信息 |
|||
- **业务关联**: 通过trade_type和trade_id关联具体的业务记录 |
|||
- **操作人关联**: main_id在不同main_type下关联不同类型的操作人员 |
|||
- **账户关联**: 退款到余额时需要关联会员账户信息 |
|||
- **流水关联**: 退款完成后在账户流水表中记录资金变动 |
|||
- **渠道关联**: channel和type字段关联支付渠道配置 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **唯一索引**: refund_no (退款单号唯一性) |
|||
- **外键索引**: |
|||
- out_trade_no (支付流水号查询) |
|||
- main_id (操作人查询) |
|||
- **业务索引**: |
|||
- trade_type (业务类型查询) |
|||
- trade_id (业务ID查询) |
|||
- **状态索引**: status (退款状态查询) |
|||
- **时间索引**: |
|||
- create_time (创建时间查询) |
|||
- refund_time (退款时间查询) |
|||
- close_time (关闭时间查询) |
|||
- **复合索引**: |
|||
- (out_trade_no, status) (支付退款状态查询) |
|||
- (main_id, status) (操作人退款状态查询) |
|||
- (trade_type, trade_id) (业务关联查询) |
|||
- (type, status) (退款方式状态查询) |
|||
- (create_time, status) (时间状态查询) |
|||
|
|||
## 注意事项 |
|||
- **金额精度**: money字段使用decimal(10,2),确保财务计算精度 |
|||
- **退款限制**: 退款金额不能超过原支付金额 |
|||
- **状态流转**: 退款状态有严格的流转规则(0→1→2或0→-1) |
|||
- **时间逻辑**: refund_time不能早于create_time,close_time只在关闭时设置 |
|||
- **支付关联**: 必须基于有效的支付记录才能发起退款 |
|||
- **渠道一致性**: 退款渠道应与原支付渠道保持一致 |
|||
- **重复退款**: 防止同一笔支付重复退款或超额退款 |
|||
- **失败处理**: 退款失败时必须记录详细的fail_reason |
|||
- **凭证管理**: voucher字段用于存储退款凭证,确保可追溯 |
|||
- **业务完整性**: trade_type和trade_id必须与原支付记录保持一致 |
|||
- **操作权限**: 不同类型的操作人员有不同的退款权限 |
|||
- **数据一致性**: 退款成功后必须同步更新相关业务状态 |
|||
- **审核机制**: 大额退款需要多级审核确认 |
|||
- **对账要求**: 定期与第三方支付平台进行退款对账 |
|||
- **法律合规**: 退款操作需要符合相关法律法规要求 |
|||
@ -0,0 +1,126 @@ |
|||
# school_pay_transfer 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_pay_transfer |
|||
**功能**: 支付转账管理表,用于记录和管理系统中的各类转账业务,包括会员提现、退费转账、佣金结算等多种转账类型,支持银行转账、在线支付等多种转账方式,为财务管理和资金流转提供完整的转账记录和状态跟踪 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
trade_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 业务类型 |
|||
transfer_no varchar(50) utf8mb4_general_ci NO select,insert,update,references 转账单号 |
|||
main_id int NULL NO 0 select,insert,update,references 会员id |
|||
main_type varchar(255) utf8mb4_general_ci NO select,insert,update,references 主体类型 |
|||
transfer_type varchar(20) utf8mb4_general_ci NO select,insert,update,references 转账类型 |
|||
transfer_realname varchar(50) utf8mb4_general_ci NO select,insert,update,references 联系人名称 |
|||
transfer_mobile varchar(11) utf8mb4_general_ci NO select,insert,update,references 手机号 |
|||
transfer_bank varchar(255) utf8mb4_general_ci NO select,insert,update,references 银行名称 |
|||
transfer_account varchar(255) utf8mb4_general_ci NO select,insert,update,references 收款账号 |
|||
transfer_voucher varchar(255) utf8mb4_general_ci NO select,insert,update,references 凭证 |
|||
transfer_remark varchar(255) utf8mb4_general_ci NO select,insert,update,references 凭证说明 |
|||
transfer_payment_code varchar(255) utf8mb4_general_ci NO select,insert,update,references 收款码图片 |
|||
transfer_fail_reason varchar(2000) utf8mb4_general_ci NO select,insert,update,references 失败原因 |
|||
transfer_status varchar(20) utf8mb4_general_ci NO select,insert,update,references 转账状态 |
|||
money decimal(10,2) NULL NO 0.00 select,insert,update,references 转账金额 |
|||
create_time int NULL NO 0 select,insert,update,references 申请时间 |
|||
transfer_time int NULL NO 0 select,insert,update,references 转账时间 |
|||
update_time int NULL NO 0 select,insert,update,references |
|||
openid varchar(50) utf8mb4_general_ci NO select,insert,update,references |
|||
remark varchar(255) utf8mb4_general_ci NO select,insert,update,references |
|||
batch_id varchar(500) utf8mb4_general_ci NO select,insert,update,references 转账批次id |
|||
transfer_payee varchar(500) utf8mb4_general_ci NO select,insert,update,references 在线转账数据(json) |
|||
out_batch_no varchar(500) utf8mb4_general_ci NO select,insert,update,references 扩展数据,主要用于记录接收到线上打款的业务数据编号 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **转账业务管理**: 处理多种类型的转账业务需求 |
|||
- **转账单号生成**: 为每笔转账生成唯一的转账单号 |
|||
- **主体信息管理**: 记录转账相关的主体信息和类型 |
|||
- **收款信息管理**: 管理收款人的详细信息和账户信息 |
|||
- **转账方式支持**: 支持银行转账、在线支付等多种转账方式 |
|||
- **凭证管理**: 存储和管理转账凭证和收款码信息 |
|||
- **状态跟踪**: 实时跟踪转账的处理状态和结果 |
|||
- **失败处理**: 记录转账失败的原因和处理方案 |
|||
- **批次管理**: 支持批量转账的批次管理功能 |
|||
- **金额管理**: 精确记录和管理转账金额 |
|||
- **时间管理**: 记录申请时间、转账时间等关键时间节点 |
|||
|
|||
### 业务场景 |
|||
- **会员提现**: 处理会员账户余额的提现申请和转账 |
|||
- **退费处理**: 处理学员退费的转账操作 |
|||
- **佣金结算**: 处理销售人员、推荐人等的佣金转账 |
|||
- **奖励发放**: 发放各类奖励和补贴的转账 |
|||
- **供应商付款**: 向供应商或合作伙伴的付款转账 |
|||
- **员工薪资**: 员工工资和奖金的转账发放 |
|||
- **代理分润**: 代理商分润的转账结算 |
|||
- **活动奖金**: 营销活动奖金的转账发放 |
|||
- **保证金退还**: 各类保证金的退还转账 |
|||
- **批量转账**: 批量处理多笔转账业务 |
|||
- **紧急转账**: 处理紧急情况下的转账需求 |
|||
- **定期结算**: 定期的财务结算转账 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_member`: 会员信息表 (main_id关联,主体为会员时) |
|||
- `school_personnel`: 人员信息表 (main_id关联,主体为员工时) |
|||
- `school_pay`: 支付记录表 (关联原始支付信息) |
|||
- `school_pay_refund`: 退费记录表 (退费转账关联) |
|||
- `school_member_cash_out`: 会员提现表 (提现转账关联) |
|||
- `school_account_log`: 账户日志表 (资金变动记录) |
|||
- `school_sys_user`: 系统用户表 (操作人员信息) |
|||
- `school_campus`: 校区信息表 (转账归属校区) |
|||
|
|||
### 关联说明 |
|||
- **主体关联**: main_id根据main_type关联不同的主体表(会员、员工等) |
|||
- **支付关联**: 与school_pay表关联,记录原始支付信息 |
|||
- **退费关联**: 退费转账与school_pay_refund表关联 |
|||
- **提现关联**: 提现转账与school_member_cash_out表关联 |
|||
- **账户关联**: 与school_account_log表关联,记录账户资金变动 |
|||
- **用户关联**: 记录转账操作的系统用户信息 |
|||
- **校区关联**: 转账业务归属的校区信息 |
|||
- **批次关联**: 通过batch_id关联同批次的转账记录 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- transfer_no (转账单号唯一查询) |
|||
- main_id (主体转账记录查询) |
|||
- transfer_status (转账状态查询) |
|||
- trade_type (业务类型查询) |
|||
- batch_id (批次转账查询) |
|||
- **复合索引**: |
|||
- (main_id, main_type) (主体转账记录查询) |
|||
- (transfer_status, create_time) (状态时间查询) |
|||
- (trade_type, transfer_status) (业务状态查询) |
|||
- (batch_id, transfer_status) (批次状态查询) |
|||
- (main_type, main_id, transfer_status) (完整主体状态查询) |
|||
- **时间索引**: |
|||
- create_time (申请时间查询) |
|||
- transfer_time (转账时间查询) |
|||
- update_time (更新时间查询) |
|||
- **金额索引**: |
|||
- money (金额范围查询) |
|||
|
|||
## 注意事项 |
|||
- **数据完整性**: main_id必须在对应的主体表中存在 |
|||
- **单号唯一性**: transfer_no必须保证全局唯一性 |
|||
- **金额精度**: money字段使用decimal类型,保证金额计算精度 |
|||
- **状态一致性**: 转账状态变更需要同步更新相关业务表 |
|||
- **时间逻辑**: transfer_time不能早于create_time |
|||
- **主体类型**: main_type必须与main_id对应的表类型一致 |
|||
- **批次管理**: 批量转账时batch_id必须保持一致 |
|||
- **凭证安全**: 转账凭证和收款码需要做好安全存储 |
|||
- **失败处理**: 转账失败时需要详细记录失败原因 |
|||
- **重复检查**: 避免重复转账,需要做好幂等性控制 |
|||
- **权限控制**: 转账操作需要严格的权限验证 |
|||
- **审计追踪**: 所有转账操作需要记录详细的审计日志 |
|||
- **资金安全**: 转账金额变更需要多重验证和确认 |
|||
- **状态流转**: 转账状态流转需要遵循业务规则 |
|||
- **异常处理**: 建立完善的异常处理和回滚机制 |
|||
- **监控告警**: 大额转账和异常转账需要实时监控告警 |
|||
- **合规要求**: 转账操作需要满足相关法规和合规要求 |
|||
@ -0,0 +1,98 @@ |
|||
# school_performance_config 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_performance_config |
|||
**功能**: 绩效配置管理表,用于存储和管理员工绩效考核的配置信息,支持多维度绩效指标设置、考核周期配置和绩效计算规则管理,为人力资源绩效管理提供灵活的配置服务 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
config_type varchar(50) utf8mb4_unicode_ci NO UNI NULL select,insert,update,references 配置类型:market_staff/sales_staff/coach_staff |
|||
config_data json NULL NO NULL select,insert,update,references 配置数据 |
|||
version varchar(20) utf8mb4_unicode_ci NO 1.0 select,insert,update,references 配置版本 |
|||
is_active tinyint(1) NULL YES 1 select,insert,update,references 是否生效 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references |
|||
created_by int NULL YES NULL select,insert,update,references 创建人 |
|||
updated_by int NULL YES NULL select,insert,update,references 修改人 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **绩效指标配置**: 设置和管理各类绩效考核指标和权重 |
|||
- **考核周期管理**: 配置绩效考核的时间周期和频率 |
|||
- **计算规则设置**: 定义绩效分数的计算方法和公式 |
|||
- **目标值管理**: 设置各项指标的目标值和达成标准 |
|||
- **权重分配**: 管理不同指标在总绩效中的权重比例 |
|||
- **等级划分**: 配置绩效等级和对应的分数区间 |
|||
- **奖惩规则**: 设置基于绩效结果的奖励和惩罚机制 |
|||
- **模板管理**: 提供不同岗位的绩效配置模板 |
|||
|
|||
### 业务场景 |
|||
- **教师绩效考核**: 配置教师的教学质量、学生满意度等考核指标 |
|||
- **销售人员考核**: 设置销售额、客户开发、续费率等销售指标 |
|||
- **管理人员考核**: 配置团队管理、目标达成、创新能力等管理指标 |
|||
- **客服人员考核**: 设置服务质量、响应时间、客户满意度等服务指标 |
|||
- **季度考核**: 配置季度性的综合绩效考核方案 |
|||
- **年度考核**: 设置年度绩效评估和晋升考核标准 |
|||
- **项目绩效**: 配置特定项目的绩效考核指标 |
|||
- **部门绩效**: 设置部门整体绩效考核方案 |
|||
- **试用期考核**: 配置新员工试用期的考核标准 |
|||
- **专项考核**: 设置特殊时期或特殊任务的考核方案 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_personnel**: 人员表,绩效配置的应用对象 |
|||
- **school_coach_performance**: 教练绩效表,应用绩效配置进行考核 |
|||
- **school_sales_performance**: 销售绩效表,使用销售相关的绩效配置 |
|||
- **school_campus**: 校区表,可能按校区设置不同的绩效配置 |
|||
- **school_sys_user**: 系统用户表,记录配置的创建和修改用户 |
|||
- **school_sys_dict**: 系统字典表,可能引用绩效等级等字典数据 |
|||
|
|||
### 关联说明 |
|||
- 为不同类型的人员提供个性化的绩效配置方案 |
|||
- 与具体的绩效记录表关联,提供考核标准和计算依据 |
|||
- 支持按校区、部门、岗位等维度设置差异化配置 |
|||
- 配置变更会影响相关人员的绩效考核结果 |
|||
|
|||
## 索引建议 |
|||
```sql |
|||
-- 主键索引(自动创建) |
|||
PRIMARY KEY (id) |
|||
|
|||
-- 配置名称索引(用于按名称查询) |
|||
INDEX idx_config_name (config_name) |
|||
|
|||
-- 配置类型索引(用于按类型筛选) |
|||
INDEX idx_config_type (config_type) |
|||
|
|||
-- 状态索引(用于查询有效配置) |
|||
INDEX idx_status (status) |
|||
|
|||
-- 创建时间索引(用于按时间排序) |
|||
INDEX idx_create_time (create_time) |
|||
|
|||
-- 更新时间索引(用于查询最近更新的配置) |
|||
INDEX idx_update_time (update_time) |
|||
|
|||
-- 复合索引(类型+状态) |
|||
INDEX idx_type_status (config_type, status) |
|||
``` |
|||
|
|||
## 注意事项 |
|||
- **配置合理性**: 确保绩效指标设置合理,权重分配科学 |
|||
- **数据一致性**: 配置修改时需要考虑对历史绩效数据的影响 |
|||
- **权限控制**: 严格控制绩效配置的修改权限,避免随意变更 |
|||
- **版本管理**: 重要配置变更应保留历史版本,支持回滚 |
|||
- **计算准确性**: 确保绩效计算公式的正确性和准确性 |
|||
- **公平性原则**: 配置应体现公平公正的考核原则 |
|||
- **目标可达性**: 设置的目标值应具有挑战性但可实现 |
|||
- **周期合理性**: 考核周期设置应符合业务特点和管理需要 |
|||
- **数据备份**: 定期备份绩效配置数据,防止数据丢失 |
|||
- **性能优化**: 复杂计算规则可能影响系统性能,需要优化 |
|||
- **法规遵循**: 绩效配置应符合劳动法规和公司制度 |
|||
- **沟通透明**: 绩效配置应向员工公开透明,确保理解和认同 |
|||
@ -0,0 +1,105 @@ |
|||
# school_performance_records 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_performance_records |
|||
**功能**: 绩效记录管理表,负责管理教务系统中员工的绩效评估、考核记录、绩效指标跟踪和绩效奖励计算等功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 绩效编号 |
|||
staff_id int NULL NO NULL select,insert,update,references 员工ID |
|||
resource_id int NULL NO NULL select,insert,update,references 资源ID |
|||
order_id int NULL YES NULL select,insert,update,references 订单ID |
|||
order_status enum('pending','completed','cancelled') utf8mb4_general_ci YES pending select,insert,update,references 订单状态: pending-待处理, completed-已完成, cancelled-已取消 |
|||
performance_type enum('sales','marketing','other','coach','consultant') utf8mb4_general_ci NO NULL select,insert,update,references 绩效类型: sales-销售绩效, marketing-市场绩效, coach教练绩效,other-其他,consultant教务绩效 |
|||
performance_value decimal(10,2) NULL NO NULL select,insert,update,references 绩效金额 |
|||
remarks text utf8mb4_general_ci YES NULL select,insert,update,references 备注 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **绩效记录管理**: 记录员工的各类绩效数据和业绩表现 |
|||
- **绩效类型分类**: 区分销售、市场、教练、教务等不同类型绩效 |
|||
- **绩效金额计算**: 计算和记录具体的绩效奖励金额 |
|||
- **订单关联**: 关联具体订单跟踪绩效来源 |
|||
- **资源关联**: 关联客户资源跟踪转化绩效 |
|||
- **状态跟踪**: 跟踪订单状态对绩效的影响 |
|||
- **绩效统计**: 提供各类绩效数据的统计分析 |
|||
- **奖金计算**: 为薪资系统提供绩效奖金数据 |
|||
- **业绩分析**: 分析员工业绩趋势和表现 |
|||
|
|||
### 业务场景 |
|||
- **销售绩效**: 记录销售人员的签单业绩和提成 |
|||
- **市场绩效**: 记录市场人员的获客和转化业绩 |
|||
- **教练绩效**: 记录教练的授课和学员满意度绩效 |
|||
- **教务绩效**: 记录教务人员的服务质量绩效 |
|||
- **订单跟踪**: 跟踪订单完成情况对绩效的影响 |
|||
- **客户转化**: 记录客户资源转化带来的绩效 |
|||
- **月度结算**: 月度绩效统计和奖金结算 |
|||
- **业绩排名**: 员工业绩排名和激励 |
|||
- **绩效分析**: 分析绩效趋势和改进方向 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_personnel`: 人员信息表 (staff_id) |
|||
- `school_customer_resources`: 客户资源表 (resource_id) |
|||
- `school_order_table`: 订单信息表 (order_id) |
|||
- `school_salary`: 薪资管理表 (绩效奖金关联) |
|||
- `school_contract`: 合同信息表 (签约绩效) |
|||
- `school_member`: 会员信息表 (客户关联) |
|||
- `school_campus`: 校区信息表 (校区绩效) |
|||
- `school_course`: 课程信息表 (教练绩效) |
|||
|
|||
### 关联说明 |
|||
- **员工关联**: staff_id关联具体员工,确定绩效归属 |
|||
- **资源关联**: resource_id关联客户资源,跟踪转化绩效 |
|||
- **订单关联**: order_id关联具体订单,跟踪销售绩效 |
|||
- **薪资关联**: 绩效金额直接影响薪资中的绩效奖金计算 |
|||
- **合同关联**: 通过订单关联合同,跟踪签约绩效 |
|||
- **会员关联**: 通过资源和订单关联会员,跟踪服务绩效 |
|||
- **校区关联**: 通过员工关联校区,支持分校区绩效统计 |
|||
- **课程关联**: 教练绩效关联具体授课课程 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- staff_id (员工绩效查询) |
|||
- resource_id (资源绩效查询) |
|||
- order_id (订单绩效查询) |
|||
- **业务索引**: |
|||
- performance_type (绩效类型查询) |
|||
- order_status (订单状态查询) |
|||
- performance_value (绩效金额查询) |
|||
- **复合索引**: |
|||
- (staff_id, performance_type) (员工类型绩效查询) |
|||
- (staff_id, created_at) (员工时间绩效查询) |
|||
- (performance_type, created_at) (类型时间绩效统计) |
|||
- (order_status, performance_type) (状态类型绩效查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
|
|||
## 注意事项 |
|||
- **绩效类型**: performance_type字段使用枚举类型,严格控制类型范围 |
|||
- **订单状态**: order_status影响绩效计算,需要实时同步 |
|||
- **金额精度**: performance_value使用decimal(10,2)确保金额精度 |
|||
- **数据完整性**: staff_id、resource_id、performance_type等关键字段不能为空 |
|||
- **重复记录**: 避免同一业务产生重复的绩效记录 |
|||
- **实时更新**: 订单状态变化时需要及时更新绩效记录 |
|||
- **权限控制**: 绩效数据访问需要严格的权限控制 |
|||
- **薪资同步**: 绩效数据需要与薪资系统保持同步 |
|||
- **业绩统计**: 支持按时间、类型、员工等维度统计绩效 |
|||
- **异常监控**: 监控异常绩效数据和计算错误 |
|||
- **审计追踪**: 保留完整的绩效记录变更轨迹 |
|||
- **数据备份**: 绩效数据需要定期备份和归档 |
|||
- **计算规则**: 不同绩效类型的计算规则需要明确定义 |
|||
- **时效性**: 绩效记录需要及时生成,避免延迟 |
|||
- **关联验证**: 确保resource_id和order_id的有效性 |
|||
- **状态一致性**: 订单状态与绩效状态保持一致 |
|||
- **分润规则**: 多人参与的业务需要明确分润规则 |
|||
@ -0,0 +1,97 @@ |
|||
# school_person_course_schedule 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_person_course_schedule |
|||
**功能**: 人员课程排课表,用于管理学员、教师等人员的课程安排和时间分配,包括课程状态跟踪、请假管理、补课安排等,支持多种课程类型和人员类型,为学校提供完整的排课管理和教学调度功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 关系编号 |
|||
resources_id int NULL YES NULL select,insert,update,references 资源ID |
|||
person_id int NULL YES NULL select,insert,update,references 人员ID |
|||
student_id int NULL YES NULL select,insert,update,references 学员ID |
|||
person_type enum('student','customer_resource') utf8mb4_general_ci NO NULL select,insert,update,references 人员类型: student-正式学员, customer_resource-客户资源,teacher教练 |
|||
schedule_id int NULL NO MUL NULL select,insert,update,references 课程安排ID |
|||
course_date date NULL NO NULL select,insert,update,references 上课日期 |
|||
schedule_type tinyint(1) NULL YES NULL select,insert,update,references 课程安排类型1临时课2固定课 |
|||
course_type tinyint(1) NULL YES NULL select,insert,update,references 课程类型1加课2补课3 等待位 |
|||
time_slot varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 上课时段 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
deleted_at int NULL YES 0 select,insert,update,references 删除 |
|||
status tinyint(1) NULL NO 0 select,insert,update,references 状态0待上课1已上课2请假 |
|||
remark varchar(512) utf8mb4_general_ci YES NULL select,insert,update,references 请假备注 |
|||
student_course_id int NULL YES NULL select,insert,update,references 学员课程ID(关联到student_courses表) |
|||
cancel_reason varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 取消预约原因 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **课程排课管理**: 管理学员和教师的课程安排和时间分配 |
|||
- **人员类型区分**: 支持学员、客户资源、教师等不同人员类型的排课 |
|||
- **课程状态跟踪**: 跟踪课程的待上课、已上课、请假等状态 |
|||
- **时间段管理**: 精确管理每个课程的上课日期和时间段 |
|||
- **课程类型分类**: 区分临时课、固定课、加课、补课等不同类型 |
|||
- **请假管理**: 处理学员请假申请和备注信息 |
|||
- **取消预约**: 管理课程取消和取消原因记录 |
|||
- **资源关联**: 关联教学资源和学员课程信息 |
|||
|
|||
### 业务场景 |
|||
- **日常排课**: 为学员安排日常的固定课程和临时课程 |
|||
- **补课安排**: 处理因请假或其他原因需要补课的安排 |
|||
- **加课服务**: 为需要额外辅导的学员安排加课 |
|||
- **请假处理**: 处理学员的请假申请和课程调整 |
|||
- **教师排课**: 为教师安排教学时间和课程分配 |
|||
- **资源调度**: 协调教室、设备等教学资源的使用 |
|||
- **课程统计**: 统计学员的上课情况和教师的工作量 |
|||
- **排课冲突检测**: 检测和避免时间冲突的课程安排 |
|||
- **等待位管理**: 管理课程的等待位和候补安排 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_schedule**: 课程安排表,关联具体的课程安排信息 |
|||
- **school_member**: 学员表,关联参与课程的学员信息 |
|||
- **school_personnel**: 人员表,关联教师和其他人员信息 |
|||
- **school_customer_resources**: 客户资源表,关联潜在客户信息 |
|||
- **school_student_courses**: 学员课程表,关联学员的课程购买信息 |
|||
- **school_course**: 课程表,关联课程的基本信息 |
|||
- **school_classroom**: 教室表,关联上课地点信息 |
|||
- **school_resources**: 资源表,关联教学资源信息 |
|||
|
|||
### 关联说明 |
|||
- `schedule_id` 关联 `school_schedule.id`,标识具体的课程安排 |
|||
- `person_id` 关联 `school_personnel.id`,标识参与人员(如教师) |
|||
- `student_id` 关联 `school_member.id`,标识参与的学员 |
|||
- `resources_id` 关联 `school_resources.id`,标识使用的教学资源 |
|||
- `student_course_id` 关联 `school_student_courses.id`,标识学员的课程购买记录 |
|||
- `person_type` 字段区分不同类型的参与人员 |
|||
- 与考勤系统关联,记录实际的上课出勤情况 |
|||
- 与通知系统关联,发送课程提醒和变更通知 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **课程安排索引**: `INDEX idx_schedule_id (schedule_id)` - 支持按课程安排查询 |
|||
- **人员索引**: `INDEX idx_person_id (person_id)` - 支持按人员查询 |
|||
- **学员索引**: `INDEX idx_student_id (student_id)` - 支持按学员查询 |
|||
- **日期索引**: `INDEX idx_course_date (course_date)` - 支持按上课日期查询 |
|||
- **状态索引**: `INDEX idx_status (status)` - 支持按课程状态查询 |
|||
- **人员类型索引**: `INDEX idx_person_type (person_type)` - 支持按人员类型查询 |
|||
- **课程类型索引**: `INDEX idx_course_type (course_type)` - 支持按课程类型查询 |
|||
- **复合索引**: `INDEX idx_schedule_date (schedule_id, course_date)` - 支持课程安排和日期的复合查询 |
|||
- **时间段索引**: `INDEX idx_date_time (course_date, time_slot)` - 支持日期和时间段的复合查询 |
|||
|
|||
## 注意事项 |
|||
- **时间冲突检测**: 严格检测同一人员在同一时间段的课程冲突 |
|||
- **状态一致性**: 确保课程状态与实际上课情况保持一致 |
|||
- **请假流程**: 建立完善的请假申请和审批流程 |
|||
- **补课机制**: 建立合理的补课安排和补课次数限制 |
|||
- **资源占用**: 合理管理教学资源的占用和释放 |
|||
- **数据完整性**: 确保人员、课程、时间等关键信息的完整性 |
|||
- **权限控制**: 严格控制排课数据的查看和修改权限 |
|||
- **历史记录**: 保留课程变更的历史记录,便于追溯 |
|||
- **通知机制**: 及时通知相关人员课程安排的变更 |
|||
- **统计准确性**: 确保课程统计数据的准确性和实时性 |
|||
@ -0,0 +1,105 @@ |
|||
# school_personnel 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_personnel |
|||
**功能**: 人员信息管理表,存储教务系统中所有工作人员(教师、销售、教务等)的基本信息、系统账号关联、微信绑定等核心数据 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references ID |
|||
name varchar(255) utf8mb4_0900_ai_ci NO NULL select,insert,update,references 姓名 |
|||
head_img varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 头像 |
|||
gender tinyint(1) NULL NO 0 select,insert,update,references 性别:1男性,2女性 0不详 |
|||
birthday date NULL YES NULL select,insert,update,references 生日 |
|||
phone varchar(15) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 电话 |
|||
email varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 邮箱 |
|||
wx varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 微信号 |
|||
address varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 家庭住址 |
|||
native_place varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 祖籍 |
|||
education varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 学历 |
|||
profile text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 个人简介 |
|||
emergency_contact_phone varchar(15) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 应急联系人电话 |
|||
id_card_front varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 身份证正面 |
|||
id_card_back varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 身份证反面 |
|||
employee_number varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 员工编号 |
|||
status tinyint(1) NULL NO 1 select,insert,update,references 状态:1待审核,2已审核,0已禁用 |
|||
is_sys_user tinyint(1) NULL NO NULL select,insert,update,references 是否登录系统 |
|||
sys_user_id int NULL YES NULL select,insert,update,references 系统用户id |
|||
account_type varchar(255) utf8mb4_0900_ai_ci NO NULL select,insert,update,references 账号类型(前端用来登录时确认订单身份的标识)|teacher=老师,market=销售 |
|||
create_time datetime NULL NO NULL select,insert,update,references 创建时间 |
|||
update_time datetime NULL YES NULL select,insert,update,references 更新时间 |
|||
deleted_at varchar(255) utf8mb4_0900_ai_ci NO 0 select,insert,update,references 逻辑删除字段 |
|||
join_time datetime NULL YES NULL select,insert,update,references 入职时间 |
|||
work_call varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 职称 |
|||
wxminiopenid varchar(52) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 微信小程序 openid |
|||
wxgzhopenid varchar(52) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 微信公众号 openid |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **人员基础管理**: 存储员工姓名、性别、生日、联系方式等基本信息 |
|||
2. **身份证件管理**: 管理身份证正反面照片,用于实名认证 |
|||
3. **系统账号关联**: 通过sys_user_id关联系统登录账号 |
|||
4. **账号类型管理**: 区分教师(teacher)和销售(market)等不同角色 |
|||
5. **微信集成**: 支持微信小程序和公众号openid绑定 |
|||
6. **状态审核管理**: 人员状态审核流程(待审核、已审核、已禁用) |
|||
7. **员工档案管理**: 学历、简介、入职时间等档案信息 |
|||
|
|||
### 业务场景 |
|||
1. **员工入职**: 新员工信息录入、身份验证、账号开通 |
|||
2. **权限管理**: 根据account_type分配不同的系统权限 |
|||
3. **排课安排**: 教师人员参与课程安排和班级管理 |
|||
4. **销售管理**: 销售人员进行客户跟进和业绩统计 |
|||
5. **微信办公**: 通过微信小程序进行移动办公 |
|||
6. **人事管理**: 员工档案维护、状态变更、离职处理 |
|||
7. **应急联系**: 紧急情况下的员工联系和通知 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **sys_user**: 系统用户表(sys_user_id字段关联) |
|||
2. **school_class**: 班级表(head_coach, assistant_coach关联) |
|||
3. **school_schedule**: 排课表(教师排课关联) |
|||
4. **school_order**: 订单表(销售人员关联) |
|||
5. **school_teacher_course**: 教师课程关联表 |
|||
6. **school_campus**: 校区表(人员所属校区) |
|||
7. **school_member**: 会员表(销售跟进关联) |
|||
8. **school_performance**: 业绩表(销售业绩统计) |
|||
|
|||
### 关联说明 |
|||
1. **系统账号关联**: 通过sys_user_id与系统登录账号一对一关联 |
|||
2. **教学关联**: 教师与班级、课程、排课等教学资源关联 |
|||
3. **销售关联**: 销售人员与客户、订单、业绩等销售数据关联 |
|||
4. **微信关联**: 通过openid实现微信生态集成 |
|||
5. **校区关联**: 人员归属特定校区,支持多校区管理 |
|||
6. **角色关联**: account_type决定人员在系统中的角色和权限 |
|||
|
|||
## 索引建议 |
|||
1. **主键索引**: id(已存在) |
|||
2. **唯一索引**: |
|||
- phone(手机号唯一) |
|||
- employee_number(员工编号唯一) |
|||
- sys_user_id(系统用户ID唯一) |
|||
- wxminiopenid(微信小程序openid唯一) |
|||
- wxgzhopenid(微信公众号openid唯一) |
|||
3. **普通索引**: |
|||
- account_type(账号类型筛选) |
|||
- status(状态筛选) |
|||
- create_time(创建时间排序) |
|||
- join_time(入职时间排序) |
|||
4. **复合索引**: |
|||
- (account_type, status)(类型+状态查询) |
|||
- (status, join_time)(状态+入职时间查询) |
|||
|
|||
## 注意事项 |
|||
1. **数据安全**: 身份证照片等敏感信息需要加密存储 |
|||
2. **唯一性约束**: 手机号、员工编号、系统用户ID等需要保证唯一性 |
|||
3. **软删除**: 使用deleted_at字段实现软删除,保护历史数据 |
|||
4. **状态流转**: status状态变更需要记录操作日志 |
|||
5. **账号类型**: account_type变更需要同步更新系统权限 |
|||
6. **微信绑定**: openid绑定需要验证微信账号的有效性 |
|||
7. **系统关联**: sys_user_id关联需要确保系统用户的存在性 |
|||
8. **应急联系**: emergency_contact_phone字段在紧急情况下的重要性 |
|||
@ -0,0 +1,121 @@ |
|||
# school_personnel_info 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_personnel_info |
|||
**功能**: 人员详细信息表,负责存储教务系统中人员的详细个人信息,包括教育背景、家庭情况、银行信息、合同信息等扩展资料 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int unsigned NULL NO PRI NULL auto_increment select,insert,update,references 主键ID |
|||
person_id int NULL NO NULL select,insert,update,references 人员id |
|||
name varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 花名 |
|||
store varchar(100) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 门店 |
|||
ethnicity varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 民族 |
|||
age int NULL YES NULL select,insert,update,references 年龄 |
|||
tenure varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 司龄 |
|||
regular_date varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 转正时间 |
|||
is_regular varchar(10) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 是否转正 |
|||
politics varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 政治面貌 |
|||
education varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 学历 |
|||
university varchar(100) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 毕业院校 |
|||
major varchar(100) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 专业 |
|||
graduation_date varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 毕业时间 |
|||
household_place varchar(255) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 户籍所在地 |
|||
household_type varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 户籍类型 |
|||
household_address varchar(200) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 户籍地址 |
|||
current_address varchar(200) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 现居地址 |
|||
emergency_contact varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 紧急联系人 |
|||
emergency_phone varchar(20) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 紧急联系人联系电话 |
|||
marital_status varchar(10) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 婚否 |
|||
bank_card varchar(30) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 银行卡号 |
|||
bank_name varchar(100) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 开户行 |
|||
contract_expire varchar(50) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 合同到期时间 |
|||
is_rehired varchar(10) utf8mb4_0900_ai_ci YES NULL select,insert,update,references 是否复聘 |
|||
remark text utf8mb4_0900_ai_ci YES NULL select,insert,update,references 备注 |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
1. **个人详细信息管理**: 存储人员的详细个人资料和背景信息 |
|||
2. **教育背景记录**: 记录学历、毕业院校、专业等教育信息 |
|||
3. **家庭信息管理**: 管理户籍、现居地址、婚姻状况等家庭信息 |
|||
4. **紧急联系人**: 存储紧急联系人和联系方式 |
|||
5. **银行信息管理**: 管理银行卡号、开户行等财务信息 |
|||
6. **合同信息跟踪**: 记录合同到期时间、转正情况等 |
|||
7. **工作履历**: 记录司龄、转正时间、复聘情况等 |
|||
8. **政治面貌**: 记录民族、政治面貌等政治信息 |
|||
9. **备注信息**: 存储其他重要的补充信息 |
|||
|
|||
### 业务场景 |
|||
- 员工入职时录入详细个人信息 |
|||
- 人事档案管理和维护 |
|||
- 薪资发放时使用银行信息 |
|||
- 紧急情况联系紧急联系人 |
|||
- 合同到期提醒和续签 |
|||
- 员工转正评估和记录 |
|||
- 人事统计和分析 |
|||
- 员工背景调查和验证 |
|||
- 社保公积金办理 |
|||
- 年度考核和评估 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
1. **school_personnel**: 通过person_id关联人员基本信息 |
|||
2. **school_salary**: 薪资发放关联银行信息 |
|||
3. **school_contract**: 合同管理关联 |
|||
4. **school_performance_records**: 绩效考核关联 |
|||
5. **school_departments**: 部门信息关联 |
|||
6. **school_campus**: 校区门店信息关联 |
|||
7. **school_sys_user**: 系统用户关联 |
|||
8. **school_personnel_summary**: 人员汇总信息关联 |
|||
|
|||
### 关联说明 |
|||
- **人员关联**: person_id关联人员基本信息表,形成完整的人员档案 |
|||
- **薪资关联**: 银行卡信息用于薪资发放和财务管理 |
|||
- **合同关联**: 合同到期时间用于合同管理和续签提醒 |
|||
- **绩效关联**: 个人信息用于绩效考核和评估 |
|||
- **部门关联**: 门店信息关联部门和校区管理 |
|||
- **用户关联**: 与系统用户账号关联 |
|||
- **汇总关联**: 用于生成人员统计和汇总报表 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id(已存在) |
|||
- **外键索引**: person_id(人员信息查询) |
|||
- **业务索引**: |
|||
- name(花名查询) |
|||
- store(门店查询) |
|||
- education(学历查询) |
|||
- is_regular(转正状态查询) |
|||
- bank_card(银行卡查询) |
|||
- **复合索引**: |
|||
- (person_id, is_regular)(人员转正状态查询) |
|||
- (store, is_regular)(门店转正人员查询) |
|||
- (education, age)(学历年龄查询) |
|||
- **时间索引**: |
|||
- regular_date(转正时间查询) |
|||
- graduation_date(毕业时间查询) |
|||
- contract_expire(合同到期查询) |
|||
- created_at(创建时间查询) |
|||
|
|||
## 注意事项 |
|||
1. **数据隐私**: 个人敏感信息需要严格的访问权限控制 |
|||
2. **银行信息安全**: 银行卡号等财务信息需要加密存储 |
|||
3. **信息完整性**: 关键信息如紧急联系人不能为空 |
|||
4. **数据格式**: 电话号码、银行卡号等需要格式验证 |
|||
5. **合同提醒**: 合同到期时间需要及时提醒和处理 |
|||
6. **转正流程**: 转正状态变更需要有完整的审批流程 |
|||
7. **信息更新**: 个人信息变更需要及时更新和记录 |
|||
8. **备份保护**: 人事档案数据需要定期备份 |
|||
9. **审计要求**: 重要信息变更需要记录操作日志 |
|||
10. **法规遵循**: 个人信息处理需要符合相关法律法规 |
|||
11. **数据一致性**: 与人员基本信息表保持数据一致性 |
|||
12. **权限分级**: 不同级别用户只能查看相应权限的信息 |
|||
13. **历史记录**: 重要信息变更需要保留历史记录 |
|||
14. **定期核查**: 定期核查信息的准确性和时效性 |
|||
15. **紧急联系**: 确保紧急联系人信息的有效性 |
|||
@ -0,0 +1,109 @@ |
|||
# school_personnel_summary 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_personnel_summary |
|||
**功能**: 人员工作汇总统计表,用于按日期统计销售人员和教练人员的工作绩效数据,包括任务完成情况、资源分配、到访数量、续费情况等关键指标,为人员绩效考核、工作量分析和业务管理提供数据支持 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references |
|||
task_date varchar(255) utf8mb4_general_ci NO NULL select,insert,update,references 任务日期 |
|||
campus_person_role_id int NULL NO NULL select,insert,update,references 销售及教练 人员角色 id |
|||
role_type int NULL NO 1 select,insert,update,references 1销售 2教练 |
|||
task_num int NULL NO 0 select,insert,update,references 任务数量 |
|||
complete_num int NULL NO 0 select,insert,update,references 完成数量 |
|||
expire_num int NULL NO 0 select,insert,update,references 到期数量 |
|||
renew_num int NULL NO 0 select,insert,update,references 续费数量 |
|||
resource_num int NULL NO 0 select,insert,update,references 分配的资源数量 |
|||
visit_num int NULL NO 0 select,insert,update,references 到访数量 |
|||
person_id int NULL NO NULL select,insert,update,references 人员id |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **日期统计管理**: 按任务日期统计人员的工作绩效数据 |
|||
- **角色分类统计**: 分别统计销售人员和教练人员的工作数据 |
|||
- **任务完成跟踪**: 记录和统计人员的任务数量和完成情况 |
|||
- **资源分配统计**: 统计分配给人员的客户资源数量 |
|||
- **到访数据统计**: 记录客户到访数量和转化情况 |
|||
- **续费业绩统计**: 统计人员的续费业绩和客户维护情况 |
|||
- **到期提醒统计**: 统计即将到期的客户数量 |
|||
- **绩效数据汇总**: 为绩效考核提供量化的数据支持 |
|||
- **工作量分析**: 分析人员的工作负荷和效率 |
|||
- **趋势分析支持**: 支持按时间维度的趋势分析 |
|||
|
|||
### 业务场景 |
|||
- **日报统计**: 每日统计销售和教练的工作完成情况 |
|||
- **绩效考核**: 为月度、季度绩效考核提供数据依据 |
|||
- **工作量分析**: 分析人员工作负荷,合理分配任务 |
|||
- **业绩排名**: 根据完成数量等指标进行人员排名 |
|||
- **资源效率**: 分析资源分配的转化效率和质量 |
|||
- **续费管理**: 跟踪和管理客户续费的完成情况 |
|||
- **到期预警**: 监控即将到期的客户,及时跟进 |
|||
- **团队管理**: 团队负责人查看下属的工作统计 |
|||
- **数据报表**: 生成各类工作统计和分析报表 |
|||
- **目标管理**: 对比实际完成情况与设定目标 |
|||
- **奖惩依据**: 为奖金发放和绩效奖惩提供数据 |
|||
- **培训需求**: 根据完成情况识别培训需求 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_campus_person_role`: 校区人员角色表 (campus_person_role_id外键关联) |
|||
- `school_personnel`: 人员信息表 (person_id外键关联) |
|||
- `school_campus`: 校区信息表 (通过角色关联) |
|||
- `school_customer_resource`: 客户资源表 (资源分配统计) |
|||
- `school_six_speed`: 六速跟进表 (到访和转化统计) |
|||
- `school_contract`: 合同信息表 (续费统计关联) |
|||
- `school_performance_config`: 绩效配置表 (绩效计算规则) |
|||
- `school_coach_performance`: 教练绩效表 (教练绩效关联) |
|||
- `school_sales_performance`: 销售绩效表 (销售绩效关联) |
|||
|
|||
### 关联说明 |
|||
- **角色关联**: campus_person_role_id关联校区人员角色表,确定统计的具体角色 |
|||
- **人员关联**: person_id关联人员信息表,确定统计的具体人员 |
|||
- **校区关联**: 通过角色表间接关联校区信息 |
|||
- **资源关联**: 资源数量统计来源于客户资源分配记录 |
|||
- **跟进关联**: 到访数量等数据来源于六速跟进记录 |
|||
- **合同关联**: 续费数量统计来源于合同续费记录 |
|||
- **绩效关联**: 统计数据用于绩效计算和考核 |
|||
- **配置关联**: 统计规则和计算方式参考绩效配置 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **外键索引**: |
|||
- campus_person_role_id (角色统计查询) |
|||
- person_id (人员统计查询) |
|||
- **业务索引**: |
|||
- task_date (日期统计查询) |
|||
- role_type (角色类型查询) |
|||
- **复合索引**: |
|||
- (person_id, task_date) (人员日期统计) |
|||
- (campus_person_role_id, task_date) (角色日期统计) |
|||
- (role_type, task_date) (类型日期统计) |
|||
- (person_id, role_type, task_date) (完整统计查询) |
|||
- **统计索引**: |
|||
- (task_date, complete_num) (完成情况统计) |
|||
- (task_date, resource_num) (资源分配统计) |
|||
- (task_date, visit_num) (到访情况统计) |
|||
|
|||
## 注意事项 |
|||
- **数据完整性**: campus_person_role_id和person_id必须在对应表中存在 |
|||
- **日期格式**: task_date字段应使用统一的日期格式 |
|||
- **角色类型**: role_type必须与实际角色类型保持一致 |
|||
- **数据一致性**: 统计数据应与源业务数据保持一致 |
|||
- **重复统计**: 避免同一人员同一日期的重复统计记录 |
|||
- **数据时效**: 统计数据应及时更新,保证数据的时效性 |
|||
- **计算准确性**: 各项数量统计的计算逻辑应准确无误 |
|||
- **权限控制**: 人员只能查看自己的统计数据 |
|||
- **数据备份**: 重要的统计数据需要定期备份 |
|||
- **异常处理**: 统计过程中的异常情况需要妥善处理 |
|||
- **性能优化**: 大量统计数据的查询需要优化性能 |
|||
- **数据清理**: 定期清理过期的统计数据 |
|||
- **审计追踪**: 统计数据的修改需要记录审计日志 |
|||
- **报表生成**: 基于统计数据生成的报表需要保证准确性 |
|||
- **目标对比**: 实际完成数据与目标数据的对比分析 |
|||
- **趋势分析**: 支持按时间维度的数据趋势分析 |
|||
@ -0,0 +1,100 @@ |
|||
# school_physical_test 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_physical_test |
|||
**功能**: 学员体测管理表,负责管理教务系统中学员的体能测试数据,包括身高体重测量、体测报告生成、教练指导记录等体能评估相关功能 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 体测编号 |
|||
resource_id int NULL NO NULL select,insert,update,references 资源ID |
|||
student_id int NULL YES NULL select,insert,update,references 学员ID |
|||
height decimal(5,2) NULL NO NULL select,insert,update,references 身高 |
|||
weight decimal(5,2) NULL NO NULL select,insert,update,references 体重 |
|||
coach_id int NULL YES NULL select,insert,update,references 教练ID |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 更新时间 |
|||
physical_test_report text utf8mb4_general_ci YES NULL select,insert,update,references 体测报告附件(多文件) |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **体测数据记录**: 记录学员的身高、体重等基础体测数据 |
|||
- **资源关联管理**: 关联客户资源,跟踪潜在学员的体测情况 |
|||
- **学员体测跟踪**: 记录正式学员的定期体测数据 |
|||
- **教练指导记录**: 记录负责体测的教练信息 |
|||
- **体测报告管理**: 存储和管理体测报告附件 |
|||
- **时间记录**: 记录体测的创建和更新时间 |
|||
- **数据对比**: 支持学员体测数据的历史对比 |
|||
- **健康评估**: 基于体测数据进行健康状况评估 |
|||
- **训练建议**: 根据体测结果提供个性化训练建议 |
|||
|
|||
### 业务场景 |
|||
- **入学体测**: 新学员入学时进行初始体能测试 |
|||
- **定期体测**: 在读学员定期进行体能测试 |
|||
- **课程匹配**: 根据体测结果推荐适合的课程 |
|||
- **训练计划**: 教练根据体测数据制定个性化训练计划 |
|||
- **进度跟踪**: 跟踪学员体能改善进度 |
|||
- **健康监控**: 监控学员健康状况变化 |
|||
- **报告生成**: 生成详细的体测分析报告 |
|||
- **家长沟通**: 向家长展示学员体能发展情况 |
|||
- **数据分析**: 分析整体学员体能水平趋势 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- `school_customer_resources`: 客户资源表 (resource_id关联) |
|||
- `school_student`: 学员信息表 (student_id关联) |
|||
- `school_personnel`: 人员表 (coach_id关联教练) |
|||
- `school_course`: 课程表 (体测结果影响课程推荐) |
|||
- `school_class`: 班级表 (体测结果影响班级分配) |
|||
- `school_sys_attachment`: 附件表 (体测报告文件) |
|||
- `school_member`: 会员表 (学员会员信息) |
|||
- `school_contract`: 合同表 (体测影响签约决策) |
|||
|
|||
### 关联说明 |
|||
- **资源关联**: resource_id关联客户资源表,跟踪潜在客户体测 |
|||
- **学员关联**: student_id关联学员信息,记录正式学员体测 |
|||
- **教练关联**: coach_id关联负责体测的教练人员 |
|||
- **课程关联**: 体测结果用于课程推荐和适配 |
|||
- **班级关联**: 体测数据影响班级分配和分组 |
|||
- **附件关联**: physical_test_report存储体测报告文件路径 |
|||
- **会员关联**: 通过学员信息关联到会员账户 |
|||
- **合同关联**: 体测结果可能影响合同签署决策 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: id (已存在) |
|||
- **业务索引**: |
|||
- resource_id (资源查询) |
|||
- student_id (学员查询) |
|||
- coach_id (教练查询) |
|||
- **复合索引**: |
|||
- (resource_id, created_at) (资源体测时间查询) |
|||
- (student_id, created_at) (学员体测历史查询) |
|||
- (coach_id, created_at) (教练体测记录查询) |
|||
- **时间索引**: |
|||
- created_at (创建时间查询) |
|||
- updated_at (更新时间查询) |
|||
- **数值索引**: |
|||
- height (身高范围查询) |
|||
- weight (体重范围查询) |
|||
|
|||
## 注意事项 |
|||
- **数据精度**: 身高体重使用decimal(5,2),精确到小数点后两位 |
|||
- **关联完整性**: resource_id和student_id至少有一个不能为空 |
|||
- **教练权限**: 只有授权教练才能录入和修改体测数据 |
|||
- **数据有效性**: 需要验证身高体重数据的合理性范围 |
|||
- **隐私保护**: 体测数据涉及个人隐私,需要严格保护 |
|||
- **报告格式**: physical_test_report建议使用JSON格式存储多文件信息 |
|||
- **时间戳**: 使用timestamp类型自动记录时间 |
|||
- **数据备份**: 体测数据是重要的学员档案,需要定期备份 |
|||
- **历史记录**: 不建议删除历史体测记录,用于对比分析 |
|||
- **文件管理**: 体测报告文件需要与数据库记录保持一致 |
|||
- **数据分析**: 体测数据可用于学员健康趋势分析 |
|||
- **权限控制**: 体测数据查看需要相应权限控制 |
|||
- **数据导出**: 支持体测数据的导出和报表生成 |
|||
- **异常处理**: 需要处理体测设备故障等异常情况 |
|||
- **标准化**: 体测流程和数据记录需要标准化 |
|||
@ -0,0 +1,87 @@ |
|||
# school_reimbursement 表文档 |
|||
|
|||
## 表概述 |
|||
**表名**: school_reimbursement |
|||
**功能**: 员工费用报销管理表,用于处理和管理员工提交的各种费用报销申请,支持完整的审批流程和凭证管理 |
|||
|
|||
## 字段说明 |
|||
|
|||
``` |
|||
Field Type Collation Null Key Default Extra Privileges Comment |
|||
id int NULL NO PRI NULL auto_increment select,insert,update,references 报销编号 |
|||
applicant_id int NULL NO NULL select,insert,update,references 申请人ID |
|||
amount decimal(10,2) NULL NO NULL select,insert,update,references 报销金额 |
|||
description text utf8mb4_general_ci NO NULL select,insert,update,references 报销描述 |
|||
receipt_url varchar(255) utf8mb4_general_ci YES NULL select,insert,update,references 发票或收据URL |
|||
status enum('pending','approved','rejected') utf8mb4_general_ci NO NULL select,insert,update,references 状态: pending-待审批, approved-已批准, rejected-已拒绝 |
|||
process_id int NULL YES MUL NULL select,insert,update,references 关联的审批流程ID |
|||
created_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED select,insert,update,references 创建时间 |
|||
updated_at timestamp NULL YES CURRENT_TIMESTAMP DEFAULT_GENERATED on update CURRENT_TIMESTAMP select,insert,update,references 修改时间 |
|||
``` |
|||
|
|||
## 功能用途 |
|||
|
|||
### 主要功能 |
|||
- **报销申请管理**: 处理员工提交的各种费用报销申请 |
|||
- **金额计算**: 精确记录和计算报销金额,支持小数点后两位 |
|||
- **凭证管理**: 管理发票、收据等报销凭证的电子化存储 |
|||
- **审批流程**: 集成审批工作流,支持多级审批和状态跟踪 |
|||
- **状态控制**: 管理报销申请的待审批、已批准、已拒绝等状态 |
|||
- **申请人追踪**: 记录报销申请人的详细信息和联系方式 |
|||
- **描述记录**: 详细记录报销事由和相关说明信息 |
|||
- **时间追踪**: 记录申请创建和处理的完整时间轨迹 |
|||
|
|||
### 业务场景 |
|||
- **日常费用报销**: 处理员工的交通费、餐费、办公用品等日常开支 |
|||
- **差旅费报销**: 管理出差产生的住宿费、交通费、餐补等费用 |
|||
- **培训费用**: 处理员工参加培训、会议等产生的费用报销 |
|||
- **教学用品采购**: 报销购买教学器材、教具等教学相关费用 |
|||
- **营销活动费用**: 报销市场推广、活动组织等营销费用 |
|||
- **设备维护费用**: 报销设备维修、保养等维护费用 |
|||
- **办公场所费用**: 报销租金、水电费、物业费等场所运营费用 |
|||
- **员工福利费用**: 报销团建活动、员工关怀等福利支出 |
|||
- **紧急费用处理**: 快速处理紧急情况下的费用报销需求 |
|||
|
|||
## 关联关系 |
|||
|
|||
### 主要关联表 |
|||
- **school_personnel**: 人员表,关联报销申请人的基本信息 |
|||
- **school_approval_process**: 审批流程表,关联报销的审批流程 |
|||
- **school_approval_participants**: 审批参与者表,关联审批人员信息 |
|||
- **school_campus**: 校区表,关联报销申请所属的校区 |
|||
- **school_department**: 部门表,关联申请人所属的部门 |
|||
- **school_sys_attachment**: 附件表,关联报销凭证的文件存储 |
|||
- **school_finance_account**: 财务账户表,关联报销款项的支付账户 |
|||
- **school_budget**: 预算表,关联部门或项目的预算控制 |
|||
|
|||
### 关联说明 |
|||
- `applicant_id` 关联 `school_personnel.id`,标识报销申请人 |
|||
- `process_id` 关联 `school_approval_process.id`,关联审批流程实例 |
|||
- `receipt_url` 存储报销凭证的文件路径或URL |
|||
- 与财务系统关联,实现报销款项的自动支付 |
|||
- 与预算系统关联,控制报销金额不超过预算限额 |
|||
- 与通知系统关联,及时通知相关人员审批进度 |
|||
- 与权限系统关联,控制报销申请的查看和操作权限 |
|||
|
|||
## 索引建议 |
|||
- **主键索引**: `PRIMARY KEY (id)` - 自动创建 |
|||
- **申请人索引**: `INDEX idx_applicant_id (applicant_id)` - 支持按申请人查询 |
|||
- **状态索引**: `INDEX idx_status (status)` - 支持按审批状态查询 |
|||
- **流程索引**: `INDEX idx_process_id (process_id)` - 支持按审批流程查询 |
|||
- **金额索引**: `INDEX idx_amount (amount)` - 支持按金额范围查询 |
|||
- **创建时间索引**: `INDEX idx_created_at (created_at)` - 支持按申请时间查询 |
|||
- **更新时间索引**: `INDEX idx_updated_at (updated_at)` - 支持按处理时间查询 |
|||
- **复合索引**: `INDEX idx_applicant_status (applicant_id, status)` - 支持申请人和状态的复合查询 |
|||
- **时间范围索引**: `INDEX idx_created_amount (created_at, amount)` - 支持时间和金额的复合查询 |
|||
|
|||
## 注意事项 |
|||
- **金额精度**: 确保金额计算的精度,避免浮点数误差 |
|||
- **凭证完整性**: 严格要求上传完整、清晰的报销凭证 |
|||
- **审批时效**: 建立审批时效机制,避免报销申请长期积压 |
|||
- **预算控制**: 实施严格的预算控制,防止超预算报销 |
|||
- **权限管理**: 严格控制报销数据的查看和修改权限 |
|||
- **数据备份**: 定期备份重要的报销数据和凭证文件 |
|||
- **审计合规**: 确保报销流程符合财务审计和税务要求 |
|||
- **防重复报销**: 建立机制防止同一费用的重复报销 |
|||
- **异常监控**: 监控异常的报销行为,如大额报销、频繁报销等 |
|||
- **归档管理**: 建立报销记录的归档和长期保存机制 |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue