From 279a17cf1ec9f5d63cdd66d08603ee06d21dfb1d Mon Sep 17 00:00:00 2001 From: sangelxiu1 <15781802@163.com> Date: Wed, 11 Jun 2025 14:38:39 +0800 Subject: [PATCH] =?UTF-8?q?##=20Opt=20-=20=E9=80=89=E6=8B=A9=E6=94=B6?= =?UTF-8?q?=E7=9B=8A=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/RetailMemberController.java | 62 ++++++++++++------- .../mapper/CuMemberRetailRangeMapper.java | 5 +- .../CuMemberRetailAchieveServiceImpl.java | 41 ++++++++---- .../achieve/CuMemberRetailRangeMapper.xml | 29 ++++++++- .../member/CuMemberRetailRegionMapper.xml | 5 +- .../member/ext/CuMemberRetailRegionExt.java | 4 ++ 6 files changed, 105 insertions(+), 41 deletions(-) diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java index 97316def..2cfd2a7c 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/controller/api/RetailMemberController.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.hzs.bonus.settle.IMemberSettleBonusApi; import com.hzs.common.core.annotation.RepeatSubmitSimple; @@ -33,6 +34,7 @@ import com.hzs.retail.member.vo.RecommendListVO; import com.hzs.retail.member.vo.RetailMemberInfoVO; import com.hzs.retail.member.vo.RetailMemberRegionVO; import com.hzs.system.base.IAreaServiceApi; +import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -47,6 +49,7 @@ import java.util.List; */ @RestController @RequestMapping("/api/retail-member") +@Slf4j public class RetailMemberController extends BaseController { @Autowired @@ -63,6 +66,8 @@ public class RetailMemberController extends BaseController { @DubboReference IMemberSettleBonusApi iMemberSettleBonusApi; + // 2025年6月11日 判断可选择收益区域的伞下+自身业绩阈值 (30万) + private static final BigDecimal REGIONAL_PERFORMANCE_THRESHOLD = new BigDecimal("300000"); /** * 获取登录会员信息 * @@ -86,9 +91,12 @@ public class RetailMemberController extends BaseController { public AjaxResult getRegion() { Long userId = SecurityUtils.getUserId(); Integer systemType = SecurityUtils.getSystemType(); + Integer pkCountry = SecurityUtils.getPkCountry(); CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); + log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt)); if (null != cuMemberRetailRegionExt) { + // 已自选区域或者已后台指定 if (null != cuMemberRetailRegionExt.getPkId()) { // 达到条件,也选择区域,需要进行显示 return AjaxResult.success(RetailMemberRegionVO.builder() @@ -101,14 +109,28 @@ public class RetailMemberController extends BaseController { .countyVal(cuMemberRetailRegionExt.getCountyVal()) .build()); } + // 未自选或未后台指定 验证是否激活 未激活不允许选 + // getIsRegion - 后台业务特殊标记,非后台办理过的为1, 后台办理过的为0,当为0时, 不设定任何条件,直接可选收益区域 if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { // 2024.12.30 添加需求,指定会员可以进行区域选择 return AjaxResult.success(RetailMemberRegionVO.builder() .regionStatus(EYesNo.YES.getIntValue()) .build()); } - if (null == cuMemberRetailRegionExt.getPkId()) { - // 达到条件,但是没有选择区域,需要弹窗选择区域 + if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ + CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); + log.info("retailAchieve : {}", JSONUtil.toJsonStr(retailAchieve)); + if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ + return AjaxResult.success(RetailMemberRegionVO.builder() + .regionStatus(EYesNo.YES.getIntValue()) + .build()); + } + } + // 达到条件,但是没有选择区域,需要弹窗选择区域 + // 验证伞下业绩+自己是否累计30W + + /* + 2025年6月11日 取消其他验证 // 2025.01.11 调整需求,当前会员必须有效(至少下过一单) if (iCuMemberRetailRegionService.getOrderCount(userId, systemType, BoxProductUtil.getBoxProductListBySystemType(systemType)) == 0) { return AjaxResult.success(RetailMemberRegionVO.builder() @@ -125,18 +147,7 @@ public class RetailMemberController extends BaseController { .build()); } } - } else { - // 达到条件,也选择区域,需要进行显示并且可以修改 - return AjaxResult.success(RetailMemberRegionVO.builder() - .regionStatus(EYesNo.YES.getIntValue()) - .province(cuMemberRetailRegionExt.getProvince()) - .provinceVal(cuMemberRetailRegionExt.getProvinceVal()) - .city(cuMemberRetailRegionExt.getCity()) - .cityVal(cuMemberRetailRegionExt.getCityVal()) - .county(cuMemberRetailRegionExt.getCounty()) - .countyVal(cuMemberRetailRegionExt.getCountyVal()) - .build()); - } + */ } // 没达到条件,不需要显示区域 return AjaxResult.success(RetailMemberRegionVO.builder() @@ -157,21 +168,24 @@ public class RetailMemberController extends BaseController { Integer systemType = SecurityUtils.getSystemType(); Integer pkCountry = SecurityUtils.getPkCountry(); - CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); - if (null == cuMemberRetailRegionExt) { - return AjaxResult.error("还未达到选择收益区域条件"); - } else { - if (EYesNo.NO.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { - // 2024.12.30 添加需求,会员可以指定可以进行区域选择,未指定权限才需要进行判断 + boolean canSet = false; - // 达到条件,但是没有选择区域,需要弹窗选择区域 + CuMemberRetailRegionExt cuMemberRetailRegionExt = iCuMemberRetailRegionService.getRegionByMember(userId, EGrade.S_VIP.getValue(), systemType); + log.info("cuMemberRetailRegionExt -> {}", JSONUtil.toJsonStr(cuMemberRetailRegionExt)); + if (null != cuMemberRetailRegionExt) { + if (EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { + canSet = true; + } + if(EYesNo.YES.getIntValue() == cuMemberRetailRegionExt.getIsActivate()){ CuMemberRetailAchieveVO retailAchieve = iCuMemberRetailAchieveService.selectMemberSumAchieve(userId, pkCountry, systemType); - // TODO 2025.06.09 新需求,选择区域判断等级达到合伙人,血缘累计业绩达到30万,可以选择 - if (retailAchieve.getSmallAreaPv().add(retailAchieve.getBigArealPv()).compareTo(SysConstants.TOTAL_AREA_PV) < 0) { - return AjaxResult.error("还未达到选择收益区域条件"); + if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ + canSet = true; } } } + if(!canSet){ + return AjaxResult.error("还未达到选择收益区域条件"); + } if (param.getCounty().equals(0) || param.getCity().equals(0)) { // 区为0 或 市为0,没有选择区或者没有选择市 diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/mapper/CuMemberRetailRangeMapper.java b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/mapper/CuMemberRetailRangeMapper.java index af513ddc..9d3c99e7 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/mapper/CuMemberRetailRangeMapper.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/retail/member/mapper/CuMemberRetailRangeMapper.java @@ -159,8 +159,8 @@ public interface CuMemberRetailRangeMapper extends BaseMapper */ @@ -199,4 +199,5 @@ public interface CuMemberRetailRangeMapper extends BaseMapper selectMemberSmallBoxList(CuMemberRetailAchieveVO param); + List selectSubMemberIdByRootMember(@Param("pkMember") Long pkMember, @Param("systemType") Integer systemType); } 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 1addb75e..bff4597e 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 @@ -258,7 +258,13 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl !achieveVO.getPkMember().equals(maxAchieveVO.getPkMember())).map(vo -> null == vo.getArealPv() ? BigDecimal.ZERO : vo.getArealPv()).reduce(BigDecimal.ZERO, BigDecimal::add); - return CuMemberRetailAchieveVO.builder().smallAreaPv(getBigDecimal(smallAreaPv, rate)).pkBigMember(maxAchieveVO.getPkMember()).bigArealPv(getBigDecimal(maxAchieveVO.getArealPv(), rate)).build(); +// return CuMemberRetailAchieveVO.builder().smallAreaPv(getBigDecimal(smallAreaPv, rate)).pkBigMember(maxAchieveVO.getPkMember()).bigArealPv(getBigDecimal(maxAchieveVO.getArealPv(), rate)).build(); + return CuMemberRetailAchieveVO.builder() + .smallAreaPv(smallAreaPv) + .pkBigMember(maxAchieveVO.getPkMember()) + .bigArealPv(maxAchieveVO.getArealPv()) + .arealPv(maxAchieveVO.getArealPv()) + .build(); } @@ -295,6 +301,11 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); +// List pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); + // 2025年6月11日 取伞下 + 自己的ID + List pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType); //根据国家查汇率 BigDecimal rate = iCuMemberBaseService.getCurrency(pkCountry).getInExchangeRate(); //查询自己业绩 List memberSelfAchieveList = new ArrayList<>(); //会员业绩 - CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRetailTable).pkMember(pkMember).systemType(systemType).build(); - CuMemberRetailAchieveVO orderAchieveVO = baseMapper.selectMemberOrderSumAchieveByPkMember(memberAchieveVO); - if (null != orderAchieveVO && orderAchieveVO.getArealPv().compareTo(BigDecimal.ZERO) > 0) { - orderAchieveVO.setPkMember(pkMember); - memberSelfAchieveList.add(orderAchieveVO); - } +// CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRetailTable).pkMember(pkMember).systemType(systemType).build(); +// CuMemberRetailAchieveVO orderAchieveVO = baseMapper.selectMemberOrderSumAchieveByPkMember(memberAchieveVO); +// if (null != orderAchieveVO && orderAchieveVO.getArealPv().compareTo(BigDecimal.ZERO) > 0) { +// orderAchieveVO.setPkMember(pkMember); +// memberSelfAchieveList.add(orderAchieveVO); +// } //查询伞下业绩 if (CollUtil.isNotEmpty(pkMemberList)) { - List memberPushAchieveList = getMemberPushSumAchieve(pkMemberList, memberRetailTable, systemType); + List memberPushAchieveList = getMemberPushSumAchieve(pkMemberList, memberRetailTable, memberSecondTable, systemType); if (CollUtil.isNotEmpty(memberPushAchieveList)) { memberSelfAchieveList.addAll(memberPushAchieveList); } @@ -399,7 +413,7 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl getMemberPushSumAchieve(List pkMemberList, String memberRangeTable, Integer systemType) { - CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRangeTable).pkMemberList(pkMemberList).systemType(systemType).build(); + private List getMemberPushSumAchieve(List pkMemberList, String memberRangeTable,String memberSecondTable, Integer systemType) { + CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder() + .memberRetailTable(memberRangeTable) + .memberRetailSTable(memberSecondTable) + .pkMemberList(pkMemberList).systemType(systemType).build(); return baseMapper.selectMemberSumAchieve(memberAchieveVO); } 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 7937cd6d..4c1d2cea 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 @@ -461,7 +461,7 @@ - + SELECT SUM(t1.arealPv) arealPv ,#{pkMember} pkMember FROM ( @@ -492,6 +492,23 @@ AND t0.category = 0)) t1 + + + SELECT SUM(t1.arealPv) arealPv ,#{pkMember} pkMember + FROM ( + SELECT NVL(mr.CONSUME_PV + mr.TEAM_CONSUME_PV,0) arealPv + FROM ${memberRetailTable} mr + WHERE mr.category = 0 + AND mr.pk_member = #{pkMember} + UNION ALL + SELECT + NVL( mrs.NEW_CONSUME_PV + mrs.TEAM_NEW_PV, 0 ) arealPv + FROM + ${memberRetailSTable} mrs + WHERE mrs.pk_member = #{pkMember} + ) t1 + + + + + diff --git a/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailRegionMapper.xml b/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailRegionMapper.xml index f7dece3e..4dd286d4 100644 --- a/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailRegionMapper.xml +++ b/bd-business/bd-business-member/src/main/resources/mapper/retail/member/CuMemberRetailRegionMapper.xml @@ -9,7 +9,8 @@ cmrr.*, bap.name province_val, bac.name city_val, - bax.name county_val + bax.name county_val, + cm.IS_ACTIVATE from cu_member cm left join cu_member_retail_region cmrr on cmrr.pk_member = cm.pk_id @@ -30,7 +31,7 @@ and bax.del_flag = 0 where cm.del_flag = 0 and cm.pk_id = #{pkMember} - and cm.IS_ACTIVATE=0 +-- and cm.IS_ACTIVATE=0 and bg.grade_value >= #{gradeValue} diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/retail/member/ext/CuMemberRetailRegionExt.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/retail/member/ext/CuMemberRetailRegionExt.java index f643cd81..d6471e44 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/retail/member/ext/CuMemberRetailRegionExt.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/retail/member/ext/CuMemberRetailRegionExt.java @@ -98,4 +98,8 @@ public class CuMemberRetailRegionExt extends CuMemberRetailRegion { */ private Integer pkCountry; + /** + * 2025年6月11日 是否激活 (0-是, 1-否) + */ + private Integer isActivate; }