## 奖衔计算方式改为先算奖衔;赠点排点方式问题修复;

This commit is contained in:
cabbage 2025-09-29 18:01:35 +08:00
parent 8b5d7a5f9d
commit 83136f1387
43 changed files with 466 additions and 689 deletions

View File

@ -1,7 +1,6 @@
package com.hzs.system.config.dto;
import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.bonus.BdBonusService;
import com.hzs.common.domain.system.config.*;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.system.sys.dto.BdCurrencyDTO;
@ -27,46 +26,14 @@ public class BonusConfigDTO implements Serializable {
*/
private Map<String, BdBonusItemsExt> bonusItemsExtMap;
/**
* 循环配置 key 第一个键国家主键 +等级第二个键 循环类型 EBonusType
*/
private Map<String, BonusDirectLoopDTO> bonusDirectLoopDtoMap;
/**
* 直推奖励配置 key 第一个键国家主键 第二个键 range_type+pk_level
*/
private Map<String, BonusDirectDTO> bonusDirectDtoMap;
/**
* 一次性补差 key 国家作为主键只有一条
* 奖衔列表
*/
private Map<Integer, BonusDifferenceDTO> bonusDifferenceDtoMap;
/**
* 复购推荐奖励配置 key第一个键国家主键第二个键 代数
*/
private Map<Integer, Map<Integer, BonusRepurchasePushDTO>> bonusRepurchasePushMap;
/**
* 拓展奖配置 国家+等级
*/
private Map<String, BdGrade> gradeMap;
/**
* 主任每个国家值对应的配置 需要主键 memberSettleExt.getPkSettleCountry().toString() + 奖衔值 为了解决服务中心算主任
*/
private Map<String, BdAwards> directorAwardsMap;
/**
* 辅导奖配置 需要主键 memberSettleExt.getPkSettleCountry().toString() + memberSettleExt.getPkAwards()
*/
private Map<String, BdAwards> awardsMap;
/**
* 辅导奖配置 需要主键 memberSettleExt.getPkSettleCountry().toString() + memberSettleExt.getAwardsValue()
*/
private Map<String, BdAwards> awardsValueMap;
private List<BdAwards> awardsList;
/**
@ -74,9 +41,4 @@ public class BonusConfigDTO implements Serializable {
*/
private Map<Integer, BdBonusDeduct> bonusDeductsMap;
/**
* 报单服务费 需要主键 memberSettleExt.getPkSettleCountry().toString() + memberSettleExt.getservicetype()
*/
private Map<String, BdBonusService> bonusServiceMap;
}

View File

@ -5,13 +5,6 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description:
* @Author: sui q
* @Time: 2022/11/14 16:38
* @Classname: BonusDifferenceDTO
* @PackageName: com.hzs.system.config.dto
*/
@Data
public class BonusDifferenceDTO implements Serializable {

View File

@ -6,11 +6,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description: 循环配置
* @Author: sui q
* @Time: 2022/11/14 16:26
* @Classname: BonusDirectLoopDTO
* @PackageName: com.hzs.system.config.dto
* 循环配置
*/
@Data
public class BonusDirectLoopDTO implements Serializable {

View File

@ -6,12 +6,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
/**
* @description: 复购直推dto
* @author: sui q
* @time: 2023/6/29 15:17
* @classname: BonusRepurchasePushDTO
* @package_name: com.hzs.system.config.dto
* version 1.0.0
* 复购直推dto
*/
@Data
public class BonusRepurchasePushDTO implements Serializable {

View File

@ -8,6 +8,7 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/**
@ -121,11 +122,31 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
List<CuMemberRetailRangeExt> listChildRetail(@Param("rangeTableName") String rangeTableName,
@Param("pkParentList") List<Long> pkParentList);
/**
* 更新会员血缘上累计数据
*/
Boolean updateMemberParentDate(@Param("rangeTableName") String rangeTableName,
@Param("achieveList") List<?> achieveList);
/**
* 查询符合奖衔业绩条件会员
*/
List<CuMemberRetailRangeExt> queryEnoughAwardMember(@Param("rangeTableName") String rangeTableName,
@Param("totalCheck") BigDecimal totalCheck,
@Param("pkAwards") Integer pkAwards);
/**
* 查询会员血缘下达标奖衔会员
*/
List<Integer> listChildAwards(@Param("rangeTableName") String rangeTableName,
@Param("pkAwards") Integer pkAwards,
@Param("childMemberList") List<Long> childMemberList);
@Param("childMemberList") List<?> childMemberList);
/**
* 更新会员奖衔
*/
int updateCuMemberAwardsByPeriod(@Param("rangeTableName") String rangeTableName,
@Param("period") Integer period,
@Param("awardType") Integer awardType);
}

View File

@ -94,6 +94,11 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
*/
void truncateCuMemberTreeTable(@Param("tableName") String tableName);
/**
* 清除表数据
*/
void clearTable(@Param("tableName") String tableName);
/**
* 将会员表数据插入结算日表中
*

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.achieve.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.base.CuMember;
@ -82,9 +83,25 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
void initMemberRetailSecondRange(String tableName, CuMemberExt member);
/**
* 更新会员血缘上累计数据
*/
void updateMemberParentDate(String rangeTableName, Map<Long, MemberAchieveParam> memberAchieveHashMap);
/**
* 查询符合奖衔业绩条件会员
*/
List<CuMemberRetailRangeExt> queryEnoughAwardMember(String settleTableName, BigDecimal totalCheck, Integer pkAwards);
/**
* 查询会员血缘下达标奖衔会员
*/
List<Integer> listChildAwards(String rangeTableName, Integer pkAwards, List<Long> childMemberList);
/**
* 更新会员奖衔
*/
void updateCuMemberAwardsByPeriod(String rangeTableName, Integer period);
}

View File

@ -56,6 +56,11 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
*/
void truncateCuMemberTreeTable(String tableName);
/**
* 清除表数据
*/
void clearTable(String tableName);
/**
* 创建会员网体推荐人索引
*
@ -77,4 +82,5 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
*/
void createCuMemberTreePlaceIndex(String tableName);
}

View File

