Merge remote-tracking branch 'origin/dev' into test
# Conflicts: # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberRetailDetailService.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailDetailServiceImpl.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberRetailRangeServiceImpl.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/dto/BonusStageData.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/mapper/CuMemberBonusStageMapper.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleHandle.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusSettleRangeHandle.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusServiceImpl.java # bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/CuMemberBonusStageServiceImpl.java # bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberRetailRangeMapper.xml # bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberTreeMapper.xml # bd-business/bd-business-bonus/src/main/resources/mapper/bonus/bonus/CuMemberBonusStageMapper.xml # bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java # bd-business/bd-business-member/src/main/java/com/hzs/member/structure/controller/api/ApiMemberStructureController.java # bd-common/bd-common-core/src/main/java/com/hzs/common/core/constant/msg/BonusMsgConstants.java # bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/achieve/CuMemberRetailRange.java # bd-third/src/main/java/com/hzs/third/pay/service/impl/TOnlinePaymentServiceImpl.java # bd-third/src/main/resources/mapper/third/pay/TOnlinePaymentMapper.xml
This commit is contained in:
commit
05f57a36ca
|
|
@ -0,0 +1,19 @@
|
||||||
|
package com.hzs.report.order;
|
||||||
|
|
||||||
|
import com.hzs.common.core.domain.R;
|
||||||
|
import com.hzs.system.sys.dto.ApprovalBusinessResultDTO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单服务对外提供接口
|
||||||
|
*/
|
||||||
|
public interface IPerformanceSummaryServiceApi {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按天创建统计数据
|
||||||
|
*
|
||||||
|
* @param day
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
R<Boolean> createDataByDay(String day);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -39,11 +39,17 @@
|
||||||
<groupId>com.bd</groupId>
|
<groupId>com.bd</groupId>
|
||||||
<artifactId>bd-common-aop</artifactId>
|
<artifactId>bd-common-aop</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.bd</groupId>
|
<groupId>com.bd</groupId>
|
||||||
<artifactId>bd-api-bonus</artifactId>
|
<artifactId>bd-api-bonus</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.bd</groupId>
|
||||||
|
<artifactId>bd-api-report</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- rabbit mq -->
|
<!-- rabbit mq -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.amqp</groupId>
|
<groupId>org.springframework.amqp</groupId>
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@ public interface ICuMemberRetailDetailService extends IService<CuMemberRetailDet
|
||||||
/**
|
/**
|
||||||
* 根据结算会员获取对应的点位数据
|
* 根据结算会员获取对应的点位数据
|
||||||
*/
|
*/
|
||||||
void listMemberRetailDetail(String retailDetailTableName, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, EBonusStage eBonusStage);
|
void listMemberRetailDetail(String retailDetailTableName, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
|
||||||
|
EBonusStage eBonusStage, List<Long> stageMemberList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 指定会员获取对应的点位数据
|
* 指定会员获取对应的点位数据
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,14 @@ public class CuMemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetailD
|
||||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void listMemberRetailDetail(String retailDetailTableName, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, EBonusStage eBonusStage) {
|
public void listMemberRetailDetail(String retailDetailTableName, Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
|
||||||
List<List<?>> pkMemberList = cuMemberBonusSettle.handleCutList(memberRangeExtMap.keySet(), MagicNumberConstants.BATCH_QUERY_NUM);
|
EBonusStage eBonusStage, List<Long> stageMemberList) {
|
||||||
|
List<List<?>> pkMemberList;
|
||||||
|
if (CollectionUtil.isNotEmpty(stageMemberList)) {
|
||||||
|
pkMemberList = cuMemberBonusSettle.handleCutList(stageMemberList, MagicNumberConstants.BATCH_QUERY_NUM);
|
||||||
|
} else {
|
||||||
|
pkMemberList = cuMemberBonusSettle.handleCutList(memberRangeExtMap.keySet(), MagicNumberConstants.BATCH_QUERY_NUM);
|
||||||
|
}
|
||||||
pkMemberList.forEach(tmpIdList -> {
|
pkMemberList.forEach(tmpIdList -> {
|
||||||
// 查询明细数据(指定阶段,未完成的)
|
// 查询明细数据(指定阶段,未完成的)
|
||||||
List<CuMemberRetailDetail> tmpList = baseMapper.listMemberRetailDetail(retailDetailTableName, tmpIdList, eBonusStage.getValue());
|
List<CuMemberRetailDetail> tmpList = baseMapper.listMemberRetailDetail(retailDetailTableName, tmpIdList, eBonusStage.getValue());
|
||||||
|
|
@ -41,9 +47,16 @@ public class CuMemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetailD
|
||||||
if (null == cuMemberRetailRangeExt.getThreeDetailMap()) {
|
if (null == cuMemberRetailRangeExt.getThreeDetailMap()) {
|
||||||
cuMemberRetailRangeExt.setThreeDetailMap(new LinkedHashMap<>());
|
cuMemberRetailRangeExt.setThreeDetailMap(new LinkedHashMap<>());
|
||||||
}
|
}
|
||||||
|
// 使用有序map,为了后续业务处理方便
|
||||||
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
||||||
// 阶段一点位列表(使用有序map,为了后续业务处理方便)
|
// 阶段一点位列表
|
||||||
cuMemberRetailRangeExt.getOneDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
cuMemberRetailRangeExt.getOneDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
||||||
|
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
|
||||||
|
// 阶段二点位列表
|
||||||
|
cuMemberRetailRangeExt.getTwoDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
||||||
|
} else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
|
||||||
|
// 阶段三点位列表
|
||||||
|
cuMemberRetailRangeExt.getThreeDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -59,12 +72,26 @@ public class CuMemberRetailDetailServiceImpl extends ServiceImpl<CuMemberRetailD
|
||||||
// 明细数据放到对应的会员数据中
|
// 明细数据放到对应的会员数据中
|
||||||
for (CuMemberRetailDetail cuMemberRetailDetail : tmpDetailList) {
|
for (CuMemberRetailDetail cuMemberRetailDetail : tmpDetailList) {
|
||||||
CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailDetail.getPkMember());
|
CuMemberRetailRangeExt cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailDetail.getPkMember());
|
||||||
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
|
||||||
// 阶段一点位列表(使用有序map,为了后续业务处理方便)
|
// 阶段一点位列表(使用有序map,为了后续业务处理方便)
|
||||||
if (null == cuMemberRetailRangeExt.getOneDetailMap()) {
|
if (null == cuMemberRetailRangeExt.getOneDetailMap()) {
|
||||||
cuMemberRetailRangeExt.setOneDetailMap(new LinkedHashMap<>());
|
cuMemberRetailRangeExt.setOneDetailMap(new LinkedHashMap<>());
|
||||||
}
|
}
|
||||||
|
if (null == cuMemberRetailRangeExt.getTwoDetailMap()) {
|
||||||
|
cuMemberRetailRangeExt.setTwoDetailMap(new LinkedHashMap<>());
|
||||||
|
}
|
||||||
|
if (null == cuMemberRetailRangeExt.getThreeDetailMap()) {
|
||||||
|
cuMemberRetailRangeExt.setThreeDetailMap(new LinkedHashMap<>());
|
||||||
|
}
|
||||||
|
// 使用有序map,为了后续业务处理方便
|
||||||
|
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
||||||
|
// 阶段一点位列表
|
||||||
cuMemberRetailRangeExt.getOneDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
cuMemberRetailRangeExt.getOneDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
||||||
|
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
|
||||||
|
// 阶段二点位列表
|
||||||
|
cuMemberRetailRangeExt.getTwoDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
||||||
|
} else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
|
||||||
|
// 阶段三点位列表
|
||||||
|
cuMemberRetailRangeExt.getThreeDetailMap().put(cuMemberRetailDetail.getChildNode(), cuMemberRetailDetail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,24 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (null != value.getTwoDetailMap() && value.getTwoDetailMap().size() > 0) {
|
||||||
|
Collection<CuMemberRetailDetail> tmpDetailColl = value.getTwoDetailMap().values();
|
||||||
|
for (CuMemberRetailDetail cuMemberRetailDetail : tmpDetailColl) {
|
||||||
|
// 只有需要更新的才进行入库操作
|
||||||
|
if (null != cuMemberRetailDetail.getUpdateBool()) {
|
||||||
|
retailDetailColl.add(cuMemberRetailDetail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (null != value.getThreeDetailMap() && value.getThreeDetailMap().size() > 0) {
|
||||||
|
Collection<CuMemberRetailDetail> tmpDetailColl = value.getThreeDetailMap().values();
|
||||||
|
for (CuMemberRetailDetail cuMemberRetailDetail : tmpDetailColl) {
|
||||||
|
// 只有需要更新的才进行入库操作
|
||||||
|
if (null != cuMemberRetailDetail.getUpdateBool()) {
|
||||||
|
retailDetailColl.add(cuMemberRetailDetail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
List<List<?>> list = cuMemberBonusSettle.handleCutList(retailDetailColl);
|
List<List<?>> list = cuMemberBonusSettle.handleCutList(retailDetailColl);
|
||||||
list.forEach(tmpList -> {
|
list.forEach(tmpList -> {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 阶段奖金数据
|
* 阶段数据
|
||||||
*/
|
*/
|
||||||
@Builder
|
@Builder
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
|
|
@ -38,4 +38,13 @@ public class BonusStageData {
|
||||||
*/
|
*/
|
||||||
private Integer stageNum;
|
private Integer stageNum;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 二阶段点位
|
||||||
|
*/
|
||||||
|
private CuMemberRetailDetail twoRetailDetail;
|
||||||
|
/**
|
||||||
|
* 三阶段点位
|
||||||
|
*/
|
||||||
|
private CuMemberRetailDetail threeRetailDetail;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
package com.hzs.bonus.bonus.mapper;
|
package com.hzs.bonus.bonus.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.hzs.bonus.bonus.param.BonusParam;
|
||||||
import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
|
import com.hzs.common.domain.member.bonus.CuMemberBonusStage;
|
||||||
|
import com.hzs.common.domain.member.ext.CuMemberBonusDetailExt;
|
||||||
|
import com.hzs.common.domain.member.ext.CuMemberBonusPushExt;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -21,4 +24,13 @@ public interface CuMemberBonusStageMapper extends BaseMapper<CuMemberBonusStage>
|
||||||
*/
|
*/
|
||||||
void batchInsertCuMemberBonusStage(@Param("cuMemberBonusStageList") List<?> cuMemberBonusStageList);
|
void batchInsertCuMemberBonusStage(@Param("cuMemberBonusStageList") List<?> cuMemberBonusStageList);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据查询条件查询固定的奖金明细(阶段收益)
|
||||||
|
*
|
||||||
|
* @param bonusParam 查询条件
|
||||||
|
*/
|
||||||
|
List<CuMemberBonusDetailExt> queryMemberBonusStageByBonusItemsFoServer(@Param("bonusParam") BonusParam bonusParam);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,10 +83,18 @@ public abstract class BonusSettleHandle {
|
||||||
*/
|
*/
|
||||||
protected void stageIncomeRemark(SaOrderExt saOrderExt, CuMemberBonusStage cuMemberBonusStage,
|
protected void stageIncomeRemark(SaOrderExt saOrderExt, CuMemberBonusStage cuMemberBonusStage,
|
||||||
CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) {
|
CuMemberRetailRangeExt sourceMember, CuMemberRetailRangeExt targetMember) {
|
||||||
String remark = String.format(BonusMsgConstants.STAGE_INCOME, saOrderExt.getOrderCode(),
|
String remark;
|
||||||
|
if (null != saOrderExt) {
|
||||||
|
remark = String.format(BonusMsgConstants.STAGE_INCOME, saOrderExt.getOrderCode(),
|
||||||
sourceMember.getMemberCode() + sourceMember.getMemberName(),
|
sourceMember.getMemberCode() + sourceMember.getMemberName(),
|
||||||
targetMember.getMemberCode() + targetMember.getMemberName(),
|
targetMember.getMemberCode() + targetMember.getMemberName(),
|
||||||
cuMemberBonusStage.getChildNode(), cuMemberBonusStage.getStage());
|
cuMemberBonusStage.getChildNode(), cuMemberBonusStage.getStage());
|
||||||
|
} else {
|
||||||
|
remark = String.format(BonusMsgConstants.STAGE_INCOME_OTHER,
|
||||||
|
sourceMember.getMemberCode() + sourceMember.getMemberName(),
|
||||||
|
targetMember.getMemberCode() + targetMember.getMemberName(),
|
||||||
|
cuMemberBonusStage.getChildNode(), cuMemberBonusStage.getStage());
|
||||||
|
}
|
||||||
cuMemberBonusStage.setRemark(remark);
|
cuMemberBonusStage.setRemark(remark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -248,7 +256,9 @@ public abstract class BonusSettleHandle {
|
||||||
ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.INCOME_TAX, incomeTax);
|
ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.INCOME_TAX, incomeTax);
|
||||||
ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.REAL_INCOME, realIncome);
|
ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.REAL_INCOME, realIncome);
|
||||||
// 收益占比
|
// 收益占比
|
||||||
|
if (null != orderAmount && null != exchangeRate) {
|
||||||
ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.INCOME_RATIO, ComputeUtil.computeDivide(realIncome, ComputeUtil.computeDivide(orderAmount, exchangeRate)));
|
ReflectUtils.invokeSetter(cuMemberDetail, BonusFieldConstants.INCOME_RATIO, ComputeUtil.computeDivide(realIncome, ComputeUtil.computeDivide(orderAmount, exchangeRate)));
|
||||||
|
}
|
||||||
return bdBonusDeduct;
|
return bdBonusDeduct;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -275,7 +275,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, Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()));
|
List<SaOrderExt> orderList = iBonusOrderService.listRetailSaOrder(settleStartDate, settleEndDate, null,
|
||||||
|
Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue()));
|
||||||
|
|
||||||
// 更新当月会员, 将昨天业绩更到到今天,更新当月会员考核结果,有消费的考核通过
|
// 更新当月会员, 将昨天业绩更到到今天,更新当月会员考核结果,有消费的考核通过
|
||||||
// 结算期间表
|
// 结算期间表
|
||||||
|
|
@ -294,6 +295,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
// 初始化结算明细数据(昨天数据更新到今天数据)
|
// 初始化结算明细数据(昨天数据更新到今天数据)
|
||||||
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName);
|
iCuMemberRetailRangeService.mergeMemberRetailRangeDetailByYesterday(rangeDetailTableName, yesterdayRangeDetailTableName);
|
||||||
|
|
||||||
|
// 升阶段点位列表
|
||||||
|
List<CuMemberRetailDetail> stageList = new ArrayList<>();
|
||||||
|
|
||||||
if (orderList.size() > 0) {
|
if (orderList.size() > 0) {
|
||||||
// 按照血缘,查询该会员所有伞上会员
|
// 按照血缘,查询该会员所有伞上会员
|
||||||
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList);
|
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, orderList);
|
||||||
|
|
@ -306,7 +310,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 查询血缘会员明细数据(一阶段)
|
// 查询血缘会员明细数据(一阶段)
|
||||||
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE);
|
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.ONE, null);
|
||||||
|
|
||||||
// 奖衔
|
// 奖衔
|
||||||
Map<Integer, BdAwards> retailAwardsMap = new HashMap<>();
|
Map<Integer, BdAwards> retailAwardsMap = new HashMap<>();
|
||||||
|
|
@ -331,11 +335,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
// 直推收益 -- 来源订单金额,直推拿金额的10%
|
// 直推收益 -- 来源订单金额,直推拿金额的10%
|
||||||
this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
|
this.calculateDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
|
||||||
bonusConfigDTO, period, cuMemberBonusMap);
|
bonusConfigDTO, period, cuMemberBonusMap);
|
||||||
|
// 一阶段收益 -- 来源订单金额
|
||||||
// TODO 阶段收益 -- 来源订单金额
|
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
|
||||||
memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName, EBonusStage.ONE);
|
|
||||||
|
|
||||||
|
|
||||||
// TODO 领导级差收益 -- 来源PV
|
// TODO 领导级差收益 -- 来源PV
|
||||||
// TODO 领导平差收益 -- 来源PV
|
// TODO 领导平差收益 -- 来源PV
|
||||||
|
|
@ -344,13 +346,32 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
// 见点收益 -- 来源订单业绩,血缘上20代,每代拿业绩的10%
|
// 见点收益 -- 来源订单业绩,血缘上20代,每代拿业绩的10%
|
||||||
this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
|
this.calculateRepurDirectIncome(cuMemberBonusPushList, memberRangeExtMap, saOrderExt,
|
||||||
bonusConfigDTO, period, cuMemberBonusMap);
|
bonusConfigDTO, period, cuMemberBonusMap);
|
||||||
// TODO 阶段收益 -- 来源订单业绩
|
// 一阶段收益 -- 来源订单累计业绩
|
||||||
|
stageList.addAll(this.calculateStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
|
memberRangeExtMap, saOrderExt, settleStartDate, rangeTableName, rangeDetailTableName));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO 统一处理第二阶段还是 fillRetailDetail 方法进行处理
|
// TODO 处理升二阶段点位
|
||||||
|
if (CollectionUtil.isNotEmpty(stageList)) {
|
||||||
|
List<Long> stageMemberList = stageList.stream().map(CuMemberRetailDetail::getPkMember).collect(Collectors.toList());
|
||||||
|
// 查询血缘会员明细数据(二阶段)
|
||||||
|
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.TWO, stageMemberList);
|
||||||
|
// 二阶段收益
|
||||||
|
stageList = this.calculateStageIncomeTwoThree(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
|
memberRangeExtMap, settleStartDate, rangeTableName, rangeDetailTableName, EBonusStage.TWO, stageList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO 处理升三阶段点位
|
||||||
|
if (CollectionUtil.isNotEmpty(stageList)) {
|
||||||
|
List<Long> stageMemberList = stageList.stream().map(CuMemberRetailDetail::getPkMember).collect(Collectors.toList());
|
||||||
|
// 查询血缘会员明细数据(三段)
|
||||||
|
iCuMemberRetailDetailService.listMemberRetailDetail(rangeDetailTableName, memberRangeExtMap, EBonusStage.THREE, stageMemberList);
|
||||||
|
// 二阶段收益
|
||||||
|
this.calculateStageIncomeTwoThree(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
|
memberRangeExtMap, settleStartDate, rangeTableName, rangeDetailTableName, EBonusStage.THREE, stageList);
|
||||||
|
}
|
||||||
|
|
||||||
if (cuMemberBonusPushList.size() > 0) {
|
if (cuMemberBonusPushList.size() > 0) {
|
||||||
bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
|
bonusRecordDetailVO.setCuMemberBonusPushList(cuMemberBonusPushList);
|
||||||
|
|
@ -930,26 +951,44 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算阶段收益 -- 精品专区
|
* 计算一阶段收益 -- 精品专区、商城专区
|
||||||
*/
|
*/
|
||||||
private void calculateStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
private List<CuMemberRetailDetail> calculateStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||||
BonusConfigDTO bonusConfigDTO, Integer period,
|
BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
||||||
Date settleDate, String rangeTableName, String rangeDetailTableName, EBonusStage eBonusStage) {
|
Date settleDate, String rangeTableName, String rangeDetailTableName) {
|
||||||
// 订单金额除50取整,为新増点位数量
|
List<CuMemberRetailDetail> returnRetailDetailList = new ArrayList<>();
|
||||||
int newPointInt = saOrderExt.getOrderAmount().divide(RetailConstants.POINT_VAL, 0, RoundingMode.DOWN).intValue();
|
|
||||||
if (newPointInt == 0) {
|
|
||||||
// 当前精品专区订单不足生成点位
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 订单会员
|
// 订单会员
|
||||||
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
|
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||||
|
if (null == sourceMember) {
|
||||||
|
log.error("阶段收益处理失败,订单会员不存在. orderCode: {}, pkMember: {}", saOrderExt.getOrderCode(), saOrderExt.getPkMember());
|
||||||
|
return returnRetailDetailList;
|
||||||
|
}
|
||||||
|
|
||||||
|
int newPointInt;
|
||||||
|
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||||
|
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||||
|
// 精品专区按订单金额计算
|
||||||
|
// 订单金额除50取整,为新増点位数量
|
||||||
|
newPointInt = saOrderExt.getOrderAmount().divide(RetailConstants.POINT_VAL, 0, RoundingMode.DOWN).intValue();
|
||||||
|
} else {
|
||||||
|
// 商城专区按累计业绩处理
|
||||||
|
BigDecimal repPvBalance = sourceMember.getRepPvBalance().add(saOrderExt.getOrderAchieve());
|
||||||
|
newPointInt = repPvBalance.divide(RetailConstants.POINT_VAL, 0, RoundingMode.DOWN).intValue();
|
||||||
|
sourceMember.setRepPvBalance(repPvBalance.subtract(RetailConstants.POINT_VAL.multiply(new BigDecimal(newPointInt))));
|
||||||
|
}
|
||||||
|
if (newPointInt == 0) {
|
||||||
|
// 当前订单不足生成点位
|
||||||
|
return returnRetailDetailList;
|
||||||
|
}
|
||||||
|
|
||||||
// 会员一阶段子点位列表
|
// 会员一阶段子点位列表
|
||||||
LinkedHashMap<Integer, CuMemberRetailDetail> detailList = sourceMember.getOneDetailMap();
|
LinkedHashMap<Integer, CuMemberRetailDetail> detailList = sourceMember.getOneDetailMap();
|
||||||
if (null == detailList) {
|
if (null == detailList) {
|
||||||
detailList = new LinkedHashMap<>();
|
detailList = new LinkedHashMap<>();
|
||||||
sourceMember.setOneDetailMap(detailList);
|
sourceMember.setOneDetailMap(detailList);
|
||||||
|
sourceMember.setTwoDetailMap(new LinkedHashMap<>());
|
||||||
|
sourceMember.setThreeDetailMap(new LinkedHashMap<>());
|
||||||
}
|
}
|
||||||
// 当前会员子点位总数
|
// 当前会员子点位总数
|
||||||
int pointCount = sourceMember.getPointCount();
|
int pointCount = sourceMember.getPointCount();
|
||||||
|
|
@ -968,6 +1007,46 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
.build();
|
.build();
|
||||||
detailList.put(newRetailDetail.getChildNode(), newRetailDetail);
|
detailList.put(newRetailDetail.getChildNode(), newRetailDetail);
|
||||||
|
|
||||||
|
this.handleStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
|
memberRangeExtMap, saOrderExt, settleDate, rangeTableName, rangeDetailTableName, EBonusStage.ONE,
|
||||||
|
sourceMember, newRetailDetail, returnRetailDetailList);
|
||||||
|
}
|
||||||
|
return returnRetailDetailList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 计算二、三阶段收益
|
||||||
|
*/
|
||||||
|
private List<CuMemberRetailDetail> calculateStageIncomeTwoThree(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||||
|
BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
|
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap,
|
||||||
|
Date settleDate, String rangeTableName, String rangeDetailTableName, EBonusStage eBonusStage,
|
||||||
|
List<CuMemberRetailDetail> stageList) {
|
||||||
|
List<CuMemberRetailDetail> returnRetailDetailList = new ArrayList<>();
|
||||||
|
for (CuMemberRetailDetail memberRetailDetail : stageList) {
|
||||||
|
// 订单会员
|
||||||
|
CuMemberRetailRangeExt sourceMember = memberRangeExtMap.get(memberRetailDetail.getPkMember());
|
||||||
|
if (null == sourceMember) {
|
||||||
|
log.error("阶段收益处理失败,{}会员不存在. pkMember: {}", eBonusStage.getLabel(), memberRetailDetail.getPkMember());
|
||||||
|
return returnRetailDetailList;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.handleStageIncome(cuMemberBonusStageList, cuMemberBonusMap, bonusConfigDTO, period,
|
||||||
|
memberRangeExtMap, null, settleDate, rangeTableName, rangeDetailTableName, eBonusStage,
|
||||||
|
sourceMember, memberRetailDetail, returnRetailDetailList);
|
||||||
|
}
|
||||||
|
return returnRetailDetailList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理阶段收益(一、二、三阶段)
|
||||||
|
*/
|
||||||
|
private void handleStageIncome(List<CuMemberBonusStage> cuMemberBonusStageList, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||||
|
BonusConfigDTO bonusConfigDTO, Integer period,
|
||||||
|
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
||||||
|
Date settleDate, String rangeTableName, String rangeDetailTableName, EBonusStage eBonusStage,
|
||||||
|
CuMemberRetailRangeExt sourceMember, CuMemberRetailDetail newRetailDetail,
|
||||||
|
List<CuMemberRetailDetail> returnRetailDetailList) {
|
||||||
// 阶段奖金处理列表
|
// 阶段奖金处理列表
|
||||||
List<BonusStageData> bonusStageDataList = new ArrayList<>();
|
List<BonusStageData> bonusStageDataList = new ArrayList<>();
|
||||||
// 推荐人
|
// 推荐人
|
||||||
|
|
@ -981,7 +1060,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
pkParent = targetMember.getPkParent();
|
pkParent = targetMember.getPkParent();
|
||||||
|
|
||||||
// 推荐人一阶段子点位列表
|
// 推荐人一阶段子点位列表
|
||||||
LinkedHashMap<Integer, CuMemberRetailDetail> parentDetailList = targetMember.getOneDetailMap();
|
LinkedHashMap<Integer, CuMemberRetailDetail> parentDetailList = null;
|
||||||
|
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
||||||
|
parentDetailList = targetMember.getOneDetailMap();
|
||||||
|
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
|
||||||
|
parentDetailList = targetMember.getTwoDetailMap();
|
||||||
|
} else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
|
||||||
|
parentDetailList = targetMember.getThreeDetailMap();
|
||||||
|
}
|
||||||
if (CollectionUtil.isEmpty(parentDetailList)) {
|
if (CollectionUtil.isEmpty(parentDetailList)) {
|
||||||
// 推荐人没有未完成点位,继续往上找
|
// 推荐人没有未完成点位,继续往上找
|
||||||
continue;
|
continue;
|
||||||
|
|
@ -1018,8 +1104,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(bonusStageData.getTargetPkMember());
|
CuMemberRetailRangeExt targetMember = memberRangeExtMap.get(bonusStageData.getTargetPkMember());
|
||||||
// 会员奖金数据
|
// 会员奖金数据
|
||||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMember.getPkMember(), targetMember.getIncomeStatus(),
|
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMember.getPkMember(), targetMember.getIncomeStatus(),
|
||||||
targetMember.getPkSettleCountry(), targetMember.getPkRate() == null ? saOrderExt.getPkRate() : targetMember.getPkRate());
|
targetMember.getPkSettleCountry(), targetMember.getPkRate() == null ? (saOrderExt != null ? saOrderExt.getPkRate() : 0) : targetMember.getPkRate());
|
||||||
|
|
||||||
// 阶段奖金
|
// 阶段奖金
|
||||||
int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMember.getPkSettleCountry(), EBonusItems.STAGE_INCOME.getValue());
|
int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMember.getPkSettleCountry(), EBonusItems.STAGE_INCOME.getValue());
|
||||||
// 阶段收益明细
|
// 阶段收益明细
|
||||||
|
|
@ -1029,15 +1114,29 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||||
cuMemberBonusStage.setStage(bonusStageData.getStage());
|
cuMemberBonusStage.setStage(bonusStageData.getStage());
|
||||||
cuMemberBonusStage.setStageNum(bonusStageData.getStageNum());
|
cuMemberBonusStage.setStageNum(bonusStageData.getStageNum());
|
||||||
stageIncomeRemark(saOrderExt, cuMemberBonusStage, sourceMember, targetMember);
|
stageIncomeRemark(saOrderExt, cuMemberBonusStage, sourceMember, targetMember);
|
||||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusStage, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusStage, saOrderExt != null ? saOrderExt.getOrderAmount() : null, saOrderExt != null ? saOrderExt.getInExchangeRate() : null);
|
||||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusStage.getIncomeStatus()) {
|
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusStage.getIncomeStatus()) {
|
||||||
cuMemberBonus.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonus.getStoreIncome(), cuMemberBonusStage.getPretaxIncome()));
|
cuMemberBonus.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonus.getStoreIncome(), cuMemberBonusStage.getPretaxIncome()));
|
||||||
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusStage);
|
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusStage);
|
||||||
}
|
}
|
||||||
cuMemberBonusStageList.add(cuMemberBonusStage);
|
cuMemberBonusStageList.add(cuMemberBonusStage);
|
||||||
}
|
|
||||||
}
|
// 升阶段数据
|
||||||
|
if (EBonusStage.ONE.getValue() == bonusStageData.getStage()) {
|
||||||
|
// 一阶段需要处理升阶段
|
||||||
|
CuMemberRetailDetail twoRetailDetail = bonusStageData.getTwoRetailDetail();
|
||||||
|
targetMember.getTwoDetailMap().put(twoRetailDetail.getChildNode(), twoRetailDetail);
|
||||||
|
returnRetailDetailList.add(twoRetailDetail);
|
||||||
|
} else if (EBonusStage.TWO.getValue() == bonusStageData.getStage()) {
|
||||||
|
// 二阶段需要处理升阶段
|
||||||
|
CuMemberRetailDetail threeRetailDetail = bonusStageData.getThreeRetailDetail();
|
||||||
|
targetMember.getThreeDetailMap().put(threeRetailDetail.getChildNode(), threeRetailDetail);
|
||||||
|
returnRetailDetailList.add(threeRetailDetail);
|
||||||
|
} else if (EBonusStage.THREE.getValue() == bonusStageData.getStage()) {
|
||||||
|
// TODO 三阶段需要赠送点位
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import com.hzs.common.domain.member.base.CuMember;
|
||||||
import com.hzs.common.domain.member.bonus.*;
|
import com.hzs.common.domain.member.bonus.*;
|
||||||
import com.hzs.common.domain.member.ext.CuMemberExt;
|
import com.hzs.common.domain.member.ext.CuMemberExt;
|
||||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||||
|
import com.hzs.report.order.IPerformanceSummaryServiceApi;
|
||||||
import com.hzs.system.config.IBonusItemsServiceApi;
|
import com.hzs.system.config.IBonusItemsServiceApi;
|
||||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
@ -39,6 +40,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
|
|
||||||
@DubboReference
|
@DubboReference
|
||||||
IBonusItemsServiceApi iBonusItemsServiceApi;
|
IBonusItemsServiceApi iBonusItemsServiceApi;
|
||||||
|
@DubboReference
|
||||||
|
IPerformanceSummaryServiceApi iPerformanceSummaryServiceApi;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBonusOrderService iBonusOrderService;
|
private IBonusOrderService iBonusOrderService;
|
||||||
|
|
@ -107,6 +110,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
||||||
log.error("奖金结算异常", e);
|
log.error("奖金结算异常", e);
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
// 调用统计业绩汇总接口
|
||||||
|
iPerformanceSummaryServiceApi.createDataByDay(settleDate);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("每日数据业绩汇总异常", e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,8 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
||||||
private CuMemberBonusPushMapper cuMemberBonusPushMapper;
|
private CuMemberBonusPushMapper cuMemberBonusPushMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
|
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
|
||||||
|
@Resource
|
||||||
|
private CuMemberBonusStageMapper cuMemberBonusStageMapper;
|
||||||
|
|
||||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||||
|
|
||||||
|
|
@ -398,6 +400,14 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
||||||
// MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusRange, MemberBonusDetailSerVO.class);
|
// MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusRange, MemberBonusDetailSerVO.class);
|
||||||
// memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
// memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
||||||
// });
|
// });
|
||||||
|
} else if(EBonusItems.STAGE_INCOME.getValue() == bonusItemsValue) {
|
||||||
|
// 阶段收益
|
||||||
|
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusStageMapper.queryMemberBonusStageByBonusItemsFoServer(bonusParam);
|
||||||
|
dataTable = getDataTable(cuMemberBonusDetailList);
|
||||||
|
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
|
||||||
|
MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusDetail, MemberBonusDetailSerVO.class);
|
||||||
|
memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
// 其他收益 区域分红、月度分红平均、月度分红加权
|
// 其他收益 区域分红、月度分红平均、月度分红加权
|
||||||
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItemsForServer(bonusParam);
|
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItemsForServer(bonusParam);
|
||||||
|
|
|
||||||
|
|
@ -284,27 +284,55 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
if (isFinish) {
|
if (isFinish) {
|
||||||
targetRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue());
|
targetRetailDetail.setStageStatus(EBonusStageStatus.YES.getValue());
|
||||||
targetRetailDetail.setStageDate(settleDate);
|
targetRetailDetail.setStageDate(settleDate);
|
||||||
// TODO 统一处理第二阶段还是 fillRetailDetail 方法进行处理
|
|
||||||
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
||||||
// 一阶段,全满发放阶段奖
|
// 一阶段,全满发放阶段奖
|
||||||
// 返回奖金收益处理数据
|
// 返回奖金收益处理数据
|
||||||
bonusStageDataList.add(BonusStageData.builder()
|
BonusStageData bonusStageData = BonusStageData.builder()
|
||||||
.bonusIncome(BonusConstants.ONE_BONUS)
|
.bonusIncome(BonusConstants.ONE_BONUS)
|
||||||
.targetPkMember(targetRetailDetail.getPkMember())
|
.targetPkMember(targetRetailDetail.getPkMember())
|
||||||
.targetChildNode(targetRetailDetail.getChildNode())
|
.targetChildNode(targetRetailDetail.getChildNode())
|
||||||
.stage(eBonusStage.getValue())
|
.stage(eBonusStage.getValue())
|
||||||
.stageNum(14)
|
.stageNum(14)
|
||||||
|
.build();
|
||||||
|
// 生成二阶段点位
|
||||||
|
bonusStageData.setTwoRetailDetail(CuMemberRetailDetail.builder()
|
||||||
|
.pkMember(targetRetailDetail.getPkMember())
|
||||||
|
.childNode(targetRetailDetail.getChildNode())
|
||||||
|
.pkParent(targetRetailDetail.getPkParent())
|
||||||
|
.stage(EBonusStage.TWO.getValue())
|
||||||
|
.stageStatus(EBonusStageStatus.NO.getValue())
|
||||||
|
.pointType(targetRetailDetail.getPointType())
|
||||||
|
.pointGift(targetRetailDetail.getPointGift())
|
||||||
|
.creationTime(settleDate)
|
||||||
|
.updateBool(0)
|
||||||
.build());
|
.build());
|
||||||
|
bonusStageDataList.add(bonusStageData);
|
||||||
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
|
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
|
||||||
// 二阶段,全满发放阶段奖
|
// 二阶段,全满发放阶段奖
|
||||||
// 返回奖金收益处理数据
|
// 返回奖金收益处理数据
|
||||||
bonusStageDataList.add(BonusStageData.builder()
|
BonusStageData bonusStageData = BonusStageData.builder()
|
||||||
.bonusIncome(BonusConstants.TWO_BONUS)
|
.bonusIncome(BonusConstants.TWO_BONUS)
|
||||||
.targetPkMember(targetRetailDetail.getPkMember())
|
.targetPkMember(targetRetailDetail.getPkMember())
|
||||||
.targetChildNode(targetRetailDetail.getChildNode())
|
.targetChildNode(targetRetailDetail.getChildNode())
|
||||||
.stage(eBonusStage.getValue())
|
.stage(eBonusStage.getValue())
|
||||||
.stageNum(14)
|
.stageNum(14)
|
||||||
|
.build();
|
||||||
|
bonusStageData.setThreeRetailDetail(CuMemberRetailDetail.builder()
|
||||||
|
.pkMember(targetRetailDetail.getPkMember())
|
||||||
|
.childNode(targetRetailDetail.getChildNode())
|
||||||
|
.pkParent(targetRetailDetail.getPkParent())
|
||||||
|
.stage(EBonusStage.THREE.getValue())
|
||||||
|
.stageStatus(EBonusStageStatus.NO.getValue())
|
||||||
|
.pointType(targetRetailDetail.getPointType())
|
||||||
|
.pointGift(targetRetailDetail.getPointGift())
|
||||||
|
.creationTime(settleDate)
|
||||||
|
.updateBool(0)
|
||||||
.build());
|
.build());
|
||||||
|
bonusStageDataList.add(bonusStageData);
|
||||||
|
} else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
|
||||||
|
// TODO 三阶段发放特殊处理
|
||||||
|
// TODO 三阶段填充满,判断是否需要赠送点位
|
||||||
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -347,7 +375,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
// 新点位的上第二层
|
// 新点位的上第二层
|
||||||
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
|
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
|
||||||
if (null != firstMemberRetail) {
|
if (null != firstMemberRetail) {
|
||||||
CuMemberRetailDetail memberDetail = firstMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst());
|
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(firstMemberRetail, eBonusStage).get(newParentRetailDetail.getPointFirst());
|
||||||
if (null != memberDetail) {
|
if (null != memberDetail) {
|
||||||
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPointMemberFirst());
|
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPointMemberFirst());
|
||||||
newRetailDetail.setPointSecond(newParentRetailDetail.getPointFirst());
|
newRetailDetail.setPointSecond(newParentRetailDetail.getPointFirst());
|
||||||
|
|
@ -359,7 +387,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
// 新点位的上第三层
|
// 新点位的上第三层
|
||||||
CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberSecond());
|
CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberSecond());
|
||||||
if (null != secondMemberRetail) {
|
if (null != secondMemberRetail) {
|
||||||
CuMemberRetailDetail memberDetail = secondMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointSecond());
|
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(firstMemberRetail, eBonusStage).get(newParentRetailDetail.getPointSecond());
|
||||||
if (null != memberDetail) {
|
if (null != memberDetail) {
|
||||||
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberSecond());
|
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberSecond());
|
||||||
newRetailDetail.setPointThird(newParentRetailDetail.getPointSecond());
|
newRetailDetail.setPointThird(newParentRetailDetail.getPointSecond());
|
||||||
|
|
@ -418,7 +446,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
// 新点位的上第三层
|
// 新点位的上第三层
|
||||||
CuMemberRetailRangeExt thirdMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
|
CuMemberRetailRangeExt thirdMemberRetail = memberRangeExtMap.get(newParentRetailDetail.getPointMemberFirst());
|
||||||
if (null != thirdMemberRetail) {
|
if (null != thirdMemberRetail) {
|
||||||
CuMemberRetailDetail memberDetail = thirdMemberRetail.getOneDetailMap().get(newParentRetailDetail.getPointFirst());
|
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(thirdMemberRetail, eBonusStage).get(newParentRetailDetail.getPointFirst());
|
||||||
if (null != memberDetail) {
|
if (null != memberDetail) {
|
||||||
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberFirst());
|
newRetailDetail.setPointMemberThird(newParentRetailDetail.getPointMemberFirst());
|
||||||
newRetailDetail.setPointThird(newParentRetailDetail.getPointFirst());
|
newRetailDetail.setPointThird(newParentRetailDetail.getPointFirst());
|
||||||
|
|
@ -430,7 +458,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
// 新点位的上第一层
|
// 新点位的上第一层
|
||||||
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(downFirstMember);
|
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(downFirstMember);
|
||||||
if (null != firstMemberRetail) {
|
if (null != firstMemberRetail) {
|
||||||
CuMemberRetailDetail memberDetail = firstMemberRetail.getOneDetailMap().get(downFirstPoint);
|
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(firstMemberRetail, eBonusStage).get(downFirstPoint);
|
||||||
if (null != memberDetail) {
|
if (null != memberDetail) {
|
||||||
newRetailDetail.setPointMemberFirst(memberDetail.getPkMember());
|
newRetailDetail.setPointMemberFirst(memberDetail.getPkMember());
|
||||||
newRetailDetail.setPointFirst(memberDetail.getChildNode());
|
newRetailDetail.setPointFirst(memberDetail.getChildNode());
|
||||||
|
|
@ -511,7 +539,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
// 新点位的上第二层
|
// 新点位的上第二层
|
||||||
CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(downSecondMember);
|
CuMemberRetailRangeExt secondMemberRetail = memberRangeExtMap.get(downSecondMember);
|
||||||
if (null != secondMemberRetail) {
|
if (null != secondMemberRetail) {
|
||||||
CuMemberRetailDetail memberDetail = secondMemberRetail.getOneDetailMap().get(downSecondPoint);
|
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(secondMemberRetail, eBonusStage).get(downSecondPoint);
|
||||||
if (null != memberDetail) {
|
if (null != memberDetail) {
|
||||||
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPkMember());
|
newRetailDetail.setPointMemberSecond(newParentRetailDetail.getPkMember());
|
||||||
newRetailDetail.setPointSecond(newParentRetailDetail.getChildNode());
|
newRetailDetail.setPointSecond(newParentRetailDetail.getChildNode());
|
||||||
|
|
@ -523,7 +551,7 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
// 新点位的上第一层
|
// 新点位的上第一层
|
||||||
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(downFirstMember);
|
CuMemberRetailRangeExt firstMemberRetail = memberRangeExtMap.get(downFirstMember);
|
||||||
if (null != firstMemberRetail) {
|
if (null != firstMemberRetail) {
|
||||||
CuMemberRetailDetail memberDetail = firstMemberRetail.getOneDetailMap().get(downFirstPoint);
|
CuMemberRetailDetail memberDetail = this.getRetailDetailMap(firstMemberRetail, eBonusStage).get(downFirstPoint);
|
||||||
if (null != memberDetail) {
|
if (null != memberDetail) {
|
||||||
newRetailDetail.setPointMemberFirst(newParentRetailDetail.getPkMember());
|
newRetailDetail.setPointMemberFirst(newParentRetailDetail.getPkMember());
|
||||||
newRetailDetail.setPointFirst(newParentRetailDetail.getChildNode());
|
newRetailDetail.setPointFirst(newParentRetailDetail.getChildNode());
|
||||||
|
|
@ -708,4 +736,16 @@ public class CuMemberBonusStageServiceImpl extends ServiceImpl<CuMemberBonusStag
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private LinkedHashMap<Integer, CuMemberRetailDetail> getRetailDetailMap(CuMemberRetailRangeExt memberRetail, EBonusStage eBonusStage) {
|
||||||
|
if (EBonusStage.ONE.getValue() == eBonusStage.getValue()) {
|
||||||
|
return memberRetail.getOneDetailMap();
|
||||||
|
} else if (EBonusStage.TWO.getValue() == eBonusStage.getValue()) {
|
||||||
|
return memberRetail.getTwoDetailMap();
|
||||||
|
} else if (EBonusStage.THREE.getValue() == eBonusStage.getValue()) {
|
||||||
|
return memberRetail.getThreeDetailMap();
|
||||||
|
}
|
||||||
|
return new LinkedHashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ dubbo:
|
||||||
port: -1
|
port: -1
|
||||||
cloud:
|
cloud:
|
||||||
# 订阅服务
|
# 订阅服务
|
||||||
subscribed-services: bd-system, bd-third, bd-sale, bd-member
|
subscribed-services: bd-system, bd-third, bd-sale, bd-member, bd-report
|
||||||
scan:
|
scan:
|
||||||
# dubbo 服务扫描包(开启之后才会对外提供服务)
|
# dubbo 服务扫描包(开启之后才会对外提供服务)
|
||||||
base-packages: com.hzs.bonus
|
base-packages: com.hzs.bonus
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@
|
||||||
<result column="rep_team_new_amount" property="repTeamNewAmount"/>
|
<result column="rep_team_new_amount" property="repTeamNewAmount"/>
|
||||||
<result column="rep_team_new_pv" property="repTeamNewPv"/>
|
<result column="rep_team_new_pv" property="repTeamNewPv"/>
|
||||||
<result column="point_count" property="pointCount"/>
|
<result column="point_count" property="pointCount"/>
|
||||||
|
<result column="rep_pv_balance" property="repPvBalance"/>
|
||||||
|
|
||||||
<result column="AWARDS_VALUE" property="awardsValue"/>
|
<result column="AWARDS_VALUE" property="awardsValue"/>
|
||||||
<result column="AWARDS_NAME" property="awardsName"/>
|
<result column="AWARDS_NAME" property="awardsName"/>
|
||||||
|
|
@ -92,7 +93,9 @@
|
||||||
rep_consume_new_amount = 0,
|
rep_consume_new_amount = 0,
|
||||||
rep_consume_new_pv = 0,
|
rep_consume_new_pv = 0,
|
||||||
rep_team_new_amount = 0,
|
rep_team_new_amount = 0,
|
||||||
rep_team_new_pv = 0
|
rep_team_new_pv = 0,
|
||||||
|
point_count = 0,
|
||||||
|
rep_pv_balance = 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<update id="mergeMemberRetailRangeByYesterday">
|
<update id="mergeMemberRetailRangeByYesterday">
|
||||||
|
|
@ -103,7 +106,8 @@
|
||||||
consume_amount, month_consume_amount,
|
consume_amount, month_consume_amount,
|
||||||
team_consume_pv, team_month_pv,
|
team_consume_pv, team_month_pv,
|
||||||
team_consume_amount, team_month_amount,
|
team_consume_amount, team_month_amount,
|
||||||
recommend_num, team_num, big_team_pv, small_team_pv
|
recommend_num, team_num, big_team_pv, small_team_pv,
|
||||||
|
point_count, rep_pv_balance
|
||||||
from ${yesterdayRangeTableName}
|
from ${yesterdayRangeTableName}
|
||||||
) b
|
) b
|
||||||
on (a.pk_member = b.pk_member)
|
on (a.pk_member = b.pk_member)
|
||||||
|
|
@ -115,7 +119,8 @@
|
||||||
a.team_consume_pv = b.team_consume_pv,
|
a.team_consume_pv = b.team_consume_pv,
|
||||||
a.team_consume_amount = b.team_consume_amount,
|
a.team_consume_amount = b.team_consume_amount,
|
||||||
a.recommend_num = b.recommend_num, a.team_num = b.team_num,
|
a.recommend_num = b.recommend_num, a.team_num = b.team_num,
|
||||||
a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv
|
a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv,
|
||||||
|
a.point_count = b.point_count, a.rep_pv_balance = b.rep_pv_balance
|
||||||
<if test="isSameMonth == 0">
|
<if test="isSameMonth == 0">
|
||||||
,a.month_consume_pv = b.month_consume_pv
|
,a.month_consume_pv = b.month_consume_pv
|
||||||
,a.month_consume_amount = b.month_consume_amount
|
,a.month_consume_amount = b.month_consume_amount
|
||||||
|
|
@ -322,7 +327,8 @@
|
||||||
#{item.regConsumeNewAmount} reg_consume_new_amount, #{item.regConsumeNewPv} reg_consume_new_pv,
|
#{item.regConsumeNewAmount} reg_consume_new_amount, #{item.regConsumeNewPv} reg_consume_new_pv,
|
||||||
#{item.regTeamNewAmount} reg_team_new_amount, #{item.regTeamNewPv} reg_team_new_pv,
|
#{item.regTeamNewAmount} reg_team_new_amount, #{item.regTeamNewPv} reg_team_new_pv,
|
||||||
#{item.repConsumeNewAmount} rep_consume_new_amount, #{item.repConsumeNewPv} rep_consume_new_pv,
|
#{item.repConsumeNewAmount} rep_consume_new_amount, #{item.repConsumeNewPv} rep_consume_new_pv,
|
||||||
#{item.repTeamNewAmount} rep_team_new_amount, #{item.repTeamNewPv} rep_team_new_pv
|
#{item.repTeamNewAmount} rep_team_new_amount, #{item.repTeamNewPv} rep_team_new_pv,
|
||||||
|
#{item.pointCount} point_count, #{item.repPvBalance} rep_pv_balance
|
||||||
from dual
|
from dual
|
||||||
</foreach>
|
</foreach>
|
||||||
) b
|
) b
|
||||||
|
|
@ -337,7 +343,8 @@
|
||||||
a.reg_consume_new_amount = b.reg_consume_new_amount, a.reg_consume_new_pv = b.reg_consume_new_pv,
|
a.reg_consume_new_amount = b.reg_consume_new_amount, a.reg_consume_new_pv = b.reg_consume_new_pv,
|
||||||
a.reg_team_new_amount = b.reg_team_new_amount, a.reg_team_new_pv = b.reg_team_new_pv,
|
a.reg_team_new_amount = b.reg_team_new_amount, a.reg_team_new_pv = b.reg_team_new_pv,
|
||||||
a.rep_consume_new_amount = b.rep_consume_new_amount, a.rep_consume_new_pv = b.rep_consume_new_pv,
|
a.rep_consume_new_amount = b.rep_consume_new_amount, a.rep_consume_new_pv = b.rep_consume_new_pv,
|
||||||
a.rep_team_new_amount = b.rep_team_new_amount, a.rep_team_new_pv = b.rep_team_new_pv
|
a.rep_team_new_amount = b.rep_team_new_amount, a.rep_team_new_pv = b.rep_team_new_pv,
|
||||||
|
a.point_count = b.point_count, a.rep_pv_balance = b.rep_pv_balance
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<!-- 更新会员日结数据 -->
|
<!-- 更新会员日结数据 -->
|
||||||
|
|
@ -647,6 +654,7 @@
|
||||||
rep_team_new_amount,
|
rep_team_new_amount,
|
||||||
rep_team_new_pv,
|
rep_team_new_pv,
|
||||||
point_count,
|
point_count,
|
||||||
|
rep_pv_balance,
|
||||||
bw.awards_value,
|
bw.awards_value,
|
||||||
bw.awards_name
|
bw.awards_name
|
||||||
from (
|
from (
|
||||||
|
|
@ -701,6 +709,8 @@
|
||||||
rep_consume_new_pv,
|
rep_consume_new_pv,
|
||||||
rep_team_new_amount,
|
rep_team_new_amount,
|
||||||
rep_team_new_pv,
|
rep_team_new_pv,
|
||||||
|
point_count,
|
||||||
|
rep_pv_balance,
|
||||||
bw.awards_value,
|
bw.awards_value,
|
||||||
bw.awards_name
|
bw.awards_name
|
||||||
from ${tableName} a
|
from ${tableName} a
|
||||||
|
|
|
||||||
|
|
@ -298,43 +298,43 @@
|
||||||
stage NUMBER(1) default 1 not null,
|
stage NUMBER(1) default 1 not null,
|
||||||
stage_status NUMBER(1) default 1 not null,
|
stage_status NUMBER(1) default 1 not null,
|
||||||
stage_date DATE,
|
stage_date DATE,
|
||||||
point_11 NUMBER(8),
|
|
||||||
point_member_11 NUMBER(20),
|
point_member_11 NUMBER(20),
|
||||||
point_12 NUMBER(8),
|
point_11 NUMBER(8),
|
||||||
point_member_12 NUMBER(20),
|
point_member_12 NUMBER(20),
|
||||||
point_21 NUMBER(8),
|
point_12 NUMBER(8),
|
||||||
point_member_21 NUMBER(20),
|
point_member_21 NUMBER(20),
|
||||||
point_22 NUMBER(8),
|
point_21 NUMBER(8),
|
||||||
point_member_22 NUMBER(20),
|
point_member_22 NUMBER(20),
|
||||||
point_23 NUMBER(8),
|
point_22 NUMBER(8),
|
||||||
point_member_23 NUMBER(20),
|
point_member_23 NUMBER(20),
|
||||||
point_24 NUMBER(8),
|
point_23 NUMBER(8),
|
||||||
point_member_24 NUMBER(20),
|
point_member_24 NUMBER(20),
|
||||||
point_31 NUMBER(8),
|
point_24 NUMBER(8),
|
||||||
point_member_31 NUMBER(20),
|
point_member_31 NUMBER(20),
|
||||||
point_32 NUMBER(8),
|
point_31 NUMBER(8),
|
||||||
point_member_32 NUMBER(20),
|
point_member_32 NUMBER(20),
|
||||||
point_33 NUMBER(8),
|
point_32 NUMBER(8),
|
||||||
point_member_33 NUMBER(20),
|
point_member_33 NUMBER(20),
|
||||||
point_34 NUMBER(8),
|
point_33 NUMBER(8),
|
||||||
point_member_34 NUMBER(20),
|
point_member_34 NUMBER(20),
|
||||||
point_35 NUMBER(8),
|
point_34 NUMBER(8),
|
||||||
point_member_35 NUMBER(20),
|
point_member_35 NUMBER(20),
|
||||||
point_36 NUMBER(8),
|
point_35 NUMBER(8),
|
||||||
point_member_36 NUMBER(20),
|
point_member_36 NUMBER(20),
|
||||||
point_37 NUMBER(8),
|
point_36 NUMBER(8),
|
||||||
point_member_37 NUMBER(20),
|
point_member_37 NUMBER(20),
|
||||||
point_38 NUMBER(8),
|
point_37 NUMBER(8),
|
||||||
point_member_38 NUMBER(20),
|
point_member_38 NUMBER(20),
|
||||||
|
point_38 NUMBER(8),
|
||||||
point_type NUMBER(1) default 0 not null,
|
point_type NUMBER(1) default 0 not null,
|
||||||
point_gift NUMBER(1) default 0 not null,
|
point_gift NUMBER(1) default 0 not null,
|
||||||
creation_time DATE,
|
creation_time DATE,
|
||||||
point_first NUMBER(8),
|
|
||||||
point_member_first NUMBER(20),
|
point_member_first NUMBER(20),
|
||||||
point_second NUMBER(8),
|
point_first NUMBER(8),
|
||||||
point_member_second NUMBER(20),
|
point_member_second NUMBER(20),
|
||||||
point_third NUMBER(8),
|
point_second NUMBER(8),
|
||||||
point_member_third NUMBER(20)
|
point_member_third NUMBER(20),
|
||||||
|
point_third NUMBER(8)
|
||||||
)
|
)
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|
@ -572,7 +572,8 @@
|
||||||
rep_consume_new_pv number(17,6) default 0 not null,
|
rep_consume_new_pv number(17,6) default 0 not null,
|
||||||
rep_team_new_amount number(17,6) default 0 not null,
|
rep_team_new_amount number(17,6) default 0 not null,
|
||||||
rep_team_new_pv number(17,6) default 0 not null,
|
rep_team_new_pv number(17,6) default 0 not null,
|
||||||
point_count number(8) default 0 not null
|
point_count number(8) default 0 not null,
|
||||||
|
rep_pv_balance number(17,6) default 0 not null
|
||||||
)
|
)
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -326,6 +326,26 @@
|
||||||
<if test="bonusParam.pkBonusItems != null">
|
<if test="bonusParam.pkBonusItems != null">
|
||||||
and cd.pk_bonus_items = #{bonusParam.pkBonusItems}
|
and cd.pk_bonus_items = #{bonusParam.pkBonusItems}
|
||||||
</if>
|
</if>
|
||||||
|
union all
|
||||||
|
select
|
||||||
|
cb.pk_member,cs.pk_order,cb.period,cb.pk_country,cs.pk_bonus_items,cs.income_status,cs.CAL_ACHIEVE,cs.pretax_income,cs.income_tax,cs.real_income,
|
||||||
|
cs.remark,cs.income_ratio,cs.income_dial_ratio,cs.order_dial_ratio
|
||||||
|
from cu_member_bonus cb
|
||||||
|
inner join CU_MEMBER_BONUS_STAGE cs
|
||||||
|
on cb.pk_id = cs.pk_bonus
|
||||||
|
where 1=1
|
||||||
|
<if test="bonusParam.pkBonus != null">
|
||||||
|
and cs.pk_bonus = #{bonusParam.pkBonus}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.pkGrade != null">
|
||||||
|
and cs.pk_range = #{bonusParam.pkGrade}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.period != null">
|
||||||
|
and cb.period = #{bonusParam.period}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.pkBonusItems != null">
|
||||||
|
and cd.pk_bonus_items = #{bonusParam.pkBonusItems}
|
||||||
|
</if>
|
||||||
) x
|
) x
|
||||||
where 1=1
|
where 1=1
|
||||||
<if test="bonusParam.vertexList != null and bonusParam.vertexList.size >0">
|
<if test="bonusParam.vertexList != null and bonusParam.vertexList.size >0">
|
||||||
|
|
|
||||||
|
|
@ -33,4 +33,130 @@
|
||||||
SELECT 1 FROM dual
|
SELECT 1 FROM dual
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<select id="queryMemberBonusStageByBonusItemsFoServer"
|
||||||
|
resultType="com.hzs.common.domain.member.ext.CuMemberBonusDetailExt"
|
||||||
|
parameterType="com.hzs.bonus.bonus.param.BonusParam">
|
||||||
|
|
||||||
|
select b.period,cp.settle_date,so.order_code,so.order_type,bt.short_name source_country_name,
|
||||||
|
cu.member_code source_member_code,cu.member_name source_member_name,nvl(so.pk_rate,b.pk_rate) pk_rate,
|
||||||
|
nvl(bc.out_exchange_rate,0) out_exchange_rate,
|
||||||
|
nvl(so.order_amount,0) order_amount, nvl(so.order_achieve,0) order_achieve,
|
||||||
|
b.pk_country,b.pk_bonus_items,b.pretax_income,b.income_tax,b.real_income,b.income_status,
|
||||||
|
tar.member_code,tar.member_name,
|
||||||
|
bg.pk_transaction pk_settle_grade, ba.pk_transaction pk_awards,
|
||||||
|
bv.vertex_name,ct.team_name,
|
||||||
|
b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,bct.short_name settle_country
|
||||||
|
from (
|
||||||
|
select cb.pk_member,cd.pk_order,cb.period,cb.pk_country,cd.pk_bonus_items,cd.income_status,
|
||||||
|
cd.CAL_ACHIEVE,cd.pretax_income,cd.income_tax,cd.real_income,
|
||||||
|
cd.remark,cd.income_ratio,cd.income_dial_ratio,cd.order_dial_ratio,cb.pk_rate
|
||||||
|
from cu_member_bonus cb
|
||||||
|
inner join cu_member_bonus_stage cd
|
||||||
|
on cb.pk_id = cd.pk_bonus
|
||||||
|
where 1=1
|
||||||
|
<if test="bonusParam.period != null">
|
||||||
|
and cb.period = #{bonusParam.period}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.pkBonusItems != null">
|
||||||
|
and cd.pk_bonus_items = #{bonusParam.pkBonusItems}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.vertexList != null and bonusParam.vertexList.size >0">
|
||||||
|
and exists(
|
||||||
|
select 1 from (
|
||||||
|
<foreach collection="bonusParam.vertexList" item="item" separator=" union ">
|
||||||
|
select pk_id from cu_member
|
||||||
|
where del_flag=0 and PAY_STATUS=1
|
||||||
|
start with pk_id = #{item}
|
||||||
|
connect by pk_parent = prior pk_id
|
||||||
|
</foreach>
|
||||||
|
<if test="bonusParam.teamList != null and bonusParam.teamList.size >0">
|
||||||
|
union
|
||||||
|
<foreach collection="bonusParam.teamList" item="item" separator=" union ">
|
||||||
|
select pk_id from cu_member
|
||||||
|
where del_flag=0 and PAY_STATUS=1
|
||||||
|
start with pk_id = #{item}
|
||||||
|
connect by pk_parent = prior pk_id
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
) a
|
||||||
|
where a.pk_id = cb.pk_member
|
||||||
|
)
|
||||||
|
</if>
|
||||||
|
) b
|
||||||
|
left join sa_order so
|
||||||
|
on so.pk_id = b.pk_order
|
||||||
|
<if test="bonusParam.orderType != null">
|
||||||
|
and so.order_type = #{bonusParam.orderType}
|
||||||
|
</if>
|
||||||
|
left join cu_member tar
|
||||||
|
on b.pk_member = tar.pk_id
|
||||||
|
left join cu_member cu
|
||||||
|
on so.pk_member = cu.pk_id
|
||||||
|
left join cu_member_settle_period cp
|
||||||
|
on b.period = cp.pk_id
|
||||||
|
left join bd_vertex bv
|
||||||
|
on bv.pk_id = tar.pk_vertex
|
||||||
|
left join cu_member_team ct
|
||||||
|
on ct.pk_id = tar.pk_team_code
|
||||||
|
left join bd_currency bc
|
||||||
|
on bc.pk_id=nvl(so.pk_rate,b.pk_rate)
|
||||||
|
left join bd_grade bg
|
||||||
|
on bg.pk_id=tar.pk_settle_grade
|
||||||
|
left join bd_awards ba
|
||||||
|
on ba.pk_id=tar.pk_awards
|
||||||
|
left join bd_country bt
|
||||||
|
on bt.pk_id=so.pk_country
|
||||||
|
left join bd_country bct
|
||||||
|
on bct.pk_id=tar.pk_settle_country
|
||||||
|
<where>
|
||||||
|
1=1
|
||||||
|
<if test="bonusParam.pkCountry != null">
|
||||||
|
and tar.pk_settle_country = #{bonusParam.pkCountry}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.systemType != null">
|
||||||
|
and cu.system_type = #{bonusParam.systemType}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.pkVertex != null">
|
||||||
|
and bv.pk_id = #{bonusParam.pkVertex}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.pkTeamCode != null">
|
||||||
|
and ct.pk_id =#{bonusParam.pkTeamCode}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.sourceCountry != null">
|
||||||
|
and bt.pk_id = #{bonusParam.sourceCountry}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.incomeStatus != null">
|
||||||
|
and b.income_status = #{bonusParam.incomeStatus}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.orderCode != null and bonusParam.orderCode != ''">
|
||||||
|
and so.order_code like #{bonusParam.orderCode}|| '%'
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.sourceMemberCode != null and bonusParam.sourceMemberCode != ''">
|
||||||
|
and cu.member_code = #{bonusParam.sourceMemberCode}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.sourceMemberName != null and bonusParam.sourceMemberName != ''">
|
||||||
|
and cu.member_name = #{bonusParam.sourceMemberName}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.memberCode != null and bonusParam.memberCode != ''">
|
||||||
|
and tar.member_code = #{bonusParam.memberCode}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.memberName != null and bonusParam.memberName != ''">
|
||||||
|
and tar.member_name = #{bonusParam.memberName}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.settleCountry != null">
|
||||||
|
and tar.pk_settle_country = #{bonusParam.settleCountry}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.startDate != null">
|
||||||
|
and cp.settle_date >=#{bonusParam.startDate, jdbcType=DATE}
|
||||||
|
</if>
|
||||||
|
<if test="bonusParam.endDate != null">
|
||||||
|
and cp.settle_date <#{bonusParam.endDate, jdbcType=DATE}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
<choose>
|
||||||
|
<when test="bonusParam.sort == null or bonusParam.sort ==1">order by cp.settle_date desc, b.real_income desc</when>
|
||||||
|
<when test="bonusParam.sort ==2">order by tar.pk_vertex, b.real_income desc</when>
|
||||||
|
<otherwise>order by tar.pk_teamcode</otherwise>
|
||||||
|
</choose>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,12 @@
|
||||||
#{items}
|
#{items}
|
||||||
</foreach>
|
</foreach>
|
||||||
</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 < #{endDate}
|
and so.pay_time < #{endDate}
|
||||||
order by pay_time
|
order by pay_time
|
||||||
|
|
|
||||||
|
|
@ -587,10 +587,11 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
||||||
deductCancelOrderCost(businessCommissionDTO);
|
deductCancelOrderCost(businessCommissionDTO);
|
||||||
|
|
||||||
CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
|
CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
|
||||||
|
|
||||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()) {
|
|
||||||
// 会员账号 验证会员账户是否存在金额
|
// 会员账号 验证会员账户是否存在金额
|
||||||
CuMember member = cuMemberService.getMemberById(saOrder.getPkMember());
|
CuMember member = cuMemberService.getMemberById(saOrder.getPkMember());
|
||||||
|
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()
|
||||||
|
||(ObjectUtil.isNotEmpty(member) && EOrderType.RETAIL_REPURCHASE.getValue() == saOrder.getOrderType() && saOrder.getPayTime().equals(member.getPayTime()))
|
||||||
|
) {
|
||||||
// 会员变为死点
|
// 会员变为死点
|
||||||
member.setCategory(ECategory.LOGGED_OUT.getValue());
|
member.setCategory(ECategory.LOGGED_OUT.getValue());
|
||||||
member.setCustomerType(ECustomerType.DEAD_POINT.getValue());
|
member.setCustomerType(ECustomerType.DEAD_POINT.getValue());
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ public class ApiMemberStructureController extends BaseController {
|
||||||
Integer isFind = iCumemberRetailDetailService.getFindCumemberRetailDetail(settleTableName);
|
Integer isFind = iCumemberRetailDetailService.getFindCumemberRetailDetail(settleTableName);
|
||||||
if (isFind == null || isFind != 1) {
|
if (isFind == null || isFind != 1) {
|
||||||
log.error("当前表名不存在{}",settleTableName);
|
log.error("当前表名不存在{}",settleTableName);
|
||||||
return AjaxResult.error("当前日结信息表不存在",settleTableName);
|
return AjaxResult.error("数据查询错误,请联系客服处理");
|
||||||
}
|
}
|
||||||
CuMemberRetailDetail cuMemberRetailDetail = iCumemberRetailDetailService.getCuMemberRetailDetailByUserId(userId,stage,stageStatus,childNode,settleTableName);
|
CuMemberRetailDetail cuMemberRetailDetail = iCumemberRetailDetailService.getCuMemberRetailDetailByUserId(userId,stage,stageStatus,childNode,settleTableName);
|
||||||
log.info("日结表会员信息{}",cuMemberRetailDetail);
|
log.info("日结表会员信息{}",cuMemberRetailDetail);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.hzs.report.order.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 销售业绩统计表 前端控制器
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sangelxiu1
|
||||||
|
* @since 2025-09-22
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/order/performance-summary")
|
||||||
|
public class CuMemberPerformanceSummaryController {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
package com.hzs.report.order.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
|
||||||
|
import com.hzs.common.domain.sale.order.SaOrder;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 销售业绩统计表 Mapper 接口
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sangelxiu1
|
||||||
|
* @since 2025-09-22
|
||||||
|
*/
|
||||||
|
public interface CuMemberPerformanceSummaryMapper extends BaseMapper<CuMemberPerformanceSummary> {
|
||||||
|
List<SaOrder> getOrderByDay(@Param("startDate") Date startDate, @Param("endDate") Date endDate, @Param("orderTypeList") List<Integer> orderTypeList);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.hzs.report.order.provider;
|
||||||
|
|
||||||
|
import com.hzs.common.core.domain.R;
|
||||||
|
import com.hzs.report.order.IPerformanceSummaryServiceApi;
|
||||||
|
import com.hzs.report.order.service.ICuMemberPerformanceSummaryService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 销售业绩统计
|
||||||
|
*/
|
||||||
|
@DubboService
|
||||||
|
@Slf4j
|
||||||
|
public class PerformanceSummaryProvider implements IPerformanceSummaryServiceApi {
|
||||||
|
@Resource
|
||||||
|
ICuMemberPerformanceSummaryService iCuMemberPerformanceSummaryService;
|
||||||
|
@Override
|
||||||
|
public R<Boolean> createDataByDay(String day) {
|
||||||
|
iCuMemberPerformanceSummaryService.createDataByDay(day);
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.hzs.report.order.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 销售业绩统计表 服务类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sangelxiu1
|
||||||
|
* @since 2025-09-22
|
||||||
|
*/
|
||||||
|
public interface ICuMemberPerformanceSummaryService extends IService<CuMemberPerformanceSummary> {
|
||||||
|
void createDataByDay(String day);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
package com.hzs.report.order.service.impl;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||||
|
import com.hzs.common.core.enums.EOrderType;
|
||||||
|
import com.hzs.common.core.utils.DateUtils;
|
||||||
|
import com.hzs.common.domain.report.CuMemberPerformanceSummary;
|
||||||
|
import com.hzs.common.domain.sale.order.SaOrder;
|
||||||
|
import com.hzs.report.order.mapper.CuMemberPerformanceSummaryMapper;
|
||||||
|
import com.hzs.report.order.service.ICuMemberPerformanceSummaryService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 销售业绩统计表 服务实现类
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sangelxiu1
|
||||||
|
* @since 2025-09-22
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class CuMemberPerformanceSummaryServiceImpl extends ServiceImpl<CuMemberPerformanceSummaryMapper, CuMemberPerformanceSummary> implements ICuMemberPerformanceSummaryService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createDataByDay(String day) {
|
||||||
|
Date startDate = DateUtils.getStartOfDay(day);
|
||||||
|
Date endDate = DateUtils.getEndOfDay(day);
|
||||||
|
LambdaQueryWrapper<CuMemberPerformanceSummary> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
queryWrapper.eq(CuMemberPerformanceSummary::getSummaryDate, startDate);
|
||||||
|
baseMapper.delete(queryWrapper);
|
||||||
|
List<Integer> orderTypeList = Arrays.asList(EOrderType.RETAIL_REGISTER.getValue(), EOrderType.RETAIL_UPGRADE.getValue(), EOrderType.RETAIL_REPURCHASE.getValue());
|
||||||
|
List<SaOrder> orderList = baseMapper.getOrderByDay(startDate, endDate, orderTypeList);
|
||||||
|
Map<Integer, List<SaOrder>> groupedOrders = orderList.stream().collect(Collectors.groupingBy(SaOrder::getOrderType));
|
||||||
|
CuMemberPerformanceSummary summary = CuMemberPerformanceSummary.getInitCuMemberPerformanceSummary(startDate);
|
||||||
|
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.RETAIL_REGISTER.getValue()))) {
|
||||||
|
for (SaOrder saOrder : groupedOrders.get(EOrderType.RETAIL_REGISTER.getValue())) {
|
||||||
|
summary.setRetailRegisterAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setRetailRegisterPv(summary.getRetailDiscountPv().add(saOrder.getOrderAchieve()));
|
||||||
|
|
||||||
|
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.RETAIL_UPGRADE.getValue()))) {
|
||||||
|
for (SaOrder saOrder : groupedOrders.get(EOrderType.RETAIL_UPGRADE.getValue())) {
|
||||||
|
summary.setRetailUpgradeAmount(summary.getRetailUpgradeAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setRetailUpgradePv(summary.getRetailUpgradePv().add(saOrder.getOrderAchieve()));
|
||||||
|
|
||||||
|
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.RETAIL_REPURCHASE.getValue()))) {
|
||||||
|
for (SaOrder saOrder : groupedOrders.get(EOrderType.RETAIL_REPURCHASE.getValue())) {
|
||||||
|
summary.setRetailRepurchaseAmount(summary.getRetailRepurchaseAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setRetailRepurchasePv(summary.getRetailRepurchasePv().add(saOrder.getOrderAchieve()));
|
||||||
|
|
||||||
|
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ObjectUtil.isNotEmpty(groupedOrders.get(EOrderType.RETAIL_CONSUME.getValue()))){
|
||||||
|
for (SaOrder saOrder : groupedOrders.get(EOrderType.RETAIL_CONSUME.getValue())) {
|
||||||
|
summary.setRetailDiscountAmount(summary.getRetailDiscountAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setDividendPv(summary.getDividendPv().add(saOrder.getOrderAchieve()));
|
||||||
|
|
||||||
|
summary.setTotalAmount(summary.getTotalAmount().add(saOrder.getOrderAmount()));
|
||||||
|
summary.setTotalPv(summary.getTotalPv().add(saOrder.getOrderAmount()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
summary.setDividendPv(summary.getTotalPv().multiply(new BigDecimal("0.015")));
|
||||||
|
summary.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||||
|
baseMapper.insert(summary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.hzs.report.order.mapper.CuMemberPerformanceSummaryMapper">
|
||||||
|
|
||||||
|
<!-- 通用查询映射结果 -->
|
||||||
|
<resultMap id="BaseResultMap" type="com.hzs.common.domain.report.CuMemberPerformanceSummary">
|
||||||
|
<result column="DEL_FLAG" property="delFlag" />
|
||||||
|
<result column="PK_COUNTRY" property="pkCountry" />
|
||||||
|
<result column="CREATION_TIME" property="creationTime" />
|
||||||
|
<result column="MODIFIED_TIME" property="modifiedTime" />
|
||||||
|
<result column="PK_CREATOR" property="pkCreator" />
|
||||||
|
<result column="PK_MODIFIED" property="pkModified" />
|
||||||
|
<result column="PK_ID" property="pkId" />
|
||||||
|
<result column="SUMMARY_DATE" property="summaryDate" />
|
||||||
|
<result column="RETAIL_REGISTER_AMOUNT" property="retailRegisterAmount" />
|
||||||
|
<result column="RETAIL_REGISTER_PV" property="retailRegisterPv" />
|
||||||
|
<result column="RETAIL_UPGRADE_AMOUNT" property="retailUpgradeAmount" />
|
||||||
|
<result column="RETAIL_UPGRADE_PV" property="retailUpgradePv" />
|
||||||
|
<result column="RETAIL_REPURCHASE_AMOUNT" property="retailRepurchaseAmount" />
|
||||||
|
<result column="RETAIL_REPURCHASE_PV" property="retailRepurchasePv" />
|
||||||
|
<result column="RETAIL_DISCOUNT_AMOUNT" property="retailDiscountAmount" />
|
||||||
|
<result column="RETAIL_DISCOUNT_PV" property="retailDiscountPv" />
|
||||||
|
<result column="TOTAL_AMOUNT" property="totalAmount" />
|
||||||
|
<result column="TOTAL_PV" property="totalPv" />
|
||||||
|
<result column="DIVIDEND_PV" property="dividendPv" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 通用查询结果列 -->
|
||||||
|
<sql id="Base_Column_List">
|
||||||
|
DEL_FLAG,
|
||||||
|
PK_COUNTRY,
|
||||||
|
CREATION_TIME,
|
||||||
|
MODIFIED_TIME,
|
||||||
|
PK_CREATOR,
|
||||||
|
PK_MODIFIED,
|
||||||
|
PK_ID, SUMMARY_DATE, RETAIL_REGISTER_AMOUNT, RETAIL_REGISTER_PV, RETAIL_UPGRADE_AMOUNT, RETAIL_UPGRADE_PV, RETAIL_REPURCHASE_AMOUNT, RETAIL_REPURCHASE_PV, RETAIL_DISCOUNT_AMOUNT, RETAIL_DISCOUNT_PV, TOTAL_AMOUNT, TOTAL_PV, DIVIDEND_PV
|
||||||
|
</sql>
|
||||||
|
<select id="getOrderByDay" resultType="com.hzs.common.domain.sale.order.SaOrder">
|
||||||
|
select * from sa_order
|
||||||
|
where del_flag = 0
|
||||||
|
and order_status = 1
|
||||||
|
and pay_time between #{startDate} and #{endDate}
|
||||||
|
and order_type in
|
||||||
|
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
|
|
@ -2,6 +2,7 @@ package com.hzs.sale.order.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.crypto.SecureUtil;
|
import cn.hutool.crypto.SecureUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
@ -662,6 +663,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void revokeSaOrderByOrderCode(Long pkApprove, OrderCancelParam orderCancelParam, ValidateCancelOrderVO validateCancelOrderVO) {
|
public void revokeSaOrderByOrderCode(Long pkApprove, OrderCancelParam orderCancelParam, ValidateCancelOrderVO validateCancelOrderVO) {
|
||||||
SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
|
SaOrderExt saOrderExt = validateCancelOrderVO.getSaOrderExt();
|
||||||
|
CuMemberExt memberExt = memberServiceApi.getMemberById(saOrderExt.getPkMember()).getData();
|
||||||
BusinessCommissionDTO businessCommissionDTO = null;
|
BusinessCommissionDTO businessCommissionDTO = null;
|
||||||
if (orderCancelParam.getCancelRoad() == 1) {
|
if (orderCancelParam.getCancelRoad() == 1) {
|
||||||
EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
|
EApprovalBusiness approveBusiness = EApprovalBusiness.ORDER_CANCEL;
|
||||||
|
|
@ -750,7 +752,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
// 撤销注册订单 单点撤单
|
// 撤销注册订单 单点撤单
|
||||||
if (ECancelOrderType.SINGLE_CANCEL_ORDER.getValue() == orderCancelParam.getCancelType()) {
|
if (ECancelOrderType.SINGLE_CANCEL_ORDER.getValue() == orderCancelParam.getCancelType()
|
||||||
|
||(ObjectUtil.isNotEmpty(memberExt) && ECancelOrderType.OTHER_CANCEL_ORDER.getValue() == orderCancelParam.getCancelType() && saOrderExt.getPayTime().equals(memberExt.getPayTime()))
|
||||||
|
) {
|
||||||
// 单点撤单,变死点
|
// 单点撤单,变死点
|
||||||
R<Boolean> tmpR = memberServiceApi.singleRevokeMemberByRegisterOrder(pkApprove, saOrderExt, businessCommissionDTO);
|
R<Boolean> tmpR = memberServiceApi.singleRevokeMemberByRegisterOrder(pkApprove, saOrderExt, businessCommissionDTO);
|
||||||
if (!tmpR.isSuccess()) {
|
if (!tmpR.isSuccess()) {
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,10 @@ public class BonusMsgConstants {
|
||||||
* 阶段 收益说明
|
* 阶段 收益说明
|
||||||
*/
|
*/
|
||||||
public static String STAGE_INCOME = "订单编号%s,%s为%s贡献了阶段收益,%s子点位%s阶段。";
|
public static String STAGE_INCOME = "订单编号%s,%s为%s贡献了阶段收益,%s子点位%s阶段。";
|
||||||
|
/**
|
||||||
|
* 二、三阶段 收益说明
|
||||||
|
*/
|
||||||
|
public static String STAGE_INCOME_OTHER = "%s为%s贡献了阶段收益,%s子点位%s阶段。";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 直推级差收益说明
|
* 直推级差收益说明
|
||||||
|
|
|
||||||
|
|
@ -195,4 +195,10 @@ public class CuMemberRetailRange extends BaseEntity {
|
||||||
@TableField("point_count")
|
@TableField("point_count")
|
||||||
private Integer pointCount;
|
private Integer pointCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 复购业绩余额
|
||||||
|
*/
|
||||||
|
@TableField("REP_PV_BALANCE")
|
||||||
|
private BigDecimal repPvBalance;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
package com.hzs.common.domain.report;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import java.util.Date;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
|
import com.hzs.common.core.web.domain.BaseEntity;
|
||||||
|
import lombok.*;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* 销售业绩统计表
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author sangelxiu1
|
||||||
|
* @since 2025-09-22
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Accessors(chain = true)
|
||||||
|
@TableName("CU_MEMBER_PERFORMANCE_SUMMARY")
|
||||||
|
@KeySequence("C_M_PERFORMANCE_SUMMARY_SEQ")
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public class CuMemberPerformanceSummary extends BaseEntity {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@TableId("PK_ID")
|
||||||
|
private Long pkId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 统计日期
|
||||||
|
*/
|
||||||
|
@TableField("SUMMARY_DATE")
|
||||||
|
private Date summaryDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 精品专区销售金额
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_REGISTER_AMOUNT")
|
||||||
|
private BigDecimal retailRegisterAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 精品专区销售业绩
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_REGISTER_PV")
|
||||||
|
private BigDecimal retailRegisterPv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 甄选专区销售金额
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_UPGRADE_AMOUNT")
|
||||||
|
private BigDecimal retailUpgradeAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 甄选专区销售业绩
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_UPGRADE_PV")
|
||||||
|
private BigDecimal retailUpgradePv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商城专区销售金额
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_REPURCHASE_AMOUNT")
|
||||||
|
private BigDecimal retailRepurchaseAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商城专区销售业绩
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_REPURCHASE_PV")
|
||||||
|
private BigDecimal retailRepurchasePv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 五折专区销售金额
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_DISCOUNT_AMOUNT")
|
||||||
|
private BigDecimal retailDiscountAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 五折专区销售业绩
|
||||||
|
*/
|
||||||
|
@TableField("RETAIL_DISCOUNT_PV")
|
||||||
|
private BigDecimal retailDiscountPv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当期销售金额合计
|
||||||
|
*/
|
||||||
|
@TableField("TOTAL_AMOUNT")
|
||||||
|
private BigDecimal totalAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当期销售业绩合计
|
||||||
|
*/
|
||||||
|
@TableField("TOTAL_PV")
|
||||||
|
private BigDecimal totalPv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当日分红合计(分红:所有专区PV值的1.5%每天进行记录)
|
||||||
|
*/
|
||||||
|
@TableField("DIVIDEND_PV")
|
||||||
|
private BigDecimal dividendPv;
|
||||||
|
|
||||||
|
|
||||||
|
public static CuMemberPerformanceSummary getInitCuMemberPerformanceSummary(Date summaryDate){
|
||||||
|
return CuMemberPerformanceSummary.builder()
|
||||||
|
.summaryDate(summaryDate)
|
||||||
|
.retailRegisterAmount(BigDecimal.ZERO)
|
||||||
|
.retailRegisterPv(BigDecimal.ZERO)
|
||||||
|
.retailUpgradeAmount(BigDecimal.ZERO)
|
||||||
|
.retailUpgradePv(BigDecimal.ZERO)
|
||||||
|
.retailRepurchaseAmount(BigDecimal.ZERO)
|
||||||
|
.retailRepurchasePv(BigDecimal.ZERO)
|
||||||
|
.retailDiscountAmount(BigDecimal.ZERO)
|
||||||
|
.retailDiscountPv(BigDecimal.ZERO)
|
||||||
|
.totalAmount(BigDecimal.ZERO)
|
||||||
|
.totalPv(BigDecimal.ZERO)
|
||||||
|
.dividendPv(BigDecimal.ZERO)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -62,7 +62,7 @@ public class TOnlinePaymentServiceImpl extends ServiceImpl<TOnlinePaymentMapper,
|
||||||
}else{
|
}else{
|
||||||
tOnlinePaymentExt.setOrderTypeVal("充值订单");
|
tOnlinePaymentExt.setOrderTypeVal("充值订单");
|
||||||
if(ObjectUtil.isEmpty(tOnlinePaymentExt.getMemberCode())){
|
if(ObjectUtil.isEmpty(tOnlinePaymentExt.getMemberCode())){
|
||||||
tOnlinePaymentExt.setOrderTypeVal("注册订单");
|
tOnlinePaymentExt.setOrderTypeVal("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
<!-- 查询列表 -->
|
<!-- 查询列表 -->
|
||||||
<select id="queryList" resultType="com.hzs.common.domain.third.pay.ext.TOnlinePaymentExt">
|
<select id="queryList" resultType="com.hzs.common.domain.third.pay.ext.TOnlinePaymentExt">
|
||||||
select top.*, cm.member_code, cm.member_name,
|
select so.pay_time payTime, cm.phone, top.*, cm.member_code, cm.member_name,
|
||||||
so.order_type orderType
|
so.order_type orderType
|
||||||
from T_ONLINE_PAYMENT top
|
from T_ONLINE_PAYMENT top
|
||||||
left join cu_member cm
|
left join cu_member cm
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
CREATE TABLE CU_MEMBER_PERFORMANCE_SUMMARY
|
||||||
|
(
|
||||||
|
"PK_ID" NUMBER(20,0) NOT NULL ENABLE,
|
||||||
|
"SUMMARY_DATE" DATE NOT NULL ENABLE,
|
||||||
|
"RETAIL_REGISTER_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_REGISTER_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_UPGRADE_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_UPGRADE_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_REPURCHASE_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_REPURCHASE_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_DISCOUNT_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"RETAIL_DISCOUNT_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"TOTAL_AMOUNT" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"TOTAL_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"DIVIDEND_PV" NUMBER(17,6) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"DEL_FLAG" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
|
||||||
|
"PK_COUNTRY" NUMBER(4,0) DEFAULT 1 NOT NULL ENABLE,
|
||||||
|
"CREATION_TIME" DATE DEFAULT sysdate NOT NULL ENABLE,
|
||||||
|
"MODIFIED_TIME" DATE,
|
||||||
|
"PK_CREATOR" NUMBER(20,0) NOT NULL ENABLE,
|
||||||
|
"PK_MODIFIED" NUMBER(20,0)
|
||||||
|
);
|
||||||
|
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."SUMMARY_DATE" IS '统计日期';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REGISTER_AMOUNT" IS '精品专区销售金额';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REGISTER_PV" IS '精品专区销售业绩';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_UPGRADE_AMOUNT" IS '甄选专区销售金额';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_UPGRADE_PV" IS '甄选专区销售业绩';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REPURCHASE_AMOUNT" IS '商城专区销售金额';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_REPURCHASE_PV" IS '商城专区销售业绩';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_DISCOUNT_AMOUNT" IS '五折专区销售金额';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."RETAIL_DISCOUNT_PV" IS '五折专区销售业绩';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."TOTAL_AMOUNT" IS '当期销售金额合计';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."TOTAL_PV" IS '当期销售业绩合计';
|
||||||
|
COMMENT ON COLUMN CU_MEMBER_PERFORMANCE_SUMMARY."DIVIDEND_PV" IS '当日分红合计(分红:所有专区PV值的1.5%每天进行记录)';
|
||||||
|
|
||||||
|
COMMENT ON TABLE "CU_MEMBER_PERFORMANCE_SUMMARY" IS '销售业绩统计表';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CREATE SEQUENCE C_M_PERFORMANCE_SUMMARY_SEQ
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1;
|
||||||
Loading…
Reference in New Issue