3.1 KiB
3.1 KiB
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.page和getQueryWrapper,并实现Page<ActivationCode>到Page<ActivationCodeVO>的转换逻辑,包括填充userName。
- 创建
-
依赖注入与注解:
- 正确使用了
@Service,@Resource,@RestController,@RequestMapping,@PostMapping,@RequestBody,@AuthCheck,@Transactional,@Slf4j等注解。
- 正确使用了
-
项目结构: 相关类已放置在规范的包路径下。
-
待办与后续:
- 编写 API 文档 (Swagger/OpenAPI)。
- 编写单元测试和集成测试。
- 前端页面对接和开发。
- 根据实际测试反馈进一步完善错误处理和日志。