@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);
该商品还未开启秒杀并不等同于该商品不存在啊?是不是我在哪里理解错了,求解?
因为这是服务接口,有可能seckillId不存在,或者商品被删除了!
老师的代码挺规范的,如果没有这个商品,前端可以跟据开始时间与结束时间就可以判断前端要显示的逻辑
三种情况:
exposed等于false, start_time, end_time, now_time == null, 没有这个商品
exposed== fasle, start_time,end_time, now_time 有值,未开启或已结束
exposed==true, 已开启,md5有值。
我知道了,这个方法只是输出一个秒杀接口。