@ -10,7 +10,6 @@ import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.member.achieve.CuMemberAchieve;
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.service.ITransactionCommonService;
import com.hzs.bonus.achieve.mapper.CuMemberAchieveMapper;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import lombok.extern.slf4j.Slf4j;
@ -18,7 +17,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.temporal.ChronoUnit;
import java.util.*;
/**
@ -28,22 +26,11 @@ import java.util.*;
@Service
public class CuMemberAchieveServiceImpl extends ServiceImpl<CuMemberAchieveMapper, CuMemberAchieve> implements ICuMemberAchieveService {
@Autowired
private ICuMemberTreeService cuMemberTreeService;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
}
@Autowired
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
this.cuMemberTreeService = cuMemberTreeService;
}
@Autowired
ITransactionCommonService iTransactionCommonService;
@Override
public String createCuMemberAchieve(String date) {

View File

@ -95,7 +95,7 @@ public class CuMemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetailD
sourceMember.setChildRetailMap(new LinkedHashMap<>());
// 会员直推数据
List<CuMemberRetailRangeExt> retailRangeList = cuMemberRetailRangeMapper.listChildRetail(rangeTableName, Collections.singletonList(sourceMember.getPkParent()));
List<CuMemberRetailRangeExt> retailRangeList = cuMemberRetailRangeMapper.listChildRetail(rangeTableName, Collections.singletonList(sourceMember.getPkMember()));
if (CollectionUtil.isNotEmpty(retailRangeList)) {
// 直推数据列表
LinkedHashMap<Date, CuMemberRetailRangeExt> childRetailMap = sourceMember.getChildRetailMap();

View File

@ -3,9 +3,11 @@ package com.hzs.bonus.achieve.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.achieve.mapper.CuMemberRetailRangeMapper;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.enums.EAwardsType;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
@ -44,7 +46,7 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
@Override
public void mergeMemberRetailRangeDetailByYesterday(String detailTableName, String yesterdayDetailTableName) {
// 清空当前明细表
iCuMemberTreeService.truncateCuMemberTreeTable(detailTableName);
iCuMemberTreeService.clearTable(detailTableName);
// 用昨天的数据初始化当前明细表
baseMapper.mergeMemberRetailRangeDetailByYesterday(detailTableName, yesterdayDetailTableName);
}
@ -173,12 +175,28 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
return cuMemberBonusSettle.handleCutList(cuMemberTreeList);
}
@Override
public void updateMemberParentDate(String rangeTableName, Map<Long, MemberAchieveParam> memberAchieveHashMap) {
if (memberAchieveHashMap.size() == 0) {
return;
}
List<List<?>> listList = cuMemberBonusSettle.handleCutList(memberAchieveHashMap.values(), MagicNumberConstants.BATCH_UPDATE_NUM);
listList.forEach(list -> {
baseMapper.updateMemberParentDate(rangeTableName, list);
});
}
@Override
public List<CuMemberRetailRangeExt> queryEnoughAwardMember(String settleTableName, BigDecimal totalCheck, Integer pkAwards) {
return baseMapper.queryEnoughAwardMember(settleTableName, totalCheck, pkAwards);
}
@Override
public List<Integer> listChildAwards(String rangeTableName, Integer pkAwards, List<Long> childMemberList) {
List<Integer> checkList = new ArrayList<>();
List<List<?>> queryList = cuMemberBonusSettle.handleCutList(childMemberList, MagicNumberConstants.BATCH_QUERY_NUM);
queryList.forEach(tmpList -> {
List<Integer> tmpCheckList = baseMapper.listChildAwards(rangeTableName, pkAwards, childMemberList);
List<Integer> tmpCheckList = baseMapper.listChildAwards(rangeTableName, pkAwards, tmpList);
if (tmpCheckList.size() > 0) {
checkList.addAll(tmpCheckList);
}
@ -186,4 +204,9 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
return checkList;
}
@Override
public void updateCuMemberAwardsByPeriod(String rangeTableName, Integer period) {
baseMapper.updateCuMemberAwardsByPeriod(rangeTableName, period, EAwardsType.RANGE_TYPE.getValue());
}
}

View File

@ -5,7 +5,6 @@ import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.common.core.constant.TableNameConstants;
import com.hzs.common.core.enums.EAwardsType;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.member.achieve.CuMemberTree;
import com.hzs.bonus.achieve.mapper.CuMemberTreeMapper;
@ -55,7 +54,8 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
baseMapper.insertCuMemberRetailRangeByMember(retailRangeTableName);
}
// 创建结算明细表
String retailRangeTableDetailName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + period;;
String retailRangeTableDetailName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + period;
;
number = baseMapper.queryExistOracleTable(retailRangeTableDetailName);
if (number == null || number <= 0) {
baseMapper.createCuMemberRetailDetail(retailRangeTableDetailName);
@ -124,6 +124,11 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
baseMapper.truncateCuMemberTreeTable(tableName);
}
@Override
public void clearTable(String tableName) {
baseMapper.clearTable(tableName);
}
@Override
public void createCuMemberTreeDayOnlyIndex(String tableName) {
baseMapper.createCuMemberTreeDayOnlyIndex(tableName);
@ -139,4 +144,5 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
baseMapper.createCuMemberTreePlaceIndex(tableName);
}
}

View File

@ -17,9 +17,9 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
CuMember getByPkId(@Param("pkId") Serializable id);
/**
* 更新会员奖衔根据临时表
* 更新会员奖衔
*/
int updateCuMemberRetailAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType);
int updateCuMemberAwardsByPeriod(@Param("period") Integer period, @Param("awardType") Integer awardType);
/**
* 更新会员奖衔根据临时表

View File

@ -14,10 +14,11 @@ import java.util.List;
public interface ICuMemberService extends IService<CuMember> {
CuMember getByPkId(Serializable id);
/**
* 更新会员奖衔根据临时表 -- 日结
* 更新会员奖衔
*/
void updateCuMemberRetailRangeByPeriod(Integer period);
void updateCuMemberAwardsByPeriod(Integer period);
/**
* 更新会员奖衔根据临时表

View File

@ -23,8 +23,8 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
}
@Override
public void updateCuMemberRetailRangeByPeriod(Integer period) {
baseMapper.updateCuMemberRetailAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
public void updateCuMemberAwardsByPeriod(Integer period) {
baseMapper.updateCuMemberAwardsByPeriod(period, EAwardsType.RANGE_TYPE.getValue());
}
@Override

View File

@ -1,5 +1,6 @@
package com.hzs.bonus.bonus.service.impl;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.common.core.constant.BonusFieldConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
@ -11,7 +12,6 @@ import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.bonus.*;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.system.config.dto.BonusConfigDTO;
import org.springframework.beans.factory.annotation.Autowired;
@ -234,4 +234,26 @@ public abstract class BonusSettleHandle {
return bdBonusDeduct;
}
/**
* 处理订单累计业绩累计金额
*/
public void assortSaOrder(Map<Long, MemberAchieveParam> memberAchieveHashMap, List<SaOrderExt> orderExtList) {
for (SaOrderExt saOrderExt : orderExtList) {
MemberAchieveParam cuMemberAchieve;
if (memberAchieveHashMap.containsKey(saOrderExt.getPkMember())) {
cuMemberAchieve = memberAchieveHashMap.get(saOrderExt.getPkMember());
} else {
cuMemberAchieve = MemberAchieveParam.builder()
.pkMember(saOrderExt.getPkMember())
.newPv(BigDecimal.ZERO)
.newAmount(BigDecimal.ZERO)
.build();
memberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve);
}
cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve()));
cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount()));
}
}
}

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.base.service.ICuMemberService;
@ -139,7 +140,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 实时网体查询血缘伞上会员更新秒结表奖衔
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(secondRangeTableName, saOrderExt.getPkMember(), EYesNo.YES.getIntValue());
// 恢复秒结表奖衔
iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod, EYesNo.YES.getIntValue());
iCuMemberAwardsService.mergeCuMemberBackAwards(secondRangeTableName, saOrderExt.getPkMember(), currentPeriod);
// 查询 昨天日结 + 今天秒结 血缘伞上+直推
memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember());
} else {
@ -150,7 +151,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 实时网体查询血缘上会员更新订单支付日结表奖衔
iCuMemberRetailRangeService.mergeMemberRetailGradeByMember(rangeTableName, saOrderExt.getPkMember(), EYesNo.NO.getIntValue());
// 恢复日结表奖衔
iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod, EYesNo.NO.getIntValue());
iCuMemberAwardsService.mergeCuMemberBackAwards(rangeTableName, saOrderExt.getPkMember(), beforePeriod);
// 查询 订单下单日结 血缘上会员结算数据
memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
}
@ -275,8 +276,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 结算明细前一天表
String yesterdayRangeDetailTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE_DETAIL + yesterdayPeriod;
// 回退奖衔将奖衔回退到结算前状态
iCuMemberAwardsService.calculateCuMemberRetailRangeAwardsInit(settleDate, period, rangeTableName);
// 初始化结算网体数据昨天数据更新到今天数据
iCuMemberRetailRangeService.mergeMemberRetailRangeByYesterday(rangeTableName, yesterdayRangeTableName, isSameMonth);
// 初始化结算明细数据昨天数据更新到今天数据
@ -286,19 +285,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberRetailDetail> stageList = new ArrayList<>();
if (orderList.size() > 0) {
// 按照血缘查询该会员所有伞上会员
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList);
// 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 会员转map
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
}
}
// 查询血缘会员明细数据一阶段
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE, EBonusStageStatus.NO, null);
// 奖衔
Map<Integer, BdAwards> awardsMap = new HashMap<>();
List<BdAwards> awardsList = bonusConfigDTO.getAwardsList();
@ -313,6 +299,28 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 阶段收益
List<CuMemberBonusStage> cuMemberBonusStageList = new ArrayList<>();
// 更新血缘上个人团队累计业绩用于处理奖衔
Map<Long, MemberAchieveParam> memberAchieveHashMap = new HashMap<>();
// 订单累计业绩累计金额
assortSaOrder(memberAchieveHashMap, orderList);
// 更新血缘上业绩金额
iCuMemberRetailRangeService.updateMemberParentDate(rangeTableName, memberAchieveHashMap);
// 处理奖衔
iCuMemberAwardsService.calculateCuMemberAwards(rangeTableName, awardsList, awardsMap, settleStartDate, period);
// 按照血缘查询该会员所有伞上会员
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList);
// 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 会员转map
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
}
}
// 查询血缘会员明细数据一阶段
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE, EBonusStageStatus.NO, null);
for (SaOrderExt saOrderExt : orderList) {
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
if (null == sourceMember) {
@ -324,10 +332,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 自己消费的相关金额业绩处理
sourceMember.setNewConsumePv(orderAchieve);
sourceMember.setConsumePv(sourceMember.getConsumePv().add(orderAchieve));
sourceMember.setMonthConsumePv(sourceMember.getMonthConsumePv().add(orderAchieve));
sourceMember.setNewConsumeAmount(orderAmount);
sourceMember.setConsumeAmount(sourceMember.getConsumeAmount().add(orderAmount));
sourceMember.setMonthConsumeAmount(sourceMember.getMonthConsumeAmount().add(orderAmount));
// // 自己计算奖衔目前业绩都只往下传所以此处暂时不需要处理订单会员的奖衔
// this.calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, sourceMember);
@ -367,6 +373,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 五折专区
sourceMember.setRepConsumeNewPv(sourceMember.getRepConsumeNewPv().add(orderAchieve));
sourceMember.setRepConsumeNewAmount(sourceMember.getRepConsumeNewAmount().add(orderAmount));
// 领导级差收益 -- 来源PV
this.calculateRetailRangeBonus(cuMemberBonusRangeList, memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period,
awardsMap, saOrderExt, sourceMember);
@ -406,12 +413,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (cuMemberBonusStageList.size() > 0) {
bonusRecordDetailVO.setCuMemberBonusStageList(cuMemberBonusStageList);
}
if (cuMemberAwardsList.size() > 0) {
// 批量插入会员奖衔记录
iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList);
// 更新会员表奖衔数据
iCuMemberService.updateCuMemberRetailRangeByPeriod(period);
}
// if (cuMemberAwardsList.size() > 0) {
// // 批量插入会员奖衔记录
// iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList);
// // 更新会员表奖衔数据
// iCuMemberService.updateCuMemberAwardsByPeriod(period);
// }
// 更新日结数据
iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap);
// 更新日结明细数据
@ -1024,67 +1031,67 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return resultList;
}
/**
* 计算奖衔
*/
private void calculateAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap, List<CuMemberAwards> cuMemberAwardsList,
CuMemberRetailRangeExt targetMember) {
// 校验大小区会员数据
List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
// 计算分红奖衔
while (true) {
// 当月奖衔值 + 5获取下一个奖衔值
int awardsValue = targetMember.getAwardsValue() + 5;
if (retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) {
// 团队累计业绩 >= 奖衔累计业绩
if (null == cuMemberRangeExtList) {
// 昨日结算表查询会员直推数据
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
}
// 大区
BigDecimal consumeBigPv = BigDecimal.ZERO;
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
}
// 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩
BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv());
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// 累计业绩 > 大区业绩则累计就成为大区
consumeBigPv = consumePv;
}
}
// 小区业绩 = 团队累计业绩 - 大区业绩
BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) {
// 小区业绩 >= 考核小区业绩
if (bdAwards.getPlaceDeptNum() > 0) {
// 验证每条血缘下满足达标数量
List<Integer> checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(),
cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList()));
if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) {
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards()));
targetMember.setPkAwards(bdAwards.getPkId());
targetMember.setAwardsValue(bdAwards.getAwardsValue());
continue;
}
} else {
// 不需要考核血缘达标直接给奖衔
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards()));
targetMember.setPkAwards(bdAwards.getPkId());
targetMember.setAwardsValue(bdAwards.getAwardsValue());
continue;
}
}
}
}
break;
}
}
// /**
// * 计算奖衔
// */
// private void calculateAwards(Integer period, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, String rangeTableName,
// SaOrderExt saOrderExt, Map<Integer, BdAwards> retailAwardsMap, List<CuMemberAwards> cuMemberAwardsList,
// CuMemberRetailRangeExt targetMember) {
// // 校验大小区会员数据
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = null;
// // 计算分红奖衔
// while (true) {
// // 当月奖衔值 + 5获取下一个奖衔值
// int awardsValue = targetMember.getAwardsValue() + 5;
// if (retailAwardsMap.containsKey(awardsValue)) {
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
//
// if (ComputeUtil.compareValue(targetMember.getTeamConsumePv(), bdAwards.getTotalCheck())) {
// // 团队累计业绩 >= 奖衔累计业绩
// if (null == cuMemberRangeExtList) {
// // 昨日结算表查询会员直推数据
// cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
// }
// // 大区
// BigDecimal consumeBigPv = BigDecimal.ZERO;
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
// }
// // 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩
// BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv());
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// // 累计业绩 > 大区业绩则累计就成为大区
// consumeBigPv = consumePv;
// }
// }
// // 小区业绩 = 团队累计业绩 - 大区业绩
// BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
// if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) {
// // 小区业绩 >= 考核小区业绩
// if (bdAwards.getPlaceDeptNum() > 0) {
// // 验证每条血缘下满足达标数量
// List<Integer> checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(),
// cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList()));
// if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) {
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards()));
// targetMember.setPkAwards(bdAwards.getPkId());
// targetMember.setAwardsValue(bdAwards.getAwardsValue());
// continue;
// }
// } else {
// // 不需要考核血缘达标直接给奖衔
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, saOrderExt, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards()));
// targetMember.setPkAwards(bdAwards.getPkId());
// targetMember.setAwardsValue(bdAwards.getAwardsValue());
// continue;
// }
// }
// }
// }
// break;
// }
// }
/**
* 计算团队奖衔
@ -1101,11 +1108,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
while (null != targetMember) {
// 累计业绩
targetMember.setTeamNewPv(targetMember.getTeamNewPv().add(orderAchieve));
targetMember.setTeamConsumePv(targetMember.getTeamConsumePv().add(orderAchieve));
targetMember.setTeamMonthPv(targetMember.getTeamMonthPv().add(orderAchieve));
// 累计金额
targetMember.setTeamNewAmount(targetMember.getTeamNewAmount().add(orderAmount));
targetMember.setTeamConsumeAmount(targetMember.getTeamConsumeAmount().add(orderAmount));
targetMember.setTeamMonthAmount(targetMember.getTeamMonthAmount().add(orderAmount));
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
@ -1113,13 +1118,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 团队精品专区
targetMember.setRegTeamNewPv(targetMember.getRegTeamNewPv().add(orderAchieve));
targetMember.setRegTeamNewAmount(targetMember.getRegTeamNewAmount().add(orderAmount));
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()
|| EOrderType.DISCOUNT_ORDER.getValue() == saOrderExt.getOrderType()) {
// 团队商城专区
targetMember.setRepTeamNewPv(targetMember.getRepTeamNewPv().add(orderAchieve));
targetMember.setRepTeamNewAmount(targetMember.getRepTeamNewAmount().add(orderAmount));
}
// 计算奖衔
calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember);
// // 计算奖衔
// calculateAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailAwardsMap, cuMemberAwardsList, targetMember);
targetMember = memberRangeExtMap.get(targetMember.getPkParent());
}

View File

@ -3,8 +3,11 @@ package com.hzs.bonus.detail.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.system.config.BdAwards;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 会员信息-奖衔升级记录 服务类
@ -12,9 +15,9 @@ import java.util.List;
public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 回退极差奖衔每日重新结算先把奖衔回退到前一天
* 计算奖衔
*/
void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName);
void calculateCuMemberAwards(String rangeTableName, List<BdAwards> awardsList, Map<Integer, BdAwards> awardsMap, Date settleDate, Integer period);
/**
* 批量插入奖衔记录
@ -36,6 +39,6 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
/**
* 回退奖衔
*/
void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period, Integer isToday);
void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period);
}

