方圆的秒杀系统优化方案实战,(二)秒杀活动基础功能

本文探讨了秒杀活动的基础功能实现,包括发布、上线、下线秒杀活动,多条件查询等操作。提供了秒杀活动表结构的DDL语句,并展示了FlashActivityController的入口代码,适合了解秒杀系统基础操作和DDD架构。
摘要由CSDN通过智能技术生成

1. 说在前头

大家好,我是方圆。这篇博客主要介绍秒杀活动相关的功能,我不想把所有代码全都一一列出来,一是可读性很差,再者就是基础的CRUD功能最好的参考还是以GitHub代码库base-function分支为准最好,而且我在代码中也写清楚了详细的注释,方便大家阅读和自行改造

  • 主要功能如下
  1. 发布秒杀活动
  2. 秒杀活动上线
  3. 秒杀活动下线
  4. 根据ID获取秒杀活动
  5. 多条件查询秒杀活动
  • 另附秒杀活动表结构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));
    }
}

收!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方圆想当图灵

嘿嘿,小赏就行,不赏俺也不争你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值