Compare commits
	
		
			No commits in common. "eb34a8eea9892d23c8e1c369f3800ace798e0c31" and "190c8b3c9d69125f957cb85d12281ab481fc22ad" have entirely different histories.
		
	
	
		
			eb34a8eea9
			...
			190c8b3c9d
		
	
		|  | @ -5,7 +5,6 @@ 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; | ||||
|  | @ -34,7 +33,6 @@ 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.*; | ||||
|  | @ -49,7 +47,6 @@ import java.util.List; | |||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/api/retail-member") | ||||
| @Slf4j | ||||
| public class RetailMemberController extends BaseController { | ||||
| 
 | ||||
|     @Autowired | ||||
|  | @ -66,8 +63,6 @@ public class RetailMemberController extends BaseController { | |||
|     @DubboReference | ||||
|     IMemberSettleBonusApi iMemberSettleBonusApi; | ||||
| 
 | ||||
|     // 2025年6月11日 判断可选择收益区域的伞下+自身业绩阈值 (30万) | ||||
|     private static final BigDecimal REGIONAL_PERFORMANCE_THRESHOLD = new BigDecimal("300000"); | ||||
|     /** | ||||
|      * 获取登录会员信息 | ||||
|      * | ||||
|  | @ -91,12 +86,9 @@ 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() | ||||
|  | @ -109,28 +101,14 @@ 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(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()); | ||||
|                 } | ||||
|             } | ||||
|             if (null == cuMemberRetailRegionExt.getPkId()) { | ||||
|                 // 达到条件,但是没有选择区域,需要弹窗选择区域 | ||||
|             // 验证伞下业绩+自己是否累计30W | ||||
| 
 | ||||
|             /* | ||||
|                 2025年6月11日 取消其他验证 | ||||
|                 // 2025.01.11 调整需求,当前会员必须有效(至少下过一单) | ||||
|                 if (iCuMemberRetailRegionService.getOrderCount(userId, systemType, BoxProductUtil.getBoxProductListBySystemType(systemType)) == 0) { | ||||
|                     return AjaxResult.success(RetailMemberRegionVO.builder() | ||||
|  | @ -147,7 +125,18 @@ 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() | ||||
|  | @ -168,23 +157,20 @@ public class RetailMemberController extends BaseController { | |||
|         Integer systemType = SecurityUtils.getSystemType(); | ||||
|         Integer pkCountry = SecurityUtils.getPkCountry(); | ||||
| 
 | ||||
|         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); | ||||
|                 if(retailAchieve.getArealPv().compareTo(REGIONAL_PERFORMANCE_THRESHOLD) >= 0){ | ||||
|                     canSet = true; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         if(!canSet){ | ||||
|         if (null == cuMemberRetailRegionExt) { | ||||
|             return AjaxResult.error("还未达到选择收益区域条件"); | ||||
|         } else { | ||||
|             if (EYesNo.NO.getIntValue() == cuMemberRetailRegionExt.getIsRegion()) { | ||||
|                 // 2024.12.30 添加需求,会员可以指定可以进行区域选择,未指定权限才需要进行判断 | ||||
| 
 | ||||
|                 // 达到条件,但是没有选择区域,需要弹窗选择区域 | ||||
|                 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 (param.getCounty().equals(0) || param.getCity().equals(0)) { | ||||
|  |  | |||
|  | @ -159,8 +159,8 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang | |||
|     CuMemberRetailAchieveVO selectMemberOrderSumAchieveByPkMember(CuMemberRetailAchieveVO cuMemberAchieveVO); | ||||
| 
 | ||||
|     /** | ||||
|      * 查询会员直推业绩(日结+秒结) | ||||
|      *  orderType in (41,42,43,44) | ||||
|      * 查询会员直推业绩(累计) | ||||
|      * | ||||
|      * @param cuMemberAchieveVO 入参 | ||||
|      * @return List<CuMemberRetailAchieveVO> | ||||
|      */ | ||||
|  | @ -199,5 +199,4 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang | |||
|      */ | ||||
|     List<CuMemberRetailAchieveVO> selectMemberSmallBoxList(CuMemberRetailAchieveVO param); | ||||
| 
 | ||||
|     List<Long> selectSubMemberIdByRootMember(@Param("pkMember") Long pkMember, @Param("systemType") Integer systemType); | ||||
| } | ||||
|  |  | |||
|  | @ -258,13 +258,7 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         CuMemberRetailAchieveVO maxAchieveVO = memberAchieveList.stream().max(Comparator.comparing(CuMemberRetailAchieveVO::getArealPv)).get(); | ||||
|         //查询小区业绩 | ||||
|         BigDecimal smallAreaPv = memberAchieveList.stream().filter(achieveVO -> !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(smallAreaPv) | ||||
|                 .pkBigMember(maxAchieveVO.getPkMember()) | ||||
|                 .bigArealPv(maxAchieveVO.getArealPv()) | ||||
|                 .arealPv(maxAchieveVO.getArealPv()) | ||||
|                 .build(); | ||||
|         return CuMemberRetailAchieveVO.builder().smallAreaPv(getBigDecimal(smallAreaPv, rate)).pkBigMember(maxAchieveVO.getPkMember()).bigArealPv(getBigDecimal(maxAchieveVO.getArealPv(), rate)).build(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -301,11 +295,6 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|         int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId(); | ||||
|         return TableNameConstants.CU_MEMBER_RETAIL_RANGE + period; | ||||
|     } | ||||
|     private String getDayTableName() { | ||||
|         String localDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); | ||||
|         int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(localDate).getPkId(); | ||||
|         return TableNameConstants.CU_MEMBER_RETAIL_S + period; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|  | @ -386,26 +375,23 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|     public CuMemberRetailAchieveVO selectMemberSumAchieve(Long pkMember, Integer pkCountry, Integer systemType) { | ||||
|         //查询会员昨日业绩 | ||||
|         String memberRetailTable = getTableName(); | ||||
|         String memberSecondTable = getDayTableName(); | ||||
|         //查询直推会员 | ||||
| //        List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
|         // 2025年6月11日 取伞下 + 自己的ID | ||||
|         List<Long> pkMemberList = baseMapper.selectSubMemberIdByRootMember(pkMember, systemType); | ||||
|         List<Long> pkMemberList = baseMapper.selectDirectPushByPkMember(pkMember, systemType); | ||||
|         //根据国家查汇率 | ||||
|         BigDecimal rate = iCuMemberBaseService.getCurrency(pkCountry).getInExchangeRate(); | ||||
|         //查询自己业绩 | ||||
|         List<CuMemberRetailAchieveVO> 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<CuMemberRetailAchieveVO> memberPushAchieveList = getMemberPushSumAchieve(pkMemberList, memberRetailTable, memberSecondTable, systemType); | ||||
|             List<CuMemberRetailAchieveVO> memberPushAchieveList = getMemberPushSumAchieve(pkMemberList, memberRetailTable, systemType); | ||||
|             if (CollUtil.isNotEmpty(memberPushAchieveList)) { | ||||
|                 memberSelfAchieveList.addAll(memberPushAchieveList); | ||||
|             } | ||||
|  | @ -423,11 +409,8 @@ public class CuMemberRetailAchieveServiceImpl extends ServiceImpl<CuMemberRetail | |||
|      * @param pkMemberList 直推会员ID | ||||
|      * @return CuMemberAchieveVO | ||||
|      */ | ||||
|     private List<CuMemberRetailAchieveVO> getMemberPushSumAchieve(List<Long> pkMemberList, String memberRangeTable,String memberSecondTable, Integer systemType) { | ||||
|         CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder() | ||||
|                 .memberRetailTable(memberRangeTable) | ||||
|                 .memberRetailSTable(memberSecondTable) | ||||
|                 .pkMemberList(pkMemberList).systemType(systemType).build(); | ||||
|     private List<CuMemberRetailAchieveVO> getMemberPushSumAchieve(List<Long> pkMemberList, String memberRangeTable, Integer systemType) { | ||||
|         CuMemberRetailAchieveVO memberAchieveVO = CuMemberRetailAchieveVO.builder().memberRetailTable(memberRangeTable).pkMemberList(pkMemberList).systemType(systemType).build(); | ||||
|         return baseMapper.selectMemberSumAchieve(memberAchieveVO); | ||||
|     } | ||||
| 
 | ||||
|  |  | |||
|  | @ -461,7 +461,7 @@ | |||
|     </select> | ||||
| 
 | ||||
| 
 | ||||
|     <sql id="selectSmallAreaSumAchieveBak"> | ||||
|     <sql id="selectSmallAreaSumAchieve"> | ||||
|         <foreach collection="pkMemberList" item="pkMember" separator="union all"> | ||||
|             SELECT SUM(t1.arealPv) arealPv ,#{pkMember} pkMember | ||||
|             FROM ( | ||||
|  | @ -492,23 +492,6 @@ | |||
|             AND t0.category = 0)) t1 | ||||
|         </foreach> | ||||
|     </sql> | ||||
|     <sql id="selectSmallAreaSumAchieve"> | ||||
|         <foreach collection="pkMemberList" item="pkMember" separator="union all"> | ||||
|             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 | ||||
|         </foreach> | ||||
|     </sql> | ||||
| 
 | ||||
| 
 | ||||
|     <select id="selectMemberSumAchieve" resultType="com.hzs.retail.member.vo.CuMemberRetailAchieveVO"> | ||||
|  | @ -826,14 +809,4 @@ | |||
|         ORDER BY t3.monthBox desc | ||||
|     </select> | ||||
|     <!--市场动态盒数 结束--> | ||||
| 
 | ||||
| 
 | ||||
|     <select id="selectSubMemberIdByRootMember" resultType="java.lang.Long"> | ||||
|         select cm.pk_id, cm.MEMBER_NAME | ||||
|         from cu_member cm | ||||
|         where cm.SYSTEM_TYPE = #{systemType} | ||||
|             start with cm.pk_id = #{pkMember} | ||||
|         connect by prior cm.pk_id = cm.pk_parent | ||||
|         order by level | ||||
|     </select> | ||||
| </mapper> | ||||
|  |  | |||
|  | @ -9,8 +9,7 @@ | |||
|                cmrr.*, | ||||
|                bap.name province_val, | ||||
|                bac.name city_val, | ||||
|                bax.name county_val, | ||||
|                cm.IS_ACTIVATE | ||||
|                bax.name county_val | ||||
|         from cu_member cm | ||||
|                  left join cu_member_retail_region cmrr | ||||
|                            on cmrr.pk_member = cm.pk_id | ||||
|  | @ -31,7 +30,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} | ||||
|     </select> | ||||
| 
 | ||||
|  |  | |||
|  | @ -98,8 +98,4 @@ public class CuMemberRetailRegionExt extends CuMemberRetailRegion { | |||
|      */ | ||||
|     private Integer pkCountry; | ||||
| 
 | ||||
|     /** | ||||
|      * 2025年6月11日 是否激活 (0-是, 1-否) | ||||
|      */ | ||||
|     private Integer isActivate; | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue