3
0
Fork 0

## 复购配送收益;复购分公司级差收益;

This commit is contained in:
cabbage 2025-08-13 17:36:15 +08:00
parent 25337ae93c
commit 45030e2077
26 changed files with 437 additions and 344 deletions

View File

@ -5,6 +5,7 @@ import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.base.CuMemberRegister; import com.hzs.common.domain.member.base.CuMemberRegister;
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.retail.member.CuMemberRetailRegion;
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;
import com.hzs.member.account.dto.BusinessCommissionDTO; import com.hzs.member.account.dto.BusinessCommissionDTO;
@ -14,6 +15,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;
@ -381,4 +383,12 @@ public interface IMemberServiceApi {
*/ */
R<?> otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag); R<?> otherRetailMember(CuMember cuMember, SaOrderExt saOrder, CuMemberAccountExt cuMemberAccountExt, Boolean activateFlag);
/**
* 有效区域列表
*
* @param queryDate
* @return
*/
R<Map<Integer, CuMemberRetailRegion>> listEffectiveRegion(Date queryDate);
} }

View File

@ -10,14 +10,11 @@ import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO;
import com.hzs.common.core.annotation.AccessPermissions; import com.hzs.common.core.annotation.AccessPermissions;
import com.hzs.common.core.annotation.ColumnAuthority; import com.hzs.common.core.annotation.ColumnAuthority;
import com.hzs.common.core.annotation.Log; import com.hzs.common.core.annotation.Log;
import com.hzs.common.core.constant.BonusFieldConstants;
import com.hzs.common.core.constant.EnumsPrefixConstants; import com.hzs.common.core.constant.EnumsPrefixConstants;
import com.hzs.common.core.enums.*; import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils; import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.utils.StringUtils;
import com.hzs.common.core.utils.poi.ExcelUtil; import com.hzs.common.core.utils.poi.ExcelUtil;
import com.hzs.common.core.utils.reflect.ReflectUtils;
import com.hzs.common.core.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.ext.CuMemberBonusExt; import com.hzs.common.domain.member.ext.CuMemberBonusExt;
@ -46,14 +43,14 @@ import java.util.stream.Collectors;
public class CuMemberBonusController extends BaseController { public class CuMemberBonusController extends BaseController {
@Autowired @Autowired
private ICuMemberBonusService cuMemberBonusService; private ICuMemberBonusService iCuMemberBonusService;
@Autowired @Autowired
private ITransactionCommonService transactionCommonService; private ITransactionCommonService iTransactionCommonService;
@DubboReference @DubboReference
IUserServiceApi userServiceApi; IUserServiceApi iUserServiceApi;
@DubboReference @DubboReference
IMenuColumnServiceApi menuColumnServiceApi; IMenuColumnServiceApi iMenuColumnServiceApi;
/** /**
* 分页查询会员某个时间段内的奖金汇总 * 分页查询会员某个时间段内的奖金汇总
@ -73,7 +70,7 @@ public class CuMemberBonusController extends BaseController {
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
packageBonusParam(bonusParam); packageBonusParam(bonusParam);
startPage(); startPage();
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryBonusTotalVoByConditionForServer(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryBonusTotalVoByConditionForServer(bonusParam);
TableDataInfo dataTable = getDataTable(cuMemberBonusList); TableDataInfo dataTable = getDataTable(cuMemberBonusList);
dataTable.setRows(getBonusTotalVoS(cuMemberBonusList)); dataTable.setRows(getBonusTotalVoS(cuMemberBonusList));
return dataTable; return dataTable;
@ -94,9 +91,9 @@ public class CuMemberBonusController extends BaseController {
bonusParam.setPkVertexList(pkVertex); bonusParam.setPkVertexList(pkVertex);
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
packageBonusParam(bonusParam); packageBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = cuMemberBonusService.queryBonusTotalVoByConditionForServer(bonusParam); List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryBonusTotalVoByConditionForServer(bonusParam);
List<BonusTotalVO> bonusTotalVoList = getBonusTotalVoS(cuMemberBonusList); List<BonusTotalVO> bonusTotalVoList = getBonusTotalVoS(cuMemberBonusList);
Map<String, Integer> sourceBonusList = menuColumnServiceApi.queryMenuColumn("totalBonus", SecurityUtils.getUserId()).getData(); Map<String, Integer> sourceBonusList = iMenuColumnServiceApi.queryMenuColumn("totalBonus", SecurityUtils.getUserId()).getData();
ExcelUtil<BonusTotalVO> util = new ExcelUtil<>(BonusTotalVO.class, sourceBonusList); ExcelUtil<BonusTotalVO> util = new ExcelUtil<>(BonusTotalVO.class, sourceBonusList);
util.exportExcel(response, bonusTotalVoList, "奖金汇总导出"); util.exportExcel(response, bonusTotalVoList, "奖金汇总导出");
} }
@ -105,9 +102,6 @@ public class CuMemberBonusController extends BaseController {
List<BonusTotalVO> totalVoList = new ArrayList<>(); List<BonusTotalVO> totalVoList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { cuMemberBonusList.forEach(cuMemberBonus -> {
BonusTotalVO bonusTotalVO = BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class); BonusTotalVO bonusTotalVO = BeanUtil.copyProperties(cuMemberBonus, BonusTotalVO.class);
for (String key : CuMemberBonusVO.INCOME_ARRAY) {
ReflectUtils.invokeSetter(bonusTotalVO, key + BonusFieldConstants.INCOME_SUFFIX, ComputeUtil.computeMultiply(ReflectUtils.invokeGetter(cuMemberBonus, key), cuMemberBonus.getOutExchangeRate()));
}
totalVoList.add(bonusTotalVO); totalVoList.add(bonusTotalVO);
}); });
return totalVoList; return totalVoList;
@ -136,8 +130,8 @@ public class CuMemberBonusController extends BaseController {
} }
packageBonusParam(bonusParam); packageBonusParam(bonusParam);
startPage(); startPage();
List<CuMemberBonusExt> cuMemberBonusExtList = cuMemberBonusService.queryMemberBonusVoByConditionForServer(bonusParam); List<CuMemberBonusExt> cuMemberBonusExtList = iCuMemberBonusService.queryMemberBonusVoByConditionForServer(bonusParam);
CuMemberBonusExt cmb = cuMemberBonusService.queryMemberBonusByConditionForServerSum(bonusParam); CuMemberBonusExt cmb = iCuMemberBonusService.queryMemberBonusByConditionForServerSum(bonusParam);
if (cmb != null) { if (cmb != null) {
cmb.setMemberCode("合计"); cmb.setMemberCode("合计");
cuMemberBonusExtList.add(cmb); cuMemberBonusExtList.add(cmb);
@ -163,18 +157,18 @@ public class CuMemberBonusController extends BaseController {
bonusParam.setPkVertexList(pkVertex); bonusParam.setPkVertexList(pkVertex);
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
packageBonusParam(bonusParam); packageBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusExtList = cuMemberBonusService.queryMemberBonusVoByConditionForServer(bonusParam); List<CuMemberBonusExt> cuMemberBonusExtList = iCuMemberBonusService.queryMemberBonusVoByConditionForServer(bonusParam);
CuMemberBonusExt cuMemberBonusExt = cuMemberBonusService.initCuMemberBonus(); CuMemberBonusExt cuMemberBonusExt = iCuMemberBonusService.initCuMemberBonus();
cuMemberBonusExt.setMemberCode("计:"); cuMemberBonusExt.setMemberCode("计:");
if (CollectionUtil.isNotEmpty(cuMemberBonusExtList)) { if (CollectionUtil.isNotEmpty(cuMemberBonusExtList)) {
cuMemberBonusExt.setOutExchangeRate(cuMemberBonusExtList.get(0).getOutExchangeRate()); cuMemberBonusExt.setOutExchangeRate(cuMemberBonusExtList.get(0).getOutExchangeRate());
for (CuMemberBonusExt memberBonusExt : cuMemberBonusExtList) { for (CuMemberBonusExt memberBonusExt : cuMemberBonusExtList) {
cuMemberBonusService.calculateBonusTotal(cuMemberBonusExt, memberBonusExt); iCuMemberBonusService.calculateBonusTotal(cuMemberBonusExt, memberBonusExt);
} }
} }
cuMemberBonusExtList.add(cuMemberBonusExt); cuMemberBonusExtList.add(cuMemberBonusExt);
List<CuMemberBonusVO> cuMemberBonusVoList = getBonusDetail(cuMemberBonusExtList); List<CuMemberBonusVO> cuMemberBonusVoList = getBonusDetail(cuMemberBonusExtList);
Map<String, Integer> bonusDetail = menuColumnServiceApi.queryMenuColumn("BonusDetail", SecurityUtils.getUserId()).getData(); Map<String, Integer> bonusDetail = iMenuColumnServiceApi.queryMenuColumn("BonusDetail", SecurityUtils.getUserId()).getData();
ExcelUtil<CuMemberBonusVO> util = new ExcelUtil<>(CuMemberBonusVO.class, bonusDetail); ExcelUtil<CuMemberBonusVO> util = new ExcelUtil<>(CuMemberBonusVO.class, bonusDetail);
util.exportExcel(response, cuMemberBonusVoList, "奖金明细导出"); util.exportExcel(response, cuMemberBonusVoList, "奖金明细导出");
} }
@ -183,13 +177,8 @@ public class CuMemberBonusController extends BaseController {
List<CuMemberBonusVO> cuMemberBonusVoList = new ArrayList<>(cuMemberBonusExtList.size()); List<CuMemberBonusVO> cuMemberBonusVoList = new ArrayList<>(cuMemberBonusExtList.size());
for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) { for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) {
CuMemberBonusVO cuMemberBonusVO = BeanUtil.copyProperties(cuMemberBonusExt, CuMemberBonusVO.class); CuMemberBonusVO cuMemberBonusVO = BeanUtil.copyProperties(cuMemberBonusExt, CuMemberBonusVO.class);
cuMemberBonusVO.setMemberCode(cuMemberBonusExt.getMemberCode()); cuMemberBonusVO.setMemberCode(cuMemberBonusExt.getMemberCode());
cuMemberBonusVO.setMemberName(cuMemberBonusExt.getMemberName()); cuMemberBonusVO.setMemberName(cuMemberBonusExt.getMemberName());
for (String key : CuMemberBonusVO.INCOME_ARRAY) {
ReflectUtils.invokeSetter(cuMemberBonusVO, key + BonusFieldConstants.INCOME_SUFFIX, ComputeUtil.computeMultiply(ReflectUtils.invokeGetter(cuMemberBonusExt, key), cuMemberBonusExt.getOutExchangeRate()));
}
cuMemberBonusVoList.add(cuMemberBonusVO); cuMemberBonusVoList.add(cuMemberBonusVO);
} }
return cuMemberBonusVoList; return cuMemberBonusVoList;
@ -205,7 +194,7 @@ public class CuMemberBonusController extends BaseController {
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
packageBonusParam(bonusParam); packageBonusParam(bonusParam);
startPage(); startPage();
return cuMemberBonusService.queryMemberBonusDetailSerVoByCondition(bonusParam); return iCuMemberBonusService.queryMemberBonusDetailSerVoByCondition(bonusParam);
} }
@ -217,18 +206,14 @@ public class CuMemberBonusController extends BaseController {
public void exportBonusSource(HttpServletResponse response, BonusParam bonusParam) { public void exportBonusSource(HttpServletResponse response, BonusParam bonusParam) {
bonusParam.setPkCountry(SecurityUtils.getPkCountry()); bonusParam.setPkCountry(SecurityUtils.getPkCountry());
packageBonusParam(bonusParam); packageBonusParam(bonusParam);
TableDataInfo tableDataInfo = cuMemberBonusService.queryMemberBonusDetailSerVoByCondition(bonusParam); TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailSerVoByCondition(bonusParam);
List<MemberBonusDetailSerVO> memberBonusDetailSerVOList = (List<MemberBonusDetailSerVO>) tableDataInfo.getRows(); List<MemberBonusDetailSerVO> memberBonusDetailSerVOList = (List<MemberBonusDetailSerVO>) tableDataInfo.getRows();
// 获取需要翻译的枚举翻译 // 获取需要翻译的枚举翻译
Map<String, String> transactionMap = transactionCommonService.exportEnumTransaction(EOrderType.values(), EBonusIncomeStatus.values()); Map<Integer, String> transactionLongMap = iTransactionCommonService.exportEnumTransactionByDB(EnumsPrefixConstants.KEY_GRADE, EnumsPrefixConstants.KEY_AWARD);
Map<Integer, String> transactionLongMap = transactionCommonService.exportEnumTransactionByDB(EnumsPrefixConstants.KEY_GRADE, EnumsPrefixConstants.KEY_AWARD);
for (MemberBonusDetailSerVO memberBonusDetailSerVO : memberBonusDetailSerVOList) { for (MemberBonusDetailSerVO memberBonusDetailSerVO : memberBonusDetailSerVOList) {
if (transactionMap.containsKey(EnumsPrefixConstants.ORDER_TYPE + memberBonusDetailSerVO.getOrderType().toString())) { memberBonusDetailSerVO.setOrderTypeVal(EOrderType.getLabelByValue(memberBonusDetailSerVO.getOrderType()));
memberBonusDetailSerVO.setOrderTypeVal(transactionMap.get(EnumsPrefixConstants.ORDER_TYPE + memberBonusDetailSerVO.getOrderType())); memberBonusDetailSerVO.setIncomeStatusVal(EBonusIncomeStatus.getLabelByValue(memberBonusDetailSerVO.getIncomeStatus()));
}
if (transactionMap.containsKey(EnumsPrefixConstants.BONUS_INCOME_STATUS + memberBonusDetailSerVO.getIncomeStatus())) {
memberBonusDetailSerVO.setIncomeStatusVal(transactionMap.get(EnumsPrefixConstants.BONUS_INCOME_STATUS + memberBonusDetailSerVO.getIncomeStatus()));
}
if (transactionLongMap.containsKey(memberBonusDetailSerVO.getPkSettleGrade())) { if (transactionLongMap.containsKey(memberBonusDetailSerVO.getPkSettleGrade())) {
memberBonusDetailSerVO.setPkSettleGradeVal(transactionLongMap.get(memberBonusDetailSerVO.getPkSettleGrade())); memberBonusDetailSerVO.setPkSettleGradeVal(transactionLongMap.get(memberBonusDetailSerVO.getPkSettleGrade()));
} }
@ -236,12 +221,12 @@ public class CuMemberBonusController extends BaseController {
memberBonusDetailSerVO.setPkAwardsVal(transactionLongMap.get(memberBonusDetailSerVO.getPkAwards())); memberBonusDetailSerVO.setPkAwardsVal(transactionLongMap.get(memberBonusDetailSerVO.getPkAwards()));
} }
} }
ExcelUtil<MemberBonusDetailSerVO> util = new ExcelUtil<>(MemberBonusDetailSerVO.class, menuColumnServiceApi.queryMenuColumn("sourceBonus", SecurityUtils.getUserId()).getData()); ExcelUtil<MemberBonusDetailSerVO> util = new ExcelUtil<>(MemberBonusDetailSerVO.class, iMenuColumnServiceApi.queryMenuColumn("sourceBonus", SecurityUtils.getUserId()).getData());
util.exportExcel(response, memberBonusDetailSerVOList, "奖金来源导出"); util.exportExcel(response, memberBonusDetailSerVOList, "奖金来源导出");
} }
private void packageBonusParam(BonusParam bonusParam) { private void packageBonusParam(BonusParam bonusParam) {
UserAuthorityDTO userAuthorityDto = userServiceApi.getUserAuthority(SecurityUtils.getUserId()).getData(); UserAuthorityDTO userAuthorityDto = iUserServiceApi.getUserAuthority(SecurityUtils.getUserId()).getData();
bonusParam.setVertexList(userAuthorityDto.getUserVertexList()); bonusParam.setVertexList(userAuthorityDto.getUserVertexList());
bonusParam.setTeamList(userAuthorityDto.getUserTeamList()); bonusParam.setTeamList(userAuthorityDto.getUserTeamList());
bonusParam.setSystemType(SecurityUtils.getSystemType()); bonusParam.setSystemType(SecurityUtils.getSystemType());

View File

@ -57,7 +57,7 @@ public abstract class BonusSettleHandle {
* 获得 复购级差收益的备注 * 获得 复购级差收益的备注
* *
* @param saOrderExt 订单编号 * @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费 * @param cuMemberBonusRange
* @param sourceMemberRangeExt 提供奖金的人 * @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人 * @param targetMemberRangeExt 获得奖金的人
*/ */
@ -70,6 +70,22 @@ public abstract class BonusSettleHandle {
cuMemberBonusRange.setRemark(remark); cuMemberBonusRange.setRemark(remark);
} }
/**
* 获得 复购配送收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusDetail
* @param sourceMemberRangeExt 提供奖金的人
* @param targetMemberRangeExt 获得奖金的人
*/
protected void regionRepurRetailRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail, CuMemberRetailRangeExt sourceMemberRangeExt,
CuMemberRetailRangeExt targetMemberRangeExt) {
String remark = String.format(BonusMsgConstants.REPUR_REGION, saOrderExt.getOrderCode(),
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName());
cuMemberBonusDetail.setRemark(remark);
}
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) { Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) {
if (cuMemberBonusMap.containsKey(pkMember)) { if (cuMemberBonusMap.containsKey(pkMember)) {

View File

@ -15,9 +15,12 @@ import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.bonus.*; import com.hzs.common.domain.member.bonus.*;
import com.hzs.common.domain.member.detail.CuMemberLevel; import com.hzs.common.domain.member.detail.CuMemberLevel;
import com.hzs.common.domain.member.detail.CuMemberServiceLog; import com.hzs.common.domain.member.detail.CuMemberServiceLog;
import com.hzs.common.domain.retail.member.CuMemberRetailRegion;
import com.hzs.common.domain.sale.ext.SaOrderExt; import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderWaresExt;
import com.hzs.common.domain.sale.order.SaOrder; import com.hzs.common.domain.sale.order.SaOrder;
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.detail.ICuMemberServiceLogServiceApi; import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
import com.hzs.system.config.dto.BonusConfigDTO; import com.hzs.system.config.dto.BonusConfigDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -46,6 +49,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
@DubboReference @DubboReference
ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi; ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi;
@DubboReference
IMemberServiceApi iMemberServiceApi;
/** /**
* 日结 * 日结
@ -94,18 +99,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate); List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate);
autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel)); autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel));
// 按照血缘查询该会员所有伞上会员
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
// 会员结算mapkey会员IDvalue结算扩展 // 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 等级mapkey:等级IDvalue:等级对象 // 按照血缘查询该会员所有伞上会员
Map<Integer, BdGrade> gradeIdMap = new HashMap<>(); List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
// 等级列表
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
for (BdGrade bdGrade : retaiGradeList) {
gradeIdMap.put(bdGrade.getPkId(), bdGrade);
}
// 结算会员map处理 // 结算会员map处理
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
@ -113,8 +110,21 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
} }
// 级差收益 // 等级mapkey:等级IDvalue:等级对象
Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
// 等级列表
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
for (BdGrade bdGrade : retaiGradeList) {
gradeIdMap.put(bdGrade.getPkId(), bdGrade);
}
// 配送收益配置
Map<Integer, CuMemberRetailRegion> regionMap = iMemberServiceApi.listEffectiveRegion(settleStartDate).getData();
// 直推复购级差收益
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(); List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
// 复购配送收益
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
// 上面更新网体按会员表是否激活进行处理 // 上面更新网体按会员表是否激活进行处理
for (SaOrderExt saOrderExt : retailOrderList) { for (SaOrderExt saOrderExt : retailOrderList) {
@ -181,10 +191,18 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
tmpMemberRetailRange.setGradeName(bdGrade.getGradeName()); tmpMemberRetailRange.setGradeName(bdGrade.getGradeName());
} }
} }
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType() } else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
&& boxNum > 0) { // 复购订单
// 复购订单计算复购级差 if (boxNum > 0) {
cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt)); // 存在盒数商品计算复购级差
cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap,
bonusConfigDTO, period, saOrderExt));
}
// 计算配送收益
if (regionMap.size() != 0) {
cuMemberBonusDetailList.addAll(calculateRetailRepurRegionBonus(memberRangeExtMap, cuMemberBonusMap,
bonusConfigDTO, period, saOrderExt, regionMap));
}
} }
} }
if (cuMemberBonusRangeList.size() > 0) { if (cuMemberBonusRangeList.size() > 0) {
@ -194,6 +212,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
bonusRecordDetailVO.getCuMemberBonusRangeList().addAll(cuMemberBonusRangeList); bonusRecordDetailVO.getCuMemberBonusRangeList().addAll(cuMemberBonusRangeList);
} }
} }
if (cuMemberBonusDetailList.size() > 0) {
if (bonusRecordDetailVO.getCuMemberBonusDetailList() == null) {
bonusRecordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
} else {
bonusRecordDetailVO.getCuMemberBonusDetailList().addAll(cuMemberBonusDetailList);
}
}
// 更新网体 // 更新网体
iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap); iCuMemberRetailRangeService.updateCuMemberRetailRange(rangeTableName, memberRangeExtMap);
} }
@ -563,6 +588,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 商品盒数 // 商品盒数
BigDecimal boxNum = new BigDecimal(saOrderExt.getBoxNum()); BigDecimal boxNum = new BigDecimal(saOrderExt.getBoxNum());
// 2025.08.13 添加分公司级差收益每1盒4个产品第一分公司4元第二分公司4元公司6元总拨出14元
int branch = 0;
// 前一个会员等级 // 前一个会员等级
int beforeGradeValue = 0; int beforeGradeValue = 0;
// 前面累计奖金 // 前面累计奖金
@ -678,21 +706,72 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
memberBonusRangeList.add(cuMemberBonusRange); memberBonusRangeList.add(cuMemberBonusRange);
} }
// 2025.08.13 添加分公司级差收益每1盒4个产品第一分公司4元第二分公司4元公司6元总拨出14元
if (EGrade.BRANCH_COMPANY.getValue() == targetMemberRangeExt.getGradeValue() && branch < 2) {
// 等级是分公司 并且 发放次数小于2
this.calculateRetailRepurCompanyRangeBonus(sourceMemberRangeExt, targetMemberRangeExt, cuMemberBonusMap, bonusConfigDTO,
period, saOrderExt, boxNum, memberBonusRangeList, branch);
branch++;
} else if (EGrade.COMPANY.getValue() == targetGradeValue && branch != 3) {
// 等级是总公司
this.calculateRetailRepurCompanyRangeBonus(sourceMemberRangeExt, targetMemberRangeExt, cuMemberBonusMap, bonusConfigDTO,
period, saOrderExt, boxNum, memberBonusRangeList, branch);
branch = 3;
}
} }
return memberBonusRangeList; return memberBonusRangeList;
} }
private void calculateRetailRepurCompanyRangeBonus(CuMemberRetailRangeExt sourceMemberRangeExt, CuMemberRetailRangeExt targetMemberRangeExt,
Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period,
SaOrderExt saOrderExt, BigDecimal boxNum, List<CuMemberBonusRange> memberBonusRangeList,
int branch) {
// 2025.08.13 二级分公司一级总公司复购级差
BigDecimal calValue = BigDecimal.ZERO;
if (EGrade.BRANCH_COMPANY.getValue() == targetMemberRangeExt.getGradeValue()) {
// 分公司奖金
calValue = RetailConstants.BRANCH;
} else if (EGrade.COMPANY.getValue() == targetMemberRangeExt.getGradeValue()) {
// 总公司奖金 = 总拨出奖金 - 分公司奖金 * 分公司数量
calValue = RetailConstants.COMPANY_TOTAL.subtract(RetailConstants.BRANCH.multiply(new BigDecimal(branch)));
}
BigDecimal bonusIncome = calValue.multiply(boxNum);
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_REPURCHASE_INCOME.getValue());
// 会员级差
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount());
cuMemberBonusRange.setCalValue(calValue);
cuMemberBonusRange.setPretaxIncome(bonusIncome);
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
cuMemberBonusRange.setPkOrder(saOrderExt.getPkId());
cuMemberBonusRange.setPkOrderItems(0L);
rangeRepurRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
}
memberBonusRangeList.add(cuMemberBonusRange);
}
private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt, private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
CuMemberBonus cuMemberBonus, Integer pkBonusItems) { CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder() CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
.pkOrder(saOrderExt.getPkId()) .pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems) .pkBonusItems(pkBonusItems)
.pkBonus(cuMemberBonus.getPkId()) .pkBonus(cuMemberBonus.getPkId())
// 正常还是烧伤 .incomeStatus(targetMemberRangeExt.getIncomeStatus())
.calAchieve(saOrderExt.getOrderAchieve()) .calAchieve(saOrderExt.getOrderAchieve())
.calType(ECalType.VALUE.getValue()) .calType(ECalType.VALUE.getValue())
.calValue(BigDecimal.ZERO) .calValue(BigDecimal.ZERO)
.pretaxIncome(BigDecimal.ZERO)
.incomeTax(BigDecimal.ZERO)
.realIncome(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO) .incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO) .incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO) .orderDialRatio(BigDecimal.ZERO)
@ -702,6 +781,83 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
return cuMemberBonusRange; return cuMemberBonusRange;
} }
/**
* 计算复购配送区域收益
*/
List<CuMemberBonusDetail> calculateRetailRepurRegionBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt, Map<Integer, CuMemberRetailRegion> regionMap) {
// 复购配送区域返回数据
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
// 订单下单人自己
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
// 配送区域配置
CuMemberRetailRegion retailRegion = regionMap.get(saOrderExt.getRecCounty());
if (null != retailRegion) {
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(retailRegion.getPkMember());
// 复购配送区域收益
BigDecimal bonusIncome = BigDecimal.ZERO;
List<Integer> pkWaresList = new ArrayList<>();
for (SaOrderWaresExt saOrderWaresExt : saOrderExt.getOrderWaresExtList()) {
if (!pkWaresList.contains(saOrderWaresExt.getPkWares())) {
// 商品没有处理过则进行处理
pkWaresList.add(saOrderWaresExt.getPkWares());
// 复购区分收益 * 商品数量
bonusIncome = bonusIncome.add(saOrderWaresExt.getAreaIncome().multiply(new BigDecimal(saOrderWaresExt.getWaresQuantity())));
}
}
if (bonusIncome.compareTo(BigDecimal.ZERO) > 0) {
// 处理复购级差收益
// 会员奖金
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_REPURCHASE_DELIVERY_INCOME.getValue());
// 会员配送区域收益
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
cuMemberBonusDetail.setCalValue(BigDecimal.ZERO);
cuMemberBonusDetail.setCalAchieve(BigDecimal.ZERO);
cuMemberBonusDetail.setPretaxIncome(bonusIncome);
cuMemberBonusDetail.setPkOrder(saOrderExt.getPkId());
// 备注
regionRepurRetailRemark(saOrderExt, cuMemberBonusDetail, sourceMemberRangeExt, targetMemberRangeExt);
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
cuMemberBonus.setRetailAreaIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailAreaIncome(), cuMemberBonusDetail.getPretaxIncome()));
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
}
memberBonusDetailList.add(cuMemberBonusDetail);
}
}
return memberBonusDetailList;
}
private CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
.pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems)
.pkBonus(cuMemberBonus.getPkId())
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
.calAchieve(saOrderExt.getOrderAchieve())
.calType(ECalType.VALUE.getValue())
.calValue(BigDecimal.ZERO)
.pretaxIncome(BigDecimal.ZERO)
.incomeTax(BigDecimal.ZERO)
.realIncome(BigDecimal.ZERO)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusDetail.setPkCountry(targetMemberRangeExt.getPkSettleCountry());
cuMemberBonusDetail.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusDetail;
}
/** /**
* 获取手动激活map * 获取手动激活map
* *

View File

@ -140,6 +140,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusExt.getRealIncomeTotal(), memberBonusExt.getRealIncomeTotal())); cuMemberBonusExt.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusExt.getRealIncomeTotal(), memberBonusExt.getRealIncomeTotal()));
cuMemberBonusExt.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getStoreIncome(), memberBonusExt.getStoreIncome())); cuMemberBonusExt.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getStoreIncome(), memberBonusExt.getStoreIncome()));
cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRetailRangeIncome(), memberBonusExt.getRetailRangeIncome())); cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRetailRangeIncome(), memberBonusExt.getRetailRangeIncome()));
cuMemberBonusExt.setRetailAreaIncome(ComputeUtil.computeAdd(cuMemberBonusExt.getRetailAreaIncome(), memberBonusExt.getRetailAreaIncome()));
} }
@Override @Override
@ -180,6 +181,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
cuMemberBonusExt.setHiFunIncome(BigDecimal.ZERO); cuMemberBonusExt.setHiFunIncome(BigDecimal.ZERO);
cuMemberBonusExt.setHaiFunIncome(BigDecimal.ZERO); cuMemberBonusExt.setHaiFunIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO); cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO); cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO);
return cuMemberBonusExt; return cuMemberBonusExt;
} }

View File

@ -33,7 +33,7 @@ public class BonusRecordDetailVO implements Serializable {
private List<CuMemberBonusCoach> cuMemberBonusCoachList; private List<CuMemberBonusCoach> cuMemberBonusCoachList;
/** /**
* 服务奖 嗨粉推荐奖金 创客空间直推 创客空间分享 * 服务奖
*/ */
private List<CuMemberBonusDetail> cuMemberBonusDetailList; private List<CuMemberBonusDetail> cuMemberBonusDetailList;

