From 45684deea50d27ac78f2a8315bdea50d022e01cb Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期二, 25 七月 2023 19:06:39 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  102 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 84 insertions(+), 18 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 4a4ddf8..9cd4c87 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
@@ -28,6 +28,7 @@
 import com.ruoyi.system.api.constant.DelayTaskEnum;
 import com.ruoyi.system.api.constant.SecurityConstant;
 import com.ruoyi.system.api.domain.dto.*;
+import com.ruoyi.system.api.domain.poji.activity.ActivityRecord;
 import com.ruoyi.system.api.domain.poji.config.DelayTask;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
@@ -175,7 +176,10 @@
         List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData();
 
         // 将优惠券列表转换为Map,以优惠券ID为键
-        Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
+        Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
+        if(appMemberCouponVoList!=null&&!appMemberCouponVoList.isEmpty()){
+            appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
+        }
         AppMemberCouponVo appMemberCouponVo;
         Integer couponType;
         BigDecimal moneyThreshold;
@@ -262,7 +266,6 @@
             appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
             appSureOrderGoodsVo.setCouponDiscount(discountMoney);
             appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
-            goodsDeposit = goods.getSubscription();
             // 获取商品押金
             goodsDeposit = goods.getSubscription();
             if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) {
@@ -290,6 +293,8 @@
                 }else{
                     entity.setUseFlag(0);
                 }
+
+
             }
             // 过滤商品优惠券列表
             List<AppMemberCouponVo> appGoodsMemberCouponVoList;
@@ -409,6 +414,9 @@
         }
         if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
             throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+        }
+        if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) {
+            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
         }
         Goods goods = remoteGoodsService.getGoods(goodsId).getData();
         if(goods.getGoodsStatus()!=1){
@@ -726,7 +734,7 @@
 
 
         //减去优惠券
-        if(memberCouponSJ!=null){
+        if(memberCouponSJ!=null&&StringUtils.isNotBlank(memberCouponSJ.toString())){
             remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
         }
         //生成自动取消订单延时任务
@@ -814,8 +822,8 @@
         if (activityGoodsGetVo.getAvailableBuyNum() < 1) {
             throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
         }
-        if (buyNum < activityGoodsGetVo.getAvailableBuyNum()) {
-            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL);
+        if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) {
+            throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND);
         }
         // 创建订单ID和订单号
         String orderId = IdUtils.simpleUUID();
@@ -1000,7 +1008,19 @@
         appPlaceOrderVo.setTradeType(res.getSignType());
         appPlaceOrderVo.setPaySign(res.getPaySign());
 */
-
+        //生成活动参加记录
+        ActivityRecord activityRecord = new ActivityRecord();
+        activityRecord.setDelFlag(0);
+        activityRecord.setActivityId(activityId);
+        activityRecord.setUserId(userId);
+        activityRecord.setOrderTime(order.getCreateTime());
+        activityRecord.setOrderMoney(order.getOrderMoney());
+        activityRecord.setOrderId(orderId);
+        activityRecord.setCreateTime(new Date());
+        activityRecord.setBuyNum(orderGoods.getBuyNum());
+        activityRecord.setGoodsId(orderGoods.getGoodsId());
+        activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice());
+        remoteActivityService.addActivityRecord(activityRecord);
         //生成自动取消订单延时任务
         Integer delayTime = 30;
         if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
@@ -1184,9 +1204,9 @@
         merVerifyOrderVo.setUseTime(order.getUseTime());
         merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
         // 根据订单用户ID获取用户信息
-        SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData();
-        merVerifyOrderVo.setUserName(sysUser.getNickName());
-        merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber());
+        Member member = remoteMemberService.getMember(order.getUserId()).getData();
+        merVerifyOrderVo.setUserName(member.getRealName());
+        merVerifyOrderVo.setUserMobile(member.getMobile());
         merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
         // 返回结果
         return merVerifyOrderVo;
@@ -1210,6 +1230,7 @@
         if (order.getOrderStatus() != 2) {
             throw new ServiceException(AppErrorConstant.VERIFY_USED);
         }
