Merge remote-tracking branch 'origin/bd_dev' into bd_dev

This commit is contained in:
sangelxiu1 2025-07-25 11:10:38 +08:00
commit bdecc555f0
80 changed files with 621 additions and 1088 deletions

View File

@ -18,6 +18,7 @@ import com.hzs.member.base.dto.ZeroElementRevokeDTO;
import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -432,4 +433,6 @@ public interface IMemberServiceApi {
*/ */
R<Integer> countGradeMemberPoint(String memberName, String phone, Integer pkGrade, Integer pkCountry); R<Integer> countGradeMemberPoint(String memberName, String phone, Integer pkGrade, Integer pkCountry);
R<Map<String, Long>> memberRegionMap(Date settleDate);
} }

View File

@ -17,14 +17,6 @@ import java.util.List;
*/ */
public interface ISaOrderServiceApi { public interface ISaOrderServiceApi {
/**
* 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算
*
* @param startDate 开始日期
* @param endDate 结束日期
*/
R<List<SaOrderExt>> listSaOrderByDay(Date startDate, Date endDate, String orderCode);
/** /**
* 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算 * 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算
* *
@ -33,11 +25,6 @@ public interface ISaOrderServiceApi {
*/ */
R<List<SaOrderExt>> queryRepeatSaOrderByDay(Date startDate, Date endDate); R<List<SaOrderExt>> queryRepeatSaOrderByDay(Date startDate, Date endDate);
/*
* 查询订单编号
**/
R<SaOrderExt> querySaOrderByDay(Date startDate, Date endDate, String orderCode);
/** /**
* 根据订单编号查询订单 * 根据订单编号查询订单
* *

View File

@ -8,6 +8,7 @@ import com.hzs.system.sys.dto.BdCurrencyDTO;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -87,4 +88,9 @@ public class BonusConfigDTO implements Serializable {
*/ */
private Map<String, BdBonusService> bonusServiceMap; private Map<String, BdBonusService> bonusServiceMap;
/**
* 区域收益配置
*/
private Map<Integer, BigDecimal> regionAreaConfigMap;
} }

View File

@ -214,6 +214,16 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(@Param("settleTableName") String settleTableName, List<CuMemberSettleExt> batchQueryCuMemberSettleParent(@Param("settleTableName") String settleTableName,
@Param("pkMemberList") List<?> pkMemberList); @Param("pkMemberList") List<?> pkMemberList);
/**
* 批量查询会员数据
*
* @param settleTableName
* @param pkMemberList
* @return
*/
List<CuMemberSettleExt> batchQueryCuMemberSettle(@Param("settleTableName") String settleTableName,
@Param("pkMemberList") List<?> pkMemberList);
/** /**
* 更新会员网体奖衔数据更新月表结算表 * 更新会员网体奖衔数据更新月表结算表
* *

View File

@ -199,6 +199,15 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
*/ */
List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet); List<CuMemberSettleExt> batchQueryCuMemberSettleParent(String settleTableName, Set<Long> expandMemberSet);
/**
* 批量查询会员数据
*
* @param settleTableName
* @param memberIdSet
* @return
*/
List<CuMemberSettleExt> batchQueryCuMemberSettle(String settleTableName, Set<Long> memberIdSet);
/** /**
* 有奖衔的会员本月左右区新増上月最后一期左右区结余 * 有奖衔的会员本月左右区新増上月最后一期左右区结余
* *

View File

@ -330,6 +330,18 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
return cuMemberSettleExtList; return cuMemberSettleExtList;
} }
@Override
public List<CuMemberSettleExt> batchQueryCuMemberSettle(String settleTableName, Set<Long> memberIdSet) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();
if (memberIdSet.size() != 0) {
List<List<?>> lists = cuMemberBonusSettle.handleCutList(memberIdSet, MagicNumberConstants.BATCH_UPDATE_NUM);
lists.forEach(list ->
cuMemberSettleExtList.addAll(baseMapper.batchQueryCuMemberSettle(settleTableName, list)));
}
return cuMemberSettleExtList;
}
@Override @Override
public List<CuMemberSettleExt> listMemberMonthAssess(String settleTableName, String settleTableNameMonthLast, List<Long> pkMemberList) { public List<CuMemberSettleExt> listMemberMonthAssess(String settleTableName, String settleTableNameMonthLast, List<Long> pkMemberList) {
List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>(); List<CuMemberSettleExt> cuMemberSettleExtList = new ArrayList<>();

View File

@ -5,7 +5,6 @@ import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.bonus.param.BonusParam; import com.hzs.bonus.bonus.param.BonusParam;
import com.hzs.bonus.bonus.service.ICuMemberBonusService; import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.bonus.vo.*; import com.hzs.bonus.bonus.vo.*;
import com.hzs.common.core.enums.EGrantStatus;
import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
@ -32,41 +31,7 @@ import java.util.List;
public class ApiCuMemberBonusController extends BaseController { public class ApiCuMemberBonusController extends BaseController {
@Autowired @Autowired
private ICuMemberBonusService cuMemberBonusService; private ICuMemberBonusService iCuMemberBonusService;
// /**
// * 查询会员某个时间段内的奖金默认查询15天内,查询直推
// */
// @PostMapping("/query-bonus-first")
// public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam){
// setBonusParam(bonusParam);
// List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
// List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>();
// cuMemberBonusList.forEach(cuMemberBonus -> {
// MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate");
// packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO);
//// if(DateUtils.compareDate(cuMemberBonus.getSettleDate(), DateUtils.parseStringToDate("2024-09-09"))>0) {
// BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(),
// memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome(),
// memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurRangeIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome()),
// ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal()));
// memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend));
// memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
// memberBonusFirstPurchaseVO.setExpandIncome(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getExpandIncome(), memberBonusFirstPurchaseVO.getRepurExpandIncome(),
// memberBonusFirstPurchaseVO.getRepurRangeIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome()));
// memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal()));
//// }else{
//// BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(),
//// memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome(),
//// memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurExpandIncome()),
//// ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal()));
//// memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend));
//// memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
//// }
// firstPurchaseVOList.add(memberBonusFirstPurchaseVO);
// });
// return getDataTable(firstPurchaseVOList);
// }
/** /**
* 查询会员某个时间段内的奖金默认查询15天内,查询直推 * 查询会员某个时间段内的奖金默认查询15天内,查询直推
@ -74,35 +39,13 @@ public class ApiCuMemberBonusController extends BaseController {
@PostMapping("/query-bonus-first") @PostMapping("/query-bonus-first")
public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) { public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>(); List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate"); MemberBonusFirstPurchaseVO memberBonusFirstPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusFirstPurchaseVO.class, "settleDate");
packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO); packageSettleDate(cuMemberBonus, memberBonusFirstPurchaseVO);
// BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(),
// memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome()),
// memberBonusFirstPurchaseVO.getPurRealSubtotal());
// memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend));
// memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
// if(DateUtils.compareDate(cuMemberBonus.getSettleDate(), DateUtils.parseStringToDate("2024-09-09"))>0) {
// 新版逻辑首购+复购合并计算显示
// TODO new 乐学直推级差收益现在扣20%所以直接使用库中的就可以
// BigDecimal serviceSpend = ComputeUtil.computeSubtract(
// // 直推收益 + 拓展收益 + 辅导收益 + 分红收益 + 报单收益 + 复购拓展收益 + 复购级差收益 + 复购推荐收益 + 乐学直推收益
// ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(),
// memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getShareIncome(), memberBonusFirstPurchaseVO.getServiceIncome(),
// memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurRangeIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome(),
// memberBonusFirstPurchaseVO.getGlobalPoints()),
//
// ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal())
//
// );
// memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend));
// memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
memberBonusFirstPurchaseVO.setBackPoints(cuMemberBonus.getBackPoints()); memberBonusFirstPurchaseVO.setBackPoints(cuMemberBonus.getBackPoints());
memberBonusFirstPurchaseVO.setServiceSpend(cuMemberBonus.getServiceSpend()); memberBonusFirstPurchaseVO.setServiceSpend(cuMemberBonus.getServiceSpend());
// 拓展收益 = 首购拓展 + 复购拓展 + 复购推荐 // 拓展收益 = 首购拓展 + 复购拓展 + 复购推荐
memberBonusFirstPurchaseVO.setExpandIncome(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getExpandIncome(), memberBonusFirstPurchaseVO.setExpandIncome(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getExpandIncome(),
memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome())); memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurPushIncome()));
@ -111,18 +54,6 @@ public class ApiCuMemberBonusController extends BaseController {
memberBonusFirstPurchaseVO.getRepurCoachIncome())); memberBonusFirstPurchaseVO.getRepurCoachIncome()));
// 首购实发小计 = 首购实发小计 + 复购实发小计 // 首购实发小计 = 首购实发小计 + 复购实发小计
memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal())); memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal()));
// }else{
// BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusFirstPurchaseVO.getDirectIncome(), memberBonusFirstPurchaseVO.getExpandIncome(),
// memberBonusFirstPurchaseVO.getCoachIncome(), memberBonusFirstPurchaseVO.getServiceIncome(), memberBonusFirstPurchaseVO.getShareIncome(),
// memberBonusFirstPurchaseVO.getRepurExpandIncome(), memberBonusFirstPurchaseVO.getRepurExpandIncome()),
// ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getRepurRealSubtotal()));
// memberBonusFirstPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend));
// memberBonusFirstPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
// }
// TODO new 乐学直推结算时已经加到首购实发小计此处不需要再累加
// memberBonusFirstPurchaseVO.setPurRealSubtotal(ComputeUtil.computeAdd(memberBonusFirstPurchaseVO.getPurRealSubtotal(), memberBonusFirstPurchaseVO.getGlobalPoints()));
firstPurchaseVOList.add(memberBonusFirstPurchaseVO); firstPurchaseVOList.add(memberBonusFirstPurchaseVO);
}); });
return getDataTable(firstPurchaseVOList); return getDataTable(firstPurchaseVOList);
@ -139,7 +70,7 @@ public class ApiCuMemberBonusController extends BaseController {
// bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS)); // bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS));
bonusParam.setStartDate(DateUtils.currentMonthFirstDate(nowDate)); bonusParam.setStartDate(DateUtils.currentMonthFirstDate(nowDate));
bonusParam.setEndDate(nowDate); bonusParam.setEndDate(nowDate);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam);
MemberRealIncomeVO memberRealIncomeVO = MemberRealIncomeVO.builder() MemberRealIncomeVO memberRealIncomeVO = MemberRealIncomeVO.builder()
.realIncomeTotal(BigDecimal.ZERO) .realIncomeTotal(BigDecimal.ZERO)
.monthIncomeTotal(BigDecimal.ZERO) .monthIncomeTotal(BigDecimal.ZERO)
@ -164,7 +95,7 @@ public class ApiCuMemberBonusController extends BaseController {
@PostMapping("/query-bonus-repurchase") @PostMapping("/query-bonus-repurchase")
public TableDataInfo listRepurchaseBonus(@RequestBody BonusParam bonusParam) { public TableDataInfo listRepurchaseBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusPurchaseVO> memberBonusPurchaseVoList = new ArrayList<>(); List<MemberBonusPurchaseVO> memberBonusPurchaseVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusPurchaseVO memberBonusPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusPurchaseVO.class, "settleDate"); MemberBonusPurchaseVO memberBonusPurchaseVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusPurchaseVO.class, "settleDate");
@ -178,48 +109,6 @@ public class ApiCuMemberBonusController extends BaseController {
return getDataTable(memberBonusPurchaseVoList); return getDataTable(memberBonusPurchaseVoList);
} }
@PostMapping("/query-bonus-range")
public TableDataInfo listRangeBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusPurchaseVO> memberBonusPurchaseVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusPurchaseVO memberBonusPurchaseVO = MemberBonusPurchaseVO.builder()
.directIncome(cuMemberBonus.getRepurPushIncome())
.storeIncome(null != cuMemberBonus.getStoreIncome() ? cuMemberBonus.getStoreIncome() : BigDecimal.ZERO)
.repurPushIncome(cuMemberBonus.getCloudDirectIncome())
.repurRangeIncome(cuMemberBonus.getCloudPurIncome())
.repurExpandIncome(cuMemberBonus.getCloudRepurIncome())
.repurRealSubtotal(cuMemberBonus.getCloudRealSubtotal())
.build();
packageSettleDate(cuMemberBonus, memberBonusPurchaseVO);
BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(memberBonusPurchaseVO.getRepurPushIncome(), memberBonusPurchaseVO.getRepurExpandIncome(),
memberBonusPurchaseVO.getRepurRangeIncome(), memberBonusPurchaseVO.getDirectIncome(), memberBonusPurchaseVO.getStoreIncome()),
memberBonusPurchaseVO.getRepurRealSubtotal());
memberBonusPurchaseVO.setBackPoints(ComputeUtil.computeMultiplyHalf(serviceSpend));
memberBonusPurchaseVO.setServiceSpend(ComputeUtil.computeMultiplyHalf(serviceSpend));
memberBonusPurchaseVoList.add(memberBonusPurchaseVO);
});
return getDataTable(memberBonusPurchaseVoList);
}
/**
* 查询会员某个时间段内的奖金默认查询15天内,查询复购
*/
@PostMapping("/query-bonus-hi-fun")
public TableDataInfo listHiFunBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusHiFunVO> bonusHiFunVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusHiFunVO memberBonusHiFunVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusHiFunVO.class, "settleDate");
packageSettleDate(cuMemberBonus, memberBonusHiFunVO);
memberBonusHiFunVO.setHiFunRealSubtotal(cuMemberBonus.getHiFunIncome());
bonusHiFunVoList.add(memberBonusHiFunVO);
});
return getDataTable(bonusHiFunVoList);
}
private static void packageSettleDate(CuMemberBonusExt cuMemberBonus, PubMemberBonusVO pubMemberBonusVO) { private static void packageSettleDate(CuMemberBonusExt cuMemberBonus, PubMemberBonusVO pubMemberBonusVO) {
if (cuMemberBonus.getEndSettleDate() == null) { if (cuMemberBonus.getEndSettleDate() == null) {
pubMemberBonusVO.setSettleDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonus.getSettleDate())); pubMemberBonusVO.setSettleDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberBonus.getSettleDate()));
@ -236,7 +125,7 @@ public class ApiCuMemberBonusController extends BaseController {
@PostMapping("/query-bonus-cloud") @PostMapping("/query-bonus-cloud")
public TableDataInfo listCloudAgentBonus(@RequestBody BonusParam bonusParam) { public TableDataInfo listCloudAgentBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusCloudAgentVO> memberBonusCloudAgentVoArrayList = new ArrayList<>(); List<MemberBonusCloudAgentVO> memberBonusCloudAgentVoArrayList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
if (ComputeUtil.compareValue(cuMemberBonus.getCloudRepurIncome())) { if (ComputeUtil.compareValue(cuMemberBonus.getCloudRepurIncome())) {
@ -258,7 +147,7 @@ public class ApiCuMemberBonusController extends BaseController {
@PostMapping("/query-bonus-coupon") @PostMapping("/query-bonus-coupon")
public TableDataInfo listRepurchaseCouponBonus(@RequestBody BonusParam bonusParam) { public TableDataInfo listRepurchaseCouponBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusRepurchaseCouponVO> memberBonusRepurchaseCouponList = new ArrayList<>(); List<MemberBonusRepurchaseCouponVO> memberBonusRepurchaseCouponList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusRepurchaseCouponVO repurchaseCouponVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusRepurchaseCouponVO.class, "settleDate"); MemberBonusRepurchaseCouponVO repurchaseCouponVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusRepurchaseCouponVO.class, "settleDate");
@ -271,26 +160,6 @@ public class ApiCuMemberBonusController extends BaseController {
return getDataTable(memberBonusRepurchaseCouponList); return getDataTable(memberBonusRepurchaseCouponList);
} }
/**
* 查询会员某个时间段内的奖金默认查询15天内,查询复购
*/
@PostMapping("/query-bonus-hai-fun")
public TableDataInfo listHaiFunBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryMemberBonusVoByCondition(bonusParam);
List<MemberBonusHaiFunVO> bonusHaiFunVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusHaiFunVO memberBonusHaiFunVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusHaiFunVO.class, "settleDate");
packageSettleDate(cuMemberBonus, memberBonusHaiFunVO);
memberBonusHaiFunVO.setServiceSpend(BigDecimal.ZERO);
memberBonusHaiFunVO.setHaiFunRealSubtotal(cuMemberBonus.getHaiFunIncome());
bonusHaiFunVoList.add(memberBonusHaiFunVO);
});
return getDataTable(bonusHaiFunVoList);
}
private void setBonusParam(@RequestBody BonusParam bonusParam) { private void setBonusParam(@RequestBody BonusParam bonusParam) {
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId()); bonusParam.setPkMember(SecurityUtils.getUserId());
@ -314,36 +183,8 @@ public class ApiCuMemberBonusController extends BaseController {
public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) { public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam); setBonusParam(bonusParam);
startPage(); startPage();
// List<MemberBonusVO> memberBonusVoList = new ArrayList<>(); TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
TableDataInfo tableDataInfo = cuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
// cuMemberBonusList.forEach(cuMemberBonus -> {
// MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class);
// memberBonusVoList.add(memberBonusVO);
// });
// TableDataInfo dataTable = getDataTable(cuMemberBonusList);
// dataTable.setRows(memberBonusVoList);
return tableDataInfo; return tableDataInfo;
} }
/**
* 查询会员某个时间段内的奖金来源
*/
@PostMapping("/query-mark-bonus-detail")
public TableDataInfo listMarkBonusSource(@RequestBody BonusParam bonusParam) {
if (bonusParam.getStartDate() == null || bonusParam.getBonusValue() == null) {
return getDataTable(null);
}
bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, bonusParam.getStartDate()));
bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId());
// List<MemberBonusVO> memberBonusVoList = new ArrayList<>();
List<MemberBonusDetailVO> memberBonusDetailVOList = cuMemberBonusService.queryMemberMarkBonusDetailSource(bonusParam);
// cuMemberBonusList.forEach(cuMemberBonus -> {
// MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class);
// memberBonusVoList.add(memberBonusVO);
// });
// TableDataInfo dataTable = getDataTable(cuMemberBonusList);
// dataTable.setRows(memberBonusVoList);
return getDataTable(memberBonusDetailVOList);
}
} }

