77 Commits

Author SHA1 Message Date
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
zhangjf
6702b92a95 docs: 同步收款记录模块文档
更新内容:

1. API接口文档.md
   - 新增「十、收款记录管理接口」章节
   - 包含5个接口文档
   - 完整的请求参数、响应示例、字段说明

2. 资金服务平台 FundPlatform 功能清单.md
   - 标记「4.7.2 收款管理」为已完成 
   - 添加实现状态说明

文档与代码同步完成!
2026-02-16 09:00:35 +08:00
zhangjf
a119826173 feat: 应收款管理优化 - 需求和客户改为下拉选择
功能优化:
- 将需求ID输入框改为需求工单下拉选择
- 将客户ID输入框改为客户下拉选择
- 添加需求和客户数据加载逻辑

前端改进:
1. 表单优化:
   - 需求工单:下拉选择,显示需求名称
   - 客户:下拉选择,显示客户名称
   - 添加 clearable 支持清空

2. 表格优化:
   - 新增需求工单列,显示需求名称
   - 新增客户列,显示客户名称
   - 调整列宽和顺序

3. 数据加载:
   - loadRequirements(): 加载需求列表
   - loadCustomers(): 加载客户列表
   - getRequirementName(): 根据ID获取需求名称
   - getCustomerName(): 根据ID获取客户名称

4. 表单验证:
   - 更新验证提示:'请选择需求工单' / '请选择客户'
   - 触发方式改为 'change'

用户体验提升:
- 更直观的下拉选择替代手动输入ID
- 表格显示名称而不是ID,更易读
- 支持搜索和清空选择

表格列顺序(优化后):
应收款编号 > 需求工单 > 客户 > 项目 > 应收款金额 > 已收款金额 > 未收款金额 > 应收款日期 > 付款截止日期 > 状态 > 逾期天数 > 创建时间 > 操作
2026-02-15 20:22:51 +08:00
zhangjf
db7a34f4f3 fix: 添加需求工单和财务管理菜单到前端侧边栏
问题:
- 前端菜单硬编码,缺少需求工单和财务管理模块
- 用户看不到这些功能的入口

根本原因:
- Layout.vue中的菜单是硬编码的,没有从后端动态加载
- 缺少需求工单、支出类型、支出管理、应收款管理的菜单项

修复内容:
1. 在项目管理下添加「需求工单」菜单项
2. 新增「财务管理」一级菜单
3. 在财务管理下添加:
   - 支出类型
   - 支出管理
   - 应收款管理
4. 导入Money图标

菜单结构(修复后):
- 首页
- 系统管理
  - 用户管理、角色管理、菜单管理
- 客户中心
  - 客户管理、联系人管理
- 项目管理
  - 项目管理、合同管理、需求工单 
- 财务管理 
  - 支出类型、支出管理、应收款管理

现在刷新页面即可看到完整菜单!
2026-02-15 20:12:18 +08:00
zhangjf
504da52c88 fix: 修复项目管理前端字段与后端Entity不匹配问题
问题:
- 项目金额在新增和编辑时不会更新
- 前端表单字段与后端Entity字段不一致
- projectAmount不存在于后端,应该是budgetAmount和contractAmount
- projectManager应该是projectManagerId (Long类型)
- projectDesc应该是description

修复:
1. 修正前端表单字段
   - projectAmount → budgetAmount (预算金额)
   - 新增 contractAmount (合同金额)
   - projectManager → projectManagerId
   - projectDesc → description
   - 新增 projectShort, projectType, remark等字段

2. 优化表单UI
   - 添加项目简称字段
   - 添加项目类型下拉选择(开发/维护/咨询)
   - 预算金额和合同金额分开显示
   - 添加备注字段

3. 修正表格显示列
   - 项目金额 → 预算金额 + 合同金额(两列)

现在前后端字段完全一致!
2026-02-15 19:44:47 +08:00
zhangjf
d1137f5528 feat: 创建合同管理表并插入测试数据
问题:
- 数据库缺少contract表,导致合同管理接口无法访问
- Entity类存在但数据库表缺失

