1 首先登陆成功之后跳转到订单列表
$.ajax({
url: "/login/do_login",
type: "POST",
data:{
mobile:$("#mobile").val(),
password: password
},
success:function(data){
layer.closeAll();
if(data.code == 0){
layer.msg("成功");
window.location.href="/goods/to_list";
}else{
layer.msg(data.msg);
}
},
error:function(){
layer.closeAll();
2 进入商品详情页前,获取一些秒杀的状态信息等等
@RequestMapping("/to_detail/{goodsId}")
public String detail( Model model, MiaoshaUser user, @PathVariable("goodsId")long goodsId){
GoodsVo goodsVo = goodsService.getGoodsVoByGoodsId(goodsId); model.addAttribute("goods", goodsVo); model.addAttribute("user", user); // long startAt = goodsVo.getStartDate().getTime(); long endAt = goodsVo.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; }
model.addAttribute("miaoshaStatus", miaoshaStatus); model.addAttribute("remainSeconds", remainSeconds); return "goods_detail";}
3 在商品详情开始秒杀
@RequestMapping("/do_miaosha")
public String do_miaosha(Model model, MiaoshaUser user, @Param("goodsId")long goodsId)
model.addAttribute("user", user);if(user == null){
return "login";}
// 判断库存GoodsVo goodsVo = goodsService.getGoodsVoByGoodsId(goodsId);int stock = goodsVo.getStockCount();if(stock <= 0){
model.addAttribute("errmsg", CodeMsg.MIAO_SHA_OVER.getMsg()); return "miaosha_fail";}
// 判断是否已经秒杀过该商品MiaoshaOrder order;order = orderService.getMiaoshaOrderByUserIdGoodsId(user.getId(), goodsId);if(order != null){
model.addAttribute("errmsg", CodeMsg.REPEATE_MIAOSHA.getMsg()); System.err.println("这个用户已经有该商品的秒杀订单了..."); return "miaosha_fail";}
// 减库存,下订单,写入秒杀订单OrderInfo orderInfo = miaoshaService.miaosha(user, goodsVo);model.addAttribute("orderInfo", orderInfo);model.addAttribute("goods", goodsVo);return "order_detail";
- 3.5 在miaoService 中需要做两件事情
@Transactionalpublic OrderInfo miaosha(MiaoshaUser user, GoodsVo goodsVo) {
// 减库存,下订单,写入秒杀订单 GoodsService.reduceStock(goodsVo); OrderInfo orderInfo = orderService.createOrder(user, goodsVo); return orderInfo;}
- 3.5.1 减少库存, 调用goodsService
@Update("update miaosha_goods set stock_count = stock_count - 1 where goods_id = #{id}")
int reduceStock(GoodsVo goodsVo);
@Insert("insert into miaosha_order (user_id, goods_id, order_id)values(#{userId}, #{goodsId}, #{orderId})")
void insertMiaoshaOrder(MiaoshaOrder miaoshaOrder);