From 7df8d05903fb7fdfc04d5a71dc6e3ce4c9d22c50 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 23 Sep 2022 14:20:54 +0800
Subject: [PATCH] 20220902
---
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 2 +
src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java | 30 ++------------
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 58 +++++++++++++++++++++++------
src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 4 ++
4 files changed, 57 insertions(+), 37 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
index 3e789f2..540ec89 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java
@@ -45,6 +45,8 @@
List<MallOrderInfo> selectOrderInfoByStatus(@Param("status") Integer status);
+ List<MallOrderInfo> selectOrderInfoUpTime(@Param("status") Integer status);
+
Integer selectCntDirectOrTeam(@Param("type") Integer type, @Param("inviteId") String inviteId);
Integer selectCntDirect(@Param("inviteId") String inviteId);
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
index 5430477..6579aee 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
@@ -43,33 +43,13 @@
@Scheduled(cron = "0 0/5 * * * ? ")
public void overtimeJob() {
log.info("订单超时任务执行");
- List<MallOrderInfo> orderList = orderInfoMapper.selectOrderInfoByStatus(OrderStatusEnum.WAIT_PAY.getValue());
+ List<MallOrderInfo> orderList = orderInfoMapper.selectOrderInfoUpTime(OrderStatusEnum.WAIT_PAY.getValue());
if (CollUtil.isNotEmpty(orderList)) {
for (MallOrderInfo orderInfo : orderList) {
- long subTime = DateUtil.between(orderInfo.getOrderTime(), new Date(), DateUnit.MINUTE, false);
-
- if (subTime > 15) {
- orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
- orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY);
- orderInfoMapper.updateById(orderInfo);
- }
- List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId());
- if(CollUtil.isNotEmpty(mallOrderItemList)){
- for(MallOrderItem mallOrderItem : mallOrderItemList){
- Long goodsId = mallOrderItem.getGoodsId();
- Long skuId = mallOrderItem.getSkuId();
- Integer cnt = mallOrderItem.getCnt();
- MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
- mallGoods.setVolume(mallGoods.getVolume() - cnt);
- mallGoods.setStock(mallGoods.getStock() + cnt);
- mallGoodsMapper.updateById(mallGoods);
-
- MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId);
- mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - cnt);
- mallGoodsSku.setStock(mallGoodsSku.getStock() + cnt);
- mallGoodsSkuMapper.updateById(mallGoodsSku);
- }
- }
+ //更新订单状态
+ orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
+ orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY);
+ orderInfoMapper.updateById(orderInfo);
}
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 5a34903..15cbb09 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -260,23 +260,32 @@
orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
orderInfo.setCancelType(MallOrderInfo.CANCEL_BY_SELF);
this.baseMapper.updateById(orderInfo);
- List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id);
+
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId());
if(CollUtil.isNotEmpty(mallOrderItemList)){
for(MallOrderItem mallOrderItem : mallOrderItemList){
- Long goodsId = mallOrderItem.getGoodsId();
- Long skuId = mallOrderItem.getSkuId();
- Integer cnt = mallOrderItem.getCnt();
- MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
- mallGoods.setVolume(mallGoods.getVolume() - cnt);
- mallGoods.setStock(mallGoods.getStock() + cnt);
- mallGoodsMapper.updateById(mallGoods);
+ MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(mallOrderItem.getSkuId());
+ if (sku == null) {
+ throw new FebsException("购买商品或sku不存在");
+ }
- MallGoodsSku mallGoodsSku = mallGoodsSkuMapper.selectById(skuId);
- mallGoodsSku.setSkuVolume(mallGoodsSku.getSkuVolume() - cnt);
- mallGoodsSku.setStock(mallGoodsSku.getStock() + cnt);
- mallGoodsSkuMapper.updateById(mallGoodsSku);
+ if (sku.getStock() < mallOrderItem.getCnt()) {
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
+
+ MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+ Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), mallOrderItem.getCnt());
+ if(1 != goodsResult){
+ throw new FebsException(mallGoods.getGoodsName() + "库存不足");
+ }
+
+ Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt());
+ if(1 != skuResult){
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
}
}
+
}
/**
@@ -688,6 +697,31 @@
orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue());
orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY);
this.baseMapper.updateById(orderInfo);
+
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId());
+ if(CollUtil.isNotEmpty(mallOrderItemList)){
+ for(MallOrderItem mallOrderItem : mallOrderItemList){
+ MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(mallOrderItem.getSkuId());
+ if (sku == null) {
+ throw new FebsException("购买商品或sku不存在");
+ }
+
+ if (sku.getStock() < mallOrderItem.getCnt()) {
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
+
+ MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+ Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), mallOrderItem.getCnt());
+ if(1 != goodsResult){
+ throw new FebsException(mallGoods.getGoodsName() + "库存不足");
+ }
+
+ Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt());
+ if(1 != skuResult){
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
+ }
+ }
}
}
diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
index 1c02bb4..4271bd2 100644
--- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
+++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml
@@ -259,6 +259,10 @@
select * from mall_order_info where status=#{status}
</select>
+ <select id="selectOrderInfoUpTime" resultType="cc.mrbird.febs.mall.entity.MallOrderInfo">
+ select * from mall_order_info where status=#{status} and now() > date_add(order_time,interval 15 minute)
+ </select>
+
<select id="selectCntDirectOrTeam" resultType="java.lang.Integer">
select IFNULL(count(1), 0) from mall_order_info a
inner join mall_member b on a.member_id=b.ID
--
Gitblit v1.9.1