87 Commits

Author SHA1 Message Date
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
zhangjf
23c8f81ebd feat: P3任务实施 - Sentinel熔断降级/HikariCP优化/AES加密
## 新增功能

### D.2 Sentinel熔断降级
- SentinelConfig: 自定义熔断降级响应
- SentinelRuleConfig: 网关流控规则配置
- 添加sentinel依赖到fund-gateway

### F.2 HikariCP连接池优化
- 完善HikariCP配置参数
- HikariMonitorConfig: 连接池监控配置
- 每5分钟打印连接池状态

### H.3 敏感数据加密
- AESUtils: AES-256-GCM加密工具类
- 支持加密/解密/手机号脱敏/身份证脱敏/银行卡脱敏
- 使用SHA-256生成密钥

### 单元测试
- AESUtilsTest: 10个测试用例验证加密功能
- 测试覆盖: 加密解密/中文/长文本/错误密钥/多次加密/脱敏
2026-02-17 15:06:22 +08:00
zhangjf
5d4cdd5c33 fix: RateLimitConfig添加@Primary注解解决多KeyResolver冲突 2026-02-17 14:55:25 +08:00
zhangjf
281bbc992d feat: 实现资金平台核心功能模块
## 新增功能

### Gateway增强 (P0)
- GlobalLogFilter: 全局日志过滤器,生成TraceId
- JwtAuthFilter: JWT鉴权过滤器,白名单机制
- RateLimitConfig: 基于Redis的限流配置

### 权限管理模块 (P1/P3)
- A.1 用户管理: UserDTO/UserVO/UserService/UserController
- A.2 角色管理: RoleDTO/RoleVO/RoleService/RoleController
- A.3 菜单管理: MenuDTO/MenuVO/MenuService/MenuController
- A.4 部门管理: DeptDTO/DeptVO/DeptService/DeptController

### 业务模块 (P1/P3)
- B.1 fund-req用款申请: 完整审批流程
- B.2 fund-exp支出管理: 支付确认流程
- B.3 fund-receipt收款管理: 确认核销流程

### 服务治理 (P1/P2)
- D.1 Nacos服务注册: 所有服务集成Nacos
- I.1 Redis缓存: RedisService/RedisConfig
- E.1 ELK日志: logback-spring.xml JSON格式

## 技术栈
- Spring Cloud Gateway 4.0.0
- Spring Cloud Alibaba 2023.0.0
- MyBatis-Plus 3.5.5
- JWT (jjwt 0.11.5)
- Redis + Lettuce
2026-02-17 14:30:04 +08:00
zhangjf
a17307a96e feat: 完成资金服务平台六步实施 - 数据库初始化+服务启动+网关配置
本次提交包含:
1. 11个Maven模块全部创建并编译通过
2. 4个数据库初始化脚本(14张表)
3. fund-sys服务启动验证
4. Gateway路由配置完成
5. API端到端测试通过

核心能力:
- 多租户数据隔离(MyBatis-Plus)
- JWT认证+BCrypt密码
- 统一返回结构
- 参数校验
- OpenFeign示例
- API网关统一入口

