## 培育津贴;
This commit is contained in:
parent
ae1d6a3ce1
commit
232edd3706
|
@ -5,13 +5,6 @@ import lombok.Data;
|
|||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: sui q
|
||||
* @Time: 2023/2/21 15:32
|
||||
* @Classname: BonusExpandDTO
|
||||
* @PackageName: com.hzs.system.config.dto
|
||||
*/
|
||||
@Data
|
||||
public class BonusExpandDTO implements Serializable {
|
||||
|
||||
|
|
|
@ -9,11 +9,7 @@ import java.io.Serializable;
|
|||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @Description: 极差的配置
|
||||
* @Author: sui q
|
||||
* @Time: 2023/1/3 13:42
|
||||
* @Classname: RangeDTO
|
||||
* @PackageName: com.hzs.system.config.dto
|
||||
* 极差的配置
|
||||
*/
|
||||
@Data
|
||||
public class RangeDTO implements Serializable {
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
package com.hzs.bonus.achieve.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRange;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Mapper 接口
|
||||
*/
|
||||
public interface CuMemberRangeMapper extends BaseMapper<CuMemberRange> {
|
||||
|
||||
/*
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
**/
|
||||
List<CuMemberRangeExt> queryCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("pkParent") Long pkParent, @Param("orderDate") Date orderDate);
|
||||
|
||||
/*
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
**/
|
||||
List<CuMemberRangeExt> querySecondCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("secondTableName") String secondTableName, @Param("pkParent") Long pkParent);
|
||||
|
||||
/*
|
||||
* 批量更新网体
|
||||
**/
|
||||
void mergeCuMemberRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);
|
||||
|
||||
/*
|
||||
* 批量更新网体
|
||||
**/
|
||||
void mergeSecondCuMemberRangeExt(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList);
|
||||
|
||||
/*
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
**/
|
||||
Integer validateCuMemberPlaceAwards(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList,
|
||||
@Param("pkRangeAwards") Integer pkRangeAwards, @Param("orderDate") Date orderDate);
|
||||
|
||||
/*
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
**/
|
||||
Integer validateSecondCuMemberPlaceAwards(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList,
|
||||
@Param("pkRangeAwards") Integer pkRangeAwards);
|
||||
}
|
|
@ -13,12 +13,7 @@ import java.io.Serializable;
|
|||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员业绩记录
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-10-26
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
package com.hzs.bonus.achieve.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRange;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 服务类
|
||||
*/
|
||||
public interface ICuMemberRangeService extends IService<CuMemberRange> {
|
||||
|
||||
/**
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
*/
|
||||
List<CuMemberRangeExt> queryCuMemberRangeExtByParent(String tableName, Long pkParent, Date orderDate);
|
||||
|
||||
/**
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
*/
|
||||
List<CuMemberRangeExt> querySecondCuMemberRangeExtByParent(String tableName, String secondTableName, Long pkParent);
|
||||
|
||||
/**
|
||||
* 批量更新网体
|
||||
*/
|
||||
void mergeCuMemberRangeExt(String rangeTableName, List<CuMemberRangeExt> cuMemberRangeExtList);
|
||||
|
||||
/**
|
||||
* 批量更新网体
|
||||
*/
|
||||
void mergeSecondCuMemberRangeExt(String secondTableName, List<CuMemberRangeExt> cuMemberRangeExtList);
|
||||
|
||||
/**
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
*/
|
||||
Integer validateCuMemberPlaceAwards(String rangeTableName, List<CuMemberRangeExt> cuMemberRangeExtList, Integer pkRangeAwards, Date orderDate);
|
||||
|
||||
/**
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
*/
|
||||
Integer validateSecondCuMemberPlaceAwards(String secondTableName, List<CuMemberRangeExt> cuMemberRangeExtList, Integer pkRangeAwards);
|
||||
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
package com.hzs.bonus.achieve.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.achieve.mapper.CuMemberRangeMapper;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRange;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberRangeServiceImpl extends ServiceImpl<CuMemberRangeMapper, CuMemberRange> implements ICuMemberRangeService {
|
||||
|
||||
@Autowired
|
||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||
|
||||
@Override
|
||||
public List<CuMemberRangeExt> queryCuMemberRangeExtByParent(String tableName, Long pkParent, Date orderDate) {
|
||||
return baseMapper.queryCuMemberRangeExtByParent(tableName, pkParent, orderDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberRangeExt> querySecondCuMemberRangeExtByParent(String tableName, String secondTableName, Long pkParent) {
|
||||
return baseMapper.querySecondCuMemberRangeExtByParent(tableName, secondTableName, pkParent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergeCuMemberRangeExt(String rangeTableName, List<CuMemberRangeExt> cuMemberRangeExtList) {
|
||||
List<List<?>> lists = cuMemberBonusSettle.handleCutList(cuMemberRangeExtList);
|
||||
for (List<?> list : lists) {
|
||||
baseMapper.mergeCuMemberRangeExt(rangeTableName, list);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergeSecondCuMemberRangeExt(String secondTableName, List<CuMemberRangeExt> cuMemberRangeExtList) {
|
||||
baseMapper.mergeSecondCuMemberRangeExt(secondTableName, cuMemberRangeExtList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer validateCuMemberPlaceAwards(String rangeTableName, List<CuMemberRangeExt> cuMemberRangeExtList, Integer pkRangeAwards, Date orderDate) {
|
||||
return baseMapper.validateCuMemberPlaceAwards(rangeTableName, cuMemberRangeExtList, pkRangeAwards, orderDate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer validateSecondCuMemberPlaceAwards(String secondTableName, List<CuMemberRangeExt> cuMemberRangeExtList, Integer pkRangeAwards) {
|
||||
return baseMapper.validateSecondCuMemberPlaceAwards(secondTableName, cuMemberRangeExtList, pkRangeAwards);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,38 +1,20 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
||||
import com.hzs.bonus.detail.service.ICuMemberAssessService;
|
||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
||||
import com.hzs.common.core.constant.CountryConstants;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.constant.msg.BonusMsgConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.core.utils.reflect.ReflectUtils;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberTree;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
|
||||
import com.hzs.common.domain.member.base.CuAwardsControl;
|
||||
import com.hzs.common.domain.member.bonus.*;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAssess;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
|
||||
import com.hzs.system.base.ICurrencyServiceApi;
|
||||
import com.hzs.system.base.dto.CurrencyDTO;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import com.hzs.system.config.dto.BonusExpandDTO;
|
||||
import com.hzs.system.config.dto.RangeDTO;
|
||||
import com.hzs.system.sys.dto.BdCurrencyDTO;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -42,116 +24,15 @@ import java.util.*;
|
|||
@Component
|
||||
public abstract class BonusSettleHandle {
|
||||
|
||||
@DubboReference
|
||||
ICurrencyServiceApi iCurrencyServiceApi;
|
||||
|
||||
@Autowired
|
||||
protected ICuMemberTreeService cuMemberTreeService;
|
||||
@Autowired
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
@Autowired
|
||||
private ICuMemberAssessService cuMemberAssessService;
|
||||
|
||||
public ICuMemberSettlePeriodService getCuMemberSettlePeriodService() {
|
||||
return cuMemberSettlePeriodService;
|
||||
}
|
||||
|
||||
public ICuMemberAssessService getCuMemberAssessService() {
|
||||
return cuMemberAssessService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取等级对应的拓展奖配置
|
||||
*
|
||||
* @param bonusConfigDTO 奖金参数汇总
|
||||
* @param memberSettleExt 会员
|
||||
*/
|
||||
protected BdGrade getGradeExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt) {
|
||||
return bonusConfigDTO.getGradeMap().get(memberSettleExt.getPkSettleCountry().toString() + "_" + memberSettleExt.getPkGrade());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取奖衔对应的辅导奖配置
|
||||
*
|
||||
* @param bonusConfigDTO 奖金参数汇总
|
||||
* @param memberSettleExt 会员
|
||||
*/
|
||||
protected BdAwards getAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
Integer pkAwards = getPkRealAwards(memberSettleExt.getPkMember(), memberSettleExt.getPkAwards(), cuAwardsControlMap);
|
||||
return bonusConfigDTO.getAwardsMap().get(memberSettleExt.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + pkAwards);
|
||||
}
|
||||
|
||||
private Integer getPkRealAwards(Long pkMember, Integer pkAwards, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
if (cuAwardsControlMap.containsKey(pkMember)) {
|
||||
if (cuAwardsControlMap.get(pkMember).getMentoringAward() != null) {
|
||||
pkAwards = cuAwardsControlMap.get(pkMember).getMentoringAward();
|
||||
}
|
||||
// int giveRealAwards = EAwards.MEMBER.getValue();
|
||||
// int pkControlAwards = EAwards.MANAGER.getEnable();
|
||||
// if(cuAwardsControlMap.get(pkMember).getRealAwards() != null) {
|
||||
// giveRealAwards = cuAwardsControlMap.get(pkMember).getRealAwards();
|
||||
// }
|
||||
// if(cuAwardsControlMap.get(pkMember).getMentoringAward() != null) {
|
||||
// pkControlAwards = cuAwardsControlMap.get(pkMember).getExtremeAwards();
|
||||
// }
|
||||
// if (pkAwards <= giveRealAwards && pkAwards < pkControlAwards) {
|
||||
// // 实际奖衔 <= 赠与奖衔时,用实际奖衔和集成奖衔取大的
|
||||
// pkAwards = pkControlAwards;
|
||||
// }
|
||||
}
|
||||
return pkAwards;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得国家对应的4-n参数比例
|
||||
*
|
||||
* @param bonusConfigDTO 奖金配置汇总
|
||||
* @param memberSettleExt 会员
|
||||
* @param endTouch 4-n的次数
|
||||
* @param bdGrade 等级
|
||||
*/
|
||||
protected BigDecimal getCountryExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Integer endTouch, BdGrade bdGrade,
|
||||
BigDecimal addTouch, BigDecimal editExpandRatio) {
|
||||
BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry());
|
||||
BigDecimal totalTouch = ComputeUtil.computeAdd(BigDecimal.valueOf(endTouch), addTouch);
|
||||
BigDecimal expandRatio = bonusExpand.getExpandRatio();
|
||||
if (memberSettleExt.getPkVertex() != null && memberSettleExt.getPkVertex().equals(377L)) {
|
||||
expandRatio = BigDecimal.valueOf(13);
|
||||
} else if (ComputeUtil.compareValue(editExpandRatio)) {
|
||||
expandRatio = editExpandRatio;
|
||||
}
|
||||
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, totalTouch);
|
||||
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getExpandRatio())) {
|
||||
return bdGrade.getExpandRatio();
|
||||
}
|
||||
return countryExpandRatio;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得国家对应的4-n参数比例
|
||||
*
|
||||
* @param bonusConfigDTO 奖金配置汇总
|
||||
* @param memberSettleExt 会员
|
||||
* @param endTouch 4-n的次数
|
||||
* @param bdGrade 等级
|
||||
*/
|
||||
protected BigDecimal getCountryRepurchaseExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Integer endTouch, BdGrade bdGrade, BigDecimal addTouch, BigDecimal editExpandRatio) {
|
||||
BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry());
|
||||
BigDecimal totalTouch = ComputeUtil.computeAdd(BigDecimal.valueOf(endTouch), addTouch);
|
||||
BigDecimal expandRatio = bonusExpand.getExpandRatio();
|
||||
if (memberSettleExt.getPkVertex() != null && memberSettleExt.getPkVertex().equals(377L)) {
|
||||
expandRatio = BigDecimal.valueOf(13);
|
||||
} else if (ComputeUtil.compareValue(editExpandRatio)) {
|
||||
expandRatio = editExpandRatio;
|
||||
}
|
||||
// 验证是否是爱美视团队
|
||||
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(expandRatio, BigDecimal.valueOf(endTouch));
|
||||
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) {
|
||||
return bdGrade.getRepurchaseRatio();
|
||||
}
|
||||
return countryExpandRatio;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得奖项主键,验证该国是否有该奖项
|
||||
*
|
||||
|
@ -177,334 +58,23 @@ public abstract class BonusSettleHandle {
|
|||
return bonusConfigDTO.getBonusItemsExtMap().get(pkCountry.toString() + bonusItems).getPkId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得有量奖的会员
|
||||
*
|
||||
* @param cuMemberBonusMap 奖金汇总表
|
||||
* @param cuMemberBonusExpandList 量奖明细
|
||||
*/
|
||||
protected Set<Long> getMemberExpandBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, List<CuMemberBonusExpand> cuMemberBonusExpandList) {
|
||||
Map<Long, CuMemberBonus> pkMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberBonusMap.size()));
|
||||
cuMemberBonusMap.forEach((key, cuMemberBonus) -> {
|
||||
// 判断 cuMemberSettleExtMap中这个人是否是免考,免考的不查询考核是否通过,过滤数据
|
||||
pkMemberSettleMap.put(cuMemberBonus.getPkId(), cuMemberBonus);
|
||||
});
|
||||
Set<Long> expandMemberSet = new HashSet<>();
|
||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
|
||||
// 只查询有量奖的人的考核记录, 国内没有领导奖
|
||||
if (!cuMemberBonusExpand.getPkCountry().equals(CountryConstants.CHINA_COUNTRY) && pkMemberSettleMap.containsKey(cuMemberBonusExpand.getPkBonus())) {
|
||||
expandMemberSet.add(pkMemberSettleMap.get(cuMemberBonusExpand.getPkBonus()).getPkMember());
|
||||
}
|
||||
});
|
||||
return expandMemberSet;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得有量奖的会员
|
||||
*
|
||||
* @param cuMemberSettleExtMap 奖金汇总表
|
||||
*/
|
||||
protected Map<Long, CuMemberSettleExt> getMemberExpandBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
Map<Long, CuMemberSettleExt> pkMemberSettleMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberSettleExtMap.size()));
|
||||
cuMemberSettleExtMap.forEach((key, cuMemberSettleExt) ->
|
||||
pkMemberSettleMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt));
|
||||
return pkMemberSettleMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录需要修改的会员结算表数据, 安置的
|
||||
*
|
||||
* @param cuMemberSettleExtMap 会员结算
|
||||
* @param cuMemberSettleExtList 查询出来的结算数据
|
||||
*/
|
||||
protected void getMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
|
||||
if (cuMemberSettleExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
|
||||
CuMemberSettleExt memberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkMember());
|
||||
if (memberSettleExt.getPkParent() == null) {
|
||||
memberSettleExt.setPkParent(cuMemberSettleExt.getPkParent());
|
||||
}
|
||||
if (memberSettleExt.getPkPlaceParent() == null) {
|
||||
memberSettleExt.setPkPlaceParent(cuMemberSettleExt.getPkPlaceParent());
|
||||
}
|
||||
if (memberSettleExt.getPlaceDept() == null) {
|
||||
memberSettleExt.setPlaceDept(cuMemberSettleExt.getPlaceDept());
|
||||
}
|
||||
if (memberSettleExt.getPkGrade() == null) {
|
||||
memberSettleExt.setPkGrade(cuMemberSettleExt.getPkGrade());
|
||||
}
|
||||
if (memberSettleExt.getGradeValue() == null) {
|
||||
memberSettleExt.setGradeValue(cuMemberSettleExt.getGradeValue());
|
||||
}
|
||||
if (memberSettleExt.getPkAwards() == null) {
|
||||
memberSettleExt.setPkAwards(cuMemberSettleExt.getPkAwards());
|
||||
}
|
||||
if (memberSettleExt.getRegisterAuthority() == null) {
|
||||
memberSettleExt.setRegisterAuthority(cuMemberSettleExt.getRegisterAuthority());
|
||||
}
|
||||
if (memberSettleExt.getCustomerType() == null) {
|
||||
memberSettleExt.setCustomerType(cuMemberSettleExt.getCustomerType());
|
||||
}
|
||||
if (memberSettleExt.getIsMakerSpace() == null) {
|
||||
memberSettleExt.setIsMakerSpace(cuMemberSettleExt.getIsMakerSpace());
|
||||
}
|
||||
if (memberSettleExt.getIsMakerGift() == null) {
|
||||
memberSettleExt.setIsMakerGift(cuMemberSettleExt.getIsMakerGift());
|
||||
}
|
||||
if (memberSettleExt.getPkVertex() == null) {
|
||||
memberSettleExt.setPkVertex(cuMemberSettleExt.getPkVertex());
|
||||
}
|
||||
} else {
|
||||
cuMemberSettleExt.setANewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setANewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setBNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setBNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepANewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepBNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepANewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepBNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRegisterNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRegisterNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setUpgradeNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setUpgradeNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepurchaseNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepurchaseNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setHiFunNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setHiFunNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setMallNewAmount(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setMallNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRegisterBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setUpgradeBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setRepurchaseBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setHiFunBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExt.setMallBloNewPv(BigDecimal.ZERO);
|
||||
cuMemberSettleExtMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 直推收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusPush 直推奖
|
||||
* @param cuMemberSettleExtMap 存储会员网体的map
|
||||
*/
|
||||
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
CuMemberSettleExt targetCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
String remark;
|
||||
if (cuMemberBonusPush.getSecond() == 0) {
|
||||
remark = String.format(BonusMsgConstants.RECOMMEND_DIRECT, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getRealIncome());
|
||||
} else {
|
||||
remark = String.format(BonusMsgConstants.RECOMMEND, cuMemberBonusPush.getRound() + 1, cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue());
|
||||
}
|
||||
cuMemberBonusPush.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 直推收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusPush 直推奖
|
||||
* @param cuMemberRangeExtMap 存储会员网体的map
|
||||
*/
|
||||
protected void recommendRangeRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberRangeExt> cuMemberRangeExtMap, CuMemberRangeExt targetCuMemberRangeExt) {
|
||||
CuMemberRangeExt sourceCuMemberRangeExt = cuMemberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
String remark = String.format(BonusMsgConstants.RANGE_RECOMMEND, cuMemberBonusPush.getRound(), cuMemberBonusPush.getSecond(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberRangeExt.getMemberCode() + sourceCuMemberRangeExt.getMemberName(),
|
||||
targetCuMemberRangeExt.getMemberCode() + targetCuMemberRangeExt.getMemberName(),
|
||||
cuMemberBonusPush.getCalAchieve());
|
||||
cuMemberBonusPush.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 拓展收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusExpand 拓展奖
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
*/
|
||||
protected void expandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue());
|
||||
cuMemberBonusExpand.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 拓展收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusPush 拓展奖
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
*/
|
||||
protected void repurchasePushRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt, String msg) {
|
||||
String remark = String.format(msg, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue());
|
||||
cuMemberBonusPush.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 拓展收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusExpand 拓展奖
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
*/
|
||||
protected void repurchaseExpandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.REPURCHASE_EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue());
|
||||
cuMemberBonusExpand.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 辅导收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusCoach 辅导奖
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* @param saOrder 订单编号
|
||||
* @param cuMemberBonusCoach 培育津贴
|
||||
* @param sourceCuMemberRetailExt 提供奖金的人
|
||||
* @param targetCuMemberRetailExt 获得奖金的人
|
||||
*/
|
||||
protected void coachRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.COACH, cuMemberBonusCoach.getCurrentGeneration(), saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
protected void retailCoachRemark(SaOrder saOrder, CuMemberBonusCoach cuMemberBonusCoach,
|
||||
CuMemberRetailRangeExt sourceCuMemberRetailExt, CuMemberRetailRangeExt targetCuMemberRetailExt) {
|
||||
String remark = String.format(BonusMsgConstants.RETAIL_COACH, cuMemberBonusCoach.getCurrentGeneration(), saOrder.getOrderCode(),
|
||||
sourceCuMemberRetailExt.getMemberCode() + sourceCuMemberRetailExt.getMemberName(),
|
||||
targetCuMemberRetailExt.getMemberCode() + targetCuMemberRetailExt.getMemberName(),
|
||||
cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue());
|
||||
cuMemberBonusCoach.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusCoach 辅导奖
|
||||
* @param sourceMemberRangeExt 提供奖金的人
|
||||
* @param targetMemberRangeExt 获得奖金的人
|
||||
* 获得 辅导收益的备注
|
||||
*/
|
||||
protected void coachRangeRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
|
||||
CuMemberRangeExt sourceMemberRangeExt, CuMemberRangeExt targetMemberRangeExt) {
|
||||
String remark = String.format(BonusMsgConstants.RANGE_COACH, cuMemberBonusCoach.getCurrentGeneration(), cuMemberBonusCoach.getCoachGeneration(),
|
||||
saOrderExt.getOrderCode(),
|
||||
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
|
||||
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
|
||||
cuMemberBonusCoach.getCalAchieve(), cuMemberBonusCoach.getCalValue());
|
||||
cuMemberBonusCoach.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusDetail 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* 获得 报单服务费收益的备注
|
||||
*/
|
||||
protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.SERVICE, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
|
||||
cuMemberBonusDetail.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusDetail 报单服务费
|
||||
* @param sourceCuMemberRangeExt 提供奖金的人
|
||||
* @param targetCuMemberRangeExt 获得奖金的人
|
||||
* 获得 报单服务费收益的备注
|
||||
*/
|
||||
protected void rangeServiceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
||||
CuMemberRangeExt sourceCuMemberRangeExt, CuMemberRangeExt targetCuMemberRangeExt) {
|
||||
String remark = String.format(BonusMsgConstants.RANGE_SERVICE, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberRangeExt.getMemberCode() + sourceCuMemberRangeExt.getMemberName(),
|
||||
targetCuMemberRangeExt.getMemberCode() + targetCuMemberRangeExt.getMemberName(),
|
||||
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
|
||||
cuMemberBonusDetail.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 报单服务费收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusDetail 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
*/
|
||||
protected void haiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.HAI_FUN, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusDetail.getPretaxIncome());
|
||||
cuMemberBonusDetail.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 嗨粉推荐的收益
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusDetail 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
*/
|
||||
protected void hiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
|
||||
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.HI_FUN, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusDetail.getRealIncome());
|
||||
cuMemberBonusDetail.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 分红收益的备注
|
||||
*
|
||||
* @param cuMemberBonusDetail 分红
|
||||
* @param settleDate 结算日期
|
||||
*/
|
||||
protected void shareRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) {
|
||||
String remark = String.format(BonusMsgConstants.SHARE, DateUtils.getMonth(settleDate),
|
||||
cuMemberBonusDetail.getPretaxIncome());
|
||||
cuMemberBonusDetail.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusRange 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* 获得 报单服务费收益的备注
|
||||
*/
|
||||
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||
CuMemberSettleExt targetCuMemberSettleExt, Map<String, RangeDTO> rangePkDtoMap) {
|
||||
RangeDTO beforeOrderRangeDto = rangePkDtoMap.get(targetCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkBeforeRange());
|
||||
RangeDTO orderRangeDto = rangePkDtoMap.get(sourceCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkRange());
|
||||
String remark = String.format(BonusMsgConstants.SHARE_RANGE, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusRange.getCalAchieve(), beforeOrderRangeDto == null ? "" : beforeOrderRangeDto.getRangeName(), orderRangeDto == null ? "" : orderRangeDto.getRangeName());
|
||||
cuMemberBonusRange.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 直推级差收益的备注
|
||||
*
|
||||
|
@ -548,7 +118,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param targetMemberRangeExt 获得奖金的人
|
||||
*/
|
||||
protected void rangeMonthRepurchaseRetailRemark(SaOrder saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt,
|
||||
CuMemberRetailRangeExt targetMemberRangeExt) {
|
||||
CuMemberRetailRangeExt targetMemberRangeExt) {
|
||||
String remark = String.format(BonusMsgConstants.RETAIL_MONTH_REPURCHASE_INCOME, saOrderExt.getOrderCode(),
|
||||
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
|
||||
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
|
||||
|
@ -573,76 +143,6 @@ public abstract class BonusSettleHandle {
|
|||
cuMemberBonusRange.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 报单服务费收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusRange 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
*/
|
||||
protected void xueRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||
CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.LE_XUE_SHARE_RANGE, saOrderExt.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
ComputeUtil.computeDivide(targetCuMemberSettleExt.getRetailPrice(), BigDecimal.ONE), targetCuMemberSettleExt.getGradeValue());
|
||||
cuMemberBonusRange.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrder 订单编号
|
||||
* @param cuMemberBonusDetail 云代首购
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* 获得 报单服务费收益的备注
|
||||
*/
|
||||
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
|
||||
CuMemberSettleExt targetCuMemberSettleExt) {
|
||||
String remark = String.format(BonusMsgConstants.REPURCHASE_COUPON_RANGE, saOrder.getOrderCode(),
|
||||
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
|
||||
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
|
||||
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue(), cuMemberBonusDetail.getRealIncome());
|
||||
cuMemberBonusDetail.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员列表的考核结果
|
||||
*
|
||||
* @param settleDateStr 结算日期
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
*/
|
||||
protected Map<Long, CuMemberAssess> getLongCuMemberAssessMap(String settleDateStr, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
if (cuMemberSettleExtList.size() == 0) {
|
||||
return new HashMap<>(0);
|
||||
}
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
// 获取结算日期的第一天的日期
|
||||
Integer assessPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.currentMonthFirstDateStr(settleDate)).getPkId();
|
||||
String assessTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(settleDateStr);
|
||||
return cuMemberAssessService.queryCuMemberAssessByMember(assessTableName, assessPeriod, EAssessmentType.REPURCHASE_ASSESS.getValue(), cuMemberSettleExtList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员奖金汇总表
|
||||
*
|
||||
* @param period 期间
|
||||
* @param cuMemberBonusMap 奖金汇总map
|
||||
* @param saOrder 汇率
|
||||
* @param cuMemberSettleExt 获取奖金的会员
|
||||
* @return CuMemberBonus
|
||||
*/
|
||||
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrder saOrder,
|
||||
CuMemberSettleExt cuMemberSettleExt) {
|
||||
Integer pkRate = saOrder.getPkRate();
|
||||
if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) {
|
||||
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData();
|
||||
pkRate = currencyDTO.getPkId();
|
||||
}
|
||||
return getCuMemberBonus(period, cuMemberBonusMap, cuMemberSettleExt.getPkMember(), cuMemberSettleExt.getIncomeStatus(),
|
||||
cuMemberSettleExt.getPkSettleCountry(), pkRate);
|
||||
}
|
||||
|
||||
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) {
|
||||
if (cuMemberBonusMap.containsKey(pkMember)) {
|
||||
|
@ -702,162 +202,6 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
protected CuMemberBonusExpand getCuMemberBonusExpand(SaOrderExt saOrderExt, int touchNum, int i, CuMemberSettleExt targetMemberSettleExt, BigDecimal countryExpandRatio, CuMemberBonus cuMemberBonus, BigDecimal calAchieve,
|
||||
Integer pkBonusItems, BigDecimal addTouch) {
|
||||
CuMemberBonusExpand cuMemberBonusExpand = CuMemberBonusExpand.builder()
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonusItems(pkBonusItems)
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.incomeStatus(targetMemberSettleExt.getIncomeStatus())
|
||||
.currentTouch(i)
|
||||
.expandTouch(touchNum)
|
||||
.addTouch(addTouch)
|
||||
.calValue(countryExpandRatio)
|
||||
.calAchieve(calAchieve)
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberBonusExpand.setPkCountry(targetMemberSettleExt.getPkSettleCountry());
|
||||
cuMemberBonusExpand.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
if (EAccountStatus.STOP_PROFIT.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.STOP_INCOME.getValue());
|
||||
}
|
||||
if (EExpireStatus.TERMINATED.getValue() == targetMemberSettleExt.getExpireStatus()) {
|
||||
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
return cuMemberBonusExpand;
|
||||
}
|
||||
|
||||
protected void packageCuMemberBonusExpand(CuMemberBonusExpand cuMemberBonusExpand, CuMemberBonus cuMemberBonus,
|
||||
BigDecimal expandCapping, BigDecimal income, BigDecimal actualIncome) {
|
||||
cuMemberBonusExpand.setExpandNoCapping(income);
|
||||
cuMemberBonusExpand.setExpandCapping(income);
|
||||
BigDecimal expandIncome = ComputeUtil.computeAdd(cuMemberBonus.getExpandCapping(), income);
|
||||
if (ComputeUtil.compareValue(expandIncome, expandCapping)) {
|
||||
cuMemberBonusExpand.setExpandCapping(ComputeUtil.computeSubtractAbs(cuMemberBonus.getExpandCapping(), income));
|
||||
cuMemberBonus.setExpandCapping(expandCapping);
|
||||
} else {
|
||||
cuMemberBonus.setExpandCapping(expandIncome);
|
||||
}
|
||||
cuMemberBonusExpand.setPretaxIncome(actualIncome);
|
||||
cuMemberBonusExpand.setExpandNormalHalf(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getExpandCapping()));
|
||||
cuMemberBonusExpand.setExpandNormalReal(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getPretaxIncome()));
|
||||
}
|
||||
|
||||
protected void packageCuMemberBonusRepurchaseExpand(CuMemberBonusExpand cuMemberBonusExpand, CuMemberBonus cuMemberBonus,
|
||||
BigDecimal expandCapping, BigDecimal income, BigDecimal actualIncome) {
|
||||
cuMemberBonusExpand.setExpandNoCapping(income);
|
||||
cuMemberBonusExpand.setExpandCapping(income);
|
||||
BigDecimal expandIncome = ComputeUtil.computeAdd(cuMemberBonus.getExpandCapping(), income);
|
||||
if (ComputeUtil.compareValue(expandIncome, expandCapping)) {
|
||||
cuMemberBonusExpand.setExpandCapping(ComputeUtil.computeSubtractAbs(cuMemberBonus.getExpandCapping(), income));
|
||||
}
|
||||
cuMemberBonusExpand.setPretaxIncome(actualIncome);
|
||||
cuMemberBonusExpand.setExpandNormalHalf(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getExpandCapping()));
|
||||
cuMemberBonusExpand.setExpandNormalReal(ComputeUtil.computeMultiplyHalf(cuMemberBonusExpand.getPretaxIncome()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param cuMemberSettleExtMap 树关系
|
||||
* @param settleTableName 结算表
|
||||
* @param saOrderList 订单
|
||||
* 根据订单获取会员的血缘父级,用于嗨粉推荐、复购极差
|
||||
*/
|
||||
protected List<CuMemberSettleExt> getMemberParentBySaOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, List<SaOrderExt> saOrderList) {
|
||||
Set<Long> memberSet = new HashSet<>();
|
||||
saOrderList.forEach(saOrderExt -> memberSet.add(saOrderExt.getPkMember()));
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.batchQueryCuMemberSettleParent(settleTableName, memberSet);
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
return cuMemberSettleExtList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param awardsMap 奖衔
|
||||
* @param parentMemberTree 会员树历史记录
|
||||
* 获取会员的极差等级,验证会员是否有奖衔
|
||||
*/
|
||||
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
|
||||
String key = parentMemberTree.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + pkAwards;
|
||||
String awardKey = parentMemberTree.getPkSettleCountry() + parentMemberTree.getPkAwards().toString();
|
||||
if (awardsMap.get(awardKey) != null && EAwards.MEMBER.getValue() == awardsMap.get(awardKey).getAwardsValue()) {
|
||||
key = parentMemberTree.getPkSettleCountry().toString() + ERangeType.GRADE.getValue() + parentMemberTree.getPkGrade();
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
protected RangeDTO getRangeDto(Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
String key = getMemberCountryKey(awardsMap, parentMemberTree, cuAwardsControlMap);
|
||||
return rangeDtoMap.get(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param awardsMap 奖衔
|
||||
* @param parentMemberTree 会员树历史记录
|
||||
* 获取会员的极差等级,验证会员是否有奖衔
|
||||
*/
|
||||
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
|
||||
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();
|
||||
String awardKey = parentMemberTree.getPkSettleCountry().toString() + parentMemberTree.getPkAwards().toString();
|
||||
if (EAwards.MEMBER.getValue() == awardsMap.get(awardKey).getAwardsValue()) {
|
||||
key = Integer.toString(ERangeType.GRADE.getValue()) + parentMemberTree.getPkGrade();
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益
|
||||
*
|
||||
* @param saOrderExt 订单
|
||||
* @param targetMemberSettleExt 奖金网体
|
||||
* @param cuMemberBonus 奖金主表
|
||||
*/
|
||||
protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) {
|
||||
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.incomeStatus(targetMemberSettleExt.getIncomeStatus())
|
||||
.calAchieve(saOrderExt.getOrderAchieve())
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberBonusDetail.setPkCountry(targetMemberSettleExt.getPkSettleCountry());
|
||||
cuMemberBonusDetail.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
if (EExpireStatus.TERMINATED.getValue() == targetMemberSettleExt.getExpireStatus()) {
|
||||
cuMemberBonusDetail.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得需要查询的会员,免考通过的不需要查询考核记录
|
||||
*
|
||||
* @param cuMemberSettleExtMap 存储目前有的会员数据
|
||||
* @param cuMemberSettleExtList 需要查询的会员数据
|
||||
*/
|
||||
protected List<CuMemberSettleExt> getQueryMemberSettleExtList(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
// 过滤数据,免考的会员不进行查询
|
||||
List<CuMemberSettleExt> queryMemberList = new ArrayList<>();
|
||||
cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
|
||||
CuMemberSettleExt memberSettleExt = cuMemberSettleExtMap.get(cuMemberSettleExt.getPkMember());
|
||||
// 免考的不查询
|
||||
if (memberSettleExt == null || EYesNo.NO.getIntValue() == memberSettleExt.getPurchaseStatus()) {
|
||||
queryMemberList.add(cuMemberSettleExt);
|
||||
}
|
||||
});
|
||||
return queryMemberList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置奖金扣项,计算税前收益,扣税,实际收益, 设置主表
|
||||
*
|
||||
|
@ -876,36 +220,6 @@ public abstract class BonusSettleHandle {
|
|||
cuMemberBonus.setServiceSpend(ComputeUtil.computeAdd(cuMemberBonus.getServiceSpend(), ComputeUtil.computeBonusMultiply(pretaxIncome, platformRatio)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 首购计算 扣项,小计,总计
|
||||
*/
|
||||
protected void setFirstPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setPurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getPurRealSubtotal(), realIncome));
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
|
||||
/**
|
||||
* 复购计算 扣项,小计,总计
|
||||
*/
|
||||
protected void setPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setRepurRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurRealSubtotal(), realIncome));
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
|
||||
/**
|
||||
* 云代计算 扣项,小计,总计
|
||||
*/
|
||||
protected void setCloudTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setCloudRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getCloudRealSubtotal(), realIncome));
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
|
||||
/**
|
||||
* 扣项,小计,总计
|
||||
*/
|
||||
|
@ -916,15 +230,6 @@ public abstract class BonusSettleHandle {
|
|||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
|
||||
/**
|
||||
* 扣项,小计,总计
|
||||
*/
|
||||
protected void setRepurchaseCouponTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setRepurCouponSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getRepurCouponSubtotal(), realIncome));
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置奖金扣项,计算税前收益,扣税,实际收益, 设置明细表
|
||||
*
|
||||
|
@ -948,79 +253,4 @@ public abstract class BonusSettleHandle {
|
|||
return bdBonusDeduct;
|
||||
}
|
||||
|
||||
|
||||
protected void setCuMemberAchieve(SaOrderExt saOrderExt, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO) {
|
||||
CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()) {
|
||||
cuMemberSettleExt.setRegisterAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
cuMemberSettleExt.setRegisterPv(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterPv(), saOrderExt.getOrderAchieve()));
|
||||
cuMemberSettleExt.setRegisterNewAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
cuMemberSettleExt.setRegisterNewPv(ComputeUtil.computeAdd(cuMemberSettleExt.getRegisterNewPv(), saOrderExt.getOrderAchieve()));
|
||||
} else {
|
||||
cuMemberSettleExt.setUpgradeAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradeAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
cuMemberSettleExt.setUpgradePv(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradePv(), saOrderExt.getOrderAchieve()));
|
||||
cuMemberSettleExt.setUpgradeNewAmount(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradeNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
cuMemberSettleExt.setUpgradeNewPv(ComputeUtil.computeAdd(cuMemberSettleExt.getUpgradeNewPv(), saOrderExt.getOrderAchieve()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单分类,分为首购、复购、真实,获取新增业绩
|
||||
*
|
||||
* @param orderExtList 订单列表
|
||||
*/
|
||||
public void assortSaOrder(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, List<SaOrderExt> orderExtList, BonusConfigDTO bonusConfigDTO, Boolean isFirst) {
|
||||
// 注册+升级+云代注册+云代升级 首购 除(注册+升级)其他 复购 首购+复购 = 真实
|
||||
for (SaOrderExt saOrderExt : orderExtList) {
|
||||
MemberAchieveParam cuMemberAchieve;
|
||||
if (cuMemberAchieveHashMap.containsKey(saOrderExt.getPkMember())) {
|
||||
cuMemberAchieve = cuMemberAchieveHashMap.get(saOrderExt.getPkMember());
|
||||
// 所有的都算真实业绩
|
||||
} else {
|
||||
cuMemberAchieve = MemberAchieveParam.builder()
|
||||
.pkRate(saOrderExt.getPkRate())
|
||||
.pkMember(saOrderExt.getPkMember())
|
||||
.newAmount(BigDecimal.ZERO)
|
||||
.newPv(BigDecimal.ZERO)
|
||||
.repNewAmount(BigDecimal.ZERO)
|
||||
.repNewPv(BigDecimal.ZERO)
|
||||
.newRealAmount(BigDecimal.ZERO)
|
||||
.newRealPv(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve);
|
||||
}
|
||||
if (isFirst) {
|
||||
cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount()));
|
||||
cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve()));
|
||||
} else {
|
||||
cuMemberAchieve.setRepNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewAmount(), saOrderExt.getOrderAmount()));
|
||||
cuMemberAchieve.setRepNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getRepNewPv(), saOrderExt.getOrderAchieve()));
|
||||
}
|
||||
cuMemberAchieve.setNewRealAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealAmount(), saOrderExt.getOrderAmount()));
|
||||
cuMemberAchieve.setNewRealPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewRealPv(), saOrderExt.getOrderAchieve()));
|
||||
}
|
||||
}
|
||||
|
||||
protected BigDecimal convertLocalCurrency(SaOrder saOrderExt, BonusConfigDTO bonusConfigDTO) {
|
||||
Map<String, BdCurrencyDTO> currencyDtoMap = bonusConfigDTO.getCurrencyDtoMap();
|
||||
String key = saOrderExt.getPkCountry().toString() + saOrderExt.getPkRate();
|
||||
BigDecimal orderAmount = BigDecimal.ZERO;
|
||||
if (currencyDtoMap.containsKey(key)) {
|
||||
orderAmount = ComputeUtil.computeDivide(saOrderExt.getOrderAmount(), currencyDtoMap.get(key).getOutExchangeRate());
|
||||
}
|
||||
return orderAmount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据会员主键列表获得会员只
|
||||
*/
|
||||
protected Map<Long, CuMemberAssess> packageMemberSettleByPkMemberSet(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleDate, String settleTableName, Set<Long> memberSet) {
|
||||
if (memberSet.size() > 0) {
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(settleTableName, memberSet);
|
||||
// 初始化父类网体的值
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
return getLongCuMemberAssessMap(settleDate, cuMemberSettleExtList);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,351 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.core.utils.reflect.ReflectUtils;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.base.CuAwardsControl;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonus;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDetail;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import com.hzs.system.config.dto.BonusHiPinkDTO;
|
||||
import com.hzs.system.config.dto.RangeDTO;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Description: 计算嗨粉订单
|
||||
* @Author: sui q
|
||||
* @Time: 2023/1/4 13:38
|
||||
* @Classname: BonusSettleHiFunHandle
|
||||
* @PackageName: com.hzs.member.bonus.service.impl
|
||||
*/
|
||||
@Component
|
||||
public class BonusSettleHiFunHandle extends BonusSettleHandle {
|
||||
|
||||
/**
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param hiFunSaOrderList 复购订单
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算嗨粉奖金
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/10 14:17
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateHiFunPushBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap,
|
||||
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> hiFunSaOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
// 根据订单明细开始计算奖金,计算嗨粉推荐奖
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// cuMemberSettleExtMap 需要含自己
|
||||
getMemberParentBySaOrder(cuMemberSettleExtMap, settleTableName, hiFunSaOrderList);
|
||||
// 原来413嗨粉推荐海粉极差收益
|
||||
hiFunSaOrderList.forEach(saOrderExt -> {
|
||||
List<CuMemberBonusDetail> bonusDetailList = calculateHiFunPushBonusOne(cuMemberSettleExtMap, rangeDtoMap, awardsMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt, cuAwardsControlMap);
|
||||
if (bonusDetailList.size() > 0) {
|
||||
cuMemberBonusDetailList.addAll(bonusDetailList);
|
||||
}
|
||||
});
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param settleTableName 结算表
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param haiFunOrderList 订单列表
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算报单服务费
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 14:14
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateHaiFunBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, BonusConfigDTO bonusConfigDTO,
|
||||
List<SaOrderExt> haiFunOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// 先过滤数据,验证报单人是否在网体列表中,不在需要从数据库中查询
|
||||
Set<Long> haiFunMemberSet = new HashSet<>();
|
||||
haiFunOrderList.forEach(saOrderExt -> {
|
||||
CuMemberSettleExt cuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (cuMemberSettleExt == null || cuMemberSettleExtMap.get(cuMemberSettleExt.getPkParent()) == null) {
|
||||
haiFunMemberSet.add(saOrderExt.getPkMember());
|
||||
}
|
||||
});
|
||||
if (haiFunMemberSet.size() > 0) {
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleParentByMemberPk(settleTableName, haiFunMemberSet);
|
||||
// 初始化父类网体的值
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
}
|
||||
// 计算海粉推荐
|
||||
for (SaOrderExt saOrderExt : haiFunOrderList) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetails = calculateHaiFunBonusOne(cuMemberSettleExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt);
|
||||
if (cuMemberBonusDetails.size() > 0) {
|
||||
cuMemberBonusDetailList.addAll(cuMemberBonusDetails);
|
||||
}
|
||||
}
|
||||
// 查询会员
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 计算海粉推荐奖
|
||||
* @return: CuMemberBonusDetail
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:22
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateHaiFunBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(sourceMemberSettleExt.getPkParent());
|
||||
if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
// 验证是否有奖金
|
||||
// if (validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HAI_DOU_INCOME.getValue())) {
|
||||
// return cuMemberBonusDetailList;
|
||||
// }
|
||||
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
// 海粉直推奖金明细
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(BigDecimal.ZERO);
|
||||
// cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HAI_DOU_INCOME.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(saOrderItemsExt.getShareAchieve());
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
haiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setHaiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHaiFunIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
}
|
||||
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算嗨粉奖金,嗨粉推荐,嗨粉极差
|
||||
* @return: List<CuMemberBonusDetail>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/9 10:25
|
||||
*/
|
||||
protected List<CuMemberBonusDetail> calculateHiFunPushBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
BigDecimal waresNum = ComputeUtil.computeDivide(saOrderExt.getOrderAmount(), BigDecimal.valueOf(413));
|
||||
sourceMemberSettleExt.setHiFunAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunPv(), saOrderExt.getOrderAchieve()));
|
||||
sourceMemberSettleExt.setHiFunNewAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunNewPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewPv(), saOrderExt.getOrderAchieve()));
|
||||
Map<Integer, List<BonusHiPinkDTO>> bonusHiPinkDtoMap = bonusConfigDTO.getBonusHiPinkDtoMap();
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
// 找到最大的奖金
|
||||
BigDecimal maxBonusValue = BigDecimal.ZERO;
|
||||
List<BonusHiPinkDTO> bonusHiPinkDTOList = bonusHiPinkDtoMap.get(saOrderExt.getPkCountry());
|
||||
for (BonusHiPinkDTO bonusHiPinkDTO : bonusHiPinkDTOList) {
|
||||
if (ComputeUtil.compareGreaterThan(bonusHiPinkDTO.getBonusValue(), maxBonusValue)) {
|
||||
maxBonusValue = bonusHiPinkDTO.getBonusValue();
|
||||
}
|
||||
}
|
||||
BigDecimal income = BigDecimal.ZERO;
|
||||
boolean flag = false;
|
||||
int i = 0;
|
||||
while (targetMemberSettleExt != null && targetMemberSettleExt.getPkParent() != 0) {
|
||||
// 嗨粉直推奖励的配置,从第一级开始获取
|
||||
BonusHiPinkDTO startBonusHiPinkDto = bonusHiPinkDTOList.get(i);
|
||||
targetMemberSettleExt = getCuMemberTree(cuMemberSettleExtMap, rangeDtoMap, awardsMap, targetMemberSettleExt, startBonusHiPinkDto, cuAwardsControlMap);
|
||||
if (targetMemberSettleExt == null) {
|
||||
break;
|
||||
}
|
||||
String key = getMemberKey(awardsMap, targetMemberSettleExt);
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())) {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
continue;
|
||||
}
|
||||
for (int x = i; x < bonusHiPinkDTOList.size(); x++) {
|
||||
BonusHiPinkDTO bonusHiPinkDTO = bonusHiPinkDTOList.get(x);
|
||||
String hiKey = bonusHiPinkDTO.getRangeType().toString() + bonusHiPinkDTO.getPkLevel();
|
||||
if (key.equals(hiKey)) {
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
BigDecimal bonusIncome = ComputeUtil.computeSubtract(bonusHiPinkDTO.getBonusValue(), income);
|
||||
bonusIncome = ComputeUtil.computeMultiply(bonusIncome, waresNum);
|
||||
if (ComputeUtil.compareValue(BigDecimal.ZERO, bonusIncome)) {
|
||||
// flag = true;
|
||||
break;
|
||||
}
|
||||
// 直推奖金明细
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue()));
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bonusHiPinkDTO.getBonusValue());
|
||||
cuMemberBonusDetail.setPretaxIncome(bonusIncome);
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
hiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setHiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHiFunIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), cuMemberBonusDetail.getRealIncome()));
|
||||
}
|
||||
income = bonusHiPinkDTO.getBonusValue();
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
if (ComputeUtil.compareEqual(maxBonusValue, bonusHiPinkDTO.getBonusValue())) {
|
||||
flag = true;
|
||||
}
|
||||
if (x < bonusHiPinkDTOList.size() - 1) {
|
||||
i = x + 1;
|
||||
} else {
|
||||
flag = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
if (flag) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算嗨粉奖金,嗨粉推荐,嗨粉极差
|
||||
* @return: List<CuMemberBonusDetail>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/9 10:25
|
||||
*/
|
||||
protected List<CuMemberBonusDetail> calculateNewHiFunPushBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, Map<String, RangeDTO> rangeDtoMap, Map<String, BdAwards> awardsMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
sourceMemberSettleExt.setHiFunAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunPv(), saOrderExt.getOrderAchieve()));
|
||||
sourceMemberSettleExt.setHiFunNewAmount(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
|
||||
sourceMemberSettleExt.setHiFunNewPv(ComputeUtil.computeAdd(sourceMemberSettleExt.getHiFunNewPv(), saOrderExt.getOrderAchieve()));
|
||||
// Map<Integer, List<BonusHiPinkDTO>> bonusHiPinkDtoMap = bonusConfigDTO.getBonusHiPinkDtoMap();
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
// 找到最大的奖金
|
||||
// BigDecimal maxBonusValue = BigDecimal.ZERO;
|
||||
BigDecimal maxBonusValue = BigDecimal.valueOf(187.5);
|
||||
BigDecimal grantBonusValue = BigDecimal.ZERO;
|
||||
// List<BonusHiPinkDTO> bonusHiPinkDTOList = bonusHiPinkDtoMap.get(saOrderExt.getPkCountry());
|
||||
// for (BonusHiPinkDTO bonusHiPinkDTO : bonusHiPinkDTOList) {
|
||||
// if (ComputeUtil.compareGreaterThan(bonusHiPinkDTO.getBonusValue(), maxBonusValue)) {
|
||||
// maxBonusValue = bonusHiPinkDTO.getBonusValue();
|
||||
// }
|
||||
// }
|
||||
// BigDecimal income = BigDecimal.ZERO;
|
||||
Integer gradeValue = EGrade.YOU_KE.getValue();
|
||||
while (targetMemberSettleExt != null && targetMemberSettleExt.getPkParent() != 0) {
|
||||
// 嗨粉直推奖励的配置,从第一级开始获取
|
||||
targetMemberSettleExt = getCuMemberTree(cuMemberSettleExtMap, targetMemberSettleExt, gradeValue);
|
||||
if (targetMemberSettleExt == null) {
|
||||
break;
|
||||
}
|
||||
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue())) {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
continue;
|
||||
}
|
||||
BigDecimal memberMaxBonusValue = BigDecimal.ZERO;
|
||||
if (targetMemberSettleExt.getGradeValue() == EGrade.YOU_KE.getValue() || targetMemberSettleExt.getGradeValue() == EGrade.MAKER.getValue()) {
|
||||
memberMaxBonusValue = BigDecimal.valueOf(125);
|
||||
} else if (targetMemberSettleExt.getGradeValue() == EGrade.VIP.getValue()) {
|
||||
memberMaxBonusValue = BigDecimal.valueOf(156.25);
|
||||
} else if (targetMemberSettleExt.getGradeValue() == EGrade.S_VIP.getValue()) {
|
||||
memberMaxBonusValue = BigDecimal.valueOf(187.5);
|
||||
}
|
||||
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
BigDecimal bonusIncome = ComputeUtil.computeSubtract(memberMaxBonusValue, grantBonusValue);
|
||||
if (ComputeUtil.compareValue(BigDecimal.ZERO, bonusIncome)) {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
continue;
|
||||
}
|
||||
// 直推奖金明细
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.HI_PINK.getValue()));
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(BigDecimal.ZERO);
|
||||
cuMemberBonusDetail.setPretaxIncome(bonusIncome);
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
hiFunRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setHiFunIncome(ComputeUtil.computeAdd(cuMemberBonus.getHiFunIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), cuMemberBonusDetail.getRealIncome()));
|
||||
}
|
||||
grantBonusValue = ComputeUtil.computeAdd(grantBonusValue, bonusIncome);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
if (ComputeUtil.compareEqual(maxBonusValue, grantBonusValue)) {
|
||||
break;
|
||||
} else {
|
||||
targetMemberSettleExt = cuMemberSettleExtMap.get(targetMemberSettleExt.getPkParent());
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据极差获取会员
|
||||
*/
|
||||
private CuMemberSettleExt getCuMemberTree(Map<Long, CuMemberSettleExt> cuMemberTreeMap, Map<String, RangeDTO> rangeDtoMap,
|
||||
Map<String, BdAwards> awardsMap, CuMemberSettleExt parentMemberTree, BonusHiPinkDTO bonusHiPinkDTO, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
if (parentMemberTree == null) {
|
||||
return null;
|
||||
}
|
||||
// 获取目标会员的极差配置信息 等级还是奖衔
|
||||
RangeDTO rangeDto = getRangeDto(rangeDtoMap, awardsMap, parentMemberTree, cuAwardsControlMap);
|
||||
// 嗨粉直推奖励的配置,获取目标奖励的配置
|
||||
RangeDTO targetRangeDto = rangeDtoMap.get(bonusHiPinkDTO.getPkCountry().toString() + bonusHiPinkDTO.getRangeType() + bonusHiPinkDTO.getPkLevel());
|
||||
if (rangeDto == null || targetRangeDto == null) {
|
||||
return null;
|
||||
}
|
||||
// 判断目标会员极差奖励,目标会员的极差等级不足 直推奖励的配置,取上一级,一直取到 目标会员的 极差等级>= 直推推荐奖励配置的
|
||||
if (rangeDto.getRangeValue() < targetRangeDto.getRangeValue()) {
|
||||
parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent());
|
||||
parentMemberTree = getCuMemberTree(cuMemberTreeMap, rangeDtoMap, awardsMap, parentMemberTree, bonusHiPinkDTO, cuAwardsControlMap);
|
||||
}
|
||||
return parentMemberTree;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据极差获取会员
|
||||
*/
|
||||
private CuMemberSettleExt getCuMemberTree(Map<Long, CuMemberSettleExt> cuMemberTreeMap, CuMemberSettleExt parentMemberTree, Integer startGradeValue) {
|
||||
if (parentMemberTree == null) {
|
||||
return null;
|
||||
}
|
||||
// 判断目标会员极差奖励,目标会员的极差等级不足 直推奖励的配置,取上一级,一直取到 目标会员的 极差等级>= 直推推荐奖励配置的
|
||||
if (parentMemberTree.getGradeValue() < startGradeValue) {
|
||||
parentMemberTree = cuMemberTreeMap.get(parentMemberTree.getPkParent());
|
||||
parentMemberTree = getCuMemberTree(cuMemberTreeMap, parentMemberTree, startGradeValue);
|
||||
}
|
||||
return parentMemberTree;
|
||||
}
|
||||
|
||||
}
|
|
@ -2,7 +2,6 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||
|
@ -19,21 +18,17 @@ import com.hzs.common.core.utils.ComputeUtil;
|
|||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
|
||||
import com.hzs.common.domain.member.bonus.*;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
|
||||
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderWaresExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -54,8 +49,6 @@ import java.util.stream.Collectors;
|
|||
@Component
|
||||
public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||
|
||||
@Autowired
|
||||
private ICuMemberRangeService iCuMemberRangeService;
|
||||
@Autowired
|
||||
private ICuMemberRetailRangeService iCuMemberRetailRangeService;
|
||||
@Autowired
|
||||
|
@ -607,220 +600,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
void calculateRangeEvBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRangeExt> memberRangeExtMap, List<CuMemberBonusPush> cuMemberBonusPushList, List<BdWaresBonusExt> bdWaresBonusExtList, SaOrderExt saOrderExt) {
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
if (ComputeUtil.compareValue(saOrderExt.getOrderAssAchieve(), BigDecimal.valueOf(15.625))) {
|
||||
// 1= 自己购买了11单 2= 上3代拿 100 200 300 上3代各拿100 上11代各拿1100
|
||||
int specialWaresState = 0;
|
||||
BdWaresBonusExt calWaresBonusExt = null;
|
||||
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
||||
boolean flag = Boolean.FALSE;
|
||||
if (bdWaresBonusExtList != null && bdWaresBonusExtList.size() > 0) {
|
||||
for (BdWaresBonusExt bdWaresBonusExt : bdWaresBonusExtList) {
|
||||
if (bdWaresBonusExt.getPkWares().equals(saOrderItemsExt.getPkWares())) {
|
||||
specialWaresState = 2;
|
||||
flag = Boolean.TRUE;
|
||||
calWaresBonusExt = bdWaresBonusExt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (specialWaresState > 0) {
|
||||
if (specialWaresState == 2) {
|
||||
sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + calWaresBonusExt.getTotalAlgebra());
|
||||
int algebra = 0;
|
||||
for (BdWaresBonusItems bdWaresBonusItems : calWaresBonusExt.getBdWaresBonusItemsList()) {
|
||||
CuMemberBonusPush cuMemberBonusPush = calculatePushBonusOne(sourceMemberRangeExt, memberRangeExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt,
|
||||
bdWaresBonusItems.getAlgebra() - algebra, bdWaresBonusItems.getAssAchieve(), cuMemberBonusPushList);
|
||||
if (cuMemberBonusPush != null) {
|
||||
sourceMemberRangeExt = memberRangeExtMap.get(cuMemberBonusPush.getPkBonus());
|
||||
algebra = bdWaresBonusItems.getAlgebra();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + 11);
|
||||
sourceMemberRangeExt.setFirstAgent(sourceMemberRangeExt.getFirstAgent() + 1);
|
||||
setPushBonus(cuMemberBonusMap, bonusConfigDTO, period, memberRangeExtMap, saOrderExt, sourceMemberRangeExt, 1, sourceMemberRangeExt.getFirstAgent());
|
||||
}
|
||||
} else {
|
||||
sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + 1);
|
||||
// if (EYesNo.NO.getIntValue() == sourceMemberRangeExt.getProvideState()) {
|
||||
// sourceMemberRangeExt.setProvideState(EYesNo.YES.getIntValue());
|
||||
// targetMemberRangeExt.setEvEffectiveNum(targetMemberRangeExt.getEvEffectiveNum() + 1);
|
||||
// }
|
||||
calculatePushBonusOne(sourceMemberRangeExt, memberRangeExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt,
|
||||
sourceMemberRangeExt.getBuyEffectiveNum(), saOrderExt.getOrderAssAchieve(), cuMemberBonusPushList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setPushBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRangeExt> memberRangeExtMap, SaOrderExt saOrderExt, CuMemberRangeExt sourceMemberRangeExt,
|
||||
Integer round, Integer second) {
|
||||
// 死点没有奖金,自身没有购买没有奖金
|
||||
if (ECategory.NORMAL.getValue() != sourceMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == sourceMemberRangeExt.getAccountStatus() ||
|
||||
sourceMemberRangeExt.getBuyEffectiveNum() <= 0 || EAssessStatus.EXAMINE_PASS.getValue() != sourceMemberRangeExt.getAssessStatus()) {
|
||||
return;
|
||||
}
|
||||
if (validatePkBonusItems(bonusConfigDTO, sourceMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue())) {
|
||||
return;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, sourceMemberRangeExt.getPkMember(),
|
||||
sourceMemberRangeExt.getIncomeStatus(), sourceMemberRangeExt.getPkSettleCountry(), sourceMemberRangeExt.getPkRate());
|
||||
// 直推奖金明细
|
||||
int pkBonusItem = getPkBonusItems(bonusConfigDTO, sourceMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue());
|
||||
CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, sourceMemberRangeExt, cuMemberBonus, pkBonusItem);
|
||||
cuMemberBonusPush.setCalType(ECalType.VALUE.getValue());
|
||||
cuMemberBonusPush.setRound(round);
|
||||
cuMemberBonusPush.setSecond(second);
|
||||
cuMemberBonusPush.setCalAchieve(saOrderExt.getOrderAssAchieve());
|
||||
cuMemberBonusPush.setCalValue(BigDecimal.ONE);
|
||||
cuMemberBonusPush.setPretaxIncome(saOrderExt.getOrderAssAchieve());
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
recommendRangeRemark(saOrderExt, cuMemberBonusPush, memberRangeExtMap, sourceMemberRangeExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusPush.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurPushIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurPushIncome(), cuMemberBonusPush.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush);
|
||||
}
|
||||
}
|
||||
|
||||
private void packageRangeAwardsByType(List<BdRangeAwards> rangeAwardsList, Map<Integer, BdRangeAwards> consumeRangeAwardsMap, Map<Integer, BdRangeAwards> bloodRangeAwardsMap) {
|
||||
for (BdRangeAwards bdRangeAwards : rangeAwardsList) {
|
||||
if (ComputeUtil.compareValue(bdRangeAwards.getConsumePv())) {
|
||||
consumeRangeAwardsMap.put(bdRangeAwards.getAwardsValue(), bdRangeAwards);
|
||||
}
|
||||
if (ComputeUtil.compareValue(bdRangeAwards.getTeamConsumeCheck())) {
|
||||
bloodRangeAwardsMap.put(bdRangeAwards.getAwardsValue(), bdRangeAwards);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 先计算奖衔,奖衔计算分为2种,先计算自己消费足够的,S1-S3,S4以上的另一种方式,自消费的只有购买人,其他的都是根据业绩,注意,有人可以直接是S4
|
||||
* 先验证团队业绩,小区业绩,验证小市场需要从上往下走 s1只能通过自消费,除了购买人其他人丛S2开始升级
|
||||
* 计算个人消费奖项
|
||||
*/
|
||||
public List<CuMemberAwards> calculateConsumeRangeAwards(Integer period, Map<Long, List<CuMemberRangeExt>> parentRangeExtMap, Map<Long, CuMemberRangeExt> memberRangeExtMap, String rangeTableName,
|
||||
CuMemberRangeExt sourceMemberRangeExt, SaOrderExt saOrderExt,
|
||||
Map<Integer, BdRangeAwards> consumeRangeAwardsMap) {
|
||||
int rangeAwardsValue = 2;
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
while (consumeRangeAwardsMap.containsKey(sourceMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue)) {
|
||||
// 验证pv是否满足
|
||||
BdRangeAwards bdRangeAwards = consumeRangeAwardsMap.get(sourceMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue);
|
||||
if (ComputeUtil.compareValue(sourceMemberRangeExt.getTeamConsumePv(), bdRangeAwards.getTeamConsumeCheck()) &&
|
||||
ComputeUtil.compareValue(sourceMemberRangeExt.getConsumePv(), bdRangeAwards.getConsumePv())) {
|
||||
// 去结算表种查询该会员下所有会员,会员团队业绩+消费业绩是业绩 计算小区业绩 团队业绩-小区业绩 验证小区、直推必有一种
|
||||
// 如果需要验证小区
|
||||
if (ComputeUtil.compareValue(bdRangeAwards.getCommunityCheck())) {
|
||||
List<CuMemberRangeExt> cuMemberRangeExtList = iCuMemberRangeService.queryCuMemberRangeExtByParent(rangeTableName, sourceMemberRangeExt.getPkMember(), saOrderExt.getPayTime());
|
||||
// 需要验证团队业绩,小区业绩
|
||||
if (calculateAwards(parentRangeExtMap, memberRangeExtMap, sourceMemberRangeExt, bdRangeAwards, cuMemberRangeExtList, false)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
cuMemberAwardsList.add(getCuMemberAwards(sourceMemberRangeExt, period, saOrderExt, bdRangeAwards));
|
||||
sourceMemberRangeExt.setPkRangeAwards(bdRangeAwards.getPkId());
|
||||
sourceMemberRangeExt.setPkAwards(bdRangeAwards.getPkAwards());
|
||||
sourceMemberRangeExt.setRangeAwardsValue(bdRangeAwards.getAwardsValue());
|
||||
rangeAwardsValue += 2;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 当月有消费,修改为考核通过
|
||||
if (sourceMemberRangeExt.getMonthMember() == EYesNo.YES.getIntValue() && ComputeUtil.compareValue(sourceMemberRangeExt.getMonthPv())) {
|
||||
sourceMemberRangeExt.setAssessStatus(EAssessStatus.EXAMINE_PASS.getValue());
|
||||
}
|
||||
sourceMemberRangeExt.setConsumeStatus(EYesNo.YES.getIntValue());
|
||||
return cuMemberAwardsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算团队极差奖衔
|
||||
*/
|
||||
public List<CuMemberAwards> calculateBloodRangeAwards(Integer period, Map<Long, List<CuMemberRangeExt>> parentRangeExtMap, Map<Long, CuMemberRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt,
|
||||
Map<Integer, BdRangeAwards> bloodRangeAwardsMap, long pkParent, String secondRangeTableName) {
|
||||
// 计算血缘奖衔,一级一级升级,分为2段,s2、s3 一级,s3以上一级,先验证团队总业绩,
|
||||
// 小市场先验证目前小市场加新增是否满足,满足计算,不满足不计算,不满足小市场先累计,算小市场,每天最终计算完毕重新计算S1以上小市场
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
// 无效会员不累计业绩,当月会员有消费,上月会员考核通过
|
||||
if (EYesNo.YES.getIntValue() == targetMemberRangeExt.getConsumeStatus()) {
|
||||
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumeAmount(), saOrderExt.getOrderAmount()));
|
||||
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthAmount(), saOrderExt.getOrderAmount()));
|
||||
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
targetMemberRangeExt.setNewTeamPv(ComputeUtil.computeAdd(targetMemberRangeExt.getNewTeamPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
|
||||
sourceMemberRangeExt.setDeptTeamConsumeAmount(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamConsumeAmount(), saOrderExt.getOrderAmount()));
|
||||
sourceMemberRangeExt.setDeptTeamConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
sourceMemberRangeExt.setDeptTeamMonthAmount(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamMonthAmount(), saOrderExt.getOrderAmount()));
|
||||
sourceMemberRangeExt.setDeptTeamMonthPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
sourceMemberRangeExt.setDeptNewTeamPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptNewTeamPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
}
|
||||
if (targetMemberRangeExt.getAssessStatus() == EAssessStatus.EXAMINE_PASS.getValue()) {
|
||||
int rangeAwardsValue = 2;
|
||||
while (bloodRangeAwardsMap.containsKey(targetMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue)) {
|
||||
// 验证pv是否满足
|
||||
BdRangeAwards bdRangeAwards = bloodRangeAwardsMap.get(targetMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue);
|
||||
if (ComputeUtil.compareValue(targetMemberRangeExt.getTeamConsumePv(), bdRangeAwards.getTeamConsumeCheck())) {
|
||||
// 去结算表种查询该会员下所有会员,会员团队业绩+消费业绩是业绩 计算小区业绩 团队业绩-小区业绩 验证小区、直推必有一种
|
||||
List<CuMemberRangeExt> cuMemberRangeExtList;
|
||||
if (secondRangeTableName != null) {
|
||||
cuMemberRangeExtList = iCuMemberRangeService.querySecondCuMemberRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
|
||||
} else {
|
||||
cuMemberRangeExtList = iCuMemberRangeService.queryCuMemberRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember(), saOrderExt.getPayTime());
|
||||
}
|
||||
if (cuMemberRangeExtList.size() > 0) {
|
||||
if (calculateAwards(parentRangeExtMap, memberRangeExtMap, targetMemberRangeExt, bdRangeAwards, cuMemberRangeExtList, true)) {
|
||||
break;
|
||||
}
|
||||
// 验证血缘部门,需要有几个部门大于考核等级,数据库验证一次,
|
||||
// 当日的实时奖衔,这个位置直接在会员表中计算就可以
|
||||
if (bdRangeAwards.getPlaceNum() > 0) {
|
||||
if (secondRangeTableName != null) {
|
||||
iCuMemberRangeService.mergeSecondCuMemberRangeExt(secondRangeTableName, parentRangeExtMap.get(targetMemberRangeExt.getPkMember()));
|
||||
// 验证
|
||||
Integer placeNum = iCuMemberRangeService.validateSecondCuMemberPlaceAwards(secondRangeTableName, cuMemberRangeExtList, bdRangeAwards.getCheckAwards());
|
||||
if (bdRangeAwards.getPlaceNum() > placeNum) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// 更新网体,更新伞下
|
||||
iCuMemberRangeService.mergeCuMemberRangeExt(rangeTableName, parentRangeExtMap.get(targetMemberRangeExt.getPkMember()));
|
||||
// 验证
|
||||
Integer placeNum = iCuMemberRangeService.validateCuMemberPlaceAwards(rangeTableName, cuMemberRangeExtList, bdRangeAwards.getCheckAwards(), saOrderExt.getPayTime());
|
||||
if (bdRangeAwards.getPlaceNum() > placeNum) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cuMemberAwardsList.add(getCuMemberAwards(targetMemberRangeExt, period, saOrderExt, bdRangeAwards));
|
||||
targetMemberRangeExt.setPkRangeAwards(bdRangeAwards.getPkId());
|
||||
targetMemberRangeExt.setPkAwards(bdRangeAwards.getPkAwards());
|
||||
targetMemberRangeExt.setRangeAwardsValue(bdRangeAwards.getAwardsValue());
|
||||
rangeAwardsValue += 2;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
sourceMemberRangeExt = targetMemberRangeExt;
|
||||
}
|
||||
return cuMemberAwardsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算团队极差奖衔
|
||||
*/
|
||||
|
@ -1227,93 +1006,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算奖衔,验证小区业绩和推荐数量是否满足
|
||||
*/
|
||||
private boolean calculateAwards(Map<Long, List<CuMemberRangeExt>> parentRangeExtMap, Map<Long, CuMemberRangeExt> memberRangeExtMap, CuMemberRangeExt targetMemberRangeExt, BdRangeAwards bdRangeAwards, List<CuMemberRangeExt> cuMemberRangeExtList, Boolean isRecommend) {
|
||||
BigDecimal bigAreaPv = BigDecimal.ZERO;
|
||||
Integer recommendNum = 0;
|
||||
for (CuMemberRangeExt cuMemberRangeExt : cuMemberRangeExtList) {
|
||||
if (parentRangeExtMap.containsKey(cuMemberRangeExt.getPkParent())) {
|
||||
parentRangeExtMap.get(cuMemberRangeExt.getPkParent()).add(cuMemberRangeExt);
|
||||
} else {
|
||||
List<CuMemberRangeExt> memberRangeExtList = new ArrayList<>();
|
||||
memberRangeExtList.add(cuMemberRangeExt);
|
||||
parentRangeExtMap.put(cuMemberRangeExt.getPkParent(), memberRangeExtList);
|
||||
}
|
||||
if (memberRangeExtMap.containsKey(cuMemberRangeExt.getPkMember())) {
|
||||
cuMemberRangeExt = memberRangeExtMap.get(cuMemberRangeExt.getPkMember());
|
||||
}
|
||||
// 团队业绩+个人业绩
|
||||
BigDecimal validatePv = ComputeUtil.computeAdd(cuMemberRangeExt.getDeptTeamConsumePv(), cuMemberRangeExt.getConsumePv());
|
||||
if (ComputeUtil.compareValue(validatePv, bigAreaPv)) {
|
||||
bigAreaPv = validatePv;
|
||||
}
|
||||
// 有效的,等级满足的算推荐数量、验证部门数量的 需要走语句
|
||||
if (cuMemberRangeExt.getAssessStatus() == EAssessStatus.EXAMINE_PASS.getValue() && bdRangeAwards.getCheckAwards() <= cuMemberRangeExt.getPkRangeAwards()) {
|
||||
recommendNum += 1;
|
||||
}
|
||||
}
|
||||
// 小区业绩
|
||||
BigDecimal communityCheck = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), bigAreaPv);
|
||||
// 验证小区,验证失败
|
||||
if (ComputeUtil.compareGreaterThan(bdRangeAwards.getCommunityCheck(), communityCheck)) {
|
||||
return true;
|
||||
}
|
||||
// 验证推荐
|
||||
return isRecommend && bdRangeAwards.getRecommendNum() > recommendNum;
|
||||
}
|
||||
|
||||
// /*
|
||||
// * 计算幸运奖,先计算有效代数,所有有效代数均分,比例10%
|
||||
// * @author: sui q
|
||||
// * @date: 2024/10/17 11:34
|
||||
// * @param: null null
|
||||
// **/
|
||||
// List<CuMemberBonusCoach> calculateLuckBonus(Map<Long, CuMemberRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO,
|
||||
// Integer period, SaOrderExt saOrderExt) {
|
||||
// CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
// long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
// int generation = 1;
|
||||
// List<CuMemberBonusCoach> memberBonusCoachList = new ArrayList<>();
|
||||
// // 计算代数
|
||||
// while (true) {
|
||||
// CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
// if (targetMemberRangeExt == null) {
|
||||
// generation--;
|
||||
// break;
|
||||
// }
|
||||
// pkParent = targetMemberRangeExt.getPkParent();
|
||||
// if (ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
|
||||
// EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()) {
|
||||
// continue;
|
||||
// }
|
||||
// // 验证推荐有效代数是否大于当前代数
|
||||
// if (targetMemberRangeExt.getEffectiveNum() >= generation && EAssessStatus.EXAMINE_PASS.getValue() == targetMemberRangeExt.getAssessStatus()) {
|
||||
// getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
// targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
// CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, saOrderExt, generation, targetMemberRangeExt);
|
||||
// memberBonusCoachList.add(cuMemberBonusCoach);
|
||||
// generation++;
|
||||
// }
|
||||
// }
|
||||
// // 奖金
|
||||
// BigDecimal bonusRatio = ComputeUtil.computeDivide(BigDecimal.valueOf(10), BigDecimal.valueOf(generation));
|
||||
// for (CuMemberBonusCoach cuMemberBonusCoach : memberBonusCoachList) {
|
||||
// cuMemberBonusCoach.setCoachGeneration(generation);
|
||||
// cuMemberBonusCoach.setCalValue(bonusRatio);
|
||||
// cuMemberBonusCoach.setPretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusCoach.getCalAchieve(), bonusRatio));
|
||||
// CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(cuMemberBonusCoach.getPkBonus());
|
||||
// CuMemberBonus cuMemberBonus = cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus());
|
||||
// BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
// coachRangeRemark(saOrderExt, cuMemberBonusCoach, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
|
||||
// cuMemberBonus.setCloudDirectIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudDirectIncome(), cuMemberBonusCoach.getPretaxIncome()));
|
||||
// setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
|
||||
// }
|
||||
// }
|
||||
// return memberBonusCoachList;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 计算直推级差收益,根据直推级差收益计算平级收益
|
||||
|
@ -1688,117 +1380,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算某条订单的推荐奖金
|
||||
*/
|
||||
CuMemberBonusPush calculatePushBonusOne(CuMemberRangeExt sourceMemberRangeExt, Map<Long, CuMemberRangeExt> cuMemberRangeExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
SaOrderExt saOrderExt, int algebra, BigDecimal orderAssAchieve, List<CuMemberBonusPush> cuMemberBonusPushList) {
|
||||
if (sourceMemberRangeExt == null) {
|
||||
return null;
|
||||
}
|
||||
if (algebra >= 12) {
|
||||
return null;
|
||||
}
|
||||
long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
int i = 1;
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = cuMemberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
if (i < algebra) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
// 死点没有奖金,自身没有购买没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
||||
targetMemberRangeExt.getBuyEffectiveNum() <= 0 || EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) {
|
||||
// 记录烧伤记录
|
||||
targetMemberRangeExt.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue())) {
|
||||
continue;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
// 直推奖金明细
|
||||
int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue());
|
||||
CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItem);
|
||||
cuMemberBonusPush.setCalType(ECalType.VALUE.getValue());
|
||||
// 前2代买的有特殊规则
|
||||
if (algebra == 1) {
|
||||
// 第一代前三单需要自购一单,从第四单开始需要自动二单,需要验证是否买了第二单
|
||||
if (targetMemberRangeExt.getFirstAgent() >= 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 1) {
|
||||
continue;
|
||||
}
|
||||
targetMemberRangeExt.setFirstAgent(targetMemberRangeExt.getFirstAgent() + 1);
|
||||
cuMemberBonusPush.setSecond(targetMemberRangeExt.getFirstAgent());
|
||||
} else if (algebra == 2) {
|
||||
if (targetMemberRangeExt.getSecondAgent() < 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 1) {
|
||||
continue;
|
||||
} else if (targetMemberRangeExt.getSecondAgent() >= 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 2) {
|
||||
continue;
|
||||
}
|
||||
targetMemberRangeExt.setSecondAgent(targetMemberRangeExt.getSecondAgent() + 1);
|
||||
cuMemberBonusPush.setSecond(targetMemberRangeExt.getSecondAgent());
|
||||
} else {
|
||||
if (targetMemberRangeExt.getBuyEffectiveNum() < algebra) {
|
||||
continue;
|
||||
}
|
||||
cuMemberBonusPush.setSecond(-1);
|
||||
}
|
||||
cuMemberBonusPush.setRound(algebra);
|
||||
cuMemberBonusPush.setCalAchieve(orderAssAchieve);
|
||||
cuMemberBonusPush.setCalValue(BigDecimal.ONE);
|
||||
cuMemberBonusPush.setPretaxIncome(orderAssAchieve);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
recommendRangeRemark(saOrderExt, cuMemberBonusPush, cuMemberRangeExtMap, targetMemberRangeExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusPush.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurPushIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurPushIncome(), cuMemberBonusPush.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush);
|
||||
}
|
||||
cuMemberBonusPushList.add(cuMemberBonusPush);
|
||||
if (targetMemberRangeExt.getIncomeStatus() == EBonusIncomeStatus.NORMAL.getValue()) {
|
||||
return cuMemberBonusPush;
|
||||
} else {
|
||||
cuMemberBonusPush.setSecond(-1);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算服务中心奖
|
||||
*/
|
||||
CuMemberBonusDetail calculateRangeStoreBonusOne(Map<Long, CuMemberRangeExt> cuMemberRangeExtMap, CuMemberRangeExt targetMemberRangeExt, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt) {
|
||||
CuMemberRangeExt sourceMemberRangeExt = cuMemberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
if (targetMemberRangeExt == null || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
||||
EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) {
|
||||
return null;
|
||||
}
|
||||
// 验证是否有奖金
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue())) {
|
||||
return null;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), cuMemberBonus);
|
||||
BigDecimal serviceRadio = BigDecimal.valueOf(5);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(serviceRadio);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusDetail.getCalAchieve(), serviceRadio));
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
rangeServiceRemark(saOrderExt, cuMemberBonusDetail, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonus.getStoreIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param settleDateStr 结算日期
|
||||
*/
|
||||
|
@ -1831,9 +1412,11 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
|
||||
// 月订单列表
|
||||
List<SaOrder> totalMonthOrderList = new ArrayList<>();
|
||||
// 级差收益(月度级差、复购级差)
|
||||
// 级差收益(福利级差、复购级差)
|
||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||
// 分红收益
|
||||
// 培训津贴
|
||||
List<CuMemberBonusCoach> memberBonusCoachList = new ArrayList<>();
|
||||
// 月度分红收益
|
||||
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
|
||||
// 当前年月
|
||||
String month = DateUtils.getMonth(settleDateStr);
|
||||
|
@ -1891,6 +1474,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
List<SaOrder> saOrders = orderMap.get(systemType);
|
||||
// 月所有订单业绩(注册、升级、复购)
|
||||
BigDecimal totalMonthConsumePv = BigDecimal.ZERO;
|
||||
// 订单对应map
|
||||
Map<Long, SaOrder> saOrderMap = new HashMap<>();
|
||||
|
||||
// new 两个月奖
|
||||
// 月度级差:注册、升级订单,从自己开始往上算,最多拨出10代(紧缩)
|
||||
|
@ -1898,6 +1483,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
for (SaOrder saOrder : saOrders) {
|
||||
// 累计订单业绩
|
||||
totalMonthConsumePv = ComputeUtil.computeAdd(totalMonthConsumePv, saOrder.getOrderAchieve());
|
||||
// 封装订单map
|
||||
saOrderMap.put(saOrder.getPkId(), saOrder);
|
||||
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrder.getOrderType()) {
|
||||
|
@ -1925,7 +1512,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
// 当前会员奖衔级差比例
|
||||
BigDecimal targetRangeRatio = targetMemberRangeExt.getRangeRatio();
|
||||
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember()) && ComputeUtil.compareValue(rangeRatio))
|
||||
if ((targetMemberRangeExt.getPkMember().equals(saOrder.getPkMember())
|
||||
&& ComputeUtil.compareValue(rangeRatio))
|
||||
|| ComputeUtil.compareGreaterThan(targetRangeRatio, rangeRatio)) {
|
||||
// 第一代是自己 并且 级差比例大于0 或者 级差比例大于前一代会员的奖衔级差比例
|
||||
// 计算极差
|
||||
|
@ -2013,6 +1601,87 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
// 培育津贴
|
||||
if (CollectionUtil.isNotEmpty(memberBonusRangeList)) {
|
||||
for (CuMemberBonusRange cuMemberBonusRange : memberBonusRangeList) {
|
||||
// 第一代开始
|
||||
int i = MagicNumberConstants.BLOOD_GENERATION_START;
|
||||
// 推荐人
|
||||
Long pkMember = memberRangeExtMap.get(cuMemberBonusRange.getPkBonus()).getPkParent();
|
||||
// 提供奖金会员
|
||||
CuMemberRetailRangeExt sourceMemberRetailExt = memberRangeExtMap.get(cuMemberBonusRange.getPkBonus());
|
||||
// 级差所产生的培育津贴列表
|
||||
List<CuMemberBonusCoach> rangeBonusCoachList = new ArrayList<>();
|
||||
// 最多发十代
|
||||
while (i <= MagicNumberConstants.BLOOD_GENERATION_END) {
|
||||
// 当前需要拿奖金的会员
|
||||
CuMemberRetailRangeExt targetMemberRetailExt = memberRangeExtMap.get(pkMember);
|
||||
if (null == targetMemberRetailExt) {
|
||||
break;
|
||||
}
|
||||
pkMember = targetMemberRetailExt.getPkParent();
|
||||
|
||||
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRetailExt.getAccountStatus()
|
||||
|| ECategory.NORMAL.getValue() != targetMemberRetailExt.getCategory()
|
||||
|| targetMemberRetailExt.getGradeValue() != EGrade.S_VIP.getValue()
|
||||
|| targetMemberRetailExt.getEnableStatus() == EYesNo.NO.getIntValue()
|
||||
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRetailExt.getIncomeStatus()) {
|
||||
// 停算收益、非正常会员、未激活、等级不为合伙人、停止收益,直接跳过
|
||||
continue;
|
||||
}
|
||||
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberRetailExt.getPkSettleCountry(), EBonusItems.RETAIL_COACHING_INCOME.getValue())) {
|
||||
// 校验当前国家是否有该奖项
|
||||
continue;
|
||||
}
|
||||
|
||||
// 奖金订单
|
||||
SaOrder saOrder = saOrderMap.get(cuMemberBonusRange.getPkOrder());
|
||||
if (null == saOrder) {
|
||||
log.warn("培育津贴因订单为空跳过, cuMemberBonusRange: {}", cuMemberBonusRange);
|
||||
continue;
|
||||
}
|
||||
|
||||
// 获取奖衔能拿多少代领导奖的奖衔值
|
||||
Integer awardsValue = targetMemberRetailExt.getCoachAlgebra();
|
||||
|
||||
// 判断是否有奖金
|
||||
if (awardsValue >= i) {
|
||||
// 培育津贴比例
|
||||
BigDecimal awardCalRadio = targetMemberRetailExt.getCoachRatio();
|
||||
// 生成培育津贴明细
|
||||
CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, cuMemberBonusRange, i, targetMemberRetailExt, awardCalRadio);
|
||||
// 获取会员奖金数据
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRetailExt.getPkMember(),
|
||||
targetMemberRetailExt.getIncomeStatus(), targetMemberRetailExt.getPkSettleCountry(), targetMemberRetailExt.getPkRate());
|
||||
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrder.getOrderAmount(), BigDecimal.ONE);
|
||||
retailCoachRemark(saOrder, cuMemberBonusCoach, sourceMemberRetailExt, targetMemberRetailExt);
|
||||
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
|
||||
cuMemberBonus.setCoachIncome(ComputeUtil.computeAdd(cuMemberBonus.getCoachIncome(), cuMemberBonusCoach.getPretaxIncome()));
|
||||
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
|
||||
}
|
||||
rangeBonusCoachList.add(cuMemberBonusCoach);
|
||||
|
||||
// 这一代领导奖计算完,计算代数加1
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
if (rangeBonusCoachList.size() > 0) {
|
||||
// 共多少代
|
||||
--i;
|
||||
for (CuMemberBonusCoach cuMemberBonusCoach : rangeBonusCoachList) {
|
||||
cuMemberBonusCoach.setCoachGeneration(i);
|
||||
cuMemberBonusCoach.setRemark(cuMemberBonusCoach.getRemark().replace("#", cuMemberBonusCoach.getCoachGeneration().toString()));
|
||||
memberBonusCoachList.add(cuMemberBonusCoach);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 查询 v5 等级 且 分红奖衔 >= S4
|
||||
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByAwards(rangeTableName);
|
||||
if (memberRetailRangeExtList.size() > 0) {
|
||||
|
@ -2141,6 +1810,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
bonusRecordDetailVO.getCuMemberBonusDetailList().addAll(memberBonusDetailList);
|
||||
}
|
||||
}
|
||||
if (memberBonusCoachList.size() > 0) {
|
||||
if (bonusRecordDetailVO.getCuMemberBonusCoachList() == null) {
|
||||
bonusRecordDetailVO.setCuMemberBonusCoachList(memberBonusCoachList);
|
||||
} else {
|
||||
bonusRecordDetailVO.getCuMemberBonusCoachList().addAll(memberBonusCoachList);
|
||||
}
|
||||
}
|
||||
if (memberBonusRangeList.size() > 0) {
|
||||
if (bonusRecordDetailVO.getCuMemberBonusRangeList() == null) {
|
||||
bonusRecordDetailVO.setCuMemberBonusRangeList(memberBonusRangeList);
|
||||
|
@ -2183,46 +1859,25 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
CuMemberBonusPush getCuMemberBonusPush(SaOrderExt saOrderExt, CuMemberRangeExt cuMemberRangeExt, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
||||
CuMemberBonusPush cuMemberBonusPush = CuMemberBonusPush.builder()
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.pkBonusItems(pkBonusItems)
|
||||
// 正常还是烧伤
|
||||
.incomeStatus(cuMemberRangeExt.getIncomeStatus())
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.round(-1)
|
||||
.second(-1)
|
||||
.build();
|
||||
cuMemberBonusPush.setPkCountry(cuMemberRangeExt.getPkSettleCountry());
|
||||
cuMemberBonusPush.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
return cuMemberBonusPush;
|
||||
}
|
||||
|
||||
protected CuMemberBonusCoach getCuMemberBonusCoach(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt,
|
||||
int i, CuMemberRangeExt targetMemberRangeExt) {
|
||||
protected CuMemberBonusCoach getCuMemberBonusCoach(BonusConfigDTO bonusConfigDTO, CuMemberBonusRange cuMemberBonusRange,
|
||||
int i, CuMemberRetailRangeExt targetMemberRangeExt, BigDecimal awardCalRadio) {
|
||||
CuMemberBonusCoach cuMemberBonusCoach = CuMemberBonusCoach.builder()
|
||||
.pkBonus(targetMemberRangeExt.getPkMember())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_DIRECT_PUSH.getValue()))
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.pkOrder(cuMemberBonusRange.getPkOrder())
|
||||
.pkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_COACHING_INCOME.getValue()))
|
||||
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
|
||||
.calAchieve(saOrderExt.getOrderAchieve())
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.calAchieve(cuMemberBonusRange.getCalAchieve())
|
||||
.currentGeneration(i)
|
||||
// 计算比例
|
||||
.calValue(BigDecimal.ZERO)
|
||||
.calValue(awardCalRadio)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.pretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusRange.getPretaxIncome(), awardCalRadio))
|
||||
.coachNoCapping(BigDecimal.ZERO)
|
||||
.coachCapping(BigDecimal.ZERO)
|
||||
.coachNormalHalf(BigDecimal.ZERO)
|
||||
|
@ -2236,10 +1891,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
|
||||
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
||||
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonusItems(pkBonusItems)
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.calAchieve(saOrderExt.getOrderAchieve())
|
||||
.calType(ECalType.VALUE.getValue())
|
||||
.calValue(BigDecimal.ZERO)
|
||||
|
@ -2252,25 +1907,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
return cuMemberBonusRange;
|
||||
}
|
||||
|
||||
private CuMemberAwards getCuMemberAwards(CuMemberRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt, BdRangeAwards bdRangeAwards) {
|
||||
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
|
||||
.pkMember(sourceRangeExt.getPkMember())
|
||||
.period(period)
|
||||
.upType(EUpgradeType.AUTO_UPGRADE.getValue())
|
||||
// 原等级
|
||||
.oldLevel(sourceRangeExt.getPkRangeAwards())
|
||||
.newLevel(bdRangeAwards.getPkId())
|
||||
// 默认不免考
|
||||
.purchaseStatus(EYesNo.NO.getIntValue())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.systemType(1)
|
||||
.build();
|
||||
cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberAwards.setPkCountry(saOrderExt.getPkCountry());
|
||||
cuMemberAwards.setCreationTime(saOrderExt.getPayTime());
|
||||
return cuMemberAwards;
|
||||
}
|
||||
|
||||
private CuMemberAwards getCuMemberRetailAwards(CuMemberRetailRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt,
|
||||
BdAwards bdRangeAwards, Integer awardType, Integer oldLevel) {
|
||||
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
|
||||
|
|
|
@ -1,116 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.activity.base.IActivityServiceApi;
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.core.enums.EBonusIncomeStatus;
|
||||
import com.hzs.common.core.enums.EBonusItems;
|
||||
import com.hzs.common.core.enums.ECalType;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.domain.activity.recommend.AcRepurCouponsRuleConfig;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonus;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusDetail;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @description: 用于计算复购券收益、复购券均分收益
|
||||
* @author: sui q
|
||||
* @time: 2023/4/28 16:12
|
||||
* @classname: BonusSettleRepCouponsHandle
|
||||
* @package_name: com.hzs.member.bonus.service.impl
|
||||
* version 1.0.0
|
||||
*/
|
||||
@Component
|
||||
public class BonusSettleRepCouponsHandle extends BonusSettleHandle {
|
||||
|
||||
@DubboReference
|
||||
private IActivityServiceApi activityServiceApi;
|
||||
|
||||
/*
|
||||
* @description: 计算复购券收益
|
||||
* @author: sui q
|
||||
* @date: 2023/4/28 16:11
|
||||
* @param: null null
|
||||
**/
|
||||
List<CuMemberBonusDetail> calculateRepurchaseCoupons(Date settleDate, List<SaOrderExt> firPurchaseOrderList, Integer period, BonusConfigDTO bonusConfigDTO, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
|
||||
// 查询复购券发放规则
|
||||
R<List<AcRepurCouponsRuleConfig>> acRepurchaseCouponsRule = activityServiceApi.queryAcRepurchaseCouponsRule(settleDate);
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
if (acRepurchaseCouponsRule.isSuccess()) {
|
||||
List<AcRepurCouponsRuleConfig> repurCouponsRuleConfigList = acRepurchaseCouponsRule.getData();
|
||||
if (CollectionUtil.isNotEmpty(repurCouponsRuleConfigList)) {
|
||||
Map<String, Map<Long, List<AcRepurCouponsRuleConfig>>> couponsMap = new HashMap<>();
|
||||
for (AcRepurCouponsRuleConfig acRepurCouponsRuleConfig : repurCouponsRuleConfigList) {
|
||||
String key = acRepurCouponsRuleConfig.getPkCountry().toString() + "_" + acRepurCouponsRuleConfig.getOrderType();
|
||||
if (couponsMap.containsKey(key)) {
|
||||
Map<Long, List<AcRepurCouponsRuleConfig>> couponsListMap = couponsMap.get(key);
|
||||
if (couponsListMap.containsKey(acRepurCouponsRuleConfig.getPkBaseId())) {
|
||||
couponsListMap.get(acRepurCouponsRuleConfig.getPkBaseId()).add(acRepurCouponsRuleConfig);
|
||||
} else {
|
||||
List<AcRepurCouponsRuleConfig> acRepurCouponsRuleConfigList = new ArrayList<>();
|
||||
acRepurCouponsRuleConfigList.add(acRepurCouponsRuleConfig);
|
||||
couponsListMap.put(acRepurCouponsRuleConfig.getPkBaseId(), acRepurCouponsRuleConfigList);
|
||||
}
|
||||
} else {
|
||||
Map<Long, List<AcRepurCouponsRuleConfig>> couponsListMap = new HashMap<>();
|
||||
List<AcRepurCouponsRuleConfig> acRepurCouponsRuleConfigList = new ArrayList<>();
|
||||
acRepurCouponsRuleConfigList.add(acRepurCouponsRuleConfig);
|
||||
couponsListMap.put(acRepurCouponsRuleConfig.getPkBaseId(), acRepurCouponsRuleConfigList);
|
||||
couponsMap.put(key, couponsListMap);
|
||||
}
|
||||
}
|
||||
// 查询订单
|
||||
for (SaOrderExt saOrderExt : firPurchaseOrderList) {
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
continue;
|
||||
}
|
||||
String key = saOrderExt.getPkCountry().toString() + "_" + saOrderExt.getOrderType();
|
||||
if (couponsMap.containsKey(key)) {
|
||||
// 计算复购券收益
|
||||
Map<Long, List<AcRepurCouponsRuleConfig>> couponsListMap = couponsMap.get(key);
|
||||
for (Long pkBaseId : couponsListMap.keySet()) {
|
||||
for (AcRepurCouponsRuleConfig acRepurCouponsRuleConfig : couponsListMap.get(pkBaseId)) {
|
||||
if (ComputeUtil.compareValue(saOrderExt.getOrderAchieve(), acRepurCouponsRuleConfig.getOrderAchieve())) {
|
||||
// 获得奖金
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkReference());
|
||||
if (targetMemberSettleExt == null || validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS.getValue())) {
|
||||
continue;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算类型
|
||||
cuMemberBonusDetail.setCalType(acRepurCouponsRuleConfig.getRatioType());
|
||||
// 计算值
|
||||
cuMemberBonusDetail.setCalValue(acRepurCouponsRuleConfig.getRatioValue());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS.getValue()));
|
||||
if (ECalType.RATIO.getValue() == cuMemberBonusDetail.getCalType()) {
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), acRepurCouponsRuleConfig.getRatioValue()));
|
||||
} else {
|
||||
cuMemberBonusDetail.setPretaxIncome(acRepurCouponsRuleConfig.getRatioValue());
|
||||
}
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurCoupon(ComputeUtil.computeAdd(cuMemberBonus.getRepurCoupon(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setRepurchaseCouponTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
repurchaseCouponsRemark(saOrderExt, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
}
|
|
@ -129,12 +129,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// TODO new 每月1号,需要计算4个月奖
|
||||
if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) {
|
||||
// 测试环境,每天都执行
|
||||
// 计算新零售团队区域、福利、福利分红奖金
|
||||
// 计算新零售团队福利、福利分红等奖金
|
||||
bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
} else {
|
||||
// 非测试环境
|
||||
if (settleDate.endsWith("01")) {
|
||||
// 计算新零售团队区域、福利、福利分红奖金
|
||||
// 计算新零售团队福利、福利分红等奖金
|
||||
bonusSettleRangeHandle.calculateRetailShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,27 +18,27 @@ public class BonusRecordDetailVO implements Serializable {
|
|||
private Long pkMember;
|
||||
|
||||
/**
|
||||
* 推荐奖
|
||||
*
|
||||
*/
|
||||
private List<CuMemberBonusPush> cuMemberBonusPushList;
|
||||
|
||||
/**
|
||||
* 量奖、复购量奖
|
||||
*
|
||||
*/
|
||||
private List<CuMemberBonusExpand> cuMemberBonusExpandList;
|
||||
|
||||
/**
|
||||
* 辅导奖
|
||||
* 新零售 - 培育津贴
|
||||
*/
|
||||
private List<CuMemberBonusCoach> cuMemberBonusCoachList;
|
||||
|
||||
/**
|
||||
* 服务奖 嗨粉推荐奖金 创客空间直推 创客空间分享
|
||||
* 新零售 - 区域分红、月度分红
|
||||
*/
|
||||
private List<CuMemberBonusDetail> cuMemberBonusDetailList;
|
||||
|
||||
/**
|
||||
* 复购极差
|
||||
* 新零售 - 直推收益、平级收益、福利级差、复购级差
|
||||
*/
|
||||
private List<CuMemberBonusRange> cuMemberBonusRangeList;
|
||||
}
|
||||
|
|
|
@ -2,69 +2,18 @@ package com.hzs.bonus.detail.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAssess;
|
||||
import com.hzs.common.domain.member.ext.CuMemberAssessExt;
|
||||
import com.hzs.bonus.detail.vo.CuMemberAssessVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员信息-会员考核记录 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-31
|
||||
*/
|
||||
public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
||||
|
||||
/**
|
||||
* 创建每年的会员考核表
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 14:10
|
||||
*/
|
||||
void createCuMemberAssessTable(String tableName);
|
||||
|
||||
/**
|
||||
* 创建会员网体推荐人索引
|
||||
*
|
||||
* @param tableName 日期
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/10/31 13:32
|
||||
*/
|
||||
void createCuMemberTableUniqueIndex(String tableName);
|
||||
|
||||
/**
|
||||
* 创建表注释
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 16:25
|
||||
*/
|
||||
void createCuMemberAssessTableComment(String tableName);
|
||||
|
||||
/**
|
||||
* 查询表中是否存在数据
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 14:31
|
||||
*/
|
||||
Integer queryCuMemberAssessCount(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
/*
|
||||
* @description: 清空表数据
|
||||
* @author: sui q
|
||||
* @date: 2023/5/25 10:45
|
||||
* @param: null null
|
||||
* 清空表数据
|
||||
**/
|
||||
void deleteCuMemberAssessByPeriod(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
|
@ -75,9 +24,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param sourceTableName 来源表,用哪个表进行更新
|
||||
* @param period 期间
|
||||
* @param month 考核月份
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 14:33
|
||||
*/
|
||||
Integer insertRepCuMemberAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName,
|
||||
@Param("period") Integer period, @Param("month") String month);
|
||||
|
@ -89,22 +35,9 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param sourceTableName 来源表,用哪个表进行更新
|
||||
* @param period 期间
|
||||
* @param month 考核月份
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 14:33
|
||||
*/
|
||||
Integer insertRepCuMemberRangeAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName,
|
||||
@Param("period") Integer period, @Param("month") String month);
|
||||
|
||||
/**
|
||||
* 将撤单的数据插入临时表中,通过临时表进行批量更新
|
||||
*
|
||||
* @param cuMemberAssessesList 考核数据
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 14:30
|
||||
*/
|
||||
Integer insertTmpCuMemberAssess(@Param("cuMemberAssessesList") List<CuMemberAssessExt> cuMemberAssessesList);
|
||||
@Param("period") Integer period, @Param("month") String month);
|
||||
|
||||
/**
|
||||
* 更新会员复购考核业绩
|
||||
|
@ -114,9 +47,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param sourcePeriod 来源结算期
|
||||
* @param period 结算结算期间
|
||||
* @param assessType 考核类型 0=复购考核 1=分红考核
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 17:55
|
||||
*/
|
||||
Integer updateAssessPeriodBeginByBeforeMonth(@Param("beforeTableName") String beforeTableName, @Param("tableName") String tableName,
|
||||
@Param("sourcePeriod") Integer sourcePeriod,
|
||||
|
@ -131,9 +61,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param startDate 开始时间
|
||||
* @param endDate 结束时间
|
||||
* @param orderTypeList 订单类型
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 9:21
|
||||
*/
|
||||
Integer updateAssessPeriodAddBySaOrder(@Param("tableName") String tableName, @Param("period") Integer period,
|
||||
@Param("assessType") Integer assessType, @Param("startDate") Date startDate,
|
||||
|
@ -146,9 +73,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 10:32
|
||||
*/
|
||||
Integer updateAssessPeriodExemptBalanceByUsed(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
|
@ -160,9 +84,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param period 期间
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 19:17
|
||||
*/
|
||||
Integer updateAssessCuMemberToRepExempt(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName,
|
||||
@Param("period") Integer period, @Param("startDate") Date startDate, @Param("endDate") Date endDate,
|
||||
|
@ -174,9 +95,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param settleTableName 每日结算表
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 19:17
|
||||
*/
|
||||
Integer updateCuMemberSettleToRepExempt(@Param("settleTableName") String settleTableName, @Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate, @Param("startPeriod") Integer startPeriod,
|
||||
|
@ -186,97 +104,9 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* 更新考核表,更新复购考核状态为免考,首次注册、首次晋升的会员,更新结算网体
|
||||
*
|
||||
* @param settleTableName 每日结算表
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 19:17
|
||||
*/
|
||||
Integer updateAllCuMemberSettleToRepExempt(@Param("settleTableName") String settleTableName);
|
||||
|
||||
/**
|
||||
* 更新考核表,更新分红考核状态为免考,根据上一期的考核数据
|
||||
*
|
||||
* @param tableName 需要更新的会员考核表名
|
||||
* @param settleTableName 每日结算表
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 19:17
|
||||
*/
|
||||
Integer updateAssessCuMemberToShareExempt(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName,
|
||||
@Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 根据临时表中的订单撤单数据进行回写数据
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 15:00
|
||||
*/
|
||||
Integer updateAssessPeriodByRevokeOrder(@Param("tableName") String tableName);
|
||||
|
||||
/**
|
||||
* 查询出考核表中某一期免考的会员
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 9:09
|
||||
*/
|
||||
List<CuMemberAssess> queryExemptAssessCuMember(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 查询期间满足会员考核的数据,需要回填明细
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 会员期间
|
||||
* @return: List<CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 10:51
|
||||
*/
|
||||
List<CuMemberAssess> queryEnoughCuMemberAssess(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 发生过撤单的数据,需要变更考核月新增,进行重新考核,撤单可以存在撤奖衔,需要查询目标金额
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param settleTableName 每日结算表
|
||||
* @param period 期间
|
||||
* @param saOrderList 根据撤单数据过来的订单
|
||||
* @return: List<CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 11:24
|
||||
*/
|
||||
List<CuMemberAssessExt> queryAssessPeriodByRevokeOrder(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName,
|
||||
@Param("period") Integer period, @Param("saOrderList") List<?> saOrderList);
|
||||
|
||||
/**
|
||||
* 根据会员主键查询考核结果,只查询出来考核通过的会员
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @param assessType 考核类型
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
* @return: List<CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/16 19:13
|
||||
*/
|
||||
List<CuMemberAssess> queryCuMemberAssessByMember(@Param("tableName") String tableName, @Param("period") Integer period,
|
||||
@Param("assessType") Integer assessType,
|
||||
@Param("cuMemberSettleExtList") List<?> cuMemberSettleExtList);
|
||||
|
||||
/**
|
||||
* 查询会员分红考核结果,只查询出免考或者考核通过的,用于分红
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: List<CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/16 19:13
|
||||
*/
|
||||
List<CuMemberAssess> queryCuMemberShareAssess(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 更新考核通过的考核表
|
||||
* 更新会员考核表,根据使用值的更新期末结余,更新结余跟其他的不一样,
|
||||
|
@ -284,101 +114,12 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 10:32
|
||||
*/
|
||||
Integer updateAssessPeriodCheckBalanceByUsed(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 更新考核通过的考核表,根据临时表
|
||||
* 更新会员考核表,根据使用值的更新期末结余,更新结余跟其他的不一样,
|
||||
* 只更新一张表,复购跟分红可以一起更新,复购或分红只需要更新一次
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @param newCuMemberSettleExtList 需要更新的会员
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 10:32
|
||||
*/
|
||||
Integer updateAssessPeriodCheckBalanceByTmp(@Param("tableName") String tableName, @Param("period") Integer period, @Param("cuMemberList") List<?> newCuMemberSettleExtList);
|
||||
|
||||
/**
|
||||
* 初始化分红考核表数据,将结算表数据插入到考核表中
|
||||
*
|
||||
* @param tableName 更新表名
|
||||
* @param sourceTableName 来源表,用哪个表进行更新
|
||||
* @param period 期间
|
||||
* @param month 考核月份
|
||||
* @return: Integer
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 14:33
|
||||
*/
|
||||
Integer insertShareCuMemberAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName,
|
||||
@Param("period") Integer period, @Param("month") String month);
|
||||
|
||||
/**
|
||||
* 会员-考核明细列表
|
||||
*
|
||||
* @author: zhang jing
|
||||
* @date: 2023/1/23 10:20
|
||||
* @param: [cuMemberAssessVO] 查询条件
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
List<CuMemberAssessVO> selectAssessList(@Param("tableName") String tableName,
|
||||
@Param("pkMember") Long pkMember,
|
||||
@Param("pkCountry") Integer pkCountry,
|
||||
@Param("assessStatus") Integer assessStatus,
|
||||
@Param("assessType") Integer assessType,
|
||||
@Param("changeType") Integer changeType,
|
||||
@Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate,
|
||||
@Param("orderTypeList") List<Integer> orderTypeList
|
||||
|
||||
|
||||
|
||||
|
||||
);
|
||||
|
||||
/**
|
||||
* @description: 查询会员月度考核
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 14:44
|
||||
* @param: [tableName, cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
List<CuMemberAssessVO> getMemberAssessMonthList(@Param("tableName") String tableName,
|
||||
@Param("pkMember") Long pkMember,
|
||||
@Param("assessType") Integer assessType,
|
||||
@Param("pkCountry") Integer pkCountry,
|
||||
@Param("period") Integer period
|
||||
);
|
||||
|
||||
|
||||
/**
|
||||
* @description: 查询会员订单考核积分
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 17:52
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
CuMemberAssessVO getOrderAssessList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/**
|
||||
* @description: 根据考核类型查询会员订单信息
|
||||
* @author: zhang jing
|
||||
* @date: 2023/4/23 19:43
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
List<CuMemberAssessVO> getOrderByAssessList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/*
|
||||
* @description: 查询满足分红考核的人数,达标人数
|
||||
* @author: sui q
|
||||
* @date: 2023/7/3 16:51
|
||||
* @param: null null
|
||||
* 查询满足分红考核的人数,达标人数
|
||||
**/
|
||||
List<CuMemberAssess> queryCuMemberAssTotal(@Param("settleTable") String settleTable, @Param("period") Integer period,
|
||||
@Param("pkCountry") Integer pkCountry);
|
||||
|
|
|
@ -2,11 +2,9 @@ package com.hzs.bonus.detail.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAssess;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 会员信息-会员考核记录 服务类
|
||||
|
@ -25,16 +23,6 @@ public interface ICuMemberAssessService extends IService<CuMemberAssess> {
|
|||
*/
|
||||
void retryCalculationAssess(Date currentDate, Boolean flag);
|
||||
|
||||
/**
|
||||
* 根据会员主键查询考核结果
|
||||
*
|
||||
* @param assessTableName 考核表
|
||||
* @param period 期间
|
||||
* @param assessType 考核类型
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
*/
|
||||
Map<Long, CuMemberAssess> queryCuMemberAssessByMember(String assessTableName, Integer period, Integer assessType, List<CuMemberSettleExt> cuMemberSettleExtList);
|
||||
|
||||
/*
|
||||
* 查询满足分红考核的人数,达标人数
|
||||
**/
|
||||
|
|
|
@ -2,16 +2,13 @@ package com.hzs.bonus.detail.service.impl;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
|
||||
import com.hzs.bonus.detail.service.ICuMemberAssessDetailService;
|
||||
import com.hzs.bonus.detail.service.ICuMemberAssessService;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAssess;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.bonus.detail.mapper.CuMemberAssessMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -26,22 +23,10 @@ import java.util.*;
|
|||
@Service
|
||||
public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper, CuMemberAssess> implements ICuMemberAssessService {
|
||||
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
|
||||
private ICuMemberAssessDetailService cuMemberAssessDetailService;
|
||||
|
||||
@Autowired
|
||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||
|
||||
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
|
||||
@Autowired
|
||||
public void setCuMemberAssessDetailService(ICuMemberAssessDetailService cuMemberAssessDetailService) {
|
||||
this.cuMemberAssessDetailService = cuMemberAssessDetailService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
|
||||
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
|
||||
}
|
||||
private ICuMemberAssessDetailService iCuMemberAssessDetailService;
|
||||
|
||||
/**
|
||||
* 复购考核每月第一次考核调用此方法
|
||||
|
@ -54,7 +39,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// 考核日期不能跨越考核,只能当月考核,当月考核上月
|
||||
if (DateUtils.currentDay(currentDate) == 1) {
|
||||
String currentMonthFirstDate = DateUtils.currentMonthFirstDateStr(currentDate);
|
||||
Integer currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
Integer currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
String currentTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(currentMonthFirstDate);
|
||||
// 清空数据 根据期数清空cu_member_assess cu_member_assess_detail表数据
|
||||
initCurrentAssess(currentDate, currentTableName, currentPeriod);
|
||||
|
@ -68,41 +53,27 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
baseMapper.updateAssessPeriodExemptBalanceByUsed(currentTableName, currentPeriod);
|
||||
// 2 需要扣除通过的,需要记录流水
|
||||
// 记录流水,新增或修改
|
||||
cuMemberAssessDetailService.updateCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
iCuMemberAssessDetailService.updateCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
baseMapper.updateAssessPeriodCheckBalanceByUsed(currentTableName, currentPeriod);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Long, CuMemberAssess> queryCuMemberAssessByMember(String assessTableName, Integer period, Integer assessType, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
List<CuMemberAssess> cuMemberAssessList = new ArrayList<>();
|
||||
List<List<?>> listList = cuMemberBonusSettle.handleCutList(cuMemberSettleExtList);
|
||||
listList.forEach(list ->
|
||||
cuMemberAssessList.addAll(baseMapper.queryCuMemberAssessByMember(assessTableName, period, assessType, list)));
|
||||
Map<Long, CuMemberAssess> cuMemberAssessMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberAssessList.size()));
|
||||
cuMemberAssessList.forEach(cuMemberAssess -> cuMemberAssessMap.put(cuMemberAssess.getPkMember(), cuMemberAssess));
|
||||
return cuMemberAssessMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 奖金计算时重算考核 (复购考核、分红考核),只重算免考的、撤单的
|
||||
*
|
||||
* @param currentDate 考核时间
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 11:19
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void retryCalculationAssess(Date currentDate, Boolean flag) {
|
||||
// String beforeDateStr = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, currentDate);
|
||||
// Integer beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDateStr).getPkId();
|
||||
Integer currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)).getPkId();
|
||||
// Integer beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDateStr).getPkId();
|
||||
Integer currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)).getPkId();
|
||||
// String beforeTableName = TableNameConstants.CU_MEMBER_SETTLE + beforePeriod;
|
||||
//// a)更新结算表会员前2部分会员免考状态 满足首次注册的会员 满足满足首次升级的会员
|
||||
// String tableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.currentYear(currentDate);
|
||||
// String currentMonthFirstDateStr = DateUtils.currentMonthFirstDateStr(currentDate);
|
||||
// Integer monthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
// Integer monthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
// // 结算日期月份的第一天
|
||||
Date startDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
// // 结算日期后一天
|
||||
|
@ -113,8 +84,8 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
//// d)前一天不免考,后一天免考,需要做重新考核,直接变考核通过,原来考核通过的不回退考核金额,且考核状态为考核通过,不是免考通过
|
||||
// // 所有的海粉会员设置复购考核失败,存在任意订单的海粉会员复购考核成功
|
||||
// // 复购免考通过
|
||||
Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
Integer startPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
// baseMapper.updateAssessCuMemberToRepExempt(tableName, settleTableName, monthFirstPeriod, startDate, endDate, startPeriod, endPeriod);
|
||||
// // 奖金重算时更新结算表,flag=true代表奖金重算时,重算考核需要更新网体 flag=false 代表重算考核
|
||||
if (flag) {
|
||||
|
@ -125,54 +96,17 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
baseMapper.updateCuMemberSettleToRepExempt(settleTableName, startDate, endDate, startPeriod, endPeriod);
|
||||
}
|
||||
}
|
||||
// // 分红免考通过
|
||||
// baseMapper.updateAssessCuMemberToShareExempt(tableName, settleTableName, monthFirstPeriod);
|
||||
// // 查询出考核表免考的数据
|
||||
// List<CuMemberAssess> oldCuMemberAssessList = baseMapper.queryExemptAssessCuMember(tableName, monthFirstPeriod);
|
||||
//// b)查询前一天的会员免考记录,查询结算日会员免考记录
|
||||
// List<CuMemberSettleExt> oldCuMemberSettleExtList = cuMemberTreeService.queryExemptCuMemberSettle(beforeTableName);
|
||||
//// c)比较会员2天免考发生的状态,只需要计算变化的值,去掉没有发生变化的值
|
||||
// List<CuMemberSettleExt> newCuMemberSettleExtList = new ArrayList<>();
|
||||
// if (oldCuMemberAssessList.size() > 0 && oldCuMemberSettleExtList != null && oldCuMemberSettleExtList.size() > 0) {
|
||||
// Map<String, CuMemberAssess> cuMemberAssessMap = new HashMap<>(ComputeUtil.mapInitCapacity(oldCuMemberAssessList.size()));
|
||||
// oldCuMemberAssessList.forEach(cuMemberAssess ->
|
||||
// cuMemberAssessMap.put(cuMemberAssess.getPkMember().toString() + cuMemberAssess.getAssessType().toString(), cuMemberAssess));
|
||||
// oldCuMemberSettleExtList.forEach(cuMemberSettleExt -> {
|
||||
// String key = cuMemberSettleExt.getPkMember().toString() + cuMemberSettleExt.getAssessType().toString();
|
||||
// if (!cuMemberAssessMap.containsKey(key)) {
|
||||
// newCuMemberSettleExtList.add(cuMemberSettleExt);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
//// e)查询有没有撤单,更新撤单的数据
|
||||
// List<CuMemberAssessExt> cuMemberAssessExtList = handleCuMemberAssessByRevokeOrder(currentDate, newCuMemberSettleExtList, tableName, monthFirstPeriod, settleTableName);
|
||||
// if (cuMemberAssessExtList.size() > 0) {
|
||||
// // 将变更的插入临时表
|
||||
// baseMapper.insertTmpCuMemberAssess(cuMemberAssessExtList);
|
||||
// // 根据临时表里面的值进行更新会员表
|
||||
// baseMapper.updateAssessPeriodByRevokeOrder(tableName);
|
||||
// }
|
||||
//// f)前一天免考后一天不免考,需要做重新考核,看上月是否可以考核通过
|
||||
// if (newCuMemberSettleExtList.size() > 0) {
|
||||
// // 处理考核数据
|
||||
// // 记录流水,新增或修改
|
||||
// cuMemberAssessDetailService.insertCuMemberAssessDetailByPeriod(tableName, monthFirstPeriod, newCuMemberSettleExtList);
|
||||
// List<List<?>> cutCuMemberSettleExtList = cuMemberBonusSettle.handleCutList(newCuMemberSettleExtList);
|
||||
// cutCuMemberSettleExtList.forEach(assessExtList ->
|
||||
// baseMapper.updateAssessPeriodCheckBalanceByTmp(tableName, monthFirstPeriod, assessExtList));
|
||||
// }
|
||||
// 网体数据修改,修改复购免考类型 0=正常 1=手动免考 2=注册免考 3=晋升免考,修改是否复购免考(0=是,1=否)
|
||||
}
|
||||
|
||||
private void initCurrentAssess(Date currentDate, String currentTableName, Integer currentPeriod) {
|
||||
// 获取上月最后一天
|
||||
String beforeLastDate = DateUtils.beforeMonthLastDateStr(currentDate);
|
||||
CuMemberSettlePeriod cuMemberSettlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeLastDate);
|
||||
CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeLastDate);
|
||||
int period = cuMemberSettlePeriod.getPkId();
|
||||
String sourceTable = TableNameConstants.CU_MEMBER_SETTLE + period;
|
||||
String rangeSourceTable = TableNameConstants.CU_MEMBER_RANGE + period;
|
||||
// 清空子表、主表数据
|
||||
cuMemberAssessDetailService.deleteCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
iCuMemberAssessDetailService.deleteCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
baseMapper.deleteCuMemberAssessByPeriod(currentTableName, currentPeriod);
|
||||
// 初始化复购考核
|
||||
String month = DateUtils.getMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate));
|
||||
|
@ -185,7 +119,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// a)更新结算表会员前2部分会员免考状态 满足首次注册的会员 满足满足首次升级的会员
|
||||
String tableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.currentYear(currentDate);
|
||||
String currentMonthFirstDateStr = DateUtils.currentMonthFirstDateStr(currentDate);
|
||||
Integer monthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
Integer monthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
// 结算日期月份的第一天
|
||||
Date startDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
// 结算日期后一天
|
||||
|
@ -193,22 +127,22 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + currentPeriod;
|
||||
if (DateUtils.currentDay(DateUtils.currentDate()) == 1) {
|
||||
String currentMonthFirstDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, currentDate));
|
||||
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
settleTableName = TableNameConstants.CU_MEMBER_SETTLE + yesterdayPeriod;
|
||||
}
|
||||
// 首次晋升、首次升级都是当月加下月考核,查询出上月1号到考核日期的值,
|
||||
// 等级看会员表支付时间,奖衔看奖衔变更表是否免考(分组取),手动免考查看 最新的结算表手动考核
|
||||
// d)前一天不免考,后一天免考,需要做重新考核,直接变考核通过,原来考核通过的不回退考核金额,且考核状态为考核通过,不是免考通过
|
||||
// 复购免考通过
|
||||
Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
Integer startPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
baseMapper.updateAssessCuMemberToRepExempt(tableName, settleTableName, monthFirstPeriod, startDate, endDate, startPeriod, endPeriod);
|
||||
|
||||
// 初始化订单数据,将当月新增加入数据库
|
||||
// 上月第一天,上月最后一天
|
||||
Date beforeFirstDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
Date currentFirstDate = DateUtils.currentMonthFirstDate(currentDate);
|
||||
cuMemberAssessDetailService.insertCuMemberAssesDetailByOrder(currentTableName, currentPeriod, beforeFirstDate, currentFirstDate);
|
||||
iCuMemberAssessDetailService.insertCuMemberAssesDetailByOrder(currentTableName, currentPeriod, beforeFirstDate, currentFirstDate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -233,7 +167,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// 获取结算日上月最后一天,获取期间
|
||||
Date beforeMonthFirstDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
String beforeMonthFirstDateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, beforeMonthFirstDate);
|
||||
Integer beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeMonthFirstDateStr).getPkId();
|
||||
Integer beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeMonthFirstDateStr).getPkId();
|
||||
String beforeTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(beforeMonthFirstDateStr);
|
||||
Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(currentDate);
|
||||
// 初始化复购考核的上月结余 // 更新当月结余
|
||||
|
@ -245,7 +179,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
|
||||
@Override
|
||||
public List<CuMemberAssess> queryCuMemberAssTotal(String startDate, Integer pkCountry) {
|
||||
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(startDate).getPkId();
|
||||
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(startDate).getPkId();
|
||||
String tableTable = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(startDate);
|
||||
return baseMapper.queryCuMemberAssTotal(tableTable, period, pkCountry);
|
||||
}
|
||||
|
|
|
@ -1,137 +0,0 @@
|
|||
package com.hzs.bonus.detail.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.hzs.common.core.annotation.Transaction;
|
||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员信息-会员考核记录VO
|
||||
*/
|
||||
@Data
|
||||
public class CuMemberAssessVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long pkId;
|
||||
|
||||
/**
|
||||
* 考核月度主键
|
||||
*/
|
||||
private Long pkAssess;
|
||||
|
||||
/**
|
||||
* 会员编号
|
||||
*/
|
||||
private Long pkMember;
|
||||
|
||||
/**
|
||||
* 考核类型( 0=复购考核,1=分红考核) EAssessmentType
|
||||
*/
|
||||
@Transaction(transactionKey = EnumsPrefixConstants.ASSESSMENT_TYPE)
|
||||
private Integer assessType;
|
||||
|
||||
private String assessTypeVal;
|
||||
|
||||
/**
|
||||
* 考核状态 (0=考核通过,1=免考通过,2=考核不通过,3=不考核) EAssessStatus
|
||||
*/
|
||||
@Transaction(transactionKey = EnumsPrefixConstants.ASSESS_STATUS)
|
||||
private Integer assessStatus;
|
||||
private String assessStatusVal;
|
||||
|
||||
/**
|
||||
* 考核年月份
|
||||
*/
|
||||
private String settleMonth;
|
||||
/**
|
||||
* 订单编号
|
||||
*/
|
||||
private String orderCode;
|
||||
|
||||
|
||||
/**
|
||||
* 交易时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date tradeTime;
|
||||
|
||||
/**
|
||||
* 变化类型 (0=复购考核新增1=复购考核扣除,2=分红考核新增,3=分红考核扣除) EChangeType
|
||||
*/
|
||||
@Transaction(transactionKey = EnumsPrefixConstants.CHANGE_TYPE)
|
||||
private Integer changeType;
|
||||
private String changeTypeVal;
|
||||
|
||||
/**
|
||||
* 交易金额
|
||||
*/
|
||||
private BigDecimal tradeAchieve;
|
||||
/**
|
||||
* 交易金额 (带符号)
|
||||
*/
|
||||
private String tradeAchieveSign;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date startDate;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endDate;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date startTradeTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endDateTradeTime;
|
||||
|
||||
/**
|
||||
* 国家
|
||||
*/
|
||||
private Integer pkCountry;
|
||||
|
||||
/**
|
||||
* 考核月剩余
|
||||
*/
|
||||
private BigDecimal monthSurplus;
|
||||
/**
|
||||
* 订单分红考核积分(当月1号-当前时间)
|
||||
*/
|
||||
private BigDecimal orderAssAchieve;
|
||||
/**
|
||||
* 订单复购考核积分(当月1号-当前时间)
|
||||
*/
|
||||
private BigDecimal orderAchieve;
|
||||
|
||||
|
||||
/**
|
||||
* 交易时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private Date creationTime;
|
||||
/**
|
||||
* 订单类型 来源于枚举:所属专区 EOrderType
|
||||
*/
|
||||
private Integer orderType;
|
||||
List<Integer> orderTypeList;
|
||||
|
||||
|
||||
}
|
|
@ -1,215 +0,0 @@
|
|||
<?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.bonus.achieve.mapper.CuMemberRangeMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberRangeExt" type="com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt">
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_MEMBER" property="pkMember"/>
|
||||
<result column="PK_PARENT" property="pkParent"/>
|
||||
<result column="MEMBER_CODE" property="memberCode"/>
|
||||
<result column="MEMBER_NAME" property="memberName"/>
|
||||
<result column="CUSTOMER_TYPE" property="customerType"/>
|
||||
<result column="PHONE" property="phone"/>
|
||||
<result column="PK_GRADE" property="pkGrade"/>
|
||||
<result column="PK_AWARDS" property="pkAwards"/>
|
||||
<result column="PK_RANGE_AWARDS" property="pkRangeAwards"/>
|
||||
<result column="PK_BENEFIT_AWARDS" property="pkBenefitAwards"/>
|
||||
<result column="ACCOUNT_STATUS" property="accountStatus"/>
|
||||
<result column="PAY_STATUS" property="payStatus"/>
|
||||
<result column="PAY_TIME" property="payTime"/>
|
||||
<result column="REGISTER_AUTHORITY" property="registerAuthority"/>
|
||||
<result column="CATEGORY" property="category"/>
|
||||
<result column="PURCHASE_STATUS" property="purchaseStatus"/>
|
||||
<result column="INCOME_STATUS" property="incomeStatus"/>
|
||||
<result column="PK_TEAM_CODE" property="pkTeamCode"/>
|
||||
<result column="PK_CENTER_CODE" property="pkCenterCode"/>
|
||||
<result column="PK_VERTEX" property="pkVertex"/>
|
||||
<result column="PK_SETTLE_COUNTRY" property="pkSettleCountry"/>
|
||||
<result column="IS_REAL_NAME" property="isRealName"/>
|
||||
<result column="PK_RATE" property="pkRate"/>
|
||||
<result column="CONSUME_PV" property="consumePv"/>
|
||||
<result column="MONTH_PV" property="monthPv"/>
|
||||
<result column="EFFECTIVE_NUM" property="effectiveNum"/>
|
||||
<result column="RECOMMEND_NUM" property="recommendNum"/>
|
||||
<result column="TEAM_NUM" property="teamNum"/>
|
||||
<result column="TEAM_CONSUME_AMOUNT" property="teamConsumeAmount"/>
|
||||
<result column="TEAM_CONSUME_PV" property="teamConsumePv"/>
|
||||
<result column="TEAM_MONTH_AMOUNT" property="teamMonthAmount"/>
|
||||
<result column="TEAM_MONTH_PV" property="teamMonthPv"/>
|
||||
<result column="SMALL_AREA_PV" property="smallAreaPv"/>
|
||||
<result column="ASSESS_STATUS" property="assessStatus"/>
|
||||
<result column="MONTH_MEMBER" property="monthMember"/>
|
||||
<result column="RANGE_AWARDS_VALUE" property="rangeAwardsValue"/>
|
||||
<result column="pk_order" property="pkOrder"/>
|
||||
<result column="range_store_status" property="rangeStoreStatus"/>
|
||||
<result column="ev_effective_num" property="evEffectiveNum"/>
|
||||
<result column="provide_state" property="provideState"/>
|
||||
<result column="buy_effective_num" property="buyEffectiveNum"/>
|
||||
<result column="first_agent" property="firstAgent"/>
|
||||
<result column="second_agent" property="secondAgent"/>
|
||||
<result column="NEW_PV" property="newPv"/>
|
||||
<result column="NEW_TEAM_PV" property="newTeamPv"/>
|
||||
<result column="DEPT_NEW_TEAM_PV" property="deptNewTeamPv"/>
|
||||
<result column="TEAM_CONSUME_AMOUNT" property="deptTeamConsumeAmount"/>
|
||||
<result column="DEPT_TEAM_CONSUME_PV" property="deptTeamConsumePv"/>
|
||||
<result column="DEPT_TEAM_MONTH_AMOUNT" property="deptTeamMonthAmount"/>
|
||||
<result column="DEPT_TEAM_MONTH_PV" property="deptTeamMonthPv"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="mergeCuMemberRangeExt">
|
||||
merge into ${rangeTableName} a
|
||||
using (
|
||||
select pk_member,min(consume_status) consume_status,max(pk_range_awards) pk_range_awards,
|
||||
max(pk_awards) pk_awards,max(consume_pv) consume_pv,
|
||||
max(month_pv) month_pv,max(new_pv) new_pv,max(new_team_pv) new_team_pv,max(effective_num) effective_num,
|
||||
max(buy_effective_num) buy_effective_num,max(first_agent) first_agent,max(second_agent) second_agent,
|
||||
max(team_consume_pv) team_consume_pv,max(team_month_pv) team_month_pv,max(small_area_pv) small_area_pv,
|
||||
max(team_consume_amount) team_consume_amount,max(team_month_amount) team_month_amount,
|
||||
max(assess_status) assess_status,max(dept_new_team_pv) dept_new_team_pv,
|
||||
max(dept_team_consume_amount) dept_team_consume_amount,max(dept_team_consume_pv) dept_team_consume_pv,
|
||||
max(dept_team_month_amount) dept_team_month_amount,max(dept_team_month_pv) dept_team_month_pv from(
|
||||
<foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union">
|
||||
select #{item.pkMember} pk_member,#{item.pkRangeAwards} pk_range_awards,#{item.pkAwards} pk_awards,
|
||||
#{item.consumeStatus} consume_status,#{item.consumePv} consume_pv,#{item.monthPv} month_pv,
|
||||
#{item.newPv} new_pv,#{item.newTeamPv} new_team_pv,#{item.effectiveNum} effective_num,
|
||||
#{item.buyEffectiveNum} buy_effective_num,#{item.firstAgent} first_agent,#{item.secondAgent} second_agent,
|
||||
#{item.teamConsumeAmount} team_consume_amount,#{item.teamMonthAmount} team_month_amount,
|
||||
#{item.deptNewTeamPv} dept_new_team_pv,#{item.deptTeamConsumeAmount} dept_team_consume_amount,
|
||||
#{item.deptTeamConsumePv} dept_team_consume_pv,#{item.deptTeamMonthAmount} dept_team_month_amount,
|
||||
#{item.deptTeamMonthPv} dept_team_month_pv,
|
||||
#{item.teamConsumePv} team_consume_pv,#{item.teamMonthPv} team_month_pv,#{item.smallAreaPv} small_area_pv,
|
||||
#{item.assessStatus} assess_status from dual
|
||||
</foreach>)
|
||||
group by pk_member
|
||||
) b
|
||||
on (a.pk_member=b.pk_member)
|
||||
when matched then
|
||||
update set a.pk_range_awards=b.pk_range_awards,a.pk_awards=b.pk_awards,
|
||||
a.consume_status=b.consume_status,a.consume_pv=b.consume_pv,
|
||||
a.month_pv=b.month_pv,a.effective_num=b.effective_num,
|
||||
a.new_pv=b.new_pv,a.new_team_pv=b.new_team_pv,a.buy_effective_num=b.buy_effective_num,
|
||||
a.first_agent=b.first_agent,a.second_agent=b.second_agent,a.team_consume_amount=b.team_consume_amount,
|
||||
a.team_month_amount=b.team_month_amount,a.dept_new_team_pv=b.dept_new_team_pv,
|
||||
a.dept_team_consume_amount=b.dept_team_consume_amount,
|
||||
a.dept_team_consume_pv=b.dept_team_consume_pv,a.dept_team_month_amount=b.dept_team_month_amount,
|
||||
a.dept_team_month_pv=b.dept_team_month_pv,
|
||||
a.team_consume_pv=b.team_consume_pv,a.team_month_pv=b.team_month_pv,
|
||||
a.small_area_pv=b.small_area_pv,a.assess_status=b.assess_status
|
||||
</update>
|
||||
|
||||
<update id="mergeSecondCuMemberRangeExt">
|
||||
merge into ${secondTableName} a
|
||||
using (
|
||||
<foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union">
|
||||
select #{item.pkMember} pk_member,#{item.pkParent} pk_parent,#{item.pkRangeAwards} pk_range_awards,
|
||||
#{item.newPv} new_pv,#{item.newTeamPv} new_team_pv,#{item.newEffectiveNum} new_effective_num,
|
||||
#{item.assessStatus} assess_status,#{item.monthMember} month_member from dual
|
||||
</foreach>
|
||||
) b
|
||||
on (a.pk_member=b.pk_member)
|
||||
when not matched then
|
||||
insert(pk_member,pk_parent,pk_range_awards,new_pv,new_team_pv,new_effective_num,assess_status,month_member)
|
||||
values (b.pk_member,b.pk_parent,b.pk_range_awards,b.new_pv,b.new_team_pv,b.new_effective_num,b.assess_status,b.month_member)
|
||||
when matched then
|
||||
update set a.pk_range_awards=b.pk_range_awards,a.new_pv=b.new_pv,a.new_team_pv=b.new_team_pv
|
||||
</update>
|
||||
|
||||
<select id="queryCuMemberRangeExtByParent" resultMap="CuMemberRangeExt">
|
||||
select a.pk_member,
|
||||
a.pk_parent,
|
||||
a.pk_settle_country,
|
||||
a.pk_range_awards,
|
||||
a.pk_awards,
|
||||
a.pk_benefit_awards,
|
||||
a.income_status,
|
||||
a.consume_pv,
|
||||
a.month_pv,
|
||||
a.effective_num,
|
||||
a.buy_effective_num,
|
||||
a.first_agent,
|
||||
a.second_agent,
|
||||
a.consume_status,
|
||||
a.team_consume_amount,
|
||||
a.team_consume_pv,
|
||||
a.team_month_amount,
|
||||
a.team_month_pv,
|
||||
a.small_area_pv,
|
||||
0 new_pv,
|
||||
0 new_team_pv,
|
||||
a.dept_new_team_pv,
|
||||
a.dept_team_consume_amount,
|
||||
a.dept_team_consume_pv,
|
||||
a.dept_team_month_amount,
|
||||
a.dept_team_month_pv,
|
||||
a.assess_status,
|
||||
a.month_member,
|
||||
a.pay_time,
|
||||
a.pk_rate,
|
||||
ba.awards_value range_awards_value
|
||||
from ${tableName} a
|
||||
inner join bd_range_awards ba
|
||||
on a.pk_range_awards = ba.pk_id
|
||||
where ba.del_flag = 0
|
||||
and a.pk_parent = #{pkParent}
|
||||
and a.pay_time <= #{orderDate}
|
||||
</select>
|
||||
|
||||
<select id="validateCuMemberPlaceAwards" resultType="java.lang.Integer">
|
||||
select count(*) from(
|
||||
<foreach collection="cuMemberRangeExtList" item="item" close=" " open=" " separator=" union all ">
|
||||
select distinct 1 from(
|
||||
select * from ${rangeTableName}
|
||||
start with pk_member= #{item.pkMember}
|
||||
connect by pk_parent = prior pk_member)
|
||||
where pk_range_awards>= #{pkRangeAwards} and pay_time <= #{orderDate}
|
||||
</foreach>)
|
||||
</select>
|
||||
|
||||
<select id="querySecondCuMemberRangeExtByParent" resultMap="CuMemberRangeExt">
|
||||
select a.pk_member,
|
||||
a.pk_parent,
|
||||
nvl(b.pk_settle_country, 1) pk_settle_country,
|
||||
a.pk_range_awards,
|
||||
a.consume_status,
|
||||
nvl(b.income_status, 0) income_status,
|
||||
nvl(b.consume_pv, 0) + a.new_pv consume_pv,
|
||||
a.new_pv,
|
||||
a.new_team_pv,
|
||||
a.dept_new_team_pv,
|
||||
nvl(dept_team_consume_amount, 0) dept_team_consume_amount,
|
||||
nvl(b.dept_team_month_amount, 0) dept_team_month_amount,
|
||||
nvl(b.dept_team_month_pv, 0) + a.new_team_pv dept_team_month_pv,
|
||||
nvl(b.dept_team_consume_pv, 0) + a.dept_new_team_pv dept_team_consume_pv,
|
||||
nvl(b.month_pv, 0) + a.new_pv month_pv,
|
||||
nvl(b.effective_num, 0) + a.new_effective_num effective_num,
|
||||
a.new_effective_num,
|
||||
nvl(b.team_consume_pv, 0) + a.new_team_pv team_consume_pv,
|
||||
nvl(b.team_month_pv, 0) + a.new_team_pv team_month_pv,
|
||||
nvl(b.small_area_pv, 0) small_area_pv,
|
||||
a.assess_status,
|
||||
a.month_member,
|
||||
nvl(b.pay_time, null) pay_time,
|
||||
nvl(b.pk_rate, 0) pk_rate,
|
||||
ba.awards_value range_awards_value
|
||||
from ${secondTableName} a
|
||||
left join ${tableName} b
|
||||
on a.pk_member = b.pk_member
|
||||
inner join bd_range_awards ba
|
||||
on a.pk_range_awards = ba.pk_id
|
||||
where ba.del_flag = 0
|
||||
and a.pk_parent = #{pkParent}
|
||||
</select>
|
||||
|
||||
<select id="validateSecondCuMemberPlaceAwards" resultType="java.lang.Integer">
|
||||
select count(*) from(
|
||||
<foreach collection="cuMemberRangeExtList" item="item" close=" " open=" " separator=" union all ">
|
||||
select distinct 1 from(
|
||||
select * from ${secondTableName}
|
||||
start with pk_member= #{item.pkMember}
|
||||
connect by pk_parent = prior pk_member)
|
||||
where pk_range_awards>= #{pkRangeAwards}
|
||||
</foreach>)
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -52,8 +52,12 @@
|
|||
<result column="SHARE_AWARDS_VALUE" property="shareAwardsValue"/>
|
||||
<result column="RANGE_RATIO" property="rangeRatio"/>
|
||||
<result column="MONTH_REPURCHASE_RATIO" property="monthRepurchaseRatio"/>
|
||||
|
||||
<result column="BENEFIT_AVG_RATIO" property="benefitAvgRatio"/>
|
||||
<result column="BENEFIT_SHARE_RATIO" property="benefitShareRatio"/>
|
||||
<result column="coach_algebra" property="coachAlgebra"/>
|
||||
<result column="coach_ratio" property="coachRatio"/>
|
||||
|
||||
<result column="COUNTRY_NAME" property="countryName"/>
|
||||
<result column="big_box_num" property="bigBoxNum"/>
|
||||
<result column="small_box_num" property="smallBoxNum"/>
|
||||
|
@ -436,12 +440,16 @@
|
|||
|
||||
<select id="batchQueryMemberRetailRangeByMemberPk" resultMap="CuMemberRetailRangeExt">
|
||||
<foreach collection="memberPkList" item="item" close=" " open=" " separator="union">
|
||||
select pk_member, member_code, member_name, c.pk_parent, c.pk_awards, c.pk_grade,
|
||||
c.pk_rate, c.enable_status, c.income_status, c.pk_country, c.pk_settle_country,
|
||||
select pk_member, member_code, member_name, c.pk_parent,
|
||||
c.pk_awards, c.pk_grade, c.pk_rate,
|
||||
c.enable_status, c.income_status,
|
||||
c.pk_country, c.pk_settle_country,
|
||||
c.account_status, c.category, c.system_type,
|
||||
bg.grade_value, bg.grade_name, bw.awards_value, bw.awards_name,
|
||||
bg.grade_value, bg.grade_name,
|
||||
bw.awards_value, bw.awards_name,
|
||||
c.pk_share_awards, bwa.awards_value share_awards_value,
|
||||
bw.range_ratio, bw.month_repurchase_ratio, bw.benefit_avg_ratio, bw.benefit_share_ratio
|
||||
bw.range_ratio, bw.month_repurchase_ratio, bw.benefit_avg_ratio, bw.benefit_share_ratio,
|
||||
bw.coach_algebra, bw.coach_ratio
|
||||
from (
|
||||
select *
|
||||
from ${rangeTableName}
|
||||
|
|
|
@ -94,47 +94,6 @@
|
|||
b.IS_EXAMINE,b.ASSESS_STATUS,b.PK_COUNTRY,b.PK_CREATOR)
|
||||
|
||||
</insert>
|
||||
<insert id="insertShareCuMemberAssess">
|
||||
merge into ${tableName} a
|
||||
using(
|
||||
select pk_member,#{period} period,#{month} settle_month,1 assess_type,pk_awards,nvl(b.SHARE_CHECK,0) ASSESS_TARGET,
|
||||
1 IS_EXAMINE,2 assess_status,ct.pk_settle_country PK_COUNTRY,1 pk_creator
|
||||
from ${sourceTableName} ct
|
||||
left join bd_awards b
|
||||
on ct.pk_awards=b.pk_id
|
||||
where category=0 and awards_value >0
|
||||
) b
|
||||
on (a.pk_member=b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||||
WHEN MATCHED THEN
|
||||
update set a.SETTLE_MONTH=b.SETTLE_MONTH,a.PK_AWARDS=b.PK_AWARDS,a.ASSESS_TARGET=b.ASSESS_TARGET,
|
||||
a.IS_EXAMINE=b.IS_EXAMINE,a.ASSESS_STATUS=b.ASSESS_STATUS
|
||||
when not matched then
|
||||
insert (PK_MEMBER,period,SETTLE_MONTH,ASSESS_TYPE,PK_AWARDS,ASSESS_TARGET,
|
||||
IS_EXAMINE,ASSESS_STATUS,PK_COUNTRY,PK_CREATOR)
|
||||
values(b.PK_MEMBER,b.period,b.SETTLE_MONTH,b.ASSESS_TYPE,b.PK_AWARDS,b.ASSESS_TARGET,
|
||||
b.IS_EXAMINE,b.ASSESS_STATUS,b.PK_COUNTRY,b.PK_CREATOR)
|
||||
</insert>
|
||||
<insert id="insertTmpCuMemberAssess">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberAssessesList" separator=" " >
|
||||
into tmp_cu_member_assess(pk_id,pk_awards,assess_target,assess_status,month_add,month_used,month_surplus,
|
||||
is_examine) values
|
||||
(
|
||||
#{item.pkId},#{item.pkAwards},#{item.assessTarget},#{item.assessStatus},#{item.monthAdd},#{item.monthUsed},#{item.monthSurplus},
|
||||
#{item.isExamine})
|
||||
</foreach>
|
||||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
|
||||
<update id="createCuMemberAssessTable">
|
||||
create table ${tableName}
|
||||
(
|
||||
<include refid="CuMemberAssessColumn"></include>
|
||||
)
|
||||
</update>
|
||||
<update id="createCuMemberTableUniqueIndex">
|
||||
create unique index ${tableName}_PK_M on ${tableName}(PK_MEMBER,period, assess_type)
|
||||
</update>
|
||||
|
||||
<update id="updateAssessPeriodBeginByBeforeMonth">
|
||||
merge into ${tableName} a
|
||||
|
@ -173,47 +132,6 @@
|
|||
where del_flag= 0 and assess_status=2 and period = #{period} and assess_target <= month_balance+month_add
|
||||
</update>
|
||||
|
||||
<update id="updateAssessPeriodByRevokeOrder">
|
||||
merge into ${tableName} a
|
||||
using (select pk_id,pk_awards,assess_target,assess_status,month_add,month_used,month_surplus,is_examine
|
||||
from TMP_CU_MEMBER_ASSESS) b
|
||||
on (a.pk_id = b.pk_id)
|
||||
when matched then
|
||||
update set a.pk_awards = b.pk_awards,a.assess_target=b.assess_target,a.assess_status=b.assess_status,
|
||||
a.month_add=b.month_add,a.month_used=b.month_used,
|
||||
a.month_surplus=b.month_surplus,a.is_examine=b.is_examine
|
||||
</update>
|
||||
<update id="updateAssessPeriodCheckBalanceByTmp">
|
||||
update ${tableName} a set a.assess_status = 0, a.month_used = a.assess_target, a.month_surplus = a.month_balance+a.month_add-a.assess_target
|
||||
where a.del_flag= 0 and a.assess_status=2 and a.period = #{period} and a.assess_target <= a.month_balance+a.month_add
|
||||
and a.pk_member in
|
||||
<foreach collection="cuMemberList" item="item" open="(" close=")" separator=",">
|
||||
#{item.pkMember}
|
||||
</foreach>
|
||||
</update>
|
||||
<update id="createCuMemberAssessTableComment">
|
||||
comment on column CU_MEMBER_ASSESS2022.pk_id is '主键';
|
||||
comment on column CU_MEMBER_ASSESS2022.pk_member is '会员主键';
|
||||
comment on column CU_MEMBER_ASSESS2022.period is '期间';
|
||||
comment on column CU_MEMBER_ASSESS2022.settle_month is '结算月';
|
||||
comment on column CU_MEMBER_ASSESS2022.assess_type is '考核类型 0=复购考核 1=分红考核';
|
||||
comment on column CU_MEMBER_ASSESS2022.pk_awards is '奖衔';
|
||||
comment on column CU_MEMBER_ASSESS2022.assess_target is '考核目标';
|
||||
comment on column CU_MEMBER_ASSESS2022.is_examine is '是否免考';
|
||||
comment on column CU_MEMBER_ASSESS2022.assess_status is '考核状态 0=考核通过 1=免考通过 2=考核不通过 3=不考核';
|
||||
comment on column CU_MEMBER_ASSESS2022.month_balance is '上月结余';
|
||||
comment on column CU_MEMBER_ASSESS2022.month_add is '考核月新增';
|
||||
comment on column CU_MEMBER_ASSESS2022.cur_month_add is '本月新增';
|
||||
comment on column CU_MEMBER_ASSESS2022.month_used is '考核月使用';
|
||||
comment on column CU_MEMBER_ASSESS2022.month_surplus is '考核月剩余';
|
||||
comment on column CU_MEMBER_ASSESS2022.del_flag is '逻辑删除 (0=未删除,1已删除)';
|
||||
comment on column CU_MEMBER_ASSESS2022.creation_time is '创建时间';
|
||||
comment on column CU_MEMBER_ASSESS2022.modified_time is '修改时间';
|
||||
comment on column CU_MEMBER_ASSESS2022.pk_country is '国家';
|
||||
comment on column CU_MEMBER_ASSESS2022.pk_creator is '创建者';
|
||||
comment on column CU_MEMBER_ASSESS2022.pk_modified is '更新者';
|
||||
</update>
|
||||
|
||||
<update id="updateAssessCuMemberToRepExempt">
|
||||
merge into ${tableName} a
|
||||
using (
|
||||
|
@ -255,243 +173,10 @@
|
|||
update ${settleTableName} set purchase_status=0
|
||||
</update>
|
||||
|
||||
<update id="updateAssessCuMemberToShareExempt">
|
||||
merge into ${tableName} a
|
||||
using (
|
||||
select distinct pk_member from ${settleTableName} ct
|
||||
inner join bd_awards ba
|
||||
on ct.pk_awards = ba.pk_id
|
||||
where ct.share_status=0 and ba.share_check >0
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.is_examine=0 where a.del_flag= 0 and a.period= #{period} and a.assess_type= 1
|
||||
</update>
|
||||
<delete id="deleteCuMemberAssessByPeriod">
|
||||
delete from ${tableName} where period = #{period} and del_flag=0
|
||||
</delete>
|
||||
|
||||
<select id="queryCuMemberAssessCount" resultType="java.lang.Integer">
|
||||
select count(pk_id) from ${tableName} where period = #{period} and del_flag=0
|
||||
</select>
|
||||
|
||||
<select id="queryEnoughCuMemberAssess" resultMap="CuMemberAssess">
|
||||
select pk_id,pk_member,assess_type from ${tableName}
|
||||
where del_flag= 0 and assess_status=2 and period = #{period} and month_used <= month_balance+month_add
|
||||
</select>
|
||||
<select id="queryExemptAssessCuMember" resultMap="CuMemberAssess">
|
||||
select assess_type,pk_member from ${tableName}
|
||||
where del_flag= 0 and is_examine = 0 and period = #{period}
|
||||
</select>
|
||||
<select id="queryAssessPeriodByRevokeOrder" resultMap="CuMemberAssess">
|
||||
select sa.pk_id,sa.pk_member,sa.assess_type,sa.assess_target,sa.is_examine,sa.assess_status,
|
||||
sa.month_balance,sa.month_add,sa.month_used,sa.month_surplus,
|
||||
st.pk_awards,sa.pk_awards pk_original_awards,sa.pk_country from ${tableName} sa
|
||||
inner join ${settleTableName} st
|
||||
on sa.pk_member=st.pk_member
|
||||
where sa.del_flag= 0 and sa.is_examine = 0 and sa.period = #{period}
|
||||
and sa.pk_member in
|
||||
<foreach collection="saOrderList" item="item" open="(" close=")" separator=",">
|
||||
#{item.pkMember}
|
||||
</foreach>
|
||||
</select>
|
||||
<select id="queryCuMemberAssessByMember" resultMap="CuMemberAssess">
|
||||
select pk_member,assess_status from ${tableName}
|
||||
where period= #{period} and assess_type=#{assessType} and assess_status in(0,1)
|
||||
and pk_member in
|
||||
<foreach collection="cuMemberSettleExtList" item="item" open="(" close=")" separator=",">
|
||||
#{item.pkMember}
|
||||
</foreach>
|
||||
</select>
|
||||
<select id="queryCuMemberShareAssess" resultType="com.hzs.common.domain.member.detail.CuMemberAssess">
|
||||
select pk_member,PERIOD,PK_AWARDS,assess_status,pk_country from ${tableName} where period= #{period} and assess_type=1
|
||||
and assess_status in(0,1) and pk_country=1
|
||||
union
|
||||
select ca.pk_member,ca.PERIOD,ca.PK_AWARDS,ca.assess_status,ca.pk_country from ${tableName} ca
|
||||
inner join bd_awards ba
|
||||
on ca.PK_AWARDS=ba.pk_id
|
||||
where period= #{period} and assess_type=0 and assess_status in(0,1) and ca.pk_country >1 and ba.awards_value>0
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<!-- 会员-考核明细列表-->
|
||||
<select id="selectAssessList"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
|
||||
select * from (
|
||||
SELECT
|
||||
a.PK_ASSESS pkAssess,
|
||||
a.PK_MEMBER pkMember,
|
||||
a.TRADE_TIME tradeTime,
|
||||
a.PK_ORDER pkOrder,
|
||||
a.CHANGE_TYPE changeType,
|
||||
a.TRADE_ACHIEVE tradeAchieve,
|
||||
0 orderAssAchieve,
|
||||
0 orderAchieve,
|
||||
'' orderCode
|
||||
FROM
|
||||
CU_MEMBER_ASSESS_DETAIL a
|
||||
LEFT JOIN ${tableName} b on b.PK_ID=a.PK_ASSESS
|
||||
WHERE
|
||||
a.DEL_FLAG = 0
|
||||
<if test="pkMember != null ">
|
||||
AND a.PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
<if test="pkCountry != null ">
|
||||
AND a.PK_COUNTRY = #{pkCountry}
|
||||
</if>
|
||||
|
||||
<if test="changeType != null ">
|
||||
AND a.CHANGE_TYPE = #{changeType}
|
||||
</if>
|
||||
<if test="assessType != null ">
|
||||
AND b.ASSESS_TYPE = #{assessType}
|
||||
</if>
|
||||
<if test="assessStatus != null ">
|
||||
AND b.ASSESS_STATUS = #{assessStatus}
|
||||
</if>
|
||||
|
||||
<if test="changeType ==null and assessStatus==null ">
|
||||
UNION ALL
|
||||
select
|
||||
null pkAssess,
|
||||
PK_MEMBER pkMember,
|
||||
PAY_TIME tradeTime,
|
||||
null pkOrder,
|
||||
null changeType,
|
||||
null tradeAchieve,
|
||||
ORDER_ASS_ACHIEVE orderAssAchieve,
|
||||
ORDER_ACHIEVE orderAchieve,
|
||||
ORDER_CODE orderCode
|
||||
from SA_ORDER
|
||||
WHERE
|
||||
DEL_FLAG = 0
|
||||
<if test="pkMember != null ">
|
||||
AND PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
<if test="orderTypeList != null ">
|
||||
and ORDER_TYPE in
|
||||
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="assessType == 0 ">
|
||||
AND order_achieve > 0
|
||||
</if>
|
||||
<if test="assessType == 1 ">
|
||||
AND ORDER_ASS_ACHIEVE > 0
|
||||
</if>
|
||||
|
||||
<if test="pkCountry != null ">
|
||||
AND PK_COUNTRY = #{pkCountry}
|
||||
</if>
|
||||
|
||||
<if test="startDate != null">
|
||||
and PAY_TIME >= #{startDate, jdbcType=DATE}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
and PAY_TIME < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
|
||||
</if>
|
||||
)
|
||||
order by tradeTime desc
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
<!--查询会员月度考核-->
|
||||
<select id="getMemberAssessMonthList"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
SELECT
|
||||
a.pk_id pkId,
|
||||
a.SETTLE_MONTH settleMonth,
|
||||
a.ASSESS_STATUS assessStatus,
|
||||
a.MONTH_SURPLUS monthSurplus,
|
||||
a.CREATION_TIME creationTime
|
||||
FROM
|
||||
${tableName} a
|
||||
WHERE
|
||||
a.DEL_FLAG = 0
|
||||
<if test="period != null ">
|
||||
AND a.period=#{period}
|
||||
</if>
|
||||
<if test="pkMember != null ">
|
||||
AND a.PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
<if test="pkCountry != null ">
|
||||
AND a.PK_COUNTRY = #{pkCountry}
|
||||
</if>
|
||||
<if test="assessType != null ">
|
||||
AND a.ASSESS_TYPE = #{assessType}
|
||||
</if>
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
<!--根据考核类型查询会员订单信息-->
|
||||
<select id="getOrderByAssessList"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
select PK_MEMBER pkMember,
|
||||
PAY_TIME tradeTime,
|
||||
ORDER_ASS_ACHIEVE orderAssAchieve,
|
||||
ORDER_ACHIEVE orderAchieve,
|
||||
ORDER_TYPE orderType,
|
||||
ORDER_CODE orderCode
|
||||
from SA_ORDER
|
||||
WHERE
|
||||
DEL_FLAG = 0
|
||||
<if test="pkMember != null ">
|
||||
AND PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
<if test="pkCountry != null ">
|
||||
AND PK_COUNTRY = #{pkCountry}
|
||||
</if>
|
||||
<if test="orderType != null ">
|
||||
AND ORDER_TYPE = #{orderType}
|
||||
</if>
|
||||
<if test="startDate != null">
|
||||
and PAY_TIME >= #{startDate, jdbcType=DATE}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
and PAY_TIME < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
order by PAY_TIME desc
|
||||
</select>
|
||||
|
||||
|
||||
<!--查询会员订单考核积分-->
|
||||
<select id="getOrderAssessList" parameterType="com.hzs.bonus.detail.vo.CuMemberAssessVO"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
SELECT
|
||||
sum (ORDER_ASS_ACHIEVE) orderAssAchieve,
|
||||
sum (ORDER_ACHIEVE) orderAchieve
|
||||
FROM
|
||||
SA_ORDER a
|
||||
WHERE
|
||||
a.DEL_FLAG = 0
|
||||
<if test="orderTypeList != null ">
|
||||
AND a.order_type in
|
||||
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="pkMember != null ">
|
||||
AND a.PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
<if test="pkCountry != null ">
|
||||
AND a.PK_COUNTRY = #{pkCountry}
|
||||
</if>
|
||||
<if test="startDate != null">
|
||||
and a.PAY_TIME >= #{startDate, jdbcType=DATE}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
and a.PAY_TIME < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
|
||||
</select>
|
||||
<select id="queryCuMemberAssTotal" resultType="com.hzs.common.domain.member.detail.CuMemberAssess">
|
||||
select cm.pk_awards pkAwards,count(cm.pk_id) assessStatus from ${settleTable} cm
|
||||
inner join bd_awards ba
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
package com.hzs.system.config.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
|
||||
/**
|
||||
* 极差奖衔配置表 Mapper 接口
|
||||
*/
|
||||
public interface BdRangeAwardsMapper extends BaseMapper<BdRangeAwards> {
|
||||
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
package com.hzs.system.config.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
|
||||
/**
|
||||
* 极差奖衔配置表 服务类
|
||||
*/
|
||||
public interface IBdRangeAwardsService extends IService<BdRangeAwards> {
|
||||
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
package com.hzs.system.config.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
import com.hzs.system.config.mapper.BdRangeAwardsMapper;
|
||||
import com.hzs.system.config.service.IBdRangeAwardsService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 极差奖衔配置表 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class BdRangeAwardsServiceImpl extends ServiceImpl<BdRangeAwardsMapper, BdRangeAwards> implements IBdRangeAwardsService {
|
||||
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
<?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.system.config.mapper.BdRangeAwardsMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdRangeAwards">
|
||||
<id column="PK_ID" property="pkId" />
|
||||
<result column="DEL_FLAG" property="delFlag" />
|
||||
<result column="PK_COUNTRY" property="pkCountry" />
|
||||
<result column="CREATION_TIME" property="creationTime" />
|
||||
<result column="MODIFIED_TIME" property="modifiedTime" />
|
||||
<result column="PK_CREATOR" property="pkCreator" />
|
||||
<result column="PK_MODIFIED" property="pkModified" />
|
||||
<result column="AWARDS_NAME" property="awardsName" />
|
||||
<result column="AWARDS_VALUE" property="awardsValue" />
|
||||
<result column="TEAM_CONSUME_CHECK" property="teamConsumeCheck" />
|
||||
<result column="COMMUNITY_CHECK" property="communityCheck" />
|
||||
<result column="CONSUME_PV" property="consumePv" />
|
||||
<result column="PURCHASE_CHECK" property="purchaseCheck" />
|
||||
<result column="RECOMMEND_NUM" property="recommendNum" />
|
||||
<result column="PLACE_NUM" property="placeNum" />
|
||||
<result column="CHECK_AWARDS" property="checkAwards" />
|
||||
<result column="RANGE_RATIO" property="rangeRatio" />
|
||||
<result column="ORDINARY_RATIO" property="ordinaryRatio" />
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
|
@ -57,11 +57,6 @@ public class TableNameConstants {
|
|||
*/
|
||||
public static final String CU_MEMBER_MONTH = "cu_member_month";
|
||||
|
||||
/**
|
||||
* 会员考核记录表序列
|
||||
*/
|
||||
public static final String CU_MEMBER_ASSESS_SEQ = "cu_member_assess_seq";
|
||||
|
||||
/**
|
||||
* 会员统计金额业绩盒数表
|
||||
*/
|
||||
|
|
|
@ -5,45 +5,11 @@ package com.hzs.common.core.constant.msg;
|
|||
*/
|
||||
public class BonusMsgConstants {
|
||||
|
||||
/**
|
||||
* 直推收益备注 -- 当前是第%d轮,第%d次,订单编号%s,%s为%s贡献了推荐收益,计算业绩%f,直推比例%f。
|
||||
*/
|
||||
public static String RECOMMEND = "当前是第%d轮,第%d次,订单编号%s,%s为%s贡献了推荐收益,计算业绩%f,直推比例%f。";
|
||||
|
||||
public static String RANGE_RECOMMEND = "当前是第%d代,第%d次,订单编号%s,%s为%s贡献了推互助收益,计算业绩%f。";
|
||||
|
||||
/**
|
||||
* 直推收益备注 -- 订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。
|
||||
*/
|
||||
public static String RECOMMEND_DIRECT = "订单编号%s,%s为%s贡献了推荐收益,推荐收益为%f。";
|
||||
public static String RECOMMEND_SPECIAL_DIRECT = "订单编号%s,%s为%s贡献了乐学易考推荐级差收益,推荐级差收益为%f。";
|
||||
/**
|
||||
* 拓展收益备注 -- 当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f。
|
||||
*/
|
||||
public static String EXPAND = "当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了拓展收益,计算业绩%f,拓展比例%f。";
|
||||
|
||||
/**
|
||||
* 辅导收益备注 -- 当前是第%d代,共#代,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f。
|
||||
*/
|
||||
public static String COACH = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f。";
|
||||
|
||||
/**
|
||||
* 辅导收益备注 -- 当前是第%d代,共#代,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f。
|
||||
*/
|
||||
public static String RANGE_COACH = "当前是第%d代,共%d代,订单编号%s,%s为%s贡献了幸运收益,计算业绩%f,计算比例%f。";
|
||||
|
||||
/**
|
||||
* 报单服务费收益备注 -- 订单编号%s,%s为%s贡献了报单服务费收益,计算业绩%f,报单服务费比例%f。
|
||||
*/
|
||||
public static String SERVICE = "订单编号%s,%s为%s贡献了报单服务费收益,计算业绩%f,报单服务费比例%f。";
|
||||
|
||||
/**
|
||||
* 店铺补贴
|
||||
*/
|
||||
public static String RANGE_SERVICE = "订单编号%s,%s为%s贡献了店铺补贴收益,计算业绩%f,店铺补贴比例%f。";
|
||||
|
||||
public static String MONTH_SERVICE = "获得%f月报单服务费收益,结算月%s。";
|
||||
|
||||
/**
|
||||
* 月度分红平均收益
|
||||
*/
|
||||
|
@ -59,51 +25,10 @@ public class BonusMsgConstants {
|
|||
*/
|
||||
public static String RETAIL_AREA_INCOME = "订单编号%s,%s为%s贡献了区域分红,区域分红%f,收益县%s。";
|
||||
|
||||
|
||||
/**
|
||||
* 分红收益备注 -- %s获得分红收益%f。
|
||||
* 辅导收益备注 -- 当前是第%d代,共#代,订单编号%s,%s为%s贡献了辅导收益,计算业绩%f,辅导比例%f。
|
||||
*/
|
||||
public static String SHARE = "%s获得福利收益%f。";
|
||||
|
||||
/**
|
||||
* -- 订单编号%s,%s为%s贡献了海粉推荐收益,海粉推荐收益%f。
|
||||
*/
|
||||
public static String HAI_FUN = "订单编号%s,%s为%s贡献了海粉推荐收益,海粉推荐收益%f。";
|
||||
|
||||
/**
|
||||
* 复购券收益备注 -- %s获得复购券均分收益%f。
|
||||
*/
|
||||
public static String SHARE_COUPON = "%s获得复购券均分收益%f。";
|
||||
|
||||
/**
|
||||
* 复购券收益备注 -- %s获得店铺收益%f。
|
||||
*/
|
||||
public static String STORE = "%s获得店铺收益%f。";
|
||||
|
||||
/**
|
||||
* 车奖积分收益备注 -- 获得车奖积分收益%f。
|
||||
*/
|
||||
public static String CAR_AWARD_POINTS = "获得车奖积分收益%f。";
|
||||
|
||||
/**
|
||||
* 嗨粉推荐收益备注 -- 订单编号%s,%s为%s贡献了嗨粉推荐收益,获得嗨粉推荐奖金%f。
|
||||
*/
|
||||
public static String HI_FUN = "订单编号%s,%s为%s贡献了嗨粉推荐收益,获得嗨粉推荐奖金%f。";
|
||||
|
||||
/**
|
||||
* 复购拓展收益备注 -- 订单编号%s,%s为%s贡献了复购推荐收益,计算业绩%f,直推比例%f。
|
||||
*/
|
||||
public static String REPURCHASE_PUSH = "订单编号%s,%s为%s贡献了复购推荐收益,计算业绩%f,直推比例%f。";
|
||||
|
||||
/**
|
||||
* 复购拓展收益备注 -- 当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了复购拓展收益,计算业绩%f,拓展比例%f。
|
||||
*/
|
||||
public static String REPURCHASE_EXPAND = "当前是第%d碰,共%d碰,订单编号%s,%s为%s贡献了复购拓展收益,计算业绩%f,拓展比例%f。";
|
||||
|
||||
/**
|
||||
* 复购级差 -- 订单编号%s,%s为%s贡献了分享级差收益,计算业绩%f,前一级差等级名称%s,当前级差等级名称%s。
|
||||
*/
|
||||
public static String SHARE_RANGE = "订单编号%s,%s为%s贡献了复购级差收益,计算业绩%f,前一级差等级名称%s,当前级差等级名称%s。";
|
||||
public static String RETAIL_COACH = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了培育津贴,计算业绩%f,培育比例%f。";
|
||||
|
||||
/**
|
||||
* 月度福利级差
|
||||
|
@ -124,32 +49,6 @@ public class BonusMsgConstants {
|
|||
*/
|
||||
public static String ORI_RANGE = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,等级名称%s。";
|
||||
|
||||
public static String LE_SHARE_RANGE = "订单编号%s,%s为%s贡献了复购级差收益,收益%f。";
|
||||
|
||||
/**
|
||||
* 分享级差 -- 订单编号%s,%s为%s贡献了分享级差收益(乐学易考),使用代金券%f,当前等级%s。
|
||||
*/
|
||||
// public static String LE_XUE_SHARE_RANGE = "MSG_BONUS_018";
|
||||
public static String LE_XUE_SHARE_RANGE = "订单编号%s,%s为%s贡献了分享级差收益(乐学易考),使用代金券%f,当前等级%s。";
|
||||
|
||||
/**
|
||||
* 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f。
|
||||
*/
|
||||
// public static String REPURCHASE_COUPON_RANGE = "MSG_BONUS_019";
|
||||
public static String REPURCHASE_COUPON_RANGE = "订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f。";
|
||||
|
||||
/**
|
||||
* 云代首购 -- 订单编号%s,%s为%s贡献了云代首购业绩,计算业绩%f,云代首购比例%f。
|
||||
*/
|
||||
// public static String CLOUD_AGENT_FIRST_REPURCHASE = "MSG_BONUS_020";
|
||||
public static String CLOUD_AGENT_FIRST_REPURCHASE = "订单编号%s,%s为%s贡献了云代首购业绩,计算业绩%f,云代首购比例%f。";
|
||||
|
||||
/**
|
||||
* 云代复购 -- 订单编号%s,%s为%s贡献了云代复购业绩,计算业绩%f,云代复购比例%f。
|
||||
*/
|
||||
// public static String CLOUD_AGENT_REPURCHASE = "MSG_BONUS_021";
|
||||
public static String CLOUD_AGENT_REPURCHASE = "订单编号%s,%s为%s贡献了云代复购业绩,计算业绩%f,云代复购比例%f。";
|
||||
|
||||
/**
|
||||
* 奖金重算 -- 只能重算7天内的奖金!
|
||||
*/
|
||||
|
|
|
@ -6,12 +6,6 @@ import lombok.Getter;
|
|||
|
||||
/**
|
||||
* 计算类型
|
||||
*
|
||||
* @author: sui q
|
||||
* @time: 2022/8/25 15:09
|
||||
* @description:
|
||||
* @classname: ECalType
|
||||
* @package_name: com.hzs.common.core.enums
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -1,326 +0,0 @@
|
|||
package com.hzs.common.domain.member.achieve;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.hzs.common.core.annotation.Excel;
|
||||
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-15
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName("CU_MEMBER_RANGE")
|
||||
public class CuMemberRange extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 会员主键
|
||||
*/
|
||||
@TableField("PK_MEMBER")
|
||||
private Long pkMember;
|
||||
|
||||
/**
|
||||
* 推荐人
|
||||
*/
|
||||
@TableField("PK_PARENT")
|
||||
private Long pkParent;
|
||||
|
||||
/**
|
||||
* 会员编号
|
||||
*/
|
||||
@TableField("MEMBER_CODE")
|
||||
private String memberCode;
|
||||
|
||||
/**
|
||||
* 会员名称
|
||||
*/
|
||||
@TableField("MEMBER_NAME")
|
||||
private String memberName;
|
||||
|
||||
/**
|
||||
* 会员类型
|
||||
*/
|
||||
@TableField("CUSTOMER_TYPE")
|
||||
private Integer customerType;
|
||||
|
||||
/**
|
||||
* 手机号
|
||||
*/
|
||||
@TableField("PHONE")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 等级
|
||||
*/
|
||||
@TableField("PK_GRADE")
|
||||
private Integer pkGrade;
|
||||
|
||||
/**
|
||||
* 奖衔
|
||||
*/
|
||||
@TableField("PK_AWARDS")
|
||||
private Integer pkAwards;
|
||||
|
||||
/**
|
||||
* 极差奖衔
|
||||
*/
|
||||
@TableField("PK_RANGE_AWARDS")
|
||||
private Integer pkRangeAwards;
|
||||
|
||||
/**
|
||||
* 福利奖衔
|
||||
*/
|
||||
@TableField("PK_BENEFIT_AWARDS")
|
||||
private Integer pkBenefitAwards;
|
||||
|
||||
/**
|
||||
* 账户状态
|
||||
*/
|
||||
@TableField("ACCOUNT_STATUS")
|
||||
private Integer accountStatus;
|
||||
|
||||
/**
|
||||
* 支付状态
|
||||
*/
|
||||
@TableField("PAY_STATUS")
|
||||
private Integer payStatus;
|
||||
|
||||
/**
|
||||
* 注册权限
|
||||
*/
|
||||
@TableField("REGISTER_AUTHORITY")
|
||||
private Integer registerAuthority;
|
||||
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
@TableField("CATEGORY")
|
||||
private Integer category;
|
||||
|
||||
/**
|
||||
* 免考状态
|
||||
*/
|
||||
@TableField("PURCHASE_STATUS")
|
||||
private Integer purchaseStatus;
|
||||
|
||||
/**
|
||||
* 收益状态
|
||||
*/
|
||||
@TableField("INCOME_STATUS")
|
||||
private Integer incomeStatus;
|
||||
|
||||
/**
|
||||
* 团队
|
||||
*/
|
||||
@TableField("PK_TEAM_CODE")
|
||||
private Long pkTeamCode;
|
||||
|
||||
/**
|
||||
* 注册中心
|
||||
*/
|
||||
@TableField("PK_CENTER_CODE")
|
||||
private Long pkCenterCode;
|
||||
|
||||
/**
|
||||
* 体系
|
||||
*/
|
||||
@TableField("PK_VERTEX")
|
||||
private Long pkVertex;
|
||||
|
||||
/**
|
||||
* 结算国家
|
||||
*/
|
||||
@TableField("PK_SETTLE_COUNTRY")
|
||||
private Integer pkSettleCountry;
|
||||
|
||||
/**
|
||||
* 是否实名认证
|
||||
*/
|
||||
@TableField("IS_REAL_NAME")
|
||||
private Integer isRealName;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
@TableField("PK_RATE")
|
||||
private Integer pkRate;
|
||||
|
||||
/**
|
||||
* 消费状态
|
||||
*/
|
||||
@TableField("CONSUME_STATUS")
|
||||
private Integer consumeStatus;
|
||||
|
||||
/**
|
||||
* 消费pv汇总
|
||||
*/
|
||||
@TableField("CONSUME_PV")
|
||||
private BigDecimal consumePv;
|
||||
|
||||
/**
|
||||
* 当月消费pv
|
||||
*/
|
||||
@TableField("MONTH_PV")
|
||||
private BigDecimal monthPv;
|
||||
|
||||
/**
|
||||
* 个人新增消费pv
|
||||
*/
|
||||
@TableField("NEW_PV")
|
||||
private BigDecimal newPv;
|
||||
|
||||
/**
|
||||
* 新增团队消费pv
|
||||
*/
|
||||
@TableField("NEW_TEAM_PV")
|
||||
private BigDecimal newTeamPv;
|
||||
|
||||
/**
|
||||
* 新增团队消费pv
|
||||
*/
|
||||
@TableField("dept_new_team_pv")
|
||||
private BigDecimal deptNewTeamPv;
|
||||
|
||||
/**
|
||||
* 推荐有效数量
|
||||
*/
|
||||
@TableField("EFFECTIVE_NUM")
|
||||
private Integer effectiveNum;
|
||||
|
||||
/**
|
||||
* 推荐购买EV的会员有效购买数量
|
||||
*/
|
||||
@TableField("EV_EFFECTIVE_NUM")
|
||||
private Integer evEffectiveNum;
|
||||
|
||||
/**
|
||||
* 是否已经为推荐人提供有效计数,0=是,1=否
|
||||
*/
|
||||
@TableField("provide_state")
|
||||
private Integer provideState;
|
||||
|
||||
/**
|
||||
* 自身购买EV有效数量
|
||||
*/
|
||||
@TableField("BUY_EFFECTIVE_NUM")
|
||||
private Integer buyEffectiveNum;
|
||||
|
||||
/**
|
||||
* 第一代推荐数量,拿奖金数量
|
||||
*/
|
||||
@TableField("FIRST_AGENT")
|
||||
private Integer firstAgent;
|
||||
|
||||
/**
|
||||
* 第二代推荐数量,拿奖金数量
|
||||
*/
|
||||
@TableField("SECOND_AGENT")
|
||||
private Integer secondAgent;
|
||||
|
||||
/**
|
||||
* 推荐数量(暂时有问题)
|
||||
*/
|
||||
@TableField("RECOMMEND_NUM")
|
||||
private Integer recommendNum;
|
||||
|
||||
/**
|
||||
* 团队数量 (暂时有问题)
|
||||
*/
|
||||
@TableField("TEAM_NUM")
|
||||
private Integer teamNum;
|
||||
|
||||
/**
|
||||
* 团队消费pv汇总
|
||||
*/
|
||||
@TableField("TEAM_CONSUME_AMOUNT")
|
||||
private BigDecimal teamConsumeAmount;
|
||||
|
||||
/**
|
||||
* 团队消费pv汇总
|
||||
*/
|
||||
@TableField("TEAM_CONSUME_PV")
|
||||
private BigDecimal teamConsumePv;
|
||||
|
||||
/**
|
||||
* 团队月消费pv
|
||||
*/
|
||||
@TableField("TEAM_MONTH_AMOUNT")
|
||||
private BigDecimal teamMonthAmount;
|
||||
|
||||
/**
|
||||
* 团队月消费pv
|
||||
*/
|
||||
@TableField("TEAM_MONTH_PV")
|
||||
private BigDecimal teamMonthPv;
|
||||
|
||||
/**
|
||||
* 团队消费pv汇总
|
||||
*/
|
||||
@TableField("DEPT_TEAM_CONSUME_AMOUNT")
|
||||
private BigDecimal deptTeamConsumeAmount;
|
||||
|
||||
/**
|
||||
* 团队消费pv汇总
|
||||
*/
|
||||
@TableField("DEPT_TEAM_CONSUME_PV")
|
||||
private BigDecimal deptTeamConsumePv;
|
||||
|
||||
/**
|
||||
* 团队月消费pv
|
||||
*/
|
||||
@TableField("DEPT_TEAM_MONTH_AMOUNT")
|
||||
private BigDecimal deptTeamMonthAmount;
|
||||
|
||||
/**
|
||||
* 团队月消费pv
|
||||
*/
|
||||
@TableField("DEPT_TEAM_MONTH_PV")
|
||||
private BigDecimal deptTeamMonthPv;
|
||||
|
||||
/**
|
||||
* 小区pv
|
||||
*/
|
||||
@TableField("SMALL_AREA_PV")
|
||||
private BigDecimal smallAreaPv;
|
||||
|
||||
/**
|
||||
* 考核状态
|
||||
*/
|
||||
@TableField("ASSESS_STATUS")
|
||||
private Integer assessStatus;
|
||||
|
||||
/**
|
||||
* 是否当月会员 0=是 1=否
|
||||
*/
|
||||
@TableField("MONTH_MEMBER")
|
||||
private Integer monthMember;
|
||||
|
||||
/**
|
||||
* 支付时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@TableField("PAY_TIME")
|
||||
private Date payTime;
|
||||
|
||||
/**
|
||||
* 极差店铺
|
||||
*/
|
||||
@TableField("RANGE_STORE_STATUS")
|
||||
private Integer rangeStoreStatus;
|
||||
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
package com.hzs.common.domain.member.achieve.ext;
|
||||
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRange;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @description: 极差扩展
|
||||
* @author: sui q
|
||||
* @time: 2024/10/15 15:32
|
||||
* @classname: CuMemberRangeExt
|
||||
* @package_name: com.hzs.common.domain.member.achieve.ext
|
||||
* version 1.0.0
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CuMemberRangeExt extends CuMemberRange {
|
||||
|
||||
/**
|
||||
* 极差奖衔
|
||||
*/
|
||||
private Integer rangeAwardsValue;
|
||||
|
||||
/**
|
||||
* 订单主键
|
||||
*/
|
||||
private Long pkOrder;
|
||||
|
||||
/**
|
||||
* 新增推荐有效数量
|
||||
*/
|
||||
private Integer newEffectiveNum;
|
||||
|
||||
}
|
|
@ -63,6 +63,15 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
|
|||
*/
|
||||
private BigDecimal smallAreaConsumePv;
|
||||
|
||||
/**
|
||||
* 培育津贴代数
|
||||
*/
|
||||
private Integer coachAlgebra;
|
||||
/**
|
||||
* 培育津贴比例
|
||||
*/
|
||||
private BigDecimal coachRatio;
|
||||
|
||||
/**
|
||||
* 县级名称
|
||||
*/
|
||||
|
|
|
@ -11,12 +11,7 @@ import lombok.*;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员奖金-辅导收益明细表
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-11-15
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
|
|
@ -4,13 +4,6 @@ import com.hzs.common.domain.member.detail.CuMemberAssess;
|
|||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: sui q
|
||||
* @Time: 2022/11/9 17:04
|
||||
* @Classname: CuMemberAssessExt
|
||||
* @PackageName: com.hzs.common.domain.member.ext
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CuMemberAssessExt extends CuMemberAssess {
|
||||
|
|
|
@ -1,101 +0,0 @@
|
|||
package com.hzs.common.domain.system.config;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 极差奖衔配置表
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName("BD_RANGE_AWARDS")
|
||||
public class BdRangeAwards extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId("PK_ID")
|
||||
private Integer pkId;
|
||||
|
||||
/**
|
||||
* 奖衔等级
|
||||
*/
|
||||
@TableField("AWARDS_NAME")
|
||||
private String awardsName;
|
||||
|
||||
/**
|
||||
* 奖衔值
|
||||
*/
|
||||
@TableField("AWARDS_VALUE")
|
||||
private Integer awardsValue;
|
||||
|
||||
/**
|
||||
* 团队业绩
|
||||
*/
|
||||
@TableField("TEAM_CONSUME_CHECK")
|
||||
private BigDecimal teamConsumeCheck;
|
||||
|
||||
/**
|
||||
* 小区考核
|
||||
*/
|
||||
@TableField("COMMUNITY_CHECK")
|
||||
private BigDecimal communityCheck;
|
||||
|
||||
/**
|
||||
* 消费业绩
|
||||
*/
|
||||
@TableField("CONSUME_PV")
|
||||
private BigDecimal consumePv;
|
||||
|
||||
/**
|
||||
* 月考核pv
|
||||
*/
|
||||
@TableField("PURCHASE_CHECK")
|
||||
private BigDecimal purchaseCheck;
|
||||
|
||||
/**
|
||||
* 推荐数量
|
||||
*/
|
||||
@TableField("RECOMMEND_NUM")
|
||||
private Integer recommendNum;
|
||||
|
||||
/**
|
||||
* 部门数量
|
||||
*/
|
||||
@TableField("PLACE_NUM")
|
||||
private Integer placeNum;
|
||||
|
||||
/**
|
||||
* 考核奖衔
|
||||
*/
|
||||
@TableField("CHECK_AWARDS")
|
||||
private Integer checkAwards;
|
||||
|
||||
/**
|
||||
* 极差比例
|
||||
*/
|
||||
@TableField("RANGE_RATIO")
|
||||
private BigDecimal rangeRatio;
|
||||
|
||||
/**
|
||||
* 平级比例
|
||||
*/
|
||||
@TableField("ORDINARY_RATIO")
|
||||
private BigDecimal ordinaryRatio;
|
||||
|
||||
/**
|
||||
* 映射奖衔
|
||||
*/
|
||||
@TableField("PK_AWARDS")
|
||||
private Integer pkAwards;
|
||||
}
|
Loading…
Reference in New Issue