+
         ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData();
         if(!shopRelUserVo.getShopId().equals(order.getShopId())){
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
@@ -1278,9 +1299,10 @@
         merVerifyOrderVo.setCreateTime(order.getCreateTime());
         merVerifyOrderVo.setPayTime(order.getPayTime());
         merVerifyOrderVo.setUseTime(order.getUseTime());
-        SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData();
-        merVerifyOrderVo.setUserName(sysUser.getNickName());
-        merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber());
+        Member member = remoteMemberService.getMember(order.getUserId()).getData();
+        merVerifyOrderVo.setUserName(member.getRealName());
+        merVerifyOrderVo.setUserMobile(member.getMobile());
+        merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
         //
         if(order.getOrderFrom()==2){
 
@@ -1312,7 +1334,7 @@
         Long userId = verifyCouponGetVo.getUserId();
         // 调用remoteMemberService的getMember方法获取Member对象
         Member member = remoteMemberService.getMember(userId).getData();
-        merVerifyCouponVo.setUserName(member.getNickName());
+        merVerifyCouponVo.setUserName(member.getRealName());
         merVerifyCouponVo.setUserMobile(member.getMobile());
         merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
         merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
@@ -1404,7 +1426,7 @@
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
-        merVerifyAwardVo.setUserName(member.getNickName());
+        merVerifyAwardVo.setUserName(member.getRealName());
         merVerifyAwardVo.setUserMobile(member.getMobile());
         if(memberGiftRecord.getGiftFrom()==1){
             merVerifyAwardVo.setGiftFrom("平台生日卡");
@@ -1524,6 +1546,8 @@
     public void createNewOrder(MerNewOrderDto merNewOrderDto) {
         Long userId = merNewOrderDto.getBuyUserId();
         Date nowTime = new Date();
+        Long shopId = merNewOrderDto.getShopId();
+        Shop shop = remoteShopService.getShop(shopId).getData();
         //如果非指定用户判断是否需要通过手机号创建新用户
         if (userId == null) {
             String name = merNewOrderDto.getName();
@@ -1551,6 +1575,9 @@
                 member.setMobile(mobile);
                 member.setRealName(name);
                 member.setNickName(name);
+                member.setBindingFlag(1);
+                member.setRelationShopId(shopId);
+                member.setRelationShopName(shop.getShopName());
                 remoteMemberService.createNewMember(member);
             }
             userId = sysUser.getUserId();
@@ -1567,8 +1594,6 @@
         BigDecimal goodsPrice;
         BigDecimal goodsTotalPrice;
         BigDecimal goodsRealPrice;
-        Long shopId = merNewOrderDto.getShopId();
-        Shop shop = remoteShopService.getShop(shopId).getData();
         MerBaseDto merBaseDto = new MerBaseDto();
         merBaseDto.setUserId(userId);
         merBaseDto.setShopId(shopId);
@@ -2762,7 +2787,7 @@
         Long userId = verifyCouponGetVo.getUserId();
         // 调用remoteMemberService的getMember方法获取Member对象
         Member member = remoteMemberService.getMember(userId).getData();
-        merVerifyCouponVo.setUserName(member.getNickName());
+        merVerifyCouponVo.setUserName(member.getRealName());
         merVerifyCouponVo.setUserMobile(member.getMobile());
         merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
         merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
@@ -2811,7 +2836,7 @@
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
-        merVerifyAwardVo.setUserName(member.getNickName());
+        merVerifyAwardVo.setUserName(member.getRealName());
         merVerifyAwardVo.setUserMobile(member.getMobile());
         if(memberGiftRecord.getGiftFrom()==1){
             merVerifyAwardVo.setGiftFrom("平台生日卡");
@@ -3177,6 +3202,13 @@
                     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{
@@ -3394,6 +3426,13 @@
                     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{
                     memberCouponSJ.add(orderGoods.getCouponId());
                 }
@@ -3718,4 +3757,31 @@
         }
         return dateList;
     }
+
+    /**
+     * @description  检查订单状态定时任务
+     * @author  jqs
+     * @date    2023/7/25 14:40
+     * @param
+     * @return  void
+     */
+    @Override
+    public void checkOrderStatus(){
+        Integer delayTime = 30;
+        if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){
+            delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+        }
+        delayTime = delayTime + 5;
+        Date checkTime = DateUtils.addMinutes(new Date(),delayTime);
+        LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Order::getDelFlag,0);
+        queryWrapper.lt(Order::getCreateTime,checkTime);
+        queryWrapper.eq(Order::getOrderStatus,1);
+        List<Order> orderList = this.list(queryWrapper);
+        if(orderList!=null&&!orderList.isEmpty()){
+            for(Order order : orderList){
+                autoCancelOrder(order.getOrderId());
+            }
+        }
+    }
 }

--
Gitblit v1.7.1