33 lines
3.1 KiB
Markdown
33 lines
3.1 KiB
Markdown
## 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)。
|
||
- 编写单元测试和集成测试。
|
||
- 前端页面对接和开发。
|
||
- 根据实际测试反馈进一步完善错误处理和日志。 |