View File

@ -31,149 +31,29 @@ public class BonusTotalVO implements Serializable {
*/ */
private Integer pkCountry; private Integer pkCountry;
/**
* 直推收益
*/
private BigDecimal directIncomeOri;
/**
* 拓展收益
*/
private BigDecimal expandIncomeOri;
/**
* 拓展无封 (拓展收益按等级正常比例结算 拓展收益按等级正常比例结算 无封顶)
*/
private BigDecimal expandNoCappingOri;
/**
* 拓展封顶 (拓展收益按等级正常比例结算不按4-N结算根据配置的封顶值限制最大收益)
*/
private BigDecimal expandCappingOri;
/**
* 辅导收益
*/
private BigDecimal coachIncomeOri;
/**
* 分红收益
*/
private BigDecimal shareIncomeOri;
/**
* 报单收益
*/
private BigDecimal serviceIncomeOri;
/**
* 云代直推收益
*/
private BigDecimal cloudDirectIncomeOri;
/**
* 云代首购收益
*/
private BigDecimal cloudPurIncomeOri;
/**
* 云代复购收益
*/
private BigDecimal cloudRepurIncomeOri;
private BigDecimal repurPushIncomeOri;
/**
* 直推级差收益
*/
private BigDecimal retailRangeIncome;
/** /**
* 直推级差收益 * 直推级差收益
*/ */
@Excel(name = "直推级差收益", scale = 2) @Excel(name = "直推级差收益", scale = 2)
private BigDecimal retailRangeIncomeOri; private BigDecimal retailRangeIncome;
/**
* 复购级差收益
*/
private BigDecimal repurRangeIncome;
/** /**
* 复购级差收益 * 复购级差收益
*/ */
@Excel(name = "复购级差收益", scale = 2) @Excel(name = "复购级差收益", scale = 2)
private BigDecimal repurRangeIncomeOri; private BigDecimal repurRangeIncome;
/** /**
* 复购拓展收益 * 复购配送收益
*/ */
private BigDecimal repurExpandIncomeOri; @Excel(name = "复购配送收益", scale = 2)
private BigDecimal retailAreaIncome;
/**
* 复购券
*/
private BigDecimal repurCouponOri;
/**
* 复购券均分收益
*/
private BigDecimal repurCouponShareOri;
/**
* 商城重消
*/
private BigDecimal backPointsOri;
/**
* 平台服务费
*/
private BigDecimal serviceSpendOri;
/**
* 环球积分
*/
private BigDecimal globalPointsOri;
/**
* 车奖积分
*/
private BigDecimal carAwardPointsOri;
/**
* 店铺收益
*/
private BigDecimal storeIncomeOri;
/**
* 嗨粉推荐收益
*/
private BigDecimal hiFunIncomeOri;
/**
* 首购实发小计
*/
private BigDecimal purRealSubtotalOri;
/**
* 云代实发小计
*/
private BigDecimal cloudRealSubtotalOri;
/**
* 复购实发小计
*/
private BigDecimal repurRealSubtotalOri;
/**
* 复购券小计
*/
private BigDecimal repurCouponSubtotalOri;
/** /**
* 实发收益总计 * 实发收益总计
*/ */
@Excel(name = "实发收益总计", scale = 2) @Excel(name = "实发收益总计", scale = 2)
private BigDecimal realIncomeTotalOri; private BigDecimal realIncomeTotal;
/** /**
* 直推收益 * 直推收益
@ -293,10 +173,6 @@ public class BonusTotalVO implements Serializable {
*/ */
private BigDecimal repurCouponSubtotal; private BigDecimal repurCouponSubtotal;
/**
* 实发收益总计
*/
private BigDecimal realIncomeTotal;
/** /**
* 结算日期 * 结算日期

View File

@ -86,67 +86,41 @@ public class CuMemberBonusVO implements Serializable {
*/ */
private Integer grantStatus; private Integer grantStatus;
/**
* 需要转换人民币的
*/
public static final String[] INCOME_ARRAY = new String[]{
"backPoints", "retailRangeIncome", "retailSameLevelIncome", "retailAreaIncome",
"retailBenefitRangeIncome", "retailBenefitAvgIncome", "repurRangeIncome",
"retailBenefitIncome", "retailRealSubtotal", "realIncomeTotal"};
/** /**
* 直推级差收益 * 直推级差收益
*/ */
private BigDecimal retailRangeIncome;
@Excel(name = "直推级差收益", scale = 2) @Excel(name = "直推级差收益", scale = 2)
private BigDecimal retailRangeIncomeOri; private BigDecimal retailRangeIncome;
/** /**
* 复购级差收益 * 复购级差收益
*/ */
private BigDecimal repurRangeIncome;
@Excel(name = "复购级差收益", scale = 2) @Excel(name = "复购级差收益", scale = 2)
private BigDecimal repurRangeIncomeOri; private BigDecimal repurRangeIncome;
/**
* 复购配送收益
*/
@Excel(name = "复购配送收益", scale = 2)
private BigDecimal retailAreaIncome;
private BigDecimal retailSameLevelIncome; private BigDecimal retailSameLevelIncome;
/**
* 平级收益
*/
private BigDecimal retailSameLevelIncomeOri;
private BigDecimal retailAreaIncome;
/**
* 区域分红
*/
private BigDecimal retailAreaIncomeOri;
/** /**
* 新零售福利极差收益 * 新零售福利极差收益
*/ */
private BigDecimal retailBenefitRangeIncome; private BigDecimal retailBenefitRangeIncome;
private BigDecimal retailBenefitRangeIncomeOri;
/** /**
* 新零售福利平均收益 * 新零售福利平均收益
*/ */
private BigDecimal retailBenefitAvgIncome; private BigDecimal retailBenefitAvgIncome;
private BigDecimal retailBenefitAvgIncomeOri;
/** /**
* 新零售福利加权收益 * 新零售福利加权收益
*/ */
private BigDecimal retailBenefitIncome; private BigDecimal retailBenefitIncome;
private BigDecimal retailBenefitIncomeOri;
/**
* 商城重消
*/
private BigDecimal backPointsOri;
/** /**
* 商城重消 * 商城重消
*/ */
@ -157,16 +131,10 @@ public class CuMemberBonusVO implements Serializable {
*/ */
private BigDecimal retailRealSubtotal; private BigDecimal retailRealSubtotal;
private BigDecimal retailRealSubtotalOri;
/** /**
* 实发收益总计 * 实发收益总计
*/ */
@Excel(name = "实发收益总计", scale = 2) @Excel(name = "实发收益总计", scale = 2)
private BigDecimal realIncomeTotalOri;
/**
* 实发收益总计
*/
private BigDecimal realIncomeTotal; private BigDecimal realIncomeTotal;
} }

