3
0
Fork 0

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

This commit is contained in:
cabbage 2025-08-26 11:40:35 +08:00
parent d7d0c687ef
commit c7330c8bfa
10 changed files with 131 additions and 96 deletions

View File

@ -28,6 +28,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
* 根据会员查询会员上的所有网体 * 根据会员查询会员上的所有网体
*/ */
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList); List<CuMemberRetailRangeExt> queryCuMemberRetailRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList);
CuMemberRetailRangeExt queryCuMemberRetailRangeByMemberId(@Param("tableName") String tableName, @Param("memberId") Long memberId); CuMemberRetailRangeExt queryCuMemberRetailRangeByMemberId(@Param("tableName") String tableName, @Param("memberId") Long memberId);
/** /**
@ -35,4 +36,13 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
*/ */
void mergeCuMemberRetailRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList); void mergeCuMemberRetailRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);
/**
* 更新会员激活状态
*
* @param rangeTableName
* @param pkMemberList
* @return
*/
int updateMemberEnable(@Param("rangeTableName") String rangeTableName, @Param("pkMemberList") List<Long> pkMemberList);
} }

View File

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

View File

@ -61,4 +61,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

@ -1,5 +1,6 @@
package com.hzs.bonus.bonus.service.impl; package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper; import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
@ -90,14 +91,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 更新网体 // 更新网体
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth); iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(settleEndDate, rangeTableName, yesterdayRangeTableName, isSameMonth);
// 更新会员手动升级
iCuMemberGradeService.updateCuMemberManualGrade(rangeTableName, period);
// 当期的手动激活的记录列表 // 当期的手动激活的记录列表
Map<Long, Date> activateMap = this.getActivateMap(settleStartDate); List<CuMemberServiceLog> activateList = this.getActivateList(settleStartDate);
if (retailOrderList.size() > 0) { if (retailOrderList.size() > 0) {
// 会员购买升级记录 // 会员购买升级记录
Map<Long, CuMemberLevel> memberLevelMap = new HashMap<>(); Map<Long, CuMemberLevel> memberLevelMap = new HashMap<>();
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName); List<CuMemberLevel> memberLevelList = iCuMemberGradeService.queryCuMemberLevel(settleStartDate, settleEndDate);
memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel)); memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel));
// 会员的自动升级记录 // 会员的自动升级记录
@ -105,6 +108,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate); List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate);
autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel)); autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel));
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()
)
));
}
// 会员结算mapkey会员IDvalue结算扩展 // 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 按照血缘查询该会员所有伞上会员 // 按照血缘查询该会员所有伞上会员
@ -119,8 +134,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 等级mapkey:等级IDvalue:等级对象 // 等级mapkey:等级IDvalue:等级对象
Map<Integer, BdGrade> gradeIdMap = new HashMap<>(); Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
// 等级列表 // 等级列表
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList(); List<BdGrade> retailGradeList = bonusConfigDTO.getRetaiGradeList();
for (BdGrade bdGrade : retaiGradeList) { for (BdGrade bdGrade : retailGradeList) {
gradeIdMap.put(bdGrade.getPkId(), bdGrade); gradeIdMap.put(bdGrade.getPkId(), bdGrade);
} }
// 配送收益配置 // 配送收益配置
@ -133,10 +148,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 上面更新网体按会员表是否激活进行处理 // 上面更新网体按会员表是否激活进行处理
for (SaOrderExt saOrderExt : retailOrderList) { for (SaOrderExt saOrderExt : retailOrderList) {
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) { || EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
// 注册升级才能算激活状态 // 注册升级才能算激活状态
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue()); sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue());
} }
} }
@ -147,7 +162,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 订单指定产品盒数计算等级使用 // 订单指定产品盒数计算等级使用
BigDecimal boxNum = saOrderExt.getBoxNum(); BigDecimal boxNum = saOrderExt.getBoxNum();
// 个人累计消费pv // 个人累计消费pv
BigDecimal orderAchieve = saOrderExt.getOrderAchieve(); BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
// 复购重消盒数业绩算个人累计数据盒数业绩 // 复购重消盒数业绩算个人累计数据盒数业绩
@ -212,6 +226,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
} }
} }
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) { if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) {
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
@ -228,6 +243,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);
}
} }
} }
@ -713,21 +734,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
/** /**
* 获取手动激活map * 获取手动激活List
* *
* @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,12 +14,12 @@ import java.util.List;
public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> { public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> {
/** /**
* 回退会员等 * 更新会员手动升
*/ */
void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period); void updateCuMemberManualGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
/** /**
* 查询会员等级 * 查询会员升级记录
*/ */
List<CuMemberLevel> queryCuMemberLevel(@Param("startDate") Date startDate, List<CuMemberLevel> queryCuMemberLevel(@Param("startDate") Date startDate,
@Param("endDate") Date endDate, @Param("endDate") Date endDate,

View File

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

View File

@ -18,9 +18,13 @@ import java.util.List;
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.updateCuMemberGrade(rangeTableName, period); baseMapper.updateCuMemberManualGrade(rangeTableName, period);
}
@Override
public List<CuMemberLevel> queryCuMemberLevel(Date startDate, Date endDate) {
// 购买升级记录列表 // 购买升级记录列表
return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue()); return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue());
} }

View File

@ -203,10 +203,10 @@
where ba.del_flag = 0 where ba.del_flag = 0
</foreach> </foreach>
</select> </select>
<select id="queryCuMemberRetailRangeByMemberId" <select id="queryCuMemberRetailRangeByMemberId"
resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt"> resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt">
SELECT SELECT a.pk_member,
a.pk_member,
a.member_code, a.member_code,
a.member_name, a.member_name,
a.pk_parent, a.pk_parent,
@ -246,14 +246,22 @@
a.big_team_pv, a.big_team_pv,
a.small_team_pv, a.small_team_pv,
br.name country_name br.name country_name
FROM FROM ${tableName} a
${tableName} a
INNER JOIN bd_grade ba ON a.pk_grade = ba.pk_id INNER JOIN bd_grade ba ON a.pk_grade = ba.pk_id
LEFT JOIN bd_area br ON br.pk_id = a.region_address LEFT JOIN bd_area br ON br.pk_id = a.region_address
AND br.del_flag = 0 AND br.del_flag = 0
WHERE WHERE ba.del_flag = 0
ba.del_flag = 0
and a.pk_member = #{memberId} and a.pk_member = #{memberId}
</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>

View File

@ -2,24 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.bonus.detail.mapper.CuMemberGradeMapper"> <mapper namespace="com.hzs.bonus.detail.mapper.CuMemberGradeMapper">
<!-- 通用查询映射结果 --> <!-- 更新会员手动升级 -->
<resultMap id="CuMemberGrade" type="com.hzs.common.domain.member.detail.CuMemberGrade"> <update id="updateCuMemberManualGrade">
<id column="PK_ID" property="pkId"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="PK_MEMBER" property="pkMember"/>
<result column="PERIOD" property="period"/>
<result column="UP_TYPE" property="upType"/>
<result column="OLD_LEVEL" property="oldLevel"/>
<result column="NEW_LEVEL" property="newLevel"/>
<result column="REMARK" property="remark"/>
</resultMap>
<update id="updateCuMemberGrade">
merge into ${rangeTableName} a merge into ${rangeTableName} a
using ( using (
select a.pk_member, max(a.new_level) pk_grade select a.pk_member, max(a.new_level) pk_grade
@ -40,6 +24,7 @@
a.pk_grade = b.pk_grade a.pk_grade = b.pk_grade
</update> </update>
<!-- 查询会员升级记录 -->
<select id="queryCuMemberLevel" resultType="com.hzs.common.domain.member.detail.CuMemberLevel"> <select id="queryCuMemberLevel" resultType="com.hzs.common.domain.member.detail.CuMemberLevel">
select * select *
from cu_member_level from cu_member_level

View File

@ -1,9 +1,7 @@
package com.hzs.member.detail.provider; package com.hzs.member.detail.provider;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.domain.member.detail.CuMemberServiceLog; import com.hzs.common.domain.member.detail.CuMemberServiceLog;
import com.hzs.common.domain.member.detail.CuMemberServiceLogExt;
import com.hzs.member.detail.ICuMemberServiceLogServiceApi; import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
import com.hzs.member.detail.service.ICuMemberServiceLogService; import com.hzs.member.detail.service.ICuMemberServiceLogService;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;