From 0b806dd3c5159d8fac767cf027b0301e583d1161 Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 26 七月 2023 09:13:59 +0800 Subject: [PATCH] Merge branch 'master' of ssh://sinata.cn:20202/java/HongRuiTang into master --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 88 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 75 insertions(+), 13 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 52cceca..282deb4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -236,8 +236,8 @@ couponType = appMemberCouponVo.getCouponType(); if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) { moneyThreshold = appMemberCouponVo.getMoneyThreshold(); - if (goodsTotalPrice.compareTo(moneyThreshold) >= 0) { - discountMoney = appMemberCouponVo.getDiscountMoney(); + discountMoney = appMemberCouponVo.getDiscountMoney(); + if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney)>0) { goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; userCouponIdSet.add(memberCouponId); @@ -252,13 +252,15 @@ appSureOrderGoodsVo.setMemberCouponId(memberCouponId); } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { discountMoney = appMemberCouponVo.getDiscountMoney(); - goodsRealPrice = goodsTotalPrice.subtract(discountMoney); - if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){ - goodsRealPrice = BigDecimal.ZERO; + if(goodsTotalPrice.compareTo(discountMoney)>0){ + goodsRealPrice = goodsTotalPrice.subtract(discountMoney); + if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){ + goodsRealPrice = BigDecimal.ZERO; + } + useCoupon = 1; + userCouponIdSet.add(memberCouponId); + appSureOrderGoodsVo.setMemberCouponId(memberCouponId); } - useCoupon = 1; - userCouponIdSet.add(memberCouponId); - appSureOrderGoodsVo.setMemberCouponId(memberCouponId); } } } @@ -302,10 +304,14 @@ appGoodsMemberCouponVoList = new ArrayList<>(); for(AppMemberCouponVo entity : appMemberCouponVoList){ if(StringUtils.isBlank(entity.getRelGoodsIds())||entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())){ - if(entity.getCouponType()!=1){ + if(entity.getCouponType()==1){ + if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0&&entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){ + appGoodsMemberCouponVoList.add(entity); + } + }else if(entity.getCouponType()==2){ appGoodsMemberCouponVoList.add(entity); - }else{ - if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){ + }else if(entity.getCouponType()==3){ + if(entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){ appGoodsMemberCouponVoList.add(entity); } } @@ -3787,8 +3793,64 @@ queryWrapper.eq(Order::getOrderStatus,1); List<Order> orderList = this.list(queryWrapper); if(orderList!=null&&!orderList.isEmpty()){ - for(Order order : orderList){ - autoCancelOrder(order.getOrderId()); + for(Order order: orderList){ + autoTimeCancelOrder(order); + } + } + } + + private void autoTimeCancelOrder(Order order){ + String orderId = order.getOrderId(); + order.setOrderStatus(0); + order.setCancelTime(new Date()); + this.saveOrUpdate(order); + //活动订单回退库存 + if(order.getOrderFrom()==2){ + List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); + if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){ + for(OrderGoods orderGoods : orderGoodsList){ + //redis库存控制极简版 + String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId(); + RLock redissonLock = redissonClient.getLock(goodsLock); + try{ + redissonLock.lock(30, TimeUnit.SECONDS); + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId()); + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum()); + }finally{ + redissonLock.unlock(); + } + //改变活动库存 + AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); + agStockChangeDto.setActivityId(order.getActivityId()); + agStockChangeDto.setGoodsId(orderGoods.getGoodsId()); + agStockChangeDto.setChangeType(1); + agStockChangeDto.setChangeNum(orderGoods.getBuyNum()); + agStockChangeDto.setShopId(order.getShopId()); + agStockChangeDto.setUserId(order.getUserId()); + remoteActivityService.changeActivityStock(agStockChangeDto); + //删除活动记录 + ActivityRecord activityRecord = new ActivityRecord(); + activityRecord.setActivityId(order.getActivityId()); + activityRecord.setGoodsId(orderGoods.getGoodsId()); + activityRecord.setUserId(order.getUserId()); + activityRecord.setOrderTime(order.getCreateTime()); + remoteActivityService.delActivityRecord(activityRecord); + } + } + }else{ + if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){ + //回退优惠券 + List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); + if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) { + StringJoiner memberCouponSJ = new StringJoiner(","); + for (OrderGoods orderGoods : orderGoodsList) { + memberCouponSJ.add(orderGoods.getCouponId()); + } + if(memberCouponSJ!=null){ + remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); + + } + } } } } -- Gitblit v1.7.1