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-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java                   |    9 
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                             |  328 +++++++++++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java        |    8 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java                     |   26 +
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java          |   88 +++-
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java  |    7 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java               |   46 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java      |  295 +++++++++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java |   40 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java      |   90 ++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java                 |  131 ++++++
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java   |    1 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtPlActivityAgeDto.java     |   23 +
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml                                |   84 ++++
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java          |   15 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java          |   11 
 16 files changed, 1,147 insertions(+), 55 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtPlActivityAgeDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtPlActivityAgeDto.java
new file mode 100644
index 0000000..f6566c5
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtPlActivityAgeDto.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.api.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author jqs34
+ * @version 1.0
+ * @classname MgtPlActivityAgeDto
+ * @description: TODO
+ * @date 2023 2023/6/23 15:31
+ */
+@Data
+public class MgtPlActivityAgeDto extends MgtBasePlatformDto{
+
+    @ApiModelProperty(value = "年龄分布1.<20 2.21-30 3.31-40 4.41-50 5.>50")
+    private Integer ageType;
+
+    @ApiModelProperty(value = "userIds",hidden = true)
+    private List<Long> userIds;
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
index ac20667..678479c 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java
@@ -2,6 +2,7 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
+import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
 import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo;
@@ -74,6 +75,12 @@
                 return null;
             }
 
+            @Override
+            public R<List<Long>> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto) {
+                return R.fail("获取商户列表失败:" + throwable.getMessage());
+            }
+
+
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
index 3a836a1..89ef702 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java
@@ -3,6 +3,7 @@
 import com.ruoyi.common.core.constant.ServiceNameConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
+import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
@@ -79,4 +80,14 @@
      */
     @PostMapping("/shop/boardShopTotal")
     public R<MgtBulletinBoardVo> boardShopTotal();
+
+    /**
+     * @description 获取平台统计shopId
+     * @param mgtBasePlatformDto
+     * @return R<List<Long>>
+     * @author jqs34
+     * @date 2023/6/23 14:12
+     */
+    @PostMapping("/listShopIdByPlTotal")
+    public R<List<Long>> listShopIdByPlTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
index 62f1cea..8797b8f 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -2,12 +2,15 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.domain.vo.MgtPlTotalActivityTotalVo;
 import com.ruoyi.order.domain.vo.MgtTotalActivityTotalVo;
 import com.ruoyi.order.domain.vo.MgtTotalDataTotalVo;
 import com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo;
 import com.ruoyi.order.service.order.OrderService;
 import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
+import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
+import com.ruoyi.system.api.domain.dto.MgtPlActivityAgeDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -16,6 +19,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * @author jqs34
@@ -67,4 +71,40 @@
         MgtTotalDataTotalVo totalDataTotalVo = orderService.getTotalDataTotal(mgtBaseShopDto);
         return R.ok(totalDataTotalVo);
     }
