|
|
@@ -5,74 +5,55 @@
|
|
|
## 技术栈
|
|
|
|
|
|
- Java 17
|
|
|
-- Spring Boot 3.2.5
|
|
|
-- Spring Security 6 + JWT
|
|
|
+- Spring Boot 3.2.5 + Spring Security 6 + JWT
|
|
|
- MyBatis-Plus 3.5.7
|
|
|
-- H2 Database (开发模式文件数据库)
|
|
|
-- Redis (embedded-redis 开发兜底)
|
|
|
-
|
|
|
-## 环境要求
|
|
|
-
|
|
|
-- JDK 17+
|
|
|
-- Maven 3.8+(或项目内嵌的 apache-maven-3.9.6)
|
|
|
-- 可选:本地 Redis(如未安装,启动时会自动启动 embedded Redis)
|
|
|
+- MySQL 5.7(生产/测试) / H2(本地开发)
|
|
|
+- Redis + Redisson(分布式锁)
|
|
|
+- EasyExcel 3.3(导入导出)
|
|
|
+- SpringDoc OpenAPI(Swagger)
|
|
|
|
|
|
## 快速启动
|
|
|
|
|
|
```bash
|
|
|
cd qqflowengine-backend
|
|
|
-
|
|
|
-# 方式一:使用系统 Maven
|
|
|
mvn spring-boot:run
|
|
|
-
|
|
|
-# 方式二:使用项目内嵌 Maven
|
|
|
-./apache-maven-3.9.6/bin/mvn spring-boot:run
|
|
|
```
|
|
|
|
|
|
-服务启动后访问:
|
|
|
- API 服务:`http://localhost:8080`
|
|
|
-- Swagger 文档:`http://localhost:8080/swagger-ui.html`
|
|
|
-
|
|
|
-## 开发说明
|
|
|
+- Swagger 文档:`http://localhost:8080/swagger-ui/index.html`
|
|
|
|
|
|
-### 数据库
|
|
|
+## Profile 说明
|
|
|
|
|
|
-开发环境使用 **H2 文件数据库**,数据文件保存在项目根目录 `data/devdb.mv.db`:
|
|
|
+| Profile | 数据库 | 用途 |
|
|
|
+|---------|--------|------|
|
|
|
+| `dev`(默认) | H2 文件数据库 | 本地开发,每次启动重建表和数据 |
|
|
|
+| `test` | MySQL | 测试环境,连接 `192.168.1.139` |
|
|
|
|
|
|
-```yaml
|
|
|
-spring.datasource.url: jdbc:h2:file:./data/devdb;MODE=MySQL;AUTO_SERVER=TRUE
|
|
|
-```
|
|
|
+切换 Profile:修改 `application.yml` 中的 `spring.profiles.active`。
|
|
|
|
|
|
-- `spring.sql.init.mode: always` — 每次启动都会重新执行 `schema-dev.sql` 和 `data-dev.sql`
|
|
|
-- 如需保留手动修改的数据,可将 `mode` 改为 `never`
|
|
|
-- H2 Console 在开发模式已开启,可通过 `http://localhost:8080/h2-console` 访问(生产请关闭)
|
|
|
+## 默认账号
|
|
|
|
|
|
-### 默认账号
|
|
|
+密码均为 `123456a`:
|
|
|
|
|
|
-启动后会自动初始化以下账号(密码均为 `admin123`):
|
|
|
+| 账号 | 类型 | 说明 |
|
|
|
+|------|------|------|
|
|
|
+| admin | super_admin | 超级管理员 |
|
|
|
+| zhangsan | common_user | 普通用户 |
|
|
|
+| lisi | dept_manager | 部门管理员 |
|
|
|
+| wangwu | flow_manager | 流程管理员 |
|
|
|
|
|
|
-| 账号 | 角色 |
|
|
|
-|------|------|
|
|
|
-| admin | 超级管理员 |
|
|
|
-| zhangsan | 普通用户(技术部) |
|
|
|
-| lisi | 部门经理(财务部) |
|
|
|
-| wangwu | 流程管理员(人事部) |
|
|
|
+角色账号(审批使用,不登录):`role_super_admin`、`role_flow_admin`、`role_normal_user`、`role_dept_manager`
|
|
|
|
|
|
-### Redis
|
|
|
+## 账户体系
|
|
|
|
|
|
-- 优先连接本地 `localhost:6379`
|
|
|
-- 如果本地未安装 Redis,启动时会**自动启动 embedded Redis**(端口 6379)
|
|
|
-- 如果本地已有 Redis 运行,则直接使用外部 Redis
|
|
|
+- **sys_user** — 个人账号,登录时用用户名或手机号 + 密码
|
|
|
+- **sys_role** — 审批角色(纯权限,不登录),通过 `sys_user_role` 关联到用户
|
|
|
+- 菜单和接口权限由 `sys_user.employeeType` 控制
|
|
|
|
|
|
-### 构建打包
|
|
|
-
|
|
|
-```bash
|
|
|
-mvn clean package
|
|
|
-```
|
|
|
-
|
|
|
-打包后的 JAR 位于 `target/qqflowengine-backend-1.0.0.jar`,可直接运行:
|
|
|
+## 构建部署
|
|
|
|
|
|
```bash
|
|
|
+mvn clean package -DskipTests
|
|
|
java -jar target/qqflowengine-backend-1.0.0.jar
|
|
|
```
|
|
|
|
|
|
@@ -80,23 +61,19 @@ java -jar target/qqflowengine-backend-1.0.0.jar
|
|
|
|
|
|
```
|
|
|
src/main/java/com/qqflow/engine/
|
|
|
-├── common/ # 通用工具、异常、结果封装
|
|
|
-├── config/ # Spring 配置类
|
|
|
+├── common/ # 公共组件(Result、RedisCache、RedissonService、ExcelParseService、PageRequest)
|
|
|
+├── config/ # Spring 配置 + Security(JWT、CORS)
|
|
|
├── domain/
|
|
|
-│ ├── flow/ # 流程引擎模块(定义、实例、任务、审批)
|
|
|
-│ └── system/ # 系统管理模块(用户、角色、菜单、部门)
|
|
|
+│ ├── flow/ # 流程引擎(定义、实例、任务、审批记录、分析、导入)
|
|
|
+│ ├── system/ # 用户、角色、部门、认证
|
|
|
+│ └── ewechat/ # 企业微信回调集成
|
|
|
└── QqFlowEngineApplication.java
|
|
|
|
|
|
src/main/resources/
|
|
|
-├── application.yml # 默认配置
|
|
|
-├── application-dev.yml # 开发配置
|
|
|
-├── application-test.yml # 测试配置
|
|
|
-├── schema-dev.sql # 开发环境表结构
|
|
|
-├── data-dev.sql # 开发环境初始数据
|
|
|
-└── mapper/ # MyBatis XML 映射文件
|
|
|
+├── application.yml / application-dev.yml / application-test.yml
|
|
|
+├── schema-mysql.sql / data-mysql.sql # MySQL 初始化
|
|
|
+├── schema-dev.sql / data-dev.sql # H2 开发初始化
|
|
|
+├── mapper/ # MyBatis XML
|
|
|
+└── migration-*.sql # 增量迁移脚本
|
|
|
```
|
|
|
|
|
|
-## 注意事项
|
|
|
-
|
|
|
-1. `data/` 目录和 `target/` 目录已加入 `.gitignore`,不会被提交
|
|
|
-2. 如需切换 MySQL,修改 `pom.xml` 中 H2 的 scope 并配置 `application.yml` 即可
|