## 奖金结算时,如果当天没有订单修改结算等级、修改激活状态也会进行更新;

This commit is contained in:
cabbage 2025-08-26 11:51:43 +08:00
parent 4055fd49f8
commit fd8bfe3a4a
7 changed files with 84 additions and 15 deletions

View File

@ -132,4 +132,14 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
void mergeCuMemberRetailBackBoxBySpecial(@Param("rangeTableName") String rangeTableName,
@Param("beforeTableName") String beforeTableName,
@Param("period") Integer period);
/**
* 更新会员激活状态
*
* @param rangeTableName
* @param pkMemberList
* @return
*/
int updateMemberEnable(@Param("rangeTableName") String rangeTableName, @Param("pkMemberList") List<Long> pkMemberList);
}

View File

@ -114,4 +114,14 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
* @param cuMemberTreeMap
*/
void updateCuMemberSecondRange(String secondTableName, Map<Long, CuMemberRetailRangeExt> cuMemberTreeMap);
/**
* 更新会员激活状态
*
* @param rangeTableName
* @param pkMemberList
* @return
*/
int updateMemberEnable(String rangeTableName, List<Long> pkMemberList);
}

View File

@ -149,4 +149,10 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
cuMemberTreeMap.forEach((key, value) -> cuMemberTreeList.add(value));
return cuMemberBonusSettle.handleCutList(cuMemberTreeList);
}
@Override
public int updateMemberEnable(String rangeTableName, List<Long> pkMemberList) {
return baseMapper.updateMemberEnable(rangeTableName, pkMemberList);
}
}

View File

@ -111,7 +111,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
// 当期的手动激活的记录列表
Map<Long, Date> activateMap = this.getActivateMap(saOrderExt.getPayTime());
List<CuMemberServiceLog> activateList = this.getActivateList(saOrderExt.getPayTime());
Map<Long, Date> activateMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(activateList)) {
activateMap = activateList.stream()
.collect(Collectors.groupingBy(
CuMemberServiceLog::getPkMember,
Collectors.collectingAndThen(
Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)),
optional -> optional.get().getCreationTime()
)
));
}
// 查询体系奖项配置
Map<Long, List<Integer>> vertexBonusMap = iBdVertexBonusService.queryVertexBonus();
@ -469,6 +480,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
// 更新网体
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth);
// 更新会员手动升级
iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period);
// 回退历史注水
iCuMemberRetailRangeService.mergeCuMemberRetailBackBoxBySpecial(rangeTableName, yesterdayRangeTableName, period);
@ -476,7 +489,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
iCuMemberRetailRangeService.mergeCuMemberRetailRangeBySpecial(rangeTableName, period);
// 当期的手动激活的记录列表
Map<Long, Date> activateMap = this.getActivateMap(settleStartDate);
List<CuMemberServiceLog> activateList = this.getActivateList(settleStartDate);
if (retailOrderList.size() > 0) {
// 复购订单级差数据map(key:订单IDvalue:订单明细+级差)
@ -489,6 +502,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName);
memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel));
Map<Long, Date> activateMap = new HashMap<>();
if (CollectionUtil.isNotEmpty(activateList)) {
activateMap = activateList.stream()
.collect(Collectors.groupingBy(
CuMemberServiceLog::getPkMember,
Collectors.collectingAndThen(
Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)),
optional -> optional.get().getCreationTime()
)
));
}
// 按照血缘查询该会员所有伞上会员
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
@ -653,6 +678,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
}
// 更新网体
iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap);
} else {
// 当日没有订单也需要处理手动激活
if (CollectionUtil.isNotEmpty(activateList)) {
List<Long> pkMemberList = activateList.stream().map(CuMemberServiceLog::getPkMember).collect(Collectors.toList());
iCuMemberRetailRangeService.updateMemberEnable(rangeTableName, pkMemberList);
}
}
}
@ -2102,17 +2133,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
* @param settleStartDate
* @return
*/
private Map<Long, Date> getActivateMap(Date settleStartDate) {
private List<CuMemberServiceLog> getActivateList(Date settleStartDate) {
// 当期的手动激活的记录列表
List<CuMemberServiceLog> activateList = iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData();
return activateList.stream()
.collect(Collectors.groupingBy(
CuMemberServiceLog::getPkMember,
Collectors.collectingAndThen(
Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)),
optional -> optional.get().getCreationTime()
)
));
return iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData();
}
/**

View File

@ -14,7 +14,12 @@ import java.util.List;
public interface ICuMemberGradeService extends IService<CuMemberGrade> {
/**
* 回退极差奖衔每日重新结算先把奖衔回退到前一天
* 更新会员手动升级
*/
void updateCuMemberManualGrade(String rangeTableName, Integer period);
/**
* 回退等级每日重新结算先把等级回退到前一天
*
* @param period 结算期间
* @param rangeTableName 结算表

View File

@ -17,11 +17,16 @@ import java.util.List;
@Service
public class CuMemberGradeServiceImpl extends ServiceImpl<CuMemberGradeMapper, CuMemberGrade> implements ICuMemberGradeService {
@Override
public List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) {
// 更新奖衔回退等
public void updateCuMemberManualGrade(String rangeTableName, Integer period) {
// 回退等级更新手动升
baseMapper.deleteCuMemberGrade(period);
baseMapper.updateCuMemberGrade(rangeTableName, period);
}
@Override
public List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) {
return baseMapper.queryCuMemberLevel(startDate, endDate);
}

View File

@ -816,4 +816,14 @@
where pk_parent = #{pkParent}
</select>
<!-- 更新会员激活状态 -->
<update id="updateMemberEnable">
update ${rangeTableName} cmr
set cmr.enable_status = 0
where cmr.pk_member in
<foreach collection="pkMemberList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</update>
</mapper>