+
+    @RequestMapping(value = "/getPlTotalDataTotal", method = RequestMethod.POST)
+    @ApiOperation(value = "获取平台商户数据统计")
+    public R<List<MgtTotalDataTotalVo>> getPlTotalDataTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
+        Long userId = SecurityUtils.getUserId();
+        mgtBasePlatformDto.setUserId(userId);
+        List<MgtTotalDataTotalVo> totalDataTotalVoList = orderService.getPlTotalDataTotal(mgtBasePlatformDto);
+        return R.ok(totalDataTotalVoList);
+    }
+
+    @RequestMapping(value = "/getPlTotalOrderTotal", method = RequestMethod.POST)
+    @ApiOperation(value = "获取商户订单统计")
+    public R<MgtTotalOrderTotalVo> getPlTotalOrderTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
+        Long userId = SecurityUtils.getUserId();
+        mgtBasePlatformDto.setUserId(userId);
+        MgtTotalOrderTotalVo totalOrderTotalVo = orderService.getPlTotalOrderTotal(mgtBasePlatformDto);
+        return R.ok(totalOrderTotalVo);
+    }
+
+    @RequestMapping(value = "/getPlTotalActivityTotal", method = RequestMethod.POST)
+    @ApiOperation(value = "获取商户活动统计")
+    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto) {
+        Long userId = SecurityUtils.getUserId();
+        mgtBasePlatformDto.setUserId(userId);
+        MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityTotal(mgtBasePlatformDto);
+        return R.ok(totalActivityTotal);
+    }
+
+    @RequestMapping(value = "/getPlTotalActivityAgeRank", method = RequestMethod.POST)
+    @ApiOperation(value = "获取商户活动年龄分布")
+    public R<MgtPlTotalActivityTotalVo> getPlTotalActivityAgeRank(@RequestBody MgtPlActivityAgeDto mgtPlActivityAgeDto) {
+        Long userId = SecurityUtils.getUserId();
+        mgtPlActivityAgeDto.setUserId(userId);
+        MgtPlTotalActivityTotalVo totalActivityTotal = orderService.getPlTotalActivityAgeRank(mgtPlActivityAgeDto);
+        return R.ok(totalActivityTotal);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
new file mode 100644
index 0000000..34793e8
--- /dev/null
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -0,0 +1,90 @@
+package com.ruoyi.order.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @ClassName MgtTotalActivityTotalVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/6/20 9:22
+ * @Version 1.0
+ */
+@Data
+public class MgtPlTotalActivityTotalVo {
+
+    @ApiModelProperty(value = "总订单数")
+    private Integer orderTotal;
+
+    @ApiModelProperty(value = "周期订单数")
+    private Integer cycleTotal;
+
+    @ApiModelProperty(value = "体验订单数")
+    private Integer experienceTotal;
+
+    @ApiModelProperty(value = "服务订单数")
+    private Integer serviceTotal;
+
+    @ApiModelProperty(value = "总订单金额")
+    private BigDecimal orderMoney;
+
+    @ApiModelProperty(value = "周期订单金额")
+    private BigDecimal cycleMoney;
+
+    @ApiModelProperty(value = "体验订单金额")
+    private BigDecimal experienceMoney;
+
+    @ApiModelProperty(value = "服务订单金额")
+    private BigDecimal serviceMoney;
+
+    @ApiModelProperty(value = "总人数")
+    private Integer orderPerson;
+
+    @ApiModelProperty(value = "周期人数")
+    private Integer cyclePerson;
+
+    @ApiModelProperty(value = "体验人数")
+    private Integer experiencePerson;
+
+    @ApiModelProperty(value = "服务人数")
+    private Integer servicePerson;
+
+    @ApiModelProperty(value = "订单数量key")
+    private String[] orderTotalKey;
+
+    @ApiModelProperty(value = "订单数量value")
+    private Integer[] orderTotalValue;
+
+    @ApiModelProperty(value = "订单数量value")
+    private BigDecimal[] orderMoneyValue;
+
+    @ApiModelProperty(value = "商品类型数量key")
+    private String[] goodsTypeKey;
+
+    @ApiModelProperty(value = "商品类型数量value")
+    private Integer[] goodsTypeTotalValue;
+
+    @ApiModelProperty(value = "商品类型金额value")
+    private BigDecimal[] goodsTypeMoneyValue;
+
+    @ApiModelProperty(value = "活动次数排行key")
+    private String[] activityRankKey;
+
+    @ApiModelProperty(value = "活动次数value")
+    private Integer[] activityRankValue;
+
+    @ApiModelProperty(value = "店铺销售排行key")
+    private String[] shopSalesRankKey;
+
+    @ApiModelProperty(value = "店铺销售value")
+    private BigDecimal[] shopSalesRankValue;
+
+    @ApiModelProperty(value = "活动销售排行key")
+    private String[] activitySalesRankKey;
+
+    @ApiModelProperty(value = "活动销售value")
+    private BigDecimal[] activitySalesRankValue;
+
+}
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
index 090183b..a9dc887 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
@@ -57,7 +57,7 @@
     @ApiModelProperty(value = "订单数量value")
     private Integer[] orderTotalValue;
 
-    @ApiModelProperty(value = "订单数量value")
+    @ApiModelProperty(value = "订单金额value")
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "商品类型数量key")
@@ -68,11 +68,5 @@
 
     @ApiModelProperty(value = "商品类型金额value")
     private BigDecimal[] goodsTypeMoneyValue;
-
-    @ApiModelProperty(value = "来源排行key")
-    private String[] orderAgeKey;
-
-    @ApiModelProperty(value = "来源排行value")
-    private BigDecimal[] orderAgeValue;
 
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
index d21cfb1..2349a06 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -8,6 +8,7 @@
 import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
 import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