View File

@ -1,21 +1,25 @@
package com.hzs.bonus.detail.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
import com.hzs.common.core.constant.*;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.detail.CuMemberAwards;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.detail.mapper.CuMemberAwardsMapper;
import com.hzs.common.domain.system.config.BdAwards;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* 会员信息-奖衔升级记录 服务实现类
@ -29,9 +33,11 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
private ICuMemberTreeService iCuMemberTreeService;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Autowired
private ICuMemberRetailRangeService iCuMemberRetailRangeService;
@Override
public void calculateCuMemberRetailRangeAwardsInit(String settleDate, Integer period, String rangeTableName) {
public void calculateCuMemberAwards(String rangeTableName, List<BdAwards> awardsList, Map<Integer, BdAwards> awardsMap, Date settleDate, Integer period) {
// 回退结算表奖衔
iCuMemberTreeService.updateBackCuMemberRetailRangeAward(rangeTableName, period);
// 回退会员表奖衔
@ -41,9 +47,94 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
// 更新手动设置奖衔一种有效期前的一种有效期到达的
// 有效期前的奖衔小于手动的修改奖衔
Date date = DateUtils.parseStringToDate(settleDate);
iCuMemberTreeService.updateCuMemberRetailRangeAwardByDate(rangeTableName, date);
iCuMemberService.updateCuMemberRetailRangeAwardByDate(date);
iCuMemberTreeService.updateCuMemberRetailRangeAwardByDate(rangeTableName, settleDate);
iCuMemberService.updateCuMemberRetailRangeAwardByDate(settleDate);
// 会员升级记录
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
// 校验大小区会员数据key:会员IDvalue:会员推荐人列表
Map<Long, List<CuMemberRetailRangeExt>> cuMemberRangeExtMap = new HashMap<>();
for (BdAwards bdAwards : awardsList) {
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryEnoughAwardMember(rangeTableName, bdAwards.getTotalCheck(), bdAwards.getPkId());
cuMemberAwardsList.addAll(this.calculateAwards(rangeTableName, bdAwards, period, cuMemberRetailRangeExtList, cuMemberRangeExtMap));
}
if (cuMemberAwardsList.size() > 0) {
// 插入会员升级记录表
this.saveBatchCuMemberAwards(cuMemberAwardsList);
// 更新会员表奖衔数据
iCuMemberService.updateCuMemberAwardsByPeriod(period);
// 更新结算网体表 -- 结算日期到当前日期的所有日结算表
iCuMemberRetailRangeService.updateCuMemberAwardsByPeriod(rangeTableName, period);
}
}
private List<CuMemberAwards> calculateAwards(String rangeTableName, BdAwards bdAwards, Integer period,
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList, Map<Long, List<CuMemberRetailRangeExt>> cuMemberRangeExtMap) {
// 只满足业绩的
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
if (cuMemberRetailRangeExtList.size() > 0) {
Date nowDate = new Date();
cuMemberRetailRangeExtList.forEach(targetMember -> {
List<CuMemberRetailRangeExt> cuMemberRangeExtList = cuMemberRangeExtMap.get(targetMember.getPkMember());
if (null == cuMemberRangeExtList) {
cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMember.getPkMember());
cuMemberRangeExtMap.put(targetMember.getPkMember(), cuMemberRangeExtList);
}
// 大区
BigDecimal consumeBigPv = BigDecimal.ZERO;
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
// 累计业绩 = 团队累计消费业绩 + 个人累计消费业绩
BigDecimal consumePv = cuMemberRetailRangeExt.getTeamConsumePv().add(cuMemberRetailRangeExt.getConsumePv());
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
// 累计业绩 > 大区业绩则累计就成为大区
consumeBigPv = consumePv;
}
}
// 小区业绩 = 团队累计业绩 - 大区业绩
BigDecimal smallAreaPv = ComputeUtil.computeSubtract(targetMember.getTeamConsumePv(), consumeBigPv);
if (smallAreaPv.compareTo(bdAwards.getCommunityCheck()) >= 0) {
// 小区业绩 >= 考核小区业绩
if (bdAwards.getPlaceDeptNum() > 0) {
if (CollectionUtil.isNotEmpty(cuMemberRangeExtList)) {
// 验证每条血缘下满足达标数量
List<Integer> checkList = iCuMemberRetailRangeService.listChildAwards(rangeTableName, bdAwards.getPkCheckAwardsLeft(),
cuMemberRangeExtList.stream().map(CuMemberRetailRangeExt::getPkMember).collect(Collectors.toList()));
if (CollectionUtil.isNotEmpty(checkList) && checkList.size() >= bdAwards.getPlaceDeptNum()) {
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate));
targetMember.setPkAwards(bdAwards.getPkId());
targetMember.setAwardsValue(bdAwards.getAwardsValue());
}
}
} else {
// 不需要考核血缘达标直接给奖衔
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMember, period, bdAwards, EAwardsType.RANGE_TYPE.getValue(), targetMember.getPkAwards(), nowDate));
targetMember.setPkAwards(bdAwards.getPkId());
targetMember.setAwardsValue(bdAwards.getAwardsValue());
}
}
});
}
return cuMemberAwardsList;
}
private CuMemberAwards getCuMemberRetailAwards(CuMemberRetailRangeExt sourceRangeExt, Integer period, BdAwards bdAwards,
Integer awardType, Integer oldLevel, Date nowDate) {
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
.pkMember(sourceRangeExt.getPkMember())
.period(period)
.upType(EUpgradeType.AUTO_UPGRADE.getValue())
.awardType(awardType)
.oldLevel(null == oldLevel ? sourceRangeExt.getPkAwards() : oldLevel)
.newLevel(bdAwards.getPkId())
.purchaseStatus(EYesNo.NO.getIntValue())
.build();
cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN);
cuMemberAwards.setPkCountry(sourceRangeExt.getPkCountry());
cuMemberAwards.setCreationTime(nowDate);
return cuMemberAwards;
}
@Override
@ -64,28 +155,8 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
}
@Override
public void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period, Integer isToday) {
public void mergeCuMemberBackAwards(String rangeTableName, Long pkMember, Integer period) {
baseMapper.mergeCuMemberBackAwards(rangeTableName, pkMember, period, EAwardsType.RANGE_TYPE.getValue());
if (EYesNo.YES.getIntValue() == isToday) {
// 当天需要处理秒结的分红奖衔
baseMapper.mergeCuMemberBackAwards(rangeTableName, pkMember, period, EAwardsType.SHARE_TYPE.getValue());
}
}
private void getCuMemberAwards(Map<Long, CuMemberSettleExt> originalCuMemberSettleMap, Integer period, List<CuMemberAwards> cuMemberAwardsList, CuMemberSettleExt enoughAwardsMember) {
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
.pkMember(enoughAwardsMember.getPkMember())
.period(period)
.upType(EUpgradeType.AUTO_UPGRADE.getValue())
// 原等级
.oldLevel(originalCuMemberSettleMap.get(enoughAwardsMember.getPkMember()).getPkOriAwards())
.newLevel(enoughAwardsMember.getPkAwards())
// 默认不免考
.purchaseStatus(EYesNo.NO.getIntValue())
.build();
cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN);
cuMemberAwards.setPkCountry(enoughAwardsMember.getPkSettleCountry());
cuMemberAwardsList.add(cuMemberAwards);
}
}