View File

@ -83,12 +83,12 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
// */ // */
// @BigDecimalFormat // @BigDecimalFormat
// private BigDecimal retailSameLevelIncome; // private BigDecimal retailSameLevelIncome;
//
// /** /**
// * 新零售区域分红 * 复购配送收益
// */ */
// @BigDecimalFormat @BigDecimalFormat
// private BigDecimal retailAreaIncome; private BigDecimal retailAreaIncome;
/** /**
* 新零售收益小计 * 新零售收益小计

View File

@ -61,6 +61,9 @@
<result column="PK_VERTEX" property="pkVertex"/> <result column="PK_VERTEX" property="pkVertex"/>
<result column="SERVICE_CODE" property="serviceCode"/> <result column="SERVICE_CODE" property="serviceCode"/>
<result column="NICK_NAME" property="nickName"/> <result column="NICK_NAME" property="nickName"/>
<result column="retail_range_income" property="retailRangeIncome"/>
<result column="retail_area_income" property="retailAreaIncome"/>
<result column="retail_real_subtotal" property="retailRealSubtotal"/>
</resultMap> </resultMap>
<update id="updateCuMemberBonusStatus"> <update id="updateCuMemberBonusStatus">
@ -83,7 +86,7 @@
<insert id="batchInsertCuMemberBonus"> <insert id="batchInsertCuMemberBonus">
merge into cu_member_bonus cb merge into cu_member_bonus cb
using( using (
select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping, select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend, expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal, pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
@ -92,8 +95,10 @@
car_award_points,store_income,hi_fun_income,hai_fun_income, car_award_points,store_income,hi_fun_income,hai_fun_income,
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total, maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income, pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income,
retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income, retail_area_income,
retail_real_subtotal from( retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,
retail_real_subtotal
from (
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union "> <foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate,jdbcType=INTEGER} pk_rate, select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate,jdbcType=INTEGER} pk_rate,
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping, #{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
@ -110,13 +115,14 @@
#{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal,#{item.realIncomeTotal} real_income_total, #{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal,#{item.realIncomeTotal} real_income_total,
#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,#{item.grantStatus} grant_status,#{item.incomeStatus} income_status, #{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,#{item.grantStatus} grant_status,#{item.incomeStatus} income_status,
#{item.retailRangeIncome} retail_range_income,#{item.retailSameLevelIncome} retail_same_level_income, #{item.retailRangeIncome} retail_range_income,#{item.retailSameLevelIncome} retail_same_level_income,
#{item.retailAreaIncome} retail_area_income,#{item.retailBenefitRangeIncome} retail_benefit_range_income, #{item.retailAreaIncome} retail_area_income,
#{item.retailBenefitRangeIncome} retail_benefit_range_income,
#{item.retailBenefitAvgIncome} retail_benefit_avg_income,#{item.retailBenefitIncome} retail_benefit_income, #{item.retailBenefitAvgIncome} retail_benefit_avg_income,#{item.retailBenefitIncome} retail_benefit_income,
#{item.retailRealSubtotal} retail_real_subtotal from dual #{item.retailRealSubtotal} retail_real_subtotal from dual
</foreach>) )b </foreach>) )b
on (cb.pk_member=b.pk_member and cb.period=b.period) on (cb.pk_member=b.pk_member and cb.period=b.period)
WHEN NOT MATCHED THEN WHEN NOT MATCHED THEN
insert(pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping, insert (pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend, expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal, pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal, cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
@ -124,9 +130,10 @@
car_award_points,store_income,hi_fun_income,hai_fun_income, car_award_points,store_income,hi_fun_income,hai_fun_income,
maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total, maker_direct_income,maker_share_income,maker_real_subtotal,real_income_total,
pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income, pk_country,pk_creator,grant_status,income_status,retail_range_income,retail_same_level_income,
retail_area_income,retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income, retail_area_income,
retail_benefit_range_income,retail_benefit_avg_income,retail_benefit_income,
retail_real_subtotal) retail_real_subtotal)
values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping, values (b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping,
b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend, b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend,
b.pur_real_subtotal,b.repur_push_income,b.repur_range_income,b.repur_expand_income,b.repur_real_subtotal, b.pur_real_subtotal,b.repur_push_income,b.repur_range_income,b.repur_expand_income,b.repur_real_subtotal,
b.cloud_direct_income,b.cloud_pur_income,b.cloud_repur_income,b.cloud_real_subtotal, b.cloud_direct_income,b.cloud_pur_income,b.cloud_repur_income,b.cloud_real_subtotal,
@ -134,7 +141,8 @@
b.car_award_points,b.store_income,b.hi_fun_income,b.hai_fun_income, b.car_award_points,b.store_income,b.hi_fun_income,b.hai_fun_income,
b.maker_direct_income,b.maker_share_income,b.maker_real_subtotal,b.real_income_total, b.maker_direct_income,b.maker_share_income,b.maker_real_subtotal,b.real_income_total,
b.pk_country,b.pk_creator,b.grant_status,b.income_status,b.retail_range_income,b.retail_same_level_income, b.pk_country,b.pk_creator,b.grant_status,b.income_status,b.retail_range_income,b.retail_same_level_income,
b.retail_area_income,b.retail_benefit_range_income,b.retail_benefit_avg_income,b.retail_benefit_income, b.retail_area_income,
b.retail_benefit_range_income,b.retail_benefit_avg_income,b.retail_benefit_income,
b.retail_real_subtotal) b.retail_real_subtotal)
</insert> </insert>
@ -190,6 +198,7 @@
select tmp.settle_date, select tmp.settle_date,
sum(tmp.repur_range_income) repur_range_income, sum(tmp.repur_range_income) repur_range_income,
sum(tmp.retail_range_income) retail_range_income, sum(tmp.retail_range_income) retail_range_income,
sum(tmp.retail_area_income) retail_area_income,
sum(tmp.retail_real_subtotal) retail_real_subtotal, sum(tmp.retail_real_subtotal) retail_real_subtotal,
sum(tmp.real_income_total) real_income_total sum(tmp.real_income_total) real_income_total
from (select case from (select case
@ -202,6 +211,7 @@
end settle_date, end settle_date,
cb.repur_range_income, cb.repur_range_income,
cb.retail_range_income, cb.retail_range_income,
cb.retail_area_income,
cb.retail_real_subtotal, cb.retail_real_subtotal,
cb.real_income_total cb.real_income_total
from CU_MEMBER_BONUS cb from CU_MEMBER_BONUS cb
@ -230,12 +240,16 @@
bv.vertex_name, ct.team_name, bv.vertex_name, ct.team_name,
cb.period,cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping, cb.period,cp.settle_date,cb.direct_income,cb.expand_income,cb.expand_no_capping,
cb.expand_capping,cb.coach_income,cb.share_income,cb.service_income,cb.back_points,cb.service_spend, cb.expand_capping,cb.coach_income,cb.share_income,cb.service_income,cb.back_points,cb.service_spend,
cb.pur_real_subtotal,cb.repur_push_income,cb.repur_range_income,cb.repur_expand_income,cb.repur_real_subtotal, cb.pur_real_subtotal,cb.repur_push_income,
cb.repur_range_income,
cb.repur_expand_income,cb.repur_real_subtotal,
cb.cloud_direct_income,cb.cloud_pur_income,cb.cloud_repur_income,cb.cloud_real_subtotal, cb.cloud_direct_income,cb.cloud_pur_income,cb.cloud_repur_income,cb.cloud_real_subtotal,
cb.repur_coupon,cb.repur_coupon_share,cb.repur_coupon_subtotal,cb.store_income, cb.repur_coupon,cb.repur_coupon_share,cb.repur_coupon_subtotal,cb.store_income,
cb.maker_direct_income,cb.maker_share_income,cb.maker_real_subtotal,cb.hai_fun_income, cb.maker_direct_income,cb.maker_share_income,cb.maker_real_subtotal,cb.hai_fun_income,
cb.global_points,cb.car_award_points,cb.hi_fun_income,cb.pk_rate,bc.out_exchange_rate, cb.global_points,cb.car_award_points,cb.hi_fun_income,cb.pk_rate,bc.out_exchange_rate,
cb.retail_range_income,cb.retail_same_level_income,cb.retail_area_income, cb.retail_range_income,
cb.retail_area_income,
cb.retail_same_level_income,
cb.retail_benefit_range_income,cb.retail_benefit_avg_income, cb.retail_benefit_range_income,cb.retail_benefit_avg_income,
cb.retail_benefit_income,cb.retail_real_subtotal, cb.retail_benefit_income,cb.retail_real_subtotal,
cb.real_income_total, cb.real_income_total,
@ -324,7 +338,6 @@
nvl(sum(cb.service_spend),0) service_spend, nvl(sum(cb.service_spend),0) service_spend,
nvl(sum(cb.pur_real_subtotal),0) pur_real_subtotal, nvl(sum(cb.pur_real_subtotal),0) pur_real_subtotal,
nvl(sum(cb.repur_push_income),0) repur_push_income, nvl(sum(cb.repur_push_income),0) repur_push_income,
nvl(sum(cb.repur_range_income),0) repur_range_income,
nvl(sum(cb.repur_expand_income),0) repur_expand_income, nvl(sum(cb.repur_expand_income),0) repur_expand_income,
nvl(sum(cb.repur_real_subtotal),0) repur_real_subtotal, nvl(sum(cb.repur_real_subtotal),0) repur_real_subtotal,
nvl(sum(cb.cloud_direct_income),0) cloud_direct_income, nvl(sum(cb.cloud_direct_income),0) cloud_direct_income,
@ -342,7 +355,9 @@
nvl(sum(cb.global_points),0) global_points, nvl(sum(cb.global_points),0) global_points,
nvl(sum(cb.car_award_points),0) car_award_points, nvl(sum(cb.car_award_points),0) car_award_points,
nvl(sum(cb.hi_fun_income),0) hi_fun_income, nvl(sum(cb.hi_fun_income),0) hi_fun_income,
nvl(sum(cb.repur_range_income),0) repur_range_income,
nvl(sum(cb.retail_range_income),0) retail_range_income, nvl(sum(cb.retail_range_income),0) retail_range_income,
nvl(sum(cb.retail_area_income),0) retail_area_income,
bc.out_exchange_rate, bc.out_exchange_rate,
nvl(sum(cb.real_income_total),0) real_income_total nvl(sum(cb.real_income_total),0) real_income_total
from cu_member_bonus cb from cu_member_bonus cb
@ -419,17 +434,18 @@
sum(cb.expand_no_capping) expand_no_capping,sum(cb.expand_capping) expand_capping,sum(cb.coach_income) coach_income, sum(cb.expand_no_capping) expand_no_capping,sum(cb.expand_capping) expand_capping,sum(cb.coach_income) coach_income,
sum(cb.share_income) share_income,sum(cb.service_income) service_income,sum(cb.back_points) back_points, sum(cb.share_income) share_income,sum(cb.service_income) service_income,sum(cb.back_points) back_points,
sum(cb.service_spend) service_spend,sum(cb.pur_real_subtotal) pur_real_subtotal, sum(cb.service_spend) service_spend,sum(cb.pur_real_subtotal) pur_real_subtotal,
sum(cb.repur_push_income) repur_push_income,sum(cb.repur_range_income) repur_range_income, sum(cb.repur_push_income) repur_push_income,
sum(cb.repur_expand_income) repur_expand_income,sum(cb.repur_real_subtotal) repur_real_subtotal,sum(cb.cloud_direct_income) sum(cb.repur_range_income) repur_range_income,
cloud_direct_income, sum(cb.repur_expand_income) repur_expand_income,sum(cb.repur_real_subtotal) repur_real_subtotal,sum(cb.cloud_direct_income) cloud_direct_income,
sum(cb.cloud_pur_income) cloud_pur_income,sum(cb.cloud_repur_income) cloud_repur_income,sum(cb.cloud_real_subtotal) cloud_real_subtotal, sum(cb.cloud_pur_income) cloud_pur_income,sum(cb.cloud_repur_income) cloud_repur_income,sum(cb.cloud_real_subtotal) cloud_real_subtotal,
sum(cb.repur_coupon) repur_coupon,sum(repur_coupon_share) repur_coupon_share, sum(cb.repur_coupon) repur_coupon,sum(repur_coupon_share) repur_coupon_share,
sum(cb.repur_coupon_subtotal) repur_coupon_subtotal,sum(cb.global_points) global_points, sum(cb.repur_coupon_subtotal) repur_coupon_subtotal,sum(cb.global_points) global_points,
sum(cb.car_award_points) car_award_points,sum(cb.hi_fun_income) hi_fun_income, sum(cb.car_award_points) car_award_points,sum(cb.hi_fun_income) hi_fun_income,
sum(store_income) store_income,sum(cb.maker_direct_income) maker_direct_income, sum(store_income) store_income,sum(cb.maker_direct_income) maker_direct_income,
sum(cb.maker_share_income) maker_share_income,sum(cb.maker_real_subtotal) maker_real_subtotal, sum(cb.maker_share_income) maker_share_income,sum(cb.maker_real_subtotal) maker_real_subtotal,
sum(cb.retail_range_income) retail_range_income,sum(cb.retail_same_level_income) retail_same_level_income, sum(cb.retail_range_income) retail_range_income,
sum(cb.retail_area_income) retail_area_income, sum(cb.retail_area_income) retail_area_income,
sum(cb.retail_same_level_income) retail_same_level_income,
sum(cb.retail_benefit_range_income) retail_benefit_range_income,sum(cb.retail_benefit_avg_income) retail_benefit_avg_income, sum(cb.retail_benefit_range_income) retail_benefit_range_income,sum(cb.retail_benefit_avg_income) retail_benefit_avg_income,
sum(cb.retail_benefit_income) retail_benefit_income,sum(cb.retail_real_subtotal) retail_real_subtotal, sum(cb.retail_benefit_income) retail_benefit_income,sum(cb.retail_real_subtotal) retail_real_subtotal,
sum(cb.real_income_total) real_income_total from cu_member_bonus cb sum(cb.real_income_total) real_income_total from cu_member_bonus cb

View File

@ -124,6 +124,67 @@
left join bd_wares bw left join bd_wares bw
on bw.pk_id = st.pk_wares and bw.del_flag = 0 on bw.pk_id = st.pk_wares and bw.del_flag = 0
where so.order_status = 1 where so.order_status = 1
and so.order_type in (41, 42)
<if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode}
</if>
and so.pay_time >= #{startDate}
and so.pay_time &lt; #{endDate}
union
select so.pk_id,
so.pk_member,
so.order_code,
so.order_type,
so.pk_rate,
so.rec_province,
so.rec_city,
so.rec_county,
so.order_amount,
so.order_achieve,
so.order_ass_achieve,
so.upload_achieve,
so.pk_reference,
so.pk_vertex,
so.pk_country,
so.del_flag,
so.pay_time,
so.pk_creator,
so.consume_amount,
so.box_num,
0 pk_grade,
soi.items_id,
soi.pk_order,
soi.pk_wares,
soi.wares_price,
nvl(bw.wares_code, '~') wares_code,
soi.wares_quantity,
nvl(bw.area_income, 0) area_income
from sa_order so
left join (
select max(soi.pk_id) items_id,
nvl(soi.pk_order, 0) pk_order,
nvl(soi.pk_wares, 0) pk_wares,
sum(soi.achievement * soi.quantity) wares_price,
max(soi.wares_quantity) wares_quantity
from sa_order so
left join sa_order_items soi
on soi.pk_order = so.pk_id
and soi.is_gift = 1
where so.order_status = 1
and so.order_type in (43)
<if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode}
</if>
and so.pay_time >= #{startDate}
and so.pay_time &lt; #{endDate}
group by soi.pk_order, soi.pk_wares
) soi
on soi.pk_order = so.pk_id
left join bd_wares bw
on bw.pk_id = soi.pk_wares
and bw.del_flag = 0
where so.order_status = 1
and so.order_type in (43)
<if test="orderCode != null and orderCode != ''"> <if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode} and so.order_code=#{orderCode}
</if> </if>

View File

@ -1,5 +1,6 @@
package com.hzs.member.base.provider; package com.hzs.member.base.provider;
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.ELoginType; import com.hzs.common.core.enums.ELoginType;
import com.hzs.common.core.utils.StringUtils; import com.hzs.common.core.utils.StringUtils;
@ -7,6 +8,7 @@ import com.hzs.common.domain.member.base.CuMember;
import com.hzs.common.domain.member.base.CuMemberRegister; import com.hzs.common.domain.member.base.CuMemberRegister;
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.retail.member.CuMemberRetailRegion;
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;
import com.hzs.member.account.dto.BusinessCommissionDTO; import com.hzs.member.account.dto.BusinessCommissionDTO;
@ -17,11 +19,14 @@ import com.hzs.member.base.service.*;
import com.hzs.member.base.IMemberServiceApi; import com.hzs.member.base.IMemberServiceApi;
import com.hzs.member.empty.service.ICuMemberEmptyCodeService; import com.hzs.member.empty.service.ICuMemberEmptyCodeService;
import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam; import com.hzs.member.handlebusiness.dto.AnalysisBusinessAppealParam;
import com.hzs.retail.member.service.ICuMemberRetailRegionService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
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.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;
@ -40,6 +45,8 @@ public class MemberServiceProvider implements IMemberServiceApi {
private ICuMemberRegisterService iCuMemberRegisterService; private ICuMemberRegisterService iCuMemberRegisterService;
@Autowired @Autowired
private ICuMemberEmptyCodeService iCuMemberEmptyCodeService; private ICuMemberEmptyCodeService iCuMemberEmptyCodeService;
@Autowired
private ICuMemberRetailRegionService iCuMemberRetailRegionService;
@Override @Override
public R<LoginMember> getMemberInfo(String memberCode) { public R<LoginMember> getMemberInfo(String memberCode) {
@ -362,4 +369,18 @@ public class MemberServiceProvider implements IMemberServiceApi {
} }
} }
@Override
public R<Map<Integer, CuMemberRetailRegion>> listEffectiveRegion(Date queryDate) {
Map<Integer, CuMemberRetailRegion> regionMap = new HashMap<>();
List<CuMemberRetailRegion> retailRegionList = iCuMemberRetailRegionService.listEffectiveRegion(queryDate);
if (CollectionUtil.isNotEmpty(retailRegionList)) {
for (CuMemberRetailRegion retailRegion : retailRegionList) {
regionMap.put(retailRegion.getCounty(), retailRegion);
}
}
return R.ok(regionMap);
}
} }

View File

@ -7,6 +7,7 @@ import com.hzs.common.domain.system.base.BdArea;
import com.hzs.retail.member.vo.UnboundAreaVO; import com.hzs.retail.member.vo.UnboundAreaVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -25,9 +26,11 @@ public interface CuMemberRetailRegionMapper extends BaseMapper<CuMemberRetailReg
CuMemberRetailRegionExt getRegionByMember(@Param("pkMember") Long pkMember, CuMemberRetailRegionExt getRegionByMember(@Param("pkMember") Long pkMember,
@Param("gradeValue") Integer gradeValue, @Param("gradeValue") Integer gradeValue,
@Param("systemType") Integer systemType); @Param("systemType") Integer systemType);
List<CuMemberRetailRegionExt> getRegionByMemberList(@Param("pkMember") Long pkMember, List<CuMemberRetailRegionExt> getRegionByMemberList(@Param("pkMember") Long pkMember,
@Param("gradeValue") Integer gradeValue, @Param("gradeValue") Integer gradeValue,
@Param("systemType") Integer systemType); @Param("systemType") Integer systemType);
/** /**
* 插入收益区域 * 插入收益区域
* *
@ -47,18 +50,6 @@ public interface CuMemberRetailRegionMapper extends BaseMapper<CuMemberRetailReg
**/ **/
List<CuMemberRetailRegionExt> memberretailRegList(CuMemberRetailRegionExt mrrExt); List<CuMemberRetailRegionExt> memberretailRegList(CuMemberRetailRegionExt mrrExt);
/**
* 会员购买订单数量
*
* @param pkMember 会员ID
* @param systemType 系统类型
* @param waresCodeList 商品列表
* @return
*/
int getOrderCount(@Param("pkMember") Long pkMember,
@Param("systemType") Integer systemType,
@Param("waresCodeList") List<String> waresCodeList);
List<BdArea> getRegionTreeList(@Param("queryType") String queryType, @Param("userId") Long userId); List<BdArea> getRegionTreeList(@Param("queryType") String queryType, @Param("userId") Long userId);
/** /**
@ -69,4 +60,12 @@ public interface CuMemberRetailRegionMapper extends BaseMapper<CuMemberRetailReg
*/ */
int mergeMemberRetailRegion(@Param("retailRegion") CuMemberRetailRegion retailRegion); int mergeMemberRetailRegion(@Param("retailRegion") CuMemberRetailRegion retailRegion);
/**
* 有效区域列表
*
* @param queryDate
* @return
*/
List<CuMemberRetailRegion> listEffectiveRegion(@Param("queryDate") Date queryDate);
} }