修复:
- MyBatis-Plus与Spring Boot 3兼容性问题
- BaseEntity字段类型统一(Long)
- Gateway版本兼容性
2026-02-17 12:53:55 +08:00
zhangjf
32863c5ce3 docs: 补充 Controller 职责与参数校验规范\n\n- 在开发规范中新增 8.4 Controller 与请求参数校验规范\n- 明确 Controller 只负责数据接收/校验、调用业务Service和封装返回结果\n- 建议使用 @Valid/@Validated + @NotBlank/@NotNull 等注解做必填校验\n- 提供登录接口参数校验示例和全局异常处理示例 2026-02-17 10:22:58 +08:00
zhangjf
6e75d23f1e docs: 增补 MyBatis-Plus 使用规范\n\n- 明确 ServiceImpl 仅负责数据访问,不承载业务逻辑\n- 约定数据服务类命名为 XxxDataService,业务服务命名为 XxxService 等\n- 禁止在 MyBatis ServiceImpl 中使用 @Slf4j,避免与 MyBatis Log 冲突\n- 建议将 Entity/Mapper/ServiceImpl 封装在独立 data 包下,与业务服务层物理隔离 2026-02-17 10:00:23 +08:00
zhangjf
2c22213326 docs: 补充 OpenFeign 参数对象管理策略\n\n- 在 2.3 章节新增 2.3.6 参数对象(DTO)管理策略\n- 约定通用参数对象放在 fund-common 独立模块\n- 领域业务参数对象按服务分模块管理,避免跨模块 Java 类型耦合\n- 明确消费方可定义本地 DTO 并在 Service 层做映射\n- 修复技术架构章节标题被覆盖的问题 2026-02-17 09:51:05 +08:00
zhangjf
cf0db27bc5 docs: 补充模块通信方式说明
新增内容:
- 2.3 模块通信方式章节
  - 2.3.1 基础服务 - Maven 依赖方式
  - 2.3.2 业务服务 - OpenFeign 通信方式
  - 2.3.3 通信链路追踪
  - 2.3.4 通信架构图
  - 2.3.5 通信方式选择标准

关键说明:
✓ fund-common 等基础服务采用 Maven 依赖方式
✓ 业务服务间采用 OpenFeign 进行 HTTP 通信
✓ 自动传递租户ID、用户信息、链路追踪ID
✓ 提供完整的代码示例和架构图
✓ 明确反模式,避免错误使用
2026-02-17 09:28:37 +08:00
zhangjf
297ea8e259 chore: 删除开发规则清单文档
按照规范,不应主动创建文档文件
2026-02-17 09:22:53 +08:00
zhangjf
32abc57338 feat: 添加开发规则清单和完善前后端配置
主要变更:
1. 开发规范文档
   - 新增《开发规则清单.md》,涵盖技术栈、Maven配置、Lombok规范等
   - 记录 Lombok 在 Java 21 + Spring Boot 3 中的已知问题
   - 建立代码生成和开发流程规范

2. 前端功能增强
   - 新增系统配置管理页面(sysConfig.vue)
   - 新增数据字典管理页面(sysDict.vue)
   - 新增财务收据管理页面(receipt.vue)
   - 更新登录认证 API 配置

3. Docker 部署配置
   - 新增应用容器配置(docker-compose.yml)
   - 新增 Nginx 反向代理配置
   - 新增 ELK 日志收集配置(Elasticsearch + Logstash + Filebeat)

4. 性能测试工具
   - 新增 JMeter 测试计划(fundplatform-test-plan.jmx)
   - 新增性能测试执行脚本

5. 环境配置更新
   - 更新 .env 环境变量配置
   - 同步 fundplatform 子模块最新提交
2026-02-17 09:19:14 +08:00
zhangjf
efd1810e11 feat: UniApp移动端核心页面全部完成
新增页面:
1. receipt/add.vue (535行) - 收款录入
   * 金额输入(渐变样式)
   * 收款方式选择(银行/支付宝/微信/现金/支票)
   * 客户/项目关联选择
   * 多图上传(最多3张)
   * 图片预览和删除

2. customer/list.vue (503行) - 客户列表
   * 搜索功能
   * 等级筛选(A/B/C级)
   * 下拉刷新/上拉加载
   * 客户卡片(头像/等级/统计)
   * 一键拨号

3. customer/detail.vue (529行) - 客户详情
   * 基本信息展示
   * 合作统计(项目/合同/收支)
   * 时间轴记录
   * 联系功能(电话/邮件)

4. project/list.vue (512行) - 项目列表
   * 状态筛选(未启动/进行中/已完成/已暂停)
   * 进度条展示
   * 财务统计(合同/已收/未收)
   * 下拉刷新/上拉加载

5. project/detail.vue (569行) - 项目详情
   * 项目基本信息
   * 进度圆环展示
   * 项目阶段时间轴
   * 财务情况统计
   * 项目成员展示

6. my/index.vue (434行) - 个人中心
   * 用户信息卡片(渐变背景)
   * 快捷功能入口
   * 功能菜单列表
   * 消息角标
   * 退出登录

总代码量:3082行

功能特性:
- 完整的移动端UI设计
- 与后端API对接
- JWT认证集成
- 图片上传功能
- 下拉刷新/上拉加载
- 电话拨打集成
2026-02-16 11:40:19 +08:00
zhangjf
b38940cf83 docs: 部署文档添加移动端发布和访问说明
更新:
- deploy.sh: 添加移动端部署命令
  * mobile dev - 启动开发服务器
  * mobile h5 - 构建H5版本
  * mobile mp-weixin - 构建微信小程序
  * mobile app - 构建App
  * 服务启动时显示移动端访问地址

新增:
- MOBILE_DEPLOY.md: 移动端部署指南(173行)
  * 支持平台说明(H5/小程序/App)
  * 快速部署步骤
  * 各平台构建和发布流程
  * 配置说明和常见问题

访问地址:
- H5: http://localhost/mobile
- 开发调试: cd fund-mobile && npm run dev:h5
2026-02-16 11:28:40 +08:00
zhangjf
515590477b feat: UniApp移动端项目初始化及核心页面开发
新增:
- fund-mobile/: UniApp移动端项目(Vue3 + TypeScript)
- manifest.json: 应用配置(支持H5/小程序/App)
- pages.json: 页面路由及TabBar配置
- App.vue: 应用入口,登录状态检查

核心页面:
- login/index.vue: 登录页面(193行)
  * 渐变背景设计
  * JWT登录集成
  * 本地存储token

- index/index.vue: 首页(338行)
  * 数据概览卡片(今日收支/待收付款)
  * 快捷操作入口
  * 最近收支列表

- expense/add.vue: 支出录入(339行)
  * 表单验证
  * 图片上传(拍照/相册)
  * 关联项目选择

配置:
- config/api.ts: API接口地址配置
- utils/request.ts: 请求拦截封装

技术栈:
- Vue 3 Composition API
- TypeScript
- UniApp跨端框架
- SCSS样式

支持平台:
- H5
- 微信小程序
- App(Android/iOS)
2026-02-16 11:26:16 +08:00
zhangjf
67832bd108 fix: 前端模块完整性修复 2026-02-16 10:40:13 +08:00
zhangjf
0eae7f2aaf feat: 移动端适配(响应式优化) 2026-02-16 10:17:01 +08:00
zhangjf
c7904a9f8b docs: 同步文件上传管理模块文档
更新内容:

1. API接口文档.md
   - 新增「十六、文件管理接口」章节(194行)
   - 7个核心接口文档:
     * 16.1 上传文件(multipart/form-data)
     * 16.2 分页查询文件列表
     * 16.3 根据业务类型和ID查询文件列表
     * 16.4 获取文件详情
     * 16.5 删除文件
     * 16.6 获取文件访问URL
     * 16.7 文件类型说明(支持的MIME类型)
   - 完整的请求参数、响应示例、字段说明
   - 文件类型白名单、大小限制说明
   - 调整附录章节编号为「十七」

2. 资金服务平台 FundPlatform 功能清单.md
   - 新增「4.1.3 文件管理」章节
   - 标记文件管理功能为已完成 
   - 添加实现状态说明:
     * 后端:FileRecord + FileRecordMapper + FileService + FileController
     * 前端:file.js + file.vue
     * 功能清单:12大功能点
     * 支持文件类型、存储方式、业务关联