View File

@ -73,11 +73,6 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
*/ */
TableDataInfo queryMemberBonusDetailVoByCondition(BonusParam bonusParam); TableDataInfo queryMemberBonusDetailVoByCondition(BonusParam bonusParam);
/*
* 查询创客空间奖金来源
**/
List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam);
/** /**
* 后台根据查询条件查询会员奖金明细 * 后台根据查询条件查询会员奖金明细
* *

View File

@ -50,8 +50,6 @@ public abstract class BonusSettleHandle {
@Autowired @Autowired
protected ICuMemberAssessService iCuMemberAssessService; protected ICuMemberAssessService iCuMemberAssessService;
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference @DubboReference
ICurrencyServiceApi iCurrencyServiceApi; ICurrencyServiceApi iCurrencyServiceApi;
@ -672,41 +670,24 @@ public abstract class BonusSettleHandle {
} }
/** /**
* 获得 级差收益的备注 * 获得 区域收益备注
* *
* @param saOrderExt 订单编号 * @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费 * @param cuMemberBonusRange
* @param sourceMemberRangeExt 提供奖金的人 * @param sourceCuMemberSettleExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人 * @param targetCuMemberSettleExt 获得奖金的人
*/ */
protected void oriRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRangeExt sourceMemberRangeExt, protected void areaRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberRangeExt targetMemberRangeExt) { CuMemberSettleExt targetCuMemberSettleExt, EAreaType eAreaType) {
String remark = String.format(BonusMsgConstants.ORI_RANGE, saOrderExt.getOrderCode(), String remark = String.format(BonusMsgConstants.REPURCHASE_AREA, saOrderExt.getOrderCode(),
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(), sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(), targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), targetMemberRangeExt.getRangeAwardsValue()); cuMemberBonusRange.getCalAchieve(), null != eAreaType ? eAreaType.getLabel() : "");
cuMemberBonusRange.setRemark(remark); cuMemberBonusRange.setRemark(remark);
} }
/** /**
* 获得 报单服务费收益的备注 * 获得 复购券备注
*
* @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
*/
protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, String msg) {
String remark = String.format(msg, saOrder.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
cuMemberBonusDetail.setRemark(remark);
}
/**
* 获得 报单服务费收益的备注
* *
* @param saOrder 订单编号 * @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购 * @param cuMemberBonusDetail 云代首购
@ -1103,16 +1084,6 @@ public abstract class BonusSettleHandle {
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome)); cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
} }
/**
* 云代计算 扣项小计总计
*/
protected void setCloudTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
BigDecimal realIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.REAL_INCOME);
cuMemberBonus.setCloudRealSubtotal(ComputeUtil.computeAdd(cuMemberBonus.getCloudRealSubtotal(), realIncome));
cuMemberBonus.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonus.getRealIncomeTotal(), realIncome));
}
/** /**
* 复购券 扣项小计总计 * 复购券 扣项小计总计
*/ */
@ -1125,9 +1096,10 @@ public abstract class BonusSettleHandle {
/** /**
* 设置奖金扣项计算税前收益扣税实际收益, 设置明细表 * 设置奖金扣项计算税前收益扣税实际收益, 设置明细表
* *
* @param cuMemberDetail 奖金明细 * @param cuMemberDetail 奖金明细
* @param orderAmount 订单金额 * @param orderAmount 订单金额
* @param exchangeRate 入汇率 * @param exchangeRate 入汇率
* @param incomeRatioFlag 是否计算收益占比true=计算,flase=不计算
*/ */
protected BdBonusDeduct setBonusDetailDeduct(BonusConfigDTO bonusConfigDTO, Object cuMemberDetail, BigDecimal orderAmount, BigDecimal exchangeRate, protected BdBonusDeduct setBonusDetailDeduct(BonusConfigDTO bonusConfigDTO, Object cuMemberDetail, BigDecimal orderAmount, BigDecimal exchangeRate,
Boolean incomeRatioFlag) { Boolean incomeRatioFlag) {
@ -1272,4 +1244,12 @@ public abstract class BonusSettleHandle {
return bdBonusDeduct; return bdBonusDeduct;
} }
/**
* 根据会员ID获取会员map
*/
protected void getMemberByIdSet(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Set<Long> memberIdSet) {
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.batchQueryCuMemberSettle(settleTableName, memberIdSet);
this.getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
}
} }

View File