View File

@ -8,6 +8,7 @@ import com.hzs.common.domain.system.base.BdArea;
import com.hzs.retail.member.param.RetailMemberRegionParam; import com.hzs.retail.member.param.RetailMemberRegionParam;
import com.hzs.retail.member.vo.UnboundAreaVO; import com.hzs.retail.member.vo.UnboundAreaVO;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -44,16 +45,6 @@ public interface ICuMemberRetailRegionService extends IService<CuMemberRetailReg
**/ **/
List<CuMemberRetailRegionExt> memberretailRegList(CuMemberRetailRegionExt mrrExt); List<CuMemberRetailRegionExt> memberretailRegList(CuMemberRetailRegionExt mrrExt);
/**
* 会员购买订单数量
*
* @param pkMember 会员ID
* @param systemType 系统类型
* @param waresCodeList 商品列表
* @return
*/
int getOrderCount(Long pkMember, Integer systemType, List<String> waresCodeList);
/** /**
* 查询可选收益区域树结构 入参常量为 RetailRegionTreeQueryConstants * 查询可选收益区域树结构 入参常量为 RetailRegionTreeQueryConstants
* *
@ -72,4 +63,12 @@ public interface ICuMemberRetailRegionService extends IService<CuMemberRetailReg
*/ */
int mergeMemberRetailRegion(CuMemberRetailRegion retailRegion); int mergeMemberRetailRegion(CuMemberRetailRegion retailRegion);
/**
* 有效区域列表
*
* @param queryDate
* @return
*/
List<CuMemberRetailRegion> listEffectiveRegion(Date queryDate);
} }