文档与代码同步完成!
2026-02-16 09:59:21 +08:00
zhangjf
7fe78d6c19 feat: 文件上传管理模块前端实现
前端实现:
- file.js: API接口封装(68行,6个接口)
  - uploadFile(): 上传文件(multipart/form-data)
  - getFileList(): 分页查询
  - getFileListByBusiness(): 按业务查询
  - getFileById(): 查询详情
  - deleteFile(): 删除文件
  - getFileUrl(): 获取URL

- file.vue: 文件管理页面(403行)
  - 搜索功能:文件名、业务类型、关联业务ID
  - 表格展示:文件ID、文件名(链接)、业务类型标签、关联ID、大小、类型、上传人、时间
  - 上传功能:el-upload组件、业务类型选择、关联ID输入
  - 预览功能:图片预览、PDF预览、其他文件提示
  - 下载功能:获取URL后下载
  - 删除功能:确认后删除

技术特点:
- 文件上传(multipart/form-data)
- 文件大小格式化(B/KB/MB/GB)
- 业务类型标签(合同/收款/支出/其他)
- 图片/PDF预览
- 文件选择对话框

模块状态: 完整(前端+后端)
2026-02-16 09:57:31 +08:00
zhangjf
c184e649ee docs: 同步人员分配模块文档
更新内容:

1. API接口文档.md
   - 新增「四、人员分配管理接口」章节(159行)
   - 5个核心接口文档:
     * 4.1 分页查询用户分配列表(支持多条件过滤)
     * 4.2 根据部门ID查询用户列表
     * 4.3 分配用户到部门和岗位
     * 4.4 批量分配用户
     * 4.5 移除用户分配
   - 完整的请求参数、响应示例、字段说明
   - 包含部门名称、岗位名称的VO结构
   - 调整后续所有章节编号(五~十六)

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「人员分配(部门人员配置)」为已完成 
   - 添加实现状态说明:
     * 后端:UserAssignmentVO + UserAssignmentService + UserAssignmentController
     * 前端:userAssignment.js + userAssignment.vue
     * 功能清单:8大功能点
     * 批量分配、未分配筛选、职位管理

文档与代码同步完成!
2026-02-16 09:51:56 +08:00
zhangjf
8ac97bb313 feat: 人员分配模块前端实现
前端实现:
- userAssignment.js: API接口封装(56行,5个接口)
  - getUserAssignmentList(): 分页查询
  - getUserListByDept(): 按部门查询
  - assignUser(): 分配用户
  - batchAssignUsers(): 批量分配
  - removeUserAssignment(): 移除分配

- userAssignment.vue: 人员分配页面(408行)
  - 搜索功能:用户名、真实姓名、部门(树选择)、岗位、状态
  - 表格展示:用户信息、部门标签、岗位标签、职位、状态
  - 批量操作:多选批量分配
  - 筛选功能:仅显示未分配用户
  - 分配对话框:部门树选择、岗位下拉、职位输入
  - 移除分配:确认后移除部门/岗位关联

技术特点:
- 多条件组合搜索
- 表格多选(el-table selection)
- 部门树选择器
- 岗位下拉选择
- 状态标签展示
- 批量分配优化

模块状态: 完整(前端+后端)
2026-02-16 09:48:22 +08:00
zhangjf
25776cc9a4 docs: 同步岗位管理模块文档
更新内容:

1. API接口文档.md
   - 新增「三、岗位管理接口」章节(256行)
   - 8个核心接口文档:
     * 3.1 分页查询岗位列表(支持多条件过滤)
     * 3.2 按部门ID查询岗位列表
     * 3.3 获取所有启用的岗位列表
     * 3.4 获取岗位详情
     * 3.5 创建岗位
     * 3.6 更新岗位
     * 3.7 删除岗位
     * 3.8 更新岗位状态
   - 完整的请求参数、响应示例、字段说明
   - 调整后续所有章节编号(四~十五)

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「岗位管理(岗位定义、职责描述)」为已完成 
   - 添加实现状态说明:
     * 后端:PostMapper + PostService + PostController
     * 前端:post.js + post.vue
     * 功能清单:8大功能点
     * 部门树选择器、状态管理、职责描述

