## 阶段奖金计算处理(未完成);

This commit is contained in:
cabbage 2025-09-18 16:56:54 +08:00
parent 56f9170d4c
commit f88ccb7cb8
23 changed files with 313 additions and 99 deletions

View File

@ -15,7 +15,6 @@ import com.hzs.common.core.enums.EOperationBusiness;
import com.hzs.common.core.enums.EOperationMethod; import com.hzs.common.core.enums.EOperationMethod;
import com.hzs.common.core.enums.EOperationModule; import com.hzs.common.core.enums.EOperationModule;
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.web.controller.BaseController; import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.core.web.domain.AjaxResult;
import com.hzs.common.core.web.page.TableDataInfo; import com.hzs.common.core.web.page.TableDataInfo;
@ -37,8 +36,6 @@ public class CuMemberSettleController extends BaseController {
@Autowired @Autowired
private ICuMemberBonusService iCuMemberBonusService; private ICuMemberBonusService iCuMemberBonusService;
@Autowired @Autowired
private IBonusSettleService iBonusSettleService;
@Autowired
private ICuMemberTreeService iCuMemberTreeService; private ICuMemberTreeService iCuMemberTreeService;
@Autowired @Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService; private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@ -48,8 +45,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 初始化奖金结算表 * 初始化奖金结算表
*
* @return AjaxResult
*/ */
@GetMapping("/init-table") @GetMapping("/init-table")
public AjaxResult initTable(String settleDate) { public AjaxResult initTable(String settleDate) {
@ -59,8 +54,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 初始化奖金结算表 * 初始化奖金结算表
*
* @return AjaxResult
*/ */
@GetMapping("/init-period") @GetMapping("/init-period")
public AjaxResult initPeriod(String settleDate) { public AjaxResult initPeriod(String settleDate) {
@ -70,8 +63,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 奖金计算 - 重新结算 * 奖金计算 - 重新结算
*
* @return AjaxResult
*/ */
@GetMapping("/settle-bonus") @GetMapping("/settle-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.INSERT) @Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.INSERT)
@ -86,8 +77,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 公布奖金 * 公布奖金
*
* @return AjaxResult
*/ */
@GetMapping("/publish-bonus") @GetMapping("/publish-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.PUBLISH) @Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.PUBLISH)
@ -102,8 +91,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 不公布奖金 * 不公布奖金
*
* @return AjaxResult
*/ */
@GetMapping("/no-publish-bonus") @GetMapping("/no-publish-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.NO_PUBLISH) @Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.NO_PUBLISH)
@ -118,8 +105,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 发放奖金 * 发放奖金
*
* @return AjaxResult
*/ */
@GetMapping("/grant-bonus") @GetMapping("/grant-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.GRANT) @Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.GRANT)
@ -134,8 +119,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 发放奖金 * 发放奖金
*
* @return AjaxResult
*/ */
@GetMapping("/grant-temp-bonus") @GetMapping("/grant-temp-bonus")
public AjaxResult grantTempBonus(Integer pkCountry, String settleDate) { public AjaxResult grantTempBonus(Integer pkCountry, String settleDate) {
@ -145,8 +128,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 发放奖金 * 发放奖金
*
* @return AjaxResult
*/ */
@GetMapping("/grant-bonus_all") @GetMapping("/grant-bonus_all")
public AjaxResult grantBonusAll() { public AjaxResult grantBonusAll() {
@ -156,8 +137,6 @@ public class CuMemberSettleController extends BaseController {
/** /**
* 奖金提现 * 奖金提现
*
* @return AjaxResult
*/ */
@GetMapping("/withdrawal-bonus") @GetMapping("/withdrawal-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.WITHDRAWAL) @Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.WITHDRAWAL)
@ -170,20 +149,6 @@ public class CuMemberSettleController extends BaseController {
return AjaxResult.success(); return AjaxResult.success();
} }
/**
* 秒接结算业绩仅用于测试
*
* @return AjaxResult
*/
@GetMapping("/settle-second-bonus")
public AjaxResult settleSecondBonus(String orderCode) {
if (StringUtils.isEmpty(orderCode)) {
return AjaxResult.error();
}
iBonusSettleService.calculateCuMemberRetailRangeBonusBySaOrder(orderCode);
return AjaxResult.success();
}
/* /*
* 查询奖金计算期数列表 * 查询奖金计算期数列表
**/ **/

View File

@ -2,10 +2,20 @@ package com.hzs.bonus.achieve.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 日结算阶段表 Mapper 接口 * 日结算阶段表 Mapper 接口
*/ */
public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDetail> { public interface CuMemberRetailDetailMapper extends BaseMapper<CuMemberRetailDetail> {
/**
* 查询明细数据指定阶段未完成的
*/
List<CuMemberRetailDetail> listMemberRetailDetail(@Param("retailDetailTableName") String retailDetailTableName,
@Param("tmpIdList") List<?> tmpIdList,
@Param("stage") Integer stage);
} }

View File

@ -1,11 +1,21 @@
package com.hzs.bonus.achieve.service; package com.hzs.bonus.achieve.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.core.enums.EBonusStage;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import java.util.List;
import java.util.Map;
/** /**
* 日结算阶段表 服务类 * 日结算阶段表 服务类
*/ */
public interface ICuMemberRetailDetailService extends IService<CuMemberRetailDetail> { public interface ICuMemberRetailDetailService extends IService<CuMemberRetailDetail> {
/**
* 根据结算会员获取对应的点位数据
*/
void listMemberRetailDetail(String retailDetailTableName, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, EBonusStage eBonusStage);
} }

View File

@ -3,13 +3,43 @@ package com.hzs.bonus.achieve.service.impl;
import com.hzs.bonus.achieve.mapper.CuMemberRetailDetailMapper; import com.hzs.bonus.achieve.mapper.CuMemberRetailDetailMapper;
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService; import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.enums.EBonusStage;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail; import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*;
/** /**
* 日结算阶段表 服务实现类 * 日结算阶段表 服务实现类
*/ */
@Service @Service
public class CuMemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetailDetailMapper, CuMemberRetailDetail> implements ICuMemberRetailDetailService { public class CuMemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetailDetailMapper, CuMemberRetailDetail> implements ICuMemberRetailDetailService {
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Override
public void listMemberRetailDetail(String retailDetailTableName, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, EBonusStage eBonusStage) {
List<List<?>> pkMemberList = cuMemberBonusSettle.handleCutList(memberRangeExtMap.keySet(), MagicNumberConstants.BATCH_QUERY_NUM);
pkMemberList.forEach(tmpIdList -> {
List<CuMemberRetailDetail> tmpList = baseMapper.listMemberRetailDetail(retailDetailTableName, tmpIdList, eBonusStage.getValue());
if (tmpList.size() > 0) {
// 明细数据放到对应的会员数据中
for (CuMemberRetailDetail cuMemberRetailDetail : tmpList) {
CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailDetail.getPkMember());
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
// 阶段一点位列表
if (null == cuMemberRetailRangeExt.getOneDetailList()) {
cuMemberRetailRangeExt.setOneDetailList(new ArrayList<>());
}
cuMemberRetailRangeExt.getOneDetailList().add(cuMemberRetailDetail);
}
}
}
});
}
} }

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.bonus.service.impl; package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.service.ICuMemberRetailDetailService;
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService; import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
import com.hzs.bonus.base.service.ICuMemberService; import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO; import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
@ -14,6 +15,7 @@ import com.hzs.common.core.enums.*;
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.domain.bonus.BdBonusDeduct; import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt; 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.*; import com.hzs.common.domain.member.detail.*;
@ -30,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -44,6 +47,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
@Autowired @Autowired
private ICuMemberRetailRangeService iCuMemberRetailRangeService; private ICuMemberRetailRangeService iCuMemberRetailRangeService;
@Autowired @Autowired
private ICuMemberRetailDetailService iCuMemberRetailDetailService;
@Autowired
private ICuMemberAwardsService iCuMemberAwardsService; private ICuMemberAwardsService iCuMemberAwardsService;
@Autowired @Autowired
private ICuMemberService iCuMemberService; private ICuMemberService iCuMemberService;
@ -269,8 +274,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 结算期间日期后一天 // 结算期间日期后一天
Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate); Date settleEndDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleStartDate);
// 新零售订单 // 新零售订单注册复购
List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null); List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()));
// 更新当月会员 将昨天业绩更到到今天更新当月会员考核结果有消费的考核通过 // 更新当月会员 将昨天业绩更到到今天更新当月会员考核结果有消费的考核通过
// 结算期间表 // 结算期间表
@ -290,16 +295,16 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (orderList.size() > 0) { if (orderList.size() > 0) {
// 按照血缘查询该会员所有伞上会员 // 按照血缘查询该会员所有伞上会员
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList); List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList);
// 会员结算mapkey会员IDvalue结算扩展 // 会员结算mapkey会员IDvalue结算扩展
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>(); Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
// 会员转map // 会员转map
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) { for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt); memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
} }
} }
// 查询血缘会员明细数据一阶段
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE);
// 奖衔 // 奖衔
Map<Integer, BdAwards> retailAwardsMap = new HashMap<>(); Map<Integer, BdAwards> retailAwardsMap = new HashMap<>();
@ -321,7 +326,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
// 直推收益 -- 来源订单金额直推拿金额的10% // 直推收益 -- 来源订单金额直推拿金额的10%
this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt, this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
bonusConfigDTO, period, cuMemberBonusMap); bonusConfigDTO, period, cuMemberBonusMap);
// TODO 阶段收益 -- 来源订单金额 // TODO 阶段收益 -- 来源订单金额
this.calculateStageIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
settleStartDate);
// TODO 领导级差收益 -- 来源PV // TODO 领导级差收益 -- 来源PV
@ -818,32 +826,6 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
cuMemberBonusPushList.add(cuMemberBonusPush); cuMemberBonusPushList.add(cuMemberBonusPush);
} }
/**
* 获取直推见点收益信息
*/
CuMemberBonusPush getCuMemberBonusPush(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusPush cuMemberBonusPush = CuMemberBonusPush.builder()
.pkBonus(cuMemberBonus.getPkId())
.pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems)
.incomeStatus(cuMemberRetailRange.getIncomeStatus())
.calType(ECalType.RATIO.getValue())
.calAchieve(BigDecimal.ZERO)
.calValue(BigDecimal.ZERO)
.pretaxIncome(BigDecimal.ZERO)
.incomeTax(BigDecimal.ZERO)
.realIncome(BigDecimal.ZERO)
.round(-1)
.second(-1)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusPush.setPkCountry(cuMemberRetailRange.getPkSettleCountry());
cuMemberBonusPush.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusPush;
}
/** /**
* 计算见点收益 -- 商城专区 * 计算见点收益 -- 商城专区
*/ */
@ -908,5 +890,98 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
} }
/**
* 获取直推见点收益信息
*/
CuMemberBonusPush getCuMemberBonusPush(SaOrderExt saOrderExt, CuMemberRetailRangeExt cuMemberRetailRange, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
CuMemberBonusPush cuMemberBonusPush = CuMemberBonusPush.builder()
.pkBonus(cuMemberBonus.getPkId())
.pkOrder(saOrderExt.getPkId())
.pkBonusItems(pkBonusItems)
.incomeStatus(cuMemberRetailRange.getIncomeStatus())
.calType(ECalType.RATIO.getValue())
.calAchieve(BigDecimal.ZERO)
.calValue(BigDecimal.ZERO)
.pretaxIncome(BigDecimal.ZERO)
.incomeTax(BigDecimal.ZERO)
.realIncome(BigDecimal.ZERO)
.round(-1)
.second(-1)
.incomeRatio(BigDecimal.ZERO)
.incomeDialRatio(BigDecimal.ZERO)
.orderDialRatio(BigDecimal.ZERO)
.build();
cuMemberBonusPush.setPkCountry(cuMemberRetailRange.getPkSettleCountry());
cuMemberBonusPush.setPkCreator(MagicNumberConstants.PK_ADMIN);
return cuMemberBonusPush;
}
/**
* 计算阶段收益 -- 精品专区
*/
private void calculateStageIncome(List<CuMemberBonusPush> cuMemberBonusPushList, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
Date settleDate) {
// 订单金额除50取整为新増点位数量
int newPointInt = saOrderExt.getOrderAmount().divide(RetailConstants.POINT_VAL, 0, RoundingMode.DOWN).intValue();
if (newPointInt == 0) {
// 当前精品专区订单不足生成点位
return;
}
// 订单会员
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
// 会员一阶段子点位列表
List<CuMemberRetailDetail> detailList = sourceMember.getOneDetailList();
if (null == detailList) {
detailList = new ArrayList<>();
sourceMember.setOneDetailList(detailList);
}
// 当前会员子点位总数
int pointCount = sourceMember.getPointCount();
for (int i = 1; i <= newPointInt; i++) {
// 订单生成的新点位
detailList.add(CuMemberRetailDetail.builder()
.pkMember(sourceMember.getPkMember())
.childNode(pointCount + i)
.pkParent(sourceMember.getPkParent())
.stage(EBonusStage.ONE.getValue())
.stage(EBonusStageStatus.NO.getValue())
.pointType(EBonusStageType.NORMAL.getValue())
.pointGift(0)
.creationTime(settleDate)
.build());
}
// 推荐人
Long pkParent = sourceMember.getPkParent();
while (true) {
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(pkParent);
if (null == targetMember) {
break;
}
// 推荐人一阶段子点位列表
List<CuMemberRetailDetail> parentDetailList = targetMember.getOneDetailList();
if (CollectionUtil.isEmpty(parentDetailList)) {
continue;
}
for (CuMemberRetailDetail cuMemberRetailDetail : parentDetailList) {
if (EBonusStageStatus.NO.getValue() == cuMemberRetailDetail.getStageStatus()) {
// 推荐人子点位未完成则进行填充
this.fillChildNode(cuMemberRetailDetail);
}
}
}
}
/**
* 填充子点位
*/
private void fillChildNode(CuMemberRetailDetail cuMemberRetailDetail) {
cuMemberRetailDetail.getPointMember11();
}
} }

View File

@ -110,7 +110,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
// 查询奖金参数 // 查询奖金参数
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData(); BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
// 需要处理的订单 // 需要处理的订单
List<SaOrderExt> retailOrderList = iBonusOrderService.listRetailSaOrder(DateUtils.beforeDate(6, ChronoUnit.DAYS), DateUtils.afterDate(1, ChronoUnit.DAYS), orderCode); List<SaOrderExt> retailOrderList = iBonusOrderService.listRetailSaOrder(DateUtils.beforeDate(6, ChronoUnit.DAYS), DateUtils.afterDate(1, ChronoUnit.DAYS), orderCode, null);
if (CollectionUtil.isNotEmpty(retailOrderList)) { if (CollectionUtil.isNotEmpty(retailOrderList)) {
// 会员奖金map // 会员奖金map

View File

@ -16,6 +16,7 @@ public interface BonusOrderMapper {
*/ */
List<SaOrderExt> listRetailSaOrder(@Param("startDate") Date startDate, List<SaOrderExt> listRetailSaOrder(@Param("startDate") Date startDate,
@Param("endDate") Date endDate, @Param("endDate") Date endDate,
@Param("orderCode") String orderCode); @Param("orderCode") String orderCode,
@Param("orderTypeList") List<Integer> orderTypeList);
} }

View File

@ -13,6 +13,6 @@ public interface IBonusOrderService {
* @param startDate 开始日期 * @param startDate 开始日期
* @param endDate 结束日期 * @param endDate 结束日期
*/ */
List<SaOrderExt> listRetailSaOrder(Date startDate, Date endDate, String orderCode); List<SaOrderExt> listRetailSaOrder(Date startDate, Date endDate, String orderCode, List<Integer> orderTypeList);
} }

