feat(card): 添加未写卡状态并更新相关逻辑
- 在 SeManagementCard 模型中添加未写卡状态(4)
- 在 ManagementCardStateENUM 枚举中添加 UNWRITTEN 状态- 更新 SeClientCardMapper.xml 中的查询逻辑,排除未写卡状态
- 修改 CardSv 中创建管理卡的默认状态为未写卡
- 在 README.md 中添加 ID 生成器的使用说明
| | |
| | | - **工具集**: Hutool 5.8.22 |
| | | - **日志框架**: Log4j2 2.20.0 |
| | | |
| | | ## ID生成器使用说明 |
| | | |
| | | 系统使用自定义的IDLongGenerator来生成唯一的Long型ID,确保在分布式环境下的ID唯一性。 |
| | | |
| | | ### IDLongGenerator特性 |
| | | |
| | | - **格式**: `年月日时分秒` + `3位自增序列` + `2位系统后缀` |
| | | - **长度**: 19位数字(如:20231218104504069**00**) |
| | | - **并发性**: 支持同一秒内生成1000个不同ID |
| | | - **分布式**: 通过后缀区分不同子系统,避免ID冲突 |
| | | |
| | | ### 使用方式 |
| | | |
| | | ```java |
| | | // 依赖注入 |
| | | @Autowired |
| | | private IDLongGenerator idLongGenerator; |
| | | |
| | | // 生成ID |
| | | Long id = idLongGenerator.generate(); |
| | | ``` |
| | | |
| | | ### 应用场景 |
| | | |
| | | - **管理卡创建**: createManagementCard方法中使用IDLongGenerator生成管理卡ID |
| | | - **实体主键**: 所有业务实体的主键ID生成 |
| | | - **订单号**: 业务流水号生成 |
| | | - **日志记录**: 操作记录的唯一标识 |
| | | |
| | | ### 配置说明 |
| | | |
| | | 系统启动时会自动设置ID后缀,不同的服务模块使用不同的后缀来避免ID冲突: |
| | | |
| | | ```xml |
| | | <!-- web.xml或Spring配置 --> |
| | | <context-param> |
| | | <param-name>idSuffix</param-name> |
| | | <param-value>01</param-value> <!-- 不同服务使用不同后缀 --> |
| | | </context-param> |
| | | ``` |
| | | |
| | | ## 开发环境搭建 |
| | | |
| | | ### 前置条件 |
| | |
| | | private Date cancelDt; |
| | | |
| | | /** |
| | | * 卡片状态;1-正常,2-已注销,3-已挂失 |
| | | * 卡片状态;1-正常,2-已注销,3-已挂失,4-未写卡 |
| | | */ |
| | | @NotNull(message = "卡片状态不能为空") |
| | | private Byte state; |
| | |
| | | <!--检查卡地址是否已存在(管理卡表 + 农户水卡表)--> |
| | | <select id="checkCardAddrExists" resultType="java.lang.Long"> |
| | | SELECT COUNT(*) AS totalCount FROM ( |
| | | -- 检查管理卡表中正常(1)和挂失(3)状态的记录 |
| | | -- 检查管理卡表中正常(1)和挂失(3)状态的记录,排除已注销(2)和未写卡(4) |
| | | SELECT card_addr FROM se_management_card |
| | | WHERE card_addr = #{cardAddr} |
| | | AND state IN (1, 3) |
| | |
| | | .domain(dto.getDomain()) |
| | | .openClostTime(dto.getOpenClostTime()) |
| | | .remarks(dto.getRemarks()) |
| | | .state(ManagementCardStateENUM.NORMAL.getCode()) // 默认状态为正常 |
| | | .state(ManagementCardStateENUM.UNWRITTEN.getCode()) // 默认状态为未写卡 |
| | | .build(); |
| | | |
| | | // 插入数据库 |
| | |
| | | public enum ManagementCardStateENUM { |
| | | NORMAL((byte) 1, "正常"), |
| | | CANCELLED((byte) 2, "已注销"), |
| | | LOSS((byte) 3, "已挂失"); |
| | | LOSS((byte) 3, "已挂失"), |
| | | UNWRITTEN((byte) 4, "未写卡"); |
| | | |
| | | private final Byte code; |
| | | private final String message; |