Compare commits

...

3 Commits

26 changed files with 740 additions and 270 deletions

View File

@ -4,15 +4,14 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.common.core.constant.MagicNumberConstants; import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.enums.EOrderType;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -27,6 +26,8 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
@Autowired @Autowired
private CuMemberBonusSettle cuMemberBonusSettle; private CuMemberBonusSettle cuMemberBonusSettle;
@Autowired
private ICuMemberTreeService iCuMemberTreeService;
@Override @Override
public void mergeMemberRetailRangeByYesterday(String rangeTableName, String yesterdayRangeTableName, Boolean isSameMonth) { public void mergeMemberRetailRangeByYesterday(String rangeTableName, String yesterdayRangeTableName, Boolean isSameMonth) {
@ -42,6 +43,9 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
@Override @Override
public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName) { public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName) {
// 清空当前明细表
iCuMemberTreeService.truncateCuMemberTreeTable(detailTableName);
// 用昨天的数据初始化当前明细表
baseMapper.mergeMemberRetailRangeDetailByYesterday(detailTableName, yesterdayDetailTableName); baseMapper.mergeMemberRetailRangeDetailByYesterday(detailTableName, yesterdayDetailTableName);
} }
@ -94,15 +98,21 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
Collection<CuMemberRetailDetail> retailDetailColl = new ArrayList<>(); Collection<CuMemberRetailDetail> retailDetailColl = new ArrayList<>();
memberRangeExtMap.forEach((key, value) -> { memberRangeExtMap.forEach((key, value) -> {
if (null != value.getOneDetailMap() && value.getOneDetailMap().size() > 0) { if (null != value.getOneDetailMap() && value.getOneDetailMap().size() > 0) {
retailDetailColl.addAll(value.getOneDetailMap().values()); Collection<CuMemberRetailDetail> tmpDetailColl = value.getOneDetailMap().values();
for (CuMemberRetailDetail cuMemberRetailDetail : tmpDetailColl) {
// 只有需要更新的才进行入库操作
if (null != cuMemberRetailDetail.getUpdateBool()) {
retailDetailColl.add(cuMemberRetailDetail);
}
}
} }
}); });
List<List<?>> list = cuMemberBonusSettle.handleCutList(retailDetailColl); List<List<?>> list = cuMemberBonusSettle.handleCutList(retailDetailColl);
list.forEach(tmpList -> { list.forEach(tmpList -> {
if (CollectionUtil.isNotEmpty(tmpList)) { if (CollectionUtil.isNotEmpty(tmpList)) {
baseMapper.mergeCuMemberRetailDetail(rangeDetailTableName, tmpList); baseMapper.mergeCuMemberRetailDetail(rangeDetailTableName, tmpList);
} }
}); });
} }
@Override @Override

View File

@ -2,10 +2,23 @@ package com.hzs.bonus.bonus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.bonus.CuMemberBonusStage; import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 会员奖金-阶段收益明细表 Mapper 接口 * 会员奖金-阶段收益明细表 Mapper 接口
*/ */
public interface CuMemberBonusStageMapper extends BaseMapper<CuMemberBonusStage> { public interface CuMemberBonusStageMapper extends BaseMapper<CuMemberBonusStage> {
/**
* 删除会员阶段奖金表
*/
void deleteCuMemberBonusStage(Integer period);
/**
* 批量插入会员阶段奖
*/
void batchInsertCuMemberBonusStage(@Param("cuMemberBonusStageList") List<?> cuMemberBonusStageList);
} }

View File

@ -3,20 +3,46 @@ package com.hzs.bonus.bonus.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; 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.member.bonus.CuMemberBonusStage;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
/** /**
* 会员奖金-阶段收益明细表 服务类 * 会员奖金-阶段收益明细表 服务类
*/ */
public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage> { public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage> {
/**
* 删除会员阶段奖金表
*/
void deleteCuMemberBonusStage(Integer period);
/**
* 批量插入会员阶段奖
*/
void batchInsertCuMemberBonusStage(List<CuMemberBonusStage> cuMemberBonusStageList, Set<Long> memberIdSet);
/**
* 获取阶段收益信息
*/
CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange,
CuMemberBonus cuMemberBonus, Integer pkBonusItems);
/** /**
* 填充会员点位 * 填充会员点位
*/ */
String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, CuMemberRetailDetail newRetailDetail); String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, CuMemberRetailDetail newRetailDetail);
/**
* 填充指定点位
*/
void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
Long pkMember, Integer childNode);
/** /**
* 处理新点位是推荐第一层 * 处理新点位是推荐第一层
*/ */
@ -38,4 +64,5 @@ public interface ICuMemberBonusStageService extends IService<CuMemberBonusStage>
CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail, CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail,
String rangeTableName, String rangeDetailTableName, String newNode); String rangeTableName, String rangeDetailTableName, String newNode);
} }

View File

@ -79,6 +79,19 @@ public abstract class BonusSettleHandle {
} }
/**
* 获得 阶段收益 备注
*/
protected void stageIncomeRemark(SaOrderExt saOrderExt, CuMemberBonusStage cuMemberBonusStage,
CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) {
String remark = String.format(BonusMsgConstants.STAGE_INCOME, saOrderExt.getOrderCode(),
sourceMember.getMemberCode() + sourceMember.getMemberName(),
targetMember.getMemberCode() + targetMember.getMemberName(),
cuMemberBonusStage.getChildNode(), cuMemberBonusStage.getStage());
cuMemberBonusStage.setRemark(remark);
}
/** /**
* 获得 直推级差收益的备注 * 获得 直推级差收益的备注
* *

View File

@ -278,7 +278,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate); Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate);
// 新零售订单注册复购 // 新零售订单注册复购
List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_REPURCHASE.getValue())); List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()));
// 更新当月会员 将昨天业绩更到到今天更新当月会员考核结果有消费的考核通过 // 更新当月会员 将昨天业绩更到到今天更新当月会员考核结果有消费的考核通过
// 结算期间表 // 结算期间表
@ -354,6 +354,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberBonusPushList.size() > 0) { if (cuMemberBonusPushList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList); bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
} }
if (cuMemberBonusStageList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList);
}
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList); bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberBonusRangeList);
} }
@ -368,6 +371,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
// 更新日结数据 // 更新日结数据
iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap);
CuMemberRetailRangeExt tt = memberRangeExtMap.get(20363L);
// 更新日结明细数据 // 更新日结明细数据
iCuMemberRetailRangeService.updateCuMemberRetailDetail(rangeDetailTableName, memberRangeExtMap); iCuMemberRetailRangeService.updateCuMemberRetailDetail(rangeDetailTableName, memberRangeExtMap);
} }
@ -947,6 +951,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
// 当前会员子点位总数 // 当前会员子点位总数
int pointCount = sourceMember.getPointCount(); int pointCount = sourceMember.getPointCount();
newPointInt:
for (int i = 1; i <= newPointInt; i++) { for (int i = 1; i <= newPointInt; i++) {
// 订单会员生成的新点位 // 订单会员生成的新点位
CuMemberRetailDetail newRetailDetail = CuMemberRetailDetail.builder() CuMemberRetailDetail newRetailDetail = CuMemberRetailDetail.builder()
@ -958,6 +964,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
.pointType(EBonusStageType.NORMAL.getValue()) .pointType(EBonusStageType.NORMAL.getValue())
.pointGift(0) .pointGift(0)
.creationTime(settleDate) .creationTime(settleDate)
.updateBool(0)
.build(); .build();
detailList.put(newRetailDetail.getChildNode(), newRetailDetail); detailList.put(newRetailDetail.getChildNode(), newRetailDetail);
@ -977,47 +984,142 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 推荐人没有未完成点位继续往上找 // 推荐人没有未完成点位继续往上找
continue; continue;
} }
parentDetailList.forEach((key, parentRetailDetail) -> { for (Map.Entry<Integer, CuMemberRetailDetail> integerCuMemberRetailDetailEntry : parentDetailList.entrySet()) {
// 第一层填充
CuMemberRetailDetail parentRetailDetail = integerCuMemberRetailDetailEntry.getValue();
// 遍历推荐人点位使用第一个未完成的点位进行填充 // 遍历推荐人点位使用第一个未完成的点位进行填充
if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) { if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) {
String newNode = iCuMemberBonusStageService.fillChildNode(parentRetailDetail, newRetailDetail); if (null == parentRetailDetail.getPointMember11()) {
if (null == newNode) { iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_11,
return; newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
} // 新点位是推荐人点位的第一层
switch (newNode) { iCuMemberBonusStageService.handlePointFirst(memberRangeExtMap, newRetailDetail, parentRetailDetail,
case BonusConstants.POINT_11: rangeTableName, rangeDetailTableName, BonusConstants.POINT_11);
case BonusConstants.POINT_12: // 当前新子点位填充完成进入下一个新子点位
// 新点位是推荐人点位的第一层 continue newPointInt;
iCuMemberBonusStageService.handlePointFirst(memberRangeExtMap, newRetailDetail, parentRetailDetail, } else if (null == parentRetailDetail.getPointMember12()) {
rangeTableName, rangeDetailTableName, newNode); iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_12,
break; newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
case BonusConstants.POINT_21: // 新点位是推荐人点位的第一层
case BonusConstants.POINT_22: iCuMemberBonusStageService.handlePointFirst(memberRangeExtMap, newRetailDetail, parentRetailDetail,
case BonusConstants.POINT_23: rangeTableName, rangeDetailTableName, BonusConstants.POINT_12);
case BonusConstants.POINT_24: // 当前新子点位填充完成进入下一个新子点位
// 新点位是推荐人点位的第二层 continue newPointInt;
iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, newNode);
break;
case BonusConstants.POINT_38:
// 第一个点位已经全部填满更新完成状态和时间
parentRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue());
parentRetailDetail.setStageDate(settleDate);
// TODO 一阶段全满则需要发放一阶段奖金
// TODO 需要记录填满子点位用来处理生成二阶段以及生成赠点
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:
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, newNode);
} }
} }
}); }
for (Map.Entry<Integer, CuMemberRetailDetail> integerCuMemberRetailDetailEntry : parentDetailList.entrySet()) {
// 第二层填充
CuMemberRetailDetail parentRetailDetail = integerCuMemberRetailDetailEntry.getValue();
// 遍历推荐人点位使用第一个未完成的点位进行填充
if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) {
if (null == parentRetailDetail.getPointMember21()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_21,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第二层
iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_21);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember22()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_22,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第二层
iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_22);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember23()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_23,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第二层
iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_23);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember24()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_24,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第二层
iCuMemberBonusStageService.handlePointSecond(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_24);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
}
}
}
for (Map.Entry<Integer, CuMemberRetailDetail> integerCuMemberRetailDetailEntry : parentDetailList.entrySet()) {
// 第三层填充
CuMemberRetailDetail parentRetailDetail = integerCuMemberRetailDetailEntry.getValue();
// 遍历推荐人点位使用第一个未完成的点位进行填充
if (EBonusStageStatus.NO.getValue() == parentRetailDetail.getStageStatus()) {
if (null == parentRetailDetail.getPointMember31()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_31,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_31);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember32()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_32,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_32);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember33()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_33,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_33);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember34()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_34,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_34);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember35()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_35,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_35);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember36()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_36,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_36);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember37()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_37,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_37);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
} else if (null == parentRetailDetail.getPointMember38()) {
iCuMemberBonusStageService.fillRetailDetail(parentRetailDetail, BonusConstants.POINT_38,
newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
// 新点位是推荐人点位的第三层
iCuMemberBonusStageService.handlePointThird(memberRangeExtMap, newRetailDetail, parentRetailDetail,
rangeTableName, rangeDetailTableName, BonusConstants.POINT_38);
// 当前新子点位填充完成进入下一个新子点位
continue newPointInt;
}
}
}
} }
} }
} }

View File

@ -40,22 +40,23 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Autowired @Autowired
private IBonusOrderService iBonusOrderService; private IBonusOrderService iBonusOrderService;
@Autowired @Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private BonusSettleRangeHandle bonusSettleRangeHandle; private BonusSettleRangeHandle bonusSettleRangeHandle;
@Autowired @Autowired
private ICuMemberBonusService cuMemberBonusService; private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired @Autowired
private ICuMemberBonusPushService cuMemberBonusPushService; private ICuMemberBonusService iCuMemberBonusService;
@Autowired @Autowired
private ICuMemberBonusRangeService cuMemberBonusRangeService; private ICuMemberBonusPushService iCuMemberBonusPushService;
@Autowired @Autowired
private ICuMemberBonusDetailService cuMemberBonusDetailService; private ICuMemberBonusStageService iCuMemberBonusStageService;
@Autowired
private ICuMemberBonusRangeService iCuMemberBonusRangeService;
@Autowired
private ICuMemberBonusDetailService iCuMemberBonusDetailService;
@Autowired @Autowired
private ICuMemberRetailRangeService iCuMemberRetailRangeService; private ICuMemberRetailRangeService iCuMemberRetailRangeService;
@Autowired @Autowired
private ICuMemberService cuMemberService; private ICuMemberService iCuMemberService;
/** /**
@ -68,8 +69,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap); List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
if (cuMemberBonusList.size() > 0) { if (cuMemberBonusList.size() > 0) {
// 插入奖金主表 // 插入奖金主表
cuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList); iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
List<CuMemberBonus> cuMemberBonuses = cuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList); List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus)); cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
} }
} }
@ -79,10 +80,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
public void calculateCuMemberBonus(String settleDate) { public void calculateCuMemberBonus(String settleDate) {
try { try {
// 结算期间 // 结算期间
Integer period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate); String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
// 结算期间前一天期间 // 结算期间前一天期间
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId(); Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
// 获取所有国家的奖金项 key = 国家 + 奖金项的值 // 获取所有国家的奖金项 key = 国家 + 奖金项的值
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData(); BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
@ -121,10 +122,10 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据 // 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据
// 今天结算期数 // 今天结算期数
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime()); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 昨天结算期数 // 昨天结算期数
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime())); String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
int beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId(); int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
// 秒结表名 // 秒结表名
String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod; String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
@ -137,28 +138,28 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList); secondRangeTableName, beforePeriod, currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList);
saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap); saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(currentPeriod); Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId())); cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet); iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
} }
if (cuMemberBonusDetailList.size() > 0) { if (cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId())); cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet); iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
} }
} else { } else {
// 订单撤单处理逆向 // 订单撤单处理逆向
if (!DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) { if (!DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) {
settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)); settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS));
currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
} }
// 实时计算撤单数据业绩等级奖衔日奖 // 实时计算撤单数据业绩等级奖衔日奖
bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO, bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO,
secondRangeTableName, beforePeriod, currentPeriod); secondRangeTableName, beforePeriod, currentPeriod);
// 处理收益 // 处理收益
cuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId()); iCuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId());
} }
} }
} }
@ -177,11 +178,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
// 今天结算期数 // 今天结算期数
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderExt.getPayTime()); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, orderExt.getPayTime());
int currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 秒结表名 // 秒结表名
String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod; String secondRangeTableName = TableNameConstants.CU_MEMBER_RETAIL_S + currentPeriod;
List<CuMemberExt> memberList = iCuMemberRetailRangeService.findParentMemberList(orderExt.getPkMember()); List<CuMemberExt> memberList = iCuMemberRetailRangeService.findParentMemberList(orderExt.getPkMember());
CuMember self = cuMemberService.getById(orderExt.getPkId()); CuMember self = iCuMemberService.getById(orderExt.getPkId());
iCuMemberRetailRangeService.updateMemberRetailSecondRangeSelf(secondRangeTableName, orderExt, self, updateType, symbol); iCuMemberRetailRangeService.updateMemberRetailSecondRangeSelf(secondRangeTableName, orderExt, self, updateType, symbol);
iCuMemberRetailRangeService.updateMemberRetailSecondRangeParent(secondRangeTableName, orderExt, memberList, updateType, symbol); iCuMemberRetailRangeService.updateMemberRetailSecondRangeParent(secondRangeTableName, orderExt, memberList, updateType, symbol);
} }
@ -193,10 +194,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
* @param bonusRecordDetailVO 奖金明细表 * @param bonusRecordDetailVO 奖金明细表
*/ */
void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) { void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
cuMemberBonusPushService.deleteCuMemberBonusPush(period); iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
cuMemberBonusDetailService.deleteCuMemberBonusDetail(period); iCuMemberBonusStageService.deleteCuMemberBonusStage(period);
cuMemberBonusRangeService.deleteCuMemberBonusRange(period); iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
cuMemberBonusService.deleteCuMemberBonus(period); iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
iCuMemberBonusService.deleteCuMemberBonus(period);
if (cuMemberBonusMap.size() == 0) { if (cuMemberBonusMap.size() == 0) {
return; return;
} }
@ -207,11 +209,17 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList(); List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList();
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList(); List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList();
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList(); List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList();
// 阶段收益奖金明细
List<CuMemberBonusStage> cuMemberBonusStageList = bonusRecordDetailVO.getCuMemberBonusStageList();
if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) { if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) {
cuMemberBonusPushList.forEach(cuMemberBonusPush -> cuMemberBonusPushList.forEach(cuMemberBonusPush ->
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId())); cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
batchMemberBonusPushList.addAll(cuMemberBonusPushList); batchMemberBonusPushList.addAll(cuMemberBonusPushList);
} }
if (cuMemberBonusStageList != null && cuMemberBonusStageList.size() > 0) {
cuMemberBonusStageList.forEach(cuMemberBonusStage ->
cuMemberBonusStage.setPkBonus(cuMemberBonusMap.get(cuMemberBonusStage.getPkBonus()).getPkId()));
}
if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) { if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) {
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId())); cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
@ -223,15 +231,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
batchMemberBonusRangeList.addAll(cuMemberBonusRangeList); batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
} }
// 插入奖金主表 // 插入奖金主表
cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList); iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period); Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet); iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet); iCuMemberBonusStageService.batchInsertCuMemberBonusStage(cuMemberBonusStageList, memberIdSet);
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet); iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
} }
private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) { private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
List<Long> pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size()); List<Long> pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
int i = 0; int i = 0;
// 判断时间重算的时候直接是已公布 // 判断时间重算的时候直接是已公布
Integer grantStatus = EGrantStatus.SETTLED.getValue(); Integer grantStatus = EGrantStatus.SETTLED.getValue();