View File

@ -15,8 +15,8 @@ public class BonusOrderServiceImpl implements IBonusOrderService {
private BonusOrderMapper bonusOrderMapper; private BonusOrderMapper bonusOrderMapper;
@Override @Override
public List<SaOrderExt> listRetailSaOrder(Date startDate, Date endDate, String orderCode) { public List<SaOrderExt> listRetailSaOrder(Date startDate, Date endDate, String orderCode, List<Integer> orderTypeList) {
return bonusOrderMapper.listRetailSaOrder(startDate, endDate, orderCode); return bonusOrderMapper.listRetailSaOrder(startDate, endDate, orderCode, orderTypeList);
} }
} }

View File

@ -2,5 +2,17 @@
<!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.bonus.achieve.mapper.CuMemberRetailDetailMapper"> <mapper namespace="com.hzs.bonus.achieve.mapper.CuMemberRetailDetailMapper">
<!-- 查询明细数据 -->
<select id="listMemberRetailDetail" resultType="com.hzs.common.domain.member.achieve.CuMemberRetailDetail">
select cmrd.*
from ${retailDetailTableName} cmrd
where cmrd.pk_member in
<foreach collection="tmpIdList" item="items" open="(" close=")" separator=",">
#{items}
</foreach>
and cmrd.stage = #{stage}
and cmrd.stage_status = 1
order by cmrd.pk_member, cmrd.child_node
</select>
</mapper> </mapper>

