## 兼容三阶段部分点位为空以及收益处理订单为空;

This commit is contained in:
cabbage 2025-09-25 09:43:56 +08:00
parent 637aca701d
commit f50645d5ab
3 changed files with 89 additions and 79 deletions

View File

@ -40,7 +40,7 @@ public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage>
/**
* 填充指定点位
*/
boolean fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage,
List<BonusStageData> bonusStageDataList);

View File

@ -18,6 +18,7 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -29,6 +30,7 @@ import java.util.*;
/**
* 会员奖金-阶段收益明细表 服务实现类
*/
@Slf4j
@Service
public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService {
@ -71,7 +73,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
public CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusStage cuMemberBonusStage = CuMemberBonusStage.builder()
.pkBonus(cuMemberBonus.getPkId())
.pkOrder(saOrderExt.getPkId())
.pkOrder(null != saOrderExt ? saOrderExt.getPkId() : 0)
.pkBonusItems(pkBonusItems)
.incomeStatus(cuMemberRetailRange.getIncomeStatus())
.calType(ECalType.VALUE.getValue())
@ -117,8 +119,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
for (String suffix : BonusConstants.FIELD_LIST) {
Field pointMemberField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix);
Field pointField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_FIELD_NAME + suffix);
if (ReflectUtil.getFieldValue(targetRetailDetail, pointMemberField).equals(newParentRetailDetail.getPkMember())
&& ReflectUtil.getFieldValue(targetRetailDetail, pointField).equals(newParentRetailDetail.getChildNode())) {
if (newParentRetailDetail.getPkMember().equals(ReflectUtil.getFieldValue(targetRetailDetail, pointMemberField))
&& newParentRetailDetail.getChildNode().equals(ReflectUtil.getFieldValue(targetRetailDetail, pointField))) {
// 中间点位在目标点位的位置根据位置获取新点位填充的位置
switch (suffix) {
case BonusConstants.POINT_11:
@ -257,13 +259,15 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
* 填充点位
*/
@Override
public boolean fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
public void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage,
List<BonusStageData> bonusStageDataList) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + point, sourceRetailDetail.getPkMember());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + point, sourceRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.UPDATE_FLAG, 0);
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()
|| EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
switch (point) {
case BonusConstants.POINT_31:
case BonusConstants.POINT_32:
@ -307,7 +311,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
.updateBool(0)
.build());
bonusStageDataList.add(bonusStageData);
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
} else {
// 二阶段全满发放阶段奖
// 返回奖金收益处理数据
BonusStageData bonusStageData = BonusStageData.builder()
@ -329,16 +333,21 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
.updateBool(0)
.build());
bonusStageDataList.add(bonusStageData);
} else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
// TODO 三阶段发放特殊处理
// TODO 三阶段填充满判断是否需要赠送点位
}
return true;
return;
}
break;
}
return false;
} else {
// TODO 三阶段发放特殊处理
// TODO 三阶段填充满判断是否需要赠送点位
switch (point) {
case BonusConstants.POINT_11:
case BonusConstants.POINT_12:
break;
}
}
}
@Override

View File

@ -11,6 +11,7 @@
#{items}
</foreach>
and cmrd.stage = #{stage}
and cmrd.stage_status = 1
order by cmrd.pk_member, cmrd.child_node
</select>