## 优化秒结查询数据处理;

This commit is contained in:
cabbage 2025-07-22 15:01:10 +08:00
parent 362cffbe57
commit e35741abb7
5 changed files with 54 additions and 19 deletions

View File

@ -61,4 +61,12 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
*/
Integer updateCuMemberLevelByPeriod(Integer period);
/**
* 查询推荐伞上
*
* @param pkMember
* @return
*/
List<CuMemberExt> listParentMember(@Param("pkMember") Long pkMember);
}

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.common.domain.member.ext.CuMemberExt;
import java.util.List;
@ -58,4 +59,12 @@ public interface ICuMemberService extends IService<CuMember> {
*/
void updateCuMemberLevelByPeriod(Integer period);
/**
* 查询推荐伞上
*
* @param pkMember
* @return
*/
List<CuMemberExt> listParentMember(Long pkMember);
}

View File

@ -6,6 +6,7 @@ import com.hzs.common.domain.member.base.*;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.bonus.base.mapper.CuMemberMapper;
import com.hzs.common.domain.member.ext.CuMemberExt;
import org.springframework.stereotype.Service;
import java.util.*;
@ -54,4 +55,9 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
baseMapper.updateCuMemberLevelByPeriod(period);
}
@Override
public List<CuMemberExt> listParentMember(Long pkMember) {
return baseMapper.listParentMember(pkMember);
}
}

View File

@ -36,9 +36,9 @@ import com.hzs.common.domain.member.base.CuAwardsControl;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.bonus.*;
import com.hzs.common.domain.member.detail.CuMemberAchieveLog;
import com.hzs.common.domain.member.detail.CuMemberAssess;
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
import com.hzs.common.domain.member.ext.CuBonusExpandExt;
import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetDetailExt;
import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetExt;
@ -54,7 +54,6 @@ import com.hzs.system.config.IBonusItemsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.IRangeServiceApi;
import com.hzs.system.config.dto.BonusConfigDTO;
import com.hzs.system.config.dto.GradeDTO;
import com.hzs.system.config.dto.RangeDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@ -65,6 +64,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.stream.Collectors;
/**
* 奖金结算服务类
@ -154,9 +154,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
SaOrderExt saOrderExt = iSaOrderServiceApi.querySaOrderByDay(startDate, DateUtils.afterDate(1, ChronoUnit.DAYS, startDate), orderCode).getData();
log.info("查询订单,订单参数:{}", JSONUtil.toJsonStr(saOrderExt));
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
// 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
@ -173,11 +170,13 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 前天日结表
String yesSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + beforeYesPeriod;
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(saOrderExt.getPkCountry()).getData();
// Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
// Map<String, RangeDTO> rangeDtoMap = iRangeServiceApi.queryRangeDto().getData();
// Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
// BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
// Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
// List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(saOrderExt.getPkCountry()).getData();
// 计算奖金
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType() ||
@ -383,14 +382,19 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 先处理关系
memberList.add(saOrderExt.getPkMember());
long pkParent = saOrderExt.getPkReference();
while (true) {
CuMember cuMember = iCuMemberService.getMember(pkParent);
if (cuMember == null) {
break;
}
memberList.add(cuMember.getPkId());
pkParent = cuMember.getPkParent();
// 查询伞上所有推荐人ID
List<CuMemberExt> parentList = iCuMemberService.listParentMember(pkParent);
if (CollectionUtil.isNotEmpty(parentList)) {
memberList.addAll(parentList.stream().map(CuMemberExt::getPkId).collect(Collectors.toList()));
}
// while (true) {
// CuMember cuMember = iCuMemberService.getMember(pkParent);
// if (cuMember == null) {
// break;
// }
// memberList.add(cuMember.getPkId());
// pkParent = cuMember.getPkParent();
// }
// 初始化需要秒接结算的数据
iCuMemberTreeService.updateCuMemberSecondPlaceParent(secondTableName, settleTableName, yesSettleTableName, saOrderExt.getPkMember(), memberList, EYesNo.YES.getIntValue());
}
@ -448,7 +452,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 判断特殊业务是否有到期日期有到期的需要使用真实业绩昨天的期间真实更新当前的
iCuMemberAchieveService.updateCuMemberSettleAchieveByDueDate(currentSettleTableName, yesterdayTableName, DateUtils.parseStringToDate(settleDate));
// TODO 2025.05.14 新拓展处理在2025.06.01之前还是走原来的11对碰之后走12对碰
// 2025.05.14 新拓展处理在2025.06.01之前还是走原来的11对碰之后走12对碰
// true 走新逻辑首购+复购 合并计算
boolean newExpandFlag = settleDate.compareTo(newExpandDate) >= 0;
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
@ -696,7 +700,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
List<BdAwards> awardsList = iAwardsServiceApi.queryAwards(CountryConstants.CHINA_COUNTRY).getData();
// TODO 2025.05.14 新拓展处理在2025.06.01之前还是走原来的11对碰之后走12对碰
// 2025.05.14 新拓展处理在2025.06.01之前还是走原来的11对碰之后走12对碰
// true 走新逻辑首购+复购 合并计算
boolean newExpandFlag = settleDate.compareTo(newExpandDate) >= 0;
@ -876,7 +880,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
newExpandFlag);
}
if (newExpandFlag) {
// TODO 2025.05.14 新拓展订单处理
// 2025.05.14 新拓展订单处理
if (CollectionUtil.isNotEmpty(expandOrderList)) {
calculateNewExpandOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO,
expandOrderList, period, cuMemberBonusMap, bonusRecordDetailVO, awardsList, cuAwardsControlMap, cuBonusExpandExtMap);

View File

@ -223,4 +223,12 @@
a.modified_time = sysdate
</update>
<!-- 查询推荐伞上 -->
<select id="listParentMember" resultType="com.hzs.common.domain.member.ext.CuMemberExt">
select cm.pk_id
from cu_member cm
start with cm.pk_id = #{pkMember}
connect by cm.pk_id = prior cm.pk_parent
</select>
</mapper>