From 454f73537f9bcc27c50400f9197b771c83fd5900 Mon Sep 17 00:00:00 2001
From: jiangqs <343695869@qq.com>
Date: 星期五, 23 六月 2023 16:38:32 +0800
Subject: [PATCH] 营销统计

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  295 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 293 insertions(+), 2 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 8681aba..7298a75 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
@@ -73,7 +73,8 @@
     @Resource
     private RemoteShoppingCartService remoteShoppingCartService;
 
-    
+    @Resource
+    private RemoteConfigService remoteConfigService;
 
 
     /**
@@ -1480,6 +1481,296 @@
      */
     @Override
     public List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto){
-        return listMemberGoodsRank(mgtBasePlatformDto);
+        return orderMapper.listMemberGoodsRank(mgtBasePlatformDto);
+    }
+
+    /**
+     * @description 获取平台商户数据统计
+     * @param mgtBasePlatformDto
+     * @return List<MgtTotalDataTotalVo>
+     * @author jqs34
+     * @date 2023/6/23 14:01
+     */
+    @Override
+    public List<MgtTotalDataTotalVo> getPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto){
+        //获取需要关联的用户id集合
+        if (mgtBasePlatformDto.getDeptId() != null) {
+            List<Long> userIdList = new ArrayList<>();
+            if (mgtBasePlatformDto.getUserId() != null) {
+                userIdList.add(mgtBasePlatformDto.getUserId());
+            } else {
+                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
+                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+                mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData();
+                userIdList = mgtUserIdByDept.getUserIdList();
+            }
+            if (!userIdList.isEmpty()) {
+                mgtBasePlatformDto.setUserIdList(userIdList);
+            }
+        }
+        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        List<MgtTotalDataTotalVo> mgtTotalDataTotalVoList = new ArrayList<>();
+        MgtBaseShopDto mgtBaseShopDto;
+        MgtTotalDataTotalVo mgtTotalDataTotalVo;
+        if(shopIdList!=null&&!shopIdList.isEmpty()){
+            for(Long shopId : shopIdList){
+                mgtBaseShopDto = new MgtBaseShopDto();
+                mgtBaseShopDto.setStartDate(mgtBasePlatformDto.getStartDate());
+                mgtBaseShopDto.setEndDate(mgtBasePlatformDto.getEndDate());
+                mgtBaseShopDto.setShopId(shopId);
+                mgtTotalDataTotalVo = this.getTotalDataTotal(mgtBaseShopDto);
+                mgtTotalDataTotalVoList.add(mgtTotalDataTotalVo);
+            }
+        }
+        return mgtTotalDataTotalVoList;
+    }
+
+    /**
+     * @description 获取平台商户订单统计
+     * @param mgtBasePlatformDto
+     * @return MgtTotalOrderTotalVo
+     * @author jqs34
+     * @date 2023/6/19 22:23
+     */
+    @Override
+    public MgtTotalOrderTotalVo getPlTotalOrderTotal(MgtBasePlatformDto mgtBasePlatformDto){
+        //获取需要关联的用户id集合
+        if (mgtBasePlatformDto.getDeptId() != null) {
+            List<Long> userIdList = new ArrayList<>();
+            if (mgtBasePlatformDto.getUserId() != null) {
+                userIdList.add(mgtBasePlatformDto.getUserId());
+            } else {
+                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
+                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+                mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData();
+                userIdList = mgtUserIdByDept.getUserIdList();
+            }
+            if (!userIdList.isEmpty()) {
+                mgtBasePlatformDto.setUserIdList(userIdList);
+            }
+        }
+        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        mgtBasePlatformDto.setShopIdList(shopIdList);
+        //获取基础统计
+        MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
+        List<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalOrderTotal(mgtBasePlatformDto);
+        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();
+            }
+            mgtTotalOrderTotalVo.setOrderTotalKey(orderTotalKey);
+            mgtTotalOrderTotalVo.setOrderTotalValue(orderTotalValue);
+            mgtTotalOrderTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }
+        //获取商品分类销售数据
+        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto);
+        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] = "周期";
+                    mgtTotalOrderTotalVo.setCycleTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setCycleMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
+                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("2")){
+                    goodsTypeKey[i] = "服务";
+                    mgtTotalOrderTotalVo.setServiceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setServiceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
+                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("3")){
+                    goodsTypeKey[i] = "体验";
+                    mgtTotalOrderTotalVo.setExperienceTotal(mgtMapTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtTotalOrderTotalVo.setExperienceMoney(mgtMapTotalVoGoodsType.get(i).getMapValueSecond());
+                }else if(mgtMapTotalVoGoodsType.get(i).getMapKey().equals("4")){
+                    goodsTypeKey[i] = "单品";
+                }
+            }
+            mgtTotalOrderTotalVo.setGoodsTypeKey(goodsTypeKey);
+            mgtTotalOrderTotalVo.setGoodsTypeTotalValue(goodsTypeTotalValue);
+            mgtTotalOrderTotalVo.setGoodsTypeMoneyValue(goodsTypeMoneyValue);
+        }
+        //获取商品销售排名
+        List<MgtMapTotalPlusVo> goodsRankList = orderMapper.listPlTotalOrderTotalGoodsRank(mgtBasePlatformDto);
+        if (goodsRankList != null && goodsRankList.size() > 0) {
+            String[] goodsRankKey = new String[goodsRankList.size()];
+            BigDecimal[] goodsRankValue = new BigDecimal[goodsRankList.size()];
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < goodsRankList.size(); i++) {
+                goodsRankKey[i] = goodsRankList.get(i).getMapKey();
+                goodsRankValue[i] = goodsRankList.get(i).getMapValueSecond();
+            }
+            mgtTotalOrderTotalVo.setGoodsRankKey(goodsRankKey);
+            mgtTotalOrderTotalVo.setGoodsRankValue(goodsRankValue);
+        }
+        //获取来源销售排名
+        List<MgtMapTotalPlusVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
+        if (orderFromList != null && orderFromList.size() > 0) {
+            String[] orderFromKey = new String[orderFromList.size()];
+            BigDecimal[] orderFromValue = new BigDecimal[orderFromList.size()];
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < orderFromList.size(); i++) {
+                orderFromKey[i] = orderFromList.get(i).getMapKey();
+                orderFromValue[i] = orderFromList.get(i).getMapValueSecond();
+            }
+            mgtTotalOrderTotalVo.setOrderFromRankKey(orderFromKey);
+            mgtTotalOrderTotalVo.setOrderFromRankValue(orderFromValue);
+        }
+        return mgtTotalOrderTotalVo;
+    }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 9:27
+     * @param mgtBasePlatformDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    @Override
+    public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto){
+        //获取需要关联的用户id集合
+        if (mgtBasePlatformDto.getDeptId() != null) {
+            List<Long> userIdList = new ArrayList<>();
+            if (mgtBasePlatformDto.getUserId() != null) {
+                userIdList.add(mgtBasePlatformDto.getUserId());
+            } else {
+                MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
+                mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
+                mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData();
+                userIdList = mgtUserIdByDept.getUserIdList();
+            }
+            if (!userIdList.isEmpty()) {
+                mgtBasePlatformDto.setUserIdList(userIdList);
+            }
+        }
+        List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        mgtBasePlatformDto.setShopIdList(shopIdList);
+        //获取基础统计
+        MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto);
+        //获取商品分类销售数据
+        List<MgtMapTotalPlusVo> mgtMapTotalVoGoodsType = orderMapper.listPlTotalActivityTotalGoodsType(mgtBasePlatformDto);
+        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<MgtMapTotalPlusVo> mgtMapTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
+        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);
+        }
+        HashSet<String> set = new HashSet<>();
+        // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
+        for (Long shopId : mgtBasePlatformDto.getShopIdList()) {
+            set.add(shopId.toString());
+        }
+        // 将set中的shopId转换为逗号分隔的字符串
+        String joinedString = String.join(",", set);
+        // 通过remoteShopService获取MgtSimpleShopVoList
+        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()));
+        //商户活动次数排名
+        List<MgtMapTotalPlusVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto);
+        if (shopActivityRank != null && shopActivityRank.size() > 0) {
+            String[] shopActivityRankKey = new String[shopActivityRank.size()];
+            Integer[] shopActivityRankValue = new Integer[shopActivityRank.size()];
+            for (int i = 0; i < shopActivityRank.size(); i++) {
+                shopActivityRankKey[i] = map.get(Long.valueOf(shopActivityRank.get(i).getMapKey())).getShopName();
+                shopActivityRankValue[i] = shopActivityRank.get(i).getMapValueFirst();
+            }
+            totalActivityTotalVo.setActivityRankKey(shopActivityRankKey);
+            totalActivityTotalVo.setActivityRankValue(shopActivityRankValue);
+        }
+        //商户活动销售额排名
+        List<MgtMapTotalPlusVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto);
+        if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) {
+            String[] shopActivitySalesRankKey = new String[shopActivitySalesRank.size()];
+            BigDecimal[] shopActivitySalesRankValue = new BigDecimal[shopActivitySalesRank.size()];
+            for (int i = 0; i < shopActivitySalesRank.size(); i++) {
+                shopActivitySalesRankKey[i] = map.get(Long.valueOf(shopActivityRank.get(i).getMapKey())).getShopName();
+                shopActivitySalesRankValue[i] = shopActivitySalesRank.get(i).getMapValueSecond();
+            }
+            totalActivityTotalVo.setShopSalesRankKey(shopActivitySalesRankKey);
+            totalActivityTotalVo.setShopSalesRankValue(shopActivitySalesRankValue);
+        }
+        //活动销售额排名
+        List<MgtMapTotalPlusVo> activitySalesRank = orderMapper.listPlTotalActivitySalesRank(mgtBasePlatformDto);
+        if (activitySalesRank != null && activitySalesRank.size() > 0) {
+            String[] activitySalesRankKey = new String[activitySalesRank.size()];
+            BigDecimal[] activitySalesRankValue = new BigDecimal[activitySalesRank.size()];
+            for (int i = 0; i < activitySalesRank.size(); i++) {
+                activitySalesRankKey[i] = activitySalesRank.get(i).getMapKey();
+                activitySalesRankValue[i] = activitySalesRank.get(i).getMapValueSecond();
+            }
+            totalActivityTotalVo.setActivitySalesRankKey(activitySalesRankKey);
+            totalActivityTotalVo.setActivitySalesRankValue(activitySalesRankValue);
+        }
+        return totalActivityTotalVo;
+    }
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 9:56
+     * @param mgtPlActivityAgeDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    @Override
+    public MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPlActivityAgeDto){
+        List<Long> userIds = orderMapper.getPlUserIdAgeRank(mgtPlActivityAgeDto);
+        MgtActivityAgeDto mgtActivityAgeDto = new MgtActivityAgeDto();
+        mgtActivityAgeDto.setUserIds(userIds);
+        mgtActivityAgeDto.setAgeType(mgtPlActivityAgeDto.getAgeType());
+        userIds = remoteMemberService.listUserIdByAge(mgtActivityAgeDto).getData();
+        mgtPlActivityAgeDto.setUserIds(userIds);
+        MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
+        return totalActivityTotalVo;
     }
 }

--
Gitblit v1.7.1