Files
mqtt_power/LogBook.md
2025-05-18 19:52:17 +08:00

3.1 KiB
Raw Blame History

2024-07-29 (用户激活码功能 - 后端主体)

  • 核心业务逻辑实现 (Service & Impl):

    • 创建 ActivationCodeService.java 接口,定义了激活码生成 (generateCodes)、兑换 (redeemCode) 和查询条件构建 (getQueryWrapper) 的方法。
    • 创建 ActivationCodeServiceImpl.java 实现类:
      • generateCodes: 实现批量生成激活码的逻辑,使用 UUID 生成唯一码,支持自定义数量、面值、过期时间和批次号,并进行批量保存。
      • redeemCode: 实现用户兑换激活码的逻辑,包含参数校验、激活码状态(是否存在、已用、过期)校验,调用 UserService.increaseBalance() 增加用户余额,并更新激活码状态。整个过程使用 @Transactional 保证事务原子性。
      • getQueryWrapper: 根据 ActivationCodeQueryRequest 中的各种条件如激活码、使用状态、批次号、用户ID、面值范围、过期时间范围、创建时间范围构建 MyBatis Plus 查询条件,并处理排序(默认按创建时间降序)。
  • 数据传输对象 (DTO) & 视图对象 (VO):

    • com.yupi.project.model.dto.activationcode 包下创建了以下 DTO
      • RedeemCodeRequest.java: 用户兑换激活码请求 (包含 code)。
      • GenerateCodesRequest.java: 管理员生成激活码请求 (包含 count, value, expireTime, batchId)。
      • ActivationCodeQueryRequest.java: 管理员查询激活码请求,继承自 PageRequest,包含多种筛选条件。
    • com.yupi.project.model.vo 包下创建了 ActivationCodeVO.java:
      • 包含激活码详细信息,并为已使用的激活码增加了 userName 字段(用于显示使用者用户名),日期时间字段使用 @JsonFormat 格式化。
  • API 控制器 (Controller):

    • 创建 ActivationCodeController.java,定义了以下 RESTful API 接口:
      • POST /api/activation-code/redeem: 用户兑换激活码接口。需要用户登录。调用 activationCodeService.redeemCode
      • POST /api/activation-code/admin/generate: 管理员批量生成激活码接口。使用 @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) 进行权限控制。调用 activationCodeService.generateCodes
      • POST /api/activation-code/admin/list/page: 管理员分页查询激活码接口。使用 @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) 进行权限控制。调用 activationCodeService.pagegetQueryWrapper,并实现 Page<ActivationCode>Page<ActivationCodeVO> 的转换逻辑,包括填充 userName
  • 依赖注入与注解:

    • 正确使用了 @Service, @Resource, @RestController, @RequestMapping, @PostMapping, @RequestBody, @AuthCheck, @Transactional, @Slf4j 等注解。
  • 项目结构: 相关类已放置在规范的包路径下。

  • 待办与后续:

    • 编写 API 文档 (Swagger/OpenAPI)。
    • 编写单元测试和集成测试。
    • 前端页面对接和开发。
    • 根据实际测试反馈进一步完善错误处理和日志。