View File

@ -5,23 +5,26 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.ReflectUtil;
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper; import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService; import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
import com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper; import com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.bonus.service.ICuMemberBonusStageService; import com.hzs.bonus.bonus.service.ICuMemberBonusStageService;
import com.hzs.bonus.constant.BonusConstants; import com.hzs.bonus.constant.BonusConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.enums.EBonusStage; import com.hzs.common.core.enums.EBonusStage;
import com.hzs.common.core.enums.ECalType;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; 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.member.bonus.CuMemberBonusStage;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* 会员奖金-阶段收益明细表 服务实现类 * 会员奖金-阶段收益明细表 服务实现类
@ -29,25 +32,65 @@ import java.util.Map;
@Service @Service
public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService { public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStageMapper, CuMemberBonusStage> implements ICuMemberBonusStageService {
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Autowired @Autowired
private ICuMemberRetailDetailService iCuMemberRetailDetailService; private ICuMemberRetailDetailService iCuMemberRetailDetailService;
@Resource @Resource
private CuMemberRetailRangeMapper cuMemberRetailRangeMapper; private CuMemberRetailRangeMapper cuMemberRetailRangeMapper;
private void initFieldMap() { @Override
BonusConstants.FIELD_MAP = new HashMap<>(); public void deleteCuMemberBonusStage(Integer period) {
for (String suffix : BonusConstants.FIELD_LIST) { baseMapper.deleteCuMemberBonusStage(period);
BonusConstants.FIELD_MAP.put(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix)); }
BonusConstants.FIELD_MAP.put(BonusConstants.POINT_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_FIELD_NAME + suffix));
@Override
public void batchInsertCuMemberBonusStage(List<CuMemberBonusStage> cuMemberBonusStageList, Set<Long> memberIdSet) {
if (CollectionUtil.isEmpty(cuMemberBonusStageList)) {
return;
} }
List<CuMemberBonusStage> addMemberBonusStageList = new ArrayList<>();
for (CuMemberBonusStage cuMemberBonusStage : cuMemberBonusStageList) {
if (memberIdSet.contains(cuMemberBonusStage.getPkBonus())) {
addMemberBonusStageList.add(cuMemberBonusStage);
}
}
if (addMemberBonusStageList.size() == 0) {
return;
}
List<List<?>> lists = cuMemberBonusSettle.handleCutList(addMemberBonusStageList);
lists.forEach(list ->
baseMapper.batchInsertCuMemberBonusStage(list));
}
/**
* 获取阶段收益信息
*/
@Override
public CuMemberBonusStage getCuMemberBonusStage(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusStage cuMemberBonusStage = CuMemberBonusStage.builder()
.pkBonus(cuMemberBonus.getPkId())
.pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems)
.incomeStatus(cuMemberRetailRange.getIncomeStatus())
.calType(ECalType.VALUE.getValue())
.calAchieve(BigDecimal.ZERO)
.calValue(BigDecimal.ZERO)
.pretaxIncome(BigDecimal.ZERO)
.incomeTax(BigDecimal.ZERO)
.realIncome(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusStage.setPkCountry(cuMemberRetailRange.getPkSettleCountry());
cuMemberBonusStage.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusStage;
} }
@Override @Override
public String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, CuMemberRetailDetail newRetailDetail) { public String fillChildNode(CuMemberRetailDetail cuMemberRetailDetail, CuMemberRetailDetail newRetailDetail) {
if (ObjectUtil.isEmpty(BonusConstants.FIELD_MAP)) {
initFieldMap();
}
for (String suffix : BonusConstants.FIELD_LIST) { for (String suffix : BonusConstants.FIELD_LIST) {
Field pointMemberField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix); Field pointMemberField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix);
Field pointField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_FIELD_NAME + suffix); Field pointField = BonusConstants.FIELD_MAP.get(BonusConstants.POINT_FIELD_NAME + suffix);
@ -55,6 +98,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
if (ObjectUtil.isEmpty(pointFieldValue)) { if (ObjectUtil.isEmpty(pointFieldValue)) {
ReflectUtil.setFieldValue(cuMemberRetailDetail, pointMemberField, newRetailDetail.getPkMember()); ReflectUtil.setFieldValue(cuMemberRetailDetail, pointMemberField, newRetailDetail.getPkMember());
ReflectUtil.setFieldValue(cuMemberRetailDetail, pointField, newRetailDetail.getChildNode()); ReflectUtil.setFieldValue(cuMemberRetailDetail, pointField, newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(cuMemberRetailDetail, BonusConstants.UPDATE_FLAG, 0);
return suffix; return suffix;
} }
} }
@ -64,8 +108,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
/** /**
* 向上填充子点位 * 向上填充子点位
*/ */
public void fillUpTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newParentRetailDetail, private void fillUpTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newParentRetailDetail,
CuMemberRetailDetail newRetailDetail, String node) { CuMemberRetailDetail newRetailDetail, String node) {
if (null == targetRetailDetail) { if (null == targetRetailDetail) {
return; return;
} }
@ -78,80 +122,60 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
switch (suffix) { switch (suffix) {
case BonusConstants.POINT_11: case BonusConstants.POINT_11:
if (BonusConstants.POINT_11.equals(node)) { if (BonusConstants.POINT_11.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_21, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_21, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_21, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_12.equals(node)) { } else if (BonusConstants.POINT_12.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_22, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_22, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_22, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_21.equals(node)) { } else if (BonusConstants.POINT_21.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_31, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_22.equals(node)) { } else if (BonusConstants.POINT_22.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_32, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_23.equals(node)) { } else if (BonusConstants.POINT_23.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_33, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_24.equals(node)) { } else if (BonusConstants.POINT_24.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_34, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getChildNode());
} }
break; break;
case BonusConstants.POINT_12: case BonusConstants.POINT_12:
if (BonusConstants.POINT_11.equals(node)) { if (BonusConstants.POINT_11.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_23, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_23, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_23, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_12.equals(node)) { } else if (BonusConstants.POINT_12.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_24, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_24, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_24, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_21.equals(node)) { } else if (BonusConstants.POINT_21.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_35, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_22.equals(node)) { } else if (BonusConstants.POINT_22.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_36, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_23.equals(node)) { } else if (BonusConstants.POINT_23.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_37, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_24.equals(node)) { } else if (BonusConstants.POINT_24.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_38, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getChildNode());
} }
break; break;
case BonusConstants.POINT_21: case BonusConstants.POINT_21:
if (BonusConstants.POINT_11.equals(node)) { if (BonusConstants.POINT_11.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_31, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_31, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_12.equals(node)) { } else if (BonusConstants.POINT_12.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_32, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_32, newRetailDetail.getChildNode());
} }
break; break;
case BonusConstants.POINT_22: case BonusConstants.POINT_22:
if (BonusConstants.POINT_11.equals(node)) { if (BonusConstants.POINT_11.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_33, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_33, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_12.equals(node)) { } else if (BonusConstants.POINT_12.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_34, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_34, newRetailDetail.getChildNode());
} }
break; break;
case BonusConstants.POINT_23: case BonusConstants.POINT_23:
if (BonusConstants.POINT_11.equals(node)) { if (BonusConstants.POINT_11.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_35, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_35, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_12.equals(node)) { } else if (BonusConstants.POINT_12.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_36, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_36, newRetailDetail.getChildNode());
} }
break; break;
case BonusConstants.POINT_24: case BonusConstants.POINT_24:
if (BonusConstants.POINT_11.equals(node)) { if (BonusConstants.POINT_11.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_37, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_37, newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_12.equals(node)) { } else if (BonusConstants.POINT_12.equals(node)) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_38, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + BonusConstants.POINT_38, newRetailDetail.getChildNode());
} }
break; break;
} }
@ -163,8 +187,8 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
/** /**
* 向下填充子点位 * 向下填充子点位
*/ */
public void fillDownTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newRetailDetail, private void fillDownTargetRetailDetail(CuMemberRetailDetail targetRetailDetail, CuMemberRetailDetail newRetailDetail,
String node, Integer level) { String node, Integer level) {
if (null == targetRetailDetail) { if (null == targetRetailDetail) {
return; return;
} }
@ -175,38 +199,43 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|| BonusConstants.POINT_33.equals(node) || BonusConstants.POINT_33.equals(node)
|| BonusConstants.POINT_35.equals(node) || BonusConstants.POINT_35.equals(node)
|| BonusConstants.POINT_37.equals(node)) { || BonusConstants.POINT_37.equals(node)) {
targetRetailDetail.setPointMember11(newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_11, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
targetRetailDetail.setPoint11(newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_22.equals(node) } else if (BonusConstants.POINT_22.equals(node)
|| BonusConstants.POINT_24.equals(node) || BonusConstants.POINT_24.equals(node)
|| BonusConstants.POINT_32.equals(node) || BonusConstants.POINT_32.equals(node)
|| BonusConstants.POINT_34.equals(node) || BonusConstants.POINT_34.equals(node)
|| BonusConstants.POINT_36.equals(node) || BonusConstants.POINT_36.equals(node)
|| BonusConstants.POINT_38.equals(node)) { || BonusConstants.POINT_38.equals(node)) {
targetRetailDetail.setPointMember12(newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_12, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
targetRetailDetail.setPoint12(newRetailDetail.getChildNode());
} }
} else if (level.equals(2)) { } else if (level.equals(2)) {
if (BonusConstants.POINT_31.equals(node) if (BonusConstants.POINT_31.equals(node)
|| BonusConstants.POINT_35.equals(node)) { || BonusConstants.POINT_35.equals(node)) {
targetRetailDetail.setPointMember21(newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_21, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
targetRetailDetail.setPoint21(newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_32.equals(node) } else if (BonusConstants.POINT_32.equals(node)
|| BonusConstants.POINT_36.equals(node)) { || BonusConstants.POINT_36.equals(node)) {
targetRetailDetail.setPointMember22(newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_22, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
targetRetailDetail.setPoint22(newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_33.equals(node) } else if (BonusConstants.POINT_33.equals(node)
|| BonusConstants.POINT_37.equals(node)) { || BonusConstants.POINT_37.equals(node)) {
targetRetailDetail.setPointMember23(newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_23, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
targetRetailDetail.setPoint23(newRetailDetail.getChildNode());
} else if (BonusConstants.POINT_34.equals(node) } else if (BonusConstants.POINT_34.equals(node)
|| BonusConstants.POINT_38.equals(node)) { || BonusConstants.POINT_38.equals(node)) {
targetRetailDetail.setPointMember24(newRetailDetail.getPkMember()); this.fillRetailDetail(targetRetailDetail, BonusConstants.POINT_24, newRetailDetail.getPkMember(), newRetailDetail.getChildNode());
targetRetailDetail.setPoint24(newRetailDetail.getChildNode());
} }
} }
} }
/**
* 填充点位
*/
@Override
public void fillRetailDetail(CuMemberRetailDetail targetRetailDetail, String point,
Long pkMember, Integer childNode) {
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_MEMBER_FIELD_NAME + point, pkMember);
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.POINT_FIELD_NAME + point, childNode);
ReflectUtil.setFieldValue(targetRetailDetail, BonusConstants.UPDATE_FLAG, 0);
}
@Override @Override
public void handlePointFirst(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, public void handlePointFirst(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail, CuMemberRetailDetail newRetailDetail, CuMemberRetailDetail newParentRetailDetail,
@ -238,22 +267,25 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
} }
// 新点位的上第二层 // 新点位的上第二层
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPointMemberFirst());
newRetailDetail.setPointSecond(newParentRetailDetail.getPointFirst());
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst()); CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
if (null != firstMemberRetail) { if (null != firstMemberRetail) {
CuMemberRetailDetail memberDetail = firstMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst()); CuMemberRetailDetail memberDetail = firstMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst());
this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode); if (null != memberDetail) {
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPointMemberFirst());
newRetailDetail.setPointSecond(newParentRetailDetail.getPointFirst());
this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
}
} }
// 新点位的上第三层 // 新点位的上第三层
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberSecond());
newRetailDetail.setPointThird(newParentRetailDetail.getPointSecond());
CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberSecond()); CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberSecond());
if (null != secondMemberRetail) { if (null != secondMemberRetail) {
CuMemberRetailDetail memberDetail = secondMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointSecond()); CuMemberRetailDetail memberDetail = secondMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointSecond());
this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode); if (null != memberDetail) {
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberSecond());
newRetailDetail.setPointThird(newParentRetailDetail.getPointSecond());
this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
}
} }
} }
@ -268,7 +300,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
List<Long> queryMemberList = new ArrayList<>(2); List<Long> queryMemberList = new ArrayList<>(2);
// 获取上第三层结算数据 // 获取上第三层结算数据
CuMemberRetailRangeExt memberUpFirst = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst()); CuMemberRetailRangeExt memberUpFirst = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
if (null == memberUpFirst) { if (null == memberUpFirst && null != newParentRetailDetail.getPointMemberFirst()) {
queryMemberList.add(newParentRetailDetail.getPointMemberFirst()); queryMemberList.add(newParentRetailDetail.getPointMemberFirst());
} }
// 获取上第一层结算数据 // 获取上第一层结算数据
@ -287,7 +319,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
break; break;
} }
CuMemberRetailRangeExt memberDownFirst = memberRangeExtMap.get(downFirstMember); CuMemberRetailRangeExt memberDownFirst = memberRangeExtMap.get(downFirstMember);
if (null == memberDownFirst) { if (null == memberDownFirst && null != downFirstMember) {
queryMemberList.add(downFirstMember); queryMemberList.add(downFirstMember);
} }
if (CollectionUtil.isNotEmpty(queryMemberList)) { if (CollectionUtil.isNotEmpty(queryMemberList)) {
@ -303,12 +335,14 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
} }
// 新点位的上第三层 // 新点位的上第三层
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberFirst());
newRetailDetail.setPointThird(newParentRetailDetail.getPointFirst());
CuMemberRetailRangeExt thirdMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst()); CuMemberRetailRangeExt thirdMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
if (null != thirdMemberRetail) { if (null != thirdMemberRetail) {
CuMemberRetailDetail memberDetail = thirdMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst()); CuMemberRetailDetail memberDetail = thirdMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst());
this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode); if (null != memberDetail) {
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberFirst());
newRetailDetail.setPointThird(newParentRetailDetail.getPointFirst());
this.fillUpTargetRetailDetail(memberDetail, newParentRetailDetail, newRetailDetail, newNode);
}
} }
// 新点位的上第一层 // 新点位的上第一层
@ -371,11 +405,11 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
break; break;
} }
CuMemberRetailRangeExt memberDownSecond = memberRangeExtMap.get(downSecondMember); CuMemberRetailRangeExt memberDownSecond = memberRangeExtMap.get(downSecondMember);
if (null == memberDownSecond) { if (null == memberDownSecond && null != downSecondMember) {
queryMemberList.add(downSecondMember); queryMemberList.add(downSecondMember);
} }
CuMemberRetailRangeExt memberDownFirst = memberRangeExtMap.get(downFirstMember); CuMemberRetailRangeExt memberDownFirst = memberRangeExtMap.get(downFirstMember);
if (null == memberDownFirst) { if (null == memberDownFirst && null != downFirstMember) {
queryMemberList.add(downFirstMember); queryMemberList.add(downFirstMember);
} }
if (CollectionUtil.isNotEmpty(queryMemberList)) { if (CollectionUtil.isNotEmpty(queryMemberList)) {

View File

@ -18,10 +18,15 @@ public class BonusRecordDetailVO implements Serializable {
private Long pkMember; private Long pkMember;
/** /**
* * 直推收益见点收益
*/ */
private List<CuMemberBonusPush> cuMemberBonusPushList; private List<CuMemberBonusPush> cuMemberBonusPushList;
/**
* 阶段收益
*/
private List<CuMemberBonusStage> cuMemberBonusStageList;
/** /**
* 新零售 - 区域分红月度分红 * 新零售 - 区域分红月度分红
*/ */

View File

@ -1,7 +1,11 @@
package com.hzs.bonus.constant; package com.hzs.bonus.constant;
import cn.hutool.core.util.ReflectUtil;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -25,9 +29,21 @@ public class BonusConstants {
public static final List<String> FIELD_LIST = Arrays.asList(POINT_11, POINT_12, POINT_21, POINT_22, POINT_23, POINT_24, public static final List<String> FIELD_LIST = Arrays.asList(POINT_11, POINT_12, POINT_21, POINT_22, POINT_23, POINT_24,
POINT_31, POINT_32, POINT_33, POINT_34, POINT_35, POINT_36, POINT_37, POINT_38); POINT_31, POINT_32, POINT_33, POINT_34, POINT_35, POINT_36, POINT_37, POINT_38);
public static final String POINT_FIELD_NAME = "point"; // 会员ID字段
public static final String POINT_MEMBER_FIELD_NAME = "pointMember"; public static final String POINT_MEMBER_FIELD_NAME = "pointMember";
// 会员子点位字段
public static final String POINT_FIELD_NAME = "point";
// 入库标记字段
public static final String UPDATE_FLAG = "updateBool";
public static Map<String, Field> FIELD_MAP = null; public static Map<String, Field> FIELD_MAP = null;
static {
BonusConstants.FIELD_MAP = new HashMap<>();
for (String suffix : BonusConstants.FIELD_LIST) {
BonusConstants.FIELD_MAP.put(BonusConstants.POINT_MEMBER_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_MEMBER_FIELD_NAME + suffix));
BonusConstants.FIELD_MAP.put(BonusConstants.POINT_FIELD_NAME + suffix, ReflectUtil.getField(CuMemberRetailDetail.class, BonusConstants.POINT_FIELD_NAME + suffix));
}
}
} }

View File

@ -299,32 +299,32 @@
stage_status NUMBER(1) default 1 not null, stage_status NUMBER(1) default 1 not null,
stage_date DATE, stage_date DATE,
point_11 NUMBER(8), point_11 NUMBER(8),
point_12 NUMBER(8),
point_21 NUMBER(8),
point_22 NUMBER(8),
point_23 NUMBER(8),
point_24 NUMBER(8),
point_31 NUMBER(8),
point_32 NUMBER(8),
point_33 NUMBER(8),
point_34 NUMBER(8),
point_35 NUMBER(8),
point_36 NUMBER(8),
point_37 NUMBER(8),
point_38 NUMBER(8),
point_member_11 NUMBER(20), point_member_11 NUMBER(20),
point_12 NUMBER(8),
point_member_12 NUMBER(20), point_member_12 NUMBER(20),
point_21 NUMBER(8),
point_member_21 NUMBER(20), point_member_21 NUMBER(20),
point_22 NUMBER(8),
point_member_22 NUMBER(20), point_member_22 NUMBER(20),
point_23 NUMBER(8),
point_member_23 NUMBER(20), point_member_23 NUMBER(20),
point_24 NUMBER(8),
point_member_24 NUMBER(20), point_member_24 NUMBER(20),
point_31 NUMBER(8),
point_member_31 NUMBER(20), point_member_31 NUMBER(20),
point_32 NUMBER(8),
point_member_32 NUMBER(20), point_member_32 NUMBER(20),
point_33 NUMBER(8),
point_member_33 NUMBER(20), point_member_33 NUMBER(20),
point_34 NUMBER(8),
point_member_34 NUMBER(20), point_member_34 NUMBER(20),
point_35 NUMBER(8),
point_member_35 NUMBER(20), point_member_35 NUMBER(20),
point_36 NUMBER(8),
point_member_36 NUMBER(20), point_member_36 NUMBER(20),
point_37 NUMBER(8),
point_member_37 NUMBER(20), point_member_37 NUMBER(20),
point_38 NUMBER(8),
point_member_38 NUMBER(20), point_member_38 NUMBER(20),
point_type NUMBER(1) default 0 not null, point_type NUMBER(1) default 0 not null,
point_gift NUMBER(1) default 0 not null, point_gift NUMBER(1) default 0 not null,

View File

@ -2,31 +2,36 @@
<!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.bonus.mapper.CuMemberBonusStageMapper"> <mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusStageMapper">
<!-- 通用查询映射结果 --> <!-- 删除会员阶段奖金表 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.member.bonus.CuMemberBonusStage"> <delete id="deleteCuMemberBonusStage">
<id column="PK_ID" property="pkId"/> delete
<result column="DEL_FLAG" property="delFlag"/> from CU_MEMBER_BONUS_STAGE
<result column="PK_COUNTRY" property="pkCountry"/> where PK_BONUS in (
<result column="PK_CREATOR" property="pkCreator"/> select pk_id
<result column="CREATION_TIME" property="creationTime"/> from cu_member_bonus
<result column="PK_MODIFIED" property="pkModified"/> where period = #{period}
<result column="MODIFIED_TIME" property="modifiedTime"/> and grant_status &lt;= 2)
<result column="PK_BONUS" property="pkBonus"/> </delete>
<result column="PK_ORDER" property="pkOrder"/>
<result column="PK_BONUS_ITEMS" property="pkBonusItems"/> <!-- 批量插入会员阶段奖 -->
<result column="INCOME_STATUS" property="incomeStatus"/> <insert id="batchInsertCuMemberBonusStage">
<result column="CAL_TYPE" property="calType"/> insert ALL
<result column="CAL_ACHIEVE" property="calAchieve"/> <foreach item="item" index="index" collection="cuMemberBonusStageList" separator=" ">
<result column="CAL_VALUE" property="calValue"/> into cu_member_bonus_stage (
<result column="PRETAX_INCOME" property="pretaxIncome"/> pk_bonus, pk_order, pk_bonus_items, income_status,
<result column="INCOME_TAX" property="incomeTax"/> cal_type, cal_achieve, cal_value,
<result column="REAL_INCOME" property="realIncome"/> pretax_income, income_tax, real_income, remark,
<result column="REMARK" property="remark"/> income_ratio, income_dial_ratio, order_dial_ratio,
<result column="INCOME_RATIO" property="incomeRatio"/> pk_creator, child_node, stage, stage_num)
<result column="INCOME_DIAL_RATIO" property="incomeDialRatio"/> values (
<result column="ORDER_DIAL_RATIO" property="orderDialRatio"/> #{item.pkBonus}, #{item.pkOrder}, #{item.pkBonusItems}, #{item.incomeStatus},
<result column="STAGE" property="stage"/> #{item.calType}, #{item.calAchieve}, #{item.calValue},
<result column="STAGE_NUM" property="stageNum"/> #{item.pretaxIncome}, #{item.incomeTax}, #{item.realIncome},
</resultMap> #{item.round}, #{item.second}, #{item.remark},
#{item.incomeRatio}, #{item.incomeDialRatio}, #{item.orderDialRatio},
#{item.pkCreator}, #{item.childNode}, #{item.stage}, #{item.stageNum})
</foreach>
SELECT 1 FROM dual
</insert>
</mapper> </mapper>

View File

@ -90,7 +90,7 @@
</if> </if>
and so.pay_time >= #{startDate} and so.pay_time >= #{startDate}
and so.pay_time &lt; #{endDate} and so.pay_time &lt; #{endDate}
order by pay_time desc order by pay_time
</select> </select>

View File

@ -0,0 +1,23 @@
package com.hzs.member.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDetail> {
List<ChildCodeVO> getChildList(@Param("memberCode") String memberCode,
@Param("stage")Integer stage,
@Param("stageStatus")Integer stageStatus,
@Param("settleTableName")String settleTableName);
CuMemberRetailDetail getCuMemberRetailDetailExt(@Param("memberCode")String memberCode,
@Param("stage")Integer stage,
@Param("stageStatus")Integer stageStatus,
@Param("childNode")String childNode,
@Param("settleTableName")String settleTableName);
Integer getFindCumemberRetailDetail(@Param("settleTableName") String settleTableName);
}

View File

@ -0,0 +1,17 @@
package com.hzs.member.base.service;
import cn.hutool.core.lang.tree.Tree;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import java.util.List;
public interface ICumemberRetailDetail {
List<ChildCodeVO> getChildList(String memberCode, Integer stage, Integer stageStatus, String settleTableName);
CuMemberRetailDetail getCuMemberRetailDetail(String memberCode, Integer stage, Integer stageStatus, String childNode, String settleTableName);
Integer getFindCumemberRetailDetail(String settleTableName);
List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail);
}

View File

@ -0,0 +1,115 @@
package com.hzs.member.base.service.impl;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.lang.tree.TreeUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.base.CuMember;
import com.hzs.member.base.mapper.CuMemberRetailDetailMapper;
import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.base.service.ICumemberRetailDetail;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class ICumemberRetailDetailImpl extends ServiceImpl<CuMemberRetailDetailMapper, CuMemberRetailDetail> implements ICumemberRetailDetail {
@Autowired
private ICuMemberService iCuMemberService;
@Override
public List<ChildCodeVO> getChildList(String memberCode, Integer stage, Integer stageStatus, String settleTableName) {
return baseMapper.getChildList(memberCode,stage,stageStatus,settleTableName);
}
@Override
public CuMemberRetailDetail getCuMemberRetailDetail(String memberCode, Integer stage, Integer stageStatus,String childNode,String settleTableName) {
return baseMapper.getCuMemberRetailDetailExt(memberCode,stage,stageStatus,childNode,settleTableName);
}
@Override
public Integer getFindCumemberRetailDetail(String settleTableName) {
return baseMapper.getFindCumemberRetailDetail(settleTableName);
}
@Override
public List<Tree<String>> convertToNodeList(CuMemberRetailDetail cuMemberRetailDetail) {
// 所有会员id
Set<Long> ids = new LinkedHashSet<>();
ids.add(cuMemberRetailDetail.getPkMember());
// 过滤空的会员id
Stream.of(
cuMemberRetailDetail.getPointMember11(), cuMemberRetailDetail.getPointMember12(),
cuMemberRetailDetail.getPointMember21(), cuMemberRetailDetail.getPointMember22(), cuMemberRetailDetail.getPointMember23(), cuMemberRetailDetail.getPointMember24(),
cuMemberRetailDetail.getPointMember31(), cuMemberRetailDetail.getPointMember32(), cuMemberRetailDetail.getPointMember33(), cuMemberRetailDetail.getPointMember34(),
cuMemberRetailDetail.getPointMember35(), cuMemberRetailDetail.getPointMember36(), cuMemberRetailDetail.getPointMember37(), cuMemberRetailDetail.getPointMember38(),
cuMemberRetailDetail.getPointMemberFirst(), cuMemberRetailDetail.getPointMemberSecond(), cuMemberRetailDetail.getPointMemberThird()
).filter(Objects::nonNull).forEach(ids::add);
// 查找对应会员信息
List<CuMember> members;
if (ids.isEmpty()) {
members = Collections.emptyList();
} else {
members = iCuMemberService.listByIds(new ArrayList<>(ids));
}
Map<Long, CuMember> memberMap = members.stream()
.collect(Collectors.toMap(CuMember::getPkId, Function.identity(), (a, b) -> a));
// 构建node
List<Map<String, Object>> nodeList = new ArrayList<>();
nodeList.add(makeNode("root", "0", "root", cuMemberRetailDetail.getPkMember(), memberMap));
nodeList.add(makeNode("1", "root", "1", cuMemberRetailDetail.getPointMember11(), memberMap));
nodeList.add(makeNode("2", "root", "2", cuMemberRetailDetail.getPointMember12(), memberMap));
nodeList.add(makeNode("3", "1", "3", cuMemberRetailDetail.getPointMember21(), memberMap));
nodeList.add(makeNode("4", "1", "4", cuMemberRetailDetail.getPointMember22(), memberMap));
nodeList.add(makeNode("5", "2", "5", cuMemberRetailDetail.getPointMember23(), memberMap));
nodeList.add(makeNode("6", "2", "6", cuMemberRetailDetail.getPointMember24(), memberMap));
nodeList.add(makeNode("7", "3", "7", cuMemberRetailDetail.getPointMember31(), memberMap));
nodeList.add(makeNode("8", "3", "8", cuMemberRetailDetail.getPointMember32(), memberMap));
nodeList.add(makeNode("9", "4", "9", cuMemberRetailDetail.getPointMember33(), memberMap));
nodeList.add(makeNode("10", "4", "10", cuMemberRetailDetail.getPointMember34(), memberMap));
nodeList.add(makeNode("11", "5", "11", cuMemberRetailDetail.getPointMember35(), memberMap));
nodeList.add(makeNode("12", "5", "12", cuMemberRetailDetail.getPointMember36(), memberMap));
nodeList.add(makeNode("13", "6", "13", cuMemberRetailDetail.getPointMember37(), memberMap));
nodeList.add(makeNode("14", "6", "14", cuMemberRetailDetail.getPointMember38(), memberMap));
// 构造树结构
return TreeUtil.build(nodeList, "0", (node, tree) -> {
tree.setId((String) node.get("id"));
tree.setParentId((String) node.get("parentId"));
tree.setName((String) node.get("label"));
tree.putExtra("memberCode", node.get("memberCode"));
tree.putExtra("memberName", node.get("memberName"));
tree.putExtra("nodeCode", node.get("nodeCode"));
});
}
private Map<String, Object> makeNode(String id, String parentId, String label,
Long memberId, Map<Long, CuMember> memberMap) {
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("parentId", parentId);
map.put("label", label);
map.put("nodeCode", label);
if (memberId != null && memberMap.containsKey(memberId)) {
CuMember member = memberMap.get(memberId);
map.put("memberCode", member.getMemberCode());
map.put("memberName", member.getMemberName());
} else {
// 没有信息置空
map.put("memberCode", "");
map.put("memberName", "");
}
return map;
}
}

View File

@ -3,19 +3,26 @@ package com.hzs.member.structure.controller.manage;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.tree.Tree;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hzs.common.core.annotation.AccessPermissions; import com.hzs.common.core.annotation.AccessPermissions;
import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.*; import com.hzs.common.core.constant.*;
import com.hzs.common.core.constant.msg.CommonMsgConstants;
import com.hzs.common.core.constant.msg.MemberMsgConstants; import com.hzs.common.core.constant.msg.MemberMsgConstants;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EOperationBusiness;
import com.hzs.common.core.enums.EOperationMethod;
import com.hzs.common.core.enums.EOperationModule;
import com.hzs.common.core.enums.EYesNo; import com.hzs.common.core.enums.EYesNo;
import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.core.utils.sign.Base64Util; import com.hzs.common.core.utils.sign.Base64Util;
import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod; import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt; import com.hzs.common.domain.member.achieve.ext.CuMemberRetailSExt;
import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMember;
@ -24,11 +31,14 @@ import com.hzs.common.util.TransactionUtils;
import com.hzs.member.achieve.service.ICuMemberSettlePeriodService; import com.hzs.member.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.member.achieve.service.ICuMemberTreeService; import com.hzs.member.achieve.service.ICuMemberTreeService;
import com.hzs.member.base.service.ICuMemberService; import com.hzs.member.base.service.ICuMemberService;
import com.hzs.member.base.service.ICumemberRetailDetail;
import com.hzs.member.structure.controller.vo.ChildCodeVO;
import com.hzs.member.structure.controller.vo.CuMemberSettlePeriodVo; import com.hzs.member.structure.controller.vo.CuMemberSettlePeriodVo;
import com.hzs.system.config.IGradeServiceApi; import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.GradeDTO; import com.hzs.system.config.dto.GradeDTO;
import com.hzs.system.sys.IUserServiceApi; import com.hzs.system.sys.IUserServiceApi;
import com.hzs.system.sys.dto.UserAuthorityDTO; import com.hzs.system.sys.dto.UserAuthorityDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -38,6 +48,7 @@ import java.util.*;
/** /**
* 架构管理 * 架构管理
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/manage/member-structure") @RequestMapping("/manage/member-structure")
public class MemberStructureController extends BaseController { public class MemberStructureController extends BaseController {
@ -49,6 +60,8 @@ public class MemberStructureController extends BaseController {
@Autowired @Autowired
private ICuMemberService iCuMemberService; private ICuMemberService iCuMemberService;
@Autowired
private ICumemberRetailDetail iCumemberRetailDetail;
@DubboReference @DubboReference
IUserServiceApi iUserServiceApi; IUserServiceApi iUserServiceApi;
@DubboReference @DubboReference
@ -193,6 +206,68 @@ public class MemberStructureController extends BaseController {
} }
} }
/**
* 三阶段架构
* @param memberSettlePeriodId
* @param memberCode
* @param stage
* @param childNode
* @param stageStatus
* @return
*/
@Log(module = EOperationModule.MEMBER_RETAIL_TREE, business = EOperationBusiness.MEMBER_RETAIL_TREE, method = EOperationMethod.SELECT)
@GetMapping("/three-framework")
public AjaxResult Framework(Long memberSettlePeriodId, String memberCode,Integer stage,String childNode,Integer stageStatus) {
if (memberSettlePeriodId == null || memberCode == null || stage == null || stageStatus == null || childNode == null) {
log.error("参数错误");
return AjaxResult.error(CommonMsgConstants.MISSING_PARAM);
}
CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getById(memberSettlePeriodId);
log.info("日结信息{}",csPeriod);
String settleTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + csPeriod.getPkId();
log.info("日结表名称{}",settleTableName);
// 校验当前日结表是否存在
Integer isFind = iCumemberRetailDetail.getFindCumemberRetailDetail(settleTableName);
if (isFind != 1) {
log.error("当前表名不存在{}",settleTableName);
return AjaxResult.error("当前日结信息表不存在",settleTableName);
}
CuMemberRetailDetail cuMemberRetailDetail = iCumemberRetailDetail.getCuMemberRetailDetail(memberCode,stage,stageStatus,childNode,settleTableName);
log.info("日结表会员信息{}",cuMemberRetailDetail);
// 拼接树形结构
List<Tree<String>> cuMemberRetailTree = iCumemberRetailDetail.convertToNodeList(cuMemberRetailDetail);
return AjaxResult.success(cuMemberRetailTree);
}
/**
* 查询子节点
* @param memberSettlePeriodId
* @param memberCode
* @param stage
* @param stageStatus
* @return
*/
@Log(module = EOperationModule.MEMBER_RETAIL_CHILDNODE, business = EOperationBusiness.MEMBER_RETAIL_CHILDNODE, method = EOperationMethod.SELECT)
@GetMapping("/childList")
public AjaxResult Framework(Long memberSettlePeriodId, String memberCode,Integer stage,Integer stageStatus) {
if (memberSettlePeriodId == null || memberCode == null || stage == null || stageStatus == null) {
log.error("参数错误");
return AjaxResult.error(CommonMsgConstants.MISSING_PARAM);
}
CuMemberSettlePeriod csPeriod = iCuMemberSettlePeriodService.getById(memberSettlePeriodId);
log.info("日结信息{}",csPeriod);
String settleTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + csPeriod.getPkId();
log.info("日结表名称{}",settleTableName);
// 校验当前日结表是否存在
Integer isFind = iCumemberRetailDetail.getFindCumemberRetailDetail(settleTableName);
if (isFind != 1) {
log.error("当前表名不存在{}",settleTableName);
return AjaxResult.error("当前日结信息表不存在",settleTableName);
}
List<ChildCodeVO> childCodeList = iCumemberRetailDetail.getChildList(memberCode,stage,stageStatus,settleTableName);
return AjaxResult.success(childCodeList);
}
/** /**
* 查询最近一月所有期数 * 查询最近一月所有期数
* *

View File

@ -0,0 +1,13 @@
package com.hzs.member.structure.controller.vo;
import lombok.Data;
@Data
public class ChildCodeVO {
/**
* 子会员节点
*/
Integer childNode;
}

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.member.base.mapper.CuMemberRetailDetailMapper">
<select id="getChildList" resultType="com.hzs.member.structure.controller.vo.ChildCodeVO">
SELECT
cud.CHILD_NODE
FROM
CU_MEMBER cu LEFT JOIN
${ settleTableName } cud ON cu.PK_ID = cud.PK_MEMBER
WHERE
cu.MEMBER_CODE = #{ memberCode }
AND cud.STAGE = #{ stage }
AND cud.STAGE_STATUS = #{ stageStatus }
</select>
<select id="getFindCumemberRetailDetail" resultType="java.lang.Integer">
select 1
from user_tables
where table_name = upper(#{settleTableName})
</select>
<select id="getCuMemberRetailDetailExt"
resultType="com.hzs.common.domain.member.achieve.CuMemberRetailDetail">
SELECT
cud.*
FROM
CU_MEMBER cu
LEFT JOIN ${ settleTableName } cud ON cu.PK_ID = cud.PK_MEMBER
WHERE
cu.MEMBER_CODE = #{ memberCode }
AND STAGE = #{stage}
AND STAGE_STATUS = #{stageStatus}
AND CHILD_NODE = #{childNode}
</select>
</mapper>

View File

@ -15,6 +15,11 @@ public class BonusMsgConstants {
*/ */
public static String REPUR_DIRECT_INCOME = "订单编号%s,%s为%s贡献了第%s代见点收益,计算业绩%f,计算比例%f。"; public static String REPUR_DIRECT_INCOME = "订单编号%s,%s为%s贡献了第%s代见点收益,计算业绩%f,计算比例%f。";
/**
* 阶段 收益说明
*/
public static String STAGE_INCOME = "订单编号%s,%s为%s贡献了阶段收益,%s子点位%s阶段。";
/** /**
* 直推级差收益说明 * 直推级差收益说明
*/ */

View File

@ -402,6 +402,8 @@ public enum EOperationBusiness {
MONTHLY_JOB_LEVEL("月度职级名单查询"), MONTHLY_JOB_LEVEL("月度职级名单查询"),
MEMBER_RISK_CONTROL("K值风控设置"), MEMBER_RISK_CONTROL("K值风控设置"),
MEMBER_RETAIL_STAT("收益区域数据"), MEMBER_RETAIL_STAT("收益区域数据"),
MEMBER_RETAIL_CHILDNODE("会员子节点查询"),
MEMBER_RETAIL_TREE("三阶段结构")
; ;

View File

@ -401,6 +401,8 @@ public enum EOperationModule {
MEMBER_RISK_CONTROL("K值风控设置"), MEMBER_RISK_CONTROL("K值风控设置"),
ORDER_SYNC("同步失败订单"), ORDER_SYNC("同步失败订单"),
MEMBER_RETAIL_CHILDNODE("会员子节点查询"),
MEMBER_RETAIL_TREE("三阶段结构")
; ;
/** /**

View File

@ -10,12 +10,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* <p>
* 统计活跃会员 * 统计活跃会员
* </p>
*
* @author zhangjing
* @since 2023-05-17
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)

View File

@ -1,59 +0,0 @@
package com.hzs.common.domain.member.achieve;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 极差月新增业绩
* </p>
*
* @author hzs
* @since 2024-10-28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("CU_MEMBER_RANGE_MONTH")
public class CuMemberRangeMonth extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 会员ID
*/
@TableField("PK_MEMBER")
private Long pkMember;
/**
* 期数
*/
@TableField("PERIOD")
private Integer period;
/**
* 结算日期
*/
@TableField("SETTLE_DATE")
private Date settleDate;
/**
* 个人新增PV
*/
@TableField("NEW_PV")
private BigDecimal newPv;
/**
* 团队新增PV
*/
@TableField("NEW_TEAM_PV")
private BigDecimal newTeamPv;
}

View File

@ -280,5 +280,10 @@ public class CuMemberRetailDetail {
@TableField("POINT_MEMBER_THIRD") @TableField("POINT_MEMBER_THIRD")
private Long pointMemberThird; private Long pointMemberThird;
/**
* 更新标记不为null则需要入库
*/
@TableField(exist = false)
private Integer updateBool;
} }

View File

@ -50,7 +50,7 @@ public class CuMemberBonus extends BaseEntity {
private Integer pkRate; private Integer pkRate;
/** /**
* 注册直推收益- * 注册直推收益-
*/ */
@TableField("DIRECT_INCOME") @TableField("DIRECT_INCOME")
private BigDecimal directIncome; private BigDecimal directIncome;
@ -176,7 +176,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal repurCouponSubtotal; private BigDecimal repurCouponSubtotal;
/** /**
* 复购见点收益- * 复购见点收益-
*/ */
@TableField("GLOBAL_POINTS") @TableField("GLOBAL_POINTS")
private BigDecimal globalPoints; private BigDecimal globalPoints;
@ -188,7 +188,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal carAwardPoints; private BigDecimal carAwardPoints;
/** /**
* 注册阶段收益- * 注册阶段收益-
*/ */
@TableField("STORE_INCOME") @TableField("STORE_INCOME")
private BigDecimal storeIncome; private BigDecimal storeIncome;

View File

@ -7,13 +7,15 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.hzs.common.core.web.domain.BaseEntity; import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data; import lombok.*;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* 会员奖金-阶段收益明细表 * 会员奖金-阶段收益明细表
*/ */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = true) @Accessors(chain = true)
@ -113,6 +115,12 @@ public class CuMemberBonusStage extends BaseEntity {
@TableField("ORDER_DIAL_RATIO") @TableField("ORDER_DIAL_RATIO")
private BigDecimal orderDialRatio; private BigDecimal orderDialRatio;
/**
* 会员子节点
*/
@TableField("CHILD_NODE")
private Integer childNode;
/** /**
* 三个阶段123 * 三个阶段123
*/ */