docs: 补充墨刀原型批注和示例数据到各文档

- 需求规格说明书:添加第8.3章墨刀批注汇总
  - 全局注意事项(角色、部门管理、token)
  - 学校管理批注(挂载模式、软删除、必填规则)
  - 会员管理批注(登录方式、身份类型规则)
  - 学生管理批注(批量导入要求)
  - 应用管理批注(重置密钥、接口授权)
  - 区域管理批注(父级带入)
  - 示例数据(区域树、学校树)

- 数据库设计文档:添加第4.6-4.9章示例数据
  - 学校示例数据(武汉市第一中学等)
  - 会员示例数据
  - 学生示例数据
  - 应用示例数据(AI智慧平台)

- 接口设计文档:添加第10章业务规则说明
  - 学校管理规则(编码生成、挂载模式)
  - 会员管理规则(自动生成、身份类型)
  - 学生管理规则(批量导入)
  - 应用管理规则(密钥重置)
  - 区域管理规则

- README.md:添加原型批注要点和示例数据摘要
This commit is contained in:
神码-方晓辉 2026-01-31 16:58:18 +08:00
parent ba1a62b7af
commit d35e257ec8
7 changed files with 539 additions and 4 deletions

View File

@ -181,6 +181,39 @@ mvn spring-boot:run
- **页面数量**17个 - **页面数量**17个
- **访问方式**:只读模式 - **访问方式**:只读模式
### 原型批注要点
> 详细批注信息见 `docs/01-需求文档/需求规格说明书_v1.0.md` 第8章
| 模块 | 关键批注 |
| -------- | -------------------------------------------- |
| **全局** | 系统支持3个角色管理员、分公司用户、学校用户会员需使用token支持小程序/H5登录 |
| **学校管理** | 学校下新增年级/班级为挂载模式(非新建);删除需检查子级和引用;所有删除为软删除 |
| **会员管理** | 支持3种登录方式教师必须绑定学校信息且只能绑定本校学生家长可绑定任意学生 |
| **学生管理** | 批量导入时自动创建不存在的家长用户初始密码123456 |
| **应用管理** | 重置密钥需弹窗显示并支持复制;接口授权采用勾选方式 |
| **区域管理** | 新增下级时自动带入父级区域 |
### 示例数据
**区域示例:**
```
湖北 → 武汉 → 武昌区/汉口区/汉阳区/江夏区/新洲区/黄陂区
湖北 → 黄冈 → 黄州区/红安县/麻城市
北京 | 香港 | 吉宁
```
**学校示例:**
- 武汉市第一中学七年级1-3班、八年级、九年级
- 武汉市第三中学
- 武汉市水果湖小学(一至六年级)
**应用示例:**
- AI智慧平台YY000001- 授权接口:学校接口、年级接口、班级接口
--- ---
## 开发规范 ## 开发规范
@ -219,6 +252,15 @@ mvn spring-boot:run
## 版本更新日志 ## 版本更新日志
### v1.0.1 (2026-01-31)
**文档完善:**
- 需求规格说明书补充墨刀原型批注汇总第8.3章)
- 数据库设计文档:补充学校/会员/学生/应用示例数据
- 接口设计文档补充业务规则说明第10章
- README.md补充原型批注要点和示例数据
### v1.0.0 (2026-01-31) ### v1.0.0 (2026-01-31)
**前端技术栈升级:** **前端技术栈升级:**

View File

@ -714,8 +714,192 @@
| 6 | 年级管理 | 列表、编辑 | 2 | | 6 | 年级管理 | 列表、编辑 | 2 |
| 7 | 班级管理 | 列表、编辑 | 2 | | 7 | 班级管理 | 列表、编辑 | 2 |
| 8 | 学科管理 | 列表、编辑 | 2 | | 8 | 学科管理 | 列表、编辑 | 2 |
| 9 | 区域管理 | 列表、编辑 | 2 |
| | **合计** | | **17** | | | **合计** | | **17** |
### 8.3 墨刀批注汇总
> 以下为墨刀原型中的批注信息,作为开发实现的补充说明
#### 8.3.1 全局注意事项
| 批注序号 | 批注内容 |
|:------:|--------|
| 1 | 系统可以创建3个角色管理员分公司用户学校用户 |
| 2 | 利用RuoYi的部门管理创建分公司并创建分公司的角色分配对应的功能权限也可创建学校用户角色 |
| 3 | 会员管理需要使用token来方便前端用户登录小程序或者H5 |
#### 8.3.2 学校管理批注
| 批注序号 | 批注内容 |
|:------:|--------|
| 1 | 学校下面新增年级,此处不做年级新增,只选择年级挂载在学校下面,功能类似编辑 |
| 2 | 删除时提示是否有子级,如有子级或者被学生信息使用时,给出提示,并且都是软删除 |
| 3 | 基于选择的区域根据学校名称和状态搜索 |
| 4 | 基于选择的区域新增学校信息 |
| 5 | 年级下面新增班级,此处不做班级新增,只选择班级挂载在年级下面,功能类似编辑 |
| 6 | 学校编码自动生成;所属地区从列表页选择的区域层级树带入,也可以手动调整;所属地区/学校编码/学校名称必填 |
| 7 | 学校下新增年级,选择对应的年级,支持多选,必填 |
| 8 | 年级下新增班级,选择对应的班级,支持多选 |
**示例数据 - 区域树:**
```
湖北
├── 武汉
│ ├── 武昌区
│ ├── 汉口区
│ ├── 汉阳区
│ ├── 江夏区
│ ├── 新洲区
│ └── 黄陂区
└── 黄冈
├── 黄州区
├── 红安县
└── 麻城市
北京
香港
吉宁
```
**示例数据 - 学校树:**
```
武汉市第一中学
├── 七年级
│ ├── 1班
│ ├── 2班
│ └── 3班
├── 八年级
└── 九年级
武汉市第三中学
武汉市水果湖小学
├── 一年级
├── 二年级
├── 三年级
├── 四年级
├── 五年级
└── 六年级
```
#### 8.3.3 会员管理批注
| 批注序号 | 批注内容 |
|:------:|--------|
| 1 | 重置密码后,显示密码,提供复制功能 |
| 2 | 删除时需要popconfirm提醒并且如果会员明显绑定了学生信息不允许删除需要先移除绑定的学生信息 |
| 3 | 编辑跳转到会员编辑页面 |
| 4 | 使用RuoYi的鉴权登录处理用户区分后台用户和会员信息 |
| 5 | 当前用户支持手机号+验证码登录、手机号+密码登录和微信登录,登录时需要使用输入验证码 |
| 6 | 禁用用户后,无法登录 |
| 7 | 昵称未填写时,自动生成 |
| 8 | 会员编号自动生成 |
| 9 | 出生日期和性别选填 |
| 10 | 身份信息为老师时,需要选择对应的区域/学校/年级/班级,学生信息从学生管理的数据中选择绑定,只允许选择与老师所属学校一样的学生 |
| 11 | 身份信息为家长时,不显示区域/学校/年级/班级,学生允许随便选择 |
**示例数据:**
- 会员编号JS123123123
- 归属用户显示昵称手机号13207166213
**表格列定义:**
| 字段 | 说明 |
|-----|------|
| 会员编号 | 系统自动生成 |
| 手机号 | 11位手机号 |
| 昵称 | 用户昵称 |
| 性别 | 男/女/未知 |
| 出生日期 | 日期格式 |
| 身份类型 | 家长/教师 |
| 注册时间 | 日期时间 |
| 注册来源 | 小程序/H5/后台新增 |
| openId | 微信用户标识 |
| 状态 | 启用/禁用 |
| 操作 | 编辑、重置密码、删除 |
#### 8.3.4 学生管理批注
| 批注序号 | 批注内容 |
|:------:|--------|
| 1 | 学号不允许重复,可空 |
| 2 | 出生日期和性别可空 |
| 3 | 学校信息必填 |
**批量导入要求:**
| 序号 | 要求内容 |
|:---:|--------|
| 1 | 下载模板,模板包含姓名-必填,学号-必填,用户手机号-必填,区域-必填,学校-必填,年级-必填,班级-必填,性别-选填,出生年月-选填 |
| 2 | 导入数据时,检查必填信息,并检查区域/学校/年级/班级对应的信息一致 |
| 3 | 导入时同时需要检查用户手机号如果系统中存在用户手机号那么导入的学生就挂在当前用户下如果系统中不存在对应的用户自动创建当前手机号的用户身份为家长初始密码123456并把学生信息挂在当前用户下 |
**表格列定义:**
| 字段 | 说明 |
|-----|------|
| 姓名 | 学生姓名 |
| 学号 | 学生学号 |
| 性别 | 男/女/未知 |
| 出生年月 | 日期格式 |
| 地区 | 如:湖北省-武汉市-武昌区 |
| 学校 | 学校名称 |
| 年级 | 年级名称 |
| 班级 | 班级名称 |
| 学科 | 学科名称 |
| 用户身份 | 家长/教师 |
| 用户昵称 | 归属会员昵称 |
| 用户手机号 | 归属会员手机号 |
| 操作 | 编辑、删除 |
#### 8.3.5 应用管理批注
| 批注序号 | 批注内容 |
|:------:|--------|
| 1 | 重置密钥,弹出显示,并可以复制 |
| 2 | 删除popconfirm确认提示 |
**示例数据:**
- 应用名称AI智慧平台
- 应用编码YY000001
- 授权接口:学校接口、年级接口、班级接口
**接口授权表格:**
| 接口名称 | 接口地址 | 允许访问 |
|---------|---------|:------:|
| 查询学生信息 | /api/student/getList | ☐ |
| 查询学校信息 | /api/school/getList | ☐ |
| 查询年级信息 | /api/grade/getList | ☐ |
| 查询班级信息 | /api/class/getList | ☐ |
#### 8.3.6 区域管理批注
| 批注序号 | 批注内容 |
|:------:|--------|
| 1 | 区域名称必填 |
| 2 | 如果是新增下级跳转过来时,默认所属父级为选择的;直接点新增,所选区域需要手动选择 |
**表格列定义:**
| 字段 | 说明 |
|-----|------|
| 区域名称 | 如:湖北省、武汉市 |
| 区域编码 | 系统自动生成 |
| 创建时间 | 日期时间 |
| 创建人 | 操作人 |
| 操作 | 新增下级、编辑、删除 |
#### 8.3.7 年级管理
**表格列定义:**
| 字段 | 说明 |
|-----|------|
| 年级名称 | 如:一年级、七年级 |
| 年级编码 | 系统自动生成 |
| 状态 | 启用/禁用 |
| 创建时间 | 日期时间 |
| 创建人 | 操作人 |
| 操作 | 编辑、删除 |
**新增/编辑表单:**
- 年级名称(必填)
- 年级编码(自动生成)
- 状态(开关)
--- ---
## 9. 约束与假设 ## 9. 约束与假设

View File

@ -61,13 +61,14 @@
| | Element Plus | 2.x | UI组件库 | | | Element Plus | 2.x | UI组件库 |
| | Axios | 1.x | HTTP客户端 | | | Axios | 1.x | HTTP客户端 |
| | Pinia | 2.x | 状态管理 | | | Pinia | 2.x | 状态管理 |
| **后端** | Spring Boot | 2.7.x | 应用框架 | | **后端** | Spring Boot | 3.3.x | 应用框架LTS版本 |
| | Spring Security | 5.x | 安全框架 | | | Spring Security | 6.x | 安全框架 |
| | MyBatis Plus | 3.5.x | ORM框架 | | | MyBatis Plus | 3.5.x | ORM框架 |
| | JWT | 0.11.x | Token认证 | | | JWT | 0.12.x | Token认证 |
| | Hutool | 5.x | 工具库 | | | Hutool | 5.x | 工具库 |
| | JDK | 17+ | 运行环境LTS |
| **数据库** | MySQL | 8.0 | 主数据库 | | **数据库** | MySQL | 8.0 | 主数据库 |
| | Redis | 6.x | 缓存 | | | Redis | 7.x | 缓存 |
| **中间件** | Nginx | 1.20+ | 反向代理 | | **中间件** | Nginx | 1.20+ | 反向代理 |
| | MinIO | - | 文件存储(可选)| | | MinIO | - | 文件存储(可选)|
| **基础框架** | RuoYi-Vue | 3.8.x | 快速开发框架 | | **基础框架** | RuoYi-Vue | 3.8.x | 快速开发框架 |

