From 4b759541dfa1de220f176b5688e0e46b3414e388 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 18 九月 2023 18:08:28 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   84 ++++++++++++++++++++++++++++--------------
 1 files changed, 56 insertions(+), 28 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 fb7a43d..8635275 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
@@ -1211,9 +1211,9 @@
         if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) {
             Long shopId;
             String activityId;
-            Shop shop;
             HashSet<Long> shopSet = new HashSet<Long>();
             HashSet<String> activitySet = new HashSet<String>();
+            // 遍历订单列表,获取店铺ID和活动ID
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
                 shopId = appUserOrderPageVo.getShopId();
                 shopSet.add(shopId);
@@ -1222,22 +1222,25 @@
                     activitySet.add(activityId);
                 }
             }
-            Map<Long, Shop> shopMap = new HashMap<>();
-            shopSet.forEach(shopIdLong -> {
-                Shop shopTemp = remoteShopService.getShop(shopIdLong).getData();
-                shopMap.put(shopIdLong, shopTemp);
-            });
+            String shopJoinedString = String.join(",", shopSet.stream().map(Object::toString).collect(Collectors.toList()));
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(shopJoinedString);
+            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            MgtSimpleShopVo simpleShopVo;
             Integer delayTime = 30;
             if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
                 delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
             }
+            //处理订单回显
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
                 if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){
                     appUserOrderPageVo.setShopName("全部店铺");
                 }else{
-                    shop = shopMap.get(appUserOrderPageVo.getShopId());
-                    appUserOrderPageVo.setShopName(shop.getShopName());
-                    appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone());
+                    simpleShopVo = shopMap.get(appUserOrderPageVo.getShopId());
+                    appUserOrderPageVo.setShopName(simpleShopVo.getShopName());
+                    appUserOrderPageVo.setShopServicePhone(simpleShopVo.getShopServicePhone());
                     if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) {
                         appUserOrderPageVo.setSameShop(1);
                     } else {
@@ -1830,8 +1833,23 @@
             payRecord.setPayType(merVerifyOrderDto.getPayType());
             payRecordService.save(payRecord);
         }
-        //更新用户消费统计
+        //更新用户积分和消费统计
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setUserId(order.getUserId());
+        // 如果存在积分兑换比例,则计算积分
+        if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
+            Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
+            BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
+            BigDecimal integralBig = moneyValueBig.multiply(order.getOnlinePayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP);
+            Integer integral = Integer.valueOf(integralBig.toString());
+            if(integral>0){
+                memberTotalChangeDto.setChangeIntegral(integral);
+                memberTotalChangeDto.setTypeIntegral(1);
+                memberTotalChangeDto.setOrderId(orderId);
+                memberTotalChangeDto.setOrderNo(order.getOrderNo());
+            }
+        }
+        //更新消费时间
         memberTotalChangeDto.setConsumeTime(nowTime);
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         return merVerifyOrderVo;
@@ -1992,8 +2010,7 @@
                     }
                     // 设置其他属性
                     return merCouponGoods;
-                })
-                .collect(Collectors.toList());
+                }).collect(Collectors.toList());
         // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
         merVerifyCouponVo.setGoodsList(merCouponGoodsList);
         //生成服务
@@ -4963,17 +4980,19 @@
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
-        // 如果存在积分兑换比例,则计算积分
-        if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
+        // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分
+        /*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
             Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
             BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
             BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP);
             Integer integral = Integer.valueOf(integralBig.toString());
-            memberTotalChangeDto.setChangeIntegral(integral);
-            memberTotalChangeDto.setTypeIntegral(1);
-            memberTotalChangeDto.setOrderId(orderId);
-            memberTotalChangeDto.setOrderNo(order.getOrderNo());
-        }
+            if(integral>0){
+                memberTotalChangeDto.setChangeIntegral(integral);
+                memberTotalChangeDto.setTypeIntegral(1);
+                memberTotalChangeDto.setOrderId(orderId);
+                memberTotalChangeDto.setOrderNo(order.getOrderNo());
+            }
+        }*/
         // 设置会员支付金额和支付时间
         memberTotalChangeDto.setPayMoney(order.getPayMoney());
         memberTotalChangeDto.setPayTime(new Date());
@@ -5003,6 +5022,7 @@
             activityTotalChangeDto.setChangeNum(1);
             activityTotalChangeDto.setMoney(order.getPayMoney());
             Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId());
+            //判断用户是否下过单 如果只有当前订单则为1
             if (userActivityNum == 1) {
                 activityTotalChangeDto.setPersonNum(1);
             } else {
@@ -5175,7 +5195,7 @@
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
-        // 如果存在积分兑换比例,则计算积分
+        // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分
         /*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
             Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
             BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
@@ -5202,7 +5222,6 @@
         // 更新会员统计信息
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         // 如果订单来源于活动,则更新活动统计信息
-        //TODO 可考虑改成定时任务统一查询后增加 减少服务器压力但会增加延后性
         if (order.getOrderFrom() == 2) {
             ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto();
             activityTotalChangeDto.setActivityId(order.getActivityId());
@@ -5211,10 +5230,11 @@
             activityTotalChangeDto.setRefundNum(1);
             activityTotalChangeDto.setMoney(order.getPayMoney());
             Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId());
+            //判断用户是否还有活动订单 无则减少人数
             if (userActivityNum > 0) {
-                activityTotalChangeDto.setPersonNum(1);
-            } else {
                 activityTotalChangeDto.setPersonNum(0);
+            } else {
+                activityTotalChangeDto.setPersonNum(1);
             }
             activityTotalChangeDto.setUserId(order.getUserId());
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
@@ -5834,30 +5854,39 @@
      */
     @Override
     public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){
+        // 获取订单列表
         List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto);
+        // 如果订单列表不为空
         if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
             Long userId;
             BigDecimal zeroBig = new BigDecimal("0.00");
             StringJoiner userIdSj = new StringJoiner(",");
+            // 遍历订单列表
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 userId = merOrderPageVo.getUserId();
                 userIdSj.add(userId.toString());
-                if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
+                // 如果未支付金额小于零,则设置为零
+                if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
             }
+            // 获取用户列表
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(userIdSj.toString());
             List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+            // 将用户列表转换为Map,以便根据用户ID快速查找用户信息
             Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            // 遍历订单列表
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
-                if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){
+                // 如果订单的用户ID不为空,并且用户Map中存在对应的用户信息
+                if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
+                    // 设置订单的用户名、昵称和手机号
                     merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
                     merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
                     merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
-                }else{
-                    log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户");
+                } else {
+                    log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户");
                 }
             }
         }
@@ -5918,7 +5947,6 @@
     public ProfitSharingResult queryBill(String orderId) throws WxPayException {
         OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
         ProfitSharing profitSharing = profitSharingService.getByOrderId(orderId);
-
         ProfitSharingQueryRequest request = new ProfitSharingQueryRequest();
         request.setSubMchid("1650744551");
         request.setTransactionId(orderPayment.getTransactionId());

--
Gitblit v1.7.1