From 9e7b5dd397e17fe141cc7630df51699125857756 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期二, 20 六月 2023 18:35:35 +0800
Subject: [PATCH] BUG修复和营销统计

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  151 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 136 insertions(+), 15 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 cf27bba..02652ac 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
@@ -982,7 +982,9 @@
             // 将set中的shopId转换为逗号分隔的字符串
             String joinedString = String.join(",", set);
             // 通过remoteShopService获取MgtSimpleShopVoList
-            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(joinedString).getData();
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(joinedString);
+            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
             // 将MgtSimpleShopVoList转换为Map<Long, MgtSimpleShopVo>,以便后续根据shopId获取对应的MgtSimpleShopVo
             Map<Long, MgtSimpleShopVo> map = simpleShopVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
@@ -1043,16 +1045,22 @@
             String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
             String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
             // 从远程服务获取店铺和用户信息
-            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(shopJoinedString).getData();
+            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()));
-            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData();
+            mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(userJoinedString);
+            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
             Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
             // 遍历列表,设置店铺名称、用户名称和未支付金额
             for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) {
                 mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName());
-                mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getUserName());
+                if(userMap.get(mgtActivityOrderPageVo.getUserId())!=null){
+                    mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName());
+                }
                 BigDecimal unPaidMoney = mgtActivityOrderPageVo.getReceivableMoney().subtract(mgtActivityOrderPageVo.getPayMoney());
                 mgtActivityOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
             }
@@ -1149,20 +1157,35 @@
                 shopIdSet.add(mgtShopOrderPageVo.getShopId());
                 userIdSet.add(mgtShopOrderPageVo.getUserId());
             }
-            // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串
-            String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
-            String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
             // 从远程服务获取店铺和用户信息
-            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(shopJoinedString).getData();
-            Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
-                    .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
-            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData();
-            Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
-                    .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            Map<Long, MgtSimpleShopVo> shopMap = null;
+            Map<Long, MgtSimpleMemberVo> userMap = null;
+            if(shopIdSet!=null&&!shopIdSet.isEmpty()){
+                String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+                MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+                mgtBaseBathDto.setIds(shopJoinedString);
+                List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+                shopMap = simpleShopVoList.stream()
+                        .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            }
+            if(userIdSet!=null&&!userIdSet.isEmpty()){
+                String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+                MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+                mgtBaseBathDto.setIds(userJoinedString);
+                List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+                userMap = simpleMemberVoList.stream()
+                        .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            }
             // 遍历列表,设置店铺名称、用户名称和未支付金额
             for (MgtShopOrderPageVo mgtShopOrderPageVo : shopOrderPageVoList) {
-                mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName());
-                mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getUserName());
+                if(shopMap!=null&&!shopMap.isEmpty()){
+                    mgtShopOrderPageVo.setShopName(shopMap.get(mgtShopOrderPageVo.getShopId()).getShopName());
+                }
+                if(userMap!=null&&!userMap.isEmpty()){
+                    if(userMap.get(mgtShopOrderPageVo.getUserId())!=null){
+                        mgtShopOrderPageVo.setUserName(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName());
+                    }
+                }
                 BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney());
                 mgtShopOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
             }
@@ -1348,4 +1371,102 @@
         }
         return mgtTotalOrderTotalVo;
     }
+
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 9:27
+     * @param mgtBaseShopDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    @Override
+    public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto){
+        //获取基础统计
+        MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto);
+        //获取商品分类销售数据
+        List<MgtMapTotalVo> mgtMapTotalVoGoodsType = orderMapper.listTotalActivityTotalGoodsType(mgtBaseShopDto);
+        if (mgtMapTotalVoGoodsType != null && mgtMapTotalVoGoodsType.size() > 0) {
+            String[] goodsTypeKey = new String[mgtMapTotalVoGoodsType.size()];
+            Integer[] goodsTypeTotalValue = new Integer[mgtMapTotalVoGoodsType.size()];
+            BigDecimal[] goodsTypeMoneyValue = new BigDecimal[mgtMapTotalVoGoodsType.size()];
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < mgtMapTotalVoGoodsType.size(); i++) {
+                goodsTypeTotalValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueFirst();
+                goodsTypeMoneyValue[i] = mgtMapTotalVoGoodsType.get(i).getMapValueSecond();
+                if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("1")){
+                    goodsTypeKey[i] = "周期";
+                    totalActivityTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
+                    totalActivityTotalVo.setCyclePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird());
+                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){
+                    goodsTypeKey[i] = "服务";
+                    totalActivityTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
+                    totalActivityTotalVo.setServicePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird());
+                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){
+                    goodsTypeKey[i] = "体验";
+                    totalActivityTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
+                    totalActivityTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
+                    totalActivityTotalVo.setExperiencePerson(mgtMapTotalVoGoodsType.get(i).getMapValueThird());
+                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){
+                    goodsTypeKey[i] = "单品";
+                }
+            }
+            totalActivityTotalVo.setGoodsTypeKey(goodsTypeKey);
+            totalActivityTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue);
+            totalActivityTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
+        }
+        //获取订单分布
+        List<MgtMapTotalVo> mgtMapTotalVos = orderMapper.listTotalActivityTotal(mgtBaseShopDto);
+        if (mgtMapTotalVos != null && mgtMapTotalVos.size() > 0) {
+            String[] orderTotalKey = new String[mgtMapTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[mgtMapTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalVos.size()];
+            for (int i = 0; i < mgtMapTotalVos.size(); i++) {
+                orderTotalKey[i] = mgtMapTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = mgtMapTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = mgtMapTotalVos.get(i).getMapValueSecond();
+            }
+            totalActivityTotalVo.setOrderTotalKey(orderTotalKey);
+            totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
+            totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }
+        return totalActivityTotalVo;
+    }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 9:56
+     * @param mgtActivityAgeDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    @Override
+    public MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto){
+        List<Long> userIds = orderMapper.getUserIdAgeRank(mgtActivityAgeDto);
+        mgtActivityAgeDto.setUserIds(userIds);
+        userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData();
+        mgtActivityAgeDto.setUserIds(userIds);
+        MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityAgeRank(mgtActivityAgeDto);
+        return totalActivityTotalVo;
+    }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 15:31
+     * @param mgtBaseShopDto
+     * @return  MgtTotalDataTotalVo
+     */
+    @Override
+    public MgtTotalDataTotalVo getTotalDataTotal(MgtBaseShopDto mgtBaseShopDto){
+        //获取人数统计
+        MgtTotalDataTotalVo mgtTotalDataTotalVo = orderMapper.getTotalDataTotal(mgtBaseShopDto);
+        Integer reorderPerson = orderMapper.getReorderPerson(mgtBaseShopDto);
+        mgtTotalDataTotalVo.setReorderPerson(reorderPerson);
+        Integer returnedPerson = orderMapper.getReturnedPerson(mgtBaseShopDto);
+        mgtTotalDataTotalVo.setReturnedPerson(returnedPerson);
+        return mgtTotalDataTotalVo;
+    }
 }

--
Gitblit v1.7.1