商品详情静态化
创建GoodsDetailVo封装GoodsController的detail方法里的参数,包含秒杀状态、时间
public class GoodsDetailVo {
private int miaoshaStatus = 0;
private int remainSeconds = 0;
private GoodsVo goodsVo;
private MiaoshaUser miaoshaUser;
public int getMiaoshaStatus() {
return miaoshaStatus;
}
public void setMiaoshaStatus(int miaoshaStatus) {
this.miaoshaStatus = miaoshaStatus;
}
public int getRemainSeconds() {
return remainSeconds;
}
public void setRemainSeconds(int remainSeconds) {
this.remainSeconds = remainSeconds;
}
public GoodsVo getGoodsVo() {
return goodsVo;
}
public void setGoodsVo(GoodsVo goodsVo) {
this.goodsVo = goodsVo;
}
public MiaoshaUser getMiaoshaUser() {
return miaoshaUser;
}
public void setMiaoshaUser(MiaoshaUser miaoshaUser) {
this.miaoshaUser = miaoshaUser;
}
}
修改GoodsController里接收商品详情页的请求的detail方法的代码
@RequestMapping(value = "/to_detail/{goodsId}",produces = "text/html")
@ResponseBody
public Result<GoodsDetailVo> detail(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user, @PathVariable("goodsId") long goodsId) {
GoodsVo goods = goodsService.getGoodsVoByGoodsId(goodsId);
model.addAttribute("goods", goods);
//转化为毫秒
long startAt = goods.getStartDate().getTime();
long endAt = goods.getEndDate().getTime();
long now = System.currentTimeMillis();
int miaoshaStatus = 0; //秒杀状态
int remainSeconds = 0; //距离开始秒杀还有多少秒
if (now < startAt){
//秒杀还没开始,倒计时
miaoshaStatus = 0;
remainSeconds = (int)((startAt - now)/1000);
}else if (now > endAt){
//秒杀结束
miaoshaStatus = 2;
remainSeconds = -1;
}else {
//秒杀中
miaoshaStatus = 1;
remainSeconds = 0;
}
GoodsDetailVo vo = new GoodsDetailVo();
vo.setGoodsVo(goods);
vo.setMiaoshaUser(user);
vo.setMiaoshaStatus(miaoshaStatus);
vo.setRemainSeconds(remainSeconds);
return Result.success(vo