+import com.ruoyi.system.api.domain.dto.MgtPlActivityAgeDto;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
 import com.ruoyi.system.api.domain.vo.MgtMapTotalVo;
 import org.apache.ibatis.annotations.Param;
@@ -279,4 +280,134 @@
      * @return  List<MgtMapTotalVo>
      */
     List<MgtMapTotalVo> listMemberGoodsRank(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+
+
+    /**
+     * @description getTotalOrderTotalOrderFrom
+     * @param mgtBasePlatformDto
+     * @return MgtTotalOrderTotalVo
+     * @author jqs34
+     * @date 2023/6/19 22:24
+     */
+    MgtTotalOrderTotalVo getPlTotalOrderTotalOrderFrom(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description getTotalOrderTotalGoodsType
+     * @param mgtBasePlatformDto
+     * @return MgtTotalOrderTotalVo
+     * @author jqs34
+     * @date 2023/6/19 22:24
+     */
+    MgtTotalOrderTotalVo getPlTotalOrderTotalGoodsType(@Param("param")MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description listTotalOrderTotal
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalOrderTotal(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description listTotalOrderTotalGoodsType
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalOrderTotalGoodsType(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+
+    /**
+     * @description listTotalOrderTotalGoodsRank
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalOrderTotalGoodsRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description listTotalOrderTotalOrderFrom
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalOrderTotalOrderFrom(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description getTotalActivityTotal
+     * @author  jqs
+     * @date    2023/6/20 9:28
+     * @param mgtBasePlatformDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    MgtPlTotalActivityTotalVo getPlTotalActivityTotal(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+
+    /**
+     * @description listTotalActivityTotalGoodsType
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalActivityTotalGoodsType(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+
+    /**
+     * @description listTotalActivityTotal
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalActivityTotal(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 11:37
+     * @param mgtActivityAgeDto
+     * @return  List<Long>
+     */
+    List<Long> getPlUserIdAgeRank(@Param("param") MgtPlActivityAgeDto mgtActivityAgeDto);
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/6/20 9:57
+     * @param mgtActivityAgeDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(@Param("param")MgtPlActivityAgeDto mgtActivityAgeDto);
+
+    /**
+     * @description listPlTotalShopActivityRank
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalShopActivityRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description listTotalActivityTotal
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalShopActivitySalesRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description listTotalActivityTotal
+     * @param mgtBasePlatformDto
+     * @return List<MgtMapTotalVo>
+     * @author jqs34
+     * @date 2023/6/19 22:48
+     */
+    List<MgtMapTotalPlusVo> listPlTotalActivitySalesRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto);
 }
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;
     }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index 6f7a3ca..d7987fe 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -5,10 +5,7 @@
 import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.order.Order;
 import com.ruoyi.order.domain.vo.*;
-import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
-import com.ruoyi.system.api.domain.dto.MgtActivityAgeDto;
-import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
-import com.ruoyi.system.api.domain.dto.MgtBaseShopDto;
+import com.ruoyi.system.api.domain.dto.*;
 import com.ruoyi.system.api.domain.vo.AppOrderTotalVo;
 import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
@@ -191,7 +188,7 @@
     MgtBulletinBoardVo boardOrderTotal();
 
     /**
-    * @description getTotalOrderTotal
+    * @description 获取商户订单统计
     * @param mgtBaseShopDto
     * @return MgtTotalOrderTotalVo
     * @author jqs34
@@ -201,7 +198,7 @@
 
 
     /**
-     * @description
+     * @description 获取商户活动统计
      * @author  jqs
      * @date    2023/6/20 9:28
      * @param mgtBaseShopDto
@@ -210,7 +207,7 @@
     MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto);
 
     /**
-     * @description
+     * @description 获取商户活动年龄分布
      * @author  jqs
      * @date    2023/6/20 9:57
      * @param mgtActivityAgeDto
@@ -219,7 +216,7 @@
     MgtTotalActivityTotalVo getTotalActivityAgeRank(MgtActivityAgeDto mgtActivityAgeDto);
 
     /**
-     * @description
+     * @description 获取商户数据统计
      * @author  jqs
      * @date    2023/6/20 15:50
      * @param mgtBaseShopDto
@@ -236,6 +233,39 @@
      */
     List<MgtMapTotalVo> listMemberGoodsRank(MgtBasePlatformDto mgtBasePlatformDto);
 
+    /**
+    * @description 获取平台商户数据统计
+    * @param mgtBasePlatformDto
+    * @return List<MgtTotalDataTotalVo>
+    * @author jqs34
+    * @date 2023/6/23 14:01
+    */
+    List<MgtTotalDataTotalVo> getPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto);
 
+    /**
+     * @description 获取平台商户订单统计
+     * @param mgtBasePlatformDto
+     * @return MgtTotalOrderTotalVo
+     * @author jqs34
+     * @date 2023/6/19 22:23
+     */
+    MgtTotalOrderTotalVo getPlTotalOrderTotal(MgtBasePlatformDto mgtBasePlatformDto);
 
+    /**
+     * @description 获取商户活动统计
+     * @author  jqs
+     * @date    2023/6/20 9:28
+     * @param mgtBasePlatformDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description 获取商户活动年龄分布
+     * @author  jqs
+     * @date    2023/6/20 9:57
+     * @param mgtPLActivityAgeDto
+     * @return  MgtTotalActivityTotalVo
+     */
+    MgtPlTotalActivityTotalVo getPlTotalActivityAgeRank(MgtPlActivityAgeDto mgtPLActivityAgeDto);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index 9791035..0b9e048 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -774,6 +774,38 @@
     <select id="listTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
         SELECT
         DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
+        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
+        SUM(toc.order_money) AS mapValueSecond,
+        FROM
+        t_order
+        WHERE
+        del_flag = 0 AND order_from = 2
+        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        <if test="param.shopId != null and param.shopId != ''">
+            AND shop_id = #{param.shopId}
+        </if>
+        GROUP BY
+        order_date
+        ORDER BY
+        order_date ASC
+    </select>
+
+    <select id="getUserIdAgeRank" resultType="java.lang.Long">
+        SELECT
+        DISTINCT user_id
+        FROM
+        t_order
+        WHERE
+        del_flag = 0 AND order_from = 2
+        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        <if test="param.shopId != null and param.shopId != ''">
+            AND shop_id = #{param.shopId}
+        </if>
+    </select>
+
+    <select id="getTotalActivityAgeRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
         COUNT(DISTINCT toc.user_id) AS mapValueFirst
         FROM
         t_order
@@ -793,19 +825,6 @@
         order_date
         ORDER BY
         order_date ASC
-    </select>
-
-    <select id="getUserIdAgeRank" resultType="java.lang.Long">
-        SELECT
-        DISTINCT user_id
-        FROM
-        t_order
-        WHERE
-        del_flag = 0 AND order_from = 2
-        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
-        <if test="param.shopId != null and param.shopId != ''">
-            AND shop_id = #{param.shopId}
-        </if>
     </select>
 
     <select id="getTotalDataTotal" resultType="com.ruoyi.order.domain.vo.MgtTotalDataTotalVo">
@@ -896,4 +915,287 @@
         GROUP BY tog.goods_name
         ORDER BY COUNT(DISTINCT toc.userId) DESC LIMIT 15
     </select>
+
+
+    <select id="getPlTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo">
+        SELECT
+        COUNT(order_id) orderTotal,
+        SUM(CASE WHEN order_from = 1 THEN 1 ELSE 0 END) onlineTotal,
+        SUM(CASE WHEN order_from = 3 THEN 1 ELSE 0 END) offlineTotal,
+        SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END) activityTotal,
+        IFNULL(SUM(order_money),0) orderMoney,
+        SUM(CASE WHEN order_from = 1 THEN order_money ELSE 0 END) onlineMoney,
+        SUM(CASE WHEN order_from = 3 THEN order_money ELSE 0 END) offlineMoney,
+        SUM(CASE WHEN order_from = 2 THEN order_money ELSE 0 END) activityMoney
+        FROM t_order WHERE del_flag = 0
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND create_time &lt;= #{param.endDate}
+        </if>
+    </select>
+
+    <select id="getPlTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo">
+        SELECT
+        SUM(CASE WHEN tog.goods_type = 1 THEN 1 ELSE 0 END) cycleTotal,
+        SUM(CASE WHEN tog.goods_type = 3 THEN 1 ELSE 0 END) experienceTotal,
+        SUM(CASE WHEN tog.goods_type = 2 THEN 1 ELSE 0 END) serviceTotal,
+        SUM(CASE WHEN tog.goods_type = 1 THEN tog.goods_total_money ELSE 0 END) cycleMoney,
+        SUM(CASE WHEN tog.goods_type = 3 THEN tog.goods_total_money ELSE 0 END) experienceMoney,
+        SUM(CASE WHEN tog.goods_type = 2 THEN tog.goods_total_money ELSE 0 END) serviceMoney
+        FROM t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND toc.create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND toc.create_time &lt;= #{param.endDate}
+        </if>
+    </select>
+
+    <select id="listPlTotalOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
+        COUNT(order_id) AS mapValueFirst,
+        IFNULL(SUM(order_money),0) AS mapValueSecond
+        FROM
+        t_order
+        WHERE
+        del_flag = 0
+        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY
+        order_date
+        ORDER BY
+        order_date ASC
+    </select>
+
+    <select id="listPlTotalOrderTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        tog.goods_type mapKey,
+        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
+        IFNULL(SUM(tog.goods_total_money),0) AS mapValueSecond
+        FROM
+        t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY tog.goods_type
+    </select>
+
+    <select id="listPlTotalOrderTotalGoodsRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        tog.goods_name mapKey,
+        IFNULL(SUM(tog.goods_total_money),0) mapValueSecond
+        FROM t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND toc.create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND toc.create_time &lt;= #{param.endDate}
+        </if>
+        GROUP BY tog.goods_name
+        ORDER BY SUM(tog.goods_total_money) DESC LIMIT 10
+    </select>
+
+    <select id="listPlTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        CASE toc.order_from
+        WHEN 1 THEN "商城订单"
+        WHEN 2 THEN "秒杀活动订单"
+        WHEN 3 THEN "线下创建订单"
+        END mapKey,
+        IFNULL(SUM(toc.order_money),0) mapValueSecond
+        FROM t_order toc
+        WHERE toc.del_flag = 0
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND toc.create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND toc.create_time &lt;= #{param.endDate}
+        </if>
+        GROUP BY toc.order_from
+        ORDER BY SUM(toc.order_money) DESC LIMIT 10
+    </select>
+
+    <select id="getPlTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtPlTotalActivityTotalVo">
+        SELECT
+        COUNT(order_id) orderTotal,
+        IFNULL(SUM(order_money),0) orderMoney,
+        COUNT(DISTINCT user_id) orderPerson
+        FROM t_order WHERE del_flag = 0 AND order_from = 2
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND create_time &lt;= #{param.endDate}
+        </if>
+    </select>
+
+    <select id="listPlTotalActivityTotalGoodsType" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        tog.goods_type mapKey,
+        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
+        IFNULL(SUM(tog.goods_total_money),0) AS mapValueSecond,
+        COUNT(DISTINCT toc.user_id) AS mapValueThird,
+        FROM t_order toc
+        INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
+        WHERE toc.del_flag = 0 AND order_from = 2
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY tog.goods_type
+    </select>
+
+    <select id="listPlTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
+        COUNT(DISTINCT toc.order_id) AS mapValueFirst,
+        IFNULL(SUM(toc.order_money),0) AS mapValueSecond,
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
+        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY
+        order_date
+        ORDER BY
+        order_date ASC
+    </select>
+
+    <select id="getPlUserIdAgeRank" resultType="java.lang.Long">
+        SELECT
+        DISTINCT user_id
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
+        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="getPlTotalActivityAgeRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
+        COUNT(DISTINCT toc.user_id) AS mapValueFirst
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
+        AND create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND toc.shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.userIds != null">
+            AND user_id IN
+            <foreach collection="param.userIds" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY rder_date
+        ORDER BY order_date ASC
+    </select>
+
+    <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+            shop_id AS mapKey,
+            COUNT(order_id) AS mapValueFirst
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY shop_id
+        ORDER BY COUNT(toc.order_id) DESC LIMIT 15
+    </select>
+
+    <select id="listPlTotalShopActivitySalesRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+            shop_id AS mapKey,
+            IFNULL(SUM(order_money),0) AS mapValueSecond
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY shop_id
+        ORDER BY SUM(order_money) DESC LIMIT 15
+    </select>
+
+    <select id="listPlTotalActivitySalesRank" resultType="com.ruoyi.order.domain.vo.MgtMapTotalPlusVo">
+        SELECT
+        activity_name AS mapKey,
+        IFNULL(SUM(order_money),0) AS mapValueSecond
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2
+        <if test="param.shopIdList != null and param.shopIdList != ''">
+            AND shop_id IN
+            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        GROUP BY activity_name
+        ORDER BY SUM(order_money) DESC LIMIT 15
+    </select>
 </mapper>
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
index 5eb072e..ce8ad2e 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java
@@ -10,6 +10,7 @@
 import com.ruoyi.shop.service.shop.ShopSuggestService;
 import com.ruoyi.shop.service.task.ShopTaskService;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
