创建订单 - 保存订单与子订单数据
生活随笔
收集整理的這篇文章主要介紹了
创建订单 - 保存订单与子订单数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 根據商品規格id獲取規格對象的具體信息* @param specId* @return*/
public ItemsSpec queryItemSpecById(String specId);
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public ItemsSpec queryItemSpecById(String specId) {return itemsSpecMapper.selectByPrimaryKey(specId);
}
/*** 根據商品id獲得商品圖片主圖url* @param itemId* @return*/
public String queryItemMainImgById(String itemId);
@Transactional(propagation = Propagation.SUPPORTS)
@Override
public String queryItemMainImgById(String itemId) {ItemsImg itemsImg = new ItemsImg();itemsImg.setItemId(itemId);itemsImg.setIsMain(YesOrNo.YES.type);ItemsImg result = itemsImgMapper.selectOne(itemsImg);return result != null ? result.getUrl() : "";
}
// 2. 循環根據itemSpecIds保存訂單商品信息表
String itemSpecIdArr[] = itemSpecIds.split(",");
Integer totalAmount = 0; // 商品原價累計
Integer realPayAmount = 0; // 優惠后的實際支付價格累計
for (String itemSpecId : itemSpecIdArr) {// TODO 整合redis后,商品購買的數量重新從redis的購物車中獲取int buyCounts = 1;// 2.1 根據規格id,查詢規格的具體信息,主要獲取價格ItemsSpec itemSpec = itemService.queryItemSpecById(itemSpecId);totalAmount += itemSpec.getPriceNormal() * buyCounts;realPayAmount += itemSpec.getPriceDiscount() * buyCounts;// 2.2 根據商品id,獲得商品信息以及商品圖片String itemId = itemSpec.getItemId();Items item = itemService.queryItemById(itemId);String imgUrl = itemService.queryItemMainImgById(itemId);// 2.3 循環保存子訂單數據到數據庫String subOrderId = sid.nextShort();OrderItems subOrderItem = new OrderItems();subOrderItem.setId(subOrderId);subOrderItem.setOrderId(orderId);subOrderItem.setItemId(itemId);subOrderItem.setItemName(item.getItemName());subOrderItem.setItemImg(imgUrl);subOrderItem.setBuyCounts(buyCounts);subOrderItem.setItemSpecId(itemSpecId);subOrderItem.setItemSpecName(itemSpec.getName());subOrderItem.setPrice(itemSpec.getPriceDiscount());orderItemsMapper.insert(subOrderItem);// 2.4 在用戶提交訂單以后,規格表中需要扣除庫存itemService.decreaseItemSpecStock(itemSpecId, buyCounts);
}newOrder.setTotalAmount(totalAmount);
newOrder.setRealPayAmount(realPayAmount);
ordersMapper.insert(newOrder);
?
總結
以上是生活随笔為你收集整理的创建订单 - 保存订单与子订单数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创建订单 - 填充新订单数据
- 下一篇: 创建订单 - 扣除商品库存与订单状态保存