From de89067c08d4568eaa28ab6a03c4152bc7ddcfd8 Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Wed, 3 Sep 2025 13:42:16 +0800 Subject: [PATCH] =?UTF-8?q?##=20Opt=20-=20=E4=B8=9A=E7=BB=A9=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/CuMemberSettlePeriodMapper.java | 2 + .../service/ICuMemberSettlePeriodService.java | 4 + .../impl/CuMemberSettlePeriodServiceImpl.java | 5 + .../api/ApiRetailHomePageController.java | 9 ++ .../mapper/CuMemberRetailRangeMapper.java | 18 +++ .../member/param/PerformanceQueryParam.java | 19 ++++ .../ICuMemberRetailAchieveService.java | 4 +- .../CuMemberRetailAchieveServiceImpl.java | 106 +++++++++++++++++- .../hzs/retail/member/vo/PerformanceVO.java | 45 ++++++++ .../achieve/CuMemberRetailRangeMapper.xml | 61 ++++++++++ .../achieve/CuMemberSettlePeriodMapper.xml | 9 ++ .../api/ApiBdAdvertBannerController.java | 5 +- .../service/IBdAdvertBannerService.java | 1 + .../impl/BdAdvertBannerServiceImpl.java | 1 + 14 files changed, 282 insertions(+), 7 deletions(-) create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/retail/member/param/PerformanceQueryParam.java create mode 100644 bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/PerformanceVO.java diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberSettlePeriodMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberSettlePeriodMapper.java index b5c8b5b4..f7808336 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberSettlePeriodMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/mapper/CuMemberSettlePeriodMapper.java @@ -2,9 +2,11 @@ package com.hzs.member.achieve.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; +import org.apache.ibatis.annotations.Param; /** * 会员结算期间 Mapper 接口 */ public interface CuMemberSettlePeriodMapper extends BaseMapper { + CuMemberSettlePeriod getLastDayCuMemberSettlePeriod(@Param("date") String date); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberSettlePeriodService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberSettlePeriodService.java index 0b723812..519b0576 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberSettlePeriodService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/ICuMemberSettlePeriodService.java @@ -22,4 +22,8 @@ public interface ICuMemberSettlePeriodService extends IService queryCuMemberSettlePeriod(); + /** + * 获取指定年月最后一天的期间配置 + */ + CuMemberSettlePeriod getLastDayCuMemberSettlePeriod(String date); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java index b4a7635a..1e52ba6c 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java @@ -165,4 +165,9 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl selectMemberSmallBoxList(CuMemberRetailAchieveVO param); + /** + * 按等级值获取伞下会员id + * @param userId + * @param gradeValueList + * @return + */ + List getUmbrellaMemberListWithGradeValue(@Param("userId") Long userId, @Param("gradeValueList") List gradeValueList); + + /** + * 业绩列表 + * @param memberIdList + * @param targetDayStart + * @param targetDayEnd + * @return + */ + List getPerformanceList(@Param("tableName") String tableName, @Param("memberIdList") List memberIdList, @Param("targetDayStart") Date targetDayStart, @Param("targetDayEnd") Date targetDayEnd); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/param/PerformanceQueryParam.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/param/PerformanceQueryParam.java new file mode 100644 index 00000000..21568fa5 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/param/PerformanceQueryParam.java @@ -0,0 +1,19 @@ +package com.hzs.retail.member.param; + +import lombok.*; + +import java.io.Serializable; + + +@Getter +@Setter +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PerformanceQueryParam implements Serializable { + private String year; + private String month; + + private Integer pageNum = 1; + private Integer pageSize = 10; +} diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java index b81e10c1..26bea8c4 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/ICuMemberRetailAchieveService.java @@ -3,10 +3,12 @@ package com.hzs.retail.member.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.retail.member.param.MarketDynamicsQueryDateParam; +import com.hzs.retail.member.param.PerformanceQueryParam; import com.hzs.retail.member.utils.PageResult; import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; import com.hzs.retail.member.vo.MarketDynamicsDetailVO; +import com.hzs.retail.member.vo.PerformanceVO; import java.util.List; @@ -99,5 +101,5 @@ public interface ICuMemberRetailAchieveService extends IService getMarketDynamics(MarketDynamicsQueryDateParam param); - + List getPerformanceList(PerformanceQueryParam param); } diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java index eb5b8c31..6aa9449e 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/service/impl/CuMemberRetailAchieveServiceImpl.java @@ -5,25 +5,30 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.core.constant.TableNameConstants; +import com.hzs.common.core.enums.EGrade; import com.hzs.common.core.enums.EYesNo; import com.hzs.common.core.utils.DateUtils; +import com.hzs.common.core.utils.PageUtils; import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.security.utils.SecurityUtils; import com.hzs.member.account.service.ICuMemberBaseService; import com.hzs.member.achieve.service.ICuMemberSettlePeriodService; +import com.hzs.member.achieve.service.ICuMemberTreeService; import com.hzs.member.base.service.ICuMemberService; +import com.hzs.member.base.service.impl.CuMemberServiceImpl; import com.hzs.retail.member.mapper.CuMemberRetailRangeMapper; import com.hzs.retail.member.param.MarketDynamicsQueryDateParam; +import com.hzs.retail.member.param.PerformanceQueryParam; import com.hzs.retail.member.service.ICuMemberRetailAchieveService; import com.hzs.retail.member.utils.DataStatisticsUtil; import com.hzs.retail.member.utils.PageResult; -import com.hzs.retail.member.vo.CuMemberRetailAchieveVO; -import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsDetailVO; -import com.hzs.retail.member.vo.CuMemberRetailDataStatisticsResultVO; -import com.hzs.retail.member.vo.MarketDynamicsDetailVO; +import com.hzs.retail.member.vo.*; +import com.hzs.system.config.IGradeServiceApi; +import com.hzs.system.config.dto.GradeDTO; import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,6 +52,14 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl getPerformanceList(PerformanceQueryParam param) { + // 1.拼年月 + Date targetDate = null; + Date targetDayStart = null; + Date targetDayEnd = null; + CuMemberSettlePeriod settlePeriod = null; + if(isCurrentMonth(param.getYear(), param.getMonth())) { + targetDate = DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate()); + targetDayStart = DateUtils.getFirstDayOfMonth(targetDate); + targetDayEnd = DateUtils.getLastDayOfMonth(targetDate); + settlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, targetDate)); + }else{ + settlePeriod = iCuMemberSettlePeriodService.getLastDayCuMemberSettlePeriod(param.getYear() + "-" + param.getMonth()); + targetDayStart = DateUtils.getFirstDayOfMonth(settlePeriod.getSettleDate()); + targetDayEnd = DateUtils.getLastDayOfMonth(settlePeriod.getSettleDate()); + + } + if(ObjectUtil.isEmpty(settlePeriod)){ + return Collections.emptyList(); + } + String settleTable = TableNameConstants.CU_MEMBER_RETAIL_RANGE + settlePeriod.getPkId(); + Integer num = memberTreeService.queryExistOracleTable(settleTable); + if (ObjectUtil.isEmpty(num) || num <= 0) { + return Collections.emptyList(); + } + /** + * 获取当前用户的等级 + * 总公司 -> 查看自己 + 伞下代理、店主,以业绩大排序(会员姓名、会员等级、销售业绩、销售盒数、复购业绩、复购盒数) + * 代理 -> 查看自己 + 伞下代理、店主 + * 店主 -> 查看自己 + 直推 + */ + CuMember member = cuMemberService.getMember(SecurityUtils.getUserId()); + GradeDTO gradeDTO = gradeServiceApi.getGrade(member.getPkSettleGrade()).getData(); + List pkMemberList = null; + List gradeValueList = null; + if( + EGrade.COMPANY.getValue() == gradeDTO.getGradeValue() // 总公司 + || + (EGrade.DIRECTOR.getValue() == gradeDTO.getGradeValue() + || EGrade.REGION.getValue() == gradeDTO.getGradeValue()) // 代理 + ){ + gradeValueList = Arrays.asList(EGrade.DIRECTOR.getValue(), EGrade.REGION.getValue(), EGrade.S_VIP.getValue(), EGrade.VIP.getValue()); + pkMemberList = baseMapper.getUmbrellaMemberListWithGradeValue(member.getPkId(), gradeValueList); + }else if ( + EGrade.S_VIP.getValue() == gradeDTO.getGradeValue() + || EGrade.VIP.getValue() == gradeDTO.getGradeValue() + ){ + pkMemberList = baseMapper.selectDirectPushByPkMember(member.getPkId(), SecurityUtils.getSystemType()); + } + List meList = baseMapper.getPerformanceList(settleTable, Collections.singletonList(member.getPkId()), targetDayStart, targetDayEnd); + PageUtils.startPage(param.getPageNum(), param.getPageSize()); + List otherList = new ArrayList<>(); + if(CollUtil.isNotEmpty(pkMemberList)){ + otherList = baseMapper.getPerformanceList(settleTable, pkMemberList, targetDayStart, targetDayEnd); + } + PageUtils.clearPage(); + if(param.getPageNum() == 1){ + meList.addAll(otherList); + return meList; + }else{ + return otherList; + } + } + public static boolean isCurrentMonth(String yearStr, String monthStr) { + if (yearStr == null || monthStr == null || yearStr.trim().isEmpty() || monthStr.trim().isEmpty()) { + throw new IllegalArgumentException("年份和月份不能为空"); + } + int year; + int month; + try { + year = Integer.parseInt(yearStr.trim()); + month = Integer.parseInt(monthStr.trim()); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("年份和月份必须是有效的数字字符串", e); + } + if (year < 0 || month < 1 || month > 12) { + throw new IllegalArgumentException("年份不能为负数,月份必须在1-12之间"); + } + LocalDate currentDate = LocalDate.now(); + int currentYear = currentDate.getYear(); + int currentMonth = currentDate.getMonthValue(); + return (year == currentYear && month == currentMonth); + } + private String getDayTableName(String localDate) { CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate); if (ObjectUtil.isEmpty(cuMemberSettlePeriod)) { diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/PerformanceVO.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/PerformanceVO.java new file mode 100644 index 00000000..6c2a1b43 --- /dev/null +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/vo/PerformanceVO.java @@ -0,0 +1,45 @@ +package com.hzs.retail.member.vo; + +import com.hzs.common.core.annotation.BigDecimalFormat; +import lombok.*; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Getter +@Setter +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PerformanceVO implements Serializable { + /** + * 用户id + */ + private Long id; + /** + * 用户名称 + */ + private String memberName; + /** + * 用户等级 + */ + private String memberLevel; + /** + * 当月业绩 + */ + @BigDecimalFormat + private BigDecimal currentMonthPv; + /** + * 当月盒数 + */ + private Integer currentMonthBoxNum; + /** + * 复购业绩 + */ + @BigDecimalFormat + private BigDecimal repurchasePv; + /** + * 复购盒数 + */ + private Integer repurchaseBox; +} diff --git a/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberRetailRangeMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberRetailRangeMapper.xml index 1256f056..1e2a4c4e 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberRetailRangeMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberRetailRangeMapper.xml @@ -712,4 +712,65 @@ order by totalBoxNum desc, todayPv desc, cu.CREATION_TIME desc, cu.pk_id asc + + diff --git a/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberSettlePeriodMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberSettlePeriodMapper.xml index 177281fc..90f9383f 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberSettlePeriodMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/member/achieve/CuMemberSettlePeriodMapper.xml @@ -22,5 +22,14 @@ + diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/controller/api/ApiBdAdvertBannerController.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/controller/api/ApiBdAdvertBannerController.java index 31ead6f7..73262af9 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/controller/api/ApiBdAdvertBannerController.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/controller/api/ApiBdAdvertBannerController.java @@ -6,6 +6,7 @@ import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.domain.system.config.BdAdvertBanner; +import com.hzs.common.security.utils.SecurityUtils; import com.hzs.system.config.service.IBdAdvertBannerService; import com.hzs.system.config.vo.ApiAdvertBannerVO; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +32,7 @@ public class ApiBdAdvertBannerController extends BaseController { **/ @GetMapping("/list") public TableDataInfo list(BdAdvertBanner banner) { - List list = iBdAdvertBannerService.listData(banner); + List list = iBdAdvertBannerService.listData(banner, SecurityUtils.getUserId()); return getDataTable(list); } @@ -45,7 +46,7 @@ public class ApiBdAdvertBannerController extends BaseController { // 返回结果 List resultList = new ArrayList<>(); - List list = iBdAdvertBannerService.listData(null); + List list = iBdAdvertBannerService.listData(null, SecurityUtils.getUserId()); if (CollectionUtil.isNotEmpty(list)) { resultList = BeanUtil.copyToList(list, ApiAdvertBannerVO.class); } diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/IBdAdvertBannerService.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/IBdAdvertBannerService.java index 913b9d9b..d002f500 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/IBdAdvertBannerService.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/IBdAdvertBannerService.java @@ -2,6 +2,7 @@ package com.hzs.system.config.service; import com.baomidou.mybatisplus.extension.service.IService; import com.hzs.common.domain.system.config.BdAdvertBanner; +import com.hzs.common.domain.system.config.ext.BdAdvertBannerExt; import java.util.List; diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdAdvertBannerServiceImpl.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdAdvertBannerServiceImpl.java index b50fc93c..1cc31f6e 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdAdvertBannerServiceImpl.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/config/service/impl/BdAdvertBannerServiceImpl.java @@ -1,5 +1,6 @@ package com.hzs.system.config.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hzs.common.core.constant.CountryConstants;