forked from angelo/java-retail-app
## 日结添加团队月盒数字段及处理;月奖查询订单不走dubbo服务,改为自查询;
This commit is contained in:
parent
fc1fdcde70
commit
394b6dad10
|
@ -144,5 +144,7 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
/**
|
||||
* 之前有过注水,回退
|
||||
*/
|
||||
void mergeCuMemberRetailBackBoxBySpecial(@Param("rangeTableName") String settleTableName, @Param("beforeTableName") String beforeTableName, @Param("period") Integer period);
|
||||
void mergeCuMemberRetailBackBoxBySpecial(@Param("rangeTableName") String rangeTableName,
|
||||
@Param("beforeTableName") String beforeTableName,
|
||||
@Param("period") Integer period);
|
||||
}
|
||||
|
|
|
@ -84,7 +84,7 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
/**
|
||||
* 之前有过注水,回退
|
||||
*/
|
||||
void mergeCuMemberRetailBackBoxBySpecial(String settleTableName, String beforeTableName, Integer period);
|
||||
void mergeCuMemberRetailBackBoxBySpecial(String rangeTableName, String beforeTableName, Integer period);
|
||||
|
||||
/**
|
||||
* 根据订单,查询出网体中记录的会员数据,推荐人、安置人
|
||||
|
|
|
@ -130,8 +130,8 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
}
|
||||
|
||||
@Override
|
||||
public void mergeCuMemberRetailBackBoxBySpecial(String settleTableName, String beforeTableName, Integer period) {
|
||||
baseMapper.mergeCuMemberRetailBackBoxBySpecial(settleTableName, beforeTableName, period);
|
||||
public void mergeCuMemberRetailBackBoxBySpecial(String rangeTableName, String beforeTableName, Integer period) {
|
||||
baseMapper.mergeCuMemberRetailBackBoxBySpecial(rangeTableName, beforeTableName, period);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,219 +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.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.domain.activity.recommend.AcRepurSharOrderType;
|
||||
import com.hzs.common.domain.activity.recommend.ext.AcRepurSharRuleConfigExt;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.base.CuMemberAgent;
|
||||
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.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdBonusCloud;
|
||||
import com.hzs.bonus.base.service.ICuMemberAgentService;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
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;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class BonusSettleAgentHandle extends BonusSettleHandle {
|
||||
|
||||
@DubboReference
|
||||
IActivityServiceApi activityServiceApi;
|
||||
|
||||
// 代理直推 推荐给多少钱 代理复购 区域 所有订单的1%
|
||||
private ICuMemberAgentService cuMemberAgentService;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberAgentService(ICuMemberAgentService cuMemberAgentService) {
|
||||
this.cuMemberAgentService = cuMemberAgentService;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算嗨粉奖金
|
||||
*
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateCloudAgentAreaBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// 云代区域 月奖
|
||||
// 查询时间范围内订单
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
// 上个月最后一天
|
||||
settleDate = DateUtils.beforeMonthLastDate(settleDate);
|
||||
// 结算月第一天
|
||||
Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate);
|
||||
// 结算月下月第一天
|
||||
Date nextMonthFirstDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
|
||||
List<Integer> orderType = new ArrayList<>();
|
||||
orderType.add(EOrderType.REGISTER_ORDER.getValue());
|
||||
orderType.add(EOrderType.UPGRADE_ORDER.getValue());
|
||||
orderType.add(EOrderType.REPURCHASE_ORDER.getValue());
|
||||
List<SaOrder> currentMonthOrderList = saOrderServiceApi.querySaOrderByDayForCloud(currentMonthFirstDate, nextMonthFirstDate, orderType).getData();
|
||||
// 查询月末会员状态
|
||||
Integer lastPeriod = getCuMemberSettlePeriodService().getCuMemberSettlePeriodByDate(settleDateStr).getPkId();
|
||||
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + lastPeriod;
|
||||
Set<Long> pkMemberSet = new HashSet<>();
|
||||
// 获取配置
|
||||
Map<String, BdBonusCloud> bdBonusCloudMap = bonusConfigDTO.getBonusCloudMap();
|
||||
if (bdBonusCloudMap == null) {
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
// 计算奖金 云代首购 首购订单1% 云代复购 复购订单1%
|
||||
// 查询会员,查询出所有代理的会员
|
||||
Map<String, List<CuMemberAgent>> cuMemberAgentMap = cuMemberAgentService.queryCuMemberAgent();
|
||||
List<SaOrder> saOrderList = new ArrayList<>();
|
||||
for (SaOrder saOrder : currentMonthOrderList) {
|
||||
if (saOrder.getPkCountry() == null || saOrder.getRecProvince() == null || saOrder.getRecCity() == null) {
|
||||
continue;
|
||||
}
|
||||
String key = saOrder.getPkCountry().toString() + saOrder.getRecProvince() + saOrder.getRecCity();
|
||||
if (!cuMemberAgentMap.containsKey(key)) {
|
||||
continue;
|
||||
} else {
|
||||
saOrderList.add(saOrder);
|
||||
}
|
||||
pkMemberSet.add(saOrder.getPkMember());
|
||||
List<CuMemberAgent> cuMemberAgentList = cuMemberAgentMap.get(key);
|
||||
cuMemberAgentList.forEach(cuMemberAgent ->
|
||||
pkMemberSet.add(cuMemberAgent.getPkMember()));
|
||||
}
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, pkMemberSet);
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
Map<String, BdCurrencyDTO> currencyDtoMap = bonusConfigDTO.getCurrencyDtoMap();
|
||||
for (SaOrder saOrder : saOrderList) {
|
||||
String key = saOrder.getPkCountry().toString() + saOrder.getRecProvince().toString() + saOrder.getRecCity().toString();
|
||||
List<CuMemberAgent> cuMemberAgentList = cuMemberAgentMap.get(key);
|
||||
BigDecimal exchangeRate = BigDecimal.ONE;
|
||||
if (currencyDtoMap.containsKey(saOrder.getPkCountry().toString() + saOrder.getPkRate())) {
|
||||
exchangeRate = currencyDtoMap.get(saOrder.getPkCountry().toString() + saOrder.getPkRate()).getInExchangeRate();
|
||||
}
|
||||
// 云代首购
|
||||
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrder.getPkMember());
|
||||
if (sourceMemberSettleExt == null) {
|
||||
continue;
|
||||
}
|
||||
if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType() ||
|
||||
EOrderType.UPGRADE_ORDER.getValue() == saOrder.getOrderType() ||
|
||||
Objects.equals(EOrderType.FICTITIOUS_ORDER.getValue(), saOrder.getOrderType())) {
|
||||
BdBonusCloud bdBonusCloud = bdBonusCloudMap.get(saOrder.getPkCountry().toString() + ECloudType.CLOUD_TYPE_FIRST_PURCHASE.getValue());
|
||||
for (CuMemberAgent cuMemberAgent : cuMemberAgentList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberAgent.getPkMember());
|
||||
if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
continue;
|
||||
}
|
||||
if (cuMemberAgent.getAgentGrade() == 7 && cuMemberAgent.getAgentCounty() != null && saOrder.getRecCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
} else {
|
||||
if (cuMemberAgent.getAgentGrade() == 8 && cuMemberAgent.getAgentCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bdBonusCloud.getCloudRatio());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_FIRST_PURCHASE.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bdBonusCloud.getCloudRatio()));
|
||||
cloudAgentRemark(saOrder, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt, BonusMsgConstants.CLOUD_AGENT_FIRST_REPURCHASE);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudPurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudPurIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 云代复购
|
||||
BdBonusCloud bdBonusCloud = bdBonusCloudMap.get(saOrder.getPkCountry().toString() + ECloudType.CLOUD_TYPE_PURCHASE.getValue());
|
||||
for (CuMemberAgent cuMemberAgent : cuMemberAgentList) {
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(cuMemberAgent.getPkMember());
|
||||
if (targetMemberSettleExt == null || ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus() ||
|
||||
EGrade.START_UP.getValue() == targetMemberSettleExt.getGradeValue()) {
|
||||
continue;
|
||||
}
|
||||
if (cuMemberAgent.getAgentGrade() == 7 && cuMemberAgent.getAgentCounty() != null && saOrder.getRecCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
} else {
|
||||
if (cuMemberAgent.getAgentGrade() == 8 && cuMemberAgent.getAgentCounty() != null &&
|
||||
!Objects.equals(cuMemberAgent.getAgentCounty(), saOrder.getRecCounty())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bdBonusCloud.getCloudRatio());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_REPURCHASE.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), bdBonusCloud.getCloudRatio()));
|
||||
cloudAgentRemark(saOrder, cuMemberBonusDetail, sourceMemberSettleExt, targetMemberSettleExt, BonusMsgConstants.CLOUD_AGENT_REPURCHASE);
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudRepurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudRepurIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 复购券均分收益规则
|
||||
List<AcRepurSharRuleConfigExt> repurSharRuleConfigExtList = activityServiceApi.queryRepurSharRuleConfig(currentMonthFirstDate, nextMonthFirstDate).getData();
|
||||
if (CollectionUtil.isNotEmpty(repurSharRuleConfigExtList)) {
|
||||
for (AcRepurSharRuleConfigExt acRepurSharRuleConfigExt : repurSharRuleConfigExtList) {
|
||||
List<Integer> orderTypeList = acRepurSharRuleConfigExt.getRepurSharOrderTypeList().stream().distinct().map(AcRepurSharOrderType::getOrderType).collect(Collectors.toList());
|
||||
List<SaOrder> orderList = saOrderServiceApi.querySaOrderByTimeForCouponShare(settleDate, nextMonthFirstDate, orderTypeList,
|
||||
acRepurSharRuleConfigExt.getOrderAmount(), acRepurSharRuleConfigExt.getOrderAchieve(), acRepurSharRuleConfigExt.getPkCountry()).getData();
|
||||
if (CollectionUtil.isNotEmpty(orderList)) {
|
||||
Set<Long> memberSet = orderList.stream().distinct().map(SaOrder::getPkMember).collect(Collectors.toSet());
|
||||
cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, memberSet);
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
for (SaOrder saOrder : orderList) {
|
||||
BigDecimal exchangeRate = BigDecimal.ONE;
|
||||
if (currencyDtoMap.containsKey(saOrder.getPkCountry().toString() + saOrder.getPkRate())) {
|
||||
exchangeRate = currencyDtoMap.get(saOrder.getPkCountry().toString() + saOrder.getPkRate()).getInExchangeRate();
|
||||
}
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrder.getPkMember());
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(acRepurSharRuleConfigExt.getRatioValue());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_COUPONS_SHARE.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrder.getOrderAchieve(), acRepurSharRuleConfigExt.getRatioValue()));
|
||||
shareCouponRemark(cuMemberBonusDetail, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate));
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrder.getOrderAmount(), exchangeRate);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurCouponShare(cuMemberBonusDetail.getPretaxIncome());
|
||||
setRepurchaseCouponTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
}
|
|
@ -3,8 +3,6 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberBonusService;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberShareDetailService;
|
||||
import com.hzs.common.core.constant.*;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
|
@ -21,7 +19,6 @@ 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.BdBonusItems;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.system.config.IGradeServiceApi;
|
||||
import com.hzs.system.config.dto.*;
|
||||
|
@ -42,14 +39,10 @@ import java.util.stream.Collectors;
|
|||
public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
||||
|
||||
@DubboReference
|
||||
IGradeServiceApi gradeServiceApi;
|
||||
IGradeServiceApi iGradeServiceApi;
|
||||
|
||||
@Autowired
|
||||
private ICuMemberBonusService cuMemberBonusService;
|
||||
@Autowired
|
||||
private ICuMemberShareDetailService cuMemberShareDetailService;
|
||||
@Autowired
|
||||
private ICuMemberService cuMemberService;
|
||||
private ICuMemberService iCuMemberService;
|
||||
|
||||
/**
|
||||
* 计算直推奖
|
||||
|
@ -69,7 +62,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
// 推荐奖明细
|
||||
List<CuMemberBonusPush> cuMemberBonusPushList = new ArrayList<>();
|
||||
Set<Integer> pkCountrySet = firPurchaseOrderList.stream().distinct().map(SaOrderExt::getPkCountry).collect(Collectors.toSet());
|
||||
Map<Integer, List<GradeDTO>> gradeDtoMap = gradeServiceApi.queryCountryGradeConfigByCondition(pkCountrySet).getData();
|
||||
Map<Integer, List<GradeDTO>> gradeDtoMap = iGradeServiceApi.queryCountryGradeConfigByCondition(pkCountrySet).getData();
|
||||
// 等级对应的业绩
|
||||
for (SaOrderExt saOrderExt : firPurchaseOrderList) {
|
||||
List<GradeDTO> gradeList = gradeDtoMap.get(saOrderExt.getPkCountry());
|
||||
|
@ -272,7 +265,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
* @param bonusConfigDTO 参数
|
||||
* @param firPurchaseOrderList 首单
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算拓展收益
|
||||
* 计算拓展收益
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/10 14:17
|
||||
|
@ -498,7 +491,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
* @param firPurchaseOrderList 订单列表
|
||||
* @param cuMemberBonusExpandList 量奖明细
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算辅导收益
|
||||
* 计算辅导收益
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/10 14:17
|
||||
|
@ -513,7 +506,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算领导奖
|
||||
* 计算领导奖
|
||||
*
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:16
|
||||
|
@ -546,7 +540,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算领导奖
|
||||
* 计算领导奖
|
||||
*
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:16
|
||||
|
@ -676,7 +671,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
/**
|
||||
* @param backMemberBonusCoachList 临时记录辅导奖列表
|
||||
* @param i 第几代
|
||||
* @Description: 处理拓展表备注
|
||||
* 处理拓展表备注
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 18:02
|
||||
|
@ -777,41 +772,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param settleTableName 结算表
|
||||
* @param period 期间
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算报单服务费
|
||||
* 车奖 全球分红 有奖衔的会员,复购考核通过的,根据对应奖衔可拿代数配置拿下面代数的(推荐+拓展+领导+分红)奖金合计为基数的相应代数的比率(配置值)
|
||||
* 跟领导奖一样的算法,不算启动卡
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 14:14
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateGlobalCarBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, String settleTableName, String settleDateStr,
|
||||
Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
// 查询存在车奖、全球积分的国家
|
||||
List<Integer> bonusValueList = new ArrayList<>();
|
||||
// bonusValueList.add(EBonusItems.GLOBAL_DIVIDEND.getValue());
|
||||
// bonusValueList.add(EBonusItems.CAR_BONUS_POINTS.getValue());
|
||||
List<BdBonusItems> bdBonusItemsList = bonusItemsServiceApi.queryExistsBonusItems(bonusValueList).getData();
|
||||
// 查询出存在车奖跟全球积分的国家
|
||||
Set<Integer> country = new HashSet<>();
|
||||
if (bdBonusItemsList != null && bdBonusItemsList.size() > 0) {
|
||||
bdBonusItemsList.forEach(bdBonusItems -> country.add(bdBonusItems.getPkCountry()));
|
||||
// 查询这几个国家的奖金
|
||||
List<CuMemberBonus> cuMemberBonusList = cuMemberBonusService.queryExistsPurchaseBonusMember(period, Arrays.asList(country.toArray(new Integer[]{})));
|
||||
return calculateGlobalCarBonusOne(cuMemberSettleExtMap, settleTableName, settleDateStr, bonusConfigDTO, cuMemberBonusList, period, cuMemberBonusMap);
|
||||
}
|
||||
// 查询所有有奖金的人的所有血缘上级,根据国家查询,只查询有该奖金项的国家
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算全球积分车奖积分
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:16
|
||||
* 计算全球积分车奖积分
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateGlobalCarBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleDateStr,
|
||||
BonusConfigDTO bonusConfigDTO, List<CuMemberBonus> cuMemberBonusList,
|
||||
|
@ -842,10 +805,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 计算全球积分车奖积分
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2023/2/8 17:16
|
||||
* 计算全球积分车奖积分
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateGlobalCarBonusDetail(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap,
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, CuMemberBonus sourceMemberBonus,
|
||||
|
@ -958,14 +918,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param settleDateStr 结算日期
|
||||
* @param period 期间
|
||||
* @Description: 计算报单服务费
|
||||
* 计算报单服务费
|
||||
* 车奖 全球分红 有奖衔的会员,复购考核通过的,根据对应奖衔可拿代数配置拿下面代数的(推荐+拓展+领导+分红)奖金合计为基数的相应代数的比率(配置值)
|
||||
* 跟领导奖一样的算法,不算启动卡
|
||||
* @return: List<CuMemberBonusCoach>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 14:14
|
||||
*
|
||||
* @param settleDateStr 结算日期
|
||||
* @param period 期间
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
|
@ -1115,7 +1073,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
// }
|
||||
BigDecimal gradeExpandRatio = bdGrade.getExpandRatio();
|
||||
// 验证受益人等级
|
||||
CuMember cuMember = cuMemberService.getMember(targetMemberSettleExt.getMemberCode());
|
||||
CuMember cuMember = iCuMemberService.getMember(targetMemberSettleExt.getMemberCode());
|
||||
if (targetMemberSettleExt.getPkSettleCountry().equals(CountryConstants.CHINA_COUNTRY) &&
|
||||
cuMember != null && DateUtils.compareDate(DateUtils.parseStringToDate("2024-09-11"), cuMember.getPayTime()) > 0) {
|
||||
if (targetMemberSettleExt.getGradeValue() == EGrade.VIP.getValue()) {
|
||||
|
|
|
@ -26,10 +26,8 @@ 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.sale.order.ISaOrderServiceApi;
|
||||
import com.hzs.system.base.ICurrencyServiceApi;
|
||||
import com.hzs.system.base.dto.CurrencyDTO;
|
||||
import com.hzs.system.config.IBonusItemsServiceApi;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import com.hzs.system.config.dto.BonusExpandDTO;
|
||||
import com.hzs.system.config.dto.RangeDTO;
|
||||
|
@ -45,33 +43,15 @@ import java.util.*;
|
|||
public abstract class BonusSettleHandle {
|
||||
|
||||
@DubboReference
|
||||
ISaOrderServiceApi saOrderServiceApi;
|
||||
@DubboReference
|
||||
IBonusItemsServiceApi bonusItemsServiceApi;
|
||||
@DubboReference
|
||||
ICurrencyServiceApi currencyServiceApi;
|
||||
ICurrencyServiceApi iCurrencyServiceApi;
|
||||
|
||||
@Autowired
|
||||
protected ICuMemberTreeService cuMemberTreeService;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
|
||||
this.cuMemberTreeService = cuMemberTreeService;
|
||||
}
|
||||
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
|
||||
@Autowired
|
||||
private ICuMemberAssessService cuMemberAssessService;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberAssessService(ICuMemberAssessService cuMemberAssessService) {
|
||||
this.cuMemberAssessService = cuMemberAssessService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
|
||||
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
|
||||
}
|
||||
|
||||
public ICuMemberSettlePeriodService getCuMemberSettlePeriodService() {
|
||||
return cuMemberSettlePeriodService;
|
||||
}
|
||||
|
@ -475,7 +455,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusCoach 辅导奖
|
||||
* @param sourceMemberRangeExt 提供奖金的人
|
||||
* @param targetMemberRangeExt 获得奖金的人
|
||||
* @Description: 获得 辅导收益的备注
|
||||
* 获得 辅导收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -495,7 +475,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusDetail 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* @Description: 获得 报单服务费收益的备注
|
||||
* 获得 报单服务费收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -514,7 +494,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusDetail 报单服务费
|
||||
* @param sourceCuMemberRangeExt 提供奖金的人
|
||||
* @param targetCuMemberRangeExt 获得奖金的人
|
||||
* @Description: 获得 报单服务费收益的备注
|
||||
* 获得 报单服务费收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -577,7 +557,7 @@ public abstract class BonusSettleHandle {
|
|||
/**
|
||||
* @param cuMemberBonusDetail 分红
|
||||
* @param settleDate 结算日期
|
||||
* @Description: 获得 分红收益的备注
|
||||
* 获得 分红收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -591,7 +571,7 @@ public abstract class BonusSettleHandle {
|
|||
/**
|
||||
* @param cuMemberBonusDetail 分红
|
||||
* @param settleDate 结算日期
|
||||
* @Description: 获得 分红收益的备注
|
||||
* 获得 分红收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -604,7 +584,7 @@ public abstract class BonusSettleHandle {
|
|||
|
||||
/**
|
||||
* @param cuMemberBonusDetail 分红
|
||||
* @Description: 获得 分红收益的备注
|
||||
* 获得 分红收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -619,7 +599,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusRange 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* @Description: 获得 报单服务费收益的备注
|
||||
* 获得 报单服务费收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -640,7 +620,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusRange 报单服务费
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* @Description: 获得 报单服务费收益的备注
|
||||
* 获得 报单服务费收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -744,7 +724,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberBonusDetail 云代首购
|
||||
* @param sourceCuMemberSettleExt 提供奖金的人
|
||||
* @param targetCuMemberSettleExt 获得奖金的人
|
||||
* @Description: 获得 报单服务费收益的备注
|
||||
* 获得 报单服务费收益的备注
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 11:22
|
||||
|
@ -761,7 +741,7 @@ public abstract class BonusSettleHandle {
|
|||
/**
|
||||
* @param settleDateStr 结算日期
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
* @Description: 获取会员列表的考核结果
|
||||
* 获取会员列表的考核结果
|
||||
* @return: Map<Long, CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 14:25
|
||||
|
@ -790,7 +770,7 @@ public abstract class BonusSettleHandle {
|
|||
CuMemberSettleExt cuMemberSettleExt) {
|
||||
Integer pkRate = saOrder.getPkRate();
|
||||
if (pkRate == null || !Objects.equals(cuMemberSettleExt.getPkSettleCountry(), saOrder.getPkCountry())) {
|
||||
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData();
|
||||
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberSettleExt.getPkSettleCountry()).getData();
|
||||
pkRate = currencyDTO.getPkId();
|
||||
}
|
||||
return getCuMemberBonus(period, cuMemberBonusMap, cuMemberSettleExt.getPkMember(), cuMemberSettleExt.getIncomeStatus(),
|
||||
|
@ -919,7 +899,7 @@ public abstract class BonusSettleHandle {
|
|||
* @param cuMemberSettleExtMap 树关系
|
||||
* @param settleTableName 结算表
|
||||
* @param saOrderList 订单
|
||||
* @Description: 根据订单获取会员的血缘父级,用于嗨粉推荐、复购极差
|
||||
* 根据订单获取会员的血缘父级,用于嗨粉推荐、复购极差
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/4 14:10
|
||||
|
@ -935,7 +915,7 @@ public abstract class BonusSettleHandle {
|
|||
/**
|
||||
* @param awardsMap 奖衔
|
||||
* @param parentMemberTree 会员树历史记录
|
||||
* @Description: 获取会员的极差等级,验证会员是否有奖衔
|
||||
* 获取会员的极差等级,验证会员是否有奖衔
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/4 14:22
|
||||
|
@ -958,7 +938,7 @@ public abstract class BonusSettleHandle {
|
|||
/**
|
||||
* @param awardsMap 奖衔
|
||||
* @param parentMemberTree 会员树历史记录
|
||||
* @Description: 获取会员的极差等级,验证会员是否有奖衔
|
||||
* 获取会员的极差等级,验证会员是否有奖衔
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/4 14:22
|
||||
|
@ -973,13 +953,11 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益
|
||||
*
|
||||
* @param saOrderExt 订单
|
||||
* @param targetMemberSettleExt 奖金网体
|
||||
* @param cuMemberBonus 奖金主表
|
||||
* @Description: 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益
|
||||
* @return: CuMemberBonusDetail
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/5 16:31
|
||||
*/
|
||||
protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) {
|
||||
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
|
||||
|
@ -1004,12 +982,10 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* 获得需要查询的会员,免考通过的不需要查询考核记录
|
||||
*
|
||||
* @param cuMemberSettleExtMap 存储目前有的会员数据
|
||||
* @param cuMemberSettleExtList 需要查询的会员数据
|
||||
* @Description: 获得需要查询的会员,免考通过的不需要查询考核记录
|
||||
* @return: List<CuMemberSettleExt>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/17 17:57
|
||||
*/
|
||||
protected List<CuMemberSettleExt> getQueryMemberSettleExtList(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
|
||||
// 过滤数据,免考的会员不进行查询
|
||||
|
@ -1025,12 +1001,10 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* 设置奖金扣项,计算税前收益,扣税,实际收益, 设置主表
|
||||
*
|
||||
* @param cuMemberBonus 奖金明细
|
||||
* @param bonusDetail 奖金明细表
|
||||
* @Description: 设置奖金扣项,计算税前收益,扣税,实际收益, 设置主表
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/11 11:17
|
||||
*/
|
||||
protected void setBonusDeduct(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
BigDecimal pretaxIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.PRETAX_INCOME);
|
||||
|
@ -1045,10 +1019,7 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 首购计算 扣项,小计,总计
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/11 13:59
|
||||
* 首购计算 扣项,小计,总计
|
||||
*/
|
||||
protected void setFirstPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
|
@ -1058,10 +1029,7 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 复购计算 扣项,小计,总计
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/11 13:59
|
||||
* 复购计算 扣项,小计,总计
|
||||
*/
|
||||
protected void setPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
|
@ -1071,10 +1039,7 @@ public abstract class BonusSettleHandle {
|
|||
}
|
||||
|
||||
/**
|
||||
* @Description: 云代计算 扣项,小计,总计
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/1/11 13:59
|
||||
* 云代计算 扣项,小计,总计
|
||||
*/
|
||||
protected void setCloudTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
|
||||
|
|
|
@ -132,6 +132,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 注册、升级、复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
|
||||
sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve));
|
||||
|
@ -233,9 +234,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 等级map(key:等级ID,value:等级对象)
|
||||
Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
|
||||
// 等级列表
|
||||
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
|
||||
List<BdGrade> retailGradeList = bonusConfigDTO.getRetaiGradeList();
|
||||
// 等级
|
||||
for (BdGrade bdGrade : retaiGradeList) {
|
||||
for (BdGrade bdGrade : retailGradeList) {
|
||||
if (bdGrade.getBoxTotal() > 0) {
|
||||
retailTeamGradeMap.put(bdGrade.getGradeValue(), bdGrade);
|
||||
}
|
||||
|
@ -267,11 +268,12 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 订单业绩
|
||||
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
||||
// 复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
|
||||
sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum);
|
||||
sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() - boxNum);
|
||||
sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() - boxNum);
|
||||
sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() - boxNum);
|
||||
sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeSubtract(sourceMemberRangeExt.getNewConsumePv(), orderAchieve));
|
||||
|
||||
// 会员等级map
|
||||
Map<String, CuMemberGrade> cuMemberGradeMap = new HashMap<>();
|
||||
|
@ -283,7 +285,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = calculateRetailBackRangeGradeAwards(currentPeriod, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, boxNum, cuMemberGradeMap, cuMemberAwardsMap);
|
||||
cuMemberRetailRangeExtList.add(sourceMemberRangeExt);
|
||||
|
||||
|
||||
// 查询期间的等级和奖衔
|
||||
List<CuMemberGrade> memberGradeList = iCuMemberGradeService.queryCuMemberGrade(cuMemberRetailRangeExtList, currentPeriod);
|
||||
// 查询最大的手动奖衔
|
||||
|
@ -323,7 +324,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
if (cuMemberGradeList.size() > 0) {
|
||||
// 删除等级
|
||||
iCuMemberGradeService.deleteCuMemberGrade(cuMemberGradeList, currentPeriod);
|
||||
// 批量更新会员等级
|
||||
iCuMemberService.updateCuMemberMinGradeByList(cuMemberGradeList, currentPeriod);
|
||||
}
|
||||
}
|
||||
|
@ -347,8 +350,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
// 处理等级、奖衔
|
||||
if (cuMemberAwardsList.size() > 0) {
|
||||
// 删除会员奖衔记录
|
||||
iCuMemberAwardsService.deleteCuMemberAwards(cuMemberAwardsList, currentPeriod);
|
||||
// 更新会员表,更新奖衔
|
||||
// 更新会员表奖衔数据
|
||||
iCuMemberService.updateCuMemberMinAwardsByList(cuMemberAwardsList, currentPeriod);
|
||||
}
|
||||
}
|
||||
|
@ -493,7 +497,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
|
||||
sourceMemberRangeExt.setNewBoxNum(sourceMemberRangeExt.getNewBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setConsumeBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getConsumeBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setMonthBoxNum(sourceMemberRangeExt.getMonthBoxNum() + boxNum);
|
||||
sourceMemberRangeExt.setNewConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), orderAchieve));
|
||||
sourceMemberRangeExt.setMonthConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthConsumePv(), orderAchieve));
|
||||
|
@ -554,14 +558,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
if (cuMemberAwardsList.size() > 0) {
|
||||
// 批量插入会员奖衔记录
|
||||
iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList);
|
||||
// 更新会员表,更新奖衔
|
||||
// 更新会员表奖衔数据
|
||||
iCuMemberService.updateCuMemberRetailRangeByPeriod(cuMemberAwardsList, period);
|
||||
}
|
||||
if (cuMemberGradeList.size() > 0) {
|
||||
// 批量插入会员等级记录
|
||||
iCuMemberGradeService.insertCuMemberGrade(cuMemberGradeList);
|
||||
// 更新会员表等级数据(来源 cu_member_grade)
|
||||
iCuMemberService.updateCuMemberGradeByPeriod(cuMemberGradeList, period);
|
||||
// 根据cu_member_level更新cu_member
|
||||
// 更新会员表等级数据(来源 cu_member_level)
|
||||
iCuMemberService.updateCuMemberLevel(settleStartDate, settleEndDate);
|
||||
}
|
||||
// 更新网体
|
||||
|
@ -864,18 +871,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
|
||||
// 激活的账号才能累计业绩和盒数(有注册、升级订单)
|
||||
if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) {
|
||||
// 累计业绩
|
||||
// 累计金额
|
||||
targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamNewAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthAmount(), orderAmount));
|
||||
// 累计金额
|
||||
// 累计业绩
|
||||
targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamNewPv(), orderAchieve));
|
||||
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), orderAchieve));
|
||||
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), orderAchieve));
|
||||
// 累计盒数
|
||||
targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() + boxNum);
|
||||
targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() + boxNum);
|
||||
targetMemberRangeExt.setMonthBoxNum(targetMemberRangeExt.getMonthBoxNum() + boxNum);
|
||||
targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() + boxNum);
|
||||
// 计算等级
|
||||
calculateGradeAwards(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap,
|
||||
secondRangeTableName, cuMemberGradeList, cuMemberAwardsList, targetMemberRangeExt, activateMap);
|
||||
|
@ -946,9 +953,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (targetMemberRangeExt.getPkMember() == 201) {
|
||||
log.info("targetMemberRangeExt: {}", targetMemberRangeExt);
|
||||
}
|
||||
// 计算奖衔(荣誉级别)
|
||||
while (true) {
|
||||
// 当前实时奖衔值 + 5,获取下一个奖衔值
|
||||
|
@ -1063,16 +1067,17 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 激活的账号才能累计业绩和盒数(有注册、升级订单)
|
||||
if (targetMemberRangeExt.getEnableStatus() == EYesNo.YES.getIntValue()) {
|
||||
// 累计业绩
|
||||
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve));
|
||||
targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve));
|
||||
targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamNewPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewPv(), orderAchieve));
|
||||
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), orderAchieve));
|
||||
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), orderAchieve));
|
||||
// 累计金额
|
||||
targetMemberRangeExt.setTeamNewAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamNewAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumeAmount(), orderAmount));
|
||||
targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthAmount(), orderAmount));
|
||||
// 累计盒数
|
||||
targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum);
|
||||
targetMemberRangeExt.setMonthBoxNum(targetMemberRangeExt.getMonthBoxNum() - boxNum);
|
||||
targetMemberRangeExt.setTeamNewBoxNum(targetMemberRangeExt.getTeamNewBoxNum() - boxNum);
|
||||
targetMemberRangeExt.setTeamBoxNum(targetMemberRangeExt.getTeamBoxNum() - boxNum);
|
||||
targetMemberRangeExt.setTeamMonthBoxNum(targetMemberRangeExt.getTeamMonthBoxNum() - boxNum);
|
||||
// 计算等级
|
||||
calculateBackGrade(period, memberRangeExtMap, rangeTableName, saOrderExt, retailTeamGradeMap, retailAwardsMap, secondRangeTableName, cuMemberGradeMap, cuMemberAwardsMap, targetMemberRangeExt);
|
||||
cuMemberRetailRangeExtList.add(targetMemberRangeExt);
|
||||
|
@ -1755,39 +1760,53 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
*/
|
||||
void calculateRetailShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO,
|
||||
Integer period, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
// 结算日期
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
// 上月最后一天
|
||||
String beforeMonthLastDate = DateUtils.beforeMonthLastDateStr(settleDate);
|
||||
// 查询上月最后一天
|
||||
// 上月最后一天期数
|
||||
Integer beforeMonthLastPeriod = getCuMemberSettlePeriodService().getCuMemberSettlePeriodByDate(beforeMonthLastDate).getPkId();
|
||||
String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + beforeMonthLastPeriod;
|
||||
|
||||
// 查询上月订单
|
||||
// 结算月第一天
|
||||
// 结算月第一天(上月第一天)
|
||||
Date currentMonthFirstDate = DateUtils.beforeMonthFirstDate(settleDate);
|
||||
// 结算月下月第一天
|
||||
// 结算月下月第一天(本月第一天)
|
||||
Date nextMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate);
|
||||
|
||||
List<Integer> orderType = new ArrayList<>();
|
||||
orderType.add(EOrderType.RETAIL_REGISTER.getValue());
|
||||
orderType.add(EOrderType.RETAIL_UPGRADE.getValue());
|
||||
orderType.add(EOrderType.RETAIL_REPURCHASE.getValue());
|
||||
|
||||
// 月订单列表
|
||||
List<SaOrder> totalMonthOrderList = new ArrayList<>();
|
||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
|
||||
// 当前年月
|
||||
String month = DateUtils.getMonth(settleDateStr);
|
||||
while (!DateUtils.compareDateEqual(currentMonthFirstDate, nextMonthFirstDate)) {
|
||||
// 从上月第一天开始,每天查一次订单,查到本月第一天停止
|
||||
Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, currentMonthFirstDate);
|
||||
List<SaOrder> currentMonthOrderList = saOrderServiceApi.querySaOrderByDayForCloud(currentMonthFirstDate, endDate, orderType).getData();
|
||||
// 查询指定时间范围内订单
|
||||
List<SaOrder> currentMonthOrderList = iBonusOrderService.listSaOrderByTime(currentMonthFirstDate, endDate, orderType);
|
||||
totalMonthOrderList.addAll(currentMonthOrderList);
|
||||
currentMonthFirstDate = endDate;
|
||||
}
|
||||
|
||||
if (totalMonthOrderList.size() > 0) {
|
||||
// 会员ID集合
|
||||
Set<Long> pkMemberSet = new HashSet<>();
|
||||
totalMonthOrderList.forEach(saOrder -> pkMemberSet.add(saOrder.getPkMember()));
|
||||
// 查询会员血缘伞上数据
|
||||
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.batchQueryMemberRetailRangeByMemberPk(rangeTableName, pkMemberSet);
|
||||
// 会员结算map(key:会员ID, value:会员结算数据)
|
||||
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
|
||||
cuMemberRetailRangeExtList.forEach(cuMemberRetailRangeExt ->
|
||||
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt));
|
||||
|
||||
// 按照体系将订单区分
|
||||
// key:会员体系,value:会员订单列表
|
||||
Map<Integer, List<SaOrder>> orderMap = new HashMap<>();
|
||||
for (SaOrder saOrder : totalMonthOrderList) {
|
||||
if (memberRangeExtMap.containsKey(saOrder.getPkMember())) {
|
||||
|
|
|
@ -67,8 +67,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
@Autowired
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
@Autowired
|
||||
private ICuMemberService cuMemberService;
|
||||
@Autowired
|
||||
private ICuAwardsControlService cuAwardsControlService;
|
||||
@Autowired
|
||||
private ICuMemberRepeatBonusService cuMemberRepeatBonusService;
|
||||
|
@ -175,6 +173,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
Date currentDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(settleDate));
|
||||
String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
|
||||
if (afterDate.endsWith("01")) {
|
||||
// TODO new 区域考核处理
|
||||
// 计算完月奖,计算考核(区域6个月要达到蓝宝以上)
|
||||
String rangeTableName = TableNameConstants.CU_MEMBER_RETAIL_RANGE + period;
|
||||
cuRegionAssessService.assessRegionByEveryMonth(settleDate, rangeTableName);
|
||||
|
|
|
@ -1,112 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.enums.EBonusIncomeStatus;
|
||||
import com.hzs.common.core.enums.EBonusItems;
|
||||
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.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.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdStoreLevelDetail;
|
||||
import com.hzs.common.domain.system.config.ext.BdStoreLevelExt;
|
||||
import com.hzs.system.config.IGradeServiceApi;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @description: 计算店铺奖金
|
||||
* @author: sui q
|
||||
* @time: 2023/5/8 15:40
|
||||
* @classname: BonusStoreHandle
|
||||
* @package_name: com.hzs.member.bonus.service.impl
|
||||
* version 1.0.0
|
||||
*/
|
||||
@Component
|
||||
public class BonusSettleStoreHandle extends BonusSettleHandle{
|
||||
|
||||
@DubboReference
|
||||
private IGradeServiceApi gradeServiceApi;
|
||||
|
||||
/**
|
||||
* @param period 期间
|
||||
* @param bonusConfigDTO 参数
|
||||
* @param cuMemberBonusMap 所有计算出来的奖金汇总
|
||||
* @Description: 计算嗨粉奖金
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/10 14:17
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateStoreBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
// 云代区域 月奖
|
||||
// 查询时间范围内订单
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
// 上个月最后一天
|
||||
settleDate = DateUtils.beforeMonthLastDate(settleDate);
|
||||
// 结算月第一天
|
||||
Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(settleDate);
|
||||
// 结算月下月第一天
|
||||
Date nextMonthFirstDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
|
||||
// 查询月末会员状态
|
||||
Date currentMonthLastDate = DateUtils.currentMonthLastDate(settleDate);
|
||||
Integer lastPeriod = getCuMemberSettlePeriodService().getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentMonthLastDate)).getPkId();
|
||||
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + lastPeriod;
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
List<SaOrderExt> currentMonthOrderList = saOrderServiceApi.querySaOrderByTimeForStore(currentMonthFirstDate, nextMonthFirstDate).getData();
|
||||
if(CollectionUtil.isNotEmpty(currentMonthOrderList)){
|
||||
// 查询店铺奖金配置表
|
||||
Set<Long> pkMemberSet = currentMonthOrderList.stream().distinct().map(SaOrder::getPkMember).collect(Collectors.toSet());
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.batchQueryMemberSettleByMemberPk(currentSettleTableName, pkMemberSet);
|
||||
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap = new HashMap<>();
|
||||
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
|
||||
List<BdStoreLevelExt> storeLevelList = gradeServiceApi.queryStoreLevel().getData();
|
||||
Map<String, BdStoreLevelExt> storeLevelExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(storeLevelList.size()));
|
||||
if(CollectionUtil.isNotEmpty(storeLevelList)){
|
||||
for (BdStoreLevelExt bdStoreLevel : storeLevelList) {
|
||||
storeLevelExtMap.put(bdStoreLevel.getPkId().toString() + bdStoreLevel.getPkCreator().toString(), bdStoreLevel);
|
||||
}
|
||||
}
|
||||
for (SaOrderExt saOrderExt : currentMonthOrderList) {
|
||||
String key = saOrderExt.getPkMemberStore().toString() + saOrderExt.getPkCountry().toString();
|
||||
if(storeLevelExtMap.containsKey(key)){
|
||||
BdStoreLevelExt bdStoreLevelExt = storeLevelExtMap.get(key);
|
||||
for (BdStoreLevelDetail bdStoreLevelDetail : bdStoreLevelExt.getStoreLevelDetailList()) {
|
||||
if(ComputeUtil.compareValue(saOrderExt.getOrderAchieve(), bdStoreLevelDetail.getEndAchievement())){
|
||||
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberSettleExt, cuMemberBonus);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(bdStoreLevelDetail.getRatio());
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), bdStoreLevelDetail.getRatio()));
|
||||
storeRemark(cuMemberBonusDetail, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentMonthLastDate));
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setStoreIncome(cuMemberBonusDetail.getPretaxIncome());
|
||||
setBonusDeduct(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
BigDecimal realIncome = ReflectUtils.invokeGetter(cuMemberBonusDetail, BonusFieldConstants.REAL_INCOME);
|
||||
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.hzs.bonus.order.mapper;
|
||||
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
|
@ -28,4 +29,15 @@ public interface BonusOrderMapper {
|
|||
@Param("endDate") Date endDate,
|
||||
@Param("orderCode") String orderCode);
|
||||
|
||||
/**
|
||||
* 查询订单列表
|
||||
*
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @param orderType 订单类型列表
|
||||
*/
|
||||
List<SaOrder> listSaOrderByTime(@Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate,
|
||||
@Param("orderType") List<Integer> orderType);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.hzs.bonus.order.service;
|
||||
|
||||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
@ -21,4 +21,13 @@ public interface IBonusOrderService {
|
|||
*/
|
||||
SaOrderExt querySaOrderByDay(Date startDate, Date endDate, String orderCode);
|
||||
|
||||
/**
|
||||
* 查询订单列表
|
||||
*
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @param orderType 订单类型列表
|
||||
*/
|
||||
List<SaOrder> listSaOrderByTime(Date startDate, Date endDate, List<Integer> orderType);
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import com.hzs.bonus.order.mapper.BonusOrderMapper;
|
||||
import com.hzs.bonus.order.service.IBonusOrderService;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
@ -30,4 +31,9 @@ public class BonusOrderServiceImpl implements IBonusOrderService {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SaOrder> listSaOrderByTime(Date startDate, Date endDate, List<Integer> orderType) {
|
||||
return bonusOrderMapper.listSaOrderByTime(startDate, endDate, orderType);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -26,20 +26,21 @@
|
|||
<result column="IS_REAL_NAME" property="isRealName"/>
|
||||
<result column="PK_RATE" property="pkRate"/>
|
||||
<result column="SYSTEM_TYPE" property="systemType"/>
|
||||
<result column="CONSUME_BOX_NUM" property="consumeBoxNum"/>
|
||||
<result column="NEW_BOX_NUM" property="newBoxNum"/>
|
||||
<result column="TEAM_BOX_NUM" property="teamBoxNum"/>
|
||||
<result column="CONSUME_BOX_NUM" property="consumeBoxNum"/>
|
||||
<result column="MONTH_BOX_NUM" property="monthBoxNum"/>
|
||||
<result column="TEAM_NEW_BOX_NUM" property="teamNewBoxNum"/>
|
||||
<result column="NEW_CONSUME_PV" property="newConsumePv"/>
|
||||
<result column="CONSUME_PV" property="consumePv"/>
|
||||
<result column="MONTH_CONSUME_PV" property="monthConsumePv"/>
|
||||
<result column="NEW_CONSUME_PV" property="newConsumePv"/>
|
||||
<result column="TEAM_CONSUME_AMOUNT" property="teamConsumeAmount"/>
|
||||
<result column="TEAM_NEW_BOX_NUM" property="teamNewBoxNum"/>
|
||||
<result column="TEAM_BOX_NUM" property="teamBoxNum"/>
|
||||
<result column="TEAM_MONTH_BOX_NUM" property="teamMonthBoxNum"/>
|
||||
<result column="TEAM_NEW_PV" property="teamNewPv"/>
|
||||
<result column="TEAM_CONSUME_PV" property="teamConsumePv"/>
|
||||
<result column="TEAM_MONTH_AMOUNT" property="teamMonthAmount"/>
|
||||
<result column="TEAM_MONTH_PV" property="teamMonthPv"/>
|
||||
<result column="TEAM_NEW_AMOUNT" property="teamNewAmount"/>
|
||||
<result column="TEAM_NEW_PV" property="teamNewPv"/>
|
||||
<result column="TEAM_CONSUME_AMOUNT" property="teamConsumeAmount"/>
|
||||
<result column="TEAM_MONTH_AMOUNT" property="teamMonthAmount"/>
|
||||
<result column="RECOMMEND_NUM" property="recommendNum"/>
|
||||
<result column="TEAM_NUM" property="teamNum"/>
|
||||
<result column="REGION_ADDRESS" property="regionAddress"/>
|
||||
|
@ -60,51 +61,66 @@
|
|||
|
||||
<update id="mergeMemberRetailRangeInit">
|
||||
update ${rangeTableName}
|
||||
set consume_box_num=0,
|
||||
new_box_num=0,
|
||||
team_box_num=0,
|
||||
month_box_num=0,
|
||||
team_new_box_num=0,
|
||||
pk_share_awards = (select pk_id from BD_AWARDS where awards_value = 0),
|
||||
consume_pv=0,
|
||||
month_consume_pv=0,
|
||||
new_consume_pv=0,
|
||||
team_consume_amount=0,
|
||||
team_consume_pv=0,
|
||||
enable_status=1,
|
||||
team_month_amount=0,
|
||||
team_month_pv=0,
|
||||
team_new_amount=0,
|
||||
team_new_pv=0,
|
||||
recommend_num=0,
|
||||
team_num=0,
|
||||
set new_box_num = 0,
|
||||
consume_box_num = 0,
|
||||
month_box_num = 0,
|
||||
new_consume_pv = 0,
|
||||
consume_pv = 0,
|
||||
month_consume_pv = 0,
|
||||
team_new_box_num = 0,
|
||||
team_box_num = 0,
|
||||
team_month_box_num = 0,
|
||||
team_new_pv = 0,
|
||||
team_consume_pv = 0,
|
||||
team_month_pv = 0,
|
||||
team_new_amount = 0,
|
||||
team_consume_amount = 0,
|
||||
team_month_amount = 0,
|
||||
recommend_num = 0,
|
||||
team_num = 0,
|
||||
enable_status = 1,
|
||||
pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20),
|
||||
region_address=0,
|
||||
big_box_num=0,
|
||||
small_box_num=0,
|
||||
big_team_pv=0,
|
||||
small_team_pv=0
|
||||
pk_share_awards = (select pk_id from BD_AWARDS where awards_value = 0),
|
||||
region_address = 0,
|
||||
big_box_num = 0,
|
||||
small_box_num = 0,
|
||||
big_team_pv = 0,
|
||||
small_team_pv = 0
|
||||
</update>
|
||||
|
||||
<update id="mergeMemberRetailRangeByYesterday">
|
||||
merge into ${rangeTableName} a
|
||||
using(
|
||||
select pk_member,consume_box_num,new_box_num,team_box_num,month_box_num,team_new_box_num,enable_status,
|
||||
consume_pv,month_consume_pv,new_consume_pv,team_consume_amount,team_consume_pv,pk_share_awards,
|
||||
team_month_amount,team_month_pv,team_new_amount,team_new_pv,recommend_num,team_num,pk_grade,
|
||||
big_box_num,small_box_num,big_team_pv,small_team_pv
|
||||
select pk_member, pk_grade, pk_share_awards, enable_status,
|
||||
new_box_num, consume_box_num, month_box_num,
|
||||
new_consume_pv, consume_pv, month_consume_pv,
|
||||
team_new_box_num, team_box_num, team_month_box_num,
|
||||
team_new_pv, team_consume_pv, team_month_pv,
|
||||
team_new_amount, team_consume_amount, team_month_amount,
|
||||
recommend_num, team_num,
|
||||
big_box_num, small_box_num, big_team_pv, small_team_pv
|
||||
from ${yesterdayRangeTableName}
|
||||
) b
|
||||
on (a.pk_member=b.pk_member)
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.consume_box_num=b.consume_box_num,a.team_box_num=b.team_box_num,
|
||||
a.consume_pv=b.consume_pv,a.team_consume_amount=b.team_consume_amount,a.team_consume_pv=b.team_consume_pv,
|
||||
a.recommend_num=b.recommend_num,a.team_num=b.team_num,a.pk_grade=b.pk_grade, a.enable_status = b.enable_status,
|
||||
a.big_box_num=b.big_box_num,a.small_box_num=b.small_box_num,
|
||||
a.big_team_pv=b.big_team_pv,a.small_team_pv=b.small_team_pv
|
||||
update set
|
||||
a.consume_box_num = b.consume_box_num,
|
||||
a.consume_pv = b.consume_pv,
|
||||
a.team_box_num = b.team_box_num,
|
||||
a.team_consume_pv = b.team_consume_pv,
|
||||
a.team_consume_amount = b.team_consume_amount,
|
||||
a.recommend_num = b.recommend_num, a.team_num = b.team_num,
|
||||
a.pk_grade = b.pk_grade,
|
||||
a.enable_status = b.enable_status,
|
||||
a.big_box_num = b.big_box_num, a.small_box_num = b.small_box_num,
|
||||
a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv
|
||||
<if test="isSameMonth == 0">
|
||||
,a.month_box_num=b.month_box_num,a.month_consume_pv=b.month_consume_pv,a.pk_share_awards=b.pk_share_awards,
|
||||
a.team_month_amount=b.team_month_amount,a.team_month_pv=b.team_month_pv
|
||||
,a.month_box_num = b.month_box_num
|
||||
,a.month_consume_pv = b.month_consume_pv
|
||||
,a.team_month_box_num = b.team_month_box_num
|
||||
,a.team_month_pv = b.team_month_pv
|
||||
,a.team_month_amount = b.team_month_amount
|
||||
,a.pk_share_awards = b.pk_share_awards
|
||||
</if>
|
||||
</update>
|
||||
|
||||
|
@ -112,28 +128,24 @@
|
|||
merge into ${rangeTableName} a
|
||||
using (
|
||||
<foreach collection="cuMemberRangeExtList" item="item" open=" " close=" " separator="union">
|
||||
select #{item.pkMember} pk_member, #{item.pkAwards} pk_awards, #{item.pkGrade} pk_grade,
|
||||
#{item.consumeBoxNum} consume_box_num, #{item.newBoxNum} new_bosx_num, #{item.pkShareAwards} pk_share_awards,
|
||||
#{item.teamBoxNum} team_box_num, #{item.monthBoxNum} month_box_num, #{item.teamNewBoxNum} team_new_box_num,
|
||||
#{item.consumePv} consume_pv, #{item.monthConsumePv} month_consume_pv,
|
||||
#{item.newConsumePv} new_consume_pv, #{item.teamConsumeAmount} team_consume_amount,
|
||||
#{item.teamMonthAmount} team_month_amount, #{item.teamMonthPv} team_month_pv,
|
||||
#{item.teamNewPv} team_new_pv, #{item.teamNewAmount} team_new_amount,
|
||||
#{item.teamConsumePv} team_consume_pv, #{item.newBoxNum} new_box_num,
|
||||
#{item.recommendNum} recommend_num, #{item.teamNum} team_num,
|
||||
#{item.enableStatus} enable_status
|
||||
select #{item.pkMember} pk_member, #{item.pkAwards} pk_awards, #{item.pkGrade} pk_grade, #{item.pkShareAwards} pk_share_awards,
|
||||
#{item.newBoxNum} new_box_num, #{item.consumeBoxNum} consume_box_num, #{item.monthBoxNum} month_box_num,
|
||||
#{item.newConsumePv} new_consume_pv, #{item.consumePv} consume_pv, #{item.monthConsumePv} month_consume_pv,
|
||||
#{item.teamNewBoxNum} team_new_box_num, #{item.teamBoxNum} team_box_num, #{item.teamMonthBoxNum} team_month_box_num,
|
||||
#{item.teamNewPv} team_new_pv, #{item.teamConsumePv} team_consume_pv, #{item.teamMonthPv} team_month_pv,
|
||||
#{item.teamNewAmount} team_new_amount, #{item.teamConsumeAmount} team_consume_amount, #{item.teamMonthAmount} team_month_amount,
|
||||
#{item.recommendNum} recommend_num, #{item.teamNum} team_num, #{item.enableStatus} enable_status
|
||||
from dual
|
||||
</foreach>
|
||||
) b
|
||||
on (a.pk_member=b.pk_member)
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.pk_awards = b.pk_awards, a.pk_grade = b.pk_grade, a.pk_share_awards = b.pk_share_awards,
|
||||
a.consume_box_num = b.consume_box_num, a.new_box_num = b.new_box_num, a.team_box_num = b.team_box_num,
|
||||
a.month_box_num = b.month_box_num, a.team_new_box_num = b.team_new_box_num,
|
||||
a.consume_pv = b.consume_pv, a.month_consume_pv = b.month_consume_pv, a.new_consume_pv = b.new_consume_pv,
|
||||
a.team_consume_amount = b.team_consume_amount, a.team_consume_pv = b.team_consume_pv,
|
||||
a.team_month_amount = b.team_month_amount, a.team_month_pv = b.team_month_pv,
|
||||
a.team_new_amount = b.team_new_amount, a.team_new_pv = b.team_new_pv,
|
||||
a.new_box_num = b.new_box_num, a.consume_box_num = b.consume_box_num, a.month_box_num = b.month_box_num,
|
||||
a.new_consume_pv = b.new_consume_pv, a.consume_pv = b.consume_pv, a.month_consume_pv = b.month_consume_pv,
|
||||
a.team_new_box_num = b.team_new_box_num, a.team_box_num = b.team_box_num, a.team_month_box_num = b.team_month_box_num,
|
||||
a.team_new_pv = b.team_new_pv, a.team_consume_pv = b.team_consume_pv, a.team_month_pv = b.team_month_pv,
|
||||
a.team_new_amount = b.team_new_amount, a.team_consume_amount = b.team_consume_amount, a.team_month_amount = b.team_month_amount,
|
||||
a.recommend_num = b.recommend_num, a.team_num = b.team_num, a.enable_status = b.enable_status
|
||||
</update>
|
||||
|
||||
|
@ -202,8 +214,8 @@
|
|||
when matched then
|
||||
update set a.pk_grade = b.pk_grade, a.pk_awards = b.pk_awards,
|
||||
a.new_box_num = b.new_box_num, a.new_consume_pv = b.new_consume_pv,
|
||||
a.team_new_box_num = b.team_new_box_num,a.team_new_pv = b.team_new_pv,
|
||||
a.team_new_amount = b.team_new_amount,a.enable_status = b.enable_status
|
||||
a.team_new_box_num = b.team_new_box_num, a.team_new_pv = b.team_new_pv,
|
||||
a.team_new_amount = b.team_new_amount, a.enable_status = b.enable_status
|
||||
</update>
|
||||
|
||||
<update id="mergeMemberRetailGradeByMember">
|
||||
|
@ -224,8 +236,11 @@
|
|||
select cm.pk_member, cr.county region_address
|
||||
from ${rangeTableName} cm
|
||||
inner join cu_member_retail_region cr
|
||||
on cr.pk_member = cm.pk_member and cr.effective = 0 and cr.del_flag = 0
|
||||
where cr.creation_time < #{settleDate,jdbcType=DATE}) b
|
||||
on cr.pk_member = cm.pk_member
|
||||
and cr.effective = 0
|
||||
and cr.del_flag = 0
|
||||
where cr.creation_time < #{settleDate, jdbcType=DATE}
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.region_address = b.region_address
|
||||
|
@ -241,15 +256,14 @@
|
|||
from cu_member_spe_retail
|
||||
where del_flag = 0
|
||||
and period = #{period}
|
||||
group by member_code) b
|
||||
on a.member_code = b.member_code and nvl(a.modified_time, a.creation_time) = b.creation_time
|
||||
group by member_code
|
||||
) b on a.member_code = b.member_code and nvl(a.modified_time, a.creation_time) = b.creation_time
|
||||
) b
|
||||
on (a.member_code = b.member_code)
|
||||
when matched then
|
||||
update set a.big_box_num = b.team_box_num - b.small_box_num,a.small_box_num = b.small_box_num,
|
||||
a.team_box_num = a.team_box_num + b.team_box_num,a.team_consume_pv = a.team_consume_pv + b.total_team_pv,
|
||||
a.team_month_pv = a.team_month_pv + b.total_team_pv,
|
||||
a.big_team_pv = b.total_team_pv - b.small_area_pv, a.small_team_pv = b.small_area_pv
|
||||
update set
|
||||
a.big_box_num = b.team_box_num - b.small_box_num,
|
||||
a.small_box_num = b.small_box_num
|
||||
</update>
|
||||
|
||||
<update id="mergeCuMemberRetailBackBoxBySpecial">
|
||||
|
@ -257,25 +271,26 @@
|
|||
using (
|
||||
select *
|
||||
from ${beforeTableName} a
|
||||
inner join(
|
||||
inner join (
|
||||
select cr.*
|
||||
from cu_member_spe_retail cr
|
||||
inner join(
|
||||
inner join (
|
||||
select member_code, max(pk_id) pk_id
|
||||
from cu_member_spe_retail
|
||||
where period < #{period}
|
||||
and del_flag = 0
|
||||
group by member_code
|
||||
) b
|
||||
on cr.member_code = b.member_code
|
||||
) b on cr.member_code = b.member_code
|
||||
where cr.period = #{period}
|
||||
and cr.del_flag = 0) b
|
||||
on a.member_code = b.member_code
|
||||
and cr.del_flag = 0
|
||||
) b on a.member_code = b.member_code
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.big_box_num = 0,a.small_box_num = 0,
|
||||
a.team_box_num = a.team_box_num - a.big_box_num - a.small_box_num
|
||||
update set
|
||||
a.big_box_num = 0,
|
||||
a.small_box_num = 0,
|
||||
a.team_box_num = a.team_box_num
|
||||
</update>
|
||||
|
||||
<select id="queryCuMemberRetailRangeParent" resultMap="CuMemberRetailRangeExt">
|
||||
|
@ -306,14 +321,15 @@
|
|||
new_consume_pv,
|
||||
consume_pv,
|
||||
month_consume_pv,
|
||||
team_box_num,
|
||||
team_new_box_num,
|
||||
team_consume_amount,
|
||||
team_box_num,
|
||||
team_month_box_num,
|
||||
team_new_pv,
|
||||
team_consume_pv,
|
||||
team_month_amount,
|
||||
team_month_pv,
|
||||
team_new_amount,
|
||||
team_new_pv,
|
||||
team_consume_amount,
|
||||
team_month_amount,
|
||||
recommend_num,
|
||||
team_num,
|
||||
pk_grade,
|
||||
|
@ -370,20 +386,21 @@
|
|||
a.big_team_pv,
|
||||
a.small_team_pv,
|
||||
a.system_type,
|
||||
consume_box_num,
|
||||
new_box_num,
|
||||
team_box_num,
|
||||
consume_box_num,
|
||||
month_box_num,
|
||||
team_new_box_num,
|
||||
new_consume_pv,
|
||||
consume_pv,
|
||||
month_consume_pv,
|
||||
new_consume_pv,
|
||||
team_consume_amount,
|
||||
team_new_box_num,
|
||||
team_box_num,
|
||||
team_month_box_num,
|
||||
team_new_pv,
|
||||
team_consume_pv,
|
||||
team_month_amount,
|
||||
team_month_pv,
|
||||
team_new_amount,
|
||||
team_new_pv,
|
||||
team_consume_amount,
|
||||
team_month_amount,
|
||||
recommend_num,
|
||||
team_num,
|
||||
ba.grade_value,
|
||||
|
@ -414,18 +431,22 @@
|
|||
select pk_member,c.pk_parent,member_code,member_name,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,bwa.awards_value share_awards_value,
|
||||
bg.grade_value,bg.grade_name,bw.awards_value,bw.awards_name,c.pk_share_awards,c.system_type,
|
||||
bw.range_ratio,bw.benefit_avg_ratio,bw.benefit_share_ratio from (
|
||||
select * from ${rangeTableName}
|
||||
bw.range_ratio,bw.benefit_avg_ratio,bw.benefit_share_ratio
|
||||
from (
|
||||
select *
|
||||
from ${rangeTableName}
|
||||
start with pk_member = #{item}
|
||||
connect by pk_member = prior pk_parent
|
||||
) c
|
||||
inner join bd_grade bg
|
||||
on c.pk_grade = bg.pk_id
|
||||
left join bd_awards bw
|
||||
on bw.pk_id=c.pk_awards
|
||||
on bw.pk_id = c.pk_awards
|
||||
left join bd_awards bwa
|
||||
on bwa.pk_id=c.pk_share_awards and bwa.del_flag=0
|
||||
where bg.del_flag=0 and bw.del_flag=0
|
||||
on bwa.pk_id = c.pk_share_awards
|
||||
and bwa.del_flag = 0
|
||||
where bg.del_flag = 0
|
||||
and bw.del_flag = 0
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
|
@ -577,26 +598,27 @@
|
|||
cm.income_status,
|
||||
cm.pay_time,
|
||||
b.pk_rate,
|
||||
nvl(cm.is_activate, a.enable_status) enable_status,
|
||||
nvl(b.consume_box_num, 0) + a.new_box_num consume_box_num,
|
||||
nvl(cm.is_activate, a.enable_status) enable_status,
|
||||
a.new_box_num,
|
||||
nvl(b.team_box_num, 0) + a.team_new_box_num team_box_num,
|
||||
nvl(b.month_box_num, 0) + a.team_new_box_num month_box_num,
|
||||
a.team_new_box_num,
|
||||
nvl(b.consume_pv, 0) + a.new_consume_pv consume_pv,
|
||||
nvl(month_consume_pv, 0) + a.new_consume_pv month_consume_pv,
|
||||
nvl(b.consume_box_num, 0) + a.new_box_num consume_box_num,
|
||||
nvl(b.month_box_num, 0) + a.new_box_num month_box_num,
|
||||
a.new_consume_pv,
|
||||
nvl(b.team_consume_amount, 0) + a.team_new_amount team_consume_amount,
|
||||
nvl(b.consume_pv, 0) + a.new_consume_pv consume_pv,
|
||||
nvl(b.month_consume_pv, 0) + a.new_consume_pv month_consume_pv,
|
||||
a.team_new_box_num,
|
||||
nvl(b.team_box_num, 0) + a.team_new_box_num team_box_num,
|
||||
nvl(b.team_month_box_num, 0) + a.team_new_box_num team_month_box_num,
|
||||
a.team_new_pv,
|
||||
nvl(b.team_consume_pv, 0) + a.team_new_pv team_consume_pv,
|
||||
nvl(b.team_month_amount, 0) + a.team_new_amount team_month_amount,
|
||||
nvl(b.team_month_pv, 0) + a.team_new_pv team_month_pv,
|
||||
a.team_new_amount,
|
||||
nvl(b.team_consume_amount, 0) + a.team_new_amount team_consume_amount,
|
||||
nvl(b.team_month_amount, 0) + a.team_new_amount team_month_amount,
|
||||
nvl(b.big_box_num, 0) big_box_num,
|
||||
nvl(b.small_box_num, 0) small_box_num,
|
||||
nvl(b.big_team_pv, 0) big_team_pv,
|
||||
nvl(b.small_team_pv, 0) small_team_pv,
|
||||
a.system_type,
|
||||
a.team_new_amount,
|
||||
a.team_new_pv,
|
||||
bg.grade_value,
|
||||
bg.grade_name,
|
||||
bw.awards_value,
|
||||
|
@ -657,17 +679,17 @@
|
|||
|
||||
<select id="queryCuMemberSecondRangeExtByParent" resultMap="CuMemberRetailRangeExt">
|
||||
select cm.pk_id pkMember,
|
||||
nvl(b.team_box_num, 0) + nvl(a.team_new_box_num, 0) team_box_num,
|
||||
nvl(b.consume_box_num, 0) + nvl(a.new_box_num, 0) consume_box_num,
|
||||
nvl(b.big_box_num, 0) big_box_num,
|
||||
nvl(b.small_box_num, 0) small_box_num
|
||||
nvl(b.consume_box_num, 0) + nvl(a.new_box_num, 0) consume_box_num,
|
||||
nvl(b.team_box_num, 0) + nvl(a.team_new_box_num, 0) team_box_num,
|
||||
nvl(b.big_box_num, 0) big_box_num,
|
||||
nvl(b.small_box_num, 0) small_box_num
|
||||
from cu_member cm
|
||||
left join ${secondTableName} a
|
||||
on cm.pk_id = a.pk_member
|
||||
left join ${rangeTableName} b
|
||||
on cm.pk_id = b.pk_member
|
||||
left join ${secondTableName} a
|
||||
on cm.pk_id = a.pk_member
|
||||
left join ${rangeTableName} b
|
||||
on cm.pk_id = b.pk_member
|
||||
where cm.pk_parent = #{pkMember}
|
||||
and cm.del_flag = 0
|
||||
and cm.del_flag = 0
|
||||
|
||||
<!--
|
||||
select a.pk_member,
|
||||
|
|
|
@ -533,10 +533,10 @@
|
|||
enable_status number(2) default 1 not null,
|
||||
system_type NUMBER(2) default 2 not null,
|
||||
new_box_num number(8) default 0 not null,
|
||||
team_new_box_num number(8) default 0 not null,
|
||||
new_consume_pv number(17,6) default 0 not null,
|
||||
team_new_amount number(17,6) default 0 not null,
|
||||
team_new_pv number(17,6) default 0 not null
|
||||
team_new_box_num number(8) default 0 not null,
|
||||
team_new_pv number(17,6) default 0 not null,
|
||||
team_new_amount number(17,6) default 0 not null
|
||||
)
|
||||
</update>
|
||||
|
||||
|
@ -567,20 +567,21 @@
|
|||
pk_country number(4) default 1 not null,
|
||||
system_type NUMBER(2) default 2 not null,
|
||||
pk_rate NUMBER(6),
|
||||
consume_box_num number(8) default 0 not null,
|
||||
new_box_num number(8) default 0 not null,
|
||||
team_box_num number(8) default 0 not null,
|
||||
consume_box_num number(8) default 0 not null,
|
||||
month_box_num number(8) default 0 not null,
|
||||
team_new_box_num number(8) default 0 not null,
|
||||
new_consume_pv number(17,6) default 0 not null,
|
||||
consume_pv number(17,6) default 0 not null,
|
||||
month_consume_pv number(17,6) default 0 not null,
|
||||
new_consume_pv number(17,6) default 0 not null,
|
||||
team_consume_amount number(17,6) default 0 not null,
|
||||
team_new_box_num number(8) default 0 not null,
|
||||
team_box_num number(8) default 0 not null,
|
||||
team_month_box_num number(8) default 0 not null,
|
||||
team_new_pv number(17,6) default 0 not null,
|
||||
team_consume_pv number(17,6) default 0 not null,
|
||||
team_month_amount number(17,6) default 0 not null,
|
||||
team_month_pv number(17,6) default 0 not null,
|
||||
team_new_amount number(17,6) default 0 not null,
|
||||
team_new_pv number(17,6) default 0 not null,
|
||||
team_consume_amount number(17,6) default 0 not null,
|
||||
team_month_amount number(17,6) default 0 not null,
|
||||
recommend_num number(8) default 0 not null,
|
||||
team_num number(8) default 0 not null,
|
||||
region_address number(8) default 0 not null,
|
||||
|
|
|
@ -422,7 +422,7 @@
|
|||
<update id="updateCuMemberMinGradeByList">
|
||||
merge into cu_member a
|
||||
using (
|
||||
select pk_member,min(pk_grade) pk_grade from(
|
||||
select pk_member, min(pk_grade) pk_grade from(
|
||||
<foreach item="item" index="index" collection="cuMemberGradeList" separator=" union ">
|
||||
select #{item.pkMember} pk_member,#{item.newLevel} pk_grade from dual
|
||||
</foreach>)
|
||||
|
@ -432,6 +432,7 @@
|
|||
when matched then
|
||||
update set a.pk_settle_grade = b.pk_grade,a.modified_time = sysdate
|
||||
</update>
|
||||
|
||||
<update id="updateCuMemberLevel">
|
||||
merge into cu_member a
|
||||
using (
|
||||
|
@ -454,6 +455,6 @@
|
|||
) b
|
||||
on (a.pk_id = b.pk_id)
|
||||
when matched then
|
||||
update set a.pk_settle_grade = b.pk_grade,a.modified_time = sysdate
|
||||
update set a.pk_settle_grade = b.pk_grade, a.modified_time = sysdate
|
||||
</update>
|
||||
</mapper>
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
using (
|
||||
select cw.*
|
||||
from cu_member_awards cw
|
||||
inner join(
|
||||
inner join (
|
||||
select ca.pk_member, min(ca.pk_id) pk_id
|
||||
from cu_member_awards ca
|
||||
inner join bd_awards bw
|
||||
|
@ -82,11 +82,8 @@
|
|||
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)
|
||||
) 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 a.pk_awards = b.old_level
|
||||
</update>
|
||||
|
|
|
@ -46,19 +46,19 @@
|
|||
using (
|
||||
select cs.pk_member, b.pk_grade
|
||||
from ${secondRangeTableName} cs
|
||||
inner join(
|
||||
inner join (
|
||||
select a.pk_member, max(a.new_level) pk_grade
|
||||
from cu_member_grade a
|
||||
inner join(
|
||||
inner join (
|
||||
select pk_member, max(nvl(modified_time, creation_time)) creation_time
|
||||
from cu_member_grade
|
||||
where period <= #{period}
|
||||
and del_flag = 0
|
||||
and up_type = 2
|
||||
group by pk_member) b
|
||||
on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time
|
||||
group by a.pk_member) b
|
||||
on cs.pk_member = b.pk_member
|
||||
group by pk_member
|
||||
) b on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time
|
||||
group by a.pk_member
|
||||
) b on cs.pk_member = b.pk_member
|
||||
where cs.pk_grade < b.pk_grade
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
|
@ -127,9 +127,10 @@
|
|||
</delete>
|
||||
|
||||
<select id="queryCuMemberGrade" resultMap="CuMemberGrade">
|
||||
select cg.* from cu_member_grade cg
|
||||
select cg.*
|
||||
from cu_member_grade cg
|
||||
inner join bd_grade bg
|
||||
on cg.new_level=bg.pk_id
|
||||
on cg.new_level = bg.pk_id
|
||||
where bg.del_flag = 0
|
||||
and cg.del_flag = 0
|
||||
and bg.grade_value >= 60
|
||||
|
@ -153,7 +154,7 @@
|
|||
|
||||
<select id="queryCuMemberGradeByList" resultType="com.hzs.common.domain.member.detail.CuMemberGrade">
|
||||
select a.* from cu_member_grade a
|
||||
inner join(
|
||||
inner join (
|
||||
select pk_member, max(nvl(modified_time,creation_time)) creation_time
|
||||
from cu_member_grade
|
||||
where period <= #{period}
|
||||
|
|
|
@ -241,4 +241,26 @@
|
|||
order by pay_time
|
||||
</select>
|
||||
|
||||
<select id="listSaOrderByTime" resultType="com.hzs.common.domain.sale.order.SaOrder">
|
||||
select pk_id,
|
||||
pk_member,
|
||||
order_code,
|
||||
order_type,
|
||||
pk_rate,
|
||||
order_amount,
|
||||
order_achieve,
|
||||
rec_province,
|
||||
rec_city,
|
||||
rec_county,
|
||||
pk_country
|
||||
from sa_order so
|
||||
where so.order_status = 1
|
||||
and so.order_type in
|
||||
<foreach collection="orderType" item="item" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
and so.pay_time >= #{startDate}
|
||||
and #{endDate} > so.pay_time
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -8,10 +8,8 @@ import java.time.*;
|
|||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 时间工具类
|
||||
|
@ -160,22 +158,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* 截取字符串,转换为月
|
||||
*
|
||||
* @param date 日
|
||||
* @Description: 截取字符串,转换为月
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 15:50
|
||||
*/
|
||||
public static String getMonth(String date) {
|
||||
return date.replace("-", "").substring(0, 6);
|
||||
}
|
||||
|
||||
/**
|
||||
* 截取字符串,转换为年
|
||||
*
|
||||
* @param date 日
|
||||
* @Description: 截取字符串,转换为年
|
||||
* @return: String
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 15:50
|
||||
*/
|
||||
public static String getYear(String date) {
|
||||
return date.substring(0, 4);
|
||||
|
@ -476,7 +470,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
/**
|
||||
* 根据条件获取数量后的日期,按照 天、周、月、年
|
||||
*
|
||||
* @param number 数量
|
||||
* @param number 数量
|
||||
* @return Date
|
||||
*/
|
||||
public static Date afterMonthDate(Integer number, Date... date) {
|
||||
|
@ -798,39 +792,6 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
return instance.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取两个时间内的每一天
|
||||
*
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
public static List findDaysStr(String startTime, String endTime) {
|
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat(DateUtils.YYYY_MM_DD);
|
||||
Date dBegin = null;
|
||||
Date dEnd = null;
|
||||
try {
|
||||
dBegin = sdf.parse(startTime);
|
||||
dEnd = sdf.parse(endTime);
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
List daysStrList = new ArrayList();
|
||||
daysStrList.add(sdf.format(dBegin));
|
||||
Calendar calBegin = Calendar.getInstance();
|
||||
calBegin.setTime(dBegin);
|
||||
Calendar calEnd = Calendar.getInstance();
|
||||
calEnd.setTime(dEnd);
|
||||
|
||||
while (dEnd.after(calBegin.getTime())) {
|
||||
calBegin.add(Calendar.DAY_OF_MONTH, 1);
|
||||
String dayStr = sdf.format(calBegin.getTime());
|
||||
daysStrList.add(dayStr);
|
||||
}
|
||||
return daysStrList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前日期前n天的日期
|
||||
*
|
||||
|
@ -841,16 +802,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DAY_OF_YEAR, -n);
|
||||
Date date = calendar.getTime();
|
||||
return date;
|
||||
return calendar.getTime();
|
||||
}
|
||||
|
||||
/*
|
||||
* @description: 获取最近的星期一
|
||||
* @author: sui q
|
||||
* @date: 2023/7/15 14:00
|
||||
* @param: null null
|
||||
**/
|
||||
/**
|
||||
* 获取最近的星期一
|
||||
*/
|
||||
public static String getRecentlyTuesday(String date) {
|
||||
Date settleDate = parseStringToDate(date);
|
||||
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();
|
||||
|
@ -864,23 +821,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @description: 获取某一天的是这一周的第几天
|
||||
* @author: sui q
|
||||
* @date: 2023/7/15 14:00
|
||||
* @param: null null
|
||||
**/
|
||||
/**
|
||||
* 获取某一天的是这一周的第几天
|
||||
*/
|
||||
public static Integer getRecentlyDay(Date settleDate) {
|
||||
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();
|
||||
return dayOfWeek.getValue();
|
||||
}
|
||||
|
||||
/*
|
||||
* @description: 获取最近的星期二
|
||||
* @author: sui q
|
||||
* @date: 2023/7/15 14:00
|
||||
* @param: null null
|
||||
**/
|
||||
/**
|
||||
* 获取最近的星期二
|
||||
*/
|
||||
public static String getRecentlyTuesday(Date settleDate) {
|
||||
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();
|
||||
if (dayOfWeek.getValue() == 1) {
|
||||
|
@ -892,12 +843,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @description: 获取最近的星期一
|
||||
* @author: sui q
|
||||
* @date: 2023/7/15 14:00
|
||||
* @param: null null
|
||||
**/
|
||||
/**
|
||||
* 获取最近的星期一
|
||||
*/
|
||||
public static String getRecentlyMonday(Date settleDate) {
|
||||
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();
|
||||
if (dayOfWeek.getValue() == 1) {
|
||||
|
@ -925,11 +873,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
}
|
||||
|
||||
/**
|
||||
* @description: 判断日期是否在7天内
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/28 9:25
|
||||
* @param: [addtime, now]
|
||||
* @return: boolean
|
||||
* 判断日期是否在7天内
|
||||
**/
|
||||
public static boolean isLatestWeek(Date addtime, Date now) {
|
||||
Calendar calendar = Calendar.getInstance(); //得到日历
|
||||
|
@ -939,9 +883,4 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||
return before7days.getTime() < addtime.getTime();
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(parseDateToFormat(DateUtils.YYYY_MM_DD, afterMonthDate(1,parseStringToDate("2023-09-25"))));
|
||||
System.out.println(parseDateToFormat(DateUtils.YYYY_MM_DD, afterMonthDate(6,parseStringToDate("2023-09-25"))));
|
||||
System.out.println(parseDateToFormat(DateUtils.YYYY_MM_DD, afterMonthDate(12,parseStringToDate("2023-09-25"))));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package com.hzs.common.domain.member.achieve;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.hzs.common.core.web.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
@ -108,16 +111,37 @@ public class CuMemberRetailRange extends BaseEntity {
|
|||
private Integer systemType;
|
||||
|
||||
/**
|
||||
* 累计消费盒数
|
||||
*/
|
||||
@TableField("CONSUME_BOX_NUM")
|
||||
private Integer consumeBoxNum;
|
||||
|
||||
/**
|
||||
* 新消费盒数
|
||||
* 本人当天新消费盒数
|
||||
*/
|
||||
@TableField("NEW_BOX_NUM")
|
||||
private Integer newBoxNum;
|
||||
/**
|
||||
* 本人累计消费盒数
|
||||
*/
|
||||
@TableField("CONSUME_BOX_NUM")
|
||||
private Integer consumeBoxNum;
|
||||
/**
|
||||
* 本人月累计盒数
|
||||
*/
|
||||
@TableField("MONTH_BOX_NUM")
|
||||
private Integer monthBoxNum;
|
||||
|
||||
/**
|
||||
* 本人当天新消费pv
|
||||
*/
|
||||
@TableField("NEW_CONSUME_PV")
|
||||
private BigDecimal newConsumePv;
|
||||
/**
|
||||
* 本人累计消费pv
|
||||
*/
|
||||
@TableField("CONSUME_PV")
|
||||
private BigDecimal consumePv;
|
||||
/**
|
||||
* 本人月累计消费pv
|
||||
*/
|
||||
@TableField("MONTH_CONSUME_PV")
|
||||
private BigDecimal monthConsumePv;
|
||||
|
||||
|
||||
// @TableField("own_box_num")
|
||||
// private Integer ownBoxNum;
|
||||
|
@ -128,41 +152,54 @@ public class CuMemberRetailRange extends BaseEntity {
|
|||
// @TableField("NEW_OWN_BOX_NUM")
|
||||
// private Integer newOwnBoxNum;
|
||||
|
||||
/**
|
||||
* 团队当天新增盒数
|
||||
*/
|
||||
@TableField("TEAM_NEW_BOX_NUM")
|
||||
private Integer teamNewBoxNum;
|
||||
/**
|
||||
* 团队累计盒数
|
||||
*/
|
||||
@TableField("TEAM_BOX_NUM")
|
||||
private Integer teamBoxNum;
|
||||
|
||||
/**
|
||||
* 团队月累计盒数
|
||||
*/
|
||||
@TableField("MONTH_BOX_NUM")
|
||||
private Integer monthBoxNum;
|
||||
@TableField("TEAM_MONTH_BOX_NUM")
|
||||
private Integer teamMonthBoxNum;
|
||||
|
||||
/**
|
||||
* 团队新增盒数
|
||||
* 团队当天新增消费pv
|
||||
*/
|
||||
@TableField("TEAM_NEW_BOX_NUM")
|
||||
private Integer teamNewBoxNum;
|
||||
@TableField("TEAM_NEW_PV")
|
||||
private BigDecimal teamNewPv;
|
||||
/**
|
||||
* 团队累计消费pv
|
||||
*/
|
||||
@TableField("TEAM_CONSUME_PV")
|
||||
private BigDecimal teamConsumePv;
|
||||
/**
|
||||
* 团队月累计消费pv
|
||||
*/
|
||||
@TableField("TEAM_MONTH_PV")
|
||||
private BigDecimal teamMonthPv;
|
||||
|
||||
/**
|
||||
* 累计消费pv
|
||||
* 团队新增消费金额
|
||||
*/
|
||||
@TableField("CONSUME_PV")
|
||||
private BigDecimal consumePv;
|
||||
|
||||
@TableField("TEAM_NEW_AMOUNT")
|
||||
private BigDecimal teamNewAmount;
|
||||
/**
|
||||
* 月累计消费pv
|
||||
* 团队累计消费金额
|
||||
*/
|
||||
@TableField("MONTH_CONSUME_PV")
|
||||
private BigDecimal monthConsumePv;
|
||||
|
||||
@TableField("TEAM_CONSUME_AMOUNT")
|
||||
private BigDecimal teamConsumeAmount;
|
||||
/**
|
||||
* 新消费pv
|
||||
* 团队月累计消费金额
|
||||
*/
|
||||
@TableField("NEW_CONSUME_PV")
|
||||
private BigDecimal newConsumePv;
|
||||
@TableField("TEAM_MONTH_AMOUNT")
|
||||
private BigDecimal teamMonthAmount;
|
||||
|
||||
|
||||
// /**
|
||||
// * 月累计消费pv
|
||||
|
@ -176,42 +213,6 @@ public class CuMemberRetailRange extends BaseEntity {
|
|||
// @TableField("NEW_OWN_CONSUME_PV")
|
||||
// private BigDecimal newOwnConsumePv;
|
||||
|
||||
/**
|
||||
* 团队累计消费金额
|
||||
*/
|
||||
@TableField("TEAM_CONSUME_AMOUNT")
|
||||
private BigDecimal teamConsumeAmount;
|
||||
|
||||
/**
|
||||
* 团队累计消费pv
|
||||
*/
|
||||
@TableField("TEAM_CONSUME_PV")
|
||||
private BigDecimal teamConsumePv;
|
||||
|
||||
/**
|
||||
* 团队月累计消费金额
|
||||
*/
|
||||
@TableField("TEAM_MONTH_AMOUNT")
|
||||
private BigDecimal teamMonthAmount;
|
||||
|
||||
/**
|
||||
* 团队月累计消费pv
|
||||
*/
|
||||
@TableField("TEAM_MONTH_PV")
|
||||
private BigDecimal teamMonthPv;
|
||||
|
||||
/**
|
||||
* 团队新增消费金额
|
||||
*/
|
||||
@TableField("TEAM_NEW_AMOUNT")
|
||||
private BigDecimal teamNewAmount;
|
||||
|
||||
/**
|
||||
* 团队新增消费pv
|
||||
*/
|
||||
@TableField("TEAM_NEW_PV")
|
||||
private BigDecimal teamNewPv;
|
||||
|
||||
/**
|
||||
* 推荐人数
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue