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

This commit is contained in:
cabbage 2025-08-26 11:51:43 +08:00
parent 59a7bfc742
commit f40781d460
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, void mergeCuMemberRetailBackBoxBySpecial(@Param("rangeTableName") String rangeTableName,
@Param("beforeTableName") String beforeTableName, @Param("beforeTableName") String beforeTableName,
@Param("period") Integer period); @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 * @param cuMemberTreeMap
*/ */
void updateCuMemberSecondRange(String secondTableName, Map<Long, CuMemberRetailRangeExt> 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)); cuMemberTreeMap.forEach((key, value) -> cuMemberTreeList.add(value));
return cuMemberBonusSettle.handleCutList(cuMemberTreeList); 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(); Map<Long, List<Integer>> vertexBonusMap = iBdVertexBonusService.queryVertexBonus();
@ -469,6 +480,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName); iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
// 更新网体 // 更新网体
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth); iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth);
// 更新会员手动升级
iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period);
// 回退历史注水 // 回退历史注水
iCuMemberRetailRangeService.mergeCuMemberRetailBackBoxBySpecial(rangeTableName, yesterdayRangeTableName, period); iCuMemberRetailRangeService.mergeCuMemberRetailBackBoxBySpecial(rangeTableName, yesterdayRangeTableName, period);
@ -476,7 +489,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
iCuMemberRetailRangeService.mergeCuMemberRetailRangeBySpecial(rangeTableName, period); iCuMemberRetailRangeService.mergeCuMemberRetailRangeBySpecial(rangeTableName, period);
// 当期的手动激活的记录列表 // 当期的手动激活的记录列表
Map<Long, Date> activateMap = this.getActivateMap(settleStartDate); List<CuMemberServiceLog> activateList = this.getActivateList(settleStartDate);
if (retailOrderList.size() > 0) { if (retailOrderList.size() > 0) {
// 复购订单级差数据map(key:订单IDvalue:订单明细+级差) // 复购订单级差数据map(key:订单IDvalue:订单明细+级差)
@ -489,6 +502,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName); List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName);
memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); 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); List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
@ -653,6 +678,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
// 更新网体 // 更新网体
iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); 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 * @param settleStartDate
* @return * @return
*/ */
private Map<Long, Date> getActivateMap(Date settleStartDate) { private List<CuMemberServiceLog> getActivateList(Date settleStartDate) {
// 当期的手动激活的记录列表 // 当期的手动激活的记录列表
List<CuMemberServiceLog> activateList = iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData(); return iCuMemberServiceLogServiceApi.listActivateLog(settleStartDate).getData();
return activateList.stream()
.collect(Collectors.groupingBy(
CuMemberServiceLog::getPkMember,
Collectors.collectingAndThen(
Collectors.minBy(Comparator.comparing(CuMemberServiceLog::getCreationTime)),
optional -> optional.get().getCreationTime()
)
));
} }
/** /**

View File

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

View File

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

View File

@ -816,4 +816,14 @@
where pk_parent = #{pkParent} where pk_parent = #{pkParent}
</select> </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> </mapper>