Compare commits

...

46 Commits

Author SHA1 Message Date
神码-方晓辉 f3b302c9fd sync: 同步prod仓库的最新更新
- 新增区域权限过滤功能 (RegionPermissionHelper)
- 修复学生dept_id自动同步逻辑
- 修复学校班级ID精度丢失问题 (雪花ID改为自增)
- 新增SQL迁移脚本 (fix_student_dept_id, production_migrate_school_class_id)
- 更新前端组件 (学生、会员、学校管理)
- 品牌更新: ruoyi -> pangu

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 16:42:53 +08:00
神码-方晓辉 0b528e03d8 docs: 完善需求与系统设计文档、README
- 需求规格说明书:审核状态、修订记录V1.2,验收标准补充系统监控(服务监控)
- 系统设计文档:技术选型(Spring Boot 3.5.x、Sa-Token)、模块划分与 backend 结构一致
- README:项目结构、技术栈、构建与部署说明、系统监控说明

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 10:25:38 +08:00
神码-方晓辉 d6e922cc2f feat: 服务监控接口(OSHI)、菜单删除SQL、前端监控页错误处理
- 新增 /monitor/server 接口:ServerController + ServerVo,OSHI 采集 CPU/内存/JVM/磁盘
- 根 pom 与 pangu-system 增加 oshi-core 依赖
- 前端服务监控页:请求失败时关闭 loading 并提示
- SQL:V1.0.6 应用子菜单、V1.0.7 隐藏系统菜单、V1.0.8 删除系统菜单、V1.0.9 删除租户按钮菜单
- 发布计划与 PROD SQL 变更检查文档、年级/区域等脚本与业务调整

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 10:17:21 +08:00
神码-方晓辉 a9bbb30f99 fix: 业务功能按钮权限统一(v-hasPermi) 2026-02-05 15:48:07 +08:00
神码-方晓辉 e04cf47bdf feat: 会员区域字段、管理后台区域编辑与列表展示;分公司账号密码重置脚本;业务按钮权限修复方案 2026-02-05 15:11:24 +08:00
神码-方晓辉 add00c9992 feat: 新增学校自动添加年级 + 修复区域层级查询 + 清理区域数据
1. 新增学校时根据学段自动添加对应年级
2. 修复选择省/市时无法显示学校的bug(支持区域层级查询)
3. 区域树默认展开湖北省,平行显示市级
4. 新增区域数据清理SQL脚本(仅保留湖北省)
2026-02-05 11:21:58 +08:00
神码-方晓辉 72cb6668f3 年级管理增加学段字段(小学/初中/高中/中专/大学) 2026-02-05 10:16:30 +08:00
神码-方晓辉 80dd406f8c feat: 新增OpenApi基础数据接口 + 学生完整数据接口 + UI文案优化
1. OpenApi新增接口:
   - /open/api/student/listFull: 学生列表完整数据(不脱敏)
   - /open/api/base/school/*: 学校查询接口(直接调用内部Service)
   - /open/api/base/grade/*: 年级查询接口
   - /open/api/base/class/*: 班级查询接口

2. 新增OpenApi专用VO:
   - OpenSchoolVo, OpenGradeVo, OpenClassVo

3. 数据库脚本:
   - V1.0.3__open_api_dict.sql: 接口字典数据

4. 前端文案优化:
   - 将"教育身份"统一改为"任教信息"
2026-02-05 09:55:04 +08:00
神码-方晓辉 1a0b75e437 docs: 同步需求与技术方案文档 2026-02-04 10:32:02 +08:00
神码-方晓辉 6027a8c5df refactor: 修改后端欢迎语为盘古后台管理系统 2026-02-03 22:36:52 +08:00
神码-方晓辉 1d30e82a2d fix: 修复H5添加学生数据权限和学校树节点ID冲突问题
1. H5添加/编辑学生时同步设置 dept_id
2. 学校树节点ID添加类型前缀防止冲突
3. 前端使用正确的ID字段进行查询
2026-02-03 22:23:38 +08:00
神码-方晓辉 998d9aee35 fix: 修复学生管理数据权限问题
使用带 @DataPermission 注解的查询方法
2026-02-03 22:11:54 +08:00
神码-方晓辉 730f27c55e fix: 修复数据权限和操作日志IP记录问题
1. 学校管理使用带数据权限的查询方法
2. 修复操作日志IP地址无法记录的问题(异步线程获取不到请求上下文)
2026-02-03 22:07:11 +08:00
神码-方晓辉 6f47adf86e feat: 数据权限功能实现 - 学校作为部门节点
1. 学校/年级/班级/学生表增加 dept_id 字段
2. 添加 @DataPermission 数据权限注解
3. 学校创建时自动创建对应部门
4. 学校编辑对话框增加上级部门选择
5. 修复用户管理部门列显示问题
2026-02-03 21:45:14 +08:00
神码-方晓辉 57b171503d refactor: 前端目录重命名 pangu-ui -> frontend
- 统一前端目录命名规范
- 更新相关文档引用
2026-02-03 20:56:15 +08:00
神码-方晓辉 ad434b8414 refactor: 作者信息统一改为 pangu
- 替换"湖北新华业务中台研发团队"为"pangu"
- 更新相关文档中的团队和规范名称
2026-02-03 20:50:11 +08:00
神码-方晓辉 c2a3997e89 refactor: 品牌名称 若依 -> 盘古
- 更新文档、注释、配置中的"若依"为"盘古"
- 涉及文件:规则文件、运维文档、代码注释、package.json等
2026-02-03 20:48:55 +08:00
神码-方晓辉 9128118cbf refactor: 后端目录重命名 ruoyi -> pangu
- ruoyi-admin -> pangu-admin
- ruoyi-common -> pangu-common (含所有子模块)
- ruoyi-extend -> pangu-extend (含所有子模块)
- ruoyi-modules -> pangu-modules (含所有子模块)
- 更新所有 pom.xml 中的 artifactId 和依赖引用
- 更新 build.sh 和相关文档
2026-02-03 20:47:45 +08:00
神码-方晓辉 086c0a0988 refactor: 前端目录重命名及配置优化
- frontend/ruoyi-ui 重命名为 frontend/pangu-ui
- 修改系统标题为"盘古用户认证中心"
- 开启验证码功能
- 移除登录页默认账号密码
2026-02-03 20:37:48 +08:00
神码-方晓辉 0c607378e9 chore: 统一 author 为 pangu 2026-02-03 20:26:45 +08:00
神码-方晓辉 6b56c831cb fix: 优化教育身份操作日志描述
日志描述改为:学校 / 年级 / 班级 / 学科
2026-02-03 20:18:22 +08:00
神码-方晓辉 14f42f6b69 feat: 新增会员操作日志功能
1. 新增 pg_member_log 表记录会员操作
2. 新增操作类型枚举 MemberOperType
3. 新增 PgMemberLogService 记录和查询日志
4. 在以下操作位置添加日志记录:
   - 用户登录
   - 修改密码
   - 修改用户信息
   - 新增/修改/删除教育身份
   - 切换教育身份
   - 新增/修改/解绑亲子关系
5. 新增 H5 查询操作日志 API
2026-02-03 20:10:04 +08:00
神码-方晓辉 5de0f3ed50 fix: 短信登录不再校验图形验证码
发送短信时已经验证过图形验证码,登录时无需再次验证。
避免用户输入两次图形验证码,提升体验。
2026-02-03 19:01:04 +08:00
神码-方晓辉 d543b868b1 docs: 添加H5前端同步变更记录(附录C)
- 注册流程简化
- 教育身份改为数组
- 基础数据前端缓存策略
2026-02-03 17:56:38 +08:00
神码-方晓辉 8ba5e3e174 perf: 学校管理页面区域树默认折叠
移除 default-expand-all,减少首次渲染节点数量
2026-02-03 17:43:29 +08:00
神码-方晓辉 d0d0f0ee6d perf: 所有基础数据下拉统一使用 Store 缓存
修改以下组件使用 baseDataStore:
- business/school/components/GradeDialog.vue (年级)
- business/school/components/ClassDialog.vue (班级)
- school/index.vue (区域树)
- school/components/GradeDialog.vue (年级)
- school/components/ClassDialog.vue (年级+班级)
- member/components/MemberDialog.vue (区域树)

登录后预加载数据,后续全部命中缓存
2026-02-03 17:40:59 +08:00
神码-方晓辉 e8489536d6 fix: 每次登录后强制刷新基础数据
fetchXxx(true) 传入 force=true,确保登录后拉取最新数据
2026-02-03 17:36:31 +08:00
神码-方晓辉 81b1d5327b perf: 其他页面使用 Store 缓存基础数据
- EducationDialog.vue: 区域树、学科列表使用 Store
- school/index.vue: 区域树使用 Store

所有基础数据调用统一使用 Store,命中缓存后秒加载
2026-02-03 17:25:10 +08:00
神码-方晓辉 4243f6581d perf: 登录后预加载基础数据,区域管理使用 Store 缓存
- permission.js: 登录后并行预加载年级/学科/区域/班级数据
- region/index.vue: 使用 Store 缓存,避免每次请求 1MB 数据
- 第二次进入页面秒开,无需重复请求
2026-02-03 17:23:27 +08:00
神码-方晓辉 24625133e3 perf: 优化区域管理页面性能
- 使用后端 /region/tree 接口,避免前端递归构建树
- 默认折叠树节点,减少 DOM 渲染
2026-02-03 17:17:28 +08:00
神码-方晓辉 124013703f feat: 基础数据前端缓存 - 使用 Pinia Store 实现
- 新建 baseData Store,缓存年级/学科/区域/班级数据
- 支持 localStorage 持久化,24小时过期
- 编辑/删除操作自动清除对应缓存
- 修改四个管理页面(grade/subject/region/class)使用 Store
2026-02-03 17:14:58 +08:00
神码-方晓辉 bf67282825 feat: 学生管理页面展示多会员绑定信息
- 列表页"归属用户"列:单人显示昵称/手机号,多人显示"N人绑定"并用tooltip展示详情
- 编辑弹窗:使用Tag组件展示所有绑定的会员信息
2026-02-03 17:04:07 +08:00
神码-方晓辉 df1f2932c4 feat: 学生多会员绑定重构 - 支持一个学生被多个会员绑定
主要变更:
1. 新建 pg_member_student 关联表,实现学生与会员的多对多关系
2. 移除 pg_student.member_id 字段
3. 后端服务层全部改用关联表查询和操作
4. H5 接口支持 relation 字段(父亲/母亲/其他)
5. 前端学生选择弹窗显示已绑定会员数量
6. 更新需求文档
2026-02-03 16:56:18 +08:00
神码-方晓辉 729f2c71f1 feat: 会员教育信息重构 - 支持多教育身份管理
主要变更:
1. 去掉身份类型字段,会员与教育信息改为一对多关系
2. 新增 pg_education 表及相关实体、服务
3. 管理后台支持添加、编辑、删除多个教育身份
4. 新增会员时支持一次性保存会员信息、教育身份、亲子关系
5. 修复学生选择弹窗学校年级班级不显示问题
6. 添加区域路径接口用于级联选择器回显
2026-02-03 16:35:57 +08:00
神码-方晓辉 acdade6725 feat: 添加微信登录接口和技术方案文档 2026-02-03 15:31:56 +08:00
神码-方晓辉 f0d8a6c571 feat: H5教育身份接口增加省市区信息返回
- 修改 H5EducationVo 添加省市区字段
- 修改 H5MemberServiceImpl 的 buildEducationVo 方法,从学校的regionId解析省市区信息
- 保存教育身份时自动从学校获取regionId保存到会员表
- 添加日志记录省市区信息便于调试
- 更新 pangu-project.mdc 文档,添加 build.sh 工具使用说明
- 优化管理后台会员和学生相关组件
2026-02-03 11:53:55 +08:00
神码-方晓辉 e35b4098e6 v1.0.1 2026-02-03 09:45:55 +08:00
神码-方晓辉 dab220d0a2 feat: 添加Swagger UI支持
- pom.xml: 添加springdoc-openapi-starter-webmvc-ui依赖
- application.yml: 添加swagger-ui路径排除配置
- application.yml: 添加H5模块到API分组
- vite.config.js: 添加Swagger代理配置
2026-02-03 09:25:37 +08:00
神码-方晓辉 dcadd41e2b fix: 修复H5登录Token校验问题,添加测试报告
问题修复:
- H5AuthServiceImpl: 登录时设置extra信息(tenantId,userId,userName,clientid)
- SecurityConfig: H5设备跳过clientId校验,避免NPE

测试文档:
- 新增 docs/03-测试文档/H5接口测试报告.md
- 覆盖基础数据、认证、会员模块共16个测试用例
- 测试手机号: 15889762069
- 真实短信发送测试通过
2026-02-02 22:11:15 +08:00
神码-方晓辉 1ae754e56c docs: 补充短信模板内容
- 登录模板: 【湖北新华教育服务平台】您正在申请登录,验证码为:${code}
- 注册模板: 【湖北新华教育服务平台】您正在申请注册,验证码为:${code}
2026-02-02 21:56:19 +08:00
神码-方晓辉 e98fe86124 feat: 配置阿里云短信服务参数
从192.168.71.56服务器nacos获取阿里云短信配置:
- AccessKey: LTAI5tQLorTxf9Fzzh93pfGN
- 签名: 湖北新华教育服务平台
- 登录模板: SMS_461020580
- 注册模板: SMS_473140005

更新文件:
- application-dev.yml: 写入阿里云AccessKey和签名
- application.yml: 配置短信模板ID
- 技术方案文档: 更新阿里云账号和模板信息
2026-02-02 21:54:05 +08:00
神码-方晓辉 e13c9a7de3 docs: 完善阿里云短信配置说明
配置文件更新:
- application-dev.yml: 优化阿里云短信配置,添加环境变量支持
- application.yml: 完善H5短信配置注释,分组显示

文档更新:
- 添加阿里云准备工作步骤
- 添加短信模板示例
- 添加环境变量配置说明(推荐生产环境使用)
2026-02-02 21:51:07 +08:00
神码-方晓辉 0b35da7f85 docs: 添加H5接口Swagger文档注解
Controller层:
- H5AuthController: 添加详细的接口说明、参数说明、返回值说明
- H5MemberController: 添加认证要求、操作说明
- H5BaseDataController: 添加数据获取流程说明

DTO/VO层:
- 所有字段添加@Schema注解,包含描述、示例值、枚举值等
- 标注必填/选填、数据格式要求

其他:
- 统一作者为pangu
2026-02-02 21:48:36 +08:00
神码-方晓辉 a47536315b docs: 更新H5接口文档,添加短信防刷配置说明 2026-02-02 21:44:46 +08:00
神码-方晓辉 5fe9d1117f feat: 增强H5短信接口防刷机制
新增配置类 H5SmsProperties,支持以下配置项:
- enabled: 是否启用短信发送(测试模式)
- code-length: 验证码长度
- code-expire-minutes: 验证码有效期
- send-interval-seconds: 同手机号发送间隔
- daily-limit-per-phone: 手机号每日上限
- minute-limit-per-ip: IP每分钟上限
- daily-limit-per-ip: IP每日上限
- blacklist-minutes: 黑名单封禁时长
- blacklist-trigger-count: 触发黑名单的失败次数
- sms-config-name: 短信配置名称
- login/register-template-id: 短信模板ID

防刷策略:
1. 图形验证码校验
2. 手机号黑名单检查
3. IP黑名单检查
4. 发送间隔限制
5. 手机号每日上限
6. IP每分钟上限
7. IP每日上限
8. 验证码连续失败自动封禁
2026-02-02 21:43:38 +08:00
神码-方晓辉 905e263ca8 feat: 新增H5会员管理接口模块
需求文档:
- 新增H5会员接口需求与技术方案文档

认证模块(/h5/auth):
- 图形验证码获取
- 阿里云短信验证码发送
- 密码登录
- 短信验证码登录
- 会员注册
- Token刷新
- 退出登录

会员模块(/h5/member):
- 获取会员信息
- 修改会员信息(昵称/性别/生日)
- 修改密码
- 教育身份管理(教师)
- 学生绑定管理(家长/教师均可)

基础数据模块(/h5/base):
- 区域树查询
- 学校列表查询
- 年级列表查询
- 班级列表查询
- 学科列表查询

安全配置:
- 放行H5公开接口(/h5/auth/**、/h5/base/**)
2026-02-02 21:39:12 +08:00
1318 changed files with 20402 additions and 2771 deletions

View File

@ -6,15 +6,15 @@ alwaysApply: true
# 盘古用户平台Pangu User Platform项目规范
> **项目路径**`/Users/felix/hbxhWorkSpace/pangu-user-platform`
> **项目路径**`/Users/felix/pgWorkSpace/pangu-user-platform`
>
> **重要声明**:本规范仅适用于 pangu-user-platform 项目,不受外部工程目录(如 `/Users/felix/hbxhWorkSpace/.cursorrules`)中其他规范的影响。当本规范与外部规范冲突时,以本规范为准。
> **重要声明**:本规范仅适用于 pangu-user-platform 项目,不受外部工程目录(如 `/Users/felix/pgWorkSpace/.cursorrules`)中其他规范的影响。当本规范与外部规范冲突时,以本规范为准。
## 作者规范(必须遵守)
> ⚠️ **强制要求**:本项目所有代码、文档、脚本的作者**必须**使用 **pangu**
>
> **不要使用**湖北新华业务中台研发团队、个人姓名、英文名或其他任何名称
> **不要使用**pangu、个人姓名、英文名或其他任何名称
| 位置 | 作者写法 |
|------|----------|
@ -51,7 +51,7 @@ public class SchoolService { }
## 技术栈
### 前端(ruoyi-ui
### 前端(frontend
- Vue 3.5.x + Element Plus 2.13.x + Vite 6.x
- 基于 RuoYi-Vue3 框架
@ -59,9 +59,9 @@ public class SchoolService { }
- Spring Boot 3.3.x + JDK 17+
- 基于 RuoYi-Vue 框架
## API 接口规范(若依做法)
## API 接口规范(盘古做法)
本项目采用若依(RuoYi)框架推荐的 API 前缀规范:
本项目采用盘古(RuoYi)框架推荐的 API 前缀规范:
### 规则说明
@ -221,6 +221,46 @@ return dataInfo;
}
```
## 构建工具build.sh
后端项目提供了快速编译打包脚本,位于 `backend/build.sh`,支持多种编译模式。
### 常用命令
| 命令 | 说明 | 耗时 |
|------|------|------|
| `./build.sh -q` | 快速编译,仅检查语法错误 | ~4秒 |
| `./build.sh -p` | 增量打包(默认) | ~4秒 |
| `./build.sh -f` | 全量编译clean + package | ~30秒 |
| `./build.sh -m pangu-business` | 仅编译业务模块 | 更快 |
| `./build.sh -r` | 增量打包并重启后端 | ~27秒 |
| `./build.sh -m pangu-business -r` | 编译业务模块并重启 | ~27秒 |
| `./build.sh -c` | 仅清理 target 目录 | - |
| `./build.sh -h` | 显示帮助信息 | - |
### 开发建议
1. **日常开发**:修改代码后用 `-q` 快速检查语法错误
2. **本地测试**:用 `-r` 编译并重启服务
3. **仅改某模块**:用 `-m` 指定模块,加快编译速度
4. **部署前**:用 `-f` 全量编译确保干净
### 示例
```bash
# 进入后端目录
cd backend
# 快速检查语法
./build.sh -q
# 修改 pangu-business 模块后编译并重启
./build.sh -m pangu-business -r
# 全量编译
./build.sh -f
```
## 业务模块
| 模块 | 路径 | 说明 |

View File

@ -2,7 +2,7 @@
> 统一用户管理系统 - 面向教育行业的用户管理平台
>
> **作者**: 湖北新华业务中台研发团队
> **作者**: pangu
---
@ -10,46 +10,38 @@
```
pangu-user-platform/ # 项目根目录
├── pom.xml # ⭐ Maven父项目配置 (必须在根目录)
├── README.md # 项目说明文档
├── backend/ # 后端代码
├── backend/ # 后端代码 (RuoYi-Vue-Plus 5.5.x)
│ ├── README.md # 后端构建说明 (重要!)
│ ├── pangu-admin/ # 启动模块 (Spring Boot)
│ └── pom.xml # 子模块配置
│ ├── pangu-common/ # 公共模块 (工具类、常量)
│ └── pom.xml
├── pangu-framework/ # 框架模块 (配置、拦截器)
│ │ └── pom.xml
├── pangu-system/ # 业务模块 (学校、会员、学生、应用)
│ │ └── pom.xml
│ ├── sql/ # 数据库脚本
└── scripts/ # 运维脚本
├── frontend/ # 前端代码
│ └── ruoyi-ui/ # Vue3 + Element Plus + Vite
├── package.json # 前端依赖配置
└── README.md # 前端使用说明
│ ├── pom.xml # 后端父 POM
├── pangu-admin/ # 启动与认证入口 (Spring Boot)
│ ├── pangu-common/ # 公共模块 (core/redis/security/satoken 等)
├── pangu-modules/ # 业务与系统模块
│ ├── pangu-system/ # 系统 (用户/角色/菜单/部门/字典/监控)
│ │ ├── pangu-business/ # 业务 (学校/会员/学生/应用/基础数据/H5/开放API)
│ ├── pangu-generator/ # 代码生成
│ │ └── pangu-job/ # 定时任务
│ ├── pangu-extend/ # 扩展 (Monitor Admin、SnailJob Server 等)
├── script/ # 数据库脚本等
│ └── 各模块 pom.xml
├── frontend/ # 管理后台前端 (Vue3 + Element Plus + Vite)
│ ├── package.json
└── src/
└── docs/ # 项目文档
├── 01-需求文档/
├── 02-系统设计/
├── 03-数据库设计/
├── 04-接口文档/
├── 05-前端UI规范/
├── 05-技术方案/
├── 05-模块技术方案/
├── 05-前端UI规范/、05-技术方案/、05-模块技术方案/
├── 06-测试文档/
└── 07-运维文档/
```
### 📌 重要说明
**根目录的 `pom.xml` 为什么不在 backend 目录?**
这是 Maven 多模块项目的标准结构:
- 根 `pom.xml` 是**父项目配置**,管理所有子模块
- Maven 构建**必须从根目录**执行: `mvn clean package`
- 不要移动到 backend 目录,否则构建会失败
详细说明请查看: [backend/README.md](backend/README.md)
- **后端构建**:在 `backend` 目录执行 `mvn clean package -DskipTests -pl pangu-admin -am`,生成 `pangu-admin/target/pangu-admin.jar`
- **前端构建**:在 `frontend` 目录执行 `npm run build:prod`,产出 `dist/`
- 详细说明请查看: [backend/README.md](backend/README.md)
---
@ -81,7 +73,7 @@ mvn spring-boot:run
```bash
# 进入前端目录
cd frontend/ruoyi-ui
cd frontend
# 安装依赖
npm install
@ -90,7 +82,7 @@ npm install
npm run dev
```
**访问地址**: `http://localhost:80`
**访问地址**: 以 vite 配置为准(如 `http://localhost:80`
**默认账号**: admin / admin123
@ -102,13 +94,12 @@ npm run dev
| 技术 | 说明 | 版本 |
|------|------|------|
| Spring Boot | 基础框架 | 2.7.18 |
| Spring Security | 安全框架 | 5.7.x |
| Spring Boot | 基础框架 | 3.5.x |
| Sa-Token | 认证与权限 | 1.44.x |
| MyBatis-Plus | ORM框架 | 3.5.x |
| MySQL | 数据库 | 8.0.x |
| Redis | 缓存 | 6.0.x |
| JWT | 认证 | 0.9.1 |
| Druid | 连接池 | 1.2.x |
| MySQL | 数据库 | 8.0+ |
| Redis / Redisson | 缓存 | 6.0+ |
| RuoYi-Vue-Plus | 基础框架 | 5.5.x |
### 前端技术
@ -140,7 +131,7 @@ npm run dev
- 用户认证 (手机号+密码/验证码/微信)
- 权限管理 (超级管理员/分公司用户/学校用户)
- 数据权限 (按区域/学校隔离)
- 系统监控 (在线用户、日志、缓存)
- 系统监控 (在线用户、登录/操作日志、**服务监控**CPU/内存/JVM/磁盘)、缓存监控)
---
@ -165,7 +156,7 @@ npm run dev
- 遵循 `/.cursorrules` 中定义的团队规范
- 注释使用中文,变量名使用英文
- 所有代码作者统一标注: **湖北新华业务中台研发团队**
- 所有代码作者统一标注: **pangu**
### Git提交规范
@ -237,8 +228,8 @@ java -jar target/pangu-admin.jar
### 前端部署
```bash
cd frontend/ruoyi-ui
npm run build
cd frontend
npm run build:prod
# 将 dist/ 目录部署到 Nginx
```
@ -264,7 +255,7 @@ npm run build
## 👥 团队
**开发团队**: 湖北新华业务中台研发团队
**开发团队**: pangu
---
@ -274,4 +265,4 @@ npm run build
---
*最后更新: 2026-02-02*
*最后更新: 2026-02-05*

View File

@ -3,17 +3,17 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-vue-plus</artifactId>
<artifactId>pangu-vue-plus</artifactId>
<version>5.5.3</version>
<packaging>pom</packaging>
<name>RuoYi-Vue-Plus</name>
<description>Dromara RuoYi-Vue-Plus多租户管理系统</description>
<url>https://gitee.com/dromara/RuoYi-Vue-Plus</url>
<modules>
<module>ruoyi-admin</module>
<module>ruoyi-common</module>
<module>ruoyi-extend</module>
<module>ruoyi-modules</module>
<module>pangu-admin</module>
<module>pangu-common</module>
<module>pangu-extend</module>
<module>pangu-modules</module>
</modules>
<properties>
<spring-boot-admin.version>3.5.6</spring-boot-admin.version>
@ -28,6 +28,7 @@
<mapstruct-plus.version>1.5.0</mapstruct-plus.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<fastjson.version>1.2.83</fastjson.version>
<oshi.version>6.4.0</oshi.version>
<skipTests>true</skipTests>
<anyline.version>8.7.3-20251210</anyline.version>
<therapi-javadoc.version>0.15.0</therapi-javadoc.version>
@ -71,7 +72,7 @@
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-bom</artifactId>
<artifactId>pangu-common-bom</artifactId>
<version>5.5.3</version>
<type>pom</type>
<scope>import</scope>
@ -81,6 +82,11 @@
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>${springdoc.version}</version>
</dependency>
<dependency>
<groupId>com.github.therapi</groupId>
<artifactId>therapi-runtime-javadoc</artifactId>
@ -232,6 +238,11 @@
<artifactId>ip2region</artifactId>
<version>${ip2region.version}</version>
</dependency>
<dependency>
<groupId>com.github.oshi</groupId>
<artifactId>oshi-core</artifactId>
<version>${oshi.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
@ -239,27 +250,27 @@
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
<artifactId>pangu-system</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-job</artifactId>
<artifactId>pangu-job</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-generator</artifactId>
<artifactId>pangu-generator</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-demo</artifactId>
<artifactId>pangu-demo</artifactId>
<version>5.5.3</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-workflow</artifactId>
<artifactId>pangu-workflow</artifactId>
<version>5.5.3</version>
</dependency>
</dependencies>

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2019 RuoYi-Vue-Plus
Copyright (c) 2019 PanGu
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@ -22,8 +22,8 @@
> 系统演示: [传送门](https://plus-doc.dromara.org/#/common/demo_system)
> 官方前端项目地址: [gitee](https://gitee.com/JavaLionLi/plus-ui) - [github](https://github.com/JavaLionLi/plus-ui) - [gitcode](https://gitcode.com/dromara/plus-ui)<br>
> 成员前端项目地址: 基于vben5 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5)<br>
> 成员前端项目地址: 基于soybean [ruoyi-plus-soybean](https://gitee.com/xlsea/ruoyi-plus-soybean)<br>
> 成员前端项目地址: 基于vben5 [pangu-plus-vben5](https://gitee.com/dapppp/pangu-plus-vben5)<br>
> 成员前端项目地址: 基于soybean [pangu-plus-soybean](https://gitee.com/xlsea/pangu-plus-soybean)<br>
> 成员项目地址: 删除多租户与工作流 [RuoYi-Vue-Plus-Single](https://gitee.com/ColorDreams/RuoYi-Vue-Plus-Single)<br>
> 文档地址: [plus-doc](https://plus-doc.dromara.org) 国内加速: [plus-doc.top](https://plus-doc.top)
@ -124,14 +124,14 @@ Topiam IAM/IDaaS身份管理平台 - https://www.topiam.cn/ <br>
使用框架前请仔细阅读文档重点注意事项
<br>
>[初始化项目 必看](https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/init)
>>[https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/init](https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/init)
>[初始化项目 必看](https://plus-doc.dromara.org/#/pangu-vue-plus/quickstart/init)
>>[https://plus-doc.dromara.org/#/pangu-vue-plus/quickstart/init](https://plus-doc.dromara.org/#/pangu-vue-plus/quickstart/init)
>
>[专栏与视频 入门必看](https://plus-doc.dromara.org/#/common/column)
>>[https://plus-doc.dromara.org/#/common/column](https://plus-doc.dromara.org/#/common/column)
>
>[部署项目 必看](https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/deploy)
>>[https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/deploy](https://plus-doc.dromara.org/#/ruoyi-vue-plus/quickstart/deploy)
>[部署项目 必看](https://plus-doc.dromara.org/#/pangu-vue-plus/quickstart/deploy)
>>[https://plus-doc.dromara.org/#/pangu-vue-plus/quickstart/deploy](https://plus-doc.dromara.org/#/pangu-vue-plus/quickstart/deploy)
>
>[如何加群](https://plus-doc.dromara.org/#/common/add_group)
>>[https://plus-doc.dromara.org/#/common/add_group](https://plus-doc.dromara.org/#/common/add_group)

View File

@ -2,7 +2,7 @@
# ============================================================
# 脚本名称build.sh
# 功能说明:快速编译打包后端项目,支持多线程、增量、模块化编译
# 作 者:湖北新华业务中台研发团队
# 作 者:pangu
# 创建时间2026-02-02
# ============================================================
#
@ -144,11 +144,11 @@ restart_backend() {
print_info "重启后端服务..."
# 停止当前运行的服务
pkill -f "ruoyi-admin.jar" 2>/dev/null || true
pkill -f "pangu-admin.jar" 2>/dev/null || true
sleep 2
# 检查 jar 包是否存在
local jar_file="$PROJECT_DIR/ruoyi-admin/target/ruoyi-admin.jar"
local jar_file="$PROJECT_DIR/pangu-admin/target/pangu-admin.jar"
if [ ! -f "$jar_file" ]; then
print_error "找不到 jar 包: $jar_file"
print_warn "请先运行 ./build.sh -p 或 ./build.sh -f 进行打包"
@ -156,7 +156,7 @@ restart_backend() {
fi
# 启动服务
nohup java -jar "$jar_file" > /tmp/ruoyi-admin.log 2>&1 &
nohup java -jar "$jar_file" > /tmp/pangu-admin.log 2>&1 &
print_info "后端启动中,等待服务就绪..."
# 等待服务启动
@ -171,7 +171,7 @@ restart_backend() {
retry=$((retry + 1))
done
print_error "后端服务启动超时,请检查日志: /tmp/ruoyi-admin.log"
print_error "后端服务启动超时,请检查日志: /tmp/pangu-admin.log"
exit 1
}

View File

@ -4,11 +4,11 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-vue-plus</artifactId>
<artifactId>pangu-vue-plus</artifactId>
<version>5.5.3</version>
</parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-admin</artifactId>
<artifactId>pangu-admin</artifactId>
<version>5.5.3</version>
<description>web服务入口</description>
<dependencies>
@ -18,39 +18,39 @@
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-doc</artifactId>
<artifactId>pangu-common-doc</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-social</artifactId>
<artifactId>pangu-common-social</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-ratelimiter</artifactId>
<artifactId>pangu-common-ratelimiter</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mail</artifactId>
<artifactId>pangu-common-mail</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
<artifactId>pangu-system</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-job</artifactId>
<artifactId>pangu-job</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-generator</artifactId>
<artifactId>pangu-generator</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-demo</artifactId>
<artifactId>pangu-demo</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-workflow</artifactId>
<artifactId>pangu-workflow</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>

View File

@ -3,13 +3,13 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ruoyi-vue-plus</artifactId>
<artifactId>pangu-vue-plus</artifactId>
<groupId>org.dromara</groupId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>ruoyi-admin</artifactId>
<artifactId>pangu-admin</artifactId>
<description>
web服务入口
@ -47,50 +47,50 @@
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-doc</artifactId>
<artifactId>pangu-common-doc</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-social</artifactId>
<artifactId>pangu-common-social</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-ratelimiter</artifactId>
<artifactId>pangu-common-ratelimiter</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mail</artifactId>
<artifactId>pangu-common-mail</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-system</artifactId>
<artifactId>pangu-system</artifactId>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-job</artifactId>
<artifactId>pangu-job</artifactId>
</dependency>
<!-- 代码生成-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-generator</artifactId>
<artifactId>pangu-generator</artifactId>
</dependency>
<!-- demo模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-demo</artifactId>
<artifactId>pangu-demo</artifactId>
</dependency>
<!-- 工作流模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-workflow</artifactId>
<artifactId>pangu-workflow</artifactId>
</dependency>
<!-- 盘古业务模块 -->

View File

@ -7,7 +7,7 @@ import org.springframework.boot.context.metrics.buffering.BufferingApplicationSt
/**
* 启动程序
*
* @author Lion Li
* @author pangu
*/
@SpringBootApplication

