訂單確認頁
阿新 • • 發佈:2021-11-06
1.訂單號生成(雪花演算法)
引入一個工具類,直接呼叫方法生成
2.生成訂單頁面
@RequestMapping("/confirmSeckillOrders") public String confirmSeckillOrders(int id, HttpSession session){ //使用者搶到商品跳轉到當前頁面,生成訂單 //1.判斷當前使用者是否購買該商品 User user = (User) session.getAttribute("user"); if (redisTemplate.boundSetOps(SysProperties.SECKILL_ITEMS_USERS+id).isMember(user.getId())){//使用者確實購買該商品,生成訂單 //獲取商品資訊 SeckillItems items = itemsService.selectByPrimaryKey(id); //建立新的訂單,將資料存入訂單,並儲存到資料庫 Orders orders = new Orders(); orders.setCreateTime(new Date()); orders.setDeleteStatus(0); orders.setItemsCount(1); orders.setMoney(items.getSeckillPrice().doubleValue()); //訂單號使用雪花演算法生成19位的long型 SnowFlakeUtil snowFlakeUtil=new SnowFlakeUtil(5,5); orders.setOrdersNum(snowFlakeUtil.nextId()+""); //訂單狀態 0 未支付 1已支付 2 已過期 3已取消 4 已發貨 5 已完成 orders.setOrdersStatus(SysProperties.ORDERS_STATUS_NOPAY); Reciver reciver = reciverService.findDefaultReceiverByUserId(user.getId()); System.out.println(reciver); orders.setReciverId(reciver.getId()); ordersService.insertSelective(orders); //訂單入庫....通知庫存系統鎖定庫存 //todo return "redirect:SeckillOrders?ordersId="+orders.getId()+"&seckillItemsId="+id; }else { //如果使用者未購買,則是非法進入,跳轉到失敗頁 return "redirect:common/noauth"; } }