View File

@ -497,6 +497,69 @@ INSERT INTO pg_api_dict (api_id, api_code, api_name, api_path, api_method, api_d
(6, 'REGION_TREE', '查询区域树', '/open/region/tree', 'GET', '获取区域树形结构', 6); (6, 'REGION_TREE', '查询区域树', '/open/region/tree', 'GET', '获取区域树形结构', 6);
``` ```
### 4.6 学校示例数据
> 以下数据来源于墨刀原型设计
```sql
-- 学校数据
INSERT INTO pg_school (school_id, school_code, school_name, school_type, region_id, region_path, status, create_time) VALUES
(1, 'SCH20260001', '武汉市第一中学', '02', 111, '湖北省-武汉市-武昌区', '0', NOW()),
(2, 'SCH20260002', '武汉市第三中学', '02', 111, '湖北省-武汉市-武昌区', '0', NOW()),
(3, 'SCH20260003', '武汉市水果湖小学', '01', 111, '湖北省-武汉市-武昌区', '0', NOW());
-- 学校-年级关联(武汉市第一中学)
INSERT INTO pg_school_grade (id, school_id, grade_id, order_num) VALUES
(1, 1, 7, 1), -- 七年级
(2, 1, 8, 2), -- 八年级
(3, 1, 9, 3); -- 九年级
-- 学校-年级关联(武汉市水果湖小学)
INSERT INTO pg_school_grade (id, school_id, grade_id, order_num) VALUES
(4, 3, 1, 1), -- 一年级
(5, 3, 2, 2), -- 二年级
(6, 3, 3, 3), -- 三年级
(7, 3, 4, 4), -- 四年级
(8, 3, 5, 5), -- 五年级
(9, 3, 6, 6); -- 六年级
-- 学校-班级关联(武汉市第一中学-七年级)
INSERT INTO pg_school_class (id, school_grade_id, class_id, order_num) VALUES
(1, 1, 1, 1), -- 1班
(2, 1, 2, 2), -- 2班
(3, 1, 3, 3); -- 3班
```
### 4.7 会员示例数据
```sql
INSERT INTO pg_member (member_id, member_code, phone, password, nickname, gender, identity_type, region_id, school_id, register_source, register_time, status) VALUES
(1, 'JS123123123', '13207166213', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '张三家长', '1', '1', NULL, NULL, '1', NOW(), '0'),
(2, 'JS123123124', '13807166214', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '李老师', '2', '2', 111, 1, '1', NOW(), '0');
```
### 4.8 学生示例数据
```sql
INSERT INTO pg_student (student_id, student_name, student_no, gender, birthday, region_id, region_path, school_id, school_grade_id, school_class_id, member_id, status, create_time) VALUES
(1, '张小明', 'STU20260001', '1', '2015-03-15', 111, '湖北省-武汉市-武昌区', 1, 1, 1, 1, '0', NOW()),
(2, '张小红', 'STU20260002', '2', '2017-06-20', 111, '湖北省-武汉市-武昌区', 3, 4, 1, 1, '0', NOW());
```
### 4.9 应用示例数据
```sql
-- 应用数据
INSERT INTO pg_application (app_id, app_code, app_name, app_secret, app_desc, status, create_time) VALUES
(1, 'YY000001', 'AI智慧平台', 'a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6', 'AI智慧教育平台接入', '0', NOW());
-- 应用接口授权
INSERT INTO pg_app_api (id, app_id, api_code, api_name, api_path, create_time) VALUES
(1, 1, 'SCHOOL_LIST', '查询学校信息', '/open/school/list', NOW()),
(2, 1, 'GRADE_LIST', '查询年级信息', '/open/grade/list', NOW()),
(3, 1, 'CLASS_LIST', '查询班级信息', '/open/class/list', NOW());
```
--- ---
## 5. 索引设计 ## 5. 索引设计

View File

@ -958,4 +958,74 @@ MD5签名E5D7C6B5A4F3E2D1C0B9A8F7E6D5C4B3
--- ---
## 10. 业务规则说明
> 以下业务规则来源于墨刀原型批注,接口开发时需遵守
### 10.1 学校管理
| 规则编号 | 规则描述 |
|:------:|--------|
| SCH-01 | 学校编码自动生成格式SCH + 年份 + 4位序号 |
| SCH-02 | 新增学校时所属地区从列表页选择的区域层级树带入,也可手动调整 |
| SCH-03 | 所属地区/学校编码/学校名称为必填 |
| SCH-04 | 学校下新增年级为选择挂载模式,非新建年级,支持多选 |
| SCH-05 | 年级下新增班级为选择挂载模式,非新建班级,支持多选 |
| SCH-06 | 删除时检查是否有子级或被学生信息引用,有则不允许删除 |
| SCH-07 | 所有删除操作均为软删除 |
### 10.2 会员管理
| 规则编号 | 规则描述 |
|:------:|--------|
| MEM-01 | 会员编号自动生成格式JS + 时间戳 |
| MEM-02 | 昵称未填写时自动生成 |
| MEM-03 | 出生日期和性别为选填 |
| MEM-04 | 身份类型为"教师"时,必须填写区域/学校/年级/班级 |
| MEM-05 | 身份类型为"教师"时,只能绑定同校学生 |
| MEM-06 | 身份类型为"家长"时,不显示区域信息,可绑定任意学生 |
| MEM-07 | 重置密码后弹窗显示新密码,提供复制功能 |
| MEM-08 | 删除会员需popconfirm确认如绑定学生则不允许删除 |
| MEM-09 | 禁用会员后无法登录任何端 |
| MEM-10 | 支持三种登录方式:手机号+验证码、手机号+密码、微信登录 |
### 10.3 学生管理
| 规则编号 | 规则描述 |
|:------:|--------|
| STU-01 | 学号不允许重复,可为空 |
| STU-02 | 出生日期和性别可为空 |
| STU-03 | 学校信息(区域/学校/年级/班级)为必填 |
| STU-04 | 学生必须归属于某个会员 |
**批量导入规则:**
| 规则编号 | 规则描述 |
|:------:|--------|
| IMP-01 | 模板字段:姓名(必填)、学号(必填)、用户手机号(必填)、区域(必填)、学校(必填)、年级(必填)、班级(必填)、性别(选填)、出生年月(选填) |
| IMP-02 | 导入时校验必填字段和区域/学校/年级/班级数据一致性 |
| IMP-03 | 用户手机号已存在则挂载到已有用户 |
| IMP-04 | 用户手机号不存在则自动创建家长用户初始密码123456 |
### 10.4 应用管理
| 规则编号 | 规则描述 |
|:------:|--------|
| APP-01 | 应用编码自动生成格式YY + 6位序号 |
| APP-02 | 应用密钥AppSecret自动生成32位随机字符串 |
| APP-03 | 重置密钥后弹窗显示新密钥,提供复制功能 |
| APP-04 | 删除应用需popconfirm确认 |
| APP-05 | 禁用应用后无法调用任何API |
### 10.5 区域管理
| 规则编号 | 规则描述 |
|:------:|--------|
| REG-01 | 区域名称必填 |
| REG-02 | 区域编码自动生成 |
| REG-03 | 新增下级时默认所属父级为选择的区域 |
| REG-04 | 删除区域前检查是否有子级或被引用 |
---
*文档结束* *文档结束*

174
sql/quartz.sql Normal file
View File

@ -0,0 +1,174 @@
DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
DROP TABLE IF EXISTS QRTZ_LOCKS;
DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_TRIGGERS;
DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
DROP TABLE IF EXISTS QRTZ_CALENDARS;
-- ----------------------------
-- 1、存储每一个已配置的 jobDetail 的详细信息
-- ----------------------------
create table QRTZ_JOB_DETAILS (
sched_name varchar(120) not null comment '调度名称',
job_name varchar(200) not null comment '任务名称',
job_group varchar(200) not null comment '任务组名',
description varchar(250) null comment '相关介绍',
job_class_name varchar(250) not null comment '执行任务类名称',
is_durable varchar(1) not null comment '是否持久化',
is_nonconcurrent varchar(1) not null comment '是否并发',
is_update_data varchar(1) not null comment '是否更新数据',
requests_recovery varchar(1) not null comment '是否接受恢复执行',
job_data blob null comment '存放持久化job对象',
primary key (sched_name, job_name, job_group)
) engine=innodb comment = '任务详细信息表';
-- ----------------------------
-- 2、 存储已配置的 Trigger 的信息
-- ----------------------------
create table QRTZ_TRIGGERS (
sched_name varchar(120) not null comment '调度名称',
trigger_name varchar(200) not null comment '触发器的名字',
trigger_group varchar(200) not null comment '触发器所属组的名字',
job_name varchar(200) not null comment 'qrtz_job_details表job_name的外键',
job_group varchar(200) not null comment 'qrtz_job_details表job_group的外键',
description varchar(250) null comment '相关介绍',
next_fire_time bigint(13) null comment '上一次触发时间(毫秒)',
prev_fire_time bigint(13) null comment '下一次触发时间(默认为-1表示不触发',
priority integer null comment '优先级',
trigger_state varchar(16) not null comment '触发器状态',
trigger_type varchar(8) not null comment '触发器的类型',
start_time bigint(13) not null comment '开始时间',
end_time bigint(13) null comment '结束时间',
calendar_name varchar(200) null comment '日程表名称',
misfire_instr smallint(2) null comment '补偿执行的策略',
job_data blob null comment '存放持久化job对象',
primary key (sched_name, trigger_name, trigger_group),
foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS(sched_name, job_name, job_group)
) engine=innodb comment = '触发器详细信息表';
-- ----------------------------
-- 3、 存储简单的 Trigger包括重复次数间隔以及已触发的次数
-- ----------------------------
create table QRTZ_SIMPLE_TRIGGERS (
sched_name varchar(120) not null comment '调度名称',
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
repeat_count bigint(7) not null comment '重复的次数统计',
repeat_interval bigint(12) not null comment '重复的间隔时间',
times_triggered bigint(10) not null comment '已经触发的次数',
primary key (sched_name, trigger_name, trigger_group),
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
) engine=innodb comment = '简单触发器的信息表';
-- ----------------------------
-- 4、 存储 Cron Trigger包括 Cron 表达式和时区信息
-- ----------------------------
create table QRTZ_CRON_TRIGGERS (
sched_name varchar(120) not null comment '调度名称',
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
cron_expression varchar(200) not null comment 'cron表达式',
time_zone_id varchar(80) comment '时区',
primary key (sched_name, trigger_name, trigger_group),
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
) engine=innodb comment = 'Cron类型的触发器表';
-- ----------------------------
-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型JobStore 并不知道如何存储实例的时候)
-- ----------------------------
create table QRTZ_BLOB_TRIGGERS (
sched_name varchar(120) not null comment '调度名称',
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
blob_data blob null comment '存放持久化Trigger对象',
primary key (sched_name, trigger_name, trigger_group),
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
) engine=innodb comment = 'Blob类型的触发器表';
-- ----------------------------
-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
-- ----------------------------
create table QRTZ_CALENDARS (
sched_name varchar(120) not null comment '调度名称',
calendar_name varchar(200) not null comment '日历名称',
calendar blob not null comment '存放持久化calendar对象',
primary key (sched_name, calendar_name)
) engine=innodb comment = '日历信息表';
-- ----------------------------
-- 7、 存储已暂停的 Trigger 组的信息
-- ----------------------------
create table QRTZ_PAUSED_TRIGGER_GRPS (
sched_name varchar(120) not null comment '调度名称',
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
primary key (sched_name, trigger_group)
) engine=innodb comment = '暂停的触发器表';
-- ----------------------------
-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
-- ----------------------------
create table QRTZ_FIRED_TRIGGERS (
sched_name varchar(120) not null comment '调度名称',
entry_id varchar(95) not null comment '调度器实例id',
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
instance_name varchar(200) not null comment '调度器实例名',
fired_time bigint(13) not null comment '触发的时间',
sched_time bigint(13) not null comment '定时器制定的时间',
priority integer not null comment '优先级',
state varchar(16) not null comment '状态',
job_name varchar(200) null comment '任务名称',
job_group varchar(200) null comment '任务组名',
is_nonconcurrent varchar(1) null comment '是否并发',
requests_recovery varchar(1) null comment '是否接受恢复执行',
primary key (sched_name, entry_id)
) engine=innodb comment = '已触发的触发器表';
-- ----------------------------
-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
-- ----------------------------
create table QRTZ_SCHEDULER_STATE (
sched_name varchar(120) not null comment '调度名称',
instance_name varchar(200) not null comment '实例名称',
last_checkin_time bigint(13) not null comment '上次检查时间',
checkin_interval bigint(13) not null comment '检查间隔时间',
primary key (sched_name, instance_name)
) engine=innodb comment = '调度器状态表';
-- ----------------------------
-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
-- ----------------------------
create table QRTZ_LOCKS (
sched_name varchar(120) not null comment '调度名称',
lock_name varchar(40) not null comment '悲观锁名称',
primary key (sched_name, lock_name)
) engine=innodb comment = '存储的悲观锁信息表';
-- ----------------------------
-- 11、 Quartz集群实现同步机制的行锁表
-- ----------------------------
create table QRTZ_SIMPROP_TRIGGERS (
sched_name varchar(120) not null comment '调度名称',
trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
str_prop_1 varchar(512) null comment 'String类型的trigger的第一个参数',
str_prop_2 varchar(512) null comment 'String类型的trigger的第二个参数',
str_prop_3 varchar(512) null comment 'String类型的trigger的第三个参数',
int_prop_1 int null comment 'int类型的trigger的第一个参数',
int_prop_2 int null comment 'int类型的trigger的第二个参数',
long_prop_1 bigint null comment 'long类型的trigger的第一个参数',
long_prop_2 bigint null comment 'long类型的trigger的第二个参数',
dec_prop_1 numeric(13,4) null comment 'decimal类型的trigger的第一个参数',
dec_prop_2 numeric(13,4) null comment 'decimal类型的trigger的第二个参数',
bool_prop_1 varchar(1) null comment 'Boolean类型的trigger的第一个参数',
bool_prop_2 varchar(1) null comment 'Boolean类型的trigger的第二个参数',
primary key (sched_name, trigger_name, trigger_group),
foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group)
) engine=innodb comment = '同步机制的行锁表';
commit;

1
sql/ry_20240629.sql Normal file
View File

@ -0,0 +1 @@
[session-f44f888a] Repository or file not found