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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND toc.create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND toc.create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND toc.create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND ts.create_time <= #{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 >= #{param.startDate} + </if> + <if test="param.endDate!=null and param.endDate!=''"> + AND ts.create_time <= #{param.endDate} + </if> + GROUP BY ts.recommend_person + ORDER BY COUNT(ts.shop_id) DESC + </select> </mapper> -- Gitblit v1.7.1