From ec72f7c88351c81b436879f8afc547632b0d2b82 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Thu, 21 Sep 2023 19:01:52 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E6=B7=BB=E5=8A=A0=E9=A9=BE?= =?UTF-8?q?=E9=A9=B6=E8=88=B1=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datatower/CockpitScreenController.java | 17 ++++++++ .../domain/vo/cockpit/CountMonthVO.java | 16 ++++++++ .../domain/vo/cockpit/MonthDataVO.java | 14 +++++++ .../mapper/WxCUserBasicInfoMapper.java | 10 +++++ .../service/CockpitScreenService.java | 7 ++++ .../impl/CockpitScreenServiceImpl.java | 40 +++++++++++++++++-- .../mapper/WxCUserBasicInfoMapper.xml | 5 +++ 7 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/cockpit/CountMonthVO.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/cockpit/MonthDataVO.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/CockpitScreenController.java b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/CockpitScreenController.java index 8b554ba55..1a5dd906a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/CockpitScreenController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/CockpitScreenController.java @@ -9,8 +9,11 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + @Api(description = "驾驶舱大屏") @RestController @RequestMapping("cockpitscreen") @@ -32,4 +35,18 @@ public class CockpitScreenController extends BaseController { public ResultData countShop() { return new ResultData(cockpitScreenService.countShop(getTenantInfo())); } + + @TenantIgnore + @ApiOperation("驾驶舱大屏-统计会员") + @GetMapping("/countUser") + public ResultData countUser(@RequestParam("years") List years) { + return new ResultData(cockpitScreenService.countUser(getTenantInfo(), years)); + } + + @TenantIgnore + @ApiOperation("驾驶舱大屏-统计触达用户") + @GetMapping("/countReachUser") + public ResultData countReachUser(@RequestParam("years") List years) { + return new ResultData(cockpitScreenService.countReachUser(getTenantInfo(), years)); + } } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/cockpit/CountMonthVO.java b/mallinkService/src/main/java/com/iformall/domain/vo/cockpit/CountMonthVO.java new file mode 100644 index 000000000..d0c3c8bfc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/cockpit/CountMonthVO.java @@ -0,0 +1,16 @@ +package com.iformall.domain.vo.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@ApiModel(value = "年度某一数据统计返回数据") +@Data +public class CountMonthVO { + @ApiModelProperty(value = "年份") + private Integer year; + @ApiModelProperty(value = "月份") + private List months; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/cockpit/MonthDataVO.java b/mallinkService/src/main/java/com/iformall/domain/vo/cockpit/MonthDataVO.java new file mode 100644 index 000000000..aef697b56 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/cockpit/MonthDataVO.java @@ -0,0 +1,14 @@ +package com.iformall.domain.vo.cockpit; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel(value = "每月统计数量") +@Data +public class MonthDataVO { + @ApiModelProperty(value = "月份") + private Integer month; + @ApiModelProperty(value = "数量") + private Integer count; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java index 019eed224..0d1b7f1ed 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java @@ -73,5 +73,15 @@ public interface WxCUserBasicInfoMapper extends CommonMapper countUserByGender(@Param("finalTenantId") String finalTenantId); + + /** + * 统计指定年,指定月的会员数量 + * + * @param finalTenantId + * @param year + * @param month + * @return {@link Integer} + */ + Integer countUserByMonth(@Param("finalTenantId") String finalTenantId, @Param("year") Integer year, @Param("month") Integer month); } diff --git a/mallinkService/src/main/java/com/iformall/service/CockpitScreenService.java b/mallinkService/src/main/java/com/iformall/service/CockpitScreenService.java index c59c141e4..be7193ce8 100644 --- a/mallinkService/src/main/java/com/iformall/service/CockpitScreenService.java +++ b/mallinkService/src/main/java/com/iformall/service/CockpitScreenService.java @@ -1,9 +1,12 @@ package com.iformall.service; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.cockpit.CountMonthVO; import com.iformall.domain.vo.cockpit.CountShopVO; import com.iformall.domain.vo.cockpit.CountUserGenderVO; +import java.util.List; + /** * 驾驶舱大屏服务 * @@ -14,4 +17,8 @@ public interface CockpitScreenService { CountUserGenderVO countUserGender(TenantEntity tenantInfo); CountShopVO countShop(TenantEntity tenantInfo); + + List countUser(TenantEntity tenantInfo, List years); + + List countReachUser(TenantEntity tenantInfo, List years); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/CockpitScreenServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/CockpitScreenServiceImpl.java index 283da3f53..1eb5b600a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/CockpitScreenServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/CockpitScreenServiceImpl.java @@ -4,8 +4,10 @@ import com.iformall.common.CommonConstant; import com.iformall.domain.dto.cockpit.CountShopByStatusDTO; import com.iformall.domain.dto.cockpit.CountUserByGenderDTO; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.cockpit.CountMonthVO; import com.iformall.domain.vo.cockpit.CountShopVO; import com.iformall.domain.vo.cockpit.CountUserGenderVO; +import com.iformall.domain.vo.cockpit.MonthDataVO; import com.iformall.enums.EnumShopStatus; import com.iformall.enums.EnumUserGender; import com.iformall.mapper.WxCUserBasicInfoMapper; @@ -13,14 +15,14 @@ import com.iformall.mapper.WxShopMapper; import com.iformall.service.CockpitScreenService; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxMallService; +import com.iformall.utils.DateUtils; +import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -96,4 +98,36 @@ public class CockpitScreenServiceImpl implements CockpitScreenService { result.setUnRentedShopCountRatio(BigDecimal.ONE.subtract(rentedShopCountRatio)); return result; } + + @Override + public List countUser(TenantEntity tenantInfo, List years) { + if (CollectionUtils.isEmpty(years)) { + years.add(DateUtils.getYear(new Date())); + } + + List result = new ArrayList<>(); + years.forEach(year -> { + CountMonthVO countMonthVO = new CountMonthVO(); + List vos = new ArrayList<>(); + for (int i = 0; i < 12; i++) { + MonthDataVO vo = new MonthDataVO(); + vo.setMonth(i + 1); + Integer count = cUserBasicInfoMapper.countUserByMonth(tenantInfo.getFinalTenantId(), year, i + 1); + vo.setCount(count); + vos.add(vo); + } + countMonthVO.setYear(year); + countMonthVO.setMonths(vos); + result.add(countMonthVO); + }); + return result; + } + + @Override + public List countReachUser(TenantEntity tenantInfo, List years) { + if (CollectionUtils.isEmpty(years)) { + years.add(DateUtils.getYear(new Date())); + } + return null; + } } diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 5499048cf..45535c377 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -576,6 +576,11 @@ WHERE final_tenant_id = #{finalTenantId} GROUP BY sex; +