## 结算日奖;商品列表添加团队校验;
This commit is contained in:
parent
473a6379e5
commit
8f1c088250
|
@ -3,7 +3,6 @@ package com.hzs.member.detail;
|
|||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.domain.member.base.CuMemberRegister;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -29,14 +28,6 @@ public interface ICuMemberDetailServiceApi {
|
|||
*/
|
||||
R<List<CuMemberLevel>> getUpgradeList(Long pkMember);
|
||||
|
||||
/**
|
||||
* 查询手动开通奖衔的最新一条
|
||||
*
|
||||
* @param pkMember 会员ID
|
||||
* @return
|
||||
*/
|
||||
R<CuMemberAwardsExt> queryLastManualAwards(Long pkMember);
|
||||
|
||||
/**
|
||||
* 查询会员注册信息
|
||||
*
|
||||
|
|
|
@ -5,6 +5,8 @@ import com.hzs.common.domain.member.base.CuMember;
|
|||
import com.hzs.common.domain.member.ext.CuMemberExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 会员 Mapper 接口
|
||||
*/
|
||||
|
@ -19,4 +21,9 @@ public interface CuMemberMapper extends BaseMapper<CuMember> {
|
|||
*/
|
||||
CuMemberExt queryLoginMember(@Param("memberCode") String memberCode, @Param("pkMember") Long pkMember);
|
||||
|
||||
/**
|
||||
* 更新会员等级
|
||||
*/
|
||||
void updateCuMemberLevel(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
|
||||
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||
import com.hzs.common.domain.member.base.CuMember;
|
||||
import com.hzs.common.domain.member.ext.CuMemberExt;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 会员 服务类
|
||||
*/
|
||||
|
@ -17,4 +19,9 @@ public interface ICuMemberService extends IService<CuMember> {
|
|||
*/
|
||||
CuMemberExt getMemberByCode(String memberCode);
|
||||
|
||||
/**
|
||||
* 更新会员等级
|
||||
*/
|
||||
void updateCuMemberLevel(Date startDate, Date endDate);
|
||||
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import com.hzs.common.domain.member.ext.CuMemberExt;
|
|||
import com.hzs.bonus.base.mapper.CuMemberMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 会员 服务实现类
|
||||
*/
|
||||
|
@ -18,4 +20,9 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
|
|||
return baseMapper.queryLoginMember(memberCode, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCuMemberLevel(Date startDate, Date endDate) {
|
||||
baseMapper.updateCuMemberLevel(startDate, endDate);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
package com.hzs.bonus.bonus.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusCoach;
|
||||
import com.hzs.common.domain.member.ext.CuMemberBonusCoachExt;
|
||||
import com.hzs.bonus.bonus.param.BonusParam;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员奖金-辅导收益明细表 Mapper 接口
|
||||
*/
|
||||
public interface CuMemberBonusCoachMapper extends BaseMapper<CuMemberBonusCoach> {
|
||||
|
||||
/**
|
||||
* 删除会员奖金汇总表
|
||||
*
|
||||
* @param period 结算期间
|
||||
*/
|
||||
void deleteCuMemberBonusCoach(Integer period);
|
||||
|
||||
/**
|
||||
* 批量插入会员奖金主表
|
||||
*
|
||||
* @param cuMemberBonusCoachList 会员奖金
|
||||
*/
|
||||
void batchInsertCuMemberBonusCoach(@Param("cuMemberBonusCoachList") List<?> cuMemberBonusCoachList);
|
||||
|
||||
/**
|
||||
* 根据查询条件查询固定的奖金明细
|
||||
*
|
||||
* @param bonusParam 查询条件
|
||||
*/
|
||||
List<CuMemberBonusCoachExt> queryMemberBonusCoachByBonusItems(BonusParam bonusParam);
|
||||
|
||||
/**
|
||||
* 根据查询条件查询固定的奖金明细
|
||||
*
|
||||
* @param bonusParam 查询条件
|
||||
*/
|
||||
List<CuMemberBonusCoachExt> queryMemberBonusCoachByBonusItemsForServer(@Param("bonusParam") BonusParam bonusParam);
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
package com.hzs.bonus.bonus.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusExpand;
|
||||
import com.hzs.common.domain.member.ext.CuMemberBonusExpandExt;
|
||||
import com.hzs.bonus.bonus.param.BonusParam;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员奖金-拓展收益明细表 Mapper 接口
|
||||
*/
|
||||
public interface CuMemberBonusExpandMapper extends BaseMapper<CuMemberBonusExpand> {
|
||||
|
||||
/**
|
||||
* 删除会员奖金汇总表
|
||||
*
|
||||
* @param period 结算期间
|
||||
*/
|
||||
void deleteCuMemberBonusExpand(Integer period);
|
||||
|
||||
/**
|
||||
* 批量插入会员奖金主表
|
||||
*
|
||||
* @param cuMemberBonusExpandList 会员奖金
|
||||
*/
|
||||
void batchInsertCuMemberBonusExpand(@Param("cuMemberBonusExpandList") List<?> cuMemberBonusExpandList);
|
||||
|
||||
/**
|
||||
* 根据查询条件查询固定的奖金明细
|
||||
*
|
||||
* @param bonusParam 查询条件
|
||||
*/
|
||||
List<CuMemberBonusExpandExt> queryMemberBonusExpandByBonusItems(BonusParam bonusParam);
|
||||
|
||||
/**
|
||||
* 根据查询条件查询固定的奖金明细
|
||||
*
|
||||
* @param bonusParam 查询条件
|
||||
*/
|
||||
List<CuMemberBonusExpandExt> queryMemberBonusExpandByBonusItemsForServer(@Param("bonusParam") BonusParam bonusParam);
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusCoach;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 会员奖金-辅导收益明细表 服务类
|
||||
*/
|
||||
public interface ICuMemberBonusCoachService extends IService<CuMemberBonusCoach> {
|
||||
|
||||
/**
|
||||
* 删除会员奖金汇总表
|
||||
*
|
||||
* @param period 结算期间
|
||||
*/
|
||||
void deleteCuMemberBonusCoach(Integer period);
|
||||
|
||||
/**
|
||||
* 批量插入会员奖金主表
|
||||
*
|
||||
* @param cuMemberBonusCoachList 会员奖金
|
||||
*/
|
||||
void batchInsertCuMemberBonusCoach(List<CuMemberBonusCoach> cuMemberBonusCoachList, Set<Long> memberIdSet);
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusExpand;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 会员奖金-拓展收益明细表 服务类
|
||||
*/
|
||||
public interface ICuMemberBonusExpandService extends IService<CuMemberBonusExpand> {
|
||||
|
||||
/**
|
||||
* 删除会员奖金汇总表
|
||||
*
|
||||
* @param period 结算期间
|
||||
*/
|
||||
void deleteCuMemberBonusExpand(Integer period);
|
||||
|
||||
/**
|
||||
* 批量插入会员奖金主表
|
||||
*
|
||||
* @param cuMemberBonusExpandList 会员奖金
|
||||
*/
|
||||
void batchInsertCuMemberBonusExpand(List<CuMemberBonusExpand> cuMemberBonusExpandList, Set<Long> memberIdSet);
|
||||
|
||||
}
|
|
@ -53,6 +53,23 @@ public abstract class BonusSettleHandle {
|
|||
cuMemberBonusRange.setRemark(remark);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得 复购级差收益的备注
|
||||
*
|
||||
* @param saOrderExt 订单编号
|
||||
* @param cuMemberBonusRange 报单服务费
|
||||
* @param sourceMemberRangeExt 提供奖金的人
|
||||
* @param targetMemberRangeExt 获得奖金的人
|
||||
*/
|
||||
protected void rangeRepurRetailRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberRetailRangeExt sourceMemberRangeExt,
|
||||
CuMemberRetailRangeExt targetMemberRangeExt) {
|
||||
String remark = String.format(BonusMsgConstants.REPUR_RANGE, saOrderExt.getOrderCode(),
|
||||
sourceMemberRangeExt.getMemberCode() + sourceMemberRangeExt.getMemberName(),
|
||||
targetMemberRangeExt.getMemberCode() + targetMemberRangeExt.getMemberName(),
|
||||
cuMemberBonusRange.getCalAchieve(), sourceMemberRangeExt.getGradeName(), targetMemberRangeExt.getGradeName());
|
||||
cuMemberBonusRange.setRemark(remark);
|
||||
}
|
||||
|
||||
protected CuMemberBonus getCuMemberBonus(Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
Long pkMember, Integer incomeStatus, Integer pkCountry, Integer pkRate) {
|
||||
if (cuMemberBonusMap.containsKey(pkMember)) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRetailRangeService;
|
||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||
import com.hzs.bonus.detail.service.ICuMemberGradeService;
|
||||
import com.hzs.bonus.order.service.IBonusOrderService;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.RetailConstants;
|
||||
|
@ -12,10 +13,9 @@ import com.hzs.common.core.utils.DateUtils;
|
|||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
|
||||
import com.hzs.common.domain.member.bonus.*;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
import com.hzs.common.domain.member.detail.CuMemberServiceLog;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderWaresExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
|
||||
|
@ -41,13 +41,15 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
private ICuMemberRetailRangeService iCuMemberRetailRangeService;
|
||||
@Autowired
|
||||
private IBonusOrderService iBonusOrderService;
|
||||
@Autowired
|
||||
private ICuMemberGradeService iCuMemberGradeService;
|
||||
|
||||
@DubboReference
|
||||
ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi;
|
||||
|
||||
/**
|
||||
* 日结:
|
||||
* 计算新零售团队的奖金,首购级差、复购级差
|
||||
* 计算新零售奖金,首购级差、复购级差
|
||||
*/
|
||||
void calculateRetailBonusByDay(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, BonusRecordDetailVO bonusRecordDetailVO,
|
||||
Integer period, Integer yesterdayPeriod, Boolean isSameMonth) {
|
||||
|
@ -78,19 +80,26 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
Map<Long, Date> activateMap = this.getActivateMap(settleStartDate);
|
||||
|
||||
if (retailOrderList.size() > 0) {
|
||||
// 会员购买升级记录
|
||||
Map<Long, CuMemberLevel> memberLevelMap = new HashMap<>();
|
||||
List<CuMemberLevel> memberLevelList = iCuMemberGradeService.calculateCuMemberRetailGradeInit(period, settleStartDate, settleEndDate, rangeTableName);
|
||||
memberLevelList.forEach(cuMemberLevel -> memberLevelMap.put(cuMemberLevel.getPkOrder(), cuMemberLevel));
|
||||
|
||||
// 会员的自动升级记录
|
||||
Map<Long, CuMemberLevel> autoLevelMap = new HashMap<>();
|
||||
List<CuMemberLevel> autoLevelList = iCuMemberGradeService.listAutoLevel(settleStartDate, settleEndDate);
|
||||
autoLevelList.forEach(tmpLevel -> autoLevelMap.put(tmpLevel.getPkOrder(), tmpLevel));
|
||||
|
||||
// 按照血缘,查询该会员所有伞上会员
|
||||
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeParent(rangeTableName, retailOrderList);
|
||||
|
||||
// 会员结算map(key:会员ID,value:结算扩展)
|
||||
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
|
||||
// 等级map(key:等级值,value:等级对象)
|
||||
Map<Integer, BdGrade> gradeMap = new HashMap<>();
|
||||
// 等级map(key:等级ID,value:等级对象)
|
||||
Map<Integer, BdGrade> gradeIdMap = new HashMap<>();
|
||||
// 等级列表
|
||||
List<BdGrade> retaiGradeList = bonusConfigDTO.getRetaiGradeList();
|
||||
for (BdGrade bdGrade : retaiGradeList) {
|
||||
gradeMap.put(bdGrade.getGradeValue(), bdGrade);
|
||||
gradeIdMap.put(bdGrade.getPkId(), bdGrade);
|
||||
}
|
||||
// 结算会员map处理
|
||||
|
@ -100,14 +109,14 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
|
||||
// 平级收益
|
||||
// 级差收益
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
|
||||
|
||||
// 上面更新网体,按会员表是否激活进行处理
|
||||
for (SaOrderExt saOrderExt : retailOrderList) {
|
||||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType() ||
|
||||
EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()) {
|
||||
// 注册、升级才能算激活状态
|
||||
sourceMemberRangeExt.setEnableStatus(EYesNo.YES.getIntValue());
|
||||
}
|
||||
|
@ -118,12 +127,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
|
||||
// 订单指定产品盒数(计算等级使用)
|
||||
int boxNum = 0;
|
||||
for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
|
||||
if (RetailConstants.ALL_BOX_WARES_LIST.contains(saOrderItems.getWaresCode())) {
|
||||
boxNum += saOrderItems.getWaresQuantity();
|
||||
}
|
||||
}
|
||||
int boxNum = saOrderExt.getBoxNum();
|
||||
|
||||
// 个人累计消费pv
|
||||
BigDecimal orderAchieve = saOrderExt.getOrderAchieve();
|
||||
// 复购、重消,盒数、业绩算个人累计数据(盒数、业绩)
|
||||
|
@ -147,13 +152,35 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
&& boxNum > 0
|
||||
) {
|
||||
// 注册或升级订单并且存在盒数产品,才有 直推级差
|
||||
for (SaOrderWaresExt saOrderItems : saOrderExt.getOrderWaresExtList()) {
|
||||
// 直推级差
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, gradeMap, bonusConfigDTO, period, saOrderItems, saOrderExt));
|
||||
}
|
||||
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
|
||||
// TODO new 复购订单,计算复购级差
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt, gradeIdMap));
|
||||
|
||||
// 订单存在升级记录
|
||||
if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
|
||||
CuMemberLevel cuMemberLevel = memberLevelMap.get(saOrderExt.getPkId());
|
||||
if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
|
||||
BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
|
||||
if (bdGrade.getGradeValue() > sourceMemberRangeExt.getGradeValue()) {
|
||||
sourceMemberRangeExt.setPkGrade(bdGrade.getPkId());
|
||||
sourceMemberRangeExt.setGradeValue(bdGrade.getGradeValue());
|
||||
sourceMemberRangeExt.setGradeName(bdGrade.getGradeName());
|
||||
}
|
||||
}
|
||||
}
|
||||
// 订单存在自动升级记录(高级店主处理)
|
||||
if (autoLevelMap.containsKey(saOrderExt.getPkId())) {
|
||||
CuMemberLevel cuMemberLevel = autoLevelMap.get(saOrderExt.getPkId());
|
||||
if (gradeIdMap.containsKey(cuMemberLevel.getNewLevel())) {
|
||||
BdGrade bdGrade = gradeIdMap.get(cuMemberLevel.getNewLevel());
|
||||
CuMemberRetailRangeExt tmpMemberRetailRange = memberRangeExtMap.get(cuMemberLevel.getPkMember());
|
||||
tmpMemberRetailRange.setPkGrade(bdGrade.getPkId());
|
||||
tmpMemberRetailRange.setGradeValue(bdGrade.getGradeValue());
|
||||
tmpMemberRetailRange.setGradeName(bdGrade.getGradeName());
|
||||
}
|
||||
}
|
||||
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()
|
||||
&& boxNum > 0) {
|
||||
// 复购订单,计算复购级差
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt));
|
||||
}
|
||||
}
|
||||
if (cuMemberBonusRangeList.size() > 0) {
|
||||
|
@ -171,10 +198,8 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
/**
|
||||
* 累计团队盒数、业绩等
|
||||
*/
|
||||
public List<CuMemberAwards> calculateRetailRangeGradeAwards(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
||||
Integer boxNum, Map<Long, Date> activateMap) {
|
||||
// 会员奖衔升级列表
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
public void calculateRetailRangeGradeAwards(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, SaOrderExt saOrderExt,
|
||||
Integer boxNum, Map<Long, Date> activateMap) {
|
||||
// 订单会员
|
||||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
// 订单会员的推荐人
|
||||
|
@ -207,15 +232,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
targetMemberRangeExt = memberRangeExtMap.get(targetMemberRangeExt.getPkParent());
|
||||
}
|
||||
return cuMemberAwardsList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算直推级差收益
|
||||
*/
|
||||
List<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
Map<Integer, BdGrade> gradeMap, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||
SaOrderWaresExt saOrderItems, SaOrderExt saOrderExt) {
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt, Map<Integer, BdGrade> gradeIdMap) {
|
||||
// 直推级差返回数据
|
||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||
|
||||
|
@ -223,27 +246,28 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
// 推荐人
|
||||
long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
// 订单等级值
|
||||
Integer orderGradeValue = gradeIdMap.get(saOrderExt.getPkGrade()).getGradeValue();
|
||||
|
||||
// 商品最终价格
|
||||
BigDecimal waresPrice = saOrderItems.getWaresPrice();
|
||||
// 商品数量
|
||||
BigDecimal waresQuantityBig = new BigDecimal(saOrderItems.getWaresQuantity());
|
||||
|
||||
// 会员顺序
|
||||
int memberLevel = 0;
|
||||
// 前一个会员等级
|
||||
int beforeGradeValue = 0;
|
||||
// 前面累计奖金
|
||||
BigDecimal totalBonus = BigDecimal.ZERO;
|
||||
// 平级合伙人数量
|
||||
int v3Count = 1;
|
||||
// 计算直推级差
|
||||
while (true) {
|
||||
// 上一次处理的是公司等级,则结束退出
|
||||
if (beforeGradeValue == EGrade.COMPANY.getValue()) {
|
||||
break;
|
||||
}
|
||||
// 推荐人
|
||||
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
if (null == targetMemberRangeExt) {
|
||||
break;
|
||||
}
|
||||
// 推荐人的推荐人
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
// 会员顺序
|
||||
memberLevel += 1;
|
||||
|
||||
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|
||||
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|
||||
|
@ -254,33 +278,252 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
continue;
|
||||
}
|
||||
// 当前会员等级值
|
||||
int calGradeValue = targetMemberRangeExt.getGradeValue();
|
||||
int targetGradeValue = targetMemberRangeExt.getGradeValue();
|
||||
|
||||
// 直推级差收益
|
||||
BigDecimal rangeBonusIncome = BigDecimal.ZERO;
|
||||
|
||||
if (memberLevel == 1) {
|
||||
// 直推,拿80
|
||||
rangeBonusIncome = rangeBonusIncome.add(RetailConstants.FIRST_DIRECT);
|
||||
} else if (memberLevel == 2) {
|
||||
// 间推,拿20
|
||||
rangeBonusIncome = rangeBonusIncome.add(RetailConstants.FIRST_INDIRECT);
|
||||
if (EGrade.HAI_FAN.getValue() == orderGradeValue) {
|
||||
// 订单等级是会员、VIP
|
||||
if (targetGradeValue > beforeGradeValue) {
|
||||
// 当前会员等级大于上一个会员等级
|
||||
if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
|
||||
// V1 推拿 60
|
||||
rangeBonusIncome = RetailConstants.V1_V1;
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V1_V1);
|
||||
} else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
|
||||
// V2 推拿 80,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V2_V1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V2_V1.subtract(totalBonus));
|
||||
} else if (EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// V3 推拿 100,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V1.subtract(totalBonus));
|
||||
} else if (EGrade.VIP.getValue() == targetGradeValue) {
|
||||
// V4 推拿 200,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V4_V1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V4_V1.subtract(totalBonus));
|
||||
} else if (EGrade.S_VIP.getValue() == targetGradeValue) {
|
||||
// V5 推拿 208,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V5_V1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V5_V1.subtract(totalBonus));
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
|
||||
// V6 推拿 220 ,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V6_V1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V6_V1.subtract(totalBonus));
|
||||
} else if (EGrade.COMPANY.getValue() == targetGradeValue) {
|
||||
// V7 推拿 240,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V7_V1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V7_V1.subtract(totalBonus));
|
||||
}
|
||||
}
|
||||
} else if (EGrade.YOU_KE.getValue() == orderGradeValue) {
|
||||
// 订单等级是VIP
|
||||
if (targetGradeValue > beforeGradeValue) {
|
||||
// 当前会员等级大于上一个会员等级
|
||||
if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
|
||||
// V1 推拿 300
|
||||
rangeBonusIncome = RetailConstants.V1_V2;
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V1_V2);
|
||||
} else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
|
||||
// V2 推拿 400,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V2_V2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V2_V2.subtract(totalBonus));
|
||||
} else if (EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// V3 推拿 500,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V2.subtract(totalBonus));
|
||||
} else if (EGrade.VIP.getValue() == targetGradeValue) {
|
||||
// V4 推拿 1000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V4_V2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V4_V2.subtract(totalBonus));
|
||||
} else if (EGrade.S_VIP.getValue() == targetGradeValue) {
|
||||
// V5 推拿 1040,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V5_V2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V5_V2.subtract(totalBonus));
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
|
||||
// V6 推拿 1100,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V6_V2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V6_V2.subtract(totalBonus));
|
||||
} else if (EGrade.COMPANY.getValue() == targetGradeValue) {
|
||||
// V7 推拿 1200,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V7_V2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V7_V2.subtract(totalBonus));
|
||||
}
|
||||
}
|
||||
} else if (EGrade.MAKER.getValue() == orderGradeValue) {
|
||||
// 订单是合伙人
|
||||
if (targetGradeValue > beforeGradeValue) {
|
||||
// 当前等级大于之前等级
|
||||
if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
|
||||
// V1 推拿 600
|
||||
rangeBonusIncome = RetailConstants.V1_V3;
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V1_V3);
|
||||
} else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
|
||||
// V2 推拿 800,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V2_V3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V2_V3.subtract(totalBonus));
|
||||
} else if (EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// V3 推拿 1000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V3_1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V3_1.subtract(totalBonus));
|
||||
} else if (EGrade.VIP.getValue() == targetGradeValue) {
|
||||
// V4 推拿 2000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V4_V3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V4_V3.subtract(totalBonus));
|
||||
} else if (EGrade.S_VIP.getValue() == targetGradeValue) {
|
||||
// V5 推拿 2080,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V5_V3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V5_V3.subtract(totalBonus));
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
|
||||
// V6 推拿 2200,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V6_V3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V6_V3.subtract(totalBonus));
|
||||
} else if (EGrade.COMPANY.getValue() == targetGradeValue) {
|
||||
// V7 推拿 2400,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V7_V3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V7_V3.subtract(totalBonus));
|
||||
}
|
||||
} else if (EGrade.MAKER.getValue() == beforeGradeValue
|
||||
&& EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// 之前和现在都是合伙人,处理平级
|
||||
if (v3Count == 1) {
|
||||
// V3第一平级 推拿 1200,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V3_2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V3_2.subtract(totalBonus));
|
||||
v3Count++;
|
||||
} else if (v3Count == 2) {
|
||||
// V3第二平级 推拿 1300,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V3_3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V3_3.subtract(totalBonus));
|
||||
v3Count++;
|
||||
}
|
||||
}
|
||||
} else if (EGrade.VIP.getValue() == orderGradeValue) {
|
||||
// 订单是合伙人
|
||||
if (targetGradeValue > beforeGradeValue) {
|
||||
// 当前等级大于之前等级
|
||||
if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
|
||||
// V1 推拿 1200
|
||||
rangeBonusIncome = RetailConstants.V1_V4;
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V1_V4);
|
||||
} else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
|
||||
// V2 推拿 1600,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V2_V4.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V2_V4.subtract(totalBonus));
|
||||
} else if (EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// V3 推拿 2000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V4_1.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V4_1.subtract(totalBonus));
|
||||
} else if (EGrade.VIP.getValue() == targetGradeValue) {
|
||||
// V4 推拿 4000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V4_V4.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V4_V4.subtract(totalBonus));
|
||||
} else if (EGrade.S_VIP.getValue() == targetGradeValue) {
|
||||
// V5 推拿 4160,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V5_V4.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V5_V4.subtract(totalBonus));
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
|
||||
// V6 推拿 4400,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V6_V4.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V6_V4.subtract(totalBonus));
|
||||
} else if (EGrade.COMPANY.getValue() == targetGradeValue) {
|
||||
// V7 推拿 4800,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V7_V4.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V7_V4.subtract(totalBonus));
|
||||
}
|
||||
} else if (EGrade.MAKER.getValue() == beforeGradeValue
|
||||
&& EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// 之前和现在都是合伙人,处理平级
|
||||
if (v3Count == 1) {
|
||||
// V3第一平级 推拿 2400,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V4_2.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V4_2.subtract(totalBonus));
|
||||
v3Count++;
|
||||
} else if (v3Count == 2) {
|
||||
// V3第二平级 推拿 2600,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V3_V4_3.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V3_V4_3.subtract(totalBonus));
|
||||
v3Count++;
|
||||
}
|
||||
}
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == orderGradeValue) {
|
||||
// 订单是分公司
|
||||
if (targetGradeValue >= EGrade.VIP.getValue() && targetGradeValue > beforeGradeValue) {
|
||||
// 博羚店主以上才有级差 并且 当前等级大于之前等级
|
||||
if (EGrade.VIP.getValue() == targetGradeValue) {
|
||||
// 博羚店主拿 50000
|
||||
rangeBonusIncome = RetailConstants.V4_V6.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V4_V6.subtract(totalBonus));
|
||||
} else if (EGrade.S_VIP.getValue() == targetGradeValue) {
|
||||
// 高级店主拿 52000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V5_V6.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V5_V6.subtract(totalBonus));
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
|
||||
// 分公司拿 55000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V6_V6.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V6_V6.subtract(totalBonus));
|
||||
} else if (EGrade.COMPANY.getValue() == targetGradeValue) {
|
||||
// 总公司拿 60000,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.V7_V6.subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.V7_V6.subtract(totalBonus));
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO new
|
||||
|
||||
// 前一级会员等级
|
||||
beforeGradeValue = targetGradeValue;
|
||||
|
||||
if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 处理直推级差收益
|
||||
// 会员奖金
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
|
||||
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_RANGE_INCOME.getValue());
|
||||
// 会员级差
|
||||
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
|
||||
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
|
||||
cuMemberBonusRange.setCalAchieve(waresPrice);
|
||||
cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount());
|
||||
cuMemberBonusRange.setPretaxIncome(rangeBonusIncome);
|
||||
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
|
||||
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
|
||||
cuMemberBonusRange.setPkOrderItems(saOrderItems.getPkId());
|
||||
cuMemberBonusRange.setPkOrder(saOrderExt.getPkId());
|
||||
cuMemberBonusRange.setPkOrderItems(0L);
|
||||
rangeRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
|
||||
|
@ -293,6 +536,141 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
return memberBonusRangeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算复购级差收益
|
||||
*/
|
||||
List<CuMemberBonusRange> calculateRetailRepurRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt) {
|
||||
// 直推级差返回数据
|
||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||
|
||||
// 订单下单人自己
|
||||
CuMemberRetailRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
// 推荐人
|
||||
long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
// 商品盒数
|
||||
BigDecimal boxNum = new BigDecimal(saOrderExt.getBoxNum());
|
||||
|
||||
// 前一个会员等级
|
||||
int beforeGradeValue = 0;
|
||||
// 前面累计奖金
|
||||
BigDecimal totalBonus = BigDecimal.ZERO;
|
||||
// 平级合伙人数量
|
||||
int v3Count = 1;
|
||||
// 计算直推级差
|
||||
while (true) {
|
||||
// 上一次处理的是公司等级,则结束退出
|
||||
if (beforeGradeValue == EGrade.COMPANY.getValue()) {
|
||||
break;
|
||||
}
|
||||
// 推荐人
|
||||
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (null == targetMemberRangeExt) {
|
||||
break;
|
||||
}
|
||||
// 推荐人的推荐人
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
|
||||
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()
|
||||
|| ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory()
|
||||
|| targetMemberRangeExt.getEnableStatus() == EYesNo.NO.getIntValue()
|
||||
|| targetMemberRangeExt.getGradeValue() == EGrade.START_UP.getValue()
|
||||
|| EIncomeStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getIncomeStatus()) {
|
||||
// 停算收益、非正常会员、未激活、等级为顾客、停止收益,直接跳过
|
||||
continue;
|
||||
}
|
||||
// 当前会员等级值
|
||||
int targetGradeValue = targetMemberRangeExt.getGradeValue();
|
||||
|
||||
// 复购级差收益
|
||||
BigDecimal rangeBonusIncome = BigDecimal.ZERO;
|
||||
|
||||
if (targetGradeValue > beforeGradeValue) {
|
||||
// 当前等级大于之前等级
|
||||
if (EGrade.HAI_FAN.getValue() == targetGradeValue) {
|
||||
// V1 拿 6
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V1.multiply(boxNum);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V1).multiply(boxNum);
|
||||
} else if (EGrade.YOU_KE.getValue() == targetGradeValue) {
|
||||
// V2 拿 8,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V2.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V2.subtract(totalBonus).multiply(boxNum));
|
||||
} else if (EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// V3 拿 10,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V3_1.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_1.subtract(totalBonus).multiply(boxNum));
|
||||
} else if (EGrade.VIP.getValue() == targetGradeValue) {
|
||||
// V4 拿 20,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V4.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V4.subtract(totalBonus).multiply(boxNum));
|
||||
} else if (EGrade.S_VIP.getValue() == targetGradeValue) {
|
||||
// V5 拿 20.8,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V5.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V5.subtract(totalBonus).multiply(boxNum));
|
||||
} else if (EGrade.BRANCH_COMPANY.getValue() == targetGradeValue) {
|
||||
// V6 拿 22,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V6.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V6.subtract(totalBonus).multiply(boxNum));
|
||||
} else if (EGrade.COMPANY.getValue() == targetGradeValue) {
|
||||
// V7 拿 24,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V7.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V7.subtract(totalBonus).multiply(boxNum));
|
||||
}
|
||||
} else if (EGrade.MAKER.getValue() == beforeGradeValue
|
||||
&& EGrade.MAKER.getValue() == targetGradeValue) {
|
||||
// 之前和现在都是合伙人,处理平级
|
||||
if (v3Count == 1) {
|
||||
// V3第一平级 推拿 12,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V3_2.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_2.subtract(totalBonus).multiply(boxNum));
|
||||
v3Count++;
|
||||
} else if (v3Count == 2) {
|
||||
// V3第二平级 推拿 13,或者减去之前累计
|
||||
rangeBonusIncome = RetailConstants.REPURCHASE_V3_3.multiply(boxNum).subtract(totalBonus);
|
||||
// 前面累计的奖金
|
||||
totalBonus = totalBonus.add(RetailConstants.REPURCHASE_V3_3.subtract(totalBonus).multiply(boxNum));
|
||||
v3Count++;
|
||||
}
|
||||
}
|
||||
|
||||
// 前一级会员等级
|
||||
beforeGradeValue = targetGradeValue;
|
||||
|
||||
if (rangeBonusIncome.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 处理复购级差收益
|
||||
// 会员奖金
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate() == null ? saOrderExt.getPkRate() : targetMemberRangeExt.getPkRate());
|
||||
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.RETAIL_REPURCHASE_INCOME.getValue());
|
||||
// 会员级差
|
||||
CuMemberBonusRange cuMemberBonusRange = getCuMemberRetailBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
|
||||
cuMemberBonusRange.setCalValue(BigDecimal.ZERO);
|
||||
cuMemberBonusRange.setCalAchieve(saOrderExt.getOrderAmount());
|
||||
cuMemberBonusRange.setPretaxIncome(rangeBonusIncome);
|
||||
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkGrade());
|
||||
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkGrade());
|
||||
cuMemberBonusRange.setPkOrder(saOrderExt.getPkId());
|
||||
cuMemberBonusRange.setPkOrderItems(0L);
|
||||
rangeRepurRetailRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurRangeIncome(ComputeUtil.computeAdd(cuMemberBonus.getRetailRangeIncome(), cuMemberBonusRange.getPretaxIncome()));
|
||||
setRetailTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
|
||||
}
|
||||
memberBonusRangeList.add(cuMemberBonusRange);
|
||||
}
|
||||
}
|
||||
return memberBonusRangeList;
|
||||
}
|
||||
|
||||
private CuMemberBonusRange getCuMemberRetailBonusRange(SaOrder saOrderExt, CuMemberRetailRangeExt targetMemberRangeExt,
|
||||
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
||||
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
|
||||
|
|
|
@ -31,50 +31,16 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
@Autowired
|
||||
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
|
||||
@Autowired
|
||||
private ICuMemberBonusService iCuMemberBonusService;
|
||||
@Autowired
|
||||
private ICuMemberBonusPushService iCuMemberBonusPushService;
|
||||
@Autowired
|
||||
private ICuMemberBonusDetailService iCuMemberBonusDetailService;
|
||||
@Autowired
|
||||
private ICuMemberBonusRangeService iCuMemberBonusRangeService;
|
||||
@Autowired
|
||||
private BonusSettleRangeHandle bonusSettleRangeHandle;
|
||||
|
||||
private ICuMemberBonusService cuMemberBonusService;
|
||||
|
||||
private ICuMemberBonusPushService cuMemberBonusPushService;
|
||||
|
||||
private ICuMemberBonusExpandService cuMemberBonusExpandService;
|
||||
|
||||
private ICuMemberBonusCoachService cuMemberBonusCoachService;
|
||||
|
||||
private ICuMemberBonusDetailService cuMemberBonusDetailService;
|
||||
|
||||
private ICuMemberBonusRangeService cuMemberBonusRangeService;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusPushService(ICuMemberBonusPushService cuMemberBonusPushService) {
|
||||
this.cuMemberBonusPushService = cuMemberBonusPushService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusExpandService(ICuMemberBonusExpandService cuMemberBonusExpandService) {
|
||||
this.cuMemberBonusExpandService = cuMemberBonusExpandService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusCoachService(ICuMemberBonusCoachService cuMemberBonusCoachService) {
|
||||
this.cuMemberBonusCoachService = cuMemberBonusCoachService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusDetailService(ICuMemberBonusDetailService cuMemberBonusDetailService) {
|
||||
this.cuMemberBonusDetailService = cuMemberBonusDetailService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusRangeService(ICuMemberBonusRangeService cuMemberBonusRangeService) {
|
||||
this.cuMemberBonusRangeService = cuMemberBonusRangeService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusService(ICuMemberBonusService cuMemberBonusService) {
|
||||
this.cuMemberBonusService = cuMemberBonusService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void calculateCuMemberBonus(String settleDate, List<SaOrderExt> saOrderExtList) {
|
||||
|
@ -96,7 +62,7 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 今天和昨天是否同月
|
||||
Boolean isSameMonth = DateUtils.getMonth(settleDate).equals(DateUtils.getMonth(yesterday));
|
||||
|
||||
// 计算新零售团队奖金
|
||||
// 计算新零售奖金
|
||||
bonusSettleRangeHandle.calculateRetailBonusByDay(settleDate, cuMemberBonusMap, bonusConfigDTO, recordDetailVO,
|
||||
period, yesterdayPeriod, isSameMonth);
|
||||
|
||||
|
@ -115,24 +81,18 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
* @param bonusRecordDetailVO 奖金明细表
|
||||
*/
|
||||
void insertCuMemberBonus(String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusRecordDetailVO bonusRecordDetailVO) {
|
||||
cuMemberBonusPushService.deleteCuMemberBonusPush(period);
|
||||
cuMemberBonusExpandService.deleteCuMemberBonusExpand(period);
|
||||
cuMemberBonusCoachService.deleteCuMemberBonusCoach(period);
|
||||
cuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
|
||||
cuMemberBonusRangeService.deleteCuMemberBonusRange(period);
|
||||
cuMemberBonusService.deleteCuMemberBonus(period);
|
||||
iCuMemberBonusPushService.deleteCuMemberBonusPush(period);
|
||||
iCuMemberBonusDetailService.deleteCuMemberBonusDetail(period);
|
||||
iCuMemberBonusRangeService.deleteCuMemberBonusRange(period);
|
||||
iCuMemberBonusService.deleteCuMemberBonus(period);
|
||||
if (cuMemberBonusMap.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<CuMemberBonusPush> batchMemberBonusPushList = new ArrayList<>();
|
||||
List<CuMemberBonusExpand> batchMemberBonusExpandList = new ArrayList<>();
|
||||
List<CuMemberBonusCoach> batchMemberBonusCoachList = new ArrayList<>();
|
||||
List<CuMemberBonusDetail> batchMemberBonusDetailList = new ArrayList<>();
|
||||
List<CuMemberBonusRange> batchMemberBonusRangeList = new ArrayList<>();
|
||||
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
|
||||
List<CuMemberBonusPush> cuMemberBonusPushList = bonusRecordDetailVO.getCuMemberBonusPushList();
|
||||
List<CuMemberBonusExpand> cuMemberBonusExpandList = bonusRecordDetailVO.getCuMemberBonusExpandList();
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = bonusRecordDetailVO.getCuMemberBonusCoachList();
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusRecordDetailVO.getCuMemberBonusDetailList();
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusRecordDetailVO.getCuMemberBonusRangeList();
|
||||
if (cuMemberBonusPushList != null && cuMemberBonusPushList.size() > 0) {
|
||||
|
@ -140,16 +100,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId()));
|
||||
batchMemberBonusPushList.addAll(cuMemberBonusPushList);
|
||||
}
|
||||
if (cuMemberBonusExpandList != null && cuMemberBonusExpandList.size() > 0) {
|
||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand ->
|
||||
cuMemberBonusExpand.setPkBonus(cuMemberBonusMap.get(cuMemberBonusExpand.getPkBonus()).getPkId()));
|
||||
batchMemberBonusExpandList.addAll(cuMemberBonusExpandList);
|
||||
}
|
||||
if (cuMemberBonusCoachList != null && cuMemberBonusCoachList.size() > 0) {
|
||||
cuMemberBonusCoachList.forEach(cuMemberBonusCoach ->
|
||||
cuMemberBonusCoach.setPkBonus(cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus()).getPkId()));
|
||||
batchMemberBonusCoachList.addAll(cuMemberBonusCoachList);
|
||||
}
|
||||
if (cuMemberBonusDetailList != null && cuMemberBonusDetailList.size() > 0) {
|
||||
cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
|
||||
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
|
||||
|
@ -161,17 +111,15 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
batchMemberBonusRangeList.addAll(cuMemberBonusRangeList);
|
||||
}
|
||||
// 插入奖金主表
|
||||
cuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
|
||||
Set<Long> memberIdSet = cuMemberBonusService.queryMemberBonusByPeriod(period);
|
||||
cuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
|
||||
cuMemberBonusExpandService.batchInsertCuMemberBonusExpand(batchMemberBonusExpandList, memberIdSet);
|
||||
cuMemberBonusCoachService.batchInsertCuMemberBonusCoach(batchMemberBonusCoachList, memberIdSet);
|
||||
cuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
|
||||
cuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
|
||||
iCuMemberBonusService.batchInsertCuMemberBonus(cuMemberBonusList);
|
||||
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(period);
|
||||
iCuMemberBonusPushService.batchInsertCuMemberBonusPush(batchMemberBonusPushList, memberIdSet);
|
||||
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(batchMemberBonusDetailList, memberIdSet);
|
||||
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(batchMemberBonusRangeList, memberIdSet);
|
||||
}
|
||||
|
||||
private List<CuMemberBonus> setCuMemberBonusSeq(String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
List<Long> pkIdList = cuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
|
||||
List<Long> pkIdList = iCuMemberBonusService.batchQueryCuMemberBonusSeq(cuMemberBonusMap.size());
|
||||
int i = 0;
|
||||
// 判断时间,重算的时候直接是已公布
|
||||
Integer grantStatus = EGrantStatus.SETTLED.getValue();
|
||||
|
|
|
@ -1,51 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberBonusCoachService;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusCoach;
|
||||
import com.hzs.bonus.bonus.mapper.CuMemberBonusCoachMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 会员奖金-辅导收益明细表 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberBonusCoachServiceImpl extends ServiceImpl<CuMemberBonusCoachMapper, CuMemberBonusCoach> implements ICuMemberBonusCoachService {
|
||||
|
||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusSettle(CuMemberBonusSettle cuMemberBonusSettle) {
|
||||
this.cuMemberBonusSettle = cuMemberBonusSettle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteCuMemberBonusCoach(Integer period) {
|
||||
baseMapper.deleteCuMemberBonusCoach(period);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchInsertCuMemberBonusCoach(List<CuMemberBonusCoach> cuMemberBonusCoachList, Set<Long> memberIdSet) {
|
||||
if (cuMemberBonusCoachList.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoaches = new ArrayList<>();
|
||||
for (CuMemberBonusCoach cuMemberBonusCoach : cuMemberBonusCoachList) {
|
||||
if (memberIdSet.contains(cuMemberBonusCoach.getPkBonus())) {
|
||||
cuMemberBonusCoaches.add(cuMemberBonusCoach);
|
||||
}
|
||||
}
|
||||
if (cuMemberBonusCoaches.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<List<?>> lists = cuMemberBonusSettle.handleCutList(cuMemberBonusCoaches);
|
||||
lists.forEach(list ->
|
||||
baseMapper.batchInsertCuMemberBonusCoach(list));
|
||||
}
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.achieve.service.impl.CuMemberBonusSettle;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberBonusExpandService;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberBonusExpand;
|
||||
import com.hzs.bonus.bonus.mapper.CuMemberBonusExpandMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 会员奖金-拓展收益明细表 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberBonusExpandServiceImpl extends ServiceImpl<CuMemberBonusExpandMapper, CuMemberBonusExpand> implements ICuMemberBonusExpandService {
|
||||
|
||||
@Autowired
|
||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||
|
||||
@Override
|
||||
public void deleteCuMemberBonusExpand(Integer period) {
|
||||
baseMapper.deleteCuMemberBonusExpand(period);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchInsertCuMemberBonusExpand(List<CuMemberBonusExpand> cuMemberBonusExpandList, Set<Long> memberIdSet) {
|
||||
if (cuMemberBonusExpandList.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<CuMemberBonusExpand> memberBonusExpands = new ArrayList<>();
|
||||
for (CuMemberBonusExpand cuMemberBonusExpand : cuMemberBonusExpandList) {
|
||||
if (memberIdSet.contains(cuMemberBonusExpand.getPkBonus())) {
|
||||
memberBonusExpands.add(cuMemberBonusExpand);
|
||||
}
|
||||
}
|
||||
if (memberBonusExpands.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<List<?>> lists = cuMemberBonusSettle.handleCutList(memberBonusExpands);
|
||||
lists.forEach(list ->
|
||||
baseMapper.batchInsertCuMemberBonusExpand(list));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -56,10 +56,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
|
||||
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
|
||||
|
||||
private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
|
||||
|
||||
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
|
||||
|
||||
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
|
||||
|
||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||
|
@ -83,16 +79,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
this.cuMemberBonusSettle = cuMemberBonusSettle;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusExpandMapper(CuMemberBonusExpandMapper cuMemberBonusExpandMapper) {
|
||||
this.cuMemberBonusExpandMapper = cuMemberBonusExpandMapper;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusCoachMapper(CuMemberBonusCoachMapper cuMemberBonusCoachMapper) {
|
||||
this.cuMemberBonusCoachMapper = cuMemberBonusCoachMapper;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusRangeMapper(CuMemberBonusRangeMapper cuMemberBonusRangeMapper) {
|
||||
this.cuMemberBonusRangeMapper = cuMemberBonusRangeMapper;
|
||||
|
@ -321,31 +307,9 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
memberBonusDetailVO.setSourceMemberName(cuMemberBonusDetail.getSourceMemberName());
|
||||
memberBonusDetailVOList.add(memberBonusDetailVO);
|
||||
});
|
||||
} else if (EBonusItems.EXPANSION_INCOME.getValue() == bonusItemsValue ||
|
||||
EBonusItems.CONSUMPTION_EXPANSION_INCOME.getValue() == bonusItemsValue) {
|
||||
// 拓展收益、复购拓展收益
|
||||
List<CuMemberBonusExpandExt> cuMemberBonusExpandList = cuMemberBonusExpandMapper.queryMemberBonusExpandByBonusItems(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusExpandList);
|
||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
|
||||
MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusExpand, MemberBonusDetailVO.class);
|
||||
memberBonusDetailVO.setSourceMemberCode(cuMemberBonusExpand.getSourceMemberCode());
|
||||
memberBonusDetailVO.setSourceMemberName(cuMemberBonusExpand.getSourceMemberName());
|
||||
memberBonusDetailVOList.add(memberBonusDetailVO);
|
||||
});
|
||||
} else if (EBonusItems.COACHING_INCOME.getValue() == bonusItemsValue) {
|
||||
// 辅导收益
|
||||
// 拓展收益、复购拓展收益
|
||||
List<CuMemberBonusCoachExt> cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItems(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusCoachList);
|
||||
cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> {
|
||||
MemberBonusDetailVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusCoach, MemberBonusDetailVO.class);
|
||||
memberBonusDetailVO.setSourceMemberCode(cuMemberBonusCoach.getSourceMemberCode());
|
||||
memberBonusDetailVO.setSourceMemberName(cuMemberBonusCoach.getSourceMemberName());
|
||||
memberBonusDetailVOList.add(memberBonusDetailVO);
|
||||
});
|
||||
} else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue) {
|
||||
// 复购极差
|
||||
// 拓展收益、复购拓展收益
|
||||
} else if (EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue
|
||||
|| EBonusItems.RETAIL_REPURCHASE_INCOME.getValue() == bonusItemsValue) {
|
||||
// 直推级差收益、复购级差收益
|
||||
List<CuMemberBonusRangeExt> cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItems(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusRangeList);
|
||||
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
|
||||
|
@ -355,8 +319,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
memberBonusDetailVOList.add(memberBonusDetailVO);
|
||||
});
|
||||
} else {
|
||||
// 其他收益 服务补贴、分红收益、嗨粉直推
|
||||
// 拓展收益、复购拓展收益
|
||||
// 其他收益
|
||||
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItems(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusDetailList);
|
||||
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
|
||||
|
@ -410,27 +373,9 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusDetail, MemberBonusDetailSerVO.class);
|
||||
memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
||||
});
|
||||
} else if (EBonusItems.EXPANSION_INCOME.getValue() == bonusItemsValue ||
|
||||
EBonusItems.CONSUMPTION_EXPANSION_INCOME.getValue() == bonusItemsValue) {
|
||||
// 拓展收益、复购拓展收益
|
||||
List<CuMemberBonusExpandExt> cuMemberBonusExpandList = cuMemberBonusExpandMapper.queryMemberBonusExpandByBonusItemsForServer(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusExpandList);
|
||||
cuMemberBonusExpandList.forEach(cuMemberBonusExpand -> {
|
||||
MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusExpand, MemberBonusDetailSerVO.class);
|
||||
memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
||||
});
|
||||
} else if (EBonusItems.COACHING_INCOME.getValue() == bonusItemsValue) {
|
||||
// 辅导收益
|
||||
// 拓展收益、复购拓展收益
|
||||
List<CuMemberBonusCoachExt> cuMemberBonusCoachList = cuMemberBonusCoachMapper.queryMemberBonusCoachByBonusItemsForServer(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusCoachList);
|
||||
cuMemberBonusCoachList.forEach(cuMemberBonusCoach -> {
|
||||
MemberBonusDetailSerVO memberBonusDetailVO = BeanUtil.copyProperties(cuMemberBonusCoach, MemberBonusDetailSerVO.class);
|
||||
memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
||||
});
|
||||
} else if (EBonusItems.REPURCHASE_RANGE_INCOME.getValue() == bonusItemsValue || EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue) {
|
||||
// 复购极差
|
||||
// 拓展收益、复购拓展收益
|
||||
} else if (EBonusItems.RETAIL_RANGE_INCOME.getValue() == bonusItemsValue
|
||||
|| EBonusItems.RETAIL_REPURCHASE_INCOME.getValue() == bonusItemsValue) {
|
||||
// 直推级差收益、复购级差收益
|
||||
List<CuMemberBonusRangeExt> cuMemberBonusRangeList = cuMemberBonusRangeMapper.queryMemberBonusRangeByBonusItemsForServer(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusRangeList);
|
||||
cuMemberBonusRangeList.forEach(cuMemberBonusRange -> {
|
||||
|
@ -438,8 +383,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
memberBonusDetailSerVoS.add(memberBonusDetailVO);
|
||||
});
|
||||
} else {
|
||||
// 其他收益 服务补贴、分红收益、嗨粉直推
|
||||
// 拓展收益、复购拓展收益
|
||||
// 其他收益
|
||||
List<CuMemberBonusDetailExt> cuMemberBonusDetailList = cuMemberBonusDetailMapper.queryMemberBonusDetailByBonusItemsForServer(bonusParam);
|
||||
dataTable = getDataTable(cuMemberBonusDetailList);
|
||||
cuMemberBonusDetailList.forEach(cuMemberBonusDetail -> {
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
package com.hzs.bonus.detail.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员信息-等级升级记录 Mapper 接口
|
||||
*/
|
||||
public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> {
|
||||
|
||||
/**
|
||||
* 回退会员等级
|
||||
*/
|
||||
void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 查询会员等级
|
||||
*/
|
||||
List<CuMemberLevel> queryCuMemberLevel(@Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate,
|
||||
@Param("upType") Integer upType);
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package com.hzs.bonus.detail.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员信息-等级升级记录 服务类
|
||||
*/
|
||||
public interface ICuMemberGradeService extends IService<CuMemberGrade> {
|
||||
|
||||
/**
|
||||
* 回退极差奖衔,每日重新结算,先把等级回退到前一天
|
||||
*
|
||||
* @param period 结算期间
|
||||
* @param rangeTableName 结算表
|
||||
*/
|
||||
List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName);
|
||||
|
||||
/**
|
||||
* 自动升级列表
|
||||
*
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
*/
|
||||
List<CuMemberLevel> listAutoLevel(Date startDate, Date endDate);
|
||||
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.hzs.bonus.detail.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.detail.mapper.CuMemberGradeMapper;
|
||||
import com.hzs.bonus.detail.service.ICuMemberGradeService;
|
||||
import com.hzs.common.core.enums.EUpgradeType;
|
||||
import com.hzs.common.domain.member.detail.CuMemberGrade;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员信息-等级升级记录 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberGradeServiceImpl extends ServiceImpl<CuMemberGradeMapper, CuMemberGrade> implements ICuMemberGradeService {
|
||||
|
||||
@Override
|
||||
public List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName) {
|
||||
// 根据手动升级记录,更新日结表
|
||||
baseMapper.updateCuMemberGrade(rangeTableName, period);
|
||||
// 购买升级记录列表
|
||||
return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.BUY_UPGRADE.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberLevel> listAutoLevel(Date startDate, Date endDate) {
|
||||
// 自动升级记录列表
|
||||
return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.AUTO_UPGRADE.getValue());
|
||||
}
|
||||
}
|
|
@ -80,6 +80,7 @@
|
|||
recommend_num = 0,
|
||||
team_num = 0,
|
||||
enable_status = 1,
|
||||
pk_grade = (select pk_id from bd_grade where del_flag = 0 and grade_value = 20),
|
||||
region_address = 0,
|
||||
big_box_num = 0,
|
||||
small_box_num = 0,
|
||||
|
@ -109,6 +110,7 @@
|
|||
a.team_consume_pv = b.team_consume_pv,
|
||||
a.team_consume_amount = b.team_consume_amount,
|
||||
a.recommend_num = b.recommend_num, a.team_num = b.team_num,
|
||||
a.pk_grade = b.pk_grade,
|
||||
a.enable_status = b.enable_status,
|
||||
a.big_box_num = b.big_box_num, a.small_box_num = b.small_box_num,
|
||||
a.big_team_pv = b.big_team_pv, a.small_team_pv = b.small_team_pv
|
||||
|
|
|
@ -98,4 +98,29 @@
|
|||
</if>
|
||||
</select>
|
||||
|
||||
<update id="updateCuMemberLevel">
|
||||
merge into cu_member a
|
||||
using (
|
||||
select cm.pk_id, m.new_level pk_grade
|
||||
from cu_member cm
|
||||
inner join(
|
||||
select a.*
|
||||
from cu_member_level a
|
||||
inner join (
|
||||
select pk_member, max(pk_id) pk_id
|
||||
from cu_member_level
|
||||
where del_flag = 0
|
||||
and up_type = 4
|
||||
and upgrade_time >= #{startDate,jdbcType=DATE}
|
||||
and upgrade_time < #{endDate,jdbcType=DATE}
|
||||
group by pk_member) b
|
||||
on a.pk_id = b.pk_id) m
|
||||
on cm.pk_id = m.pk_member
|
||||
where cm.pk_settle_grade < m.new_level
|
||||
) b
|
||||
on (a.pk_id = b.pk_id)
|
||||
when matched then
|
||||
update set a.pk_settle_grade = b.pk_grade, a.modified_time = sysdate
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -1,269 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusCoachMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberBonusCoach" type="com.hzs.common.domain.member.ext.CuMemberBonusCoachExt">
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="PK_BONUS" property="pkBonus"/>
|
||||
<result column="PK_ORDER" property="pkOrder"/>
|
||||
<result column="PK_BONUS_ITEMS" property="pkBonusItems"/>
|
||||
<result column="INCOME_STATUS" property="incomeStatus"/>
|
||||
<result column="CAL_TYPE" property="calType"/>
|
||||
<result column="CAL_ACHIEVE" property="calAchieve"/>
|
||||
<result column="CAL_VALUE" property="calValue"/>
|
||||
<result column="PRETAX_INCOME" property="pretaxIncome"/>
|
||||
<result column="INCOME_TAX" property="incomeTax"/>
|
||||
<result column="REAL_INCOME" property="realIncome"/>
|
||||
<result column="CURRENT_GENERATION" property="currentGeneration"/>
|
||||
<result column="COACH_GENERATION" property="coachGeneration"/>
|
||||
<result column="COACH_NO_CAPPING" property="coachNoCapping"/>
|
||||
<result column="COACH_CAPPING" property="coachCapping"/>
|
||||
<result column="COACH_NORMAL_HALF" property="coachNormalHalf"/>
|
||||
<result column="COACH_NORMAL_REAL" property="coachNormalReal"/>
|
||||
<result column="REMARK" property="remark"/>
|
||||
<result column="INCOME_RATIO" property="incomeRatio"/>
|
||||
<result column="INCOME_DIAL_RATIO" property="incomeDialRatio"/>
|
||||
<result column="ORDER_DIAL_RATIO" property="orderDialRatio"/>
|
||||
<result column="ORDER_CODE" property="orderCode"/>
|
||||
<result column="ORDER_TYPE" property="orderType"/>
|
||||
<result column="PK_SOURCE_COUNTRY" property="pkSourceCountry"/>
|
||||
<result column="SOURCE_COUNTRY_NAME" property="sourceCountryName"/>
|
||||
<result column="SOURCE_MEMBER_CODE" property="sourceMemberCode"/>
|
||||
<result column="SOURCE_MEMBER_NAME" property="sourceMemberName"/>
|
||||
<result column="PK_RATE" property="pkRate"/>
|
||||
<result column="ORDER_AMOUNT" property="orderAmount"/>
|
||||
<result column="ORDER_ACHIEVE" property="orderAchieve"/>
|
||||
<result column="MEMBER_CODE" property="memberCode"/>
|
||||
<result column="MEMBER_NAME" property="memberName"/>
|
||||
<result column="PK_SETTLE_GRADE" property="pkSettleGrade"/>
|
||||
<result column="PK_AWARDS" property="pkAwards"/>
|
||||
<result column="VERTEX_NAME" property="vertexName"/>
|
||||
<result column="TEAM_NAME" property="teamName"/>
|
||||
<result column="TEAM_CODE" property="teamCode"/>
|
||||
<result column="SETTLE_DATE" property="settleDate"/>
|
||||
<result column="SETTLE_COUNTRY" property="settleCountry"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="OUT_EXCHANGE_RATE" property="outExchangeRate"/>
|
||||
|
||||
<result column="service_code" property="serviceCode"/>
|
||||
<result column="pk_vertex" property="pkVertex"/>
|
||||
<result column="nick_name" property="nickName"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="batchInsertCuMemberBonusCoach">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberBonusCoachList" separator=" ">
|
||||
into cu_member_bonus_coach(pk_bonus,pk_order,pk_bonus_items,income_status,
|
||||
cal_type,cal_achieve,cal_value,pretax_income,
|
||||
income_tax,real_income,current_generation,coach_generation,coach_no_capping,
|
||||
coach_capping,coach_normal_half,coach_normal_real,remark,
|
||||
income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
|
||||
values
|
||||
(
|
||||
#{item.pkBonus},#{item.pkOrder},#{item.pkBonusItems},#{item.incomeStatus},
|
||||
#{item.calType},#{item.calAchieve},#{item.calValue},#{item.pretaxIncome},
|
||||
#{item.incomeTax},#{item.realIncome},#{item.currentGeneration},#{item.coachGeneration},
|
||||
#{item.coachNoCapping},#{item.coachCapping},#{item.coachNormalHalf},#{item.coachNormalReal},
|
||||
#{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio},
|
||||
#{item.pkCountry},#{item.pkCreator}
|
||||
)
|
||||
</foreach>
|
||||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
<delete id="deleteCuMemberBonusCoach">
|
||||
delete
|
||||
from CU_MEMBER_BONUS_COACH
|
||||
where PK_BONUS in (
|
||||
select pk_id
|
||||
from cu_member_bonus
|
||||
where period = #{period}
|
||||
and grant_status <= 2)
|
||||
</delete>
|
||||
|
||||
<select id="queryMemberBonusCoachByBonusItems" resultMap="CuMemberBonusCoach">
|
||||
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,so.pk_rate,so.pk_country pk_source_country,bc.out_exchange_rate,so.order_amount,
|
||||
so.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,b.current_generation,b.coach_generation,
|
||||
b.coach_no_capping,b.coach_capping,b.coach_normal_half,b.coach_normal_real,
|
||||
cu.service_code,
|
||||
cu.pk_vertex,
|
||||
cu.nick_name
|
||||
from sa_order so
|
||||
inner join (
|
||||
select cb.pk_member,cc.pk_order,cb.period,cb.pk_country,cc.pk_bonus_items,cc.income_status,cc.CAL_ACHIEVE,cc.pretax_income,cc.income_tax,cc.real_income,
|
||||
cc.remark,cc.income_ratio,cc.income_dial_ratio,cc.order_dial_ratio,cc.current_generation,cc.coach_generation,cc.coach_no_capping,
|
||||
cc.coach_capping,cc.coach_normal_half,cc.coach_normal_real from
|
||||
cu_member_bonus cb
|
||||
inner join cu_member_bonus_coach cc
|
||||
on cb.pk_id = cc.pk_bonus
|
||||
where cb.income_status=0 and cc.income_status = 0
|
||||
and cc.pk_bonus_items = #{pkBonusItems}
|
||||
<if test="pkBonus != null">
|
||||
and cc.pk_bonus = #{pkBonus}
|
||||
</if>
|
||||
<if test="period != null">
|
||||
and cb.period =#{period}
|
||||
</if>
|
||||
) b
|
||||
on so.pk_id = b.pk_order
|
||||
inner join cu_member tar
|
||||
on b.pk_member = tar.pk_id
|
||||
inner join cu_member cu
|
||||
on so.pk_member = cu.pk_id
|
||||
inner 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=so.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
|
||||
<where>
|
||||
1=1 and b.pk_member=#{pkMember}
|
||||
<if test="orderCode != null and orderCode != ''">
|
||||
and so.order_code like #{orderCode}|| '%'
|
||||
</if>
|
||||
<if test="sourceMemberCode != null and sourceMemberCode != ''">
|
||||
and (cu.member_code = #{sourceMemberCode} or cu.service_code = #{sourceMemberCode})
|
||||
</if>
|
||||
<if test="sourceMemberName != null and sourceMemberName != ''">
|
||||
and (cu.member_name = #{sourceMemberName} or cu.nick_name = #{sourceMemberName})
|
||||
</if>
|
||||
<if test="startDate != null">
|
||||
and cp.settle_date >= #{startDate, jdbcType=DATE}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
and cp.settle_date < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
</where>
|
||||
order by b.period,b.pk_bonus_items,b.real_income desc
|
||||
</select>
|
||||
<select id="queryMemberBonusCoachByBonusItemsForServer" resultMap="CuMemberBonusCoach">
|
||||
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,so.pk_rate,bc.out_exchange_rate,so.order_amount,
|
||||
so.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,b.current_generation,b.coach_generation,
|
||||
b.coach_no_capping,b.coach_capping,b.coach_normal_half,b.coach_normal_real,bct.short_name settle_country from sa_order so
|
||||
inner join (
|
||||
select cb.pk_member,cc.pk_order,cb.period,cb.pk_country,cc.pk_bonus_items,cc.income_status,cc.CAL_ACHIEVE,cc.pretax_income,cc.income_tax,cc.real_income,
|
||||
cc.remark,cc.income_ratio,cc.income_dial_ratio,cc.order_dial_ratio,cc.current_generation,cc.coach_generation,
|
||||
cc.coach_no_capping,cc.coach_capping,cc.coach_normal_half,cc.coach_normal_real from cu_member_bonus cb
|
||||
inner join cu_member_bonus_coach cc
|
||||
on cb.pk_id = cc.pk_bonus
|
||||
where 1=1
|
||||
<if test="bonusParam.period != null">
|
||||
and cb.period =#{bonusParam.period}
|
||||
</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
|
||||
on so.pk_id = b.pk_order
|
||||
inner join cu_member tar
|
||||
on b.pk_member = tar.pk_id
|
||||
inner join cu_member cu
|
||||
on so.pk_member = cu.pk_id
|
||||
inner 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=so.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.orderType != null">
|
||||
and so.order_type = #{bonusParam.orderType}
|
||||
</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, so.order_code,b.current_generation</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>
|
|
@ -1,279 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberBonusExpandMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberBonusExpand" type="com.hzs.common.domain.member.ext.CuMemberBonusExpandExt">
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="PK_BONUS" property="pkBonus"/>
|
||||
<result column="PK_ORDER" property="pkOrder"/>
|
||||
<result column="PK_BONUS_ITEMS" property="pkBonusItems"/>
|
||||
<result column="INCOME_STATUS" property="incomeStatus"/>
|
||||
<result column="CAL_TYPE" property="calType"/>
|
||||
<result column="CAL_ACHIEVE" property="calAchieve"/>
|
||||
<result column="CAL_VALUE" property="calValue"/>
|
||||
<result column="PRETAX_INCOME" property="pretaxIncome"/>
|
||||
<result column="INCOME_TAX" property="incomeTax"/>
|
||||
<result column="REAL_INCOME" property="realIncome"/>
|
||||
<result column="CURRENT_TOUCH" property="currentTouch"/>
|
||||
<result column="EXPAND_TOUCH" property="expandTouch"/>
|
||||
<result column="EXPAND_NO_CAPPING" property="expandNoCapping"/>
|
||||
<result column="EXPAND_CAPPING" property="expandCapping"/>
|
||||
<result column="EXPAND_NORMAL_HALF" property="expandNormalHalf"/>
|
||||
<result column="EXPAND_NORMAL_REAL" property="expandNormalReal"/>
|
||||
<result column="REMARK" property="remark"/>
|
||||
<result column="INCOME_RATIO" property="incomeRatio"/>
|
||||
<result column="INCOME_DIAL_RATIO" property="incomeDialRatio"/>
|
||||
<result column="ORDER_DIAL_RATIO" property="orderDialRatio"/>
|
||||
<result column="ORDER_CODE" property="orderCode"/>
|
||||
<result column="ORDER_TYPE" property="orderType"/>
|
||||
<result column="PK_SOURCE_COUNTRY" property="pkSourceCountry"/>
|
||||
<result column="SOURCE_COUNTRY_NAME" property="sourceCountryName"/>
|
||||
<result column="SOURCE_MEMBER_CODE" property="sourceMemberCode"/>
|
||||
<result column="SOURCE_MEMBER_NAME" property="sourceMemberName"/>
|
||||
<result column="PK_RATE" property="pkRate"/>
|
||||
<result column="ORDER_AMOUNT" property="orderAmount"/>
|
||||
<result column="ORDER_ACHIEVE" property="orderAchieve"/>
|
||||
<result column="MEMBER_CODE" property="memberCode"/>
|
||||
<result column="MEMBER_NAME" property="memberName"/>
|
||||
<result column="PK_SETTLE_GRADE" property="pkSettleGrade"/>
|
||||
<result column="PK_AWARDS" property="pkAwards"/>
|
||||
<result column="VERTEX_NAME" property="vertexName"/>
|
||||
<result column="TEAM_NAME" property="teamName"/>
|
||||
<result column="TEAM_CODE" property="teamCode"/>
|
||||
<result column="SETTLE_DATE" property="settleDate"/>
|
||||
<result column="SETTLE_COUNTRY" property="settleCountry"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="OUT_EXCHANGE_RATE" property="outExchangeRate"/>
|
||||
<result column="add_touch" property="addTouch" />
|
||||
<result column="service_code" property="serviceCode"/>
|
||||
<result column="pk_vertex" property="pkVertex"/>
|
||||
<result column="nick_name" property="nickName"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="batchInsertCuMemberBonusExpand">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberBonusExpandList" separator=" ">
|
||||
into cu_member_bonus_expand(pk_bonus,pk_order,pk_bonus_items,income_status,
|
||||
cal_type,cal_achieve,cal_value,pretax_income,
|
||||
income_tax,real_income,current_touch,expand_touch,add_touch,expand_no_capping,
|
||||
expand_capping,expand_normal_half,expand_normal_real,remark,
|
||||
income_ratio,income_dial_ratio,order_dial_ratio,pk_country,pk_creator)
|
||||
values
|
||||
(
|
||||
#{item.pkBonus},#{item.pkOrder},#{item.pkBonusItems},#{item.incomeStatus},
|
||||
#{item.calType},#{item.calAchieve},#{item.calValue},#{item.pretaxIncome},
|
||||
#{item.incomeTax},#{item.realIncome},#{item.currentTouch},#{item.expandTouch},#{item.addTouch,jdbcType=NUMERIC},
|
||||
#{item.expandNoCapping},#{item.expandCapping},#{item.expandNormalHalf},#{item.expandNormalReal},
|
||||
#{item.remark},#{item.incomeRatio},#{item.incomeDialRatio},#{item.orderDialRatio},
|
||||
#{item.pkCountry},#{item.pkCreator}
|
||||
)
|
||||
</foreach>
|
||||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
|
||||
<delete id="deleteCuMemberBonusExpand">
|
||||
delete
|
||||
from CU_MEMBER_BONUS_EXPAND
|
||||
where PK_BONUS in (
|
||||
select pk_id
|
||||
from cu_member_bonus
|
||||
where period = #{period} and grant_status <= 2)
|
||||
</delete>
|
||||
|
||||
<select id="queryMemberBonusExpandByBonusItems" resultMap="CuMemberBonusExpand">
|
||||
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,so.pk_rate,so.pk_country pk_source_country,bc.out_exchange_rate,so.order_amount,
|
||||
so.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.current_touch,b.expand_touch,b.expand_no_capping,b.expand_capping,b.expand_normal_half,b.expand_normal_real,
|
||||
b.remark,b.income_ratio,b.income_dial_ratio,b.order_dial_ratio,
|
||||
cu.service_code,
|
||||
cu.pk_vertex,
|
||||
cu.nick_name
|
||||
from sa_order so
|
||||
inner join (
|
||||
select cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.cal_achieve,ce.pretax_income,ce.income_tax,ce.real_income,
|
||||
ce.current_touch,ce.expand_touch,ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real,
|
||||
ce.remark,ce.income_ratio,ce.income_dial_ratio,ce.order_dial_ratio from cu_member_bonus cb
|
||||
inner join cu_member_bonus_expand ce
|
||||
on cb.pk_id = ce.pk_bonus
|
||||
where cb.income_status=0 and ce.income_status = 0
|
||||
and ce.pk_bonus_items = #{pkBonusItems}
|
||||
<if test="pkBonus != null">
|
||||
and ce.pk_bonus = #{pkBonus}
|
||||
</if>
|
||||
<if test="period != null">
|
||||
and cb.period =#{period}
|
||||
</if>
|
||||
<if test="pkBonusItems != null">
|
||||
and ce.pk_bonus_items = #{pkBonusItems}
|
||||
</if>
|
||||
) b
|
||||
on so.pk_id = b.pk_order
|
||||
inner join cu_member tar
|
||||
on b.pk_member = tar.pk_id
|
||||
inner join cu_member cu
|
||||
on so.pk_member = cu.pk_id
|
||||
inner 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=so.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
|
||||
<where>
|
||||
1=1 and b.pk_member=#{pkMember}
|
||||
<if test="orderCode != null and orderCode != ''">
|
||||
and so.order_code like #{orderCode}|| '%'
|
||||
</if>
|
||||
<if test="sourceMemberCode != null and sourceMemberCode != ''">
|
||||
and (cu.member_code = #{sourceMemberCode} or cu.service_code = #{sourceMemberCode})
|
||||
</if>
|
||||
<if test="sourceMemberName != null and sourceMemberName != ''">
|
||||
and (cu.member_name = #{sourceMemberName} or cu.nick_name = #{sourceMemberName})
|
||||
</if>
|
||||
<if test="startDate != null">
|
||||
and cp.settle_date >= #{startDate, jdbcType=DATE}
|
||||
</if>
|
||||
<if test="endDate != null">
|
||||
and cp.settle_date < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
</where>
|
||||
order by b.period,b.pk_bonus_items,b.real_income desc
|
||||
</select>
|
||||
<select id="queryMemberBonusExpandByBonusItemsForServer" resultMap="CuMemberBonusExpand">
|
||||
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,so.pk_rate,bc.out_exchange_rate,so.order_amount,
|
||||
so.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,b.current_touch,b.expand_touch,
|
||||
b.expand_no_capping,b.expand_capping,b.expand_normal_half,b.expand_normal_real,bct.short_name settle_country from (
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_order
|
||||
union
|
||||
select pk_id,pk_member,order_code,order_type,pk_rate,pk_country,order_amount,order_achieve from sa_t_order
|
||||
) so
|
||||
inner join (
|
||||
select cb.pk_member,ce.pk_order,cb.period,cb.pk_country,ce.pk_bonus_items,ce.income_status,ce.CAL_ACHIEVE,ce.pretax_income,ce.income_tax,ce.real_income,
|
||||
ce.remark,ce.income_ratio,ce.income_dial_ratio,ce.order_dial_ratio,ce.current_touch,ce.expand_touch,
|
||||
ce.expand_no_capping,ce.expand_capping,ce.expand_normal_half,ce.expand_normal_real from
|
||||
cu_member_bonus cb
|
||||
inner join cu_member_bonus_expand ce
|
||||
on cb.pk_id = ce.pk_bonus
|
||||
where 1=1
|
||||
<if test="bonusParam.period != null">
|
||||
and cb.period =#{bonusParam.period}
|
||||
</if>
|
||||
<if test="bonusParam.pkBonusItems != null">
|
||||
and ce.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
|
||||
on so.pk_id = b.pk_order
|
||||
inner join cu_member tar
|
||||
on b.pk_member = tar.pk_id
|
||||
inner join cu_member cu
|
||||
on so.pk_member = cu.pk_id
|
||||
inner 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=so.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.orderType != null">
|
||||
and so.order_type = #{bonusParam.orderType}
|
||||
</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, so.order_code,b.current_touch</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>
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.detail.mapper.CuMemberGradeMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberGrade" type="com.hzs.common.domain.member.detail.CuMemberGrade">
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
<result column="PK_MEMBER" property="pkMember"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="UP_TYPE" property="upType"/>
|
||||
<result column="OLD_LEVEL" property="oldLevel"/>
|
||||
<result column="NEW_LEVEL" property="newLevel"/>
|
||||
<result column="REMARK" property="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<update id="updateCuMemberGrade">
|
||||
merge into ${rangeTableName} a
|
||||
using (
|
||||
select a.pk_member, max(a.new_level) pk_grade
|
||||
from cu_member_grade a
|
||||
inner join(
|
||||
select pk_member, max(nvl(modified_time, creation_time)) creation_time
|
||||
from cu_member_grade
|
||||
where period = #{period}
|
||||
and del_flag = 0
|
||||
and up_type = 2
|
||||
group by pk_member) b
|
||||
on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time
|
||||
group by a.pk_member
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set
|
||||
a.pk_grade = b.pk_grade
|
||||
</update>
|
||||
|
||||
<select id="queryCuMemberLevel" resultType="com.hzs.common.domain.member.detail.CuMemberLevel">
|
||||
select *
|
||||
from cu_member_level
|
||||
where del_flag = 0
|
||||
and up_type = #{upType}
|
||||
and upgrade_time >= #{startDate,jdbcType=DATE}
|
||||
and upgrade_time < #{endDate,jdbcType=DATE}
|
||||
order by upgrade_time
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -50,9 +50,9 @@
|
|||
<result column="CREATOR_CODE" property="creatorCode"/>
|
||||
<result column="PK_SETTLE_COUNTRY" property="pkSettleCountry"/>
|
||||
<result column="PK_CENTER_CODE" property="pkCenterCode"/>
|
||||
<result column="PK_STORE_LEVEL" property="pkStoreLevel"/>
|
||||
<result column="IN_EXCHANGE_RATE" property="inExchangeRate"/>
|
||||
<result column="PK_CORP" property="pkCorp"/>
|
||||
<result column="pk_grade" property="pkGrade"/>
|
||||
<collection property="orderWaresExtList" ofType="com.hzs.common.domain.sale.ext.SaOrderWaresExt">
|
||||
<result column="ITEMS_ID" property="pkId"/>
|
||||
<result column="WARES_QUANTITY" property="waresQuantity"/>
|
||||
|
@ -106,6 +106,7 @@
|
|||
so.pk_creator,
|
||||
so.consume_amount,
|
||||
so.box_num,
|
||||
cml.new_level pk_grade,
|
||||
nvl(st.pk_id,0) items_id,
|
||||
nvl(st.pk_order,0) pk_order,
|
||||
nvl(st.pk_wares,0) pk_wares,
|
||||
|
@ -114,6 +115,10 @@
|
|||
nvl(st.wares_quantity,0) wares_quantity,
|
||||
nvl(bw.area_income, 0) area_income
|
||||
from sa_order so
|
||||
left join cu_member_level cml
|
||||
on cml.pk_member = so.pk_member
|
||||
and cml.pk_order = so.pk_id
|
||||
and cml.del_flag = 0
|
||||
left join sa_order_wares st
|
||||
on so.pk_id = st.pk_order and st.wares_price > 0
|
||||
left join bd_wares bw
|
||||
|
|
|
@ -21,30 +21,6 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
|||
*/
|
||||
Integer queryExistOracleTable(String tableName);
|
||||
|
||||
/**
|
||||
* 查询会员结算表,查询出结算表中会员伞下左右区满足等级
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param awardsValue 验证等级对应的值
|
||||
* @param placeDept 部门
|
||||
* @param pkMember 会员
|
||||
*/
|
||||
Integer queryCuMemberSettlePlaceUnderUmbrella(@Param("settleTableName") String settleTableName,
|
||||
@Param("awardsValue") Integer awardsValue,
|
||||
@Param("placeDept") Integer placeDept,
|
||||
@Param("pkMember") Long pkMember);
|
||||
|
||||
/**
|
||||
* 查询会员结算表,查询出结算表中会员血缘关系满足等级
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param pkMember 会员
|
||||
*/
|
||||
Integer queryCuMemberSettleBloodUnderUmbrella(@Param("settleTableName") String settleTableName,
|
||||
@Param("awardsValue") Integer awardsValue,
|
||||
@Param("placeDept") Integer placeDept,
|
||||
@Param("pkMember") Long pkMember);
|
||||
|
||||
/**
|
||||
* 根据pkmember查询
|
||||
*
|
||||
|
|
|
@ -19,24 +19,6 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
|
|||
*/
|
||||
Integer queryExistOracleTable(String tableName);
|
||||
|
||||
/**
|
||||
* 查询会员结算表,查询出结算表中会员伞下左右区满足等级
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param placeDept 部门
|
||||
* @param awardsValue 奖衔对应的值
|
||||
* @param pkMember 会员
|
||||
*/
|
||||
Boolean queryCuMemberSettlePlaceUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember);
|
||||
|
||||
/**
|
||||
* 查询会员结算表,查询出结算表中会员血缘关系满足等级
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param pkMember 会员
|
||||
*/
|
||||
Boolean queryCuMemberSettleBloodUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember);
|
||||
|
||||
/**
|
||||
* 根据pkmember查询
|
||||
*
|
||||
|
|
|
@ -26,16 +26,6 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
return baseMapper.queryExistOracleTable(tableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean queryCuMemberSettlePlaceUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember) {
|
||||
return baseMapper.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, awardsValue, placeDept, pkMember) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean queryCuMemberSettleBloodUnderUmbrella(String settleTableName, Integer awardsValue, Integer placeDept, Long pkMember) {
|
||||
return baseMapper.queryCuMemberSettleBloodUnderUmbrella(settleTableName, awardsValue, placeDept, pkMember) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CuMemberSettleExt queryCuMemberTreeByPkMemberTable(String settleTableName, Long pkMember) {
|
||||
return baseMapper.queryCuMemberTreeByPkMemberTable(settleTableName, pkMember);
|
||||
|
|
|
@ -1500,7 +1500,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
|
||||
// 保存会员等级变动
|
||||
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, 0);
|
||||
// 判断推送MQ处理推荐人等级
|
||||
// 判断处理推荐人等级
|
||||
handleParentUpgrade(cuMember, saOrder);
|
||||
|
||||
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
|
||||
|
@ -1516,7 +1516,7 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
|
|||
// 保存会员等级变动(如果旧等级和新等级相同,则不记录)
|
||||
saveLevelUpgrade(cuMember, EUpgradeType.BUY_UPGRADE.getValue(), saOrder, saOrder.getPkGradeOld());
|
||||
}
|
||||
// 判断推送MQ处理推荐人等级
|
||||
// 判断处理推荐人等级
|
||||
handleParentUpgrade(cuMember, saOrder);
|
||||
|
||||
this.handleRetailMemberAccount(saOrder, cuMemberAccountExt);
|
||||
|
|
|
@ -2494,6 +2494,9 @@ public class CuMemberServiceImpl extends ServiceImpl<CuMemberMapper, CuMember> i
|
|||
// 指定会员可见
|
||||
isShowWares = pkMemberList.contains(showWaresDTO.getLoginMember());
|
||||
}
|
||||
if (isShowWares) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
resultMap.put(showWaresDTO.getPkWares(), isShowWares);
|
||||
}
|
||||
|
|
|
@ -2,44 +2,10 @@ package com.hzs.member.detail.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 会员信息-奖衔升级记录 Mapper 接口
|
||||
*/
|
||||
public interface CuMemberAwardsMapper extends BaseMapper<CuMemberAwards> {
|
||||
|
||||
/**
|
||||
* 批量更新会员奖衔记录,此方法用于奖金结算,批量更新为删除状态,留存奖衔降级记录
|
||||
*
|
||||
* @param cuMemberAwardsList 更新的人
|
||||
* @param period 期间
|
||||
*/
|
||||
Integer updateBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 查询会员最后一条奖衔升级记录
|
||||
*
|
||||
* @param cuMemberAwardsList 奖衔升级记录
|
||||
*/
|
||||
List<CuMemberAwards> queryLastCuMemberAwards(@Param("cuMemberAwardsList") List<?> cuMemberAwardsList);
|
||||
|
||||
/**
|
||||
* 批量插入奖衔记录
|
||||
*
|
||||
* @param cuMemberAwardsList 需要插入的奖衔列表
|
||||
*/
|
||||
Integer saveBatchCuMemberAwards(@Param("cuMemberAwardsList") List<CuMemberAwards> cuMemberAwardsList);
|
||||
|
||||
/**
|
||||
* 查询手动升级的最新一条
|
||||
*
|
||||
* @param pkMember 会员ID
|
||||
* @return
|
||||
*/
|
||||
CuMemberAwardsExt queryLastManualAwards(@Param("pkMember") Long pkMember);
|
||||
|
||||
}
|
||||
|
|
|
@ -3,10 +3,8 @@ package com.hzs.member.detail.provider;
|
|||
import com.hzs.common.core.domain.R;
|
||||
import com.hzs.common.domain.member.base.CuMemberRegister;
|
||||
import com.hzs.common.domain.member.detail.CuMemberLevel;
|
||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
|
||||
import com.hzs.member.base.service.ICuMemberRegisterService;
|
||||
import com.hzs.member.detail.ICuMemberDetailServiceApi;
|
||||
import com.hzs.member.detail.service.ICuMemberAwardsService;
|
||||
import com.hzs.member.detail.service.ICuMemberLevelService;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -22,8 +20,6 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi {
|
|||
@Autowired
|
||||
private ICuMemberLevelService iCuMemberLevelService;
|
||||
@Autowired
|
||||
private ICuMemberAwardsService iCuMemberAwardsService;
|
||||
@Autowired
|
||||
private ICuMemberRegisterService iCuMemberRegisterService;
|
||||
|
||||
@Override
|
||||
|
@ -36,11 +32,6 @@ public class CuMemberDetailProvider implements ICuMemberDetailServiceApi {
|
|||
return R.ok(iCuMemberLevelService.getUpgradeList(pkMember));
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<CuMemberAwardsExt> queryLastManualAwards(Long pkMember) {
|
||||
return R.ok(iCuMemberAwardsService.queryLastManualAwards(pkMember));
|
||||
}
|
||||
|
||||
@Override
|
||||
public R<CuMemberRegister> getMemberRegister(Long pkMember) {
|
||||
return R.ok(iCuMemberRegisterService.queryCuMemberRegister(pkMember));
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.hzs.member.detail.service;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
|
@ -20,12 +19,4 @@ public interface ICuMemberAwardsService extends IService<CuMemberAwards> {
|
|||
*/
|
||||
void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime);
|
||||
|
||||
/**
|
||||
* 查询手动开通的最新一条
|
||||
*
|
||||
* @param pkMember 会员ID
|
||||
* @return
|
||||
*/
|
||||
CuMemberAwardsExt queryLastManualAwards(Long pkMember);
|
||||
|
||||
}
|
||||
|
|
|
@ -1,20 +1,11 @@
|
|||
package com.hzs.member.detail.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.MemberFieldConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.member.achieve.service.ICuMemberTreeService;
|
||||
import com.hzs.member.detail.mapper.CuMemberAwardsMapper;
|
||||
import com.hzs.member.detail.service.ICuMemberAwardsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
@ -25,9 +16,6 @@ import java.util.*;
|
|||
@Service
|
||||
public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper, CuMemberAwards> implements ICuMemberAwardsService {
|
||||
|
||||
@Autowired
|
||||
private ICuMemberTreeService iCuMemberTreeService;
|
||||
|
||||
@Override
|
||||
public void deleteCuMemberAwards(Long pkOrder, Long pkApprove, Date currentDateTime) {
|
||||
LambdaUpdateWrapper<CuMemberAwards> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
|
@ -38,155 +26,4 @@ public class CuMemberAwardsServiceImpl extends ServiceImpl<CuMemberAwardsMapper,
|
|||
update(updateWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新奖衔记录
|
||||
*
|
||||
* @param enoughAwardsMemberList 满足业绩
|
||||
* @param originalCuMemberSettleMap 原来的map
|
||||
* @param period 期间
|
||||
*/
|
||||
private List<CuMemberAwards> updateAwardsRecord(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
|
||||
Integer period) {
|
||||
if (enoughAwardsMemberList.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
// 更新奖衔记录变动
|
||||
// 增加奖衔记录表
|
||||
// 更新升奖衔的会员,插入升衔记录
|
||||
return upgradeCuMemberAwards(enoughAwardsMemberList, originalCuMemberSettleMap, period);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 插入升级记录
|
||||
*
|
||||
* @param enoughAwardsMemberList 足够升级的
|
||||
* @param originalCuMemberSettleMap 记录会员原等级的map
|
||||
* @param period 期间
|
||||
*/
|
||||
private List<CuMemberAwards> upgradeCuMemberAwards(List<CuMemberSettleExt> enoughAwardsMemberList, Map<Long, CuMemberSettleExt> originalCuMemberSettleMap,
|
||||
Integer period) {
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
if (enoughAwardsMemberList.size() > 0) {
|
||||
// 记录要入库的,为了验证是否首次晋升
|
||||
enoughAwardsMemberList.forEach(enoughAwardsMember -> getCuMemberAwards(originalCuMemberSettleMap, period, cuMemberAwardsList, enoughAwardsMember));
|
||||
// 验证满足的这群人是否是首次晋升,查询出值的不是首次晋升
|
||||
List<CuMemberAwards> originalCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(cuMemberAwardsList);
|
||||
// 是首次晋升的数据
|
||||
Map<Long, CuMemberAwards> cuMemberAwardsMap = new HashMap<>(ComputeUtil.mapInitCapacity(originalCuMemberAwardsList.size()));
|
||||
originalCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards));
|
||||
cuMemberAwardsList.forEach(cuMemberAwards -> {
|
||||
CuMemberAwards memberAwards = cuMemberAwardsMap.get(cuMemberAwards.getPkMember());
|
||||
// 没有奖衔升级记录或者奖衔升级记录是会员的 算首次晋升
|
||||
if (memberAwards == null || memberAwards.getNewLevel() == EAwards.MEMBER.getValue()) {
|
||||
cuMemberAwards.setPurchaseStatus(EYesNo.YES.getIntValue());
|
||||
}
|
||||
});
|
||||
// 插入记录
|
||||
baseMapper.saveBatchCuMemberAwards(cuMemberAwardsList);
|
||||
}
|
||||
return cuMemberAwardsList;
|
||||
}
|
||||
|
||||
private void getCuMemberAwards(Map<Long, CuMemberSettleExt> originalCuMemberSettleMap, Integer period, List<CuMemberAwards> cuMemberAwardsList, CuMemberSettleExt enoughAwardsMember) {
|
||||
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
|
||||
.pkMember(enoughAwardsMember.getPkMember())
|
||||
.period(period)
|
||||
.upType(EUpgradeType.AUTO_UPGRADE.getValue())
|
||||
// 原等级
|
||||
.oldLevel(originalCuMemberSettleMap.get(enoughAwardsMember.getPkMember()).getPkOriAwards())
|
||||
.newLevel(enoughAwardsMember.getPkAwards())
|
||||
// 默认不免考
|
||||
.purchaseStatus(EYesNo.NO.getIntValue())
|
||||
.build();
|
||||
cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberAwards.setPkCountry(enoughAwardsMember.getPkSettleCountry());
|
||||
cuMemberAwardsList.add(cuMemberAwards);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新降衔的会员,把升衔记录删除
|
||||
*
|
||||
* @param period 期间
|
||||
* @param changeAwardsList 降低奖衔的人
|
||||
* @param cuMemberAwardsList 所有变动记录的数据
|
||||
*/
|
||||
private void reduceCuMemberAwards(List<CuMemberAwards> changeAwardsList, Integer period, List<CuMemberAwards> cuMemberAwardsList) {
|
||||
// 验证是否有降奖衔的,降奖衔的也要更新
|
||||
if (changeAwardsList.size() > 0) {
|
||||
// 更新奖衔表,将奖衔升级记录修改为删除状态
|
||||
QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
|
||||
baseMapper.updateBatchCuMemberAwards(changeAwardsList, period);
|
||||
// 根据 changeAwardsList 查找到这群人的历史奖衔升级记录
|
||||
List<CuMemberAwards> hisCuMemberAwardsList = baseMapper.queryLastCuMemberAwards(changeAwardsList);
|
||||
Map<Long, CuMemberAwards> cuMemberAwardsMap = new HashMap<>();
|
||||
hisCuMemberAwardsList.forEach(cuMemberAwards -> cuMemberAwardsMap.put(cuMemberAwards.getPkMember(), cuMemberAwards));
|
||||
// 用于更新网体,将原有奖衔还原
|
||||
changeAwardsList.forEach(cuMemberAwards -> {
|
||||
if (cuMemberAwardsMap.containsKey(cuMemberAwards.getPkMember())) {
|
||||
// 原有奖衔
|
||||
cuMemberAwards.setNewLevel(cuMemberAwardsMap.get(cuMemberAwards.getPkMember()).getNewLevel());
|
||||
} else {
|
||||
// 没有值的变为会员
|
||||
cuMemberAwards.setNewLevel(EAwards.MEMBER.getValue());
|
||||
}
|
||||
});
|
||||
cuMemberAwardsList.addAll(changeAwardsList);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询某一期变动的奖衔
|
||||
*
|
||||
* @param period 奖金期
|
||||
*/
|
||||
private List<CuMemberAwards> queryCuMemberAwardsByPeriod(Integer period) {
|
||||
QueryWrapper<CuMemberAwards> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
|
||||
queryWrapper.eq(MemberFieldConstants.UP_TYPE, EUpgradeType.AUTO_UPGRADE.getValue());
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证血缘关系
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param cuMemberSettleExt 会员结算表
|
||||
* @param bdAwards 等级
|
||||
*/
|
||||
private Boolean validateBloodRelation(String settleTableName, CuMemberSettleExt cuMemberSettleExt, BdAwards bdAwards) {
|
||||
// 左区满足,且满足血缘
|
||||
if (iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), cuMemberSettleExt.getPkMember()) &&
|
||||
iCuMemberTreeService.queryCuMemberSettleBloodUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), cuMemberSettleExt.getPkMember())) {
|
||||
// 验证血缘,左区存在血缘关系的
|
||||
// 右区满足,且满足血缘
|
||||
// 进行验证血缘验证
|
||||
return iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), cuMemberSettleExt.getPkMember()) &&
|
||||
iCuMemberTreeService.queryCuMemberSettleBloodUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), cuMemberSettleExt.getPkMember());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证左右区安置关系
|
||||
*
|
||||
* @param settleTableName 结算表
|
||||
* @param bdAwards 等级
|
||||
* @param pkMember 会员
|
||||
*/
|
||||
private Boolean validateCuMemberPlaceRelation(String settleTableName, BdAwards bdAwards, Long pkMember) {
|
||||
// 验证左区
|
||||
if (iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsLeft(), EPlaceDept.LEFT_DEPT.getValue(), pkMember)) {
|
||||
// 在验证右区
|
||||
return iCuMemberTreeService.queryCuMemberSettlePlaceUnderUmbrella(settleTableName, bdAwards.getPkCheckAwardsRight(), EPlaceDept.RIGHT_DEPT.getValue(), pkMember);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CuMemberAwardsExt queryLastManualAwards(Long pkMember) {
|
||||
return baseMapper.queryLastManualAwards(pkMember);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -105,36 +105,6 @@
|
|||
where table_name = upper(#{tableName})
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberSettlePlaceUnderUmbrella" resultType="java.lang.Integer">
|
||||
select count(a.pk_member)
|
||||
from (
|
||||
select pk_member, pk_awards, pk_parent, pk_place_parent, place_dept
|
||||
from ${settleTableName} start with pk_place_parent = #{pkMember} and place_dept=#{placeDept}
|
||||
connect by pk_place_parent = prior pk_member
|
||||
) a
|
||||
inner join bd_awards ba
|
||||
on a.pk_awards = ba.pk_id
|
||||
where ba.awards_value >= (select awards_value from bd_awards where pk_id = #{awardsValue})
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberSettleBloodUnderUmbrella" resultType="java.lang.Integer">
|
||||
select count(pk_member)
|
||||
from (
|
||||
select pk_member
|
||||
from ${settleTableName} start with pk_parent = #{pkMember}
|
||||
connect by pk_parent = prior pk_member) a
|
||||
where a.pk_member in (
|
||||
select a.pk_member
|
||||
from (
|
||||
select pk_member, pk_awards, pk_parent, pk_place_parent, place_dept
|
||||
from ${settleTableName} start with pk_place_parent = #{pkMember} and place_dept=#{placeDept}
|
||||
connect by pk_place_parent = prior pk_member
|
||||
) a
|
||||
inner join bd_awards ba
|
||||
on a.pk_awards = ba.pk_id
|
||||
where ba.awards_value >= (select awards_value from bd_awards where pk_id = #{awardsValue}))
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberTreeByPkMemberTable" resultMap="CuMemberSettleExt">
|
||||
select
|
||||
<if test="tableName != null and tableName != ''">
|
||||
|
|
|
@ -2,73 +2,4 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.member.detail.mapper.CuMemberAwardsMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberAwards" type="com.hzs.common.domain.member.detail.CuMemberAwards">
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="PK_MEMBER" property="pkMember"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="UP_TYPE" property="upType"/>
|
||||
<result column="OLD_LEVEL" property="oldLevel"/>
|
||||
<result column="NEW_LEVEL" property="newLevel"/>
|
||||
<result column="PURCHASE_STATUS" property="purchaseStatus"/>
|
||||
<result column="PK_ORDER" property="pkOrder"/>
|
||||
<result column="REMARK" property="remark"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
</resultMap>
|
||||
|
||||
<insert id="saveBatchCuMemberAwards">
|
||||
insert ALL
|
||||
<foreach item="item" index="index" collection="cuMemberAwardsList" separator=" ">
|
||||
into cu_member_awards(pk_member,period,up_type,old_level,new_level,purchase_status,pk_creator,pk_country) values
|
||||
(
|
||||
#{item.pkMember},#{item.period},#{item.upType},#{item.oldLevel},#{item.newLevel},#{item.purchaseStatus},#{item.pkCreator},
|
||||
#{item.pkCountry}
|
||||
)
|
||||
</foreach>
|
||||
SELECT 1 FROM dual
|
||||
</insert>
|
||||
|
||||
<update id="updateBatchCuMemberAwards">
|
||||
update cu_member_awards set del_flag = 1, modified_time = sysdate, PK_MODIFIED = 1
|
||||
where period= #{period} and pk_member in
|
||||
<foreach collection="cuMemberAwardsList" item="item" open="(" close=")" separator=",">
|
||||
#{item.pkMember}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="queryLastCuMemberAwards" resultMap="CuMemberAwards">
|
||||
select ca.pk_member,ba.awards_value new_level from cu_member_awards ca
|
||||
inner join (
|
||||
select pk_member,max(pk_id) pk_id from cu_member_awards
|
||||
where del_flag=0 and pk_member in
|
||||
<foreach collection="cuMemberAwardsList" item="item" open="(" close=")" separator=",">
|
||||
#{item.pkMember}
|
||||
</foreach>
|
||||
group by pk_member
|
||||
) cm
|
||||
on ca.pk_id=cm.pk_id
|
||||
inner join bd_awards ba
|
||||
on ca.new_level = ba.pk_id
|
||||
where ca.del_flag=0 and ba.del_flag=0
|
||||
</select>
|
||||
|
||||
<!-- 查询手动升级的最新一条 -->
|
||||
<select id="queryLastManualAwards" resultType="com.hzs.common.domain.member.detail.ext.CuMemberAwardsExt">
|
||||
select *
|
||||
from (select cma.*, ba.awards_value
|
||||
from cu_member_awards cma
|
||||
left join bd_awards ba
|
||||
on ba.pk_id = cma.new_level
|
||||
where cma.del_flag = 0
|
||||
and cma.pk_member = #{pkMember}
|
||||
and cma.up_type = 2
|
||||
order by cma.creation_time desc)
|
||||
where rownum = 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -17,14 +17,12 @@ import com.hzs.common.core.web.domain.AjaxResult;
|
|||
import com.hzs.common.domain.member.ext.CuMemberExt;
|
||||
import com.hzs.common.domain.sale.ext.BdWaresExt;
|
||||
import com.hzs.common.domain.sale.ext.BdWaresSpecsSkuExt;
|
||||
import com.hzs.common.domain.sale.wares.BdWares;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresLabel;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresRange;
|
||||
import com.hzs.common.domain.sale.wares.BdWaresSpecsSku;
|
||||
import com.hzs.common.domain.sale.wares.*;
|
||||
import com.hzs.common.domain.system.config.BdLabel;
|
||||
import com.hzs.common.domain.system.ext.BdLabelExt;
|
||||
import com.hzs.common.security.utils.SecurityUtils;
|
||||
import com.hzs.member.base.IMemberServiceApi;
|
||||
import com.hzs.member.base.dto.ShowWaresDTO;
|
||||
import com.hzs.retail.wares.param.RetailWaresDetailParam;
|
||||
import com.hzs.retail.wares.param.RetailWaresParam;
|
||||
import com.hzs.retail.wares.vo.RetailWaresDetailVO;
|
||||
|
@ -174,6 +172,8 @@ public class ApiRetailWaresController extends BaseController {
|
|||
Integer pkGrade, boolean showLabel) {
|
||||
// 返回商品列表
|
||||
List<RetailWaresVO> resultList = new ArrayList<>();
|
||||
// 当前会员ID
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
|
||||
// 汇率比例
|
||||
R<CurrencyDTO> currency = currencyServiceApi.getCurrency(SecurityUtils.getPkCountry());
|
||||
|
@ -205,7 +205,26 @@ public class ApiRetailWaresController extends BaseController {
|
|||
}
|
||||
}
|
||||
|
||||
// 检验商品团队信息
|
||||
Map<Integer, List<BdWaresAuthority>> waresAuthorityMap = iBdWaresService.getWaresAuthority(waresIdList);
|
||||
List<ShowWaresDTO> showWaresList = bdWaresExtList.stream().map(tmpBdWares -> {
|
||||
ShowWaresDTO showWaresDTO = new ShowWaresDTO();
|
||||
showWaresDTO.setPkWares(tmpBdWares.getPkId());
|
||||
showWaresDTO.setLoginMember(userId);
|
||||
showWaresDTO.setWaresAuthorityList(waresAuthorityMap.get(tmpBdWares.getPkId()));
|
||||
return showWaresDTO;
|
||||
}).collect(Collectors.toList());
|
||||
R<Map<Integer, Boolean>> waresShowMapDto = iMemberServiceApi.checkIsShowWares(showWaresList);
|
||||
Map<Integer, Boolean> waresShowMap = waresShowMapDto.getData();
|
||||
|
||||
|
||||
for (BdWaresExt bdWaresExt : bdWaresExtList) {
|
||||
// 校验团队信息
|
||||
Boolean isShowWares = waresShowMap.get(bdWaresExt.getPkId());
|
||||
if (null == isShowWares || !isShowWares) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (null != list) {
|
||||
// 商品标签处理
|
||||
// 保证标签
|
||||
|
|
|
@ -18,12 +18,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓库配置前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-02
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
|
@ -41,15 +36,15 @@ public class ApiBdStorehouseController extends BaseController {
|
|||
@Log(module = EOperationModule.STOREHOUSE, business = EOperationBusiness.STOREHOUSE, method = EOperationMethod.SELECT)
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(BdStorehouseVO bdStorehouse) {
|
||||
if(bdStorehouse.getPkCountry() == null){
|
||||
if (bdStorehouse.getPkCountry() == null) {
|
||||
bdStorehouse.setPkCountry(SecurityUtils.getPkCountry());
|
||||
}
|
||||
List<BdStorehouseVO> list = iBdStorehouseService.selectBdStorehouseList(bdStorehouse);
|
||||
list.forEach( itm ->{
|
||||
BdStorehouseAreaMiddleVO sam=new BdStorehouseAreaMiddleVO();
|
||||
list.forEach(itm -> {
|
||||
BdStorehouseAreaMiddleVO sam = new BdStorehouseAreaMiddleVO();
|
||||
sam.setPkStorehouse(itm.getPkId());
|
||||
sam.setPkCountry(bdStorehouse.getPkCountry());
|
||||
List<BdStorehouseAreaMiddleVO> samList=iBdStorehouseAreaMiddleService.getBdStorehouseAreaMiddleList(sam);
|
||||
List<BdStorehouseAreaMiddleVO> samList = iBdStorehouseAreaMiddleService.getBdStorehouseAreaMiddleList(sam);
|
||||
itm.setSamList(samList);
|
||||
});
|
||||
return getDataTable(list);
|
||||
|
|
|
@ -8,17 +8,13 @@ import com.hzs.system.base.vo.BdStorehouseVO;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓库信息Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-02
|
||||
* 仓库信息Mapper 接口
|
||||
*/
|
||||
public interface BdStorehouseMapper extends BaseMapper<BdStorehouse> {
|
||||
|
||||
/**
|
||||
* 查询仓库列表信息
|
||||
*
|
||||
* @param bdStorehouse
|
||||
* @return
|
||||
*/
|
||||
|
@ -26,6 +22,7 @@ public interface BdStorehouseMapper extends BaseMapper<BdStorehouse> {
|
|||
|
||||
/**
|
||||
* 获取单条仓库信息
|
||||
*
|
||||
* @param bdStorehouse
|
||||
* @return
|
||||
*/
|
||||
|
@ -33,6 +30,7 @@ public interface BdStorehouseMapper extends BaseMapper<BdStorehouse> {
|
|||
|
||||
/**
|
||||
* 校验仓库信息是否重复
|
||||
*
|
||||
* @param bdStorehouse
|
||||
* @return
|
||||
*/
|
||||
|
|
|
@ -10,7 +10,6 @@ import com.hzs.common.core.enums.EDelFlag;
|
|||
import com.hzs.common.core.enums.EYesNo;
|
||||
import com.hzs.common.domain.system.base.BdStorehouse;
|
||||
import com.hzs.common.domain.system.base.BdStorehouseAreaMiddle;
|
||||
import com.hzs.common.security.utils.SecurityUtils;
|
||||
import com.hzs.system.base.mapper.BdStorehouseMapper;
|
||||
import com.hzs.system.base.service.IBdStorehouseAreaMiddleService;
|
||||
import com.hzs.system.base.service.IBdStorehouseService;
|
||||
|
@ -20,49 +19,30 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 仓库信息服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-02
|
||||
*/
|
||||
@Service
|
||||
public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdStorehouse> implements IBdStorehouseService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private IBdStorehouseAreaMiddleService iBdStorehouseAreaMiddleService;
|
||||
/**
|
||||
* 查询仓库列表信息
|
||||
*
|
||||
* @param bdStorehouse
|
||||
* @return
|
||||
*/
|
||||
|
||||
@Override
|
||||
public List<BdStorehouseVO> selectBdStorehouseList(BdStorehouseVO bdStorehouse) {
|
||||
return baseMapper.selectBdStorehouseList(bdStorehouse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增仓库信息
|
||||
*
|
||||
* @param bdStorehouseVO
|
||||
* @return
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public boolean intBdStorehouse(BdStorehouseVO bdStorehouseVO) {
|
||||
BdStorehouse bdStorehouse= BeanUtil.copyProperties(bdStorehouseVO, BdStorehouse.class);
|
||||
BdStorehouse bdStorehouse = BeanUtil.copyProperties(bdStorehouseVO, BdStorehouse.class);
|
||||
baseMapper.insert(bdStorehouse);
|
||||
if(CollectionUtil.isNotEmpty(bdStorehouseVO.getProvinceList())){
|
||||
BdStorehouseAreaMiddleVO sam=BeanUtil.copyProperties(bdStorehouseVO, BdStorehouseAreaMiddleVO.class);
|
||||
if (CollectionUtil.isNotEmpty(bdStorehouseVO.getProvinceList())) {
|
||||
BdStorehouseAreaMiddleVO sam = BeanUtil.copyProperties(bdStorehouseVO, BdStorehouseAreaMiddleVO.class);
|
||||
sam.setPkStorehouse(bdStorehouse.getPkId());
|
||||
iBdStorehouseAreaMiddleService.intStoArMiddle(sam);
|
||||
}
|
||||
|
@ -80,11 +60,6 @@ public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdS
|
|||
return baseMapper.getBdStorehouse(bdStorehouse);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验仓库信息是否重复
|
||||
* @param bdStorehouse
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public BdStorehouse checkBdStorehouse(BdStorehouse bdStorehouse) {
|
||||
return baseMapper.checkBdStorehouse(bdStorehouse);
|
||||
|
@ -116,26 +91,26 @@ public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdS
|
|||
updateWrapper.set("WARE_ADDRESS", bdStorehouse.getWareAddress());
|
||||
updateWrapper.set("PROVINCE", bdStorehouse.getProvince());
|
||||
updateWrapper.set("CITY", bdStorehouse.getCity());
|
||||
if(bdStorehouse.getCounty() != null) {
|
||||
if (bdStorehouse.getCounty() != null) {
|
||||
updateWrapper.set("COUNTY", bdStorehouse.getCounty());
|
||||
}
|
||||
updateWrapper.set("CONTACTS", bdStorehouse.getContacts());
|
||||
updateWrapper.set("MOBILE_PHONE", bdStorehouse.getMobilePhone());
|
||||
if(bdStorehouse.getPkCorp() != null) {
|
||||
if (bdStorehouse.getPkCorp() != null) {
|
||||
updateWrapper.set("PK_CORP", bdStorehouse.getPkCorp());
|
||||
}
|
||||
updateWrapper.set("PK_MODIFIED", bdStorehouse.getPkModified());
|
||||
updateWrapper.set("MODIFIED_TIME",bdStorehouse.getModifiedTime());
|
||||
updateWrapper.set("MODIFIED_TIME", bdStorehouse.getModifiedTime());
|
||||
update(updateWrapper);
|
||||
BdStorehouseAreaMiddleVO sam=BeanUtil.copyProperties(bdStorehouse, BdStorehouseAreaMiddleVO.class);
|
||||
BdStorehouseAreaMiddleVO sam = BeanUtil.copyProperties(bdStorehouse, BdStorehouseAreaMiddleVO.class);
|
||||
sam.setPkStorehouse(bdStorehouse.getPkId());
|
||||
UpdateWrapper<BdStorehouseAreaMiddle> updateWrapper1=new UpdateWrapper<>();
|
||||
updateWrapper1.eq("PK_STOREHOUSE",bdStorehouse.getPkId());
|
||||
updateWrapper1.set("DEL_FLAG",EDelFlag.DELETE.getValue());
|
||||
UpdateWrapper<BdStorehouseAreaMiddle> updateWrapper1 = new UpdateWrapper<>();
|
||||
updateWrapper1.eq("PK_STOREHOUSE", bdStorehouse.getPkId());
|
||||
updateWrapper1.set("DEL_FLAG", EDelFlag.DELETE.getValue());
|
||||
iBdStorehouseAreaMiddleService.update(updateWrapper1);
|
||||
if(CollectionUtil.isNotEmpty(bdStorehouse.getProvinceList())){
|
||||
for(Integer i:bdStorehouse.getProvinceList()){
|
||||
BdStorehouseAreaMiddle sa=new BdStorehouseAreaMiddle();
|
||||
if (CollectionUtil.isNotEmpty(bdStorehouse.getProvinceList())) {
|
||||
for (Integer i : bdStorehouse.getProvinceList()) {
|
||||
BdStorehouseAreaMiddle sa = new BdStorehouseAreaMiddle();
|
||||
sa.setProvince(i);
|
||||
sa.setPkStorehouse(bdStorehouse.getPkId());
|
||||
sa.setPkCountry(bdStorehouse.getPkCountry());
|
||||
|
@ -147,13 +122,6 @@ public class BdStorehouseServiceImpl extends ServiceImpl<BdStorehouseMapper, BdS
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 删除仓库
|
||||
* @author: zhang jing
|
||||
* @date: 2023/5/16 16:42
|
||||
* @param: [pkId]
|
||||
* @return: boolean
|
||||
**/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean delBdStorehouse(BdStorehouseVO bdStorehouse) {
|
||||
|
|
|
@ -25,11 +25,6 @@ public class MemberFieldConstants {
|
|||
*/
|
||||
public static final String MEMBER_CODE = "member_code";
|
||||
|
||||
/**
|
||||
* 推荐人
|
||||
*/
|
||||
public static final String PK_REFERENCE = "pk_reference";
|
||||
|
||||
/**
|
||||
* 推荐人主键
|
||||
*/
|
||||
|
@ -119,13 +114,6 @@ public class MemberFieldConstants {
|
|||
* 期间
|
||||
*/
|
||||
public static final String PERIOD = "period";
|
||||
public static final String START_PERIOD = "START_PERIOD";
|
||||
public static final String END_PERIOD = "END_PERIOD";
|
||||
|
||||
/**
|
||||
* 升级类型 (1=自动升级,2=手动升级,3=购买赠予)
|
||||
*/
|
||||
public static final String UP_TYPE = "up_type";
|
||||
|
||||
/**
|
||||
* 代理类型 (1=代理商,2=店铺)
|
||||
|
|
|
@ -10,45 +10,123 @@ import java.util.List;
|
|||
public class RetailConstants {
|
||||
|
||||
/**
|
||||
* 直推拿
|
||||
* 会员 推 会员 60
|
||||
* VIP 推 会员 80
|
||||
* 合伙人 推 会员 100
|
||||
* 博羚店主 推 会员 200
|
||||
* 高级店主 推 会员 208
|
||||
* 分公司 推 会员 220
|
||||
* 总公司 推 会员 240
|
||||
*/
|
||||
public static final BigDecimal FIRST_DIRECT = new BigDecimal("60");
|
||||
public static final BigDecimal V1_V1 = new BigDecimal("60");
|
||||
public static final BigDecimal V2_V1 = new BigDecimal("80");
|
||||
public static final BigDecimal V3_V1 = new BigDecimal("100");
|
||||
public static final BigDecimal V4_V1 = new BigDecimal("200");
|
||||
public static final BigDecimal V5_V1 = new BigDecimal("208");
|
||||
public static final BigDecimal V6_V1 = new BigDecimal("220");
|
||||
public static final BigDecimal V7_V1 = new BigDecimal("240");
|
||||
|
||||
/**
|
||||
* 间推拿20
|
||||
* 会员 推 VIP 300
|
||||
* VIP 推 VIP 400
|
||||
* 合伙人 推 VIP 500
|
||||
* 博羚店主 推 VIP 1000
|
||||
* 高级店主 推 VIP 1040
|
||||
* 分公司 推 VIP 1100
|
||||
* 总公司 推 VIP 1200
|
||||
*/
|
||||
public static final BigDecimal FIRST_INDIRECT = new BigDecimal("20");
|
||||
public static final BigDecimal V1_V2 = new BigDecimal("300");
|
||||
public static final BigDecimal V2_V2 = new BigDecimal("400");
|
||||
public static final BigDecimal V3_V2 = new BigDecimal("500");
|
||||
public static final BigDecimal V4_V2 = new BigDecimal("1000");
|
||||
public static final BigDecimal V5_V2 = new BigDecimal("1040");
|
||||
public static final BigDecimal V6_V2 = new BigDecimal("1100");
|
||||
public static final BigDecimal V7_V2 = new BigDecimal("1200");
|
||||
|
||||
/**
|
||||
* 第一店长拿100
|
||||
* 会员 推 合伙人 600
|
||||
* VIP 推 合伙人 800
|
||||
* 合伙人1 推 合伙人 1000
|
||||
* 合伙人2 推 合伙人 1200
|
||||
* 合伙人3 推 合伙人 1300
|
||||
* 博羚店主 推 合伙人 2000
|
||||
* 高级店主 推 合伙人 2080
|
||||
* 分公司 推 合伙人 2200
|
||||
* 总公司 推 合伙人 2400
|
||||
*/
|
||||
public static final BigDecimal FIRST_ONE_STORE = new BigDecimal("100");
|
||||
public static final BigDecimal V1_V3 = new BigDecimal("600");
|
||||
public static final BigDecimal V2_V3 = new BigDecimal("800");
|
||||
public static final BigDecimal V3_V3_1 = new BigDecimal("1000");
|
||||
public static final BigDecimal V3_V3_2 = new BigDecimal("1200");
|
||||
public static final BigDecimal V3_V3_3 = new BigDecimal("1300");
|
||||
public static final BigDecimal V4_V3 = new BigDecimal("2000");
|
||||
public static final BigDecimal V5_V3 = new BigDecimal("2080");
|
||||
public static final BigDecimal V6_V3 = new BigDecimal("2200");
|
||||
public static final BigDecimal V7_V3 = new BigDecimal("2400");
|
||||
|
||||
/**
|
||||
* 第二店长拿8
|
||||
* 会员 推 合伙人 1200
|
||||
* VIP 推 合伙人 1600
|
||||
* 合伙人1 推 合伙人 2000
|
||||
* 合伙人2 推 合伙人 2400
|
||||
* 合伙人3 推 合伙人 2600
|
||||
* 博羚店主 推 合伙人 4000
|
||||
* 高级店主 推 合伙人 4160
|
||||
* 分公司 推 合伙人 4400
|
||||
* 总公司 推 合伙人 4800
|
||||
*/
|
||||
public static final BigDecimal FIRST_TWO_STORE = new BigDecimal("8");
|
||||
public static final BigDecimal V1_V4 = new BigDecimal("1200");
|
||||
public static final BigDecimal V2_V4 = new BigDecimal("1600");
|
||||
public static final BigDecimal V3_V4_1 = new BigDecimal("2000");
|
||||
public static final BigDecimal V3_V4_2 = new BigDecimal("2400");
|
||||
public static final BigDecimal V3_V4_3 = new BigDecimal("2600");
|
||||
public static final BigDecimal V4_V4 = new BigDecimal("4000");
|
||||
public static final BigDecimal V5_V4 = new BigDecimal("4160");
|
||||
public static final BigDecimal V6_V4 = new BigDecimal("4400");
|
||||
public static final BigDecimal V7_V4 = new BigDecimal("4800");
|
||||
|
||||
/**
|
||||
* 分公司拿12
|
||||
* 博羚店主 推 分公司 50000
|
||||
* 高级店主 推 分公司 52000
|
||||
* 分公司 推 分公司 55000
|
||||
* 总公司 推 分公司 60000
|
||||
*/
|
||||
public static final BigDecimal FIRST_BRANCH_COMPANY = new BigDecimal("12");
|
||||
public static final BigDecimal V4_V6 = new BigDecimal("50000");
|
||||
public static final BigDecimal V5_V6 = new BigDecimal("52000");
|
||||
public static final BigDecimal V6_V6 = new BigDecimal("55000");
|
||||
public static final BigDecimal V7_V6 = new BigDecimal("60000");
|
||||
|
||||
/**
|
||||
* 总公司拿20
|
||||
* 复购:
|
||||
* 会员 拿 6
|
||||
* VIP 拿 8
|
||||
* 合伙人1 拿 10
|
||||
* 合伙人2 拿 12
|
||||
* 合伙人3 拿 13
|
||||
* 博羚店主 拿 20
|
||||
* 高级店主 拿 20.8
|
||||
* 分公司 拿 22
|
||||
* 总公司 拿 24
|
||||
*/
|
||||
public static final BigDecimal FIRST_COMPANY = new BigDecimal("20");
|
||||
public static final BigDecimal REPURCHASE_V1 = new BigDecimal("6");
|
||||
public static final BigDecimal REPURCHASE_V2 = new BigDecimal("8");
|
||||
public static final BigDecimal REPURCHASE_V3_1 = new BigDecimal("10");
|
||||
public static final BigDecimal REPURCHASE_V3_2 = new BigDecimal("12");
|
||||
public static final BigDecimal REPURCHASE_V3_3 = new BigDecimal("13");
|
||||
public static final BigDecimal REPURCHASE_V4 = new BigDecimal("20");
|
||||
public static final BigDecimal REPURCHASE_V5 = new BigDecimal("20.8");
|
||||
public static final BigDecimal REPURCHASE_V6 = new BigDecimal("22");
|
||||
public static final BigDecimal REPURCHASE_V7 = new BigDecimal("24");
|
||||
|
||||
/**
|
||||
* 会员、VIP、合伙人 每月可购买1套(4盒)
|
||||
*/
|
||||
public static final Integer V1_LIMIT = 1;
|
||||
/**
|
||||
* 博羚店主、高级店主 每月可购买10套(40盒)
|
||||
*/
|
||||
public static final Integer V4_LIMIT = 10;
|
||||
/**
|
||||
* 分公司 每月可购买25套(100盒)
|
||||
*/
|
||||
public static final Integer V6_LIMIT = 25;
|
||||
/**
|
||||
* 总公司 不限购给一个很大的值
|
||||
*/
|
||||
public static final Integer V1_LIMIT = 1;
|
||||
public static final Integer V4_LIMIT = 10;
|
||||
public static final Integer V6_LIMIT = 25;
|
||||
public static final Integer V7_LIMIT = 10000;
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,6 +15,11 @@ public class BonusMsgConstants {
|
|||
*/
|
||||
public static String RANGE = "订单编号%s,%s为%s贡献了直推级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。";
|
||||
|
||||
/**
|
||||
* 复购级差收益说明
|
||||
*/
|
||||
public static String REPUR_RANGE = "订单编号%s,%s为%s贡献了复购级差收益,计算金额%f,前一级差等级名称%s,当前级差等级名称%s。";
|
||||
|
||||
/**
|
||||
* 奖金重算 -- 只能重算7天内的奖金!
|
||||
*/
|
||||
|
|
|
@ -14,58 +14,58 @@ public enum EBonusItems {
|
|||
/**
|
||||
* 直推收益
|
||||
*/
|
||||
DIRECT_INCOME(3, "旧直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 3),
|
||||
DIRECT_INCOME(3, "旧直推收益", 1),
|
||||
/**
|
||||
* 拓展收益
|
||||
*/
|
||||
EXPANSION_INCOME(4, "旧拓展收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 4),
|
||||
EXPANSION_INCOME(4, "旧拓展收益", 1),
|
||||
/**
|
||||
* 辅导收益
|
||||
*/
|
||||
COACHING_INCOME(5, "旧辅导收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 5),
|
||||
COACHING_INCOME(5, "旧辅导收益", 1),
|
||||
/**
|
||||
* 分红收益
|
||||
*/
|
||||
DIVIDEND_INCOME(6, "旧分红收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 6),
|
||||
DIVIDEND_INCOME(6, "旧分红收益", 1),
|
||||
/**
|
||||
* 服务补贴
|
||||
*/
|
||||
SERVICE_SUBSIDIES(7, "旧服务补贴", 0, EnumsPrefixConstants.BONUS_ITEMS + 7),
|
||||
SERVICE_SUBSIDIES(7, "旧服务补贴", 1),
|
||||
/**
|
||||
* 复购极差收益
|
||||
* 复购级差收益
|
||||
*/
|
||||
REPURCHASE_RANGE_INCOME(8, "旧复购极差收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 8),
|
||||
REPURCHASE_RANGE_INCOME(8, "旧复购级差收益", 1),
|
||||
/**
|
||||
* 复购拓展收益
|
||||
*/
|
||||
CONSUMPTION_EXPANSION_INCOME(9, "旧复购拓展收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 9),
|
||||
CONSUMPTION_EXPANSION_INCOME(9, "旧复购拓展收益", 1),
|
||||
/**
|
||||
* 旧商城重销
|
||||
*/
|
||||
RESALE_IN_THE_MALL(10, "旧商城重销", 0, EnumsPrefixConstants.BONUS_ITEMS + 10),
|
||||
RESALE_IN_THE_MALL(10, "旧商城重销", 1),
|
||||
/**
|
||||
* 平台服务费
|
||||
*/
|
||||
PLATFORM_SERVICE_FEE(11, "旧平台服务费", 0, EnumsPrefixConstants.BONUS_ITEMS + 11),
|
||||
PLATFORM_SERVICE_FEE(11, "旧平台服务费", 1),
|
||||
/**
|
||||
* 复购券
|
||||
*/
|
||||
REPURCHASE_COUPONS(12, "旧复购券", 0, EnumsPrefixConstants.BONUS_ITEMS + 12),
|
||||
REPURCHASE_COUPONS(12, "旧复购券", 1),
|
||||
/**
|
||||
* 复购券均分收益
|
||||
*/
|
||||
REPURCHASE_COUPONS_SHARE(13, "旧复购券均分", 0, EnumsPrefixConstants.BONUS_ITEMS + 13),
|
||||
REPURCHASE_COUPONS_SHARE(13, "旧复购券均分", 1),
|
||||
|
||||
////////////////////////////////////////////////// 新奖项 //////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* 直推级差收益 -- 秒结,日奖
|
||||
*/
|
||||
RETAIL_RANGE_INCOME(25, "直推收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 25),
|
||||
RETAIL_RANGE_INCOME(25, "直推级差收益", 0),
|
||||
/**
|
||||
* 复购级差收益 -- 秒结,日奖
|
||||
*/
|
||||
RETAIL_REPURCHASE_INCOME(35, "复购收益", 0, EnumsPrefixConstants.BONUS_ITEMS + 35),
|
||||
RETAIL_REPURCHASE_INCOME(35, "复购级差收益", 0),
|
||||
|
||||
;
|
||||
|
||||
|
@ -90,8 +90,5 @@ public enum EBonusItems {
|
|||
* 是否启用(0=是,1=否) -- 来源EYesNo
|
||||
*/
|
||||
private final int enable;
|
||||
/**
|
||||
* 国际化翻译key值
|
||||
*/
|
||||
private final String key;
|
||||
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ public enum EGrade {
|
|||
*/
|
||||
BRANCH_COMPANY(7, 80, "V6", 0, EnumsPrefixConstants.GRADE + "80", MemberFrameworkConstants.COUNTY_AGENT),
|
||||
/**
|
||||
* 公司
|
||||
* 总公司
|
||||
*/
|
||||
COMPANY(8, 90, "V7", 0, EnumsPrefixConstants.GRADE + "90", MemberFrameworkConstants.CITY_AGENT),
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import lombok.Getter;
|
|||
public enum EUpgradeType {
|
||||
|
||||
/**
|
||||
* 1=自动升级 (奖衔),2=手动升级(等级奖衔),3=购买赠予(奖衔) 4=购买升级(等级前台报单、升级) 5=活动升级(等级)
|
||||
* 1=自动升级 -- 目前只高级店主升级为自动升级
|
||||
*/
|
||||
AUTO_UPGRADE(1, "自动升级", 0, EnumsPrefixConstants.UPGRADE_TYPE + 1),
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ public class CuMemberBonus extends BaseEntity {
|
|||
private BigDecimal repurPushIncome;
|
||||
|
||||
/**
|
||||
* 复购级差收益
|
||||
* 复购级差收益 -- 新复购级差收益
|
||||
*/
|
||||
@TableField("REPUR_RANGE_INCOME")
|
||||
private BigDecimal repurRangeIncome;
|
||||
|
@ -224,7 +224,7 @@ public class CuMemberBonus extends BaseEntity {
|
|||
private BigDecimal makerRealSubtotal;
|
||||
|
||||
/**
|
||||
* 新零售直推收益
|
||||
* 新零售直推收益 -- 新直推级差收益
|
||||
*/
|
||||
@TableField("RETAIL_RANGE_INCOME")
|
||||
private BigDecimal retailRangeIncome;
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
package com.hzs.common.domain.member.detail.ext;
|
||||
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* @Description: 奖衔升级记录扩展类
|
||||
* @Author: jiang chao
|
||||
* @Time: 2024/2/28 16:38
|
||||
* @Classname: CuMemberAwardsExt
|
||||
* @PackageName: com.hzs.common.domain.member.detail.ext
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class CuMemberAwardsExt extends CuMemberAwards {
|
||||
|
||||
/**
|
||||
* 奖衔值
|
||||
*/
|
||||
private Integer awardsValue;
|
||||
|
||||
}
|
|
@ -35,14 +35,6 @@ public class SaOrderExt extends SaOrder {
|
|||
* 会员电话
|
||||
*/
|
||||
private String memberPhone;
|
||||
/**
|
||||
* 服务编号
|
||||
*/
|
||||
private String memberServiceCode;
|
||||
/**
|
||||
* 会员昵称
|
||||
*/
|
||||
private String memberNickName;
|
||||
/**
|
||||
* 所属体系
|
||||
*/
|
||||
|
@ -61,25 +53,12 @@ public class SaOrderExt extends SaOrder {
|
|||
* 创建人姓名
|
||||
*/
|
||||
private String creatorName;
|
||||
/**
|
||||
* 创建人服务编号
|
||||
*/
|
||||
private String creatorServiceCode;
|
||||
/**
|
||||
* 创建人昵称
|
||||
*/
|
||||
private String creatorNickName;
|
||||
/**
|
||||
* 创建人体系
|
||||
*/
|
||||
private Long creatorPkVertex;
|
||||
|
||||
/**
|
||||
* 结算国
|
||||
*/
|
||||
private Integer pkSettleCountry;
|
||||
|
||||
|
||||
/**
|
||||
* 审核状态(0=待提交,1=待审核,2=审核通过,3=审核驳回)
|
||||
*/
|
||||
|
@ -99,11 +78,6 @@ public class SaOrderExt extends SaOrder {
|
|||
*/
|
||||
private Long pkCenterCode;
|
||||
|
||||
/**
|
||||
* 店铺等级
|
||||
*/
|
||||
private Integer pkStoreLevel;
|
||||
|
||||
/**
|
||||
* 订单明细表
|
||||
*/
|
||||
|
@ -134,11 +108,6 @@ public class SaOrderExt extends SaOrder {
|
|||
*/
|
||||
private Integer editType;
|
||||
|
||||
/**
|
||||
* 提货码
|
||||
*/
|
||||
private String selfCode;
|
||||
|
||||
/**
|
||||
* 公司
|
||||
*/
|
||||
|
|
|
@ -9,12 +9,7 @@ import lombok.EqualsAndHashCode;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description: 自提订单申请
|
||||
* @author: sui q
|
||||
* @time: 2023/4/19 19:28
|
||||
* @classname: SaOrderSelfLogExt
|
||||
* @package_name: com.hzs.common.domain.sale.ext
|
||||
* version 1.0.0
|
||||
* 自提订单申请
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
|
|
Loading…
Reference in New Issue