View File

@ -6,7 +6,7 @@ import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
/**
* web容器中进行部署
*
* @author Lion Li
* @author pangu
*/
public class DromaraServletInitializer extends SpringBootServletInitializer {

View File

@ -58,7 +58,7 @@ import java.util.concurrent.TimeUnit;
/**
* 认证
*
* @author Lion Li
* @author pangu
*/
@Slf4j
@SaIgnore

View File

@ -40,7 +40,7 @@ import java.util.LinkedHashMap;
/**
* 验证码操作处理
*
* @author Lion Li
* @author pangu
*/
@SaIgnore
@Slf4j

View File

@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RestController;
/**
* 首页
*
* @author Lion Li
* @author pangu
*/
@SaIgnore
@RequiredArgsConstructor
@ -22,7 +22,7 @@ public class IndexController {
*/
@GetMapping("/")
public String index() {
return StringUtils.format("欢迎使用{}后台管理框架,请通过前端地址访问。", SpringUtils.getApplicationName());
return "欢迎使用盘古后台管理系统,请通过前端地址访问。";
}
}

View File

@ -5,7 +5,7 @@ import lombok.Data;
/**
* 验证码信息
*
* @author Michelle.Chung
* @author pangu
*/
@Data
public class CaptchaVo {

View File

@ -7,7 +7,7 @@ import java.util.List;
/**
* 登录租户对象
*
* @author Michelle.Chung
* @author pangu
*/
@Data
public class LoginTenantVo {

View File

@ -6,7 +6,7 @@ import lombok.Data;
/**
* 登录验证信息
*
* @author Michelle.Chung
* @author pangu
*/
@Data
public class LoginVo {

View File

@ -7,7 +7,7 @@ import lombok.Data;
/**
* 租户列表
*
* @author Lion Li
* @author pangu
*/
@Data
@AutoMapper(target = SysTenantVo.class)

View File

@ -27,7 +27,7 @@ import java.time.Duration;
/**
* 用户行为 侦听器的实现
*
* @author Lion Li
* @author pangu
*/
@RequiredArgsConstructor
@Component

View File

@ -10,7 +10,7 @@ import org.dromara.web.domain.vo.LoginVo;
/**
* 授权策略
*
* @author Michelle.Chung
* @author pangu
*/
public interface IAuthStrategy {

View File

@ -43,7 +43,7 @@ import java.util.function.Supplier;
/**
* 登录校验方法
*
* @author Lion Li
* @author pangu
*/
@RequiredArgsConstructor
@Slf4j

View File

@ -27,7 +27,7 @@ import org.springframework.stereotype.Service;
/**
* 注册校验方法
*
* @author Lion Li
* @author pangu
*/
@RequiredArgsConstructor
@Service

View File

@ -33,7 +33,7 @@ import org.springframework.stereotype.Service;
/**
* 邮件认证策略
*
* @author Michelle.Chung
* @author pangu
*/
@Slf4j
@Service("email" + IAuthStrategy.BASE_NAME)

View File

@ -36,7 +36,7 @@ import org.springframework.stereotype.Service;
/**
* 密码认证策略
*
* @author Michelle.Chung
* @author pangu
*/
@Slf4j
@Service("password" + IAuthStrategy.BASE_NAME)

View File

@ -33,7 +33,7 @@ import org.springframework.stereotype.Service;
/**
* 短信认证策略
*
* @author Michelle.Chung
* @author pangu
*/
@Slf4j
@Service("sms" + IAuthStrategy.BASE_NAME)

View File

@ -36,7 +36,7 @@ import java.util.Optional;
/**
* 第三方授权策略
*
* @author thiszhc is 三三
* @author pangu
*/
@Slf4j
@Service("social" + IAuthStrategy.BASE_NAME)

View File

@ -29,7 +29,7 @@ import org.springframework.stereotype.Service;
/**
* 小程序认证策略
*
* @author Michelle.Chung
* @author pangu
*/
@Slf4j
@Service("xcx" + IAuthStrategy.BASE_NAME)

View File

@ -153,37 +153,32 @@ mail:
# Socket连接超时值单位毫秒缺省值不超时
connectionTimeout: 0
--- # sms 短信 支持 阿里云 腾讯云 云片 等等各式各样的短信服务商
# https://sms4j.com/doc3/ 差异配置文档地址 支持单厂商多配置,可以配置多个同时使用
--- # sms 短信服务配置(阿里云)
# 文档: https://sms4j.com/doc3/
# 阿里云短信控制台: https://dysms.console.aliyun.com/
sms:
# 配置源类型用于标定配置来源(interface,yaml)
# 配置源类型: yaml(配置文件) 或 interface(接口配置)
config-type: yaml
# 用于标定yml中的配置是否开启短信拦截接口配置不受此限制
# 是否开启短信拦截(框架层面的限制)
restricted: true
# 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效
# 单手机号每分钟最大发送次数
minute-max: 1
# 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效
# 单手机号每日最大发送次数
account-max: 30
# 以下配置来自于 org.dromara.sms4j.provider.config.BaseConfig类中
blends:
# 唯一ID 用于发送短信寻找具体配置 随便定义别用中文即可
# 可以同时存在两个相同厂商 例如: ali1 ali2 两个不同的阿里短信账号 也可用于区分租户
config1:
# 框架定义的厂商名称标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
# ============================================================
# 阿里云短信配置H5接口使用
# 配置名称 "alibaba" 与 h5.sms.sms-config-name 对应
# ============================================================
alibaba:
# 厂商标识(固定值)
supplier: alibaba
# 有些称为accessKey有些称之为apiKey也有称为sdkKey或者appId。
access-key-id: 您的accessKey
# 称为accessSecret有些称之为apiSecret
access-key-secret: 您的accessKeySecret
signature: 您的短信签名
sdk-app-id: 您的sdkAppId
config2:
# 厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
supplier: tencent
access-key-id: 您的accessKey
access-key-secret: 您的accessKeySecret
signature: 您的短信签名
sdk-app-id: 您的sdkAppId
# AccessKey ID
access-key-id: LTAI5tQLorTxf9Fzzh93pfGN
# AccessKey Secret
access-key-secret: NhBZGwac5vvWg60R0Y4UndTsKK4zuh
# 短信签名
signature: 湖北新华教育服务平台
--- # 三方授权

View File

@ -22,7 +22,7 @@ server:
captcha:
# 是否启用验证码校验
enable: false
enable: true
# 验证码类型 math 数组计算 char 字符验证
type: math
# 数字验证码位数
@ -115,7 +115,18 @@ security:
- /error
- /*/api-docs
- /*/api-docs/**
- /v3/api-docs
- /v3/api-docs/**
- /swagger-ui/**
- /swagger-ui.html
- /swagger-resources/**
- /webjars/**
- /warm-flow-ui/config
# H5公开接口
- /h5/auth/**
- /h5/base/**
# 开放API应用签名鉴权不走登录
- /open/api/**
# 多租户配置
tenant:
@ -197,15 +208,17 @@ springdoc:
url: https://gitee.com/dromara/RuoYi-Vue-Plus
#这里定义了两个分组,可定义多个,也可以不定义
group-configs:
- group: 1.演示模块
- group: 1.H5会员接口
packages-to-scan: org.dromara.pangu.h5
- group: 2.演示模块
packages-to-scan: org.dromara.demo
- group: 2.通用模块
- group: 3.通用模块
packages-to-scan: org.dromara.web
- group: 3.系统模块
- group: 4.系统模块
packages-to-scan: org.dromara.system
- group: 4.代码生成模块
- group: 5.代码生成模块
packages-to-scan: org.dromara.generator
- group: 5.工作流模块
- group: 6.工作流模块
packages-to-scan: org.dromara.workflow
# 防止XSS攻击
@ -261,3 +274,69 @@ warm-flow:
node-tooltip: true
# 默认Authorization如果有多个token用逗号分隔
token-name: ${sa-token.token-name},clientid
--- # H5短信配置阿里云
# ============================================================
# H5接口短信验证码配置
# 阿里云短信模板申请: https://dysms.console.aliyun.com/
# ============================================================
h5:
sms:
# ---------- 基础配置 ----------
# 是否真正发送短信false时仅打印日志用于开发测试
# 生产环境必须设置为 true
enabled: true
# 阿里云短信配置名称(对应 application-dev.yml 中 sms.blends 下的配置名)
sms-config-name: alibaba
# ---------- 短信模板配置 ----------
# 登录验证码模板ID
login-template-id: SMS_461020580
# 注册验证码模板ID
register-template-id: SMS_473140005
# ---------- 验证码配置 ----------
# 验证码长度(位数)
code-length: 6
# 验证码有效期(分钟)
code-expire-minutes: 5
# ---------- 防刷策略配置 ----------
# 同一手机号发送间隔(秒),防止频繁发送
send-interval-seconds: 60
# 同一手机号每日发送上限
daily-limit-per-phone: 10
# 同一IP每分钟发送上限
minute-limit-per-ip: 5
# 同一IP每日发送上限
daily-limit-per-ip: 50
# ---------- 黑名单配置 ----------
# 黑名单封禁时长(分钟)
blacklist-minutes: 30
# 连续验证失败多少次后加入黑名单
blacklist-trigger-count: 10
# ============================================================
# H5微信扫码登录配置
# 微信开放平台: https://open.weixin.qq.com/
# 需要创建"网站应用"并获取AppID和AppSecret
# ============================================================
wechat:
# ---------- 基础配置 ----------
# 是否启用微信登录
enabled: false
# 微信开放平台AppID网站应用
app-id: ${H5_WECHAT_APP_ID:your-app-id}
# 微信开放平台AppSecret
app-secret: ${H5_WECHAT_APP_SECRET:your-app-secret}
# ---------- 二维码配置 ----------
# 二维码有效期默认5分钟
qrcode-expire-seconds: 300
# ---------- 绑定配置 ----------
# 绑定凭证有效期分钟默认10分钟
bind-token-expire-minutes: 10
# 首次登录是否自动注册会员(需绑定手机号后注册)
auto-register: true

View File

@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test;
/**
* 断言单元测试案例
*
* @author Lion Li
* @author pangu
*/
@DisplayName("断言单元测试案例")
public class AssertUnitTest {

View File

@ -10,7 +10,7 @@ import java.util.concurrent.TimeUnit;
/**
* 单元测试案例
*
* @author Lion Li
* @author pangu
*/
@SpringBootTest // 此注解只能在 springboot 主包下使用 需包含 main 方法与 yml 配置文件
@DisplayName("单元测试案例")

View File

@ -17,7 +17,7 @@ import java.util.stream.Stream;
/**
* 带参数单元测试案例
*
* @author Lion Li
* @author pangu
*/
@DisplayName("带参数单元测试案例")
public class ParamUnitTest {

View File

@ -6,7 +6,7 @@ import org.springframework.boot.test.context.SpringBootTest;
/**
* 标签单元测试案例
*
* @author Lion Li
* @author pangu
*/
@SpringBootTest
@DisplayName("标签单元测试案例")

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.dromara</groupId>
<artifactId>pangu-vue-plus</artifactId>
<version>5.5.3</version>
</parent>
<groupId>org.dromara</groupId>
<artifactId>pangu-common</artifactId>
<version>5.5.3</version>
<packaging>pom</packaging>
<description>common 通用模块</description>
<modules>
<module>pangu-common-bom</module>
<module>pangu-common-social</module>
<module>pangu-common-core</module>
<module>pangu-common-doc</module>
<module>pangu-common-excel</module>
<module>pangu-common-idempotent</module>
<module>pangu-common-job</module>
<module>pangu-common-log</module>
<module>pangu-common-mail</module>
<module>pangu-common-mybatis</module>
<module>pangu-common-oss</module>
<module>pangu-common-ratelimiter</module>
<module>pangu-common-redis</module>
<module>pangu-common-satoken</module>
<module>pangu-common-security</module>
<module>pangu-common-sms</module>
<module>pangu-common-web</module>
<module>pangu-common-translation</module>
<module>pangu-common-sensitive</module>
<module>pangu-common-json</module>
<module>pangu-common-encrypt</module>
<module>pangu-common-tenant</module>
<module>pangu-common-websocket</module>
<module>pangu-common-sse</module>
</modules>
</project>

View File

@ -5,12 +5,12 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-bom</artifactId>
<artifactId>pangu-common-bom</artifactId>
<version>${revision}</version>
<packaging>pom</packaging>
<description>
ruoyi-common-bom common依赖项
pangu-common-bom common依赖项
</description>
<properties>
@ -22,160 +22,160 @@
<!-- 核心模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
<artifactId>pangu-common-core</artifactId>
<version>${revision}</version>
</dependency>
<!-- 接口模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-doc</artifactId>
<artifactId>pangu-common-doc</artifactId>
<version>${revision}</version>
</dependency>
<!-- excel -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-excel</artifactId>
<artifactId>pangu-common-excel</artifactId>
<version>${revision}</version>
</dependency>
<!-- 幂等 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-idempotent</artifactId>
<artifactId>pangu-common-idempotent</artifactId>
<version>${revision}</version>
</dependency>
<!-- 调度模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-job</artifactId>
<artifactId>pangu-common-job</artifactId>
<version>${revision}</version>
</dependency>
<!-- 日志记录 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-log</artifactId>
<artifactId>pangu-common-log</artifactId>
<version>${revision}</version>
</dependency>
<!-- 邮件服务 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mail</artifactId>
<artifactId>pangu-common-mail</artifactId>
<version>${revision}</version>
</dependency>
<!-- 数据库服务 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-mybatis</artifactId>
<artifactId>pangu-common-mybatis</artifactId>
<version>${revision}</version>
</dependency>
<!-- OSS -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-oss</artifactId>
<artifactId>pangu-common-oss</artifactId>
<version>${revision}</version>
</dependency>
<!-- 限流 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-ratelimiter</artifactId>
<artifactId>pangu-common-ratelimiter</artifactId>
<version>${revision}</version>
</dependency>
<!-- 缓存服务 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-redis</artifactId>
<artifactId>pangu-common-redis</artifactId>
<version>${revision}</version>
</dependency>
<!-- satoken -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-satoken</artifactId>
<artifactId>pangu-common-satoken</artifactId>
<version>${revision}</version>
</dependency>
<!-- 安全模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-security</artifactId>
<artifactId>pangu-common-security</artifactId>
<version>${revision}</version>
</dependency>
<!-- 短信模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sms</artifactId>
<artifactId>pangu-common-sms</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-social</artifactId>
<artifactId>pangu-common-social</artifactId>
<version>${revision}</version>
</dependency>
<!-- web服务 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-web</artifactId>
<artifactId>pangu-common-web</artifactId>
<version>${revision}</version>
</dependency>
<!-- 翻译模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-translation</artifactId>
<artifactId>pangu-common-translation</artifactId>
<version>${revision}</version>
</dependency>
<!-- 脱敏模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sensitive</artifactId>
<artifactId>pangu-common-sensitive</artifactId>
<version>${revision}</version>
</dependency>
<!-- 序列化模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-json</artifactId>
<artifactId>pangu-common-json</artifactId>
<version>${revision}</version>
</dependency>
<!-- 数据库加解密模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-encrypt</artifactId>
<artifactId>pangu-common-encrypt</artifactId>
<version>${revision}</version>
</dependency>
<!-- 租户模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-tenant</artifactId>
<artifactId>pangu-common-tenant</artifactId>
<version>${revision}</version>
</dependency>
<!-- WebSocket模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-websocket</artifactId>
<artifactId>pangu-common-websocket</artifactId>
<version>${revision}</version>
</dependency>
<!-- SSE模块 -->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-sse</artifactId>
<artifactId>pangu-common-sse</artifactId>
<version>${revision}</version>
</dependency>

View File

@ -4,13 +4,13 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common</artifactId>
<artifactId>pangu-common</artifactId>
<version>5.5.3</version>
</parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common-core</artifactId>
<artifactId>pangu-common-core</artifactId>
<version>5.5.3</version>
<description>ruoyi-common-core 核心模块</description>
<description>pangu-common-core 核心模块</description>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>

View File

@ -4,15 +4,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.dromara</groupId>
<artifactId>ruoyi-common</artifactId>
<artifactId>pangu-common</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-common-core</artifactId>
<artifactId>pangu-common-core</artifactId>
<description>
ruoyi-common-core 核心模块
pangu-common-core 核心模块
</description>
<dependencies>

View File

@ -7,7 +7,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
/**
* 程序注解配置
*
* @author Lion Li
* @author pangu
*/
@AutoConfiguration
@EnableAspectJAutoProxy

View File

@ -13,7 +13,7 @@ import java.util.concurrent.*;
/**
* 线程池配置
*
* @author Lion Li
* @author pangu
**/
@Slf4j
@AutoConfiguration

View File

@ -13,7 +13,7 @@ import java.util.Properties;
/**
* 校验框架配置类
*
* @author Lion Li
* @author pangu
*/
@AutoConfiguration(before = ValidationAutoConfiguration.class)
public class ValidatorConfig {

View File

@ -3,7 +3,7 @@ package org.dromara.common.core.constant;
/**
* 缓存的key 常量
*
* @author Lion Li
* @author pangu
*/
public interface CacheConstants {

View File

@ -12,7 +12,7 @@ package org.dromara.common.core.constant;
* <p>
* 例子: test#60stest#0#60stest#0#1m#1000test#1h#0#500test#1h#0#500#0
*
* @author Lion Li
* @author pangu
*/
public interface CacheNames {

View File

@ -3,7 +3,7 @@ package org.dromara.common.core.constant;
/**
* 通用常量信息
*
* @author ruoyi
* @author pangu
*/
public interface Constants {

View File

@ -3,7 +3,7 @@ package org.dromara.common.core.constant;
/**
* 全局的key常量 (业务无关的key)
*
* @author Lion Li
* @author pangu
*/
public interface GlobalConstants {

View File

@ -3,7 +3,7 @@ package org.dromara.common.core.constant;
/**
* 返回状态码
*
* @author Lion Li
* @author pangu
*/
public interface HttpStatus {
/**

View File

@ -7,7 +7,7 @@ import cn.hutool.core.lang.RegexPool;
* <p>
* 常用正则表达式集合更多正则见: https://any86.github.io/any-rule/
*
* @author Feng
* @author pangu
*/
public interface RegexConstants extends RegexPool {

View File

@ -3,7 +3,7 @@ package org.dromara.common.core.constant;
/**
* 系统常量信息
*
* @author Lion Li
* @author pangu
*/
public interface SystemConstants {

View File

@ -3,7 +3,7 @@ package org.dromara.common.core.constant;
/**
* 租户常量信息
*
* @author Lion Li
* @author pangu
*/
public interface TenantConstants {

View File

@ -10,7 +10,7 @@ import java.io.Serializable;
/**
* 响应信息主体
*
* @author Lion Li
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -12,7 +12,7 @@ import java.util.Objects;
/**
* 办理任务请求对象
*
* @author may
* @author pangu
*/
@Data
public class CompleteTaskDTO implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* 部门
*
* @author AprilWind
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* 字典数据DTO
*
* @author AprilWind
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* 字典类型DTO
*
* @author AprilWind
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* 抄送
*
* @author may
* @author pangu
*/
@Data
public class FlowCopyDTO implements Serializable {

View File

@ -8,7 +8,7 @@ import java.io.Serializable;
/**
* 流程实例业务扩展对象
*
* @author may
* @author pangu
* @date 2025-08-05
*/
@Data

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* OSS对象
*
* @author Lion Li
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* 岗位
*
* @author AprilWind
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -13,7 +13,7 @@ import java.util.Objects;
/**
* 启动流程对象
*
* @author may
* @author pangu
*/
@Data
public class StartProcessDTO implements Serializable {

View File

@ -9,7 +9,7 @@ import java.io.Serializable;
/**
* 启动流程返回对象
*
* @author Lion Li
* @author pangu
*/
@Data
public class StartProcessReturnDTO implements Serializable {

View File

@ -14,7 +14,7 @@ import java.util.stream.Collectors;
/**
* 任务受让人
*
* @author AprilWind
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -11,7 +11,7 @@ import java.util.Date;
/**
* 用户
*
* @author Michelle.Chung
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -8,7 +8,7 @@ import java.io.Serializable;
/**
* 删除流程监听
*
* @author AprilWind
* @author pangu
*/
@Data
public class ProcessDeleteEvent implements Serializable {

View File

@ -9,7 +9,7 @@ import java.util.Map;
/**
* 总体流程监听
*
* @author may
* @author pangu
*/
@Data
public class ProcessEvent implements Serializable {

View File

@ -9,7 +9,7 @@ import java.util.Map;
/**
* 流程任务监听
*
* @author may
* @author pangu
*/
@Data
public class ProcessTaskEvent implements Serializable {

View File

@ -13,7 +13,7 @@ import java.util.Set;
/**
* 登录用户身份权限
*
* @author Lion Li
* @author pangu
*/
@Data
@NoArgsConstructor

View File

@ -8,7 +8,7 @@ import org.hibernate.validator.constraints.Length;
/**
* 密码登录对象
*
* @author Lion Li
* @author pangu
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -8,7 +8,7 @@ import org.hibernate.validator.constraints.Length;
/**
* 用户注册对象
*
* @author Lion Li
* @author pangu
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -9,7 +9,7 @@ import java.io.Serial;
/**
* 小程序登录用户身份权限
*
* @author Lion Li
* @author pangu
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -15,7 +15,7 @@ import java.util.stream.Collectors;
/**
* 业务状态枚举
*
* @author may
* @author pangu
*/
@Getter
@AllArgsConstructor

View File

@ -6,7 +6,7 @@ import lombok.Getter;
/**
* 设备类型
*
* @author Lion Li
* @author pangu
*/
@Getter
@AllArgsConstructor

View File

@ -6,7 +6,7 @@ import lombok.Getter;
/**
* 登录类型
*
* @author Lion Li
* @author pangu
*/
@Getter
@AllArgsConstructor

View File

@ -6,7 +6,7 @@ import lombok.Getter;
/**
* 用户状态
*
* @author ruoyi
* @author pangu
*/
@Getter
@AllArgsConstructor

View File

@ -7,7 +7,7 @@ import org.dromara.common.core.utils.StringUtils;
/**
* 用户类型
*
* @author Lion Li
* @author pangu
*/
@Getter
@AllArgsConstructor

View File

@ -11,7 +11,7 @@ import java.io.Serial;
/**
* 业务异常支持占位符 {}
*
* @author ruoyi
* @author pangu
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -10,7 +10,7 @@ import java.io.Serial;
/**
* sse 特制异常
*
* @author LionLi
* @author pangu
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -12,7 +12,7 @@ import java.io.Serial;
/**
* 基础异常
*
* @author ruoyi
* @author pangu
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -7,7 +7,7 @@ import java.io.Serial;
/**
* 文件信息异常类
*
* @author ruoyi
* @author pangu
*/
public class FileException extends BaseException {

View File

@ -5,7 +5,7 @@ import java.io.Serial;
/**
* 文件名称超长限制异常类
*
* @author ruoyi
* @author pangu
*/
public class FileNameLengthLimitExceededException extends FileException {

View File

@ -5,7 +5,7 @@ import java.io.Serial;
/**
* 文件名大小限制异常类
*
* @author ruoyi
* @author pangu
*/
public class FileSizeLimitExceededException extends FileException {

View File

@ -5,7 +5,7 @@ import java.io.Serial;
/**
* 验证码错误异常类
*
* @author ruoyi
* @author pangu
*/
public class CaptchaException extends UserException {

View File

@ -5,7 +5,7 @@ import java.io.Serial;
/**
* 验证码失效异常类
*
* @author ruoyi
* @author pangu
*/
public class CaptchaExpireException extends UserException {

View File

@ -7,7 +7,7 @@ import java.io.Serial;
/**
* 用户信息异常类
*
* @author ruoyi
* @author pangu
*/
public class UserException extends BaseException {

View File

@ -10,7 +10,7 @@ import java.util.regex.Pattern;
* <p>初始化的时候将正则表达式加入缓存池当中</p>
* <p>提高正则表达式的性能避免重复编译相同的正则表达式</p>
*
* @author 21001
* @author pangu
*/
public class RegexPatternPoolFactory extends PatternPool {

View File

@ -12,7 +12,7 @@ import java.io.IOException;
/**
* yml 配置源工厂
*
* @author Lion Li
* @author pangu
*/
public class YmlPropertySourceFactory extends DefaultPropertySourceFactory {

Some files were not shown because too many files have changed in this diff Show More