1. 程式人生 > 其它 >訂單確認頁

訂單確認頁

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";
        }
    }