View File

@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -97,11 +96,6 @@ public class CuMemberRetailRegionServiceImpl extends ServiceImpl<CuMemberRetailR
return baseMapper.memberretailRegList(mrrExt); return baseMapper.memberretailRegList(mrrExt);
} }
@Override
public int getOrderCount(Long pkMember, Integer systemType, List<String> waresCodeList) {
return baseMapper.getOrderCount(pkMember, systemType, waresCodeList);
}
@Override @Override
public List<Tree<String>> getRegionTreeList(String queryType, Long pkMember) { public List<Tree<String>> getRegionTreeList(String queryType, Long pkMember) {
List<BdArea> areaList = baseMapper.getRegionTreeList(queryType, pkMember); List<BdArea> areaList = baseMapper.getRegionTreeList(queryType, pkMember);
@ -173,4 +167,9 @@ public class CuMemberRetailRegionServiceImpl extends ServiceImpl<CuMemberRetailR
return baseMapper.mergeMemberRetailRegion(retailRegion); return baseMapper.mergeMemberRetailRegion(retailRegion);
} }
@Override
public List<CuMemberRetailRegion> listEffectiveRegion(Date queryDate) {
return baseMapper.listEffectiveRegion(queryDate);
}
} }

View File

@ -175,29 +175,6 @@
order by CRR.CREATION_TIME desc order by CRR.CREATION_TIME desc
</select> </select>
<!-- 会员购买订单数量 -->
<select id="getOrderCount" resultType="int">
select count(1)
from sa_order so
left join sa_order_items soi
on soi.pk_order = so.pk_id
and soi.del_flag = 0
and soi.is_gift = 1
left join bd_wares bw
on bw.pk_id = soi.pk_wares
and bw.del_flag = 0
and bw.system_type = so.system_type
where so.del_flag = 0
and so.order_status = 1
and so.pk_member = #{pkMember}
and so.order_type in (41, 42, 43)
and so.system_type = #{systemType}
and bw.wares_code in
<foreach collection="waresCodeList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select>
<select id="getRegionTreeList" resultType="com.hzs.common.domain.system.base.BdArea"> <select id="getRegionTreeList" resultType="com.hzs.common.domain.system.base.BdArea">
SELECT SELECT
pr.*, pr.*,
@ -307,4 +284,14 @@
tmp.pk_member) tmp.pk_member)
</update> </update>
<!-- 有效区域列表 -->
<select id="listEffectiveRegion" resultType="com.hzs.common.domain.retail.member.CuMemberRetailRegion">
select cmrr.*
from CU_MEMBER_RETAIL_REGION cmrr
where cmrr.del_flag = 0
and cmrr.effective = 0
and cmrr.business_type = 2
and cmrr.effective_end_date >= #{queryDate}
</select>
</mapper> </mapper>