View File

@ -943,6 +943,48 @@
order by a.pk_parent, a.pay_time
</select>
<!-- 更新会员血缘上累计数据 -->
<update id="updateMemberParentDate">
merge into ${rangeTableName} a
using (
select pk_member,
sum(consume_pv) consume_pv,
sum(consume_amount) consume_amount,
sum(team_consume_pv) team_consume_pv,
sum(team_consume_amount) team_consume_amount
from (
<foreach collection="achieveList" item="item" open=" " separator=" union all " close=" ">
SELECT cmr.pk_member,
DECODE(cmr.pk_member, #{item.pkMember}, #{item.newPv}, 0) AS consume_pv,
DECODE(cmr.pk_member, #{item.pkMember}, #{item.newAmount}, 0) AS consume_amount,
DECODE(cmr.pk_member, #{item.pkMember}, 0, #{item.newPv}) AS team_consume_pv,
DECODE(cmr.pk_member, #{item.pkMember}, 0, #{item.newAmount}) AS team_consume_amount
FROM ${rangeTableName} cmr
START WITH cmr.pk_member = #{item.pkMember}
CONNECT BY cmr.pk_member = PRIOR cmr.pk_parent
</foreach>
) tmp
group by pk_member
) b
on (a.pk_member = b.pk_member)
when matched then
update set
a.consume_pv = a.consume_pv + b.consume_pv,
a.consume_amount = a.consume_amount + b.consume_amount,
a.team_consume_pv = a.team_consume_pv + b.team_consume_pv,
a.team_consume_amount = a.team_consume_amount + b.team_consume_amount
</update>
<!-- 查询符合奖衔业绩条件会员 -->
<select id="queryEnoughAwardMember" resultMap="CuMemberRetailRangeExt">
select cmr.*
from ${rangeTableName} cmr
where cmr.category = 0
and cmr.team_consume_pv >= #{totalCheck}
and #{pkAwards} > cmr.pk_awards
</select>
<!-- 查询会员血缘下达标奖衔会员 -->
<select id="listChildAwards" resultType="int">
<foreach collection="childMemberList" item="item" close=" " open=" " separator="union">
@ -957,4 +999,23 @@
</foreach>
</select>
<!-- 更新会员奖衔 -->
<update id="updateCuMemberAwardsByPeriod">
merge into ${rangeTableName} a
using (
select pk_member, max(new_level) pk_awards
from cu_member_awards
where period = #{period} and award_type = #{awardType}
and del_flag = 0
group by pk_member
) b
on (a.pk_member = b.pk_member)
when matched then
update set
<if test="awardType == 1">
a.pk_awards = b.pk_awards
</if>
</update>
</mapper>

View File

@ -77,14 +77,11 @@
<result column="MALL_AMOUNT" property="mallAmount"/>
<result column="MALL_PV" property="mallPv"/>
<result column="MALL_NEW_PV" property="mallNewPv"/>
<result column="MIN_ACHIEVE" property="minAchieve"/>
<result column="REGISTER_Blo_NEW_PV" property="registerBloNewPv"/>
<result column="UPGRADE_Blo_NEW_PV" property="upgradeBloNewPv"/>
<result column="REPURCHASE_Blo_NEW_PV" property="repurchaseBloNewPv"/>
<result column="HI_FUN_Blo_NEW_PV" property="hiFunBloNewPv"/>
<result column="MALL_Blo_NEW_PV" property="mallBloNewPv"/>
<result column="ROUND" property="round"/>
<result column="SECOND" property="second"/>
<result column="ASSESS_TYPE" property="assessType"/>
<result column="PK_ORDER" property="pkOrder"/>
<result column="LEVEL" property="level"/>
@ -96,10 +93,7 @@
<result column="PK_DATA_ID" property="pkDataId"/>
<result column="directPushNumber" property="directPushNumber"/>
<result column="historyPerformancePv" property="historyPerformancePv"/>
<result column="STORE_LEVEL" property="storeLevel"/>
<result column="IS_MAKER_GIFT" property="isMakerGift"/>
<result column="EXPIRE_STATUS" property="expireStatus"/>
<result column="IS_PAY_REG" property="isPayReg"/>
</resultMap>
<!-- 会员网体月表数据,用于查询 网体跟业绩分开 横向分表-->
@ -131,8 +125,6 @@
is_bus_license NUMBER(1) default 1 not null,
is_maker_space NUMBER(1) default 1 not null,
pk_country number(4) default 1 not null,
store_level NUMBER(2) default 0,
is_maker_gift NUMBER(1) default 1,
expire_status number(1) default 1
</sql>
@ -194,10 +186,7 @@
UPGRADE_Blo_NEW_PV NUMBER(17,6) default 0 not null,
REPURCHASE_Blo_NEW_PV NUMBER(17,6) default 0 not null,
HI_FUN_Blo_NEW_PV NUMBER(17,6) default 0 not null,
MALL_Blo_NEW_PV NUMBER(17,6) default 0 not null,
min_achieve number(17,6) default 0 not null,
round NUMBER(6) default 0 not null,
second NUMBER(4) default 1 not null
MALL_Blo_NEW_PV NUMBER(17,6) default 0 not null
</sql>
<sql id="memberParent">
@ -206,7 +195,7 @@
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade,
min_achieve,round,second,bg.grade_value,store_level,expire_status from (
bg.grade_value,expire_status from (
<include refid="QueryMemberParent"></include>
) a
inner join bd_grade bg
@ -265,7 +254,7 @@
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,category,pk_grade,
min_achieve,round,second,store_level,expire_status
expire_status
from ${settleTableName}
where pay_status = 1
start with pk_member = #{item}
@ -568,6 +557,11 @@
truncate table ${tableName}
</delete>
<!-- 清除表数据 -->
<delete id="clearTable">
delete from ${tableName}
</delete>
<select id="queryExistOracleTable" resultType="java.lang.Integer">
select 1
from user_tables
@ -584,8 +578,8 @@
is_maker_space,purchase_status,share_status,bg.grade_value,pk_parent,is_maker_space,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,c.pk_vertex,
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,min_achieve,round,second,c.register_authority,store_level,
c.is_maker_gift,c.expire_status from ${settleTableName} c
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,c.register_authority,
,c.expire_status from ${settleTableName} c
left join bd_grade bg
on c.pk_grade = bg.pk_id
where pk_member in
@ -604,7 +598,7 @@
cl.is_maker_space,cl.purchase_status,cl.share_status,
cl.a_balance,cl.b_balance,cl.r_a_balance,cl.r_b_balance,cl.rep_a_balance,cl.rep_b_balance,cl.r_rep_a_balance,cl.r_rep_b_balance,
cl.register_amount,cl.register_pv,cl.upgrade_amount,cl.upgrade_pv,cl.repurchase_amount,cl.pk_center_code,cl.register_authority,
cl.repurchase_pv,cl.hi_fun_amount,cl.hi_fun_pv,cl.mall_amount,cl.mall_pv,cl.min_achieve,cl.round,cl.second from ${settleTableName} ct
cl.repurchase_pv,cl.hi_fun_amount,cl.hi_fun_pv,cl.mall_amount,cl.mall_pv from ${settleTableName} ct
inner join ${settleTableName} cl
on ct.pk_parent = cl.pk_member
where ct.pk_member in
@ -616,12 +610,11 @@
is_maker_space,purchase_status,share_status,
a_balance,b_balance,r_a_balance,r_b_balance,rep_a_balance,rep_b_balance,r_rep_a_balance,r_rep_b_balance,
register_amount,register_pv,upgrade_amount,upgrade_pv,repurchase_amount,pk_center_code,register_authority,
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv,min_achieve,round,second from ${settleTableName}
repurchase_pv,hi_fun_amount,hi_fun_pv,mall_amount,mall_pv from ${settleTableName}
where pk_member in
<foreach collection="memberPkList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
</mapper>

View File

@ -85,7 +85,8 @@
<result column="TEAM_NAME" property="teamName"/>
</resultMap>
<update id="updateCuMemberRetailAwardsByPeriod">
<!-- 更新会员奖衔 -->
<update id="updateCuMemberAwardsByPeriod">
merge into cu_member a
using (
select pk_member, max(new_level) pk_awards
@ -100,9 +101,6 @@
<if test="awardType == 1">
a.pk_awards = b.pk_awards,
</if>
<if test="awardType == 2">
a.pk_range_awards = b.pk_awards,
</if>
a.modified_time = sysdate
</update>

View File

@ -23,22 +23,6 @@
<result column="AWARD_TYPE" property="awardType"/>
</resultMap>
<!-- 批量插入奖衔记录 -->
<insert id="saveBatchCuMemberAwards">
insert ALL
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" ">
into cu_member_awards (
pk_member, period, up_type, old_level, new_level,
purchase_status, award_type, pk_creator, pk_country, system_type
)
values (
#{item.pkMember}, #{item.period}, #{item.upType}, #{item.oldLevel}, #{item.newLevel},
#{item.purchaseStatus}, #{item.awardType}, #{item.pkCreator}, #{item.pkCountry}, #{item.systemType}
)
</foreach>
SELECT 1 FROM dual
</insert>
<update id="updateBatchCuMemberAwards">
update cu_member_awards set del_flag = 1, modified_time = sysdate, PK_MODIFIED = 1
where period= #{period} and pk_member in
@ -61,39 +45,21 @@
update set a.assess_target = b.assess_target,a.assess_status = b.assess_status
</update>
<update id="mergeCuMemberBackAwards">
merge into ${rangeTableName} a
using (
select cw.*
from cu_member_awards cw
inner join (
select ca.pk_member, min(ca.pk_id) pk_id
from cu_member_awards ca
inner join bd_awards bw
on ca.new_level = bw.pk_id
and bw.del_flag = 0
and bw.awards_value >= 5
where ca.del_flag = 0
and ca.up_type = 1
and ca.period = #{period}
and ca.award_type = #{awardType}
and ca.pk_member in
(select pk_id
from cu_member start
with pk_id = #{pkMember}
connect by prior pk_parent = pk_id)
group by ca.pk_member
) cx on cw.pk_id = cx.pk_id where cw.del_flag = 0
) b on (a.pk_member = b.pk_member)
when matched then
update set
<if test="awardType == 1">
a.pk_awards = b.old_level
</if>
<if test="awardType == 2">
a.pk_share_awards = b.old_level
</if>
</update>
<!-- 批量插入奖衔记录 -->
<insert id="saveBatchCuMemberAwards">
insert ALL
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" ">
into cu_member_awards (
pk_member, period, up_type, old_level, new_level,
purchase_status, award_type, pk_creator, pk_country
)
values (
#{item.pkMember}, #{item.period}, #{item.upType}, #{item.oldLevel}, #{item.newLevel},
#{item.purchaseStatus}, #{item.awardType}, #{item.pkCreator}, #{item.pkCountry}
)
</foreach>
SELECT 1 FROM dual
</insert>
<!-- 删除自动升级的奖衔升级记录 -->
<delete id="deleteCuMemberAwards">
@ -115,14 +81,6 @@
<foreach collection="cuMemberAwards" item="item" open="(" close=")" separator=",">
#{item.pkId}
</foreach>
<!--
delete from cu_member_awards where period = #{period} and del_flag = 0 and up_type = 1
and pk_id in
<foreach collection="cuMemberAwards" item="item" open="(" close=")" separator=",">
#{item.pkId}
</foreach>
-->
</delete>
<select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">
@ -143,6 +101,37 @@
and ba.del_flag = 0
</select>
<update id="mergeCuMemberBackAwards">
merge into ${rangeTableName} a
using (
select cw.*
from cu_member_awards cw
inner join (
select ca.pk_member, min(ca.pk_id) pk_id
from cu_member_awards ca
inner join bd_awards bw
on ca.new_level = bw.pk_id
and bw.del_flag = 0
and bw.awards_value >= 5
where ca.del_flag = 0
and ca.up_type = 1
and ca.period = #{period}
and ca.award_type = #{awardType}
and ca.pk_member in
(select pk_id
from cu_member start
with pk_id = #{pkMember}
connect by prior pk_parent = pk_id)
group by ca.pk_member
) cx on cw.pk_id = cx.pk_id where cw.del_flag = 0
) b on (a.pk_member = b.pk_member)
when matched then
update set
<if test="awardType == 1">
a.pk_awards = b.old_level
</if>
</update>
<select id="queryCuMemberAwards" resultType="com.hzs.common.domain.member.detail.CuMemberAwards">
select ca.*
from cu_member_awards ca

View File

@ -1,16 +1,10 @@
package com.hzs.system.bonus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.bonus.BdBonusService;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hzs
* @since 2022-11-01
* Mapper 接口
*/
public interface BdBonusServiceMapper extends BaseMapper<BdBonusService> {

View File

@ -1,18 +1,10 @@
package com.hzs.system.bonus.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.bonus.BdBonusService;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author hzs
* @since 2022-11-01
* 服务类
*/
public interface IBdBonusServiceService extends IService<BdBonusService> {
@ -21,11 +13,4 @@ public interface IBdBonusServiceService extends IService<BdBonusService> {
*/
BdBonusService getBonusServiceById(Integer pkId);
/**
* 查询所有国家的报单服务费
* @return: List<BdBonusService>
* @Author: sui q
* @Date: 2023/2/21 16:05
*/
List<BdBonusService> queryBonusService();
}

View File

@ -1,26 +1,16 @@
package com.hzs.system.bonus.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.service.RedisService;
import com.hzs.common.domain.bonus.BdBonusService;
import com.hzs.common.domain.sale.product.BdAreaClassify;
import com.hzs.system.bonus.mapper.BdBonusServiceMapper;
import com.hzs.system.bonus.service.IBdBonusServiceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author hzs
* @since 2022-11-01
* 服务实现类
*/
@Service
public class BdBonusServiceServiceImpl extends ServiceImpl<BdBonusServiceMapper, BdBonusService> implements IBdBonusServiceService {
@ -28,9 +18,6 @@ public class BdBonusServiceServiceImpl extends ServiceImpl<BdBonusServiceMapper,
@Autowired
private RedisService redisService;
/**
* 根据id 查询服务补贴
*/
@Override
public BdBonusService getBonusServiceById(Integer pkId) {
String redisKey = CacheConstants.BD_BONUS_SERVICE + pkId;
@ -44,10 +31,4 @@ public class BdBonusServiceServiceImpl extends ServiceImpl<BdBonusServiceMapper,
return bonusService;
}
@Override
public List<BdBonusService> queryBonusService() {
QueryWrapper<BdBonusService> queryWrapper = new QueryWrapper<>();
queryWrapper.select("PK_ID,SERVICE_TYPE,SERVICE_RADIO,ASSESSMENT_TYPE,PK_COUNTRY");
return baseMapper.selectList(queryWrapper);
}
}

View File

@ -1,16 +1,10 @@
package com.hzs.system.config.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.system.config.BdBonusDifference;
/**
* <p>
* 一次性补差升级配置 Mapper 接口
* </p>
*
* @author zhangjing
* @since 2022-11-02
*/
public interface BdBonusDifferenceMapper extends BaseMapper<BdBonusDifference> {

View File

@ -1,27 +1,11 @@
package com.hzs.system.config.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.system.config.BdBonusDirectLoop;
import com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt;
import java.util.List;
/**
* <p>
* 直推循环配置 Mapper 接口
* </p>
*
* @author zhangjing
* @since 2022-11-03
*/
public interface BdBonusDirectLoopMapper extends BaseMapper<BdBonusDirectLoop> {
/**
* 查询奖金推荐明细
* @return: List<BdBonusDirectLoopExt>
* @Author: sui q
* @Date: 2023/2/17 17:34
*/
List<BdBonusDirectLoopExt> queryBonusDirectLoop();
}

View File

@ -1,16 +1,10 @@
package com.hzs.system.config.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.system.config.BdRepoDirectPush;
/**
* <p>
* 复购直推配置 Mapper 接口
* </p>
*
* @author zhangjing
* @since 2023-06-29
*/
public interface BdRepoDirectPushMapper extends BaseMapper<BdRepoDirectPush> {

View File

@ -2,19 +2,15 @@ package com.hzs.system.config.provider;
import cn.hutool.core.bean.BeanUtil;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.ERangeType;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.bonus.BdBonusService;
import com.hzs.common.domain.system.base.BdCountry;
import com.hzs.common.domain.system.base.BdCurrency;
import com.hzs.common.domain.system.config.*;
import com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.system.base.service.IBdCountryService;
import com.hzs.system.base.service.IBdCurrencyService;
import com.hzs.system.bonus.service.IBdBonusDeductService;
import com.hzs.system.bonus.service.IBdBonusServiceService;
import com.hzs.system.config.IBonusItemsServiceApi;
import com.hzs.system.config.dto.*;
import com.hzs.system.config.service.*;
@ -32,37 +28,17 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
@Autowired
private IBdBonusItemsService bonusItemsService;
@Autowired
private IBdBonusDirectLoopService bdBonusDirectLoopService;
@Autowired
private IBdBonusDirectService bdBonusDirectService;
@Autowired
private IBdBonusDifferenceService bdBonusDifferenceService;
@Autowired
private IBdGradeService gradeService;
@Autowired
private IBdAwardsService awardsService;
private IBdAwardsService iBdAwardsService;
@Autowired
private IBdBonusDeductService bdBonusDeductService;
@Autowired
private IBdBonusServiceService bdBonusServiceService;
@Autowired
private IBdCurrencyService bdCurrencyService;
@Autowired
private IBdCountryService bdCountryService;
@Autowired
private IBdRepoDirectPushService bdRepoDirectPushService;
@Override
public R<List<BdBonusItemsExt>> queryBonusItems(Integer pkCountry) {
return R.ok(bonusItemsService.queryBonusItems(pkCountry));
@ -90,26 +66,12 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
countrySet.add(bdCountry.getPkId()));
bonusConfigDTO.setBonusItemsExtMap(getBdBonusItemsExtMap(countrySet));
// 根据奖金项验证参数没有配置参数的需要提醒
// 查询循环配置参数
bonusConfigDTO.setBonusDirectLoopDtoMap(getBonusLoopConfig());
// 查询直推奖励配置
bonusConfigDTO.setBonusDirectDtoMap(getBonusDirectConfig());
// 一次性补差
bonusConfigDTO.setBonusDifferenceDtoMap(getBonusDifferenceConfig());
// 复购直推配置
bonusConfigDTO.setBonusRepurchasePushMap(getRepurchasePushMap());
// 拓展奖跟辅导奖需要查询所有国家的配置
// 拓展奖配置
bonusConfigDTO.setGradeMap(getBonusExpandGradeConfig());
// 辅导奖配置
Map<String, BdAwards> awardsValueMap = new HashMap<>();
bonusConfigDTO.setAwardsMap(getBonusCoachConfig(awardsValueMap));
bonusConfigDTO.setAwardsValueMap(awardsValueMap);
bonusConfigDTO.setAwardsList(awardsService.queryRetailAwards());
// 奖金扣项
bonusConfigDTO.setBonusDeductsMap(getBonusDeductConfig());
// 报单服务费
bonusConfigDTO.setBonusServiceMap(getBonusServiceConfig());
// 奖衔列表
bonusConfigDTO.setAwardsList(iBdAwardsService.queryAwards());
return R.ok(bonusConfigDTO);
}
@ -133,39 +95,6 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
return bonusItemsMap;
}
/**
* 复购直推奖励
*/
private Map<Integer, Map<Integer, BonusRepurchasePushDTO>> getRepurchasePushMap() {
List<BdRepoDirectPush> bdRepoDirectPushList = bdRepoDirectPushService.queryRepoDirectPush();
Map<Integer, Map<Integer, BonusRepurchasePushDTO>> repurchasePushMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdRepoDirectPushList.size()));
bdRepoDirectPushList.forEach(bdRepoDirectPush -> {
BonusRepurchasePushDTO bonusRepurchasePushDTO = BeanUtil.copyProperties(bdRepoDirectPush, BonusRepurchasePushDTO.class);
if (repurchasePushMap.containsKey(bonusRepurchasePushDTO.getPkCountry())) {
repurchasePushMap.get(bonusRepurchasePushDTO.getPkCountry()).put(bonusRepurchasePushDTO.getAlgebra(), bonusRepurchasePushDTO);
} else {
Map<Integer, BonusRepurchasePushDTO> map = new HashMap<>();
map.put(bonusRepurchasePushDTO.getAlgebra(), bonusRepurchasePushDTO);
repurchasePushMap.put(bonusRepurchasePushDTO.getPkCountry(), map);
}
});
return repurchasePushMap;
}
/**
* 获得奖金循环配置的参数
*/
private Map<String, BonusDirectLoopDTO> getBonusLoopConfig() {
List<BdBonusDirectLoopExt> bonusDirectLoopList = bdBonusDirectLoopService.queryBonusDirectLoop();
Map<String, BonusDirectLoopDTO> bonusDirectLoopDtoMap = new HashMap<>(4);
bonusDirectLoopList.forEach(bdBonusDirectLoop -> {
BonusDirectLoopDTO bonusDirectLoopDTO = BeanUtil.copyProperties(bdBonusDirectLoop, BonusDirectLoopDTO.class);
bonusDirectLoopDtoMap.put(bonusDirectLoopDTO.getPkCountry().toString() + bonusDirectLoopDTO.getBonusType()
+ bonusDirectLoopDTO.getPkGrade(), bonusDirectLoopDTO);
});
return bonusDirectLoopDtoMap;
}
/**
* 获得奖金 推荐什么等级 直推奖励配置
*/
@ -179,43 +108,6 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
return directDtoHashMap;
}
/**
* 获得奖金 推荐什么等级 直推奖励配置
*/
private Map<Integer, BonusDifferenceDTO> getBonusDifferenceConfig() {
List<BdBonusDifference> bdBonusDifferenceList = bdBonusDifferenceService.queryBonusDifference();
Map<Integer, BonusDifferenceDTO> bonusDifferenceDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDifferenceList.size()));
bdBonusDifferenceList.forEach(bonusDirectDTO -> {
BonusDifferenceDTO bonusDifferenceDTO = BeanUtil.copyProperties(bonusDirectDTO, BonusDifferenceDTO.class);
bonusDifferenceDtoMap.put(bonusDifferenceDTO.getPkCountry(), bonusDifferenceDTO);
});
return bonusDifferenceDtoMap;
}
/**
* 获取等级对应的拓展奖对应参数
*/
private Map<String, BdGrade> getBonusExpandGradeConfig() {
List<BdGrade> bdGradeList = gradeService.queryBdGrade();
Map<String, BdGrade> bdGradeMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdGradeList.size()));
bdGradeList.forEach(bdGrade ->
bdGradeMap.put(bdGrade.getPkCountry().toString() + "_" + bdGrade.getPkId(), bdGrade));
return bdGradeMap;
}
/**
* 获取奖衔对应的辅导奖对应参数
*/
private Map<String, BdAwards> getBonusCoachConfig(Map<String, BdAwards> awardsValueMap) {
List<BdAwards> bdAwardsList = awardsService.queryAwards();
Map<String, BdAwards> bdAwardsMap = new LinkedHashMap<>(ComputeUtil.mapInitCapacity(bdAwardsList.size()));
bdAwardsList.forEach(bdAwards -> {
bdAwardsMap.put(bdAwards.getPkCountry().toString() + ERangeType.AWARDS.getValue() + bdAwards.getPkId(), bdAwards);
awardsValueMap.put(bdAwards.getPkCountry().toString() + ERangeType.AWARDS.getValue() + bdAwards.getAwardsValue(), bdAwards);
});
return bdAwardsMap;
}
/**
* 获取每个国家奖金项对应的扣项
*/
@ -227,15 +119,4 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
return bdBonusDeductMap;
}
/**
* 获取每个国家奖金项对应的扣项
*/
private Map<String, BdBonusService> getBonusServiceConfig() {
List<BdBonusService> bdBonusServiceList = bdBonusServiceService.queryBonusService();
Map<String, BdBonusService> bdBonusDeductMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusServiceList.size()));
bdBonusServiceList.forEach(bdBonusService ->
bdBonusDeductMap.put(bdBonusService.getPkCountry().toString() + bdBonusService.getServiceType(), bdBonusService));
return bdBonusDeductMap;
}
}

