zhangjf
|
dfce5b0566
|
refactor: 统一脚本管理,优化Assembly打包配置
- 将各服务脚本统一到项目根目录scripts目录
- Assembly配置引用根目录scripts,避免重复
- 脚本自动从目录名推断服务名称
- 排除docker相关配置文件(application-docker.yml)
- 新增env.properties环境变量配置模板
- 更新单机部署文档至v2.1
|
2026-02-22 14:43:41 +08:00 |
|
zhangjf
|
7a3fcb3ed7
|
feat: 使用Maven Assembly实现标准化打包
主要更新:
- 每个服务打包为独立tar.gz,包含bin/lib/conf目录
- bin目录:启动/停止/重启/状态脚本
- lib目录:服务JAR包及所有依赖
- conf目录:配置文件(application.yml等)
新增文件:
- 各模块src/main/assembly/assembly.xml配置
- 各模块src/main/scripts启动脚本
- server-deploy/scripts一键管理脚本
- server-deploy/assembly/assembly.xml模板
更新文档:
- 单机部署文档v2.0,说明assembly打包方式
|
2026-02-22 14:04:57 +08:00 |
|
zhangjf
|
734dafe975
|
docs: 新增单机部署文档和服务部署脚本
包含内容:
- 单机部署文档(环境安装、数据库初始化、服务部署指南)
- 9个微服务的启动/停止/重启脚本
- 一键启动/停止/重启所有服务脚本
- 服务状态查看脚本
- 日志统一存放在/datacfs/applogs/服务名称目录
|
2026-02-22 13:48:23 +08:00 |
|
zhangjf
|
fa0a356d08
|
docs: 更新部署运维文档至v2.0
主要更新内容:
- 新增Docker Compose部署章节
- 更新服务端口配置(Gateway:8000, fund-sys:8100等)
- 新增多租户混合负载模式说明
- 更新Prometheus+Grafana监控体系配置
- 新增链路追踪日志格式(TraceId+SpanId)
- 更新环境变量配置
- 新增访问地址汇总和默认账号信息
|
2026-02-22 13:30:21 +08:00 |
|
zhangjf
|
04ffcd804a
|
docs: 新增项目开发规范文档 Agents.md
包含以下规范内容:
- 项目概述与技术栈
- 项目结构规范
- 命名规范
- 数据库设计规范
- API设计规范
- 多租户规范
- 链路追踪规范
- Token认证规范
- 日志规范
- 异常处理规范
- Git提交规范
- 代码规范
- 配置规范
- 常见问题处理
|
2026-02-20 20:55:53 +08:00 |
|
zhangjf
|
4154b94206
|
fix: 修复Gateway路由配置错误
fund-cust 路由路径配置错误,修正为 /cust/**
|
2026-02-20 19:08:49 +08:00 |
|
zhangjf
|
44e7efdfc0
|
fix: Gateway Token验证修复
1. Gateway Redis database 改为 0(与业务服务一致)
2. TokenInfo 添加 @JsonIgnoreProperties(ignoreUnknown = true)
3. TokenInfo.isExpired() 添加 @JsonIgnore 避免序列化
4. isExpired() 方法增加 null 检查
|
2026-02-20 18:52:54 +08:00 |
|
zhangjf
|
52c926dcd6
|
fix: Gateway添加Nacos服务发现依赖,修复负载均衡器配置
1. fund-gateway pom.xml 添加 spring-cloud-starter-alibaba-nacos-discovery 依赖
2. TenantLoadBalancerAutoConfig 使用 @LoadBalancerClients 注解配置
3. TenantAwareLoadBalancer 增加 serviceId null 检查
|
2026-02-20 18:43:38 +08:00 |
|
zhangjf
|
a78ccaeae5
|
fix: NacosMetadataConfig添加@ConditionalOnBean避免Gateway加载失败
NacosMetadataConfig仅在Registration bean存在时生效,
解决Gateway等不需要服务注册的场景无法启动的问题
|
2026-02-20 18:15:20 +08:00 |
|
zhangjf
|
4af7d712cd
|
fix: Gateway不扫描fund-common避免依赖冲突
|
2026-02-20 18:04:30 +08:00 |
|
zhangjf
|
ef46844bfd
|
fix: 修复服务启动配置问题
- 所有业务服务添加scanBasePackages扫描fund-common
- Gateway添加ReactiveRedisConfig提供ReactiveRedisTemplate
- Gateway排除Servlet相关类和RedisService(需要非响应式RedisTemplate)
- 解决Bean名称冲突(ReactiveRedisConfig)
|
2026-02-20 17:53:12 +08:00 |
|
zhangjf
|
a6716da742
|
docs: 问题清单新增问题11-ContextInterceptor响应头未设置traceId和spanId
|
2026-02-20 16:51:23 +08:00 |
|
zhangjf
|
2c7d304408
|
fix: 修复ContextInterceptor响应头未设置traceId和spanId的问题
- 新增HEADER_SPAN_ID常量
- preHandle中生成SpanId并设置到响应头
- response.setHeader(HEADER_TRACE_ID, traceId)
- response.setHeader(HEADER_SPAN_ID, spanId)
|
2026-02-20 11:52:00 +08:00 |
|
zhangjf
|
9b3b3538c8
|
feat: API响应头增加traceId和spanId,日志记录spanId作为索引
- TraceContextHolder新增SpanId支持(16位短ID)
- ContextInterceptor在响应头返回X-Trace-Id和X-Span-Id
- 日志格式增加spanId:[traceId][spanId]
- JSON日志增加spanId字段用于ELK采集
- 日志输出示例:[abc123][def456] trace info
|
2026-02-20 11:48:09 +08:00 |
|
zhangjf
|
61c6e573df
|
feat: OpenFeign请求增加来源服务标记
- FeignChainInterceptor新增X-Source-Service和X-Request-Time请求头
- ContextInterceptor提取并记录请求来源服务、计算链路耗时
- 日志格式: [Trace] sourceService -> targetService | traceId=xxx | chainTime=xxxms | path=xxx
|
2026-02-20 11:36:47 +08:00 |
|
zhangjf
|
a8450d181f
|
refactor: 移除X-Tenant-Group相关代码
- TenantGatewayFilter简化为仅记录日志
- 移除application.yml和application-docker.yml中的tenant-group-header配置
|
2026-02-20 11:27:21 +08:00 |
|
zhangjf
|
f3b7576bf1
|
refactor: Token认证从JWT改为UUID+Redis方案
- fund-common: 新增TokenInfo和TokenService类
- fund-sys: AuthServiceImpl改用TokenService,移除JwtUtil
- fund-gateway: 新增TokenAuthFilter和ReactiveTokenService
- 移除JWT依赖,支持主动登出和强制踢下线功能
|
2026-02-20 11:23:32 +08:00 |
|
zhangjf
|
eeea69d512
|
chore: 清理日志文件和更新Maven配置
|
2026-02-20 11:04:16 +08:00 |
|
zhangjf
|
e2007d8b09
|
chore: 从Git追踪中移除target和.vscode目录
|
2026-02-20 11:02:45 +08:00 |
|
zhangjf
|
f292a8746f
|
chore: 更新.gitignore忽略.mvn目录
|
2026-02-20 11:00:31 +08:00 |
|
zhangjf
|
b256989a7e
|
chore: 添加.gitignore忽略文件
|
2026-02-20 10:56:01 +08:00 |
|
zhangjf
|
480c052ff1
|
feat: Docker容器化部署配置
- 添加所有后端服务的application-docker.yml配置文件
- 添加前端fund-admin和fund-mobile的Dockerfile和nginx配置
- 更新docker-compose.yml添加前端服务
- 添加.dockerignore优化构建
- 添加deploy.sh一键部署脚本
|
2026-02-20 10:13:52 +08:00 |
|
zhangjf
|
47703e40c4
|
feat: 移动端完善与操作日志审计功能
1. 移动端fund-mobile完善:
- 新增项目列表页面 (project/List.vue)
- 新增客户列表页面 (customer/List.vue)
- 新增统一API文件 (api/index.ts)
- 更新路由配置,新增项目和客户路由
- 首页增加项目和客户快捷入口
2. 操作日志审计功能:
- OperationLog实体类: 操作日志数据模型
- OperationLogMapper: MyBatis-Plus Mapper
- OperationLogService: 日志服务接口和实现
- OperationLogController: 日志查询API
- OperationLogAspect: AOP切面自动记录操作日志
- 支持异步保存,只记录写操作(增删改)
3. 操作日志功能特性:
- 自动拦截Controller层方法
- 记录用户ID、用户名、操作描述、请求参数
- 记录IP、UserAgent、操作时间、耗时
- 支持成功/失败状态记录
- 支持分页查询和历史日志清理
|
2026-02-20 09:16:00 +08:00 |
|
zhangjf
|
eafb783e2b
|
feat: 定时任务与账期逾期管理功能
1. 定时任务框架:
- 使用Spring @Scheduled实现定时任务(替代XXL-JOB简化部署)
- @EnableScheduling启用定时任务
- 条件配置: fund.schedule.enabled
2. 定时任务列表:
- 逾期状态更新: 每天凌晨1点执行
- 逾期提醒通知: 每天上午9点执行
- 账期预警提醒: 每周一上午10点执行
3. 账期管理API:
- GET /upcoming-due: 获取即将到期应收款列表
- 支持指定天数内到期的应收款查询
4. 服务层增强:
- ReceivableService.getUpcomingDueList(): 查询即将到期应收款
- ReceivableServiceImpl: 完整实现逾期状态更新逻辑
|
2026-02-20 09:06:40 +08:00 |
|
zhangjf
|
06efab9596
|
feat: 支出和应收款模块新增Excel导出功能
后端:
- fund-exp: 新增ExpenseExcel导出实体、导出接口和listExpenses方法
- fund-receipt: 新增ReceivableExcel导出实体、导出接口和listReceivables方法
前端:
- fund-admin: 支出管理页面新增导出按钮
- fund-admin: 应收款管理页面新增导出按钮
- fund-admin: 新增exportExpense和exportReceivable API
|
2026-02-20 08:36:20 +08:00 |
|
zhangjf
|
ad4176ae8a
|
docs: 更新移动端技术栈为 Vue3 + Vite5 + Vant4
- 架构设计文档:更新前端架构说明和接入层架构图
- 需求文档:更新移动端技术栈描述
- 功能清单:更新移动端模块技术栈
- 移除 UniApp 跨端架构,改为独立的 H5 移动端应用
|
2026-02-20 08:19:46 +08:00 |
|
zhangjf
|
15e7ed6f1b
|
feat: 所有服务统一配置多租户负载均衡,清理无效配置
1. 业务服务配置(fund-cust/proj/req/exp/receipt)
- 添加 Nacos metadata.tenant-id 配置
- 添加 tenant.routing 配置
- 移除无效的 feign.fund-sys.url 配置
2. 共享服务配置(fund-report/file)
- 添加 tenant.routing.enabled: false
- 共享服务不需要租户路由
3. Gateway 配置清理
- 移除过时的 tenant-group-header 配置
- 移除过时的 group-separator 配置
4. 删除 Docker 配置文件
- 删除 fund-sys/application-docker.yml
- 删除 fund-gateway/application-docker.yml
配置规范:
业务服务: tenant.routing.enabled=true, metadata.tenant-id=${TENANT_ID:}
共享服务: tenant.routing.enabled=false
|
2026-02-19 21:46:11 +08:00 |
|
zhangjf
|
8233ff8040
|
feat: 支持多租户专属实例(逗号分隔的租户ID列表)
功能增强:
- TENANT_ID 支持逗号分隔的多个租户 ID
- 一个实例可以服务多个指定租户
实例类型:
共享实例: TENANT_ID = "" (空)
单租户专属: TENANT_ID = "VIP_001"
多租户专属: TENANT_ID = "VIP_001,VIP_002,VIP_003"
路由逻辑:
1. 解析实例 metadata.tenant-id 为租户列表
2. 检查请求 tenantId 是否在列表中
3. 匹配成功 → 专属实例
4. 匹配失败 → 回退共享实例
使用场景:
- 大客户独占实例(单租户)
- 多个小客户共享一个实例(多租户)
- 普通客户使用公共实例(共享)
|
2026-02-19 21:39:30 +08:00 |
|
zhangjf
|
5a2154c1a1
|
refactor: 简化路由逻辑,直接使用 tenantId 匹配实例
问题:tenantGroup 是 tenantId 的简单转换,造成冗余
tenantGroup = "TENANT_" + tenantId.toUpperCase()
解决方案:
1. 直接使用 tenantId 匹配实例
- 移除 tenantGroup 概念
- 负载均衡器直接匹配 metadata.tenant-id
2. 简化配置
- JWT 只需 tenantId 一个字段
- 实例元数据只有 tenant-id
3. 前端简化
- 请求头只需 X-Tenant-Id
- 不再需要 X-Tenant-Group
路由规则:
共享实例: metadata.tenant-id = "" (空)
VIP实例: metadata.tenant-id = "VIP_001"
匹配逻辑: 找到匹配实例 → VIP专属,找不到 → 共享实例
|
2026-02-19 21:33:51 +08:00 |
|
zhangjf
|
e52e2ba801
|
refactor: 简化租户元数据,移除冗余的 tenant-id
问题:metadata 中同时配置 tenant-id 和 tenant-group,但 tenant-id 未被使用
分析:
- tenant-id: 用于数据隔离,但实际由 TenantContextHolder 提供,元数据中的值无意义
- tenant-group: 用于服务路由,负载均衡器实际只使用此字段
解决方案:
1. 移除 metadata.tenant-id 配置
2. 只保留 metadata.tenant-group
3. 更新 NacosMetadataConfig,移除 tenant-id 处理
4. 更新 docker-compose.yml,移除 TENANT_ID 环境变量
配置简化:
修改前: tenant-id + tenant-group 两个字段
修改后: 只有 tenant-group 一个字段
实例类型:
共享实例: tenant-group = "" (空)
VIP实例: tenant-group = "TENANT_VIP_001"
|
2026-02-19 21:26:06 +08:00 |
|
zhangjf
|
330ec6dea9
|
refactor: 简化多租户路由配置,基于 Nacos 元数据动态匹配
问题:tenant.routing.services 配置在每个服务中重复定义 vip-tenants
解决方案:
1. TenantRoutingProperties 简化
- 移除 services 映射(vip-tenants 列表)
- 保留全局配置:enabled, fallback-to-shared, shared-services
- 路由逻辑改为基于实例元数据动态匹配
2. 配置简化
- Gateway: 只需全局配置,无需定义各服务的 vip-tenants
- 服务实例: 只需在 Nacos metadata 中声明 tenant-group
- 负载均衡器: 从实例 metadata 读取 tenant-group 进行匹配
3. 架构变化
修改前:配置文件定义 vip-tenants 列表
修改后:实例注册时声明 tenant-group,负载均衡器动态匹配
示例:
共享实例 metadata: { tenant-group: "" }
VIP 实例 metadata: { tenant-group: "TENANT_VIP_001" }
请求匹配 → 路由到对应实例
|
2026-02-19 21:18:58 +08:00 |
|
zhangjf
|
2765f3f265
|
feat: 本地开发环境配置多租户路由
问题:fund-gateway 和 fund-sys 的 application.yml 缺少 tenant.routing 配置
修改内容:
1. fund-sys/application.yml
- 添加 tenant.routing 配置
- 配置 VIP 租户列表 (TENANT_VIP_001, TENANT_VIP_002)
- 配置共享服务列表
2. fund-gateway/application.yml
- 添加 Nacos 服务发现配置
- 路由改为 lb:// 协议使用负载均衡
- 添加全局跨域配置
- 添加 tenant.routing 配置
- 添加负载均衡日志级别
|
2026-02-19 21:11:08 +08:00 |
|
zhangjf
|
8e4afcd1a5
|
feat: TenantAwareLoadBalancer 整合 TenantRoutingProperties 配置
问题:TenantRoutingProperties 定义了配置但未被使用
解决方案:
1. TenantAwareLoadBalancer 注入 TenantRoutingProperties
- 使用配置的 tenantHeader 名称
- 使用配置的 buildTenantGroup 方法
- 使用配置的 isSharedService 判断
- 使用配置的 isFallbackToShared 策略
2. 新增功能
- 支持 enabled=false 禁用租户路由
- 共享服务跳过租户过滤
- 可配置是否回退到共享实例
3. 更新测试适配新构造函数
|
2026-02-19 21:02:25 +08:00 |
|
zhangjf
|
2825050502
|
fix: 注册 TenantAwareLoadBalancer 为 Spring Bean
问题:TenantAwareLoadBalancer 类存在但未被注册为 Spring Bean
解决方案:
1. 创建 TenantLoadBalancerAutoConfig 配置类
- @ConditionalOnProperty 启用条件配置
- @Bean 注册 ReactorServiceInstanceLoadBalancer
2. 添加 Spring Boot 自动配置注册
- META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
- 注册 TenantLoadBalancerAutoConfig、NacosMetadataConfig、MybatisTenantAutoConfig
|
2026-02-19 20:57:09 +08:00 |
|
zhangjf
|
2c0f2f8952
|
feat: 服务资源配置文件增加多租户混合模式负载均衡配置
## application-docker.yml 更新
### fund-sys
- Nacos 元数据配置:tenant-id, tenant-group
- 租户路由配置:启用租户感知负载均衡
- VIP 租户列表定义
- 监控标签:tenant_id, tenant_group, instance_type
- 日志格式:增加 tenantId MDC
### fund-gateway
- 全局跨域配置
- 多租户路由配置(所有服务的VIP租户列表)
- 监控和日志增强
## TenantRoutingProperties 更新
- 添加 @ConfigurationProperties 支持 YAML 配置绑定
- 新增 vip-tenants 列表属性
- 新增 fallback-to-shared 回退策略属性
- 新增 getVipTenants(), isVipTenant(), isFallbackToShared() 方法
|
2026-02-19 20:45:03 +08:00 |
|
zhangjf
|
5843cc050e
|
feat: Docker Compose配置多租户混合模式负载均衡
## 主要改动
### docker-compose.yml
- fund-sys 服务改为混合模式部署:
- fund-sys-shared: 共享实例(8100端口),供所有租户使用
- fund-sys-vip001: VIP_001专属实例(8101端口)
- 预留VIP_002模板(注释状态)
- 添加TENANT_ID、TENANT_GROUP环境变量
### NacosMetadataConfig
- 支持从环境变量读取租户元数据(优先级最高)
- 动态注册租户标签到Nacos
- 区分共享实例和VIP专属实例
### Prometheus配置
- 监控共享实例和VIP实例
- 添加tenant_mode、tenant_group标签
## 混合模式说明
- 共享实例(TENANT_GROUP为空): 所有普通租户请求路由到此类实例
- VIP实例(TENANT_GROUP有值): VIP租户请求路由到专属实例
|
2026-02-19 20:04:21 +08:00 |
|
zhangjf
|
109ae29474
|
docs: 添加Docker构建脚本和部署指南
- scripts/docker-build.sh: Docker镜像构建脚本
- 支持单模块构建、全部构建、docker-compose构建
- 支持镜像源配置、镜像推送、清理功能
- doc/Docker部署指南.md: 完整部署文档
- 环境要求、镜像源配置
- 镜像构建方法、服务端口规划
- 启动停止命令、故障排查
|
2026-02-19 19:15:56 +08:00 |
|
zhangjf
|
5b80e237b9
|
feat: Docker容器化部署和Prometheus+Grafana监控
## Docker 容器化部署
### 新增文件
- Dockerfile: 多阶段构建镜像,支持 Java 21
- docker-compose.yml: 完整服务编排配置
- 基础设施: MySQL 8.0, Redis 7, Nacos 3.0
- 监控: Prometheus, Grafana
- 业务服务: Gateway + 9个微服务
- docker/.env: 环境变量配置
- docker/mysql/init/01-init.sql: 数据库初始化脚本
### Docker 特性
- 多阶段构建优化镜像大小
- 非 root 用户运行服务
- 健康检查配置
- 统一时区设置 (Asia/Shanghai)
## Prometheus + Grafana 监控
### Prometheus 配置
- docker/prometheus/prometheus.yml: 服务发现配置
- docker/prometheus/rules/alerts.yml: 告警规则
- 服务可用性告警
- JVM 内存告警
- HTTP 请求告警
- 数据库连接池告警
- 系统资源告警
### Grafana 配置
- docker/grafana/provisioning/: 数据源和Dashboard自动导入
- docker/grafana/dashboards/fund-platform-dashboard.json
- 服务概览面板
- JVM 内存监控
- 数据库连接池监控
### Spring Boot Actuator 集成
- pom.xml: 添加 spring-boot-starter-actuator 和 micrometer-registry-prometheus
- application-docker.yml: Prometheus 端点配置
## 服务端口规划
- Gateway: 8000
- fund-sys: 8100
- fund-cust: 8200
- fund-proj: 8300
- fund-req: 8400
- fund-exp: 8500
- fund-receipt: 8600
- fund-report: 8700
- fund-file: 8800
- Prometheus: 9090
- Grafana: 3000
- Nacos: 8848
|
2026-02-19 18:48:15 +08:00 |
|
zhangjf
|
d11ed1ba1e
|
docs: 添加问题10 HikariMonitorConfig空指针异常到问题清单
|
2026-02-19 18:26:28 +08:00 |
|
zhangjf
|
39db7c8b7a
|
fix: HikariMonitorConfig 空指针异常修复
- 添加 HikariPoolMXBean 空值检查
- 连接池未初始化时跳过监控,避免 NullPointerException
|
2026-02-19 18:12:18 +08:00 |
|
zhangjf
|
10eca3fb35
|
feat: 实现多租户架构完整能力
## 新增功能
### 1. 多租户核心组件
- TenantRoutingProperties: 租户路由配置属性
- TenantAwareLoadBalancer: 租户感知负载均衡器
- TenantLineHandlerImpl: MyBatis Plus 租户插件
- TenantIgnoreHelper: 忽略租户过滤工具类
- NacosMetadataConfig: Nacos 元数据自动注册
### 2. Gateway 租户过滤器
- TenantGatewayFilter: 从 JWT 提取租户信息写入请求头
- 透传 X-Tenant-Id、X-Tenant-Group、X-User-Id、X-Username
### 3. 支持的部署模式
- 一库多租户(SaaS 模式): 通过 tenant_id 字段隔离
- 一库一租户(私有化): 独立服务实例和数据库
- 混合模式: VIP 租户专属实例 + 普通租户共享实例
### 4. Nacos 3.0 适配
- 所有业务模块添加 username/password 认证配置
- 服务实例自动注册租户标签
## 问题修复
- #8: FeignClient 硬编码 URL 导致 Nacos 服务发现失效
- #9: Nacos 3.0 客户端缺少 username/password 认证配置
- fund-exp expenseType 字段类型从 Integer 改为 Long
## 测试
- TenantAwareLoadBalancerTest: 负载均衡器单元测试
- 混合模式集成测试脚本
|
2026-02-19 18:10:16 +08:00 |
|
zhangjf
|
88291b1d46
|
feat: 补充后端缺失接口并修复API路径不一致问题
新增接口:
- fund-sys: 登出、刷新Token、获取角色菜单
- fund-cust: 联系人管理完整CRUD
- fund-receipt: 获取应收款收款记录列表
修复问题:
- 支出类型更新接口路径改为 PUT /{id}
- 支出更新接口路径改为 PUT /{id}
- 应收款更新接口路径改为 PUT /{id}
- FundReceipt实体添加receivableId字段
|
2026-02-18 08:19:13 +08:00 |
|
zhangjf
|
b3ef6d89f1
|
feat: 添加前端管理平台fund-admin并优化后端接口
- 新增fund-admin前端项目(Vue3 + TypeScript + Element Plus)
- 登录认证、用户信息获取
- 系统管理:用户、角色、部门、菜单
- 客户管理、项目管理、需求工单
- 支出管理、应收款管理
- Dashboard首页
- 浅色系侧边栏菜单、面包屑导航
- fund-sys: 添加获取用户信息接口
- fund-exp: 添加支出类型分页接口、修复路由顺序
- fund-proj: 修复路由顺序(/page放于/{id}之前)
- fund-receipt: 新增应收款管理功能
|
2026-02-17 20:35:18 +08:00 |
|
zhangjf
|
33d7cc2145
|
feat: 新增支出类型管理模块
- 新增 ExpenseType 实体类
- 新增 ExpenseTypeMapper 和 ExpenseTypeDataService
- 新增 ExpenseTypeDTO 和 ExpenseTypeVO
- 新增 ExpenseTypeService 业务服务层(支持树形结构)
- 新增 ExpenseTypeController REST API
- 数据库创建 expense_type 表并插入初始数据(5个一级类型+12个二级类型)
- API测试通过:树形查询、子类型查询、创建类型
|
2026-02-17 17:12:02 +08:00 |
|
zhangjf
|
0c87462b68
|
fix: 修复fund-req/fund-exp/fund-receipt模块的mybatis-plus依赖和数据库配置
|
2026-02-17 16:42:21 +08:00 |
|
zhangjf
|
919ae58b10
|
fix: 使用mybatis-plus-spring-boot3-starter兼容Spring Boot 3.x
|
2026-02-17 16:12:57 +08:00 |
|
zhangjf
|
5ebbb13a51
|
fix: 修复API测试中发现的问题
## 问题修复
### 1. 上下文拦截器
- ContextInterceptor: 从HTTP Header提取租户ID和用户ID到ThreadLocal
- WebMvcConfig: 注册拦截器到Spring MVC
### 2. 数据库配置
- fund-cust/application.yml: 修复MySQL密码默认值
- fund-proj/application.yml: 修复MySQL密码默认值
### 3. Gateway配置
- application.yml: 删除空的Sentinel datasource配置
- SentinelRuleConfig: 删除重复的sentinelGatewayFilter Bean
### 4. 数据库表
- requirement.sql: 修复主键列名为id,与BaseEntity保持一致
### 5. MyBatis-Plus依赖
- fund-cust/pom.xml: 使用mybatis-plus-spring-boot3-starter
- fund-proj/pom.xml: 使用mybatis-plus-spring-boot3-starter
|
2026-02-17 16:12:46 +08:00 |
|
zhangjf
|
6d06a361fe
|
feat: 客户管理和项目管理模块完善更新接口
## 客户管理模块
- CustomerUpdateDTO: 客户更新DTO
- CustomerService: 新增updateCustomer方法
- CustomerServiceImpl: 实现客户更新逻辑
- CustomerController: 新增PUT /api/v1/customer/{id}接口
## 项目管理模块
- ProjectUpdateDTO: 项目更新DTO
- ProjectService: 新增updateProject方法
- ProjectServiceImpl: 实现项目更新逻辑
- ProjectController: 新增PUT /api/v1/project/{id}接口
## 功能特性
- 更新时检查编码唯一性(排除自身)
- 支持状态更新
- 自动记录更新人和更新时间
|
2026-02-17 15:41:58 +08:00 |
|
zhangjf
|
075525d577
|
feat: 需求工单管理模块完整实现
## 新增功能
### 需求工单实体层
- Requirement.java: 需求工单实体类
- RequirementMapper.java: MyBatis-Plus Mapper接口
- RequirementDataService.java: 数据访问服务
### 业务层
- RequirementDTO.java: 数据传输对象
- RequirementVO.java: 视图对象
- RequirementService.java: 业务服务实现
### 接口层
- RequirementController.java: REST API接口
- GET /api/v1/requirement/list - 分页查询
- GET /api/v1/requirement/{id} - 查询详情
- POST /api/v1/requirement - 创建需求
- PUT /api/v1/requirement/{id} - 更新需求
- DELETE /api/v1/requirement/{id} - 删除需求
- PUT /api/v1/requirement/{id}/status - 更新状态
- PUT /api/v1/requirement/{id}/progress - 更新进度
### 数据库
- requirement.sql: 建表SQL脚本
|
2026-02-17 15:34:40 +08:00 |
|
zhangjf
|
da445a44de
|
feat: D.3/F.1/F.3任务实施 - Nacos配置中心/读写分离/索引优化
## D.3 Nacos统一配置中心
- 添加spring-cloud-starter-alibaba-nacos-config依赖
- 创建bootstrap.yaml配置文件
- DynamicConfig: @RefreshScope动态配置刷新示例
## F.1 ShardingSphere读写分离
- 添加shardingsphere-jdbc-core依赖
- sharding-config.yaml: 读写分离配置示例
- 支持主从切换、负载均衡策略
## F.3 数据库索引优化
- db-index-optimization.sql: 全库索引优化脚本
- 用户/角色/菜单/部门表索引
- 用款/支出/收款表索引
- 复合索引优化常用查询场景
|
2026-02-17 15:14:19 +08:00 |
|