View File

@ -292,7 +292,6 @@
<update id="createCuMemberRetailDetail"> <update id="createCuMemberRetailDetail">
create table ${tableName} create table ${tableName}
( (
pk_id NUMBER(20) primary key,
pk_member NUMBER(20) not null, pk_member NUMBER(20) not null,
child_node NUMBER(8) not null, child_node NUMBER(8) not null,
pk_parent NUMBER(20) not null, pk_parent NUMBER(20) not null,
@ -335,10 +334,10 @@
<!-- 创建结算明细表会员索引 --> <!-- 创建结算明细表会员索引 -->
<update id="createCuMemberRetailDetailMemberIndex"> <update id="createCuMemberRetailDetailMemberIndex">
create index ${tableName}_MEMBER create unique index PK_${tableName}
on ${tableName} on ${tableName}
( (
PK_MEMBER PK_MEMBER, CHILD_NODE
) )
</update> </update>

View File

@ -82,6 +82,12 @@
<if test="orderCode != null and orderCode != ''"> <if test="orderCode != null and orderCode != ''">
and so.order_code=#{orderCode} and so.order_code=#{orderCode}
</if> </if>
<if test="orderTypeList != null and orderTypeList.size > 0">
and so.order_type in
<foreach collection="orderTypeList" item="items" open="(" close=")" separator=",">
#{items}
</foreach>
</if>
and so.pay_time >= #{startDate} and so.pay_time >= #{startDate}
and so.pay_time &lt; #{endDate} and so.pay_time &lt; #{endDate}
order by pay_time desc order by pay_time desc

View File

@ -129,11 +129,8 @@
) )
</update> </update>
<update id="createCuMemberTableUniqueIndex"> <update id="createCuMemberTableUniqueIndex">
create create unique index
unique index ${tableName}_PK_M
${tableName}
_
PK_M
on on
${tableName} ${tableName}
( (

View File

@ -47,16 +47,6 @@ public class MagicNumberConstants {
*/ */
public static final Long PK_ADMIN = 100000000L; public static final Long PK_ADMIN = 100000000L;
/**
* 开始血缘代
*/
public static final Integer BLOOD_GENERATION_START = 1;
/**
* 结束血缘代
*/
public static final Integer BLOOD_GENERATION_END = 10;
/** /**
* 老会员编号位数 * 老会员编号位数
*/ */

View File

@ -7,6 +7,13 @@ import java.math.BigDecimal;
*/ */
public class RetailConstants { public class RetailConstants {
/**
* 精品专区50金额为一个子点位商城专区50PV为一个子点位
* 精品专区计算点位金额 / 50余不做处理
* 商城专区计算点位累计业绩 / 50 剩下的继续累计
*/
public static final BigDecimal POINT_VAL = new BigDecimal("50");
/** /**
* 精品专区直推收益订单金额 10%商城专区见点收益20代订单PV 10% * 精品专区直推收益订单金额 10%商城专区见点收益20代订单PV 10%
*/ */

View File

@ -0,0 +1,37 @@
package com.hzs.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 阶段奖项枚举
*/
@AllArgsConstructor
@Getter
public enum EBonusStage {
/**
* 一阶段
*/
ONE(1, "一阶段"),
/**
* 二阶段
*/
TWO(2, "二阶段"),
/**
* 三阶段
*/
THREE(3, "三阶段"),
;
/**
* 实际值
*/
private final int value;
/**
* 显示标签
*/
private final String label;
}

View File

@ -0,0 +1,33 @@
package com.hzs.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 阶段状态枚举
*/
@AllArgsConstructor
@Getter
public enum EBonusStageStatus {
/**
* 已完成
*/
YES(0, "已完成"),
/**
* 未完成
*/
NO(1, "未完成"),
;
/**
* 实际值
*/
private final int value;
/**
* 显示标签
*/
private final String label;
}

View File

@ -0,0 +1,33 @@
package com.hzs.common.core.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 阶段点位类型枚举
*/
@AllArgsConstructor
@Getter
public enum EBonusStageType {
/**
* 普通点位
*/
NORMAL(0, "普通点位"),
/**
* 赠送点位
*/
GIFT(1, "赠送点位"),
;
/**
* 实际值
*/
private final int value;
/**
* 显示标签
*/
private final String label;
}

View File

@ -6,8 +6,6 @@ import lombok.Getter;
/** /**
* 删除标记枚举类 * 删除标记枚举类
*
* @author hzs
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter

View File

@ -10,24 +10,22 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.hzs.common.core.annotation.Excel; import com.hzs.common.core.annotation.Excel;
import com.hzs.common.core.web.domain.BaseEntity; import com.hzs.common.core.web.domain.BaseEntity;
import lombok.Data; import lombok.*;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
/** /**
* 日结算阶段表 * 日结算阶段表
*/ */
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@KeySequence("CU_MEMBER_RETAIL_DETAIL_SEQ")
@TableName("CU_MEMBER_RETAIL_DETAIL") @TableName("CU_MEMBER_RETAIL_DETAIL")
public class CuMemberRetailDetail { public class CuMemberRetailDetail {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableId("PK_ID")
private Long pkId;
/** /**
* 会员ID * 会员ID
*/ */

View File

@ -189,4 +189,10 @@ public class CuMemberRetailRange extends BaseEntity {
@TableField("small_team_pv") @TableField("small_team_pv")
private BigDecimal smallTeamPv; private BigDecimal smallTeamPv;
/**
* 子点位总数
*/
@TableField("point_count")
private Integer pointCount;
} }

View File

@ -1,10 +1,12 @@
package com.hzs.common.domain.member.achieve.ext; package com.hzs.common.domain.member.achieve.ext;
import com.hzs.common.domain.member.achieve.CuMemberRetailDetail;
import com.hzs.common.domain.member.achieve.CuMemberRetailRange; import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
/** /**
* 新零售极差实体 * 新零售极差实体
@ -134,4 +136,9 @@ public class CuMemberRetailRangeExt extends CuMemberRetailRange {
private BigDecimal repTeamNewPv; private BigDecimal repTeamNewPv;
// 秒结 end // 秒结 end
/**
* 阶段一点位列表
*/
private List<CuMemberRetailDetail> oneDetailList;
} }

View File

@ -50,7 +50,7 @@ public class CuMemberBonus extends BaseEntity {
private Integer pkRate; private Integer pkRate;
/** /**
* 注册直推收益 * 注册直推收益-康健
*/ */
@TableField("DIRECT_INCOME") @TableField("DIRECT_INCOME")
private BigDecimal directIncome; private BigDecimal directIncome;
@ -176,7 +176,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal repurCouponSubtotal; private BigDecimal repurCouponSubtotal;
/** /**
* 复购见点收益 * 复购见点收益-康健
*/ */
@TableField("GLOBAL_POINTS") @TableField("GLOBAL_POINTS")
private BigDecimal globalPoints; private BigDecimal globalPoints;
@ -188,7 +188,7 @@ public class CuMemberBonus extends BaseEntity {
private BigDecimal carAwardPoints; private BigDecimal carAwardPoints;
/** /**
* 店铺收益 * 注册阶段收益-康健
*/ */
@TableField("STORE_INCOME") @TableField("STORE_INCOME")
private BigDecimal storeIncome; private BigDecimal storeIncome;