View File

@ -55,11 +55,6 @@ public interface IBdAwardsService extends IService<BdAwards> {
*/
List<BdAwards> queryAwards();
/*
* 查询新零售奖衔
**/
List<BdAwards> queryRetailAwards();
/**
* 查询等级或奖衔是否被使用
**/

View File

@ -1,26 +1,11 @@
package com.hzs.system.config.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdBonusDifference;
import java.util.List;
/**
* <p>
* 一次性补差升级配置 服务类
* </p>
*
* @author zhangjing
* @since 2022-11-02
*/
public interface IBdBonusDifferenceService extends IService<BdBonusDifference> {
/**
* 查询固定升级降级用于海外累计升级
* @return: List<BdBonusDifference>
* @Author: sui q
* @Date: 2023/2/21 11:09
*/
List<BdBonusDifference> queryBonusDifference();
}

View File

@ -1,39 +1,18 @@
package com.hzs.system.config.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdBonusDirectLoop;
import com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt;
import com.hzs.system.config.vo.BdBonusDirectVo;
import java.util.List;
/**
* <p>
* 直推循环配置 服务类
* </p>
*
* @author zhangjing
* @since 2022-11-03
*/
public interface IBdBonusDirectLoopService extends IService<BdBonusDirectLoop> {
/**
* 新增直推奖励循环配置直推奖励配置嗨粉直推配置奖励一次性补差升级配置
* @author: zhang jing
* @date: 2022/11/4 10:46
* @param: [bonusDirectVo]
* @return: boolean
**/
boolean saveBonusDirectVo(BdBonusDirectVo bonusDirectVo,Integer pkCountry,String addAttribute);
boolean saveBonusDirectVo(BdBonusDirectVo bonusDirectVo, Integer pkCountry, String addAttribute);
/**
* 查询奖金推荐明细
* @return: List<BdBonusDirectLoopExt>
* @Author: sui q
* @Date: 2023/2/17 17:34
*/
List<BdBonusDirectLoopExt> queryBonusDirectLoop();
}

View File

@ -1,26 +1,11 @@
package com.hzs.system.config.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdRepoDirectPush;
import java.util.List;
/**
* <p>
* 复购直推配置 服务类
* </p>
*
* @author zhangjing
* @since 2023-06-29
*/
public interface IBdRepoDirectPushService extends IService<BdRepoDirectPush> {
/*
* @description: 查询复购直推配置的参数
* @author: sui q
* @date: 2023/6/29 15:21
* @param: null null
**/
List<BdRepoDirectPush> queryRepoDirectPush();
}

View File

@ -20,7 +20,6 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -110,14 +109,7 @@ public class BdAwardsServiceImpl extends ServiceImpl<BdAwardsMapper, BdAwards> i
@Override
public List<BdAwards> queryAwards() {
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdAwards::getSystemType, 0);
return baseMapper.selectList(queryWrapper);
}
@Override
public List<BdAwards> queryRetailAwards() {
LambdaQueryWrapper<BdAwards> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BdAwards::getSystemType, 2);
queryWrapper.orderByAsc(BdAwards::getAwardsValue);
return baseMapper.selectList(queryWrapper);
}