文档与代码同步完成!
2026-02-16 09:43:22 +08:00
zhangjf
84adda022e feat: 岗位管理模块前端实现
前端实现:
- post.js: API接口封装(86行,8个接口)
  - getPostList(): 分页查询
  - getPostListByDept(): 按部门查询
  - getPostListEnabled(): 获取启用的岗位
  - getPostById(): 查询详情
  - createPost(): 创建岗位
  - updatePost(): 更新岗位
  - deletePost(): 删除岗位
  - updatePostStatus(): 更新状态

- post.vue: 岗位管理页面(416行)
  - 搜索功能:岗位编码、名称、所属部门(树选择)、状态
  - 表格展示:编码、名称、部门、职责、排序、状态、时间
  - 状态开关:el-switch直接切换状态
  - 新增/编辑对话框:
    * 岗位编码、名称(必填)
    * 所属部门(树选择器)
    * 岗位职责、岗位要求(多行文本)
    * 排序号、状态、备注

技术特点:
- 部门树选择器(el-tree-select)
- 状态开关(el-switch)
- 表单验证(必填项)
- 删除确认

模块状态: 完整(前端+后端)
2026-02-16 09:40:00 +08:00
zhangjf
2b7c43366b docs: 同步数据统计分析模块文档
更新内容:

1. API接口文档.md
   - 新增「十三、数据统计分析接口」章节(129行)
   - 13.1 获取仪表盘统计数据
     * 完整的请求参数、响应示例
     * 包含概览、收支、趋势、分布等多维度数据
   - 13.2 响应字段说明
     * 概览数据:项目数、客户数、合同数、需求工单数
     * 收支统计:总收入、总支出、净利润、应收款、逾期金额
     * 本月数据:本月收入/支出、新增项目/客户
     * 趋势数据:月度收入/支出趋势(List结构)
     * 分布数据:项目状态、支出类型、应收款状态分布
   - 调整附录章节编号为「十四」

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「4.6.5 支出统计分析」为已完成 
   - 添加实现状态说明:
     * 后端:DashboardVO + DashboardService + DashboardController
     * 前端:dashboard.js + dashboard/index.vue
     * 功能清单:概览、收支、本月、趋势、分布
     * 图表:ECharts折线图、环形饼图
     * 响应式设计

文档与代码同步完成!
2026-02-16 09:36:39 +08:00
zhangjf
81e919ad3c feat: 数据统计分析模块前端实现
前端实现:
- dashboard.js: API接口封装(13行)
- dashboard/index.vue: 仪表盘页面(576行)

页面布局:
1. 概览卡片(4个)
   - 项目总数(含本月新增)
   - 客户总数(含本月新增)
   - 合同总数
   - 需求工单数

2. 收支概览(3个)
   - 总收入(含本月收入)
   - 总支出(含本月支出)
   - 净利润(含利润率)

3. 应收款概览(3个)
   - 应收款总额
   - 待收款金额(橙色警示)
   - 逾期金额(红色警示)

4. 图表区域(4个)
   - 收支趋势折线图(最近12个月)
   - 项目状态分布饼图
   - 支出类型分布饼图
   - 应收款状态分布饼图

技术特点:
- ECharts图表库:折线图、环形饼图
- 响应式设计:窗口大小变化自动重绘
- 渐变色卡片:现代化UI设计
- 金额格式化:千分位分隔、保留2位小数
- 图表tooltip:金额/百分比格式化显示
- 组件销毁时清理资源

模块状态: 完整(前端+后端)
2026-02-16 09:35:23 +08:00
zhangjf
39577a9b11 docs: 同步部门管理模块文档
更新内容:

1. API接口文档.md
   - 新增「二、部门管理接口」章节(229行)
   - 6个核心接口文档:
     * 2.1 获取部门树(树形结构)
     * 2.2 获取部门列表(扁平结构)
     * 2.3 获取部门详情
     * 2.4 新增部门
     * 2.5 更新部门
     * 2.6 删除部门
   - 完整的请求参数、响应示例、字段说明
   - 部门层级结构展示(children嵌套)
   - 调整后续所有章节编号(三~十三)

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「4.1.2 组织架构管理」为已完成 
   - 标记「部门管理(增删改查、层级关系)」为已完成 
   - 添加实现状态说明:
     * 后端:DeptMapper + DeptService + DeptController
     * 前端:dept.js + dept.vue
     * 功能清单:10大功能点
     * 树形结构展示
     * 层级管理、负责人管理、状态管理

文档与代码同步完成!

注意:部门管理的前后端代码早期已完成,本次仅补充文档同步。
2026-02-16 09:12:39 +08:00
zhangjf
c115a0b58c docs: 同步操作日志管理模块文档
更新内容:

1. API接口文档.md
   - 新增「十一、操作日志管理接口」章节(165行)
   - 4个核心接口文档:
     * 11.1 获取操作日志列表(分页+多条件过滤)
     * 11.2 获取操作日志详情
     * 11.3 删除操作日志
     * 11.4 批量删除操作日志
   - 11.5 操作类型说明表(8种操作类型+标签颜色)
   - 完整的请求参数、响应示例、字段说明
   - 时间格式说明(yyyy-MM-dd HH:mm:ss)
   - 调整附录章节编号为「十二」

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「操作日志记录与查询」为已完成 
   - 添加实现状态说明:
     * 后端:OperationLogMapper + OperationLogService + OperationLogController
     * 前端:operationLog.js + operationLog.vue
     * 功能清单:7大功能点
     * 操作类型:8种类型(查询/新增/更新/删除/导入/导出/登录/登出)
     * 性能监控:执行时长超时标红

文档与代码同步完成!
2026-02-16 09:08:36 +08:00
zhangjf
d8dcbd0ef2 feat: 操作日志管理前端实现
前端实现:
- operationLog.js: API接口封装(44行,4个接口)
- operationLog.vue: 管理页面(351行)

页面特点:
- 搜索:模块、操作类型、操作人、时间范围
- 表格:模块、操作类型(标签)、请求信息、执行时长、状态
- 详情:完整的请求参数、响应结果、错误信息
- 批量清理:删除N天前的日志(7-365天)

操作类型:查询/新增/更新/删除/导入/导出/登录/登出

模块状态: 完整(前端+后端)
2026-02-16 09:07:37 +08:00
zhangjf
3dd1b88749 docs: 同步项目成员管理模块文档
更新内容:

1. API接口文档.md
   - 在「六、项目管理接口」章节新增7个项目成员管理接口:
     * 6.6 获取项目成员列表(按项目ID)
     * 6.7 获取用户的项目列表(按用户ID)
     * 6.8 获取项目成员详情
     * 6.9 添加项目成员
     * 6.10 更新项目成员
     * 6.11 移除项目成员
     * 6.12 更新成员状态
   - 完整的请求参数、响应示例、字段说明
   - 角色类型说明(pm/dev/test/finance/member)

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「4.3.2 项目关联管理」为已完成 
   - 添加实现状态说明:
     * 后端:ProjectMemberMapper + ProjectMemberService + ProjectMemberController
     * 前端:projectMember.js + projectMember.vue
     * 功能清单:7大功能点

文档与代码同步完成!
2026-02-16 09:04:06 +08:00
zhangjf
588ef25869 feat: 项目成员管理前端页面实现
前端实现:
- projectMember.js: API接口封装(7个接口)
- projectMember.vue: 项目成员管理页面

页面特点:
- 以项目为维度管理成员
- 角色类型:项目经理/开发/测试/财务/普通成员
- 状态管理:在职/已离开
- 工作量占比:0-100%

模块状态: 完整(前端+后端)
2026-02-16 09:03:00 +08:00