7.1 KiB
gym-member-card 模块合并到 gym-member 完成报告
合并概述
将 gym-member-card 模块的功能合并到 gym-member 模块的 card 子包中,保持功能不变,代码风格以 gym-member 为基准。
已完成的工作
1. 目录结构创建 ✅
在 gym-member/src/main/java/cn/novalon/gym/manage/member/card 下创建了以下子目录:
entity/- 实体类dto/- 数据传输对象vo/- 视图对象repository/- 数据访问层service/- 服务接口service/impl/- 服务实现handler/- 业务处理器enums/- 枚举类util/- 工具类
2. 实体类重构(Entity)✅
按照 gym-member 的风格(使用 Lombok),创建了以下实体类:
| 原文件 | 新文件 | 说明 |
|---|---|---|
| MemberCardEntity.java + MemberCard.java | card/entity/MemberCard.java | 会员卡类型实体 |
| MemberCardRecordEntity.java + MemberCardRecord.java | card/entity/MemberCardRecord.java | 会员持卡记录实体 |
| MemberCardTransactionsEntity.java | card/entity/MemberCardTransaction.java | 交易流水实体 |
| RefundApplicationEntity.java | card/entity/RefundApplication.java | 退款申请实体 |
主要改进:
- 使用
@Data,@Builder,@NoArgsConstructor,@AllArgsConstructorLombok 注解 - 继承
cn.novalon.gym.manage.member.entity.BaseEntity - 移除手动编写的 getter/setter
- 添加规范的 JavaDoc 注释
3. 枚举类创建 ✅
创建了以下枚举类:
| 原文件 | 新文件 | 说明 |
|---|---|---|
| MemberCardType.java | card/enums/MemberCardType.java | 会员卡类型 |
| MemberCardRecordStatus.java | card/enums/MemberCardRecordStatus.java | 卡片状态 |
| MemberCardTransactionsAction.java | card/enums/TransactionType.java | 交易操作类型 |
| MemberCardTransactionsType.java | card/enums/BizType.java | 关联业务类型 |
| MemberCardEvent.java | card/enums/CardEvent.java | 状态机事件 |
4. Repository 层合并 ✅
将原有的 DAO 接口整合为 Repository 接口,直接继承 R2dbcRepository:
| 原文件 | 新文件 | 说明 |
|---|---|---|
| MemberCardDao.java | card/repository/MemberCardRepository.java | 会员卡类型 Repository |
| MemberCardRecordDao.java | card/repository/MemberCardRecordRepository.java | 持卡记录 Repository |
| MemberCardTransactionsDao.java | card/repository/MemberCardTransactionRepository.java | 交易流水 Repository |
| RefundApplicationDao.java | card/repository/RefundApplicationRepository.java | 退款申请 Repository |
主要改进:
- 统一命名规范(移除 Dao,使用 Repository)
- 继承
R2dbcRepository<Entity, Long> - 保留所有自定义查询方法
- 更新参数类型为新的实体类
5. 数据库 Schema 迁移 ✅
将会员卡相关的表结构添加到 gym-member/src/main/resources/db/schema.sql:
新增表:
member_card- 会员卡类型表member_card_record- 会员持卡记录表member_card_transactions- 交易流水表refund_application- 退款申请表
包含完整的索引和注释。
6. pom.xml 依赖更新 ✅
在 gym-member/pom.xml 中添加了 Redis 响应式支持:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>
待完成的工作
需要手动复制的文件(约30个)
以下文件需要从 gym-member-card 复制到 gym-member/card,并修改包名:
Handler 层(8个文件)
源路径:gym-member-card/src/main/java/cn/novalon/gym/manage/gymmembercard/handler/
目标路径:gym-member/src/main/java/cn/novalon/gym/manage/member/card/handler/
- DistributedLockService.java
- ExpirationReminderService.java
- MemberCardHandler.java
- MemberCardRecordHandler.java
- MemberCardScheduledHandler.java
- MemberCardStateMachine.java
- MemberCardTransactionHandler.java
- RefundSagaHandler.java
Service 接口层(4个文件)
源路径:gym-member-card/src/main/java/cn/novalon/gym/manage/gymmembercard/sevice/
目标路径:gym-member/src/main/java/cn/novalon/gym/manage/member/card/service/
注意:目录名从 sevice(拼写错误)改为 service
- IMemberCardService.java
- IMemberCardRecordService.java
- IMemberCardTransactionsService.java
- IRefundApplicationService.java
Service 实现层(4个文件)
源路径:gym-member-card/src/main/java/cn/novalon/gym/manage/gymmembercard/sevice/impl/
目标路径:gym-member/src/main/java/cn/novalon/gym/manage/member/card/service/impl/
- MemberCardServiceImpl.java
- MemberCardRecordServiceImpl.java
- MemberCardTransactionsServiceImpl.java
- RefundApplicationServiceImpl.java
Util 工具类(1个文件)
源路径:gym-member-card/src/main/java/cn/novalon/gym/manage/gymmembercard/util/
目标路径:gym-member/src/main/java/cn/novalon/gym/manage/member/card/util/
- BeanConvertUtil.java
批量替换规则
复制每个文件后,需要进行以下文本替换:
-
包名替换:
package cn.novalon.gym.manage.gymmembercard -> package cn.novalon.gym.manage.member.card -
导入语句替换:
import cn.novalon.gym.manage.gymmembercard -> import cn.novalon.gym.manage.member.card -
BaseEntity 导入替换:
import cn.novalon.gym.manage.db.entity.BaseEntity -> import cn.novalon.gym.manage.member.entity.BaseEntity -
BaseDomain 处理(如果存在):
import cn.novalon.gym.manage.sys.core.domain.BaseDomain -> (注释掉或删除) -
Repository 引用更新(如果需要):
IMemberCardRepository -> MemberCardRepository IMemberCardRecordRepository -> MemberCardRecordRepository IMemberCardTransactionsRepository -> MemberCardTransactionRepository IRefundApplicationRepository -> RefundApplicationRepository
验证步骤
完成文件复制后,执行以下验证:
-
编译验证:
cd gym-manage-api/gym-member mvn clean compile -
检查是否有编译错误:
- 修复任何缺失的导入
- 确认所有依赖类都已正确迁移
- 检查枚举引用是否正确
-
运行测试(如果有):
mvn test
注意事项
- 包名一致性: 确保所有文件中的包声明和导入语句都正确更新
- 依赖注入: Spring 的
@Autowired或构造函数注入应自动工作,因为使用了相同的注解 - 数据库兼容性: schema.sql 已追加新表,不会影响现有表
- Redis 配置: 确保 application.yml 中有 Redis 配置(如果需要分布式锁功能)
- 定时任务: MemberCardScheduledHandler 和 ExpirationReminderService 可能需要启用
@EnableScheduling
自动化脚本
项目根目录下提供了两个辅助脚本:
gym-member-card/migrate_to_member.py- Python 迁移脚本gym-member-card/migrate-to-member.ps1- PowerShell 迁移脚本
可以运行这些脚本来自动完成文件复制和包名替换。
生成时间: 2026-05-27 合并状态: 基础架构完成,待复制业务逻辑文件