1、秒杀页面的代码
2、秒杀的controller的实现
1.先判断库存是否还存在
2.判断是否是已经秒杀过了
3.库存还有,也没有下过订单而后就是 减库存 下订单 写入秒杀订单
4.将秒杀后的订单信息直接写入页面javascript
@RequestMapping("/do_miaosha") public String doMiaosha(Model model, MiaoshaUser user, @RequestParam("goodsId") Long goodsId){ model.addAttribute("user",user); if (user==null){ return "login"; } //先判断库存是否还存在 GoodsVo goodsVo=goodsService.getGoosVoByGoodsId(goodsId); int stockCount=goodsVo.getStockCount(); if(stockCount<=0){ model.addAttribute("errmsg", CodeMsg.MIAO_SHA_OVER); return "miaosha_fail"; } //判断是否是已经秒杀过了 MiaoshaOrder miaoshaOrder=orderService.getMiaoshaOrderByUserIdGoodsId(user.getId(),goodsId); if(miaoshaOrder!=null){ model.addAttribute("errmsg", CodeMsg.REPEATE_MIAOSHA); return "miaosha_fail"; } //库存还有,也没有下过订单而后就是 减库存 下订单 写入秒杀订单 //由于要知足事务的操做 因此 建一个单独的service OrderInfo orderInfo= miaoshaService.miaosha(user,goodsVo); //将秒杀后的订单信息直接写入页面 model.addAttribute("orderInfo",orderInfo); //显示商品信息 model.addAttribute("goods",goodsVo); return "order_detail";
3、秒杀的service的实现java
/** * @Author:zhangyx * @Date:Created in 12:492018/11/17 * @Modified By: */ @Service public class MiaoshaService { @Autowired private GoodsService goodsService; @Autowired private OrderService orderService; //作秒杀的操做 @Transactional public OrderInfo miaosha(MiaoshaUser user, GoodsVo goodsVo) { //减小库存 goodsService.reduceStock(goodsVo); //写订单 return orderService.createOrder(user,goodsVo); } }