+import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto;
 import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
@@ -174,4 +175,18 @@
         bulletinBoardVo.setFollowShopToday(bulletinBoardVoTask.getFollowShopToday());
         return R.ok(bulletinBoardVo);
     }
+
+    /**
+    * @description 获取平台统计shopId
+    * @param mgtBasePlatformDto
+    * @return R<List<Long>>
+    * @author jqs34
+    * @date 2023/6/23 14:14
+    */
+    @PostMapping("/listShopIdByPlTotal")
+    public R<List<Long>> listShopIdByPlTotal(@RequestBody MgtBasePlatformDto mgtBasePlatformDto)
+    {
+        List<Long> shopIdList = shopService.listShopIdByPlTotal(mgtBasePlatformDto);
+        return R.ok(shopIdList);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java
index d73b5be..a6df601 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtTotalController.java
@@ -39,4 +39,5 @@
         return R.ok(totalShopTotalVo);
     }
 
+
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
index 84a9ef3..ba17f02 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopMapper.java
@@ -140,6 +140,15 @@
     List<Long> listShopIdByTotal(MgtBasePlatformDto mgtBasePlatformDto);
 
     /**
+     * @description  获取统计关联shopId
+     * @author  jqs
+     * @date    2023/6/21 16:45
+     * @param mgtBasePlatformDto
+     * @return  List<Long>
+     */
+    List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
      * @description  商户类型统计
      * @author  jqs
      * @date    2023/6/21 17:40