View File

@ -1,27 +1,15 @@
package com.hzs.system.config.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.domain.system.config.BdBonusDifference;
import com.hzs.system.config.mapper.BdBonusDifferenceMapper;
import com.hzs.system.config.service.IBdBonusDifferenceService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 一次性补差升级配置 服务实现类
* </p>
*
* @author zhangjing
* @since 2022-11-02
*/
@Service
public class BdBonusDifferenceServiceImpl extends ServiceImpl<BdBonusDifferenceMapper, BdBonusDifference> implements IBdBonusDifferenceService {
@Override
public List<BdBonusDifference> queryBonusDifference() {
return baseMapper.selectList(new QueryWrapper<>());
}
}

View File

@ -1,7 +1,5 @@
package com.hzs.system.config.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.enums.EDelFlag;
@ -9,7 +7,6 @@ import com.hzs.common.core.enums.ERangeType;
import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.domain.system.config.*;
import com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt;
import com.hzs.common.security.utils.SecurityUtils;
import com.hzs.system.config.mapper.BdBonusDirectLoopMapper;
import com.hzs.system.config.service.*;
import com.hzs.system.config.vo.BdBonusDirectVo;
@ -18,16 +15,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* <p>
* 直推循环配置 服务实现类
* </p>
*
* @author zhangjing
* @since 2022-11-03
*/
@Service
public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopMapper, BdBonusDirectLoop> implements IBdBonusDirectLoopService {
@ -43,17 +33,9 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
@Autowired
private IBdRepoDirectPushService iBdRepoDirectPushService;
/**
* @description: 新增直推奖励循环配置直推奖励配置嗨粉直推配置奖励一次性补差升级配置
* @author: zhang jing
* @date: 2022/11/3 19:17
* @param: [bonusDirectLoopExtsList]
* @return: boolean
**/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveBonusDirectVo(BdBonusDirectVo bonusDirectVo, Integer pkCountry,String addAttribute) {
public boolean saveBonusDirectVo(BdBonusDirectVo bonusDirectVo, Integer pkCountry, String addAttribute) {
for (BdBonusDirectLoopExt bdl : bonusDirectVo.getBonusDirectLoopExtsList()) {
if (StringUtils.isNotNull(bdl.getPkId())) {
baseMapper.updateById(bdl);
@ -70,16 +52,16 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
loopDetails.setPkCountry(pkCountry);
loopDetails.setPkCreator(bonusDirectVo.getPkCreator());
loopDetails.setCreationTime(new Date());
if(null!=bld&&null!=loopDetails.getPkBonusDirect()){
if (null != bld && null != loopDetails.getPkBonusDirect()) {
bdLoopDetailsService.save(loopDetails);
}
}
}
} else {
if(null!=bdl.getFirstOrder()&&
null!=bdl.getSecondOrder()&&
null!=bdl.getThirdOrder()&&
null!=bdl.getTakeValueType()){
if (null != bdl.getFirstOrder() &&
null != bdl.getSecondOrder() &&
null != bdl.getThirdOrder() &&
null != bdl.getTakeValueType()) {
bdl.setPkCountry(pkCountry);
bdl.setPkCreator(bonusDirectVo.getPkCreator());
bdl.setCreationTime(bonusDirectVo.getCreationTime());
@ -92,7 +74,7 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
loopDetails.setPkCountry(pkCountry);
loopDetails.setPkCreator(bonusDirectVo.getPkCreator());
loopDetails.setCreationTime(new Date());
if(null!=bld&&null!=loopDetails.getPkBonusDirect()){
if (null != bld && null != loopDetails.getPkBonusDirect()) {
bdLoopDetailsService.save(loopDetails);
}
}
@ -104,8 +86,8 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
updateWrapperbbd.eq("DEL_FLAG", EDelFlag.UN_DELETE.getValue());
bonusDirectService.update(updateWrapperbbd);
for (BdBonusDirect bbd : bonusDirectVo.getBonusDirectList()) {
if(null!=bbd.getCalType()&&null!=bbd.getPkLevel()&&
null!=bbd.getBonusValue()){
if (null != bbd.getCalType() && null != bbd.getPkLevel() &&
null != bbd.getBonusValue()) {
bbd.setRangeType(ERangeType.GRADE.getValue());
bbd.setPkCountry(pkCountry);
bbd.setCreationTime(bonusDirectVo.getCreationTime());
@ -119,8 +101,8 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
updateWrapperbbhp.eq("DEL_FLAG", EDelFlag.UN_DELETE.getValue());
bonusHiPinkService.update(updateWrapperbbhp);
for (BdBonusHiPink bbhp : bonusDirectVo.getBonusHiPinkList()) {
if(null!=bbhp.getRangeType()&&
null!=bbhp.getPkLevel()&&null!=bbhp.getBonusValue()){
if (null != bbhp.getRangeType() &&
null != bbhp.getPkLevel() && null != bbhp.getBonusValue()) {
bbhp.setPkCountry(pkCountry);
bbhp.setCreationTime(bonusDirectVo.getCreationTime());
bbhp.setPkCreator(bonusDirectVo.getPkCreator());
@ -134,8 +116,8 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
updateWrapperbbf.eq("DEL_FLAG", EDelFlag.UN_DELETE.getValue());
bdBonusDifferenceService.update(updateWrapperbbf);
for (BdBonusDifference bbd : bonusDirectVo.getBonusDifferenceExt().getBonusDifferencesList()) {
if(null!=bbd.getRewardValue()&&
null!=bbd.getUpgradeType()){
if (null != bbd.getRewardValue() &&
null != bbd.getUpgradeType()) {
bbd.setPkCountry(pkCountry);
bbd.setCreationTime(bonusDirectVo.getCreationTime());
bbd.setPkCreator(bonusDirectVo.getPkCreator());
@ -143,21 +125,17 @@ public class BdBonusDirectLoopServiceImpl extends ServiceImpl<BdBonusDirectLoopM
}
}
//复购直推配置(不是所有国家有该配置)
if(addAttribute.equals("0")){
if (addAttribute.equals("0")) {
UpdateWrapper<BdRepoDirectPush> updateWrapperrd = new UpdateWrapper();
updateWrapperrd.set("DEL_FLAG", EDelFlag.DELETE.getValue());
updateWrapperrd.eq("PK_COUNTRY", pkCountry);
updateWrapperrd.eq("DEL_FLAG", EDelFlag.UN_DELETE.getValue());
iBdRepoDirectPushService.update(updateWrapperrd);
for(BdRepoDirectPush rd:bonusDirectVo.getRepoDirectPushList()){
for (BdRepoDirectPush rd : bonusDirectVo.getRepoDirectPushList()) {
iBdRepoDirectPushService.save(rd);
}
}
return true;
}
@Override
public List<BdBonusDirectLoopExt> queryBonusDirectLoop() {
return baseMapper.queryBonusDirectLoop();
}
}

View File

@ -1,29 +1,15 @@
package com.hzs.system.config.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.domain.system.config.BdRepoDirectPush;
import com.hzs.system.config.mapper.BdRepoDirectPushMapper;
import com.hzs.system.config.service.IBdRepoDirectPushService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 复购直推配置 服务实现类
* </p>
*
* @author zhangjing
* @since 2023-06-29
*/
@Service
public class BdRepoDirectPushServiceImpl extends ServiceImpl<BdRepoDirectPushMapper, BdRepoDirectPush> implements IBdRepoDirectPushService {
@Override
public List<BdRepoDirectPush> queryRepoDirectPush() {
QueryWrapper<BdRepoDirectPush> queryWrapper = new QueryWrapper<>();
queryWrapper.select("algebra,cal_type,push_value,pk_country");
return baseMapper.selectList(queryWrapper);
}
}

View File

@ -2,31 +2,5 @@
<!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.BdBonusDirectLoopMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BdBonusDirectLoopExt" type="com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt">
<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="BONUS_TYPE" property="bonusType" />
<result column="FIRST_ORDER" property="firstOrder" />
<result column="SECOND_ORDER" property="secondOrder" />
<result column="THIRD_ORDER" property="thirdOrder" />
<result column="FOURTH_ORDER" property="fourthOrder" />
<result column="PK_GRADE" property="pkGrade" />
<result column="TAKE_VALUE_TYPE" property="takeValueType" />
</resultMap>
<select id="queryBonusDirectLoop" resultMap="BdBonusDirectLoopExt">
select bl.pk_id,bonus_type,first_order,second_order,third_order,fourth_order,bl.pk_country,
cal_type,bd.pk_grade from bd_bonus_direct_loop bl
inner join BD_LOOP_DETAILS bd
on bl.pk_id = bd.pk_bonus_direct
where bl.del_flag=0 and bd.del_flag=0
</select>
</mapper>

View File

@ -7,11 +7,7 @@ import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* @Description: 日结算表表内存储网体关系会员业绩
* @Author: sui q
* @Time: 2022/10/31 14:22
* @Classname: CuMemberTreeExt
* @PackageName: com.hzs.common.domain.member.ext
* 日结算表表内存储网体关系会员业绩
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ -300,21 +296,6 @@ public class CuMemberSettleExt extends CuMemberTree {
*/
private BigDecimal mallBloNewPv;
/**
* 循环中最小业绩
*/
private BigDecimal minAchieve;
/**
*
*/
private Integer round;
/**
*
*/
private Integer second;
/**
* 考核类型不入库只用来区分复购考核跟分红考核
*/
@ -363,30 +344,11 @@ public class CuMemberSettleExt extends CuMemberTree {
*/
private BigDecimal historyPerformancePv;
/**
* 店铺等级
*/
private Integer storeLevel;
/**
* 购买创客礼包
*/
private Integer isMakerGift;
/**
* 有效状态1=有效期2=休止期3=已终止
*/
private Integer expireStatus;
/**
* 是否买过注册
*/
private Integer isPayReg;
/**
* 福利比例
*/
private BigDecimal abonusRatio;
/**
* 实发收益总计
*/

View File

@ -12,12 +12,7 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* <p>
* 直推循环配置
* </p>
*
* @author zhangjing
* @since 2022-11-03
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -77,5 +72,4 @@ public class BdBonusDirectLoop extends BaseEntity {
private Integer takeValueType;
}

View File

@ -12,12 +12,7 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* <p>
* 复购直推配置
* </p>
*
* @author zhangjing
* @since 2023-06-29
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -2,15 +2,11 @@ package com.hzs.common.domain.system.config.ext;
import com.hzs.common.domain.system.config.*;
import lombok.Data;
import java.util.List;
/**
* <p>
* 直推循环配置
* </p>
*
* @author zhangjing
* @since 2022-11-03
*/
@Data
public class BdBonusDirectLoopExt extends BdBonusDirectLoop {