修复内容:
1. 创建contract表(合同表)
   - 包含完整字段:contract_id, tenant_id, project_id, contract_code等
   - 与Contract实体类字段完全一致
   - 添加索引:租户、项目、客户、状态

2. 插入测试数据
   - 3条合同记录(对应3个项目)
   - 包含:北京科技ERP、上海金融数据分析、广州贸易官网

验证:
- Entity字段与数据库表字段完全匹配 
- 接口返回200,成功查询到3条合同 
2026-02-15 19:29:07 +08:00
zhangjf
2b5ab61668 fix: 修复联系人管理API路径不一致问题
问题:
- 前端API使用旧路径 /cust/api/v1/customer-contact
- 后端已改为 /cust/api/v1/contact
- getContactList接口参数不匹配(单个customerId vs params对象)

修复:
- 统一前端API路径为 /cust/api/v1/contact
- 修改getContactList为分页查询接口,支持params参数
- 修改前端页面调用方式,传递完整的查询参数
- 支持按客户ID和联系人姓名筛选

现在前后端API路径完全一致!
2026-02-15 19:11:01 +08:00
zhangjf
abded8ec75 feat: 完成所有前端页面和路由配置
项目成员管理:
- 创建 projectMember.vue 页面(318行)
  - 按项目查询成员列表
  - 添加/编辑/移除成员
  - 角色选择(项目经理/开发/测试/财务/普通成员)
  - 工作量占比滑块
  - 状态管理(在职/已离开)

应收款管理:
- 创建 receivable.vue 页面(475行)
  - 多条件搜索(编号、项目、状态)
  - 表格展示(应收款金额、已收款金额、未收款金额、逾期天数)
  - 新增/编辑应收款
  - 记录收款功能
  - 逾期提醒(红色显示)
  - 状态标签(待收款/部分收款/已收款/逾期)

路由配置:
- 添加项目成员管理路由(/project/member)
- 添加应收款管理路由(/finance/receivable)

所有核心模块前端页面全部完成!
2026-02-15 18:32:52 +08:00
zhangjf
0323717110 feat: 完成应收款管理模块
后端:
- 创建 Receivable 实体类(应收款编号、需求ID、项目ID、客户ID、金额、状态、逾期天数)
- 创建 ReceivableMapper 接口
- 创建 ReceivableService 业务逻辑层
  - 分页查询、保存/更新应收款
  - 自动计算未收款金额和逾期天数
  - 记录收款并自动更新状态
- 创建 ReceivableController 控制器(RESTful API)

前端:
- 创建 receivable.js API 文件(7个接口)

应收款管理模块核心功能完成!
2026-02-15 18:29:37 +08:00
zhangjf
6742515446 feat: 完成项目成员管理模块后端和API
后端:
- 创建 ProjectMember 实体类(项目ID、用户ID、角色、日期、工作量、状态)
- 创建 ProjectMemberMapper 接口
- 创建 ProjectMemberService 业务逻辑层(按项目查询、按用户查询、添加/更新/移除成员、状态管理)
- 创建 ProjectMemberController 控制器(RESTful API)

前端:
- 创建 projectMember.js API 文件(7个接口)

项目成员管理模块后端完成!
2026-02-15 18:26:17 +08:00
zhangjf
fe3230eb9c feat: 完成支出管理模块前端开发
- 创建 expense.js API 文件(完整的 CRUD 接口)
- 创建 expense.vue 管理页面
  - 多条件搜索(支出编号、支出类型、项目、状态)
  - 表格展示(支出编号、类型、金额、日期、事由、项目、付款方式、状态)
  - 新增/编辑表单(支持金额、日期、事由、项目、付款方式等管理)
  - 状态更新对话框(待付款/已付款/已完成/已作废)
  - 支出类型树形选择
  - 项目下拉选择
- 添加支出管理路由配置(/finance/expense)

支出管理模块全栈开发完成!
2026-02-15 18:20:59 +08:00