@@ -166,4 +175,21 @@
      */
     List<MgtMapTotalVo> listShopAreaRank(MgtBasePlatformDto mgtBasePlatformDto);
 
+    /**
+     * @description  商户类型统计
+     * @author  jqs
+     * @date    2023/6/21 17:40
+     * @param
+     * @return  List<MgtMapTotalVo>
+     */
+    List<MgtMapTotalVo> listShopSalesRank(MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+     * @description  商户类型统计
+     * @author  jqs
+     * @date    2023/6/21 17:40
+     * @param
+     * @return  List<MgtMapTotalVo>
+     */
+    List<MgtMapTotalVo> listShopRecommendRank(MgtBasePlatformDto mgtBasePlatformDto);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
index 4846a4a..a84c332 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -668,26 +668,27 @@
      * @return  MgtPlTotalShopTotalVo
      */
     @Override
-    public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto){
+    public MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto) {
         //获取需要关联的用户id集合
-        if(mgtBasePlatformDto.getDeptId()!=null){
+        if (mgtBasePlatformDto.getDeptId() != null) {
             List<Long> userIdList = new ArrayList<>();
-            if(mgtBasePlatformDto.getUserId()!=null){
+            if (mgtBasePlatformDto.getUserId() != null) {
                 userIdList.add(mgtBasePlatformDto.getUserId());
-            }else{
+            } else {
                 MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept();
                 mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId());
                 mgtUserIdByDept = configService.getUserIdByDept(mgtUserIdByDept).getData();
                 userIdList = mgtUserIdByDept.getUserIdList();
             }
-            if(!userIdList.isEmpty()){
+            if (!userIdList.isEmpty()) {
                 mgtBasePlatformDto.setUserIdList(userIdList);
             }
         }
+        //获取基础统计
         MgtPlTotalShopTotalVo plTotalShopTotalVo = shopMapper.getPlTotalShopTotal();
         plTotalShopTotalVo.setSignTotal(0);
         List<Long> shopIdList = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
-        if(!shopIdList.isEmpty()){
+        if (!shopIdList.isEmpty()) {
             MgtShopTotalMemberVo shopTotalMemberVo = remoteMemberService.getUserTotalByShopId(shopIdList).getData();
             plTotalShopTotalVo.setManTotal(shopTotalMemberVo.getManTotal());
             plTotalShopTotalVo.setWomenTotal(shopTotalMemberVo.getWomenTotal());
@@ -701,9 +702,9 @@
             Integer[] shopTypeValue = new Integer[shopTypeTotal.size()];
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
             for (int i = 0; i < shopTypeTotal.size(); i++) {
-                if(shopTypeTotal.get(i).getMapKey().equals("1")){
+                if (shopTypeTotal.get(i).getMapKey().equals("1")) {
                     shopTypeKey[i] = "经销商";
-                }else if(shopTypeTotal.get(i).getMapKey().equals("2")){
+                } else if (shopTypeTotal.get(i).getMapKey().equals("2")) {
                     shopTypeKey[i] = "代理商";
                 }
                 shopTypeValue[i] = shopTypeTotal.get(i).getMapValue();
@@ -712,33 +713,70 @@
             plTotalShopTotalVo.setShopTypeValue(shopTypeValue);
         }
         //获取商户状态
-        List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopTypeTotal(mgtBasePlatformDto);
+        List<MgtMapTotalVo> shopStatusTotal = shopMapper.listShopStatusTotal(mgtBasePlatformDto);
         if (shopStatusTotal != null && shopStatusTotal.size() > 0) {
             String[] shopStatusKey = new String[shopStatusTotal.size()];
             Integer[] shopStatusValue = new Integer[shopStatusTotal.size()];
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
             for (int i = 0; i < shopStatusTotal.size(); i++) {
-                if(shopStatusTotal.get(i).getMapKey().equals("1")){
-                    shopStatusKey[i] = "经销商";
-                }else if(shopStatusTotal.get(i).getMapKey().equals("2")){
-                    shopStatusKey[i] = "代理商";
-                }
+                shopStatusKey[i] = shopStatusTotal.get(i).getMapKey();
                 shopStatusValue[i] = shopStatusTotal.get(i).getMapValue();
             }
             plTotalShopTotalVo.setShopStatusKey(shopStatusKey);
             plTotalShopTotalVo.setShopStatusValue(shopStatusValue);
         }
-        /*plTotalShopTotalVo.setAreaRankKey();
-        plTotalShopTotalVo.setAreaRankValue();
-        plTotalShopTotalVo.setShopSalesRankKey();
-        plTotalShopTotalVo.setShopSalesRankValue();
-        plTotalShopTotalVo.setShopRecommendKey();
-        plTotalShopTotalVo.setShopRecommendValue();*/
-
-
-
-
-
+        //获取区域排名
+        List<MgtMapTotalVo> shopAreaRank = shopMapper.listShopAreaRank(mgtBasePlatformDto);
+        if (shopAreaRank != null && shopAreaRank.size() > 0) {
+            String[] shopRankKey = new String[shopAreaRank.size()];
+            Integer[] shopRankValue = new Integer[shopAreaRank.size()];
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < shopAreaRank.size(); i++) {
+                shopRankKey[i] = shopAreaRank.get(i).getMapKey();
+                shopRankValue[i] = shopAreaRank.get(i).getMapValue();
+            }
+            plTotalShopTotalVo.setAreaRankKey(shopRankKey);
+            plTotalShopTotalVo.setAreaRankValue(shopRankValue);
+        }
+        //获取销售排名
+        List<MgtMapTotalVo> shopSalesRank = shopMapper.listShopSalesRank(mgtBasePlatformDto);
+        if (shopSalesRank != null && shopSalesRank.size() > 0) {
+            String[] shopSalesKey = new String[shopSalesRank.size()];
+            Integer[] shopSalesValue = new Integer[shopSalesRank.size()];
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < shopSalesRank.size(); i++) {
+                shopSalesKey[i] = shopSalesRank.get(i).getMapKey();
+                shopSalesValue[i] = shopSalesRank.get(i).getMapValue();
+            }
+            plTotalShopTotalVo.setShopSalesRankKey(shopSalesKey);
+            plTotalShopTotalVo.setShopSalesRankValue(shopSalesValue);
+        }
+        //获取推荐
+        List<MgtMapTotalVo> shopRecommendRank = shopMapper.listShopRecommendRank(mgtBasePlatformDto);
+        if (shopRecommendRank != null && shopRecommendRank.size() > 0) {
+            String[] shopRecommendKey = new String[shopRecommendRank.size()];
+            Integer[] shopRecommendValue = new Integer[shopRecommendRank.size()];
+            // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
+            for (int i = 0; i < shopRecommendRank.size(); i++) {
+                shopRecommendKey[i] = shopRecommendRank.get(i).getMapKey();
+                shopRecommendValue[i] = shopRecommendRank.get(i).getMapValue();
+            }
+            plTotalShopTotalVo.setShopRecommendKey(shopRecommendKey);
+            plTotalShopTotalVo.setShopRecommendValue(shopRecommendValue);
+        }
         return plTotalShopTotalVo;
     }
+
+    /**
+     * @description 获取平台统计shopId
+     * @param mgtBasePlatformDto
+     * @return List<Long>
+     * @author jqs34
+     * @date 2023/6/23 14:12
+     */
+    @Override
+    public List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto){
+        List<Long> shopIdList = shopMapper.listShopIdByPlTotal(mgtBasePlatformDto);
+        return shopIdList;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
index 27609a9..b608a23 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -197,4 +197,13 @@
      * @return  MgtPlTotalShopTotalVo
      */
     MgtPlTotalShopTotalVo getPlTotalShopTotal(MgtBasePlatformDto mgtBasePlatformDto);
+
+    /**
+    * @description 获取平台统计shopId
+    * @param mgtBasePlatformDto
+    * @return List<Long>
+    * @author jqs34
+    * @date 2023/6/23 14:13
+    */
+    List<Long> listShopIdByPlTotal(MgtBasePlatformDto mgtBasePlatformDto);
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
index b5d7b2c..bb8fa05 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -585,6 +585,29 @@
         </if>
     </select>
 
+    <select id="listShopIdByPlTotal" resultType="java.lang.Long">
+        SELECT
+        ts.shop_id
+        FROM t_shop ts
+        WHERE ts.del_flag = 0
+        <if test="param.userIdList!=null and param.userIdList!=''">
+            AND ts.belong_user_id IN
+            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
+            AND ts.shop_province_code = #{param.shopProvinceCode}
+        </if>
+        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
+            AND ts.shop_city_code = #{param.shopCityCode}
+        </if>
+        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
+            AND ts.shop_area_code = #{param.shopAreaCode}
+        </if>
+    </select>
+
+
     <select id="listShopTypeTotal" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
         SELECT
         ts.shop_type mapKey,
@@ -676,4 +699,65 @@
         ORDER BY COUNT(ts.shop_id) DESC LIMIT 15
     </select>
 
+    <select id="listShopSalesRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+        SELECT
+        ts.shop_name mapKey,
+        tst.total_order_money mapValue
+        FROM t_shop ts
+        INNER JOIN t_shopp_total tst ON ts.shop_id = tst.shop_id
+        WHERE ts.del_flag = 0
+        <if test="param.userIdList!=null and param.userIdList!=''">
+            AND ts.belong_user_id IN
+            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
+            AND ts.shop_province_code = #{param.shopProvinceCode}
+        </if>
+        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
+            AND ts.shop_city_code = #{param.shopCityCode}
+        </if>
+        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
+            AND ts.shop_area_code = #{param.shopAreaCode}
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND ts.create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND ts.create_time &lt;= #{param.endDate}
+        </if>
+        ORDER BY tst.total_order_money DESC LMIMIT 15
+    </select>
+
+    <select id="listShopRecommendRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapTotalVo">
+        SELECT
+        ts.recommend_person mapKey,
+        COUNT(ts.shop_id) mapValue
+        FROM t_shop ts
+        WHERE ts.del_flag = 0
+        <if test="param.userIdList!=null and param.userIdList!=''">
+            AND ts.belong_user_id IN
+            <foreach collection="param.userIdList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="param.shopProvinceCode!=null and param.shopProvinceCode!=''">
+            AND ts.shop_province_code = #{param.shopProvinceCode}
+        </if>
+        <if test="param.shopCityCode!=null and param.shopCityCode!=''">
+            AND ts.shop_city_code = #{param.shopCityCode}
+        </if>
+        <if test="param.shopAreaCode!=null and param.shopAreaCode!=''">
+            AND ts.shop_area_code = #{param.shopAreaCode}
+        </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND ts.create_time &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND ts.create_time &lt;= #{param.endDate}
+        </if>
+        GROUP BY ts.recommend_person
+        ORDER BY COUNT(ts.shop_id) DESC
+    </select>
 </mapper>

--
Gitblit v1.7.1