问答详情
源自:1-3 秒杀Service接口实现1

秒殺開啟時,輸出秒殺接口地址

@Override
public Exposer exportSeckillUrl(long seckillId) {
    Seckill seckill = seckillMapper.selectByPrimaryKey(seckillId);
    if (seckill == null) {
        return new Exposer(false, seckillId);
    }
    Date startTime = seckill.getStartTime();
    Date endTime = seckill.getEndTime();
    // 系统当前时间
    Date nowTime = new Date();
    if (nowTime.getTime() < startTime.getTime()
            || nowTime.getTime() > endTime.getTime()) {
        return new Exposer(false, seckillId, nowTime.getTime(),
                startTime.getTime(), endTime.getTime());
    }
    // 转化为特定字符串的转化过程,不可逆
    String md5 = getMd5(seckillId);
    return new Exposer(true, md5, seckillId);
}

为什么这个方法的第一句是通过seckillId获取秒杀商品对象,并且不存在seckill时,返回new Exposer(false, seckillId);
该商品还未开启秒杀并不等同于该商品不存在啊?是不是我在哪里理解错了,求解?

提问者:浣玉 2018-01-18 10:59

个回答

  • moocYhz
    2021-10-22 12:12:36

    因为这是服务接口,有可能seckillId不存在,或者商品被删除了!

    下载视频          

  • bigtree41642
    2018-05-04 14:34:33

    老师的代码挺规范的,如果没有这个商品,前端可以跟据开始时间与结束时间就可以判断前端要显示的逻辑

    三种情况:

    1.     exposed等于false, start_time, end_time, now_time == null, 没有这个商品

    2.     exposed== fasle, start_time,end_time, now_time 有值,未开启或已结束

    3.     exposed==true, 已开启,md5有值。

  • 浣玉
    2018-01-19 22:47:12

    我知道了,这个方法只是输出一个秒杀接口。