@ -28,6 +28,7 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 计算复购的奖金处理类 * 计算复购的奖金处理类
@ -613,15 +614,17 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
} }
private CuMemberBonusRange getCuMemberBonusRange(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, CuMemberSettleExt cuMemberSettleExt, CuMemberBonus cuMemberBonus) { private CuMemberBonusRange getCuMemberRange(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, CuMemberSettleExt cuMemberSettleExt, CuMemberBonus cuMemberBonus,
EBonusItems eBonusItems) {
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder() CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
.pkOrder(saOrderExt.getPkId()) .pkOrder(saOrderExt.getPkId())
.pkOrderItems(0L)
.pkBonus(cuMemberBonus.getPkId()) .pkBonus(cuMemberBonus.getPkId())
.pkBonusItems(getPkBonusItems(bonusConfigDTO, cuMemberSettleExt.getPkSettleCountry(), EBonusItems.REPURCHASE_RANGE_INCOME.getValue())) .pkBonusItems(getPkBonusItems(bonusConfigDTO, cuMemberSettleExt.getPkSettleCountry(), eBonusItems.getValue()))
// 正常还是烧伤 // 正常还是烧伤
.incomeStatus(cuMemberSettleExt.getIncomeStatus()) .incomeStatus(cuMemberSettleExt.getIncomeStatus())
.calType(ECalType.VALUE.getValue()) .calType(ECalType.RATIO.getValue())
.calAchieve(saOrderExt.getOrderAmount()) .calAchieve(saOrderExt.getOrderAchieve())
.calValue(BigDecimal.ZERO) .calValue(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO) .incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO) .incomeDialRatio(BigDecimal.ZERO)
@ -725,7 +728,6 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
}); });
} }
/** /**
* 计算见点收益 * 计算见点收益
*/ */
@ -794,10 +796,12 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
// 奖金扣项 // 奖金扣项
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach,
saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate(), true); saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate(), true);
// 累计奖金数据 if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
cuMemberBonus.setGlobalPoints(cuMemberBonus.getGlobalPoints().add(cuMemberBonusCoach.getPretaxIncome())); // 累计奖金数据
// 复购小计总计 cuMemberBonus.setGlobalPoints(cuMemberBonus.getGlobalPoints().add(cuMemberBonusCoach.getPretaxIncome()));
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach); // 复购小计总计
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
}
orderBonusCoachList.add(cuMemberBonusCoach); orderBonusCoachList.add(cuMemberBonusCoach);
@ -813,17 +817,7 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
} }
/** /**
* 补全见点奖备注 * 生成见点收益备注
*/
private void handlePointRemark(List<CuMemberBonusCoach> memberBonusCoachList, int i) {
for (CuMemberBonusCoach cuMemberBonusCoach : memberBonusCoachList) {
cuMemberBonusCoach.setCoachGeneration(i);
cuMemberBonusCoach.setRemark(cuMemberBonusCoach.getRemark().replace("#", cuMemberBonusCoach.getCoachGeneration().toString()));
}
}
/**
* 生成见点收益
*/ */
private CuMemberBonusCoach getCuMemberPointBonus(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, CuMemberSettleExt cuMemberSettleExt, CuMemberBonus cuMemberBonus) { private CuMemberBonusCoach getCuMemberPointBonus(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt, CuMemberSettleExt cuMemberSettleExt, CuMemberBonus cuMemberBonus) {
CuMemberBonusCoach cuMemberBonusCoach = CuMemberBonusCoach.builder() CuMemberBonusCoach cuMemberBonusCoach = CuMemberBonusCoach.builder()
@ -848,4 +842,129 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
return cuMemberBonusCoach; return cuMemberBonusCoach;
} }
/**
* 补全见点收益备注
*/
private void handlePointRemark(List<CuMemberBonusCoach> memberBonusCoachList, int i) {
for (CuMemberBonusCoach cuMemberBonusCoach : memberBonusCoachList) {
cuMemberBonusCoach.setCoachGeneration(i);
cuMemberBonusCoach.setRemark(cuMemberBonusCoach.getRemark().replace("#", cuMemberBonusCoach.getCoachGeneration().toString()));
}
}
/**
* 计算区域收益
*/
List<CuMemberBonusRange> calculateRepurchaseAreaBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, Integer period,
BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Map<Long, CuMemberBonus> cuMemberBonusMap,
Map<String, Long> memberRegionMap) {
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
if (purchaseOrderList.size() > 0) {
// 获取区域会员数据
Set<Long> memberIdSet = new HashSet<>(memberRegionMap.values());
memberIdSet.addAll(purchaseOrderList.stream().map(SaOrderExt::getPkMember).collect(Collectors.toSet()));
this.getMemberByIdSet(cuMemberSettleExtMap, settleTableName, memberIdSet);
// 区域配置=15%=10%=5%
Map<Integer, BigDecimal> regionAreaConfigMap = bonusConfigDTO.getRegionAreaConfigMap();
for (SaOrderExt saOrderExt : purchaseOrderList) {
if (validatePkBonusItems(bonusConfigDTO, saOrderExt.getPkSettleCountry(), EBonusItems.REPURCHASE_AREA_INCOME.getValue())) {
// 校验当前国家是否有该奖项区域收益
continue;
}
// 订单会员
CuMemberSettleExt sourceMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
Integer recProvince = saOrderExt.getRecProvince();
Integer recCity = saOrderExt.getRecCity();
Integer recCounty = saOrderExt.getRecCounty();
// 前面拿的奖金比例
BigDecimal beforeBonusCal = BigDecimal.ZERO;
//
String countyKey = recProvince + "-" + recCity + "-" + recCounty;
if (memberRegionMap.containsKey(countyKey)) {
// 奖金目标会员
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(memberRegionMap.get(countyKey));
if (null != targetMemberSettleExt) {
// 处理区域收益
BigDecimal tmpCal = this.handleAreaBonus(saOrderExt, sourceMemberSettleExt, targetMemberSettleExt, period, bonusConfigDTO, regionAreaConfigMap,
cuMemberBonusMap, cuMemberBonusRangeList, EAreaType.COUNTY, beforeBonusCal);
if (null != tmpCal) {
beforeBonusCal = tmpCal;
}
}
}
//
String cityKey = recProvince + "-" + recCity + "-0";
if (memberRegionMap.containsKey(cityKey)) {
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(memberRegionMap.get(cityKey));
if (null != targetMemberSettleExt) {
// 处理区域收益
BigDecimal tmpCal = this.handleAreaBonus(saOrderExt, sourceMemberSettleExt, targetMemberSettleExt, period, bonusConfigDTO, regionAreaConfigMap,
cuMemberBonusMap, cuMemberBonusRangeList, EAreaType.CITY, beforeBonusCal);
if (null != tmpCal) {
beforeBonusCal = tmpCal;
}
}
}
//
String provinceKey = recProvince + "-0-0";
if (memberRegionMap.containsKey(provinceKey)) {
CuMemberSettleExt targetMemberSettleExt = cuMemberSettleExtMap.get(memberRegionMap.get(provinceKey));
if (null != targetMemberSettleExt) {
// 处理区域收益
this.handleAreaBonus(saOrderExt, sourceMemberSettleExt, targetMemberSettleExt, period, bonusConfigDTO, regionAreaConfigMap,
cuMemberBonusMap, cuMemberBonusRangeList, EAreaType.CITY, beforeBonusCal);
}
}
}
}
return cuMemberBonusRangeList;
}
/**
* 处理区域收益
*/
private BigDecimal handleAreaBonus(SaOrderExt saOrderExt, CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt,
Integer period, BonusConfigDTO bonusConfigDTO, Map<Integer, BigDecimal> regionAreaConfigMap,
Map<Long, CuMemberBonus> cuMemberBonusMap, List<CuMemberBonusRange> cuMemberBonusRangeList, EAreaType eAreaType,
BigDecimal beforeBonusCal) {
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
|| EAccountStatus.STOP_INCOME.getValue() == targetMemberSettleExt.getAccountStatus()
|| EGrade.HAI_FAN.getValue() == targetMemberSettleExt.getGradeValue()) {
// 死点 停算 顾客 没有奖金跳过
return null;
} else {
// 区域比例当前等级比例 - 前一级奖金比例
BigDecimal calValue = regionAreaConfigMap.get(eAreaType.getValue()).subtract(beforeBonusCal);
// 税前收益
BigDecimal pretaxIncome = saOrderExt.getOrderAchieve().multiply(calValue);
// 会员奖金数据
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
// 级差奖金数据区域收益
CuMemberBonusRange cmMemberAreaBonusRange = this.getCuMemberRange(bonusConfigDTO, saOrderExt, targetMemberSettleExt, cuMemberBonus, EBonusItems.REPURCHASE_AREA_INCOME);
cmMemberAreaBonusRange.setCalValue(calValue);
cmMemberAreaBonusRange.setPretaxIncome(pretaxIncome);
cmMemberAreaBonusRange.setPkRange(eAreaType.getValue());
cmMemberAreaBonusRange.setPkBeforeRange(0);
// 备注
areaRangeRemark(saOrderExt, cmMemberAreaBonusRange, sourceMemberSettleExt, targetMemberSettleExt, eAreaType);
// 奖金扣项
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cmMemberAreaBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate(), true);
if (EBonusIncomeStatus.NORMAL.getValue() == cmMemberAreaBonusRange.getIncomeStatus()) {
// 收益状态正常扣除
cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurRangeIncome(), cmMemberAreaBonusRange.getPretaxIncome()));
setPurchaseTotal(bdBonusDeduct, cuMemberBonus, cmMemberAreaBonusRange);
}
cuMemberBonusRangeList.add(cmMemberAreaBonusRange);
return calValue;
}
}
} }

View File

@ -20,12 +20,7 @@ import org.springframework.stereotype.Component;
import java.util.*; import java.util.*;
/** /**
* @description: 用于计算复购券收益复购券均分收益 * 用于计算复购券收益复购券均分收益
* @author: sui q
* @time: 2023/4/28 16:12
* @classname: BonusSettleRepCouponsHandle
* @package_name: com.hzs.member.bonus.service.impl
* version 1.0.0
*/ */
@Component @Component
public class BonusSettleRepCouponsHandle extends BonusSettleHandle { public class BonusSettleRepCouponsHandle extends BonusSettleHandle {
@ -34,10 +29,7 @@ public class BonusSettleRepCouponsHandle extends BonusSettleHandle {
private IActivityServiceApi activityServiceApi; private IActivityServiceApi activityServiceApi;
/* /*
* @description: 计算复购券收益 * 计算复购券收益
* @author: sui q
* @date: 2023/4/28 16:11
* @param: null null
**/ **/
List<CuMemberBonusDetail> calculateRepurchaseCoupons(Date settleDate, List<SaOrderExt> firPurchaseOrderList, Integer period, BonusConfigDTO bonusConfigDTO, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) { List<CuMemberBonusDetail> calculateRepurchaseCoupons(Date settleDate, List<SaOrderExt> firPurchaseOrderList, Integer period, BonusConfigDTO bonusConfigDTO, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
// 查询复购券发放规则 // 查询复购券发放规则

View File

@ -16,6 +16,7 @@ import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO; import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
import com.hzs.bonus.detail.service.ICuMemberAssessService; import com.hzs.bonus.detail.service.ICuMemberAssessService;
import com.hzs.bonus.detail.service.ICuMemberAwardsService; import com.hzs.bonus.detail.service.ICuMemberAwardsService;
import com.hzs.bonus.order.service.IBonusOrderService;
import com.hzs.bonus.risk.service.ICuMemberRiskControlService; import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService; import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.config.BdConfig;
@ -42,7 +43,6 @@ import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.system.config.BdAwards; import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade; import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.member.base.IMemberServiceApi; import com.hzs.member.base.IMemberServiceApi;
import com.hzs.sale.order.ISaOrderServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi; import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.config.IAwardsServiceApi; import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IBonusItemsServiceApi; import com.hzs.system.config.IBonusItemsServiceApi;
@ -80,8 +80,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
IBonusItemsServiceApi iBonusItemsServiceApi; IBonusItemsServiceApi iBonusItemsServiceApi;
@DubboReference @DubboReference
IMemberServiceApi iMemberServiceApi; IMemberServiceApi iMemberServiceApi;
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@Autowired @Autowired
private ICuMemberTreeService iCuMemberTreeService; private ICuMemberTreeService iCuMemberTreeService;
@ -133,6 +131,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
private BonusSettleMallHandle bonusSettleMallHandle; private BonusSettleMallHandle bonusSettleMallHandle;
@Autowired @Autowired
private ICuMemberAssessService iCuMemberAssessService; private ICuMemberAssessService iCuMemberAssessService;
@Autowired
private IBonusOrderService iBonusOrderService;
// 新拓展处理时间 // 新拓展处理时间
private final String newExpandDate = "2025-06-01"; private final String newExpandDate = "2025-06-01";
@ -142,8 +142,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
public void calculateCumberBonusBySecond(String orderCode) { public void calculateCumberBonusBySecond(String orderCode) {
log.info("开始执行秒接,订单编号:{}", orderCode); log.info("开始执行秒接,订单编号:{}", orderCode);
Date startDate = DateUtils.currentDate(); Date startDate = DateUtils.currentDate();
SaOrderExt saOrderExt = iSaOrderServiceApi.querySaOrderByDay(startDate, DateUtils.afterDate(1, ChronoUnit.DAYS, startDate), orderCode).getData(); SaOrderExt saOrderExt = iBonusOrderService.querySaOrderByDay(startDate, DateUtils.afterDate(1, ChronoUnit.DAYS, startDate), orderCode);
log.info("查询订单,订单参数:{}", JSONUtil.toJsonStr(saOrderExt)); if (null == saOrderExt) {
log.info("查询订单为空");
return;
}
log.info("订单参数:{}", JSONUtil.toJsonStr(saOrderExt));
// 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据 // 处理奖金结算秒结表判断是否存在当天结算的秒接表从cu_member中获取网体从昨日结算表中获取累计结余数据
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime()); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
@ -398,7 +402,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@Override @Override
public void calculateCuMemberBonus(String settleDate, List<SaOrderExt> saOrderExtList) { public void calculateCuMemberBonus(String settleDate, List<SaOrderExt> saOrderExtList) {
try { try {
// 今天期间 // 今天期间settleDate - 年月日
Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId(); Integer period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
// 会员结算日表cu_member_settle + 期间 // 会员结算日表cu_member_settle + 期间
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + period; String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
@ -454,7 +458,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 首购订单 注册+升级 直推奖量奖领导奖注册报单服务费 // 首购订单 注册+升级 直推奖量奖领导奖注册报单服务费
// 复购订单 (复购量奖复购级差) // 复购订单 (复购量奖复购级差)
// 其他订单 只累计业绩 仅算奖衔 // 其他订单 只累计业绩 仅算奖衔
// 云代奖金 1% 待考虑
// 首购订单 // 首购订单
List<SaOrderExt> firPurchaseOrderList = new ArrayList<>(); List<SaOrderExt> firPurchaseOrderList = new ArrayList<>();
// 复购订单 // 复购订单
@ -479,9 +482,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}); });
// 将删除的订单的点位变为死点 // 将删除的订单的点位变为死点
iCuMemberTreeService.updateCuMemberTreeByCancelOrder(revokeRegSaOrderList, revokeUpdSaOrderList, settleDate, currentSettleTableName); iCuMemberTreeService.updateCuMemberTreeByCancelOrder(revokeRegSaOrderList, revokeUpdSaOrderList, settleDate, currentSettleTableName);
//********************************* 更新当天最新的业绩*************************/
// 获取所有国家的奖金项 key = 国家 + 奖金项的值 // 获取所有国家的奖金项 key = 国家 + 奖金项的值
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData(); BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
// 获取所有区域配置key:--value:会员ID
Map<String, Long> memberRegionMap = iMemberServiceApi.memberRegionMap(DateUtils.getEndTime(DateUtils.parseStringToDate(settleDate))).getData();
//*********************************计算奖衔 更新奖衔*********************************/ //*********************************计算奖衔 更新奖衔*********************************/
// 开始计算奖衔 计算奖衔 更新奖衔根据最新业绩查询变动且业绩满足下一等级根据等级判断是否满足考核安置考核或血缘考核 // 开始计算奖衔 计算奖衔 更新奖衔根据最新业绩查询变动且业绩满足下一等级根据等级判断是否满足考核安置考核或血缘考核
@ -515,7 +520,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 计算奖金主入口 // 计算奖金主入口
calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName, calculateBonusBySaOrderList(settleDate, period, yesterdayPeriod, currentSettleTableName,
firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap, firPurchaseOrderList, repurchaseOrderList, mallOrderList, awardsMap, gradeMap, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag); recordDetailVO, cuMemberSettleExtMap, expandOrderList, newExpandFlag, memberRegionMap);
// 计算复购券 // 计算复购券
calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap, calculateRepurchaseCoupons(DateUtils.parseDate(settleDate), firPurchaseOrderList, period, bonusConfigDTO, cuMemberBonusMap,
recordDetailVO, cuMemberSettleExtMap); recordDetailVO, cuMemberSettleExtMap);
@ -780,7 +785,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList, List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList, List<SaOrderExt> mallOrderList,
Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO, Map<String, BdAwards> awardsMap, Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO,
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag) { Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<SaOrderExt> expandOrderList, boolean newExpandFlag,
Map<String, Long> memberRegionMap) {
Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap(); Map<Long, CuAwardsControl> cuAwardsControlMap = getCuAwardsControlMap();
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period); Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData(); Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
@ -805,7 +811,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
if (CollectionUtil.isNotEmpty(repurchaseOrderList)) { if (CollectionUtil.isNotEmpty(repurchaseOrderList)) {
calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO, calculatePurchaseOrder(riskControlMap, cuMemberSettleExtMap, settleTableName, settleDate, systemConfigMap, bonusConfigDTO,
repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap, repurchaseOrderList, period, weekMemberBonusMap, cuMemberBonusMap, bonusRecordDetailVO, awardsMap, awardsList, cuAwardsControlMap, cuBonusExpandExtMap, rangeDtoMap,
newExpandFlag, gradeMap); newExpandFlag, gradeMap, memberRegionMap);
} }
// 计算首购 // 计算首购
if (CollectionUtil.isNotEmpty(firPurchaseOrderList)) { if (CollectionUtil.isNotEmpty(firPurchaseOrderList)) {
@ -1146,7 +1152,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period, Map<String, String> systemConfigMap, BonusConfigDTO bonusConfigDTO, List<SaOrderExt> purchaseOrderList, Integer period,
Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO, Map<Long, CuMemberBonus> weekMemberBonusMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO,
Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap, Map<String, BdAwards> awardsMap, List<BdAwards> awardsList, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuBonusExpandExt> cuBonusExpandExtMap,
Map<String, RangeDTO> rangeDtoMap, boolean newExpandFlag, Map<Integer, BdGrade> gradeMap) { Map<String, RangeDTO> rangeDtoMap, boolean newExpandFlag, Map<Integer, BdGrade> gradeMap, Map<String, Long> memberRegionMap) {
//****************************复购直推***************************** //****************************复购直推*****************************
// 查找10代血缘验证复购考核考核通过的给与奖金 紧缩 // 查找10代血缘验证复购考核考核通过的给与奖金 紧缩
// List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap); // List<CuMemberBonusPush> cuMemberBonusPushList = bonusSettlePurchaseHandle.calculateRepurchasePushBonus(cuMemberSettleExtMap, settleTableName, settleDate, bonusConfigDTO, purchaseOrderList, period, cuMemberBonusMap);
@ -1194,7 +1200,13 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
} }
//****************************区域收益*****************************/ //****************************区域收益*****************************/
// TODO List<CuMemberBonusRange> cuMemberAreaBonusRangeList = bonusSettlePurchaseHandle.calculateRepurchaseAreaBonus(cuMemberSettleExtMap, settleTableName, period,
bonusConfigDTO, purchaseOrderList, cuMemberBonusMap, memberRegionMap);
if (CollectionUtil.isNotEmpty(bonusRecordDetailVO.getCuMemberBonusRangeList())) {
bonusRecordDetailVO.getCuMemberBonusRangeList().addAll(cuMemberAreaBonusRangeList);
} else {
bonusRecordDetailVO.setCuMemberBonusRangeList(cuMemberAreaBonusRangeList);
}
Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size())); Map<Long, MemberBonusDetailCalVO> memberBonusDetailCalVoMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
if (null != cuMemberBonusExpandList) { if (null != cuMemberBonusExpandList) {
@ -1220,6 +1232,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberPointBonus); MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberPointBonus);
memberBonusDetailCalVO.setGlobalPoints(ComputeUtil.computeAdd(memberBonusDetailCalVO.getGlobalPoints(), cuMemberPointBonus.getRealIncome())); memberBonusDetailCalVO.setGlobalPoints(ComputeUtil.computeAdd(memberBonusDetailCalVO.getGlobalPoints(), cuMemberPointBonus.getRealIncome()));
}); });
// 区域收益
cuMemberAreaBonusRangeList.forEach(cuMemberBonusRange -> {
MemberBonusDetailCalVO memberBonusDetailCalVO = calculateOrderRatio(memberBonusDetailCalVoMap, cuMemberBonusRange);
memberBonusDetailCalVO.setStoreIncome(ComputeUtil.computeAdd(memberBonusDetailCalVO.getStoreIncome(), cuMemberBonusRange.getRealIncome()));
});
// Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size())); // Map<Long, SaOrderExt> saOrderExtMap = new HashMap<>(ComputeUtil.mapInitCapacity(purchaseOrderList.size()));
// purchaseOrderList.forEach(saOrderExt -> // purchaseOrderList.forEach(saOrderExt ->
@ -1307,9 +1324,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
.repExpandIncome(BigDecimal.ZERO) .repExpandIncome(BigDecimal.ZERO)
.repCoachIncome(BigDecimal.ZERO) .repCoachIncome(BigDecimal.ZERO)
.repRangeIncome(BigDecimal.ZERO) .repRangeIncome(BigDecimal.ZERO)
.hiFunIncome(BigDecimal.ZERO)
.haiFunIncome(BigDecimal.ZERO)
.globalPoints(BigDecimal.ZERO) .globalPoints(BigDecimal.ZERO)
.storeIncome(BigDecimal.ZERO)
.build(); .build();
memberBonusDetailVoMap.put(pkOrder, memberBonusDetailCalVO); memberBonusDetailVoMap.put(pkOrder, memberBonusDetailCalVO);
} }

View File

@ -13,6 +13,7 @@ import com.hzs.bonus.bonus.service.IBonusSettleService;
import com.hzs.bonus.bonus.service.ICuMemberBonusService; import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO; import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailVO; import com.hzs.bonus.bonus.vo.MemberBonusDetailVO;
import com.hzs.bonus.order.service.IBonusOrderService;
import com.hzs.common.core.constant.HttpStatus; import com.hzs.common.core.constant.HttpStatus;
import com.hzs.common.core.constant.MemberBonusFieldConstants; import com.hzs.common.core.constant.MemberBonusFieldConstants;
import com.hzs.common.core.constant.MemberFieldConstants; import com.hzs.common.core.constant.MemberFieldConstants;
@ -29,7 +30,6 @@ import com.hzs.common.domain.member.ext.*;
import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.system.config.BdBonusItems; import com.hzs.common.domain.system.config.BdBonusItems;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; 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.ICurrencyServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi; import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.base.dto.CurrencyDTO;
@ -54,8 +54,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@DubboReference @DubboReference
ISystemConfigServiceApi iSystemConfigServiceApi; ISystemConfigServiceApi iSystemConfigServiceApi;
@DubboReference @DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
ICurrencyServiceApi iCurrencyServiceApi; ICurrencyServiceApi iCurrencyServiceApi;
@DubboReference @DubboReference
IBonusItemsServiceApi iBonusItemsServiceApi; IBonusItemsServiceApi iBonusItemsServiceApi;
@ -76,6 +74,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper; private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
@Autowired @Autowired
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper; private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
@Autowired
private IBonusOrderService iBonusOrderService;
@Override @Override
public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) { public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) {
@ -417,25 +417,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
return dataTable; return dataTable;
} }
@Override
public List<MemberBonusDetailVO> queryMemberMarkBonusDetailSource(BonusParam bonusParam) {
List<MemberBonusDetailVO> memberBonusDetailVOList = new ArrayList<>();
BdBonusItems bonusItems = iBonusItemsServiceApi.queryBonusItemsByBonusValue(bonusParam.getPkCountry(), bonusParam.getBonusValue()).getData();
bonusParam.setPkBonusItems(bonusItems.getPkId());
// 其他收益 服务补贴分红收益
// 拓展收益复购拓展收益
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItems(bonusParam);
CurrencyDTO currency = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusDetail, MemberBonusDetailVO.class);
String sourceMemberCode = memberBonusDetailVO.getSourceMemberCode();
memberBonusDetailVO.setSourceMemberCode("***" + sourceMemberCode.substring(sourceMemberCode.length() - 3));
memberBonusDetailVO.setRealIncome(ComputeUtil.computeMultiply(memberBonusDetailVO.getRealIncome(), currency.getOutExchangeRate()));
memberBonusDetailVOList.add(memberBonusDetailVO);
});
return memberBonusDetailVOList;
}
private Map<Integer, BdBonusItemsExt> convertBonusItems(BonusParam bonusParam) { private Map<Integer, BdBonusItemsExt> convertBonusItems(BonusParam bonusParam) {
List<BdBonusItemsExt> bonusItemsExtList = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry()).getData(); List<BdBonusItemsExt> bonusItemsExtList = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry()).getData();
Map<Integer, BdBonusItemsExt> bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(bonusItemsExtList.size())); Map<Integer, BdBonusItemsExt> bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(bonusItemsExtList.size()));
@ -609,7 +590,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
iCuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS))); iCuMemberTreeService.createCuMemberTree(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS)));
log.info("初始化表完成"); log.info("初始化表完成");
// 奖金结算 // 奖金结算
List<SaOrderExt> saOrderExtList = iSaOrderServiceApi.listSaOrderByDay(startDate, settleEndDate, "").getData(); List<SaOrderExt> saOrderExtList = iBonusOrderService.querySaOrderByTime(startDate, settleEndDate, "");
iBonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList); iBonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList);
return Boolean.TRUE; return Boolean.TRUE;
} }

View File

@ -1,257 +0,0 @@
package com.hzs.bonus.bonus.vo;
import com.hzs.common.core.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 奖金收益的公共字段
*/
@Data
public class BonusPubVO implements Serializable {
/**
* 直推收益
*/
@Excel(name = "直推收益", scale = 2)
private BigDecimal directIncomeOri;
/**
* 拓展收益
*/
@Excel(name = "拓展收益", scale = 2)
private BigDecimal expandIncomeOri;
/**
* 拓展无封 (拓展收益按等级正常比例结算 拓展收益按等级正常比例结算 无封顶)
*/
private BigDecimal expandNoCappingOri;
/**
* 拓展封顶 (拓展收益按等级正常比例结算不按4-N结算根据配置的封顶值限制最大收益)
*/
private BigDecimal expandCappingOri;
/**
* 辅导收益
*/
@Excel(name = "辅导收益", scale = 2)
private BigDecimal coachIncomeOri;
/**
* 分红收益
*/
@Excel(name = "分红收益", scale = 2)
private BigDecimal shareIncomeOri;
/**
* 报单收益
*/
@Excel(name = "报单收益", scale = 2)
private BigDecimal serviceIncomeOri;
/**
* 复购级差收益
*/
@Excel(name = "复购级差收益", scale = 2)
private BigDecimal repurRangeIncomeOri;
/**
* 复购拓展收益
*/
@Excel(name = "复购拓展收益", scale = 2)
private BigDecimal repurExpandIncomeOri;
/**
* 复购卷
*/
@Excel(name = "复购卷", scale = 2)
private BigDecimal repurCouponOri;
/**
* 复购券均分收益
*/
@Excel(name = "复购券均分", scale = 2)
private BigDecimal repurCouponShareOri;
/**
* 商城重消
*/
@Excel(name = "商城重消", scale = 2)
private BigDecimal backPointsOri;
/**
* 平台服务费
*/
@Excel(name = "平台服务费", scale = 2)
private BigDecimal serviceSpendOri;
/**
* 环球积分
*/
@Excel(name = "直推极差", scale = 2)
private BigDecimal globalPointsOri;
/**
* 车奖积分
*/
@Excel(name = "车奖积分", scale = 2)
private BigDecimal carAwardPointsOri;
/**
* 店铺收益
*/
@Excel(name = "店铺收益", scale = 2)
private BigDecimal storeIncomeOri;
/**
* 首购实发小计
*/
@Excel(name = "首购实发小计", scale = 2)
private BigDecimal purRealSubtotalOri;
/**
* 云代实发小计
*/
@Excel(name = "云代实发小计", scale = 2)
private BigDecimal cloudRealSubtotalOri;
/**
* 复购实发小计
*/
@Excel(name = "复购实发小计", scale = 2)
private BigDecimal repurRealSubtotalOri;
/**
* 复购券小计
*/
@Excel(name = "复购券实发小计", scale = 2)
private BigDecimal repurCouponSubtotalOri;
/**
* 实发收益总计
*/
@Excel(name = "实发收益总计", scale = 2)
private BigDecimal realIncomeTotalOri;
/**
* 直推收益
*/
@Excel(name = "直推收益($)", scale = 2)
private BigDecimal directIncome;
/**
* 拓展收益
*/
@Excel(name = "拓展收益($)", scale = 2)
private BigDecimal expandIncome;
/**
* 拓展无封 (拓展收益按等级正常比例结算 拓展收益按等级正常比例结算 无封顶)
*/
private BigDecimal expandNoCapping;
/**
* 拓展封顶 (拓展收益按等级正常比例结算不按4-N结算根据配置的封顶值限制最大收益)
*/
private BigDecimal expandCapping;
/**
* 辅导收益
*/
@Excel(name = "辅导收益($)", scale = 2)
private BigDecimal coachIncome;
/**
* 分红收益
*/
@Excel(name = "分红收益($)", scale = 2)
private BigDecimal shareIncome;
/**
* 报单收益
*/
@Excel(name = "报单收益($)", scale = 2)
private BigDecimal serviceIncome;
/**
* 复购级差收益
*/
@Excel(name = "复购级差收益($)", scale = 2)
private BigDecimal repurRangeIncome;
/**
* 复购拓展收益
*/
@Excel(name = "复购拓展收益($)", scale = 2)
private BigDecimal repurExpandIncome;
/**
* 复购卷
*/
@Excel(name = "复购卷($)", scale = 2)
private BigDecimal repurCoupon;
/**
* 复购券均分收益
*/
@Excel(name = "复购券均分($)", scale = 2)
private BigDecimal repurCouponShare;
/**
* 商城重消
*/
@Excel(name = "商城重消($)", scale = 2)
private BigDecimal backPoints;
/**
* 平台服务费
*/
@Excel(name = "平台服务费($)", scale = 2)
private BigDecimal serviceSpend;
/**
* 环球积分
*/
@Excel(name = "直推极差($)", scale = 2)
private BigDecimal globalPoints;
/**
* 车奖积分
*/
@Excel(name = "车奖积分($)", scale = 2)
private BigDecimal carAwardPoints;
/**
* 店铺收益
*/
@Excel(name = "店铺收益($)", scale = 2)
private BigDecimal storeIncome;
/**
* 首购实发小计
*/
@Excel(name = "首购实发小计($)", scale = 2)
private BigDecimal purRealSubtotal;
/**
* 复购实发小计
*/
@Excel(name = "复购实发小计($)", scale = 2)
private BigDecimal repurRealSubtotal;
/**
* 复购券小计
*/
@Excel(name = "复购券实发小计($)", scale = 2)
private BigDecimal repurCouponSubtotal;
/**
* 实发收益总计
*/
@Excel(name = "实发收益总计($)", scale = 2)
private BigDecimal realIncomeTotal;
}

View File

@ -43,7 +43,7 @@ public class BonusRecordDetailVO implements Serializable {
private Map<Long, CuMemberBonusDelayDetail> bonusDelayDetailAddMap; private Map<Long, CuMemberBonusDelayDetail> bonusDelayDetailAddMap;
/** /**
* 辅导奖 * 辅导奖见点收益
*/ */
private List<CuMemberBonusCoach> cuMemberBonusCoachList; private List<CuMemberBonusCoach> cuMemberBonusCoachList;
@ -53,7 +53,8 @@ public class BonusRecordDetailVO implements Serializable {
private List<CuMemberBonusDetail> cuMemberBonusDetailList; private List<CuMemberBonusDetail> cuMemberBonusDetailList;
/** /**
* 复购极差 * 复购级差区域收益
*/ */
private List<CuMemberBonusRange> cuMemberBonusRangeList; private List<CuMemberBonusRange> cuMemberBonusRangeList;
} }

View File

@ -86,20 +86,14 @@ public class MemberBonusDetailCalVO implements Serializable {
*/ */
private BigDecimal repRangeIncome; private BigDecimal repRangeIncome;
/**
* 嗨粉直推收益
*/
private BigDecimal hiFunIncome;
/**
* 海粉直推收益
*/
private BigDecimal haiFunIncome;
/** /**
* 见点收益 * 见点收益
*/ */
private BigDecimal globalPoints; private BigDecimal globalPoints;
/**
* 区域收益
*/
private BigDecimal storeIncome;
} }

View File

@ -16,17 +16,14 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* @Description: 返回会员端查询奖金明细vo * 返回会员端查询奖金明细vo
* @Author: sui q
* @Time: 2022/12/20 9:56
* @Classname: MemberBonusDetailVO
* @PackageName: com.hzs.member.bonus.vo
*/ */
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class MemberBonusDetailVO implements Serializable { public class MemberBonusDetailVO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**

View File

@ -75,7 +75,7 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
private BigDecimal repurRealSubtotal; private BigDecimal repurRealSubtotal;
/** /**
* 乐学直推收益 * 见点收益
*/ */
private BigDecimal globalPoints; private BigDecimal globalPoints;

View File

@ -1,29 +0,0 @@
package com.hzs.bonus.bonus.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* 会员端海粉收益
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MemberBonusHaiFunVO extends PubMemberBonusVO {
/**
* 嗨粉推荐收益
*/
private BigDecimal haiFunIncome;
/**
* 海粉收益小计
*/
private BigDecimal haiFunRealSubtotal;
}

View File

@ -1,29 +0,0 @@
package com.hzs.bonus.bonus.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* 会员端嗨粉收益
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MemberBonusHiFunVO extends PubMemberBonusVO {
/**
* 嗨粉推荐收益
*/
private BigDecimal hiFunIncome;
/**
* 嗨粉小计
*/
private BigDecimal hiFunRealSubtotal;
}

View File

@ -1,20 +1,13 @@
package com.hzs.bonus.bonus.vo; package com.hzs.bonus.bonus.vo;
import lombok.AllArgsConstructor; import lombok.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @description: 会员端复购收益 * 会员端复购收益
* @author: sui q
* @time: 2023/4/28 10:36
* @classname: MemberBonusPurchaseVO
* @package_name: com.hzs.member.bonus.vo
* version 1.0.0
*/ */
@EqualsAndHashCode(callSuper = true)
@Data @Data
@Builder @Builder
@AllArgsConstructor @AllArgsConstructor

View File

@ -1,222 +0,0 @@
package com.hzs.bonus.bonus.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 用于查询会员奖金
* @Author: sui q
* @Time: 2023/1/13 10:38
* @Classname: MemberBonusVO
* @PackageName: com.hzs.member.bonus.vo
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MemberBonusVO implements Serializable {
/**
* 会员主键
*/
private Long pkMember;
/**
* 会员编号
*/
private String memberCode;
/**
* 会员名称
*/
private String memberName;
/**
* 结算等级
*/
private Integer pkSettleGrade;
/**
* 真实奖衔
*/
private Integer pkAwards;
/**
* 体系名称
*/
private String vertexName;
/**
* 团队名称
*/
private String teamName;
/**
* 期间
*/
private Integer period;
/**
* 汇率
*/
private Integer pkRate;
/**
* 直推收益
*/
private BigDecimal directIncome;
/**
* 拓展收益
*/
private BigDecimal expandIncome;
/**
* 辅导收益
*/
private BigDecimal coachIncome;
/**
* 分红收益
*/
private BigDecimal shareIncome;
/**
* 报单收益
*/
private BigDecimal serviceIncome;
/**
* 商城重消
*/
private BigDecimal backPoints;
/**
* 平台服务费
*/
private BigDecimal serviceSpend;
/**
* 商城重消
*/
private BigDecimal repBackPoints;
/**
* 平台服务费
*/
private BigDecimal repServiceSpend;
/**
* 首购实发小计
*/
private BigDecimal purRealSubtotal;
/**
* 复购推荐收益
*/
private BigDecimal repurPushIncome;
/**
* 复购级差收益
*/
private BigDecimal repurRangeIncome;
/**
* 复购拓展收益
*/
private BigDecimal repurExpandIncome;
/**
* 复购实发小计
*/
private BigDecimal repurRealSubtotal;
/**
* 复购卷
*/
private BigDecimal repurCoupon;
/**
* 复购卷均分 每月推荐满足3.6w直推业绩的1%放入复购券
*/
private BigDecimal repurCouponShare;
/**
* 复购券小计
*/
private BigDecimal repurCouponSubtotal;
private BigDecimal couponServiceSpend;
/**
* 环球积分
*/
private BigDecimal globalPoints;
/**
* 车奖积分
*/
private BigDecimal carAwardPoints;
/**
* 嗨粉推荐收益
*/
private BigDecimal hiFunIncome;
/**
* 嗨粉小计
*/
private BigDecimal hiFunRealSubtotal;
/**
* 嗨粉推荐收益
*/
private BigDecimal haiFunIncome;
/**
* 海粉收益小计
*/
private BigDecimal haiFunRealSubtotal;
/**
* 平台服务费
*/
private BigDecimal haiFunServiceSpend;
/**
* 平台服务费
*/
private BigDecimal makerServiceSpend;
/**
* 店铺收益
*/
private BigDecimal storeIncome;
/**
* 实发收益总计
*/
private BigDecimal realIncomeTotal;
/**
* 收益状态 (0=正常1=停止收益)
*/
private Integer incomeStatus;
/**
* 国家
*/
private Integer pkCountry;
/**
* 结算日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date settleDate;
}

View File

@ -6,7 +6,7 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @description: 会员端奖金明细查询vo * 会员端奖金明细查询vo
*/ */
@Data @Data
public class PubMemberBonusVO implements Serializable { public class PubMemberBonusVO implements Serializable {

View File

@ -0,0 +1,21 @@
package com.hzs.bonus.order.mapper;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
public interface BonusOrderMapper {
/**
* 查询时间范围内的订单需要查询出del_flag = 1的值
*
* @param startDate 开始时间
* @param endDate 结束时间
*/
List<SaOrderExt> querySaOrderByTime(@Param("startDate") Date startDate,
@Param("endDate") Date endDate,
@Param("orderCode") String orderCode);
}

View File

@ -0,0 +1,22 @@
package com.hzs.bonus.order.service;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import java.util.Date;
import java.util.List;
public interface IBonusOrderService {
/**
* 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算
*
* @param startDate 开始日期
* @param endDate 结束日期
*/
List<SaOrderExt> querySaOrderByTime(Date startDate, Date endDate, String orderCode);
/**
* 查询订单编号
*/
SaOrderExt querySaOrderByDay(Date startDate, Date endDate, String orderCode);
}

View File

@ -0,0 +1,31 @@
package com.hzs.bonus.order.service.impl;
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 org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@Service
public class BonusOrderServiceImpl implements IBonusOrderService {
@Resource
private BonusOrderMapper bonusOrderMapper;
@Override
public List<SaOrderExt> querySaOrderByTime(Date startDate, Date endDate, String orderCode) {
return bonusOrderMapper.querySaOrderByTime(startDate, endDate, orderCode);
}
@Override
public SaOrderExt querySaOrderByDay(Date startDate, Date endDate, String orderCode) {
List<SaOrderExt> saOrderList = bonusOrderMapper.querySaOrderByTime(startDate, endDate, orderCode);
if (CollectionUtil.isNotEmpty(saOrderList)) {
return saOrderList.get(0);
}
return null;
}
}

View File

@ -929,6 +929,25 @@
<include refid="memberParent"></include> <include refid="memberParent"></include>
</select> </select>
<!-- 批量查询会员 -->
<select id="batchQueryCuMemberSettle" resultMap="CuMemberSettleExt">
select pk_member, pk_parent, member_code, member_name, a.pk_awards, a.register_authority, customer_type,
account_status, income_status, pk_settle_country, purchase_status, share_status, 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, repurchase_pv,
hi_fun_amount,hi_fun_pv,mall_amount,mall_pv, pk_center_code, category,pk_grade,
min_achieve, round, second, store_level, expire_status,
a_fir_balance, a_rep_balance, b_fir_balance, b_rep_balance, bg.grade_value
from ${settleTableName} a
inner join bd_grade bg
on a.pk_grade = bg.pk_id
where pay_status = 1
and pk_member in
<foreach collection="pkMemberList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
<select id="queryCuMemberSecondPlaceParent" resultMap="CuMemberSettleExt"> <select id="queryCuMemberSecondPlaceParent" resultMap="CuMemberSettleExt">
select b.pk_id pk_member, select b.pk_id pk_member,
b.pk_parent, b.pk_parent,

View File

@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.bonus.order.mapper.BonusOrderMapper">
<!-- 通用查询映射结果 -->
<resultMap id="SaOrder" type="com.hzs.common.domain.sale.order.SaOrder">
<id column="PK_ID" property="pkId"/>
<result column="ORDER_CODE" property="orderCode"/>
<result column="ORDER_TYPE" property="orderType"/>
<result column="PK_RATE" property="pkRate"/>
<result column="ORDER_AMOUNT" property="orderAmount"/>
<result column="ORDER_ACHIEVE" property="orderAchieve"/>
<result column="POSTAGE" property="postage"/>
<result column="PK_MEMBER" property="pkMember"/>
<result column="REC_NAME" property="recName"/>
<result column="REC_PHONE" property="recPhone"/>
<result column="REC_PROVINCE" property="recProvince"/>
<result column="REC_CITY" property="recCity"/>
<result column="REC_COUNTY" property="recCounty"/>
<result column="REC_ADDRESS" property="recAddress"/>
<result column="PAY_TIME" property="payTime"/>
<result column="REMARK" property="remark"/>
<result column="PK_REFERENCE" property="pkReference"/>
<result column="PK_PLACEMENT" property="pkPlacement"/>
<result column="TRAN_TYPE" property="tranType"/>
<result column="DELIVERY_WAY" property="deliveryWay"/>
<result column="ORDER_STATUS" property="orderStatus"/>
<result column="PK_VERTEX" property="pkVertex"/>
<result column="PAY_TYPE" property="payType"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_MEMBER_STORE" property="pkMemberStore"/>
<result column="PK_STOREHOUSE" property="pkStorehouse"/>
<result column="PK_MEMBER_STORE" property="pkMemberStore"/>
<result column="PK_ORIGINAL_ORDER" property="pkOriginalOrder"/>
<result column="UPLOAD_ACHIEVE" property="uploadAchieve"/>
<result column="ORDER_TYPE_EXTEND" property="orderTypeExtend"/>
<result column="CONSUME_AMOUNT" property="consumeAmount"/>
<result column="SYSTEM_TYPE" property="systemType"/>
<result column="BOX_NUM" property="boxNum"/>
</resultMap>
<!-- 订单+详情返回映射 -->
<resultMap id="saOrderExtResultMap" type="com.hzs.common.domain.sale.ext.SaOrderExt" extends="SaOrder">
<result column="MEMBER_CODE" property="memberCode"/>
<result column="MEMBER_NAME" property="memberName"/>
<result column="CREATOR_CODE" property="creatorCode"/>
<result column="PK_SETTLE_COUNTRY" property="pkSettleCountry"/>
<result column="PK_CENTER_CODE" property="pkCenterCode"/>
<result column="PK_STORE_LEVEL" property="pkStoreLevel"/>
<result column="IN_EXCHANGE_RATE" property="inExchangeRate"/>
<result column="PK_CORP" property="pkCorp"/>
<collection property="orderItemsExtList" ofType="com.hzs.common.domain.sale.ext.SaOrderItemsExt">
<result column="ITEMS_ID" property="pkId"/>
<result column="PK_UNIT" property="pkUnit"/>
<result column="PK_PRODUCT" property="pkProduct"/>
<result column="PRODUCT_NAME" property="productName"/>
<result column="PRODUCT_CODE" property="productCode"/>
<result column="COVER" property="cover"/>
<result column="WEIGHT" property="weight"/>
<result column="SPECS_NAME" property="specsName"/>
<result column="SPECS_NAME_ID" property="specsNameId"/>
<result column="QUANTITY" property="quantity"/>
<result column="WARES_QUANTITY" property="waresQuantity"/>
<result column="PRICE" property="price"/>
<result column="ACHIEVEMENT" property="achievement"/>
<result column="ASS_ACHIEVEMENT" property="assAchievement"/>
<result column="ORDER_STATUS" property="orderStatus"/>
<result column="IS_GIFT" property="isGift"/>
<result column="PK_ORDER" property="pkOrder"/>
<result column="PK_WARES" property="pkWares"/>
<result column="PK_WARES_DETAIL" property="pkWaresDetail"/>
<result column="PK_WARES_SPECS_SKU" property="pkWaresSpecsSku"/>
<result column="PK_GRADE" property="pkGrade"/>
<result column="PK_AWARDS" property="pkAwards"/>
<result column="EXCHANGE_GOODS" property="exchangeGoods"/>
<result column="IS_MAKER_GIFT" property="isMakerGift"/>
<result column="EDIT_FLAG" property="editFlag"/>
<result column="WARES_CODE" property="waresCode"/>
<result column="MAKER_INCOME" property="makerIncome"/>
<result column="ITEM_PK_STOREHOUSE" property="pkStorehouse"/>
<result column="USE_PICK" property="usePick"/>
</collection>
<collection property="orderBonusList" ofType="com.hzs.common.domain.sale.order.SaOrderBonus">
<result column="PK_BONUS_ORDER" property="pkOrder"/>
<result column="PK_BONUS_ITEMS" property="pkBonusItems"/>
</collection>
</resultMap>
<select id="querySaOrderByTime" resultMap="saOrderExtResultMap">
select od.*, bc.in_exchange_rate
from (
select so.pk_id,
so.pk_member,
so.order_code,
so.order_type,
so.pk_rate,
so.order_amount,
so.order_achieve,
so.order_ass_achieve,
so.upload_achieve,
so.del_flag,
so.pk_reference,
so.pk_vertex,
so.pk_country,
so.pay_time,
nvl(so.order_type_extend,0) order_type_extend,
so.pk_creator,
so.consume_amount,
so.box_num,
st.pk_id items_id,
st.pk_order,
st.pk_product,
st.pk_wares,
st.price,
st.achievement,
st.quantity,
st.pk_grade,
st.pk_awards,
st.pk_wares_specs_sku,
st.pk_wares_detail,
st.wares_quantity,
st.is_gift,
st.specs_name,
st.ass_achievement,
st.is_maker_gift,
st.USE_PICK,
0 channel,
sb.pk_order pk_bonus_order,
bt.bonus_value pk_bonus_items,
bw.wares_code
from sa_order so
inner join sa_order_items st
on so.pk_id = st.pk_order
left join sa_order_bonus sb
on st.pk_id = sb.pk_order
left join bd_bonus_items bt
on bt.pk_id = sb.pk_bonus_items and bt.del_flag=0
left join bd_wares bw
on bw.pk_id=st.pk_wares and bw.del_flag=0
where so.order_status = 1
<if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode}
</if>
and so.pay_time >= #{startDate}
and so.pay_time &lt; #{endDate}
) od
left join bd_currency bc
on od.pk_rate = bc.pk_id
order by pay_time
</select>
</mapper>

View File

@ -1,6 +1,8 @@
package com.hzs.member.base.provider; package com.hzs.member.base.provider;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.ELoginType; import com.hzs.common.core.enums.ELoginType;
@ -13,6 +15,7 @@ import com.hzs.common.domain.member.base.CuMemberRegister;
import com.hzs.common.domain.member.base.CuMemberShare; import com.hzs.common.domain.member.base.CuMemberShare;
import com.hzs.common.domain.member.ext.CuMemberAccountExt; import com.hzs.common.domain.member.ext.CuMemberAccountExt;
import com.hzs.common.domain.member.ext.CuMemberExt; import com.hzs.common.domain.member.ext.CuMemberExt;
import com.hzs.common.domain.member.region.CuMemberRegion;
import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetExt; import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetExt;
import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.order.SaOrder;
@ -33,6 +36,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -55,6 +60,8 @@ public class MemberServiceProvider implements IMemberServiceApi {
private ICuMemberEmptyCodeService iCuMemberEmptyCodeService; private ICuMemberEmptyCodeService iCuMemberEmptyCodeService;
@Autowired @Autowired
private ICuMemberSwingNetService iCuMemberSwingNetService; private ICuMemberSwingNetService iCuMemberSwingNetService;
@Autowired
private ICuMemberRegionService iCuMemberRegionService;
@Override @Override
public R<LoginMember> getMemberInfo(String memberCode) { public R<LoginMember> getMemberInfo(String memberCode) {
@ -473,4 +480,24 @@ public class MemberServiceProvider implements IMemberServiceApi {
return R.ok(iCuMemberService.countGradeMemberPoint(memberName, phone, pkGrade, pkCountry)); return R.ok(iCuMemberService.countGradeMemberPoint(memberName, phone, pkGrade, pkCountry));
} }
@Override
public R<Map<String, Long>> memberRegionMap(Date settleDate) {
Map<String, Long> resultMap = new HashMap<>();
// 查询当前日期小于失效时间的区域
List<CuMemberRegion> memberRegionList = iCuMemberRegionService.list(Wrappers.<CuMemberRegion>lambdaQuery()
.le(CuMemberRegion::getCreationTime, settleDate)
.ge(CuMemberRegion::getEffectiveEndDate, settleDate)
.orderByDesc(CuMemberRegion::getPkId)
);
if (CollectionUtil.isNotEmpty(memberRegionList)) {
for (CuMemberRegion cuMemberRegion : memberRegionList) {
// key:--value:会员ID
resultMap.put(cuMemberRegion.getProvince() + "-" + cuMemberRegion.getCity() + "-" + cuMemberRegion.getCounty(), cuMemberRegion.getPkMember());
}
}
return R.ok(resultMap);
}
} }

View File

@ -32,15 +32,6 @@ public interface SaOrderMapper extends BaseMapper<SaOrder> {
**/ **/
void updateSaOrderByMember(@Param("memberList") List<Long> memberList, @Param("pkApprove") Long pkApprove, @Param("currentDateTime") Date currentDateTime); void updateSaOrderByMember(@Param("memberList") List<Long> memberList, @Param("pkApprove") Long pkApprove, @Param("currentDateTime") Date currentDateTime);
/**
* 查询时间范围内的订单需要查询出del_flag = 1的值
*
* @param startDate 开始时间
* @param endDate 结束时间
*/
List<SaOrderExt> querySaOrderByTime(@Param("startDate") Date startDate, @Param("endDate") Date endDate,
@Param("orderCode") String orderCode);
/** /**
* 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算 * 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算
* *

View File

@ -1,7 +1,6 @@
package com.hzs.sale.order.provider; package com.hzs.sale.order.provider;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.constant.CacheConstants; import com.hzs.common.core.constant.CacheConstants;
import com.hzs.common.core.constant.msg.SaOrderMsgConstants; import com.hzs.common.core.constant.msg.SaOrderMsgConstants;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
@ -40,25 +39,11 @@ public class SaOrderServiceProvider implements ISaOrderServiceApi {
@Autowired @Autowired
private ISaOrderService iSaOrderService; private ISaOrderService iSaOrderService;
@Override
public R<List<SaOrderExt>> listSaOrderByDay(Date startDate, Date endDate, String orderCode) {
return R.ok(iSaOrderService.querySaOrderByTime(startDate, endDate, orderCode));
}
@Override @Override
public R<List<SaOrderExt>> queryRepeatSaOrderByDay(Date startDate, Date endDate) { public R<List<SaOrderExt>> queryRepeatSaOrderByDay(Date startDate, Date endDate) {
return R.ok(iSaOrderService.queryRepeatSaOrderByDay(startDate, endDate)); return R.ok(iSaOrderService.queryRepeatSaOrderByDay(startDate, endDate));
} }
@Override
public R<SaOrderExt> querySaOrderByDay(Date startDate, Date endDate, String orderCode) {
List<SaOrderExt> saOrderList = iSaOrderService.querySaOrderByTime(startDate, endDate, orderCode);
if (CollectionUtil.isNotEmpty(saOrderList)) {
return R.ok(saOrderList.get(0));
}
return R.ok(null);
}
@Override @Override
public R<BigDecimal> querySaOrderByOrderCode(Long pkMember, String orderCode) { public R<BigDecimal> querySaOrderByOrderCode(Long pkMember, String orderCode) {
// 封装查询条件 // 封装查询条件

View File

@ -307,14 +307,6 @@ public interface ISaOrderService extends IService<SaOrder> {
*/ */
boolean validateLeftExistMember(Long pkPlaceParent, Integer pkCountry); boolean validateLeftExistMember(Long pkPlaceParent, Integer pkCountry);
/**
* 查询时间范围内的订单需要查询出del_flag = 1的值
*
* @param startDate 开始时间
* @param endDate 结束时间
*/
List<SaOrderExt> querySaOrderByTime(Date startDate, Date endDate, String orderCode);
/** /**
* 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算 * 查询时间范围内的所有订单按照订单时间排序,只能用于奖金结算
* *

View File

@ -1627,11 +1627,6 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
return false; return false;
} }
@Override
public List<SaOrderExt> querySaOrderByTime(Date startDate, Date endDate, String orderCode) {
return baseMapper.querySaOrderByTime(startDate, endDate, orderCode);
}
@Override @Override
public List<SaOrderExt> queryRepeatSaOrderByDay(Date startDate, Date endDate) { public List<SaOrderExt> queryRepeatSaOrderByDay(Date startDate, Date endDate) {
return baseMapper.queryRepeatSaOrderByDay(startDate, endDate); return baseMapper.queryRepeatSaOrderByDay(startDate, endDate);

View File

@ -194,70 +194,6 @@
</if> </if>
</select> </select>
<!-- 查询时间范围内的订单需要查询出del_flag = 1的值 -->
<select id="querySaOrderByTime" resultMap="saOrderExtResultMap">
select od.*, bc.in_exchange_rate
from (
select so.pk_id,
so.pk_member,
so.order_code,
so.order_type,
so.pk_rate,
so.order_amount,
so.order_achieve,
so.order_ass_achieve,
so.upload_achieve,
so.del_flag,
so.pk_reference,
so.pk_vertex,
so.pk_country,
so.pay_time,
nvl(so.order_type_extend,0) order_type_extend,
so.pk_creator,
so.consume_amount,
so.box_num,
st.pk_id items_id,
st.pk_order,
st.pk_product,
st.pk_wares,
st.price,
st.achievement,
st.quantity,
st.pk_grade,
st.pk_awards,
st.pk_wares_specs_sku,
st.pk_wares_detail,
st.wares_quantity,
st.is_gift,
st.specs_name,
st.ass_achievement,
st.is_maker_gift,
st.USE_PICK,
0 channel,
sb.pk_order pk_bonus_order,
bt.bonus_value pk_bonus_items,
bw.wares_code
from sa_order so
inner join sa_order_items st
on so.pk_id = st.pk_order
left join sa_order_bonus sb
on st.pk_id = sb.pk_order
left join bd_bonus_items bt
on bt.pk_id = sb.pk_bonus_items and bt.del_flag=0
left join bd_wares bw
on bw.pk_id=st.pk_wares and bw.del_flag=0
where so.order_status = 1
<if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode}
</if>
and so.pay_time >= #{startDate}
and so.pay_time &lt; #{endDate}
) od
left join bd_currency bc
on od.pk_rate = bc.pk_id
order by pay_time
</select>
<select id="selectSum" resultType="decimal"> <select id="selectSum" resultType="decimal">
select ifnull(sum(ORDER_AMOUNT), 0) select ifnull(sum(ORDER_AMOUNT), 0)
from SA_ORDER from SA_ORDER
@ -267,10 +203,7 @@
<!-- 查询订单相关字段 --> <!-- 查询订单相关字段 -->
<sql id="orderSelect"> <sql id="orderSelect">
so so.*,
.
*
,
cm.member_code, cm.member_code,
cm.member_name, cm.member_name,
cm.pk_settle_country, cm.pk_settle_country,

View File

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

View File

@ -1,7 +1,9 @@
package com.hzs.system.config.provider; package com.hzs.system.config.provider;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.common.core.domain.R; import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.EAreaType;
import com.hzs.common.core.enums.ERangeType; import com.hzs.common.core.enums.ERangeType;
import com.hzs.common.core.utils.ComputeUtil; import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.bonus.BdBonusDeduct;
@ -11,6 +13,7 @@ import com.hzs.common.domain.system.base.BdCurrency;
import com.hzs.common.domain.system.config.*; import com.hzs.common.domain.system.config.*;
import com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt; import com.hzs.common.domain.system.config.ext.BdBonusDirectLoopExt;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt; import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.system.base.service.IBdAwardsRegionConfigService;
import com.hzs.system.base.service.IBdCountryService; import com.hzs.system.base.service.IBdCountryService;
import com.hzs.system.base.service.IBdCurrencyService; import com.hzs.system.base.service.IBdCurrencyService;
import com.hzs.system.bonus.service.IBdBonusDeductService; import com.hzs.system.bonus.service.IBdBonusDeductService;
@ -22,6 +25,7 @@ import com.hzs.system.sys.dto.BdCurrencyDTO;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
/** /**
@ -31,53 +35,52 @@ import java.util.*;
public class BonusItemsServiceProvider implements IBonusItemsServiceApi { public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
@Autowired @Autowired
private IBdBonusItemsService bonusItemsService; private IBdBonusItemsService iBdBonusItemsService;
@Autowired @Autowired
private IBdBonusDirectLoopService bdBonusDirectLoopService; private IBdBonusDirectLoopService iBdBonusDirectLoopService;
@Autowired @Autowired
private IBdBonusHiPinkService bdBonusHiPinkService; private IBdBonusHiPinkService iBdBonusHiPinkService;
@Autowired @Autowired
private IBdBonusDirectService bdBonusDirectService; private IBdBonusDirectService iBdBonusDirectService;
@Autowired @Autowired
private IBdBonusDifferenceService bdBonusDifferenceService; private IBdBonusDifferenceService iBdBonusDifferenceService;
@Autowired @Autowired
private IBdBonusExpandService bdBonusExpandService; private IBdBonusExpandService iBdBonusExpandService;
@Autowired @Autowired
private IBdGradeService gradeService; private IBdBonusDeductService iBdBonusDeductService;
@Autowired @Autowired
private IBdAwardsService awardsService; private IBdBonusServiceService iBdBonusServiceService;
@Autowired @Autowired
private IBdBonusDeductService bdBonusDeductService; private IBdGradeService iBdGradeService;
@Autowired @Autowired
private IBdBonusServiceService bdBonusServiceService; private IBdAwardsService iBdAwardsService;
@Autowired @Autowired
private IBdCurrencyService bdCurrencyService; private IBdCurrencyService iBdCurrencyService;
@Autowired @Autowired
private IBdCountryService bdCountryService; private IBdCountryService iBdCountryService;
@Autowired @Autowired
private IBdRepoDirectPushService bdRepoDirectPushService; private IBdRepoDirectPushService iBdRepoDirectPushService;
@Autowired @Autowired
private IBdBonusCloudService bdBonusCloudService; private IBdAwardsRegionConfigService iBdAwardsRegionConfigService;
@Override @Override
public R<List<BdBonusItemsExt>> queryBonusItems(Integer pkCountry) { public R<List<BdBonusItemsExt>> queryBonusItems(Integer pkCountry) {
return R.ok(bonusItemsService.queryBonusItems(pkCountry)); return R.ok(iBdBonusItemsService.queryBonusItems(pkCountry));
} }
@Override @Override
public R<List<BdBonusItems>> queryExistsBonusItems(List<Integer> bonusValueList) { public R<List<BdBonusItems>> queryExistsBonusItems(List<Integer> bonusValueList) {
return R.ok(bonusItemsService.queryBonusItemsByValue(bonusValueList)); return R.ok(iBdBonusItemsService.queryBonusItemsByValue(bonusValueList));
} }
@Override @Override
public R<BdBonusItems> queryBonusItems(Integer pkCountry, Integer pkBonusItems) { public R<BdBonusItems> queryBonusItems(Integer pkCountry, Integer pkBonusItems) {
return R.ok(bonusItemsService.queryBonusItems(pkCountry, pkBonusItems)); return R.ok(iBdBonusItemsService.queryBonusItems(pkCountry, pkBonusItems));
} }
@Override @Override
public R<BdBonusItems> queryBonusItemsByBonusValue(Integer pkCountry, Integer bonusValue) { public R<BdBonusItems> queryBonusItemsByBonusValue(Integer pkCountry, Integer bonusValue) {
return R.ok(bonusItemsService.queryBonusItemsByBonusValue(pkCountry, bonusValue)); return R.ok(iBdBonusItemsService.queryBonusItemsByBonusValue(pkCountry, bonusValue));
} }
@Override @Override
@ -86,7 +89,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
// 汇率 // 汇率
bonusConfigDTO.setCurrencyDtoMap(getCurrencyDtoMap()); bonusConfigDTO.setCurrencyDtoMap(getCurrencyDtoMap());
// 收益类型 // 收益类型
List<BdCountry> allCountryList = bdCountryService.getAllCountry(); List<BdCountry> allCountryList = iBdCountryService.getAllCountry();
Set<Integer> countrySet = new HashSet<>(); Set<Integer> countrySet = new HashSet<>();
allCountryList.forEach(bdCountry -> countrySet.add(bdCountry.getPkId())); allCountryList.forEach(bdCountry -> countrySet.add(bdCountry.getPkId()));
bonusConfigDTO.setBonusItemsExtMap(getBdBonusItemsExtMap(countrySet)); bonusConfigDTO.setBonusItemsExtMap(getBdBonusItemsExtMap(countrySet));
@ -114,11 +117,13 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
bonusConfigDTO.setBonusDeductsMap(getBonusDeductConfig()); bonusConfigDTO.setBonusDeductsMap(getBonusDeductConfig());
// 报单服务费 // 报单服务费
bonusConfigDTO.setBonusServiceMap(getBonusServiceConfig()); bonusConfigDTO.setBonusServiceMap(getBonusServiceConfig());
// 区域收益配置
bonusConfigDTO.setRegionAreaConfigMap(getRegionAreaConfig());
return R.ok(bonusConfigDTO); return R.ok(bonusConfigDTO);
} }
private Map<String, BdCurrencyDTO> getCurrencyDtoMap() { private Map<String, BdCurrencyDTO> getCurrencyDtoMap() {
List<BdCurrency> bdCurrencyList = bdCurrencyService.queryAllBdCurrency(); List<BdCurrency> bdCurrencyList = iBdCurrencyService.queryAllBdCurrency();
Map<String, BdCurrencyDTO> currencyDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdCurrencyList.size())); Map<String, BdCurrencyDTO> currencyDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdCurrencyList.size()));
bdCurrencyList.forEach(bdCurrency -> bdCurrencyList.forEach(bdCurrency ->
currencyDtoMap.put(bdCurrency.getPkCountry().toString() + bdCurrency.getPkId(), currencyDtoMap.put(bdCurrency.getPkCountry().toString() + bdCurrency.getPkId(),
@ -129,7 +134,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
private Map<String, BdBonusItemsExt> getBdBonusItemsExtMap(Set<Integer> countrySet) { private Map<String, BdBonusItemsExt> getBdBonusItemsExtMap(Set<Integer> countrySet) {
Map<String, BdBonusItemsExt> bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(countrySet.size() * 8)); Map<String, BdBonusItemsExt> bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(countrySet.size() * 8));
countrySet.forEach(pkCountry -> { countrySet.forEach(pkCountry -> {
List<BdBonusItemsExt> bdBonusItemsExtList = bonusItemsService.queryCalBonusItems(pkCountry); List<BdBonusItemsExt> bdBonusItemsExtList = iBdBonusItemsService.queryCalBonusItems(pkCountry);
for (BdBonusItemsExt bdBonusItemsExt : bdBonusItemsExtList) { for (BdBonusItemsExt bdBonusItemsExt : bdBonusItemsExtList) {
bonusItemsMap.put(pkCountry.toString() + bdBonusItemsExt.getBonusValue().toString(), bdBonusItemsExt); bonusItemsMap.put(pkCountry.toString() + bdBonusItemsExt.getBonusValue().toString(), bdBonusItemsExt);
} }
@ -141,7 +146,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 嗨粉直推奖励 * 嗨粉直推奖励
*/ */
private Map<Integer, List<BonusHiPinkDTO>> getBonusHiPinkMap() { private Map<Integer, List<BonusHiPinkDTO>> getBonusHiPinkMap() {
List<BdBonusHiPink> bdBonusHiPinks = bdBonusHiPinkService.queryBonusHiPink(); List<BdBonusHiPink> bdBonusHiPinks = iBdBonusHiPinkService.queryBonusHiPink();
Map<Integer, List<BonusHiPinkDTO>> bonusHiPinkMap = new LinkedHashMap<>(ComputeUtil.mapInitCapacity(bdBonusHiPinks.size())); Map<Integer, List<BonusHiPinkDTO>> bonusHiPinkMap = new LinkedHashMap<>(ComputeUtil.mapInitCapacity(bdBonusHiPinks.size()));
bdBonusHiPinks.forEach(bdBonusHiPink -> { bdBonusHiPinks.forEach(bdBonusHiPink -> {
BonusHiPinkDTO bonusHiPinkDTO = BeanUtil.copyProperties(bdBonusHiPink, BonusHiPinkDTO.class); BonusHiPinkDTO bonusHiPinkDTO = BeanUtil.copyProperties(bdBonusHiPink, BonusHiPinkDTO.class);
@ -160,7 +165,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 复购直推奖励 * 复购直推奖励
*/ */
private Map<Integer, Map<Integer, BonusRepurchasePushDTO>> getRepurchasePushMap() { private Map<Integer, Map<Integer, BonusRepurchasePushDTO>> getRepurchasePushMap() {
List<BdRepoDirectPush> bdRepoDirectPushList = bdRepoDirectPushService.queryRepoDirectPush(); List<BdRepoDirectPush> bdRepoDirectPushList = iBdRepoDirectPushService.queryRepoDirectPush();
Map<Integer, Map<Integer, BonusRepurchasePushDTO>> repurchasePushMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdRepoDirectPushList.size())); Map<Integer, Map<Integer, BonusRepurchasePushDTO>> repurchasePushMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdRepoDirectPushList.size()));
bdRepoDirectPushList.forEach(bdRepoDirectPush -> { bdRepoDirectPushList.forEach(bdRepoDirectPush -> {
BonusRepurchasePushDTO bonusRepurchasePushDTO = BeanUtil.copyProperties(bdRepoDirectPush, BonusRepurchasePushDTO.class); BonusRepurchasePushDTO bonusRepurchasePushDTO = BeanUtil.copyProperties(bdRepoDirectPush, BonusRepurchasePushDTO.class);
@ -179,7 +184,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获得奖金循环配置的参数 * 获得奖金循环配置的参数
*/ */
private Map<String, BonusDirectLoopDTO> getBonusLoopConfig() { private Map<String, BonusDirectLoopDTO> getBonusLoopConfig() {
List<BdBonusDirectLoopExt> bonusDirectLoopList = bdBonusDirectLoopService.queryBonusDirectLoop(); List<BdBonusDirectLoopExt> bonusDirectLoopList = iBdBonusDirectLoopService.queryBonusDirectLoop();
Map<String, BonusDirectLoopDTO> bonusDirectLoopDtoMap = new HashMap<>(4); Map<String, BonusDirectLoopDTO> bonusDirectLoopDtoMap = new HashMap<>(4);
bonusDirectLoopList.forEach(bdBonusDirectLoop -> { bonusDirectLoopList.forEach(bdBonusDirectLoop -> {
BonusDirectLoopDTO bonusDirectLoopDTO = BeanUtil.copyProperties(bdBonusDirectLoop, BonusDirectLoopDTO.class); BonusDirectLoopDTO bonusDirectLoopDTO = BeanUtil.copyProperties(bdBonusDirectLoop, BonusDirectLoopDTO.class);
@ -193,7 +198,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获得奖金 推荐什么等级 直推奖励配置 * 获得奖金 推荐什么等级 直推奖励配置
*/ */
private Map<String, BonusDirectDTO> getBonusDirectConfig() { private Map<String, BonusDirectDTO> getBonusDirectConfig() {
List<BdBonusDirect> bdBonusDirectList = bdBonusDirectService.queryBonusDirect(); List<BdBonusDirect> bdBonusDirectList = iBdBonusDirectService.queryBonusDirect();
Map<String, BonusDirectDTO> directDtoHashMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDirectList.size())); Map<String, BonusDirectDTO> directDtoHashMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDirectList.size()));
bdBonusDirectList.forEach(bdBonusDirect -> { bdBonusDirectList.forEach(bdBonusDirect -> {
BonusDirectDTO bonusDirectDTO = BeanUtil.copyProperties(bdBonusDirect, BonusDirectDTO.class); BonusDirectDTO bonusDirectDTO = BeanUtil.copyProperties(bdBonusDirect, BonusDirectDTO.class);
@ -206,7 +211,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获得奖金 推荐什么等级 直推奖励配置 * 获得奖金 推荐什么等级 直推奖励配置
*/ */
private Map<Integer, BonusDifferenceDTO> getBonusDifferenceConfig() { private Map<Integer, BonusDifferenceDTO> getBonusDifferenceConfig() {
List<BdBonusDifference> bdBonusDifferenceList = bdBonusDifferenceService.queryBonusDifference(); List<BdBonusDifference> bdBonusDifferenceList = iBdBonusDifferenceService.queryBonusDifference();
Map<Integer, BonusDifferenceDTO> bonusDifferenceDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDifferenceList.size())); Map<Integer, BonusDifferenceDTO> bonusDifferenceDtoMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDifferenceList.size()));
bdBonusDifferenceList.forEach(bonusDirectDTO -> { bdBonusDifferenceList.forEach(bonusDirectDTO -> {
BonusDifferenceDTO bonusDifferenceDTO = BeanUtil.copyProperties(bonusDirectDTO, BonusDifferenceDTO.class); BonusDifferenceDTO bonusDifferenceDTO = BeanUtil.copyProperties(bonusDirectDTO, BonusDifferenceDTO.class);
@ -219,7 +224,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 拓展奖拓展的次数 国家作为键 * 拓展奖拓展的次数 国家作为键
*/ */
private Map<Integer, BonusExpandDTO> getBonusExpandConfig() { private Map<Integer, BonusExpandDTO> getBonusExpandConfig() {
List<BdBonusExpand> bdBonusExpandList = bdBonusExpandService.queryBdBonusExpand(); List<BdBonusExpand> bdBonusExpandList = iBdBonusExpandService.queryBdBonusExpand();
Map<Integer, BonusExpandDTO> bdBonusExpandMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusExpandList.size())); Map<Integer, BonusExpandDTO> bdBonusExpandMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusExpandList.size()));
bdBonusExpandList.forEach(bdBonusExpand -> { bdBonusExpandList.forEach(bdBonusExpand -> {
BonusExpandDTO bonusExpandDTO = BeanUtil.copyProperties(bdBonusExpand, BonusExpandDTO.class); BonusExpandDTO bonusExpandDTO = BeanUtil.copyProperties(bdBonusExpand, BonusExpandDTO.class);
@ -232,7 +237,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获取等级对应的拓展奖对应参数 * 获取等级对应的拓展奖对应参数
*/ */
private Map<String, BdGrade> getBonusExpandGradeConfig() { private Map<String, BdGrade> getBonusExpandGradeConfig() {
List<BdGrade> bdGradeList = gradeService.queryBdGrade(); List<BdGrade> bdGradeList = iBdGradeService.queryBdGrade();
Map<String, BdGrade> bdGradeMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdGradeList.size())); Map<String, BdGrade> bdGradeMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdGradeList.size()));
bdGradeList.forEach(bdGrade -> bdGradeList.forEach(bdGrade ->
bdGradeMap.put(bdGrade.getPkCountry().toString() + "_" + bdGrade.getPkId(), bdGrade)); bdGradeMap.put(bdGrade.getPkCountry().toString() + "_" + bdGrade.getPkId(), bdGrade));
@ -243,7 +248,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获取奖衔对应的辅导奖对应参数 * 获取奖衔对应的辅导奖对应参数
*/ */
private Map<String, BdAwards> getBonusCoachConfig(Map<String, BdAwards> awardsValueMap) { private Map<String, BdAwards> getBonusCoachConfig(Map<String, BdAwards> awardsValueMap) {
List<BdAwards> bdAwardsList = awardsService.queryAwards(); List<BdAwards> bdAwardsList = iBdAwardsService.queryAwards();
Map<String, BdAwards> bdAwardsMap = new LinkedHashMap<>(ComputeUtil.mapInitCapacity(bdAwardsList.size())); Map<String, BdAwards> bdAwardsMap = new LinkedHashMap<>(ComputeUtil.mapInitCapacity(bdAwardsList.size()));
bdAwardsList.forEach(bdAwards -> { bdAwardsList.forEach(bdAwards -> {
bdAwardsMap.put(bdAwards.getPkCountry().toString() + ERangeType.AWARDS.getValue() + bdAwards.getPkId(), bdAwards); bdAwardsMap.put(bdAwards.getPkCountry().toString() + ERangeType.AWARDS.getValue() + bdAwards.getPkId(), bdAwards);
@ -256,7 +261,7 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获取每个国家奖金项对应的扣项 * 获取每个国家奖金项对应的扣项
*/ */
private Map<Integer, BdBonusDeduct> getBonusDeductConfig() { private Map<Integer, BdBonusDeduct> getBonusDeductConfig() {
List<BdBonusDeduct> bdBonusDeductList = bdBonusDeductService.queryBonusDeduct(); List<BdBonusDeduct> bdBonusDeductList = iBdBonusDeductService.queryBonusDeduct();
Map<Integer, BdBonusDeduct> bdBonusDeductMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDeductList.size())); Map<Integer, BdBonusDeduct> bdBonusDeductMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusDeductList.size()));
bdBonusDeductList.forEach(bdBonusDeduct -> bdBonusDeductList.forEach(bdBonusDeduct ->
bdBonusDeductMap.put(bdBonusDeduct.getPkBonusItems(), bdBonusDeduct)); bdBonusDeductMap.put(bdBonusDeduct.getPkBonusItems(), bdBonusDeduct));
@ -267,11 +272,32 @@ public class BonusItemsServiceProvider implements IBonusItemsServiceApi {
* 获取每个国家奖金项对应的扣项 * 获取每个国家奖金项对应的扣项
*/ */
private Map<String, BdBonusService> getBonusServiceConfig() { private Map<String, BdBonusService> getBonusServiceConfig() {
List<BdBonusService> bdBonusServiceList = bdBonusServiceService.queryBonusService(); List<BdBonusService> bdBonusServiceList = iBdBonusServiceService.queryBonusService();
Map<String, BdBonusService> bdBonusDeductMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusServiceList.size())); Map<String, BdBonusService> bdBonusDeductMap = new HashMap<>(ComputeUtil.mapInitCapacity(bdBonusServiceList.size()));
bdBonusServiceList.forEach(bdBonusService -> bdBonusServiceList.forEach(bdBonusService ->
bdBonusDeductMap.put(bdBonusService.getPkCountry().toString() + bdBonusService.getServiceType(), bdBonusService)); bdBonusDeductMap.put(bdBonusService.getPkCountry().toString() + bdBonusService.getServiceType(), bdBonusService));
return bdBonusDeductMap; return bdBonusDeductMap;
} }
/**
* 获取区域收益配置
*/
private Map<Integer, BigDecimal> getRegionAreaConfig() {
Map<Integer, BigDecimal> resultMap = new HashMap<>();
List<BdAwardsRegionConfig> regionConfigList = iBdAwardsRegionConfigService.list();
if (CollectionUtil.isNotEmpty(regionConfigList)) {
for (BdAwardsRegionConfig bdAwardsRegionConfig : regionConfigList) {
resultMap.put(bdAwardsRegionConfig.getAreaType(), bdAwardsRegionConfig.getRate());
}
} else {
// 省默认15%市默认为10%区默认为5%
resultMap.put(EAreaType.PROVINCE.getValue(), new BigDecimal("0.15"));
resultMap.put(EAreaType.CITY.getValue(), new BigDecimal("0.10"));
resultMap.put(EAreaType.COUNTY.getValue(), new BigDecimal("0.05"));
}
return resultMap;
}
} }

View File

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

View File

@ -10,12 +10,7 @@ import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
/** /**
* <p>
* 复购直推配置 服务实现类 * 复购直推配置 服务实现类
* </p>
*
* @author zhangjing
* @since 2023-06-29
*/ */
@Service @Service
public class BdRepoDirectPushServiceImpl extends ServiceImpl<BdRepoDirectPushMapper, BdRepoDirectPush> implements IBdRepoDirectPushService { public class BdRepoDirectPushServiceImpl extends ServiceImpl<BdRepoDirectPushMapper, BdRepoDirectPush> implements IBdRepoDirectPushService {

View File

@ -2,29 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.system.config.mapper.BdRepoDirectPushMapper"> <mapper namespace="com.hzs.system.config.mapper.BdRepoDirectPushMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.hzs.common.domain.system.config.BdRepoDirectPush">
<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="ALGEBRA" property="algebra" />
<result column="CAL_TYPE" property="calType" />
<result column="PUSH_VALUE" property="pushValue" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DEL_FLAG,
PK_COUNTRY,
CREATION_TIME,
MODIFIED_TIME,
PK_CREATOR,
PK_MODIFIED,
PK_ID, ALGEBRA, TYPE, PUSH_VALUE
</sql>
</mapper> </mapper>

View File

@ -98,8 +98,6 @@ public class BonusMsgConstants {
public static String RANGE = "订单编号%s,%s为%s贡献了极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。"; public static String RANGE = "订单编号%s,%s为%s贡献了极差收益,计算业绩%f,前一极差等级名称%s,当前极差等级名称%s。";
public static String ORI_RANGE = "订单编号%s,%s为%s贡献了平级收益,计算业绩%f,等级名称%s。";
/** /**
* 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f * 复购券收益 -- 订单编号%s,%s为%s贡献了复购券收益,计算业绩%f,计算比例%f,复购券收益%f
*/ */
@ -110,7 +108,11 @@ public class BonusMsgConstants {
/** /**
* 复购见点收益备注 * 复购见点收益备注
*/ */
public static String REPURCHASE_POINT = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了见点收益,计算业绩%f,计算比例%f"; public static String REPURCHASE_POINT = "当前是第%d代,共#代,订单编号%s,%s为%s贡献了复购见点收益,计算业绩%f,计算比例%f";
/**
* 复购区域收益备注
*/
public static String REPURCHASE_AREA = "订单编号%s,%s为%s贡献了复购区域收益,计算业绩%f,当前收益名称%s。";
/** /**
* 奖金重算 -- 只能重算7天内的奖金 * 奖金重算 -- 只能重算7天内的奖金

View File

@ -11,17 +11,17 @@ import lombok.Getter;
public enum EAreaType { public enum EAreaType {
/** /**
* 1= * 1=
*/ */
PROVINCE(1, "", 0), PROVINCE(1, "", 0),
/** /**
* 2=国家 * 2=
*/ */
CITY(2, "", 0), CITY(2, "", 0),
/** /**
* 3=/ * 3=
*/ */
COUNTY(3, "区/县", 0), COUNTY(3, "区/县", 0),
@ -48,9 +48,9 @@ public enum EAreaType {
* @return * @return
*/ */
public static EAreaType getEnumByValue(int value) { public static EAreaType getEnumByValue(int value) {
for (EAreaType eApproveStatus : EAreaType.values()) { for (EAreaType enums : EAreaType.values()) {
if (eApproveStatus.getValue() == value) { if (enums.getValue() == value) {
return eApproveStatus; return enums;
} }
} }
return null; return null;

View File

@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
/** /**
* @Description: 发放状态 * 发放状态
* @Author: sui q
* @Time: 2023/2/22 15:21
* @Classname: EGrantStatus
* @PackageName: com.hzs.common.core.enums
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter

View File

@ -15,8 +15,6 @@ import java.util.List;
/** /**
* 时间工具类 * 时间工具类
*
* @author hzs
*/ */
public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
@ -159,22 +157,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
} }
/** /**
* 截取字符串转换为月
*
* @param date * @param date
* @Description: 截取字符串转换为月
* @return: String
* @Author: sui q
* @Date: 2022/11/7 15:50
*/ */
public static String getMonth(String date) { public static String getMonth(String date) {
return date.replace("-", "").substring(0, 6); return date.replace("-", "").substring(0, 6);
} }
/** /**
* 截取字符串转换为年
*
* @param date * @param date
* @Description: 截取字符串转换为年
* @return: String
* @Author: sui q
* @Date: 2022/11/7 15:50
*/ */
public static String getYear(String date) { public static String getYear(String date) {
return date.substring(0, 4); return date.substring(0, 4);
@ -821,10 +815,7 @@ 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 getRecentlyTuesday(String date) { public static String getRecentlyTuesday(String date) {
Date settleDate = parseStringToDate(date); Date settleDate = parseStringToDate(date);
@ -840,10 +831,7 @@ 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) { public static Integer getRecentlyDay(Date settleDate) {
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek(); DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();
@ -851,10 +839,7 @@ 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 getRecentlyTuesday(Date settleDate) { public static String getRecentlyTuesday(Date settleDate) {
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek(); DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();
@ -868,10 +853,7 @@ 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) { public static String getRecentlyMonday(Date settleDate) {
DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek(); DayOfWeek dayOfWeek = toLocalDate(settleDate).getDayOfWeek();

View File

@ -194,7 +194,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal carAwardPoints; private BigDecimal carAwardPoints;
/** /**
* 店铺收益 * 区域收益
*/ */
@TableField("STORE_INCOME") @TableField("STORE_INCOME")
private BigDecimal storeIncome; private BigDecimal storeIncome;

View File

@ -77,13 +77,13 @@ public class CuMemberBonusRange extends BaseEntity {
private BigDecimal calValue; private BigDecimal calValue;
/** /**
* 差等级 * 差等级
*/ */
@TableField("PK_RANGE") @TableField("PK_RANGE")
private Integer pkRange; private Integer pkRange;
/** /**
* 前一差等级 * 前一差等级
*/ */
@TableField("PK_BEFORE_RANGE") @TableField("PK_BEFORE_RANGE")
private Integer pkBeforeRange; private Integer pkBeforeRange;