订单确认页
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";
}
}