1. 说在前头
大家好,我是方圆
。这篇博客主要介绍秒杀活动
相关的功能,我不想把所有代码全都一一列出来,一是可读性很差,再者就是基础的CRUD功能最好的参考还是以GitHub代码库的base-function分支
为准最好,而且我在代码中也写清楚了详细的注释,方便大家阅读和自行改造
- 主要功能如下
- 发布秒杀活动
- 秒杀活动上线
- 秒杀活动下线
- 根据ID获取秒杀活动
- 多条件查询秒杀活动
- 另附秒杀活动表结构DDL语句
-- 初始化秒杀活动表
CREATE TABLE IF NOT EXISTS flash_sale.`flash_activity` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`activity_name` varchar(30) NOT NULL COMMENT '秒杀活动名称',
`activity_desc` text COMMENT '秒杀活动描述',
`start_time` datetime NOT NULL COMMENT '秒杀活动开始时间',
`end_time` datetime NOT NULL COMMENT '秒杀活动结束时间',
`status` tinyint(2) DEFAULT NULL COMMENT '秒杀活动状态 10-已发布 20-已上线 30-已下线',
`modified_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '秒杀活动表';
2. FlashActivityController
- 我将Controller层中调用的入口放在这里,供大家参考,其实也只不过是一些简单的增删改查功能,如果大家没有接触过DDD架构,还是可以自己写一下,感受下不同层级对象的转换
@RestController
public class FlashActivityController {
@Resource
private FlashActivityAppService flashActivityAppService;
@ApiOperation(value = "发布秒杀活动")
@PostMapping(value = "/flash-activities/publish")
public <T> SingleResponse<T> publishFlashActivity(@RequestBody FlashActivityPublishRequest request) {
FlashActivityPublishCommand activityPublishCommand = FlashActivityConvertor.toCommand(request);
AppResult<T> appResult = flashActivityAppService.publishFlashActivity(activityPublishCommand);
return ResponseConvertor.with(appResult);
}
@ApiOperation(value = "上线秒杀活动")
@PutMapping(value = "/flash-activities/{activityId}/online")
@ApiImplicitParam(name = "activityId", value = "秒杀活动ID", dataTypeClass = Long.class)
public <T> SingleResponse<T> onlineFlashActivity(@PathVariable Long activityId) {
AppResult<T> appResult = flashActivityAppService.onlineFlashActivity(activityId);
return ResponseConvertor.with(appResult);
}
@ApiOperation(value = "下线秒杀活动")
@PutMapping(value = "/flash-activities/{activityId}/offline")
@ApiImplicitParam(name = "activityId", value = "秒杀活动ID", dataTypeClass = Long.class)
public <T> SingleResponse<T> offlineFlashActivity(@PathVariable Long activityId) {
AppResult<T> appResult = flashActivityAppService.offlineFlashActivity(activityId);
return ResponseConvertor.with(appResult);
}
@ApiOperation(value = "根据ID获取活动")
@GetMapping(value = "/flash-activities/{activityId}")
@ApiImplicitParam(name = "activityId", value = "秒杀活动ID", dataTypeClass = Long.class)
public SingleResponse<FlashActivityResponse> getFlashActivity(@PathVariable("activityId") Long activityId) {
return ResponseConvertor.with(flashActivityAppService.getFlashActivity(activityId));
}
@ApiOperation(value = "根据条件获取秒杀活动")
@PostMapping(value = "/flash-activities")
public SingleResponse<List<FlashActivityResponse>> getFlashActivities(@RequestBody FlashActivityQueryRequest request) {
FlashActivitiesQuery flashActivitiesQuery = FlashActivityConvertor.toQuery(request);
return ResponseConvertor.with(flashActivityAppService.getFlashActivities(flashActivitiesQuery));
}
}
收!