View File

@ -665,7 +665,7 @@ public class ApiOrderController extends BaseController {
myOrder.setRecCounty(recCounty); myOrder.setRecCounty(recCounty);
} }
myOrder.setAddress(saOrder.getRecAddress()); myOrder.setAddress(saOrder.getRecAddress());
myOrder.setOrderTypeVal(EOrderType.getEnumLabelByValue(myOrder.getOrderType())); myOrder.setOrderTypeVal(EOrderType.getLabelByValue(myOrder.getOrderType()));
myOrder.setOrderStatusVal(EOrderStatus.getLabelByValue(saOrderItems.getOrderStatus())); myOrder.setOrderStatusVal(EOrderStatus.getLabelByValue(saOrderItems.getOrderStatus()));
// 处理订单明细 // 处理订单明细

View File

@ -561,10 +561,6 @@ public class EnumsInitController {
initList.add(this.createData(value.getKey(), value.getLabel())); initList.add(this.createData(value.getKey(), value.getLabel()));
} }
for (EBonusIncomeStatus value : EBonusIncomeStatus.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
// 数据类型(推荐) // 数据类型(推荐)
for (ERecommendDadaType value : ERecommendDadaType.values()) { for (ERecommendDadaType value : ERecommendDadaType.values()) {
initList.add(this.createData(value.getKey(), value.getLabel())); initList.add(this.createData(value.getKey(), value.getLabel()));

View File

@ -44,9 +44,4 @@ public class BonusFieldConstants {
public static final String IS_WITHDRAWAL = "IS_WITHDRAWAL"; public static final String IS_WITHDRAWAL = "IS_WITHDRAWAL";
/**
* 人民币收益后缀
*/
public static final String INCOME_SUFFIX = "Ori";
} }

View File

@ -14,6 +14,17 @@ public class RetailConstants {
*/ */
public static final Integer PICK_BASE = 4; public static final Integer PICK_BASE = 4;
/**
* 2025.08.13 添加分公司级差收益每1盒4个产品
* 第一分公司4元
* 第二分公司4元
* 公司6元
* 总拨出14元
*/
public static final BigDecimal BRANCH = new BigDecimal("4");
public static final BigDecimal COMPANY_TOTAL = new BigDecimal("14");
/** /**
* 会员 会员 60 * 会员 会员 60
* VIP 会员 80 * VIP 会员 80

View File

@ -20,6 +20,11 @@ public class BonusMsgConstants {
*/ */
public static String REPUR_RANGE = "订单编号%s,%s为%s贡献了复购级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。"; public static String REPUR_RANGE = "订单编号%s,%s为%s贡献了复购级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。";
/**
* 复购配送收益说明
*/
public static String REPUR_REGION = "订单编号%s,%s为%s贡献了复购配送收益。";
/** /**
* 奖金重算 -- 只能重算7天内的奖金 * 奖金重算 -- 只能重算7天内的奖金
*/ */

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.enums; package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@ -14,17 +13,17 @@ public enum EBonusIncomeStatus {
/** /**
* 正常 * 正常
*/ */
NORMAL(0, "正常", 0, EnumsPrefixConstants.BONUS_INCOME_STATUS + "0"), NORMAL(0, "正常", 0),
/** /**
* 停收 * 停收
*/ */
STOP_INCOME(1, "停收", 0, EnumsPrefixConstants.BONUS_INCOME_STATUS + "1"), STOP_INCOME(1, "停收", 0),
/** /**
* 烧伤 * 烧伤
*/ */
FIRE_BURN(2, "烧伤", 0, EnumsPrefixConstants.BONUS_INCOME_STATUS + "2"), FIRE_BURN(2, "烧伤", 0),
; ;
@ -40,8 +39,17 @@ public enum EBonusIncomeStatus {
* 是否启用0=,1= -- 来源EYesNo * 是否启用0=,1= -- 来源EYesNo
*/ */
private final int enable; private final int enable;
/**
* 国际化翻译key值 public static String getLabelByValue(Integer value) {
*/ if (null == value) {
private final String key; return "";
}
for (EOrderType enums : EOrderType.values()) {
if (enums.getValue() == value) {
return enums.getLabel();
}
}
return "";
}
} }

View File

@ -1,6 +1,5 @@
package com.hzs.common.core.enums; package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@ -59,13 +58,17 @@ public enum EBonusItems {
////////////////////////////////////////////////// 新奖项 ////////////////////////////////////////////////// ////////////////////////////////////////////////// 新奖项 //////////////////////////////////////////////////
/** /**
* 直推级差收益 -- 秒结日奖 * 直推级差收益 -- 日奖
*/ */
RETAIL_RANGE_INCOME(25, "直推级差收益", 0), RETAIL_RANGE_INCOME(25, "直推级差收益", 0),
/** /**
* 复购级差收益 -- 秒结日奖 * 复购级差收益 -- 日奖
*/ */
RETAIL_REPURCHASE_INCOME(35, "复购级差收益", 0), RETAIL_REPURCHASE_INCOME(35, "复购级差收益", 0),
/**
* 复购配送收益 -- 日奖
*/
RETAIL_REPURCHASE_DELIVERY_INCOME(36, "复购配送收益", 0),
; ;

View File

@ -6,12 +6,6 @@ import lombok.Getter;
/** /**
* 计算类型 * 计算类型
*
* @author: sui q
* @time: 2022/8/25 15:09
* @description:
* @classname: ECalType
* @package_name: com.hzs.common.core.enums
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter

View File

@ -104,21 +104,6 @@ public enum EOrderType {
return null; return null;
} }
/**
* 根据值返回显示
*
* @param value
* @return
*/
public static String getEnumLabelByValue(int value) {
for (EOrderType eOrderType : EOrderType.values()) {
if (eOrderType.getValue() == value) {
return eOrderType.getLabel();
}
}
return "";
}
public static List<EOrderType> getOrderTypeSpecial() { public static List<EOrderType> getOrderTypeSpecial() {
List<EOrderType> resultList = new ArrayList<>(); List<EOrderType> resultList = new ArrayList<>();
resultList.add(EOrderType.REGISTER_ORDER); resultList.add(EOrderType.REGISTER_ORDER);
@ -126,6 +111,7 @@ public enum EOrderType {
resultList.add(EOrderType.REPURCHASE_ORDER); resultList.add(EOrderType.REPURCHASE_ORDER);
return resultList; return resultList;
} }
public static String getLabelByValue(Integer value) { public static String getLabelByValue(Integer value) {
if (null == value) { if (null == value) {
return ""; return "";

View File

@ -236,7 +236,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal retailSameLevelIncome; private BigDecimal retailSameLevelIncome;
/** /**
* 新零售区域分红 * 复购配送收益
*/ */
@TableField("RETAIL_AREA_INCOME") @TableField("RETAIL_AREA_INCOME")
private BigDecimal retailAreaIncome; private BigDecimal retailAreaIncome;