diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusStageService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusStageService.java index 3cc8468c..73ed092d 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusStageService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/ICuMemberBonusStageService.java @@ -40,7 +40,7 @@ public interface ICuMemberBonusStageService extends IService /** * 填充指定点位 */ - boolean fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point, + void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point, CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage, List bonusStageDataList); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusStageServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusStageServiceImpl.java index ca20e7fd..89551eda 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusStageServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusStageServiceImpl.java @@ -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 implements ICuMemberBonusStageService { @@ -71,7 +73,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl bonusStageDataList) { + public void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point, + CuMemberRetailDetail sourceRetailDetail, Date settleDate, EBonusStage eBonusStage, + List 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); - switch (point) { - case BonusConstants.POINT_31: - case BonusConstants.POINT_32: - case BonusConstants.POINT_33: - case BonusConstants.POINT_34: - case BonusConstants.POINT_35: - case BonusConstants.POINT_36: - case BonusConstants.POINT_37: - case BonusConstants.POINT_38: - // 如果填充的点位是第三层,理论上有可能已经全部填满,需要判断是否已经完成 - boolean isFinish = true; - for (String suffix : BonusConstants.FIELD_LIST) { - if (null == ReflectUtil.getFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)) { - isFinish = false; - break; + if (EBonusStage.ONE.getValue() == eBonusStage.getValue() + || EBonusStage.TWO.getValue() == eBonusStage.getValue()) { + switch (point) { + case BonusConstants.POINT_31: + case BonusConstants.POINT_32: + case BonusConstants.POINT_33: + case BonusConstants.POINT_34: + case BonusConstants.POINT_35: + case BonusConstants.POINT_36: + case BonusConstants.POINT_37: + case BonusConstants.POINT_38: + // 如果填充的点位是第三层,理论上有可能已经全部填满,需要判断是否已经完成 + boolean isFinish = true; + for (String suffix : BonusConstants.FIELD_LIST) { + if (null == ReflectUtil.getFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)) { + isFinish = false; + break; + } } - } - if (isFinish) { - targetRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue()); - targetRetailDetail.setStageDate(settleDate); - if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) { - // 一阶段,全满发放阶段奖 - // 返回奖金收益处理数据 - BonusStageData bonusStageData = BonusStageData.builder() - .bonusIncome(BonusConstants.ONE_BONUS) - .targetPkMember(targetRetailDetail.getPkMember()) - .targetChildNode(targetRetailDetail.getChildNode()) - .stage(eBonusStage.getValue()) - .stageNum(14) - .build(); - // 生成二阶段点位 - bonusStageData.setTwoRetailDetail(CuMemberRetailDetail.builder() - .pkMember(targetRetailDetail.getPkMember()) - .childNode(targetRetailDetail.getChildNode()) - .pkParent(targetRetailDetail.getPkParent()) - .stage(EBonusStage.TWO.getValue()) - .stageStatus(EBonusStageStatus.NO.getValue()) - .pointType(targetRetailDetail.getPointType()) - .pointGift(targetRetailDetail.getPointGift()) - .creationTime(settleDate) - .updateBool(0) - .build()); - bonusStageDataList.add(bonusStageData); - } else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) { - // 二阶段,全满发放阶段奖 - // 返回奖金收益处理数据 - BonusStageData bonusStageData = BonusStageData.builder() - .bonusIncome(BonusConstants.TWO_BONUS) - .targetPkMember(targetRetailDetail.getPkMember()) - .targetChildNode(targetRetailDetail.getChildNode()) - .stage(eBonusStage.getValue()) - .stageNum(14) - .build(); - bonusStageData.setThreeRetailDetail(CuMemberRetailDetail.builder() - .pkMember(targetRetailDetail.getPkMember()) - .childNode(targetRetailDetail.getChildNode()) - .pkParent(targetRetailDetail.getPkParent()) - .stage(EBonusStage.THREE.getValue()) - .stageStatus(EBonusStageStatus.NO.getValue()) - .pointType(targetRetailDetail.getPointType()) - .pointGift(targetRetailDetail.getPointGift()) - .creationTime(settleDate) - .updateBool(0) - .build()); - bonusStageDataList.add(bonusStageData); - } else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) { - // TODO 三阶段发放特殊处理 - // TODO 三阶段填充满,判断是否需要赠送点位 + if (isFinish) { + targetRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue()); + targetRetailDetail.setStageDate(settleDate); + if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) { + // 一阶段,全满发放阶段奖 + // 返回奖金收益处理数据 + BonusStageData bonusStageData = BonusStageData.builder() + .bonusIncome(BonusConstants.ONE_BONUS) + .targetPkMember(targetRetailDetail.getPkMember()) + .targetChildNode(targetRetailDetail.getChildNode()) + .stage(eBonusStage.getValue()) + .stageNum(14) + .build(); + // 生成二阶段点位 + bonusStageData.setTwoRetailDetail(CuMemberRetailDetail.builder() + .pkMember(targetRetailDetail.getPkMember()) + .childNode(targetRetailDetail.getChildNode()) + .pkParent(targetRetailDetail.getPkParent()) + .stage(EBonusStage.TWO.getValue()) + .stageStatus(EBonusStageStatus.NO.getValue()) + .pointType(targetRetailDetail.getPointType()) + .pointGift(targetRetailDetail.getPointGift()) + .creationTime(settleDate) + .updateBool(0) + .build()); + bonusStageDataList.add(bonusStageData); + } else { + // 二阶段,全满发放阶段奖 + // 返回奖金收益处理数据 + BonusStageData bonusStageData = BonusStageData.builder() + .bonusIncome(BonusConstants.TWO_BONUS) + .targetPkMember(targetRetailDetail.getPkMember()) + .targetChildNode(targetRetailDetail.getChildNode()) + .stage(eBonusStage.getValue()) + .stageNum(14) + .build(); + bonusStageData.setThreeRetailDetail(CuMemberRetailDetail.builder() + .pkMember(targetRetailDetail.getPkMember()) + .childNode(targetRetailDetail.getChildNode()) + .pkParent(targetRetailDetail.getPkParent()) + .stage(EBonusStage.THREE.getValue()) + .stageStatus(EBonusStageStatus.NO.getValue()) + .pointType(targetRetailDetail.getPointType()) + .pointGift(targetRetailDetail.getPointGift()) + .creationTime(settleDate) + .updateBool(0) + .build()); + bonusStageDataList.add(bonusStageData); + } + return; + } + break; + } + } else { + // TODO 三阶段发放特殊处理 + // TODO 三阶段填充满,判断是否需要赠送点位 + switch (point) { + case BonusConstants.POINT_11: + case BonusConstants.POINT_12: - } - return true; - } - break; + break; + } } - return false; } @Override diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailDetailMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailDetailMapper.xml index e635dc97..b1efab5b 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailDetailMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailDetailMapper.xml @@ -11,6 +11,7 @@ #{items} and cmrd.stage = #{stage} + and cmrd.stage_status = 1 order by cmrd.pk_member, cmrd.child_node