298 lines
7.7 KiB
Markdown
298 lines
7.7 KiB
Markdown
# 资金平台功能完善与架构增强计划
|
|
|
|
## 前置条件
|
|
- ✅ 六步实施已完成
|
|
- ✅ 11个模块编译通过
|
|
- ✅ 数据库初始化完成
|
|
- ✅ fund-sys服务运行正常
|
|
- ✅ Gateway路由配置完成
|
|
|
|
---
|
|
|
|
## A. 完善fund-sys权限管理
|
|
|
|
### A.1 用户管理模块
|
|
**目标**: 实现用户CRUD接口
|
|
|
|
**实施步骤**:
|
|
1. 创建 `UserDTO.java` (用户创建/更新DTO)
|
|
2. 创建 `UserVO.java` (用户返回VO)
|
|
3. 创建 `UserService.java` 和 `UserServiceImpl.java`
|
|
4. 创建 `UserController.java` (REST接口)
|
|
5. 实现接口:
|
|
- `POST /api/v1/sys/user` - 创建用户
|
|
- `PUT /api/v1/sys/user/{id}` - 更新用户
|
|
- `GET /api/v1/sys/user/{id}` - 查询用户
|
|
- `GET /api/v1/sys/user/page` - 分页查询
|
|
- `DELETE /api/v1/sys/user/{id}` - 删除用户
|
|
|
|
**涉及文件**:
|
|
- `fund-sys/src/main/java/com/fundplatform/sys/dto/UserDTO.java`
|
|
- `fund-sys/src/main/java/com/fundplatform/sys/vo/UserVO.java`
|
|
- `fund-sys/src/main/java/com/fundplatform/sys/service/UserService.java`
|
|
- `fund-sys/src/main/java/com/fundplatform/sys/service/impl/UserServiceImpl.java`
|
|
- `fund-sys/src/main/java/com/fundplatform/sys/controller/UserController.java`
|
|
|
|
### A.2 角色管理模块
|
|
**实施步骤**: 同用户管理,创建Role相关类
|
|
**接口**: `/api/v1/sys/role` 系列接口
|
|
|
|
### A.3 菜单管理模块
|
|
**实施步骤**: 同用户管理,创建Menu相关类
|
|
**接口**: `/api/v1/sys/menu` 系列接口
|
|
|
|
### A.4 部门管理模块
|
|
**实施步骤**: 同用户管理,创建Dept相关类
|
|
**接口**: `/api/v1/sys/dept` 系列接口
|
|
|
|
**验证**: 每个模块完成后执行 `mvn -pl fund-sys clean install`
|
|
|
|
---
|
|
|
|
## B. 完善其他业务模块
|
|
|
|
### B.1 fund-req用款申请模块
|
|
**目标**: 实现用款申请完整业务流程
|
|
|
|
**实施步骤**:
|
|
1. 创建 `FundRequest.java` 实体类
|
|
2. 创建 `FundRequestMapper.java` 和 `FundRequestDataService.java`
|
|
3. 创建 `FundRequestService.java` 和实现类
|
|
4. 创建 `FundRequestController.java`
|
|
5. 实现接口:
|
|
- `POST /api/v1/req/fund-request` - 创建申请
|
|
- `PUT /api/v1/req/fund-request/{id}/approve` - 审批通过
|
|
- `PUT /api/v1/req/fund-request/{id}/reject` - 审批拒绝
|
|
- `GET /api/v1/req/fund-request/page` - 分页查询
|
|
|
|
**涉及文件**:
|
|
- `fund-req/src/main/java/com/fundplatform/req/data/entity/FundRequest.java`
|
|
- `fund-req/src/main/java/com/fundplatform/req/data/mapper/FundRequestMapper.java`
|
|
- `fund-req/src/main/java/com/fundplatform/req/data/service/FundRequestDataService.java`
|
|
- `fund-req/src/main/java/com/fundplatform/req/service/FundRequestService.java`
|
|
- `fund-req/src/main/java/com/fundplatform/req/controller/FundRequestController.java`
|
|
|
|
### B.2 fund-exp支出管理模块
|
|
**实施步骤**: 类似fund-req,创建支出相关类
|
|
|
|
### B.3 fund-receipt收款管理模块
|
|
**实施步骤**: 类似fund-req,创建收款相关类
|
|
|
|
---
|
|
|
|
## C. Gateway增强
|
|
|
|
### C.1 全局日志过滤器
|
|
**目标**: 记录所有请求日志,生成TraceId
|
|
|
|
**实施步骤**:
|
|
1. 创建 `GlobalLogFilter.java` (实现GatewayFilter)
|
|
2. 生成TraceId并写入请求头
|
|
3. 记录请求路径、方法、耗时
|
|
4. 配置到application.yml
|
|
|
|
**涉及文件**:
|
|
- `fund-gateway/src/main/java/com/fundplatform/gateway/filter/GlobalLogFilter.java`
|
|
- `fund-gateway/src/main/resources/application.yml`
|
|
|
|
### C.2 JWT鉴权过滤器
|
|
**目标**: 验证JWT Token,提取用户信息
|
|
|
|
**实施步骤**:
|
|
1. 创建 `JwtAuthFilter.java`
|
|
2. 验证Token有效性
|
|
3. 提取userId、tenantId写入请求头
|
|
4. 配置白名单路径(登录、健康检查等)
|
|
|
|
**涉及文件**:
|
|
- `fund-gateway/src/main/java/com/fundplatform/gateway/filter/JwtAuthFilter.java`
|
|
- `fund-gateway/src/main/resources/application.yml`
|
|
|
|
### C.3 限流配置
|
|
**实施步骤**:
|
|
1. 添加Redis依赖
|
|
2. 配置RequestRateLimiter过滤器
|
|
3. 设置限流规则(每秒请求数)
|
|
|
|
---
|
|
|
|
## D. 服务治理
|
|
|
|
### D.1 集成Nacos服务注册发现
|
|
**目标**: 实现服务自动注册和发现
|
|
|
|
**实施步骤**:
|
|
1. 添加Nacos依赖到所有服务
|
|
2. 配置Nacos地址(从memory获取: localhost:8848)
|
|
3. 配置服务名称和分组
|
|
4. 启动服务验证注册成功
|
|
|
|
**涉及文件**:
|
|
- 所有服务的 `pom.xml` 添加nacos依赖
|
|
- 所有服务的 `application.yml` 添加nacos配置
|
|
|
|
### D.2 集成Sentinel熔断降级
|
|
**实施步骤**:
|
|
1. 添加Sentinel依赖
|
|
2. 配置熔断规则
|
|
3. 配置降级逻辑
|
|
|
|
### D.3 统一配置中心
|
|
**实施步骤**:
|
|
1. 在Nacos创建配置文件
|
|
2. 各服务从Nacos读取配置
|
|
|
|
---
|
|
|
|
## E. 日志与监控
|
|
|
|
### E.1 集成ELK日志聚合
|
|
**目标**: 统一日志收集和分析
|
|
|
|
**实施步骤**:
|
|
1. 配置Logback输出JSON格式日志
|
|
2. 部署Filebeat收集日志
|
|
3. 部署Logstash处理日志
|
|
4. 部署Elasticsearch存储日志
|
|
5. 部署Kibana可视化
|
|
|
|
### E.2 集成SkyWalking链路追踪
|
|
**实施步骤**:
|
|
1. 添加SkyWalking Agent
|
|
2. 配置链路追踪
|
|
3. 集成Gateway和Feign
|
|
|
|
### E.3 Prometheus+Grafana监控
|
|
**实施步骤**:
|
|
1. 添加Micrometer依赖
|
|
2. 配置Prometheus端点
|
|
3. 部署Prometheus采集指标
|
|
4. 部署Grafana可视化
|
|
|
|
---
|
|
|
|
## F. 数据库优化
|
|
|
|
### F.1 读写分离配置
|
|
**实施步骤**:
|
|
1. 配置主从数据库
|
|
2. 使用ShardingSphere实现读写分离
|
|
3. 配置路由规则
|
|
|
|
### F.2 连接池优化
|
|
**实施步骤**:
|
|
1. 优化HikariCP配置(连接数、超时时间)
|
|
2. 配置连接池监控
|
|
|
|
### F.3 索引优化
|
|
**实施步骤**:
|
|
1. 分析慢查询SQL
|
|
2. 添加必要索引
|
|
3. 优化查询语句
|
|
|
|
---
|
|
|
|
## G. 高可用架构
|
|
|
|
### G.1 服务集群部署
|
|
**实施步骤**:
|
|
1. 各服务打包为Docker镜像
|
|
2. 配置Docker Compose或K8s部署
|
|
3. 配置负载均衡
|
|
|
|
### G.2 网关集群部署
|
|
**实施步骤**:
|
|
1. Gateway多实例部署
|
|
2. 配置Nginx负载均衡
|
|
|
|
### G.3 数据库高可用
|
|
**实施步骤**:
|
|
1. 配置MySQL主从复制
|
|
2. 配置自动故障切换
|
|
|
|
---
|
|
|
|
## H. 安全增强
|
|
|
|
### H.1 HTTPS配置
|
|
**实施步骤**:
|
|
1. 生成SSL证书
|
|
2. 配置Spring Boot HTTPS
|
|
3. 配置Gateway HTTPS
|
|
|
|
### H.2 API签名验证
|
|
**实施步骤**:
|
|
1. 设计签名算法(时间戳+密钥+签名)
|
|
2. 创建签名拦截器
|
|
3. 各服务集成签名验证
|
|
|
|
### H.3 数据加密存储
|
|
**实施步骤**:
|
|
1. 敏感字段加密(手机号、身份证等)
|
|
2. 使用AES或RSA加密
|
|
3. 配置加解密工具类
|
|
|
|
---
|
|
|
|
## I. 性能优化
|
|
|
|
### I.1 Redis缓存集成
|
|
**目标**: 减少数据库查询压力
|
|
|
|
**实施步骤**:
|
|
1. 添加Redis依赖(从memory获取密码: zjf@123456)
|
|
2. 配置Redis连接
|
|
3. 实现缓存工具类
|
|
4. 对热点数据添加缓存
|
|
|
|
**涉及文件**:
|
|
- `fund-common/src/main/java/com/fundplatform/common/cache/RedisService.java`
|
|
- 所有服务的 `pom.xml` 添加redis依赖
|
|
- 所有服务的 `application.yml` 添加redis配置
|
|
|
|
### I.2 接口性能测试
|
|
**实施步骤**:
|
|
1. 使用JMeter编写测试脚本
|
|
2. 压测核心接口
|
|
3. 分析性能瓶颈
|
|
4. 优化慢接口
|
|
|
|
### I.3 异步处理优化
|
|
**实施步骤**:
|
|
1. 引入消息队列(RabbitMQ/Kafka)
|
|
2. 异步处理耗时操作
|
|
3. 实现最终一致性
|
|
|
|
---
|
|
|
|
## 实施优先级
|
|
|
|
| 优先级 | 模块 | 预计时间 | 依赖 |
|
|
|--------|------|----------|------|
|
|
| P0 | C.1 Gateway日志过滤器 | 2小时 | 无 |
|
|
| P0 | C.2 Gateway鉴权过滤器 | 3小时 | 无 |
|
|
| P1 | A.1 用户管理模块 | 4小时 | 无 |
|
|
| P1 | B.1 fund-req用款申请 | 4小时 | 无 |
|
|
| P1 | D.1 Nacos服务注册 | 4小时 | 无 |
|
|
| P2 | I.1 Redis缓存集成 | 4小时 | 无 |
|
|
| P2 | E.1 ELK日志聚合 | 1天 | 无 |
|
|
| P3 | 其他模块 | 按需 | 前置模块 |
|
|
|
|
---
|
|
|
|
## 验证标准
|
|
|
|
每个阶段完成后需验证:
|
|
1. ✅ 编译通过: `mvn clean install`
|
|
2. ✅ 服务启动正常
|
|
3. ✅ 接口测试通过
|
|
4. ✅ Git提交代码
|
|
|
|
---
|
|
|
|
## 风险提示
|
|
|
|
1. **Spring Cloud版本兼容性**: 注意Spring Boot 3.2与Spring Cloud版本匹配
|
|
2. **数据库性能**: 注意索引优化,避免慢查询
|
|
3. **服务稳定性**: 添加熔断降级,防止雪崩
|
|
4. **安全性**: API接口必须鉴权,敏感数据加密 |