## 调整部分奖金处理;生产定时任务token替换;

This commit is contained in:
cabbage 2025-08-28 10:33:25 +08:00
parent e944bb10b9
commit 846e667c5b
41 changed files with 392 additions and 1492 deletions

View File

@ -13,29 +13,29 @@ import java.util.Map;
*/
public interface IMemberSettleBonusApi {
/*
* 定时任务每天自动计算奖金
**/
/**
* 定时任务每天自动计算奖金
*/
R<Boolean> autoCalculateBonus(Date settleDate);
/*
* 定时任务每天自动公布奖金
**/
/**
* 定时任务每天自动公布奖金
*/
void autoPublishBonus();
/*
* 定时任务每天自动发放奖金
**/
/**
* 定时任务每天自动发放奖金
*/
void autoGrantBonus();
/*
* 每日生成业绩月表统计数据
**/
/**
* 每日生成业绩月表统计数据
*/
void insertCuMemberAchieveByEveryDay();
/*
* 退单回退业绩
**/
/**
* 退单回退业绩
*/
Boolean chargeBackSaOrder(SaOrder saOrder);
/**

View File

@ -5,13 +5,6 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Description:
* @Author: sui q
* @Time: 2023/2/21 15:32
* @Classname: BonusExpandDTO
* @PackageName: com.hzs.system.config.dto
*/
@Data
public class BonusExpandDTO implements Serializable {

View File

@ -4,26 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.bonus.param.BonusParam;
import com.hzs.common.domain.member.achieve.CuMemberAchieve;
import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt;
import com.hzs.bonus.achieve.param.MonthAchieveParam;
import com.hzs.bonus.achieve.vo.CuMemberAwardsUnderVO;
import com.hzs.bonus.achieve.vo.CuMemberMonthAchieveContrastVO;
import com.hzs.bonus.achieve.vo.CuMemberNewAddAchieveVO;
import com.hzs.common.domain.member.ext.CuMemberSettleCountryExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* <p>
* 会员业绩记录 Mapper 接口
* </p>
*
* @author hzs
* @since 2022-10-26
*/
public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
@ -31,9 +18,6 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
* 创建会员网体记录表
*
* @param tableName 日期
* @return: void
* @Author: sui q
* @Date: 2022/10/31 11:44
*/
void createCuMemberAchieveTable(String tableName);
@ -41,17 +25,11 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
* 创建每年的会员考核表
*
* @param tableName 表名
* @return: void
* @Author: sui q
* @Date: 2022/11/7 14:10
*/
void createCuMemberMonthTable(String tableName);
/*
* @description:更新会员业绩表 每月月统计报表
* @author: sui q
* @date: 2023/8/29 10:57
* @param: null null
* 更新会员业绩表 每月月统计报表
**/
void mergeCuMemberMonth(@Param("date") String date, @Param("period") Integer period);
@ -61,9 +39,6 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
* @param targetTableName 目标表 网体月表
* @param sourceTableName 来源表 结算日表
* @param period 期间
* @return: void2
* @Author: sui q
* @Date: 2023/2/16 11:35
*/
void insertCuMemberAchieveBySettleDate(@Param("targetTableName") String targetTableName,
@Param("sourceTableName") String sourceTableName, @Param("period") Integer period);
@ -74,9 +49,6 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
* @param targetTableName 目标表 网体月表
* @param sourceTableName 来源表 结算日表
* @param period 期间
* @return: void
* @Author: sui q
* @Date: 2023/2/16 11:35
*/
void mergeCuMemberAchieveBySettleDate(@Param("targetTableName") String targetTableName,
@Param("sourceTableName") String sourceTableName, @Param("period") Integer period);
@ -87,9 +59,6 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
*
* @param sourceTable 来源表记录10天跟月表一摸一样的滚动表数据
* @param targetTable 目标表 记录10天跟月表一摸一样的滚动表数据
* @return: void
* @Author: sui q
* @Date: 2022/10/31 16:26
*/
void updateCuMemberSettleAchieveByBeforeDay(@Param("sourceTable") String sourceTable, @Param("targetTable") String targetTable,
@Param("flag") Integer flag);
@ -100,9 +69,6 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
*
* @param sourceTable 来源表记录10天跟月表一摸一样的滚动表数据
* @param targetTable 目标表 记录10天跟月表一摸一样的滚动表数据
* @return: void
* @Author: sui q
* @Date: 2022/10/31 16:26
*/
void updateCuMemberSettleAchieveDetailByBeforeDay(@Param("sourceTable") String sourceTable, @Param("targetTable") String targetTable,
@Param("flag") Integer flag);
@ -113,41 +79,26 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
*
* @param sourceTable 来源表记录10天跟月表一摸一样的滚动表数据
* @param targetTable 目标表 记录10天跟月表一摸一样的滚动表数据
* @return: void
* @Author: sui q
* @Date: 2022/10/31 16:26
*/
void updateCuMemberSettleCountryDetailByBeforeDay(@Param("sourceTable") String sourceTable, @Param("targetTable") String targetTable);
/*
* @description: 根据期间更新会员表复消剩余收益次数 复消剩余收益奖金
* @author: sui q
* @date: 2023/11/2 16:15
* @param: null null
* 根据期间更新会员表复消剩余收益次数 复消剩余收益奖金
**/
void mergeBackCuMemberReSaleDate(@Param("targetTable") String targetTable, @Param("period") Integer period);
/*
* @description: 更新为最初始的数据新增的为0历史的通过昨天进行更新
* @author: sui q
* @date: 2023/8/11 14:57
* @param: null null
* 更新为最初始的数据新增的为0历史的通过昨天进行更新
**/
void updateCuMemberSettleInitAchieve(String targetTable);
/*
* @description: 更新为最初始的数据新增的为0历史的通过昨天进行更新
* @author: sui q
* @date: 2023/8/11 14:57
* @param: null null
* 更新为最初始的数据新增的为0历史的通过昨天进行更新
**/
void updateCuMemberSettleDetailInitAchieve(String targetTable);
/*
* @description: 更新为最初始的数据新增的为0历史的通过昨天进行更新
* @author: sui q
* @date: 2023/8/11 14:57
* @param: null null
* 更新为最初始的数据新增的为0历史的通过昨天进行更新
**/
void updateCuMemberCountryDetailInitAchieve(String targetTable);
@ -157,9 +108,6 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
* @param targetTable 结算表
* @param period 期间
* @param pkId 主键
* @return: void
* @Author: sui q
* @Date: 2023/3/11 13:42
*/
void updateCuMemberSettleAchieveBySpecialBus(@Param("targetTable") String targetTable, @Param("period") Integer period,
@Param("pkId") Long pkId);
@ -169,18 +117,12 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
*
* @param memberAchieveParamList 会员业绩
* @param tableName 更新的表结算日的日表
* @return: Boolean
* @Author: sui q
* @Date: 2022/11/2 11:30
*/
Boolean updateCuMemberBackOldAchieveEveryDay(@Param("memberAchieveParamList") List<?> memberAchieveParamList,
@Param("tableName") String tableName ,@Param("settleTableNameDetail") String settleTableNameDetail);
@Param("tableName") String tableName, @Param("settleTableNameDetail") String settleTableNameDetail);
/*
* @description: 退单回退业绩
* @author: sui q
* @date: 2023/9/22 9:27
* @param: null null
* 退单回退业绩
**/
void chargeBackSaOrder(@Param("targetTable") String targetTable, @Param("sourceTable") String sourceTable,
@Param("period") Integer period, @Param("achieve") MemberAchieveParam memberAchieveParam);
@ -190,27 +132,18 @@ public interface CuMemberAchieveMapper extends BaseMapper<CuMemberAchieve> {
*
* @param memberAchieveParamList 会员业绩
* @param tableName 更新的表结算日的日表
* @return: Boolean
* @Author: sui q
* @Date: 2022/11/2 11:30
*/
void updateCuMemberBackAchieveEveryDay(@Param("memberAchieveParamList") List<?> memberAchieveParamList, @Param("settleTableNameDetail") String settleTableNameDetail,
@Param("tableName") String tableName);
/*
* @description: 更新累计血缘业绩
* @author: sui q
* @date: 2023/10/10 15:16
* @param: null null
* 更新累计血缘业绩
**/
void updateCuMemberBloodAchieveEveryDate(@Param("memberAchieveParamList") List<?> memberAchieveParamList,
@Param("tableName") String tableName);
/*
* @description: 查询会员公司来源业绩
* @author: sui q
* @date: 2024/1/18 20:52
* @param: null null
* 查询会员公司来源业绩
**/
List<CuMemberSettleCountryExt> queryCuMemberSettleCountry(@Param("settleCountryTable")String settleCountryTable, @Param("bonusParam") BonusParam bonusParam);
List<CuMemberSettleCountryExt> queryCuMemberSettleCountry(@Param("settleCountryTable") String settleCountryTable, @Param("bonusParam") BonusParam bonusParam);
}

View File

@ -10,28 +10,17 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 会员结算期间 Mapper 接口
* </p>
*
* @author hzs
* @since 2022-10-26
*/
public interface CuMemberSettlePeriodMapper extends BaseMapper<CuMemberSettlePeriod> {
/*
* @description: 根据日期查询会员结算期间
* @author: sui q
* @date: 2023/7/27 19:21
* @param: null null
* 根据日期查询会员结算期间
**/
CuMemberSettlePeriodExt queryMemberSettlePeriod(@Param("pkCountry") Integer pkCountry, @Param("settleDate") Date settleDate);
/*
* @description: 查询期间
* @author: sui q
* @date: 2023/7/29 15:44
* @param: null null
* 查询期间
**/
List<CuMemberSettlePeriodExt> queryMemberSettlePeriodByCondition(MemberPeriodParam memberPeriodParam);

View File

@ -3,7 +3,6 @@ package com.hzs.bonus.achieve.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.CuMemberTree;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.bonus.achieve.param.MemberParentCountParam;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@ -262,13 +261,4 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
*/
void updateCuMemberSettleCountry(@Param("settleTableNameCountry") String settleTableName, @Param("cuMemberSettleCountryExtList") List<?> cuMemberTreeList);
/**
* 查询会员直推业绩
*
* @param settleTableName
* @param memberIds
* @return
*/
List<MemberParentCountParam> queryByMemberParentSumPv(@Param("tableName") String settleTableName, @Param("memberIds") List<Long> memberIds);
}

View File

@ -1,9 +1,5 @@
package com.hzs.bonus.achieve.param;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -13,12 +9,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 会员业绩记录
* </p>
*
* @author hzs
* @since 2022-10-26
*/
@Data
@Builder

View File

@ -1,39 +0,0 @@
package com.hzs.bonus.achieve.param;/**
* @Description:
* @Author: yuhui
* @Time: 2023/7/10 14:01
* @Classname: MemberParentCountParam
* @PackageName: com.hzs.member.achieve.param
*/
import lombok.Data;
import java.math.BigDecimal;
/**
*@BelongsProject: hzs_cloud
*@BelongsPackage: com.hzs.member.achieve.param
*@Author: yh
*@CreateTime: 2023-07-10 14:01
*@Description: TODO
*@Version: 1.0
*/
@Data
public class MemberParentCountParam {
/**
* 会员主键
*/
private Long pkMember;
/**
* 会员直推数量
*/
private Long parentMemberCount;
/**
* 会员直推pv
*/
private BigDecimal parentMemberSumPv;
}

View File

@ -8,11 +8,7 @@ import java.io.Serializable;
import java.util.Date;
/**
* @Description: 奖金期数
* @Author: sui q
* @Time: 2023/3/24 10:50
* @Classname: MemberPeriodParam
* @PackageName: com.hzs.member.achieve.param
* 奖金期数
*/
@Data
public class MemberPeriodParam implements Serializable {

View File

@ -1,42 +0,0 @@
package com.hzs.bonus.achieve.param;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @description: 月度业绩
* @author: sui q
* @time: 2023/8/29 17:37
* @classname: MonthAchieveParam
* @package_name: com.hzs.member.achieve.param
* version 1.0.0
*/
@Data
public class MonthAchieveParam implements Serializable {
private String month;
private String memberCode;
private String memberName;
private Long pkMember;
private Integer placeDept;
private Date startDate;
private Date endDate;
/**
* 等级
*/
private Integer pk_grade;
/**
* 真实奖衔
*/
private Integer pk_awards;
}

View File

@ -9,12 +9,7 @@ import java.util.Date;
import java.util.List;
/**
* <p>
* 会员结算期间 服务类
* </p>
*
* @author hzs
* @since 2022-10-26
*/
public interface ICuMemberSettlePeriodService extends IService<CuMemberSettlePeriod> {
@ -22,53 +17,40 @@ public interface ICuMemberSettlePeriodService extends IService<CuMemberSettlePer
/**
* 根据日期获得日期对应的期间
*
* @param date 日期 2023-02-02
* @return: CuMemberSettlePeriod
* @Author: sui q
* @Date: 2022/11/2 13:32
*/
*/
CuMemberSettlePeriod getCuMemberSettlePeriodByDate(String date);
/*
* @description: 根据期间查询会员结算期间
* @author: sui q
* @date: 2024/2/25 10:20
* @param: null null
* 根据期间查询会员结算期间
**/
CuMemberSettlePeriod getCuMemberSettlePkPeriod(Integer pkPeriod);
/**
* 根据日期获得日期对应的期间
*
* @param date 日期 2023-02-02
* @return: CuMemberSettlePeriod
* @Author: sui q
* @Date: 2022/11/2 13:32
*/
CuMemberSettlePeriodExt getCuMemberSettlePeriod(Integer pkCountry, Date date);
/**
* 根据国家查询奖金期数返回到前台
* @return: List<CuMemberSettlePeriod>
* @Author: sui q
* @Date: 2023/1/30 17:27
*/
List<CuMemberSettlePeriod> queryCuMemberSettlePeriod();
/**
* 根据国家查询奖金期数返回到前台
*
* @param periodParam 查询参数
* @return: List<CuMemberSettlePeriod>
* @Author: sui q
* @Date: 2023/1/30 17:27
*/
*/
List<CuMemberSettlePeriodExt> queryCuMemberSettlePeriod(MemberPeriodParam periodParam);
/**
* 根据时间更新会员结算期间状态
*
* @param cuMemberSettlePeriodByDate 修改的期间
* @Author: sui q
* @Date: 2023/3/20 18:37
*/
*/
void updateCuMemberSettlePeriodByDate(CuMemberSettlePeriodExt cuMemberSettlePeriodByDate);
/**

View File

@ -5,8 +5,6 @@ import com.hzs.common.domain.member.achieve.CuMemberTree;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.param.MemberParentCountParam;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@ -186,15 +184,6 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
*/
void updateCuMemberSettle(String settleTableName, String settleTableNameDetail, String settleTableCountry, Map<Long, CuMemberSettleExt> cuMemberTreeMap);
/**
* 查询会员直推业绩
*
* @param settleTableName
* @param memberIds
* @return
*/
List<MemberParentCountParam> queryByMemberParentSumPv(String settleTableName, List<Long> memberIds);
/**
* 删除日表数据
*

View File

@ -1,5 +1,6 @@
package com.hzs.bonus.achieve.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodDetailService;
@ -28,32 +29,20 @@ import java.time.temporal.ChronoUnit;
import java.util.*;
/**
* <p>
* 会员结算期间 服务实现类
* </p>
*
* @author hzs
* @since 2022-10-26
*/
@Service
public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettlePeriodMapper, CuMemberSettlePeriod> implements ICuMemberSettlePeriodService {
@Autowired
private RedisService redisService;
@Autowired
private ICuMemberSettlePeriodDetailService cuMemberSettlePeriodDetailService;
private ICuMemberSettlePeriodDetailService iCuMemberSettlePeriodDetailService;
@DubboReference
private ICountryServiceApi countryServiceApi;
ICountryServiceApi iCountryServiceApi;
@DubboReference
private ISystemConfigServiceApi systemConfigServiceApi;
@Autowired
public void setRedisService(RedisService redisService) {
this.redisService = redisService;
}
ISystemConfigServiceApi iSystemConfigServiceApi;
@Override
public void initCuMemberPeriod(String settleDate) {
@ -63,11 +52,11 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
packageSettleCountry(weekSettleCountry, daySettleCountry);
List<CuMemberSettlePeriodDetail> cuMemberSettlePeriodDetailList = new ArrayList<>();
Date startDate = DateUtils.parseStringToDate("2023-12-12");
Date endDate = DateUtils.parseStringToDate(settleDate);
Date endDate = DateUtils.parseStringToDate(settleDate);
Map<String, CuMemberSettlePeriod> memberSettlePeriodMap = queryCuMemberSettlePeriod(startDate,
endDate);
List<String> periodList = new ArrayList<>();
while (DateUtils.compareDate(endDate, startDate) >=0) {
while (DateUtils.compareDate(endDate, startDate) >= 0) {
if (daySettleCountry.size() > 0) {
CuMemberSettlePeriod cuMemberSettlePeriod = memberSettlePeriodMap.get(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, startDate));
for (Integer pkCountry : daySettleCountry) {
@ -112,8 +101,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
startDate = DateUtils.afterDate(1, ChronoUnit.DAYS, startDate);
}
cuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
iCuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
}
@Override
@ -189,7 +177,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
}
}
cuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
iCuMemberSettlePeriodDetailService.saveBatch(cuMemberSettlePeriodDetailList);
cuMemberSettlePeriod = getCuMemberSettlePeriod(date);
} else {
return null;
@ -205,9 +193,9 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
private void packageSettleCountry(List<Integer> weekSettleCountry, List<Integer> daySettleCountry) {
Map<Integer, BdCountry> allCountryMap = countryServiceApi.getAllCountryMap().getData();
Map<Integer, BdCountry> allCountryMap = iCountryServiceApi.getAllCountryMap().getData();
for (Integer pkCountry : allCountryMap.keySet()) {
String value = systemConfigServiceApi.getBonusSystemConfig(pkCountry, ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(pkCountry, ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
// 周结
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
weekSettleCountry.add(pkCountry);
@ -223,21 +211,18 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
}
private CuMemberSettlePeriod getCuMemberSettlePeriod(String date) {
QueryWrapper<CuMemberSettlePeriod> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("SETTLE_DATE", DateUtils.parseStringToDate(date));
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberSettlePeriod::getSettleDate, DateUtils.parseStringToDate(date));
return baseMapper.selectOne(queryWrapper);
}
/*
* @description: 获取期间开始时间到结束时间
* @author: sui q
* @date: 2023/7/29 9:43
* @param: null null
* 获取期间开始时间到结束时间
**/
private Map<String, CuMemberSettlePeriod> queryCuMemberSettlePeriod(Date startDate, Date endDate) {
QueryWrapper<CuMemberSettlePeriod> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("SETTLE_DATE", startDate);
queryWrapper.le("SETTLE_DATE", endDate);
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(CuMemberSettlePeriod::getSettleDate, startDate);
queryWrapper.le(CuMemberSettlePeriod::getSettleDate, endDate);
List<CuMemberSettlePeriod> memberSettlePeriodList = baseMapper.selectList(queryWrapper);
Map<String, CuMemberSettlePeriod> cuMemberSettlePeriodMap = new HashMap<>();
memberSettlePeriodList.forEach(cuMemberSettlePeriod ->
@ -247,9 +232,9 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
@Override
public List<CuMemberSettlePeriod> queryCuMemberSettlePeriod() {
QueryWrapper<CuMemberSettlePeriod> queryWrapper = new QueryWrapper<>();
queryWrapper.select("PK_ID,SETTLE_DATE");
queryWrapper.orderByDesc(SystemFieldConstants.PK_ID);
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.select(CuMemberSettlePeriod::getPkId, CuMemberSettlePeriod::getSettleDate);
queryWrapper.orderByDesc(CuMemberSettlePeriod::getPkId);
return baseMapper.selectList(queryWrapper);
}
@ -260,10 +245,7 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
@Override
public void updateCuMemberSettlePeriodByDate(CuMemberSettlePeriodExt cuMemberSettlePeriodByDate) {
// baseMapper.updateById(cuMemberSettlePeriodByDate);
cuMemberSettlePeriodDetailService.updateCuMemberSettlePeriodDetailByPeriod(cuMemberSettlePeriodByDate);
// String key = CacheConstants.CU_MEMBER_SETTLE_PERIOD + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, cuMemberSettlePeriodByDate.getSettleDate());
// redisService.deleteObjectByKey(key);
iCuMemberSettlePeriodDetailService.updateCuMemberSettlePeriodDetailByPeriod(cuMemberSettlePeriodByDate);
}
@Override

View File

@ -16,7 +16,6 @@ import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.bonus.achieve.mapper.CuMemberTreeMapper;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.param.MemberParentCountParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -32,32 +31,18 @@ import java.util.*;
@Service
public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuMemberTree> implements ICuMemberTreeService {
private ICuMemberAchieveService cuMemberAchieveService;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
}
private ICuMemberAchieveService iCuMemberAchieveService;
@Autowired
public void setCuMemberBonusSettle(CuMemberBonusSettle cuMemberBonusSettle) {
this.cuMemberBonusSettle = cuMemberBonusSettle;
}
@Autowired
public void setCuMemberAchieveService(ICuMemberAchieveService cuMemberAchieveService) {
this.cuMemberAchieveService = cuMemberAchieveService;
}
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Override
@Transactional(rollbackFor = Exception.class)
public void createCuMemberTree(String date) {
// 创建日表记录表
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(date).getPkId();
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
Integer number = baseMapper.queryExistOracleTable(settleTableName);
if (number == null || number <= 0) {
@ -81,7 +66,7 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
number = baseMapper.queryExistOrderTableCount(settleTableName);
if (number == null || number <= 0) {
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, date);
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
String yesSettleTableName = TableNameConstants.CU_MEMBER_SETTLE_D + yesterdayPeriod;
// 初始化日表数据将cu_member数据插入到最新的日表记录表
baseMapper.insertCuMemberSettleDetailByMember(settleTableName, yesSettleTableName);
@ -96,29 +81,29 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
// 创建月表记录表
// createMonthTreeTableName(date);
// 创建月表业绩记录表
// cuMemberAchieveService.createCuMemberAchieve(date);
// iCuMemberAchieveService.createCuMemberAchieve(date);
}
@Override
public void initCuMemberTreeTable(String yesterdaySettleTableName, String currentSettleTableName, String yesterdayTableNameDetail, String currentTableNameDetail,
Integer period, Integer endPeriod, String sourceCountryTable, String targetCountryTable) {
// 更新所有值为0
cuMemberAchieveService.updateCuMemberSettleInitAchieve(currentSettleTableName, currentTableNameDetail, targetCountryTable);
iCuMemberAchieveService.updateCuMemberSettleInitAchieve(currentSettleTableName, currentTableNameDetail, targetCountryTable);
// 初始化结算日的数据将日期-1的数据作为当天的数据
cuMemberAchieveService.updateCuMemberSettleAchieveByBeforeDay(yesterdaySettleTableName, currentSettleTableName, yesterdayTableNameDetail, currentTableNameDetail, endPeriod,
iCuMemberAchieveService.updateCuMemberSettleAchieveByBeforeDay(yesterdaySettleTableName, currentSettleTableName, yesterdayTableNameDetail, currentTableNameDetail, endPeriod,
sourceCountryTable, targetCountryTable);
// 还原复销剩余次数 复销剩余奖金
cuMemberAchieveService.mergeBackCuMemberReSaleDate(currentSettleTableName, period);
iCuMemberAchieveService.mergeBackCuMemberReSaleDate(currentSettleTableName, period);
}
@Override
public void updateCuMemberSettle(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, String currentSettleTableName, String settleTableNameDetail) {
cuMemberAchieveService.updateCuMemberAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName, settleTableNameDetail);
iCuMemberAchieveService.updateCuMemberAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName, settleTableNameDetail);
}
@Override
public void updateCuMemberBackSettle(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, String currentSettleTableName, String settleTableNameDetail) {
cuMemberAchieveService.updateCuMemberBackOldAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName, settleTableNameDetail);
iCuMemberAchieveService.updateCuMemberBackOldAchieveEveryDay(cuMemberAchieveHashMap, currentSettleTableName, settleTableNameDetail);
}
@Override
@ -326,11 +311,6 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
}
}
@Override
public List<MemberParentCountParam> queryByMemberParentSumPv(String settleTableName, List<Long> memberIds) {
return baseMapper.queryByMemberParentSumPv(settleTableName, memberIds);
}
private List<List<?>> setUpdCuMemberTreeLists(List<CuMemberSettleExt> cuMemberTreeList) {
return cuMemberBonusSettle.handleCutList(cuMemberTreeList);
}

View File

@ -14,12 +14,6 @@ import java.math.BigDecimal;
/**
* 伞下奖衔VO
*
* @Description:
* @Author: ljc
* @Time: 2023/5/5 20:08
* @Classname: CuMemberAwardsUnderVO
* @Package_name: com.hzs.member.achieve.vo
*/
@Data
@Builder

View File

@ -11,12 +11,6 @@ import java.math.BigDecimal;
/**
* 月度新增业绩对比VO
*
* @Description:
* @Author: ljc
* @Time: 2023/5/11 16:18
* @Classname: CuMemberMonthAchieveContrastVO
* @Package_name: com.hzs.member.achieve.vo
*/
@Data
@Builder

View File

@ -13,12 +13,6 @@ import java.util.Date;
/**
* 会员新增业绩
*
* @Description:
* @Author: ljc
* @Time: 2023/5/5 14:12
* @Classname: CuMemberNewAddAchieveVO
* @Package_name: com.hzs.member.achieve.vo
*/
@Data
@Builder

View File

@ -20,13 +20,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
*/
List<Long> batchQueryCuMemberBonusSeq(Integer rowNum);
/**
* 根据查询条件查询会员奖金
*
* @param bonusParam 查询条件
*/
List<CuMemberBonus> queryMemberBonusTotalByCondition(BonusParam bonusParam);
/**
* 根据查询条件查询会员奖金
*
@ -62,13 +55,6 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
*/
void batchInsertCuMemberBonus(@Param("cuMemberBonusList") List<?> cuMemberBonusList);
/**
* 批量插入会员奖金主表
*
* @param cuMemberBonusList 会员奖金
*/
void insertOrUpdateCuMemberBonus(@Param("cuMemberBonusList") List<CuMemberBonus> cuMemberBonusList);
/**
* 更新奖金状态
*

View File

@ -8,28 +8,13 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 会员奖金-分红奖金配置明细 Mapper 接口
* </p>
*
* @author hzs
* @since 2023-07-03
*/
public interface CuMemberShareDetailMapper extends BaseMapper<CuMemberShareDetail> {
/*
* @description: 更新分享明细
* @author: sui q
* @date: 2023/7/3 14:11
* @param: null null
* 更新分享明细
**/
void saveMemberShareBonus(@Param("cuMemberShareDetailList") List<CuMemberShareDetailExt> cuMemberShareDetailList);
/*
* @description: 根据期间查询对应的奖衔 period当前月第一天
* @author: sui q
* @date: 2023/8/11 15:42
* @param: null null
**/
List<CuMemberShareDetail> queryCuMemberShareBonusByPeriod(Integer period);
}

View File

@ -5,7 +5,6 @@ import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
import com.hzs.bonus.achieve.service.ICuMemberMonthAchieveService;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.bonus.service.IBonusGrantService;
import com.hzs.bonus.bonus.service.IBonusSettleService;
import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.settle.IMemberSettleBonusApi;
import com.hzs.common.core.domain.R;
@ -30,17 +29,13 @@ import java.util.Map;
public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
@Autowired
private ICuMemberMonthAchieveService cuMemberMonthAchieveService;
private ICuMemberMonthAchieveService iCuMemberMonthAchieveService;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private IBonusGrantService bonusGrantService;
private IBonusGrantService iBonusGrantService;
@Autowired
private ICuMemberAchieveService cuMemberAchieveService;
private ICuMemberAchieveService iCuMemberAchieveService;
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@ -68,31 +63,31 @@ public class MemberSettleBonusProvider implements IMemberSettleBonusApi {
log.info("奖金结算完成,结算时间:{}", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, settleDate));
// 奖金结算
try {
cuMemberBonusService.autoCalculateBonus(settleDate, settleEndDate);
iCuMemberBonusService.autoCalculateBonus(settleDate, settleEndDate);
} catch (Exception e) {
log.info("11111111", e);
log.error("奖金结算异常,", e);
}
}
}
@Override
public void insertCuMemberAchieveByEveryDay() {
cuMemberMonthAchieveService.insertCuMemberAchieveByEveryDay(DateUtils.beforeDate(1, ChronoUnit.DAYS));
iCuMemberMonthAchieveService.insertCuMemberAchieveByEveryDay(DateUtils.beforeDate(1, ChronoUnit.DAYS));
}
@Override
public void autoPublishBonus() {
bonusGrantService.publishBonusByPeriodEveryDay();
iBonusGrantService.publishBonusByPeriodEveryDay();
}
@Override
public void autoGrantBonus() {
bonusGrantService.grantWithdrawBonusByPeriodEveryDay();
iBonusGrantService.grantWithdrawBonusByPeriodEveryDay();
}
@Override
public Boolean chargeBackSaOrder(SaOrder saOrder) {
return cuMemberAchieveService.chargeBackSaOrder(saOrder);
return iCuMemberAchieveService.chargeBackSaOrder(saOrder);
}
@Override

View File

@ -5,7 +5,6 @@ import com.hzs.common.core.web.page.TableDataInfo;
import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.ext.CuMemberBonusExt;
import com.hzs.bonus.bonus.param.BonusParam;
import com.hzs.bonus.bonus.vo.MemberBonusVO;
import java.util.Date;
import java.util.List;
@ -24,13 +23,6 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
*/
List<Long> batchQueryCuMemberBonusSeq(Integer rowNum);
/**
* 根据查询条件查询每日奖金汇总
*
* @param bonusParam 查询条件
*/
List<MemberBonusVO> queryMemberBonusTotalVoByCondition(BonusParam bonusParam);
/**
* 根据查询条件查询会员奖金
*
@ -94,26 +86,6 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
*/
void batchInsertCuMemberBonus(List<CuMemberBonus> cuMemberBonusList);
/**
* 批量插入会员奖金主表
*
* @param cuMemberBonusList 会员奖金
*/
void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList);
/*
* 查询会员奖金
**/
List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList);
/**
* 根据国家期间查询存在首购奖金的会员
*
* @param period 期间
* @param pkCountryList 国家
*/
List<CuMemberBonus> queryExistsPurchaseBonusMember(Integer period, List<Integer> pkCountryList);
/**
* 更新奖金状态
*

View File

@ -5,32 +5,15 @@ import com.hzs.common.domain.member.bonus.CuMemberShareDetail;
import com.hzs.common.domain.member.ext.CuMemberShareDetailExt;
import java.util.List;
import java.util.Map;
/**
* <p>
* 会员奖金-分红奖金配置明细 服务类
* </p>
*
* @author hzs
* @since 2023-07-03
*/
public interface ICuMemberShareDetailService extends IService<CuMemberShareDetail> {
/*
* @description: 更新分享明细
* @author: sui q
* @date: 2023/7/3 14:11
* @param: null null
* 更新分享明细
**/
void saveMemberShareBonus(List<CuMemberShareDetailExt> cuMemberShareDetailList);
/*
* @description: 根据期间查询奖衔设置的分红配置
* key 国家+奖衔 明细
* @author: sui q
* @date: 2023/8/11 15:35
* @param: null null
**/
Map<String, CuMemberShareDetail> queryCuMemberShareBonusByPeriod(Integer period);
}

View File

@ -4,13 +4,11 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.bonus.service.ICuMemberShareDetailService;
import com.hzs.common.core.constant.*;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.domain.bonus.BdBonusDeduct;
import com.hzs.common.domain.bonus.BdBonusService;
import com.hzs.common.domain.bonus.risk.CuMemberRiskControl;
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
import com.hzs.common.domain.member.base.CuAwardsControl;
@ -19,13 +17,10 @@ import com.hzs.common.domain.member.ext.CuMemberSettleCountryExt;
import com.hzs.common.domain.member.ext.CuMemberSettleDetailExt;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.ext.SaOrderItemsExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderItems;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.*;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
@ -33,38 +28,27 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 计算首购的奖金处理类
* @Author: sui q
* @Time: 2022/11/15 10:08
* @Classname: BonusSettleComponent
* @PackageName: com.hzs.member.achieve.service.impl
* 计算首购的奖金处理类
*/
@Component
public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
@DubboReference
private IGradeServiceApi gradeServiceApi;
@DubboReference
private ISystemConfigServiceApi systemConfigServiceApi;
ISystemConfigServiceApi iSystemConfigServiceApi;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
private ICuMemberBonusService iCuMemberBonusService;
/**
* 计算直推奖
*
* @param settleTableName 结算表
* @param bonusConfigDTO 参数
* @param firPurchaseOrderList 首单
* @Description: 计算直推奖
* @return: void
* @Author: sui q
* @Date: 2022/11/10 14:17
*/
List<CuMemberBonusPush> calculateRecommendBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleTableNameDetail, BonusConfigDTO bonusConfigDTO,
List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberRiskControl> riskControlMap) {
@ -87,10 +71,6 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
/**
* 计算某条订单的推荐奖金
*
* @return: void
* @Author: sui q
* @Date: 2023/2/4 13:57
*/
CuMemberBonusPush calculatePushBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
SaOrderExt saOrderExt, Map<Long, CuMemberRiskControl> riskControlMap) {
@ -172,19 +152,17 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* 计算拓展收益
*
* @param settleTableName 结算表
* @param period 期间
* @param bonusConfigDTO 参数
* @param firPurchaseOrderList 首单
* @param cuMemberBonusMap 所有计算出来的奖金汇总
* @Description: 计算拓展收益
* @return: void
* @Author: sui q
* @Date: 2022/11/10 14:17
*/
List<CuMemberBonusExpand> calculateExpandBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleDate, String settleTableName, String settleTableNameDetail, BonusConfigDTO bonusConfigDTO,
List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberRiskControl> riskControlMap) {
Map<String, String> systemConfigMap = systemConfigServiceApi.getBonusSystemConfig().getData();
Map<String, String> systemConfigMap = iSystemConfigServiceApi.getBonusSystemConfig().getData();
Map<Long, CuMemberBonus> weekMemberBonusMap = getWeekMemberBonusMap(settleDate, period);
// 根据开始期间结束期间查询
List<CuMemberBonusExpand> cuMemberBonusExpandList = new ArrayList<>();
@ -216,16 +194,13 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
// 根据结算日期获取周期的期间用于海外
String recentlyMonday = DateUtils.getRecentlyTuesday(settleDate);
CuMemberSettlePeriod startMemberSettlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(recentlyMonday);
CuMemberSettlePeriod startMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(recentlyMonday);
// 查询封顶周期是周的国家的所有人的拓展收益复购拓展收益
return cuMemberBonusService.queryWeekMemberBonus(startMemberSettlePeriod.getPkId(), period);
return iCuMemberBonusService.queryWeekMemberBonus(startMemberSettlePeriod.getPkId(), period);
}
/**
* @Description: 计算量奖
* @return: List<CuMemberBonusExpand>
* @Author: sui q
* @Date: 2023/2/4 14:18
* 计算量奖
*/
List<CuMemberBonusExpand> calculateExpandBonusOne(Map<Long, CuMemberRiskControl> riskControlMap, Map<Long, CuMemberBonus> weekMemberBonusMap, Map<String, String> systemConfigMap, int touchNum, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO,
Integer period, String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap, List<CuMemberSettleExt> cuMemberSettleExtList, SaOrderExt saOrderExt) {
@ -243,11 +218,11 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
continue;
}
List<CuMemberSettleDetailExt> cuMemberSettleDetailExtList = targetMemberSettleExt.getCuMemberSettleDetailExtList();
if(CollectionUtil.isNotEmpty(cuMemberSettleDetailExtList)){
if (CollectionUtil.isNotEmpty(cuMemberSettleDetailExtList)) {
Map<Integer, CuMemberSettleDetailExt> cuMemberSettleDetailExtMap = new HashMap<>();
targetMemberSettleExt.getCuMemberSettleDetailExtList().forEach(cuMemberSettleDetailExt ->
cuMemberSettleDetailExtMap.put(cuMemberSettleDetailExt.getPlaceDept(), cuMemberSettleDetailExt));
if(cuMemberSettleDetailExtMap.containsKey(sourceMemberSettleExt.getPlaceDept())){
if (cuMemberSettleDetailExtMap.containsKey(sourceMemberSettleExt.getPlaceDept())) {
CuMemberSettleDetailExt cuMemberSettleDetailExt = cuMemberSettleDetailExtMap.get(sourceMemberSettleExt.getPlaceDept());
// 计算业绩
BdGrade bdGrade = gradeMap.get(targetMemberSettleExt.getPkSettleCountry().toString() + "_" + targetMemberSettleExt.getPkGrade());
@ -259,7 +234,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
cuMemberSettleDetailExt.setNewPv(ComputeUtil.computeAdd(cuMemberSettleDetailExt.getNewPv(), ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), cuMemberRiskControl.getAchieveRatio())));
cuMemberSettleDetailExt.setABalance(ComputeUtil.computeAdd(cuMemberSettleDetailExt.getABalance(), ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), cuMemberRiskControl.getAchieveRatio())));
cuMemberSettleDetailExt.setBBalance(ComputeUtil.computeAdd(cuMemberSettleDetailExt.getBBalance(), ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), cuMemberRiskControl.getAchieveRatio())));
}else{
} else {
cuMemberSettleDetailExt.setNewAmount(ComputeUtil.computeAdd(cuMemberSettleDetailExt.getNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
cuMemberSettleDetailExt.setNewPv(ComputeUtil.computeAdd(cuMemberSettleDetailExt.getNewPv(), saOrderExt.getOrderAchieve()));
cuMemberSettleDetailExt.setABalance(ComputeUtil.computeAdd(cuMemberSettleDetailExt.getABalance(), saOrderExt.getOrderAchieve()));
@ -291,26 +266,26 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
cuMemberSettleDetailExt.setBBalance(ComputeUtil.computeSubtract(cuMemberSettleDetailExt.getBBalance(), bdGrade.getTouchPv()));
rightCuMemberSettleExt.setABalance(ComputeUtil.computeSubtract(rightCuMemberSettleExt.getABalance(), bdGrade.getTouchPv()));
calculateExpandBonusByTouch(riskControlMap, weekMemberBonusMap, systemConfigMap, bonusConfigDTO, settleDate, saOrderExt, cuMemberBonusExpandList, sourceMemberSettleExt, bdGrade, targetMemberSettleExt, cuMemberBonus, touchNum, rightCuMemberSettleExt);
touchNum ++;
touchNum++;
}
}
}
}
// 处理各个国家的业绩组成
List<CuMemberSettleCountryExt> cuMemberSettleCountryExtList = targetMemberSettleExt.getCuMemberSettleCountryExtList();
if(CollectionUtil.isEmpty(cuMemberSettleCountryExtList)){
if (CollectionUtil.isEmpty(cuMemberSettleCountryExtList)) {
cuMemberSettleCountryExtList = new ArrayList<>();
packageCuMemberSettleCountry(saOrderExt, sourceMemberSettleExt, cuMemberSettleCountryExtList, bonusConfigDTO);
}else{
} else {
Map<String, CuMemberSettleCountryExt> cuMemberSettleCountryExtHashMap = new HashMap<>();
cuMemberSettleCountryExtList.forEach(cuMemberSettleCountryExt ->
cuMemberSettleCountryExtHashMap.put(cuMemberSettleCountryExt.getPlaceDept() + "_" + cuMemberSettleCountryExt.getPkCountry(), cuMemberSettleCountryExt));
String key = sourceMemberSettleExt.getPlaceDept() + "_" + saOrderExt.getPkCountry();
if(cuMemberSettleCountryExtHashMap.containsKey(key)) {
if (cuMemberSettleCountryExtHashMap.containsKey(key)) {
CuMemberSettleCountryExt cuMemberSettleCountryExt = cuMemberSettleCountryExtHashMap.get(key);
cuMemberSettleCountryExt.setNewAmount(ComputeUtil.computeAdd(cuMemberSettleCountryExt.getNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
cuMemberSettleCountryExt.setNewPv(ComputeUtil.computeAdd(cuMemberSettleCountryExt.getNewPv(), saOrderExt.getOrderAchieve()));
}else{
} else {
packageCuMemberSettleCountry(saOrderExt, sourceMemberSettleExt, cuMemberSettleCountryExtList, bonusConfigDTO);
}
}
@ -338,8 +313,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
BigDecimal weekExpandIncome = BigDecimal.ZERO;
if (systemConfigMap.containsKey(targetMemberSettleExt.getPkSettleCountry().toString() + ESystemConfig.EXPAND_CAP_METHOD.getKey())) {
String expandCapMethod = systemConfigMap.get(targetMemberSettleExt.getPkSettleCountry() + ESystemConfig.EXPAND_CAP_METHOD.getKey());
if(Objects.equals(expandCapMethod, Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue())) &&
weekMemberBonusMap.containsKey(targetMemberSettleExt.getPkMember())){
if (Objects.equals(expandCapMethod, Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue())) &&
weekMemberBonusMap.containsKey(targetMemberSettleExt.getPkMember())) {
weekExpandIncome = weekMemberBonusMap.get(targetMemberSettleExt.getPkMember()).getExpandIncome();
}
}
@ -359,7 +334,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
cuMemberBonusExpand.setPretaxIncome(bdGrade.getTouchBonus());
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(rightCuMemberSettleExt.getExpandCapping(), weekExpandIncome), bdGrade.getExpandCapping())) {
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
expandIncome = ComputeUtil.computeSubtract(bdGrade.getExpandCapping(), weekExpandIncome);
expandIncome = ComputeUtil.computeSubtract(bdGrade.getExpandCapping(), weekExpandIncome);
touchBonus = BigDecimal.ZERO;
} else if (ComputeUtil.compareGreaterThan(expandIncome, bdGrade.getExpandCapping())) {
BigDecimal realIncome = ComputeUtil.computeSubtract(ComputeUtil.computeSubtract(bdGrade.getExpandCapping(), weekExpandIncome), cuMemberBonus.getExpandIncome());
@ -396,16 +371,14 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* 计算见点收益
*
* @param settleTableName 结算表
* @param period 期间
* @param settleDate 结算日期
* @param bonusConfigDTO 参数
* @param firPurchaseOrderList 订单列表
* @param cuMemberBonusMap 所有计算出来的奖金汇总
* @Description: 计算见点收益
* @return: void
* @Author: sui q
* @Date: 2022/11/10 14:17
*/
List<CuMemberBonusCoach> calculateSeePointBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleTableNameDetail, String settleDate, BonusConfigDTO bonusConfigDTO,
List<SaOrderExt> firPurchaseOrderList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberRiskControl> riskControlMap) {
@ -435,10 +408,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* @Description: 计算领导奖
* @return: List<CuMemberBonusCoach>
* @Author: sui q
* @Date: 2023/2/8 17:16
* 计算领导奖
*/
private List<CuMemberBonusCoach> calculateBonusSeePoint(Map<Long, CuMemberSettleExt> totalSettleExtMap, Map<String, CuMemberSettleExt> cuMemberSettleExtMap, BonusConfigDTO bonusConfigDTO, String settleDate, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
SaOrderExt saOrderExt, Map<Long, CuMemberRiskControl> riskControlMap) {
@ -446,14 +416,13 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
CuMemberSettleExt sourceMemberSettleExt = totalSettleExtMap.get(saOrderExt.getPkMember());
String targetKey = sourceMemberSettleExt.getPkPlaceParent() + "_" + sourceMemberSettleExt.getPlaceDept();
List<BdGrade> gradeList = bonusConfigDTO.getSeePointGradeMap().get(sourceMemberSettleExt.getPkSettleCountry());
if(CollectionUtil.isEmpty(gradeList)){
if (CollectionUtil.isEmpty(gradeList)) {
return backMemberBonusCoachList;
}
Map<String, BdGrade> gradeMap = new LinkedHashMap<>();
for (BdGrade bdGrade : gradeList) {
gradeMap.put(bdGrade.getPkCountry().toString() + "_" + bdGrade.getPkId(), bdGrade);
}
// Long pkParent = sourceMemberSettleExt.getPkParent();
int coachGeneration = 0;
int beforeAlgebra = 0;
for (String key : gradeMap.keySet()) {
@ -467,10 +436,9 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
break;
}
targetKey = targetMemberSettleExt.getPkPlaceParent() + "_" + targetMemberSettleExt.getPlaceDept();
// pkParent = targetMemberSettleExt.getPkParent();
// 验证会员是否有奖金判断有效期是否大于结算日期
if (ECategory.NORMAL.getValue() != targetMemberSettleExt.getCategory()
||validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.SEE_POINT_INCOME.getValue())
|| validatePkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.SEE_POINT_INCOME.getValue())
|| targetMemberSettleExt.getGradeValue() < bdGrade.getGradeValue()) {
continue;
}
@ -479,7 +447,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrderExt, targetMemberSettleExt);
// 判断会员状态
CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusSeePoint(bonusConfigDTO, saOrderExt, coachGeneration, targetMemberSettleExt, bdGrade.getSeePointRatio());
if(validateExistBonus(targetMemberSettleExt, settleDate)){
if (validateExistBonus(targetMemberSettleExt, settleDate)) {
cuMemberBonusCoach.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
}
if (riskControlMap.containsKey(cuMemberBonus.getPkMember())) {
@ -500,7 +468,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
backMemberBonusCoachList.add(cuMemberBonusCoach);
}
if(bdGrade.getAlgebra() > beforeAlgebra) {
if (bdGrade.getAlgebra() > beforeAlgebra) {
beforeAlgebra = bdGrade.getAlgebra();
}
if (flag) {
@ -511,6 +479,8 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* 计算辅导收益
*
* @param settleTableName 结算表
* @param period 期间
* @param settleDateStr 结算日期
@ -518,10 +488,6 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
* @param firPurchaseOrderList 订单列表
* @param cuMemberBonusExpandList 量奖明细
* @param cuMemberBonusMap 所有计算出来的奖金汇总
* @Description: 计算辅导收益
* @return: void
* @Author: sui q
* @Date: 2022/11/10 14:17
*/
List<CuMemberBonusCoach> calculateCoachBonus(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleTableNameDetail, String settleDateStr, BonusConfigDTO bonusConfigDTO,
List<SaOrderExt> firPurchaseOrderList, List<CuMemberBonusExpand> cuMemberBonusExpandList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
@ -533,10 +499,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* @Description: 计算领导奖
* @return: List<CuMemberBonusCoach>
* @Author: sui q
* @Date: 2023/2/8 17:16
* 计算领导奖
*/
List<CuMemberBonusCoach> calculateCoachBonusOne(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleTableNameDetail, String settleDateStr, BonusConfigDTO bonusConfigDTO, List<CuMemberBonusExpand> cuMemberBonusExpandList, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap) {
@ -560,10 +523,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* @Description: 计算领导奖
* @return: List<CuMemberBonusCoach>
* @Author: sui q
* @Date: 2023/2/8 17:16
* 计算领导奖
*/
private List<CuMemberBonusCoach> calculateBonusCoach(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleDate, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, SaOrderExt> saOrderExtMap, Map<Long, CuMemberSettleExt> bonusIdSettleMap,
CuMemberBonusExpand cuMemberBonusExpand, Map<Long, CuAwardsControl> cuAwardsControlMap, Map<Long, CuMemberRiskControl> riskControlMap) {
@ -618,7 +578,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
}
backMemberBonusCoachList.add(cuMemberBonusCoach);
}else {
} else {
coachGeneration--;
}
}
@ -626,14 +586,12 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* 计算领袖收益 自己新增大区pv * 领袖奖比例 * 自己小区之和/ 其他组内所有成员小区之和
*
* @param settleTableName 结算表
* @param period 期间
* @param bonusConfigDTO 参数
* @param cuMemberBonusMap 所有计算出来的奖金汇总
* @Description: 计算领袖收益 自己新增大区pv * 领袖奖比例 * 自己小区之和/ 其他组内所有成员小区之和
* @return: void
* @Author: sui q
* @Date: 2022/11/10 14:17
*/
List<CuMemberBonusDetail> calculateLeaderBonus(String settleTableName, String settleTableNameDetail, String settleDate, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuMemberRiskControl> riskControlMap) {
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.queryEnoughLeaderCuMemberSettle(settleTableName, settleTableNameDetail);
@ -646,7 +604,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
// 获取伞下
// Map<Long, List<CuMemberSettleExt>> placeParentMemberSettleMap = new HashMap<>();
for (CuMemberSettleExt cuMemberSettleExt : cuMemberSettleExtList) {
if(ComputeUtil.compareValue(cuMemberSettleExt.getAbonusRatio())){
if (ComputeUtil.compareValue(cuMemberSettleExt.getAbonusRatio())) {
if (memberSettleMap.containsKey(cuMemberSettleExt.getAbonusRatio())) {
memberSettleMap.get(cuMemberSettleExt.getAbonusRatio()).add(cuMemberSettleExt);
} else {
@ -672,7 +630,7 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
BigDecimal bigAreaPv = BigDecimal.ZERO;
BigDecimal smallAreaPv = BigDecimal.ZERO;
List<CuMemberSettleDetailExt> cuMemberSettleDetailExtList = cuMemberSettleExt.getCuMemberSettleDetailExtList();
if(CollectionUtil.isNotEmpty(cuMemberSettleDetailExtList)) {
if (CollectionUtil.isNotEmpty(cuMemberSettleDetailExtList)) {
for (int i = 1; i < cuMemberSettleDetailExtList.size(); i++) {
CuMemberSettleDetailExt cuMemberSettleDetailExt = cuMemberSettleDetailExtList.get(i);
BigDecimal addNewPv = cuMemberSettleDetailExt.getMonNewPv();
@ -831,12 +789,10 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
}
/**
* 处理拓展表备注
*
* @param backMemberBonusCoachList 临时记录辅导奖列表
* @param i 第几代
* @Description: 处理拓展表备注
* @return: void
* @Author: sui q
* @Date: 2022/11/17 18:02
*/
private List<CuMemberBonusCoach> handleCoachRemark(List<CuMemberBonusCoach> backMemberBonusCoachList, int i) {
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();

View File

@ -2,10 +2,7 @@ package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.achieve.param.MemberAchieveParam;
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
import com.hzs.bonus.base.service.ICuMemberService;
import com.hzs.bonus.detail.service.ICuMemberAssessService;
import com.hzs.common.core.constant.BonusFieldConstants;
import com.hzs.common.core.constant.MagicNumberConstants;
import com.hzs.common.core.constant.msg.BonusMsgConstants;
@ -21,16 +18,11 @@ import com.hzs.common.domain.member.ext.CuMemberSettleDetailExt;
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import com.hzs.common.domain.sale.order.SaOrder;
import com.hzs.common.domain.sale.order.SaOrderBonus;
import com.hzs.common.domain.system.config.BdAwards;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.sale.order.ISaOrderServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IBonusItemsServiceApi;
import com.hzs.system.config.dto.BonusConfigDTO;
import com.hzs.system.config.dto.BonusExpandDTO;
import com.hzs.system.config.dto.RangeDTO;
import com.hzs.system.sys.dto.BdCurrencyDTO;
import org.apache.dubbo.config.annotation.DubboReference;
@ -40,88 +32,24 @@ import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
/**
* @Description:
* @Author: sui q
* @Time: 2022/11/16 11:24
* @Classname: BonusSettleHandle
* @PackageName: com.hzs.member.achieve.service.impl
*/
@Component
public abstract class BonusSettleHandle {
@DubboReference
ICurrencyServiceApi currencyServiceApi;
protected ICuMemberTreeService cuMemberTreeService;
@DubboReference
protected ISaOrderServiceApi saOrderServiceApi;
@DubboReference
protected IBonusItemsServiceApi bonusItemsServiceApi;
@DubboReference
private ICurrencyServiceApi currencyServiceApi;
@Autowired
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
this.cuMemberTreeService = cuMemberTreeService;
}
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
private ICuMemberAssessService cuMemberAssessService;
@Autowired
private ICuMemberService cuMemberService;
@Autowired
public void setCuMemberAssessService(ICuMemberAssessService cuMemberAssessService) {
this.cuMemberAssessService = cuMemberAssessService;
}
@Autowired
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
}
public ICuMemberSettlePeriodService getCuMemberSettlePeriodService() {
return cuMemberSettlePeriodService;
}
public ICuMemberAssessService getCuMemberAssessService() {
return cuMemberAssessService;
}
/**
* 获取奖衔对应的辅导奖配置
*
* @param bonusConfigDTO 奖金参数汇总
* @param memberSettleExt 会员
* @Description: 获取等级对应的拓展奖配置
* @return: BdGrade
* @Author: sui q
* @Date: 2022/11/16 11:24
*/
protected BdGrade getGradeExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt) {
return bonusConfigDTO.getGradeMap().get(memberSettleExt.getPkSettleCountry().toString() + "_" + memberSettleExt.getPkGrade());
}
/**
* @param bonusConfigDTO 奖金参数汇总
* @param memberSettleExt 会员
* @Description: 获取主任奖衔值对应的辅导奖配置
* @return: BdAwards
* @Author: sui q
* @Date: 2022/11/17 10:13
*/
protected BdAwards getDirectorAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt) {
return bonusConfigDTO.getAwardsValueMap().get(memberSettleExt.getPkSettleCountry().toString() + ERangeType.AWARDS.getValue() + EAwards.HEADER.getValue());
}
/**
* @param bonusConfigDTO 奖金参数汇总
* @param memberSettleExt 会员
* @Description: 获取奖衔对应的辅导奖配置
* @return: BdAwards
* @Author: sui q
* @Date: 2022/11/17 10:13
*/
protected BdAwards getAwardsCouch(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Map<Long, CuAwardsControl> cuAwardsControlMap) {
Integer pkAwards = getPkRealAwards(memberSettleExt.getPkMember(), memberSettleExt.getPkAwards(), cuAwardsControlMap);
@ -140,44 +68,6 @@ public abstract class BonusSettleHandle {
return pkAwards;
}
/**
* @param bonusConfigDTO 奖金配置汇总
* @param memberSettleExt 会员
* @param endTouch 4-n的次数
* @param bdGrade 等级
* @Description: 获得国家对应的4-n参数比例
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/11/16 11:27
*/
protected BigDecimal getCountryExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Integer endTouch, BdGrade bdGrade) {
BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry());
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(bonusExpand.getExpandRatio(), BigDecimal.valueOf(endTouch));
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getExpandRatio())) {
return bdGrade.getExpandRatio();
}
return countryExpandRatio;
}
/**
* @param bonusConfigDTO 奖金配置汇总
* @param memberSettleExt 会员
* @param endTouch 4-n的次数
* @param bdGrade 等级
* @Description: 获得国家对应的4-n参数比例
* @return: BigDecimal
* @Author: sui q
* @Date: 2022/11/16 11:27
*/
protected BigDecimal getCountryRepurchaseExpand(BonusConfigDTO bonusConfigDTO, CuMemberSettleExt memberSettleExt, Integer endTouch, BdGrade bdGrade) {
BonusExpandDTO bonusExpand = bonusConfigDTO.getBonusExpandMap().get(memberSettleExt.getPkSettleCountry());
BigDecimal countryExpandRatio = ComputeUtil.computeDivide(bonusExpand.getExpandRatio(), BigDecimal.valueOf(endTouch));
if (ComputeUtil.compareValue(countryExpandRatio, bdGrade.getRepurchaseRatio())) {
return bdGrade.getRepurchaseRatio();
}
return countryExpandRatio;
}
/**
* 获得奖项主键验证该国是否有该奖项
*
@ -238,12 +128,10 @@ public abstract class BonusSettleHandle {
}
/**
* 记录需要修改的会员结算表数据, 安置的
*
* @param cuMemberSettleExtMap 会员结算
* @param cuMemberSettleExtList 查询出来的结算数据
* @Description: 记录需要修改的会员结算表数据, 安置的
* @return: void
* @Author: sui q
* @Date: 2022/11/15 9:52
*/
protected void getMemberSettle(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, List<CuMemberSettleExt> cuMemberSettleExtList) {
cuMemberSettleExtList.forEach(cuMemberSettleExt -> {
@ -273,7 +161,7 @@ public abstract class BonusSettleHandle {
if (memberSettleExt.getCustomerType() == null) {
memberSettleExt.setCustomerType(cuMemberSettleExt.getCustomerType());
}
if(memberSettleExt.getSumPv() == null){
if (memberSettleExt.getSumPv() == null) {
memberSettleExt.setSumPv(cuMemberSettleExt.getSumPv());
}
} else {
@ -282,7 +170,7 @@ public abstract class BonusSettleHandle {
cuMemberSettleExt.setRegisterBloPv(BigDecimal.ZERO);
cuMemberSettleExt.setRegisterBloNewPv(BigDecimal.ZERO);
cuMemberSettleExt.setBigAreaDept(EPlaceDept.ZERO_DEPT.getValue());
if(CollectionUtil.isNotEmpty(cuMemberSettleExt.getCuMemberSettleDetailExtList())){
if (CollectionUtil.isNotEmpty(cuMemberSettleExt.getCuMemberSettleDetailExtList())) {
for (CuMemberSettleDetailExt cuMemberSettleDetailExt : cuMemberSettleExt.getCuMemberSettleDetailExtList()) {
cuMemberSettleDetailExt.setNewPv(BigDecimal.ZERO);
cuMemberSettleDetailExt.setNewAmount(BigDecimal.ZERO);
@ -295,13 +183,11 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 直推收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusPush 直推奖
* @param cuMemberSettleExtMap 存储会员网体的map
* @Description: 获得 直推收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void recommendRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap) {
CuMemberSettleExt sourceCuMemberSettleExt = cuMemberSettleExtMap.get(saOrderExt.getPkMember());
@ -314,14 +200,12 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 拓展收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusExpand 拓展奖
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 拓展收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void expandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
@ -333,52 +217,12 @@ public abstract class BonusSettleHandle {
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusPush 拓展奖
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 拓展收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void repurchasePushRemark(SaOrderExt saOrderExt, CuMemberBonusPush cuMemberBonusPush,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.REPURCHASE_PUSH, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusPush.getCalAchieve(), cuMemberBonusPush.getCalValue());
cuMemberBonusPush.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusExpand 拓展奖
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 拓展收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void repurchaseExpandRemark(SaOrderExt saOrderExt, CuMemberBonusExpand cuMemberBonusExpand,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.REPURCHASE_EXPAND, cuMemberBonusExpand.getCurrentTouch(), cuMemberBonusExpand.getExpandTouch(), saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusExpand.getCalAchieve(), cuMemberBonusExpand.getCalValue());
cuMemberBonusExpand.setRemark(remark);
}
/**
* 获得 辅导收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusCoach 辅导奖
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 辅导收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void coachRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
@ -390,17 +234,15 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 辅导收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusCoach 辅导奖
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 辅导收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void seePointRemark(SaOrderExt saOrderExt, CuMemberBonusCoach cuMemberBonusCoach,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.SEE_POINT, cuMemberBonusCoach.getCurrentGeneration(), saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
@ -409,106 +251,9 @@ public abstract class BonusSettleHandle {
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusDetail 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void serviceRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.SERVICE, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusDetail 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void makerDirectRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.MAKER_DIRECT, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusDetail 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void haiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.HAI_FUN, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusDetail 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void makerShareRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.MAKER_DIRECT, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusDetail 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 嗨粉推荐的收益
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void hiFunRemark(SaOrderExt saOrderExt, CuMemberBonusDetail cuMemberBonusDetail,
CuMemberSettleExt sourceCuMemberSettleExt, CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.HI_FUN, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getRealIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* 获得 分红收益的备注
*
* @param cuMemberBonusDetail 分红
* @Description: 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void leaderShareRemark(CuMemberBonusDetail cuMemberBonusDetail, Integer period,
BigDecimal bigAreaPv, BigDecimal smallAreaPv, BigDecimal allSmallAreaPv, BigDecimal bonusRation) {
@ -518,27 +263,11 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 分红收益的备注
*
* @param cuMemberBonusDetail 分红
* @param settleDate 结算日期
* @Description: 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void shareCouponRemark(CuMemberBonusDetail cuMemberBonusDetail, String settleDate) {
String remark = String.format(BonusMsgConstants.SHARE_COUPON, DateUtils.getMonth(settleDate),
cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param cuMemberBonusDetail 分红
* @Description: 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void storeRemark(CuMemberBonusDetail cuMemberBonusDetail, SaOrderExt saOrderExt, CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt ) {
protected void storeRemark(CuMemberBonusDetail cuMemberBonusDetail, SaOrderExt saOrderExt, CuMemberSettleExt sourceMemberSettleExt, CuMemberSettleExt targetMemberSettleExt) {
String remark = String.format(BonusMsgConstants.STORE, saOrderExt.getOrderCode(), sourceMemberSettleExt.getMemberCode() + sourceMemberSettleExt.getMemberName(),
targetMemberSettleExt.getMemberCode() + targetMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
@ -546,11 +275,9 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 分红收益的备注
*
* @param cuMemberBonusDetail 分红
* @Description: 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void storeRangeRemark(CuMemberBonusDetail cuMemberBonusDetail, SaOrderExt saOrderExt, CuMemberSettleExt sourceMemberSettleExt,
CuMemberSettleExt targetMemberSettleExt, String beforeLevelName, String levelName) {
@ -561,44 +288,9 @@ public abstract class BonusSettleHandle {
}
/**
* @param cuMemberBonusDetail 分红
* @Description: 获得 分红收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void globalShareRemark(CuMemberBonusDetail cuMemberBonusDetail, String msg) {
String remark = String.format(msg, cuMemberBonusDetail.getPretaxIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* 获得 报单服务费收益的备注
*
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, Map<String, RangeDTO> rangePkDtoMap) {
RangeDTO beforeOrderRangeDto = rangePkDtoMap.get(targetCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkBeforeRange());
RangeDTO orderRangeDto = rangePkDtoMap.get(sourceCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkRange());
String remark = String.format(BonusMsgConstants.SHARE_RANGE, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), beforeOrderRangeDto == null? "" : beforeOrderRangeDto.getRangeName(), orderRangeDto == null ? "" : orderRangeDto.getRangeName());
cuMemberBonusRange.setRemark(remark);
}
/**
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void sharePointRemark(CuMemberSettleExt targetCuMemberSettleExt, CuMemberBonusPoint cuMemberBonusPoint, BigDecimal firePointIncome) {
String remark = String.format(BonusMsgConstants.SHARE_PONT, targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
@ -607,35 +299,29 @@ public abstract class BonusSettleHandle {
}
/**
* 获得 报单服务费收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void sameLevelRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, RangeDTO beforeOrderRangeDto, RangeDTO orderRangeDto ) {
// RangeDTO beforeOrderRangeDto = rangePkDtoMap.get(targetCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkBeforeRange());
// RangeDTO orderRangeDto = rangePkDtoMap.get(sourceCuMemberSettleExt.getPkSettleCountry().toString() + cuMemberBonusRange.getPkRange());
CuMemberSettleExt targetCuMemberSettleExt, RangeDTO beforeOrderRangeDto, RangeDTO orderRangeDto) {
String remark = String.format(BonusMsgConstants.SAME_LEVEL_RANGE, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusRange.getCalAchieve(), beforeOrderRangeDto == null? "" : beforeOrderRangeDto.getRangeName(), orderRangeDto == null ? "" : orderRangeDto.getRangeName());
cuMemberBonusRange.getCalAchieve(), beforeOrderRangeDto == null ? "" : beforeOrderRangeDto.getRangeName(), orderRangeDto == null ? "" : orderRangeDto.getRangeName());
cuMemberBonusRange.setRemark(remark);
}
/**
* 获得 报单服务费收益的备注
*
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void rangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, RangeDTO parentRangeDto, RangeDTO beforeRangeDto) {
@ -646,69 +332,12 @@ public abstract class BonusSettleHandle {
cuMemberBonusRange.setRemark(remark);
}
/**
* @param saOrderExt 订单编号
* @param cuMemberBonusRange 报单服务费
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void xueRangeRemark(SaOrderExt saOrderExt, CuMemberBonusRange cuMemberBonusRange, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.LE_XUE_SHARE_RANGE, saOrderExt.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
ComputeUtil.computeDivide(targetCuMemberSettleExt.getRetailPrice(), BigDecimal.valueOf(6.4)), targetCuMemberSettleExt.getGradeValue());
cuMemberBonusRange.setRemark(remark);
}
/**
* @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void cloudAgentRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt, String msg) {
String remark = String.format(msg, saOrder.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue());
cuMemberBonusDetail.setRemark(remark);
}
/**
* @param saOrder 订单编号
* @param cuMemberBonusDetail 云代首购
* @param sourceCuMemberSettleExt 提供奖金的人
* @param targetCuMemberSettleExt 获得奖金的人
* @Description: 获得 报单服务费收益的备注
* @return: String
* @Author: sui q
* @Date: 2022/11/17 11:22
*/
protected void repurchaseCouponsRemark(SaOrder saOrder, CuMemberBonusDetail cuMemberBonusDetail, CuMemberSettleExt sourceCuMemberSettleExt,
CuMemberSettleExt targetCuMemberSettleExt) {
String remark = String.format(BonusMsgConstants.REPURCHASE_COUPON_RANGE, saOrder.getOrderCode(),
sourceCuMemberSettleExt.getMemberCode() + sourceCuMemberSettleExt.getMemberName(),
targetCuMemberSettleExt.getMemberCode() + targetCuMemberSettleExt.getMemberName(),
cuMemberBonusDetail.getCalAchieve(), cuMemberBonusDetail.getCalValue(), cuMemberBonusDetail.getRealIncome());
cuMemberBonusDetail.setRemark(remark);
}
/**
* 获取会员奖金汇总表
*
* @param period 期间
* @param cuMemberBonusMap 奖金汇总map
* @param saOrder 汇率
* @param saOrder 汇率
* @param cuMemberSettleExt 获取奖金的会员
* @return CuMemberBonus
*/
@ -787,36 +416,17 @@ public abstract class BonusSettleHandle {
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.STOP_INCOME.getValue());
}
// 验证会员是否有奖金判断有效期是否大于结算日期
if(validateExistBonus(targetMemberSettleExt, settleDate)){
if (validateExistBonus(targetMemberSettleExt, settleDate)) {
cuMemberBonusExpand.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
}
return cuMemberBonusExpand;
}
/**
* @param cuMemberSettleExtMap 树关系
* @param settleTableName 结算表
* @param saOrderList 订单
* @Description: 根据订单获取会员的血缘父级用于嗨粉推荐复购极差
* @return: void
* @Author: sui q
* @Date: 2023/1/4 14:10
*/
protected List<CuMemberSettleExt> getMemberParentBySaOrder(Map<Long, CuMemberSettleExt> cuMemberSettleExtMap, String settleTableName, String settleTableNameDetail, List<SaOrderExt> saOrderList) {
Set<Long> memberSet = new HashSet<>();
saOrderList.forEach(saOrderExt -> memberSet.add(saOrderExt.getPkMember()));
List<CuMemberSettleExt> cuMemberSettleExtList = cuMemberTreeService.batchQueryCuMemberSettleParent(settleTableName, settleTableNameDetail, memberSet);
getMemberSettle(cuMemberSettleExtMap, cuMemberSettleExtList);
return cuMemberSettleExtList;
}
/**
* 获取会员的极差等级验证会员是否有奖衔
*
* @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录
* @Description: 获取会员的极差等级验证会员是否有奖衔
* @return: String
* @Author: sui q
* @Date: 2023/1/4 14:22
*/
protected String getMemberCountryKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree, Map<Long, CuAwardsControl> cuAwardsControlMap) {
Integer pkAwards = getPkRealAwards(parentMemberTree.getPkMember(), parentMemberTree.getPkAwards(), cuAwardsControlMap);
@ -834,30 +444,11 @@ public abstract class BonusSettleHandle {
}
/**
* @param awardsMap 奖衔
* @param parentMemberTree 会员树历史记录
* @Description: 获取会员的极差等级验证会员是否有奖衔
* @return: String
* @Author: sui q
* @Date: 2023/1/4 14:22
*/
protected String getMemberKey(Map<String, BdAwards> awardsMap, CuMemberTree parentMemberTree) {
String key = Integer.toString(ERangeType.AWARDS.getValue()) + parentMemberTree.getPkAwards();
String awardKey = parentMemberTree.getPkSettleCountry().toString() + parentMemberTree.getPkAwards().toString();
if (EAwards.MEMBER.getValue() == awardsMap.get(awardKey).getAwardsValue()) {
key = Integer.toString(ERangeType.GRADE.getValue()) + parentMemberTree.getPkGrade();
}
return key;
}
/**
* 奖金明细 报单服务费分红云代首购云代复购海豆收益
*
* @param saOrderExt 订单
* @param targetMemberSettleExt 奖金网体
* @param cuMemberBonus 奖金主表
* @Description: 奖金明细 报单服务费分红云代首购云代复购海豆收益
* @return: CuMemberBonusDetail
* @Author: sui q
* @Date: 2023/1/5 16:31
*/
protected CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberSettleExt targetMemberSettleExt, CuMemberBonus cuMemberBonus) {
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
@ -879,12 +470,10 @@ public abstract class BonusSettleHandle {
}
/**
* 设置奖金扣项计算税前收益扣税实际收益, 设置主表
*
* @param cuMemberBonus 奖金明细
* @param bonusDetail 奖金明细表
* @Description: 设置奖金扣项计算税前收益扣税实际收益, 设置主表
* @return: void
* @Author: sui q
* @Date: 2023/1/11 11:17
*/
protected void setBonusDeduct(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
BigDecimal pretaxIncome = ReflectUtils.invokeGetter(bonusDetail, BonusFieldConstants.PRETAX_INCOME);
@ -899,10 +488,7 @@ public abstract class BonusSettleHandle {
}
/**
* @Description: 首购计算 扣项小计总计
* @return: void
* @Author: sui q
* @Date: 2023/1/11 13:59
* 首购计算 扣项小计总计
*/
protected void setFirstPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
@ -912,10 +498,7 @@ public abstract class BonusSettleHandle {
}
/**
* @Description: 复购计算 扣项小计总计
* @return: void
* @Author: sui q
* @Date: 2023/1/11 13:59
* 复购计算 扣项小计总计
*/
protected void setPurchaseTotal(BdBonusDeduct bdBonusDeduct, CuMemberBonus cuMemberBonus, Object bonusDetail) {
setBonusDeduct(bdBonusDeduct, cuMemberBonus, bonusDetail);
@ -925,13 +508,11 @@ public abstract class BonusSettleHandle {
}
/**
* 设置奖金扣项计算税前收益扣税实际收益, 设置明细表
*
* @param cuMemberDetail 奖金明细
* @param orderAmount 订单金额
* @param exchangeRate 入汇率
* @Description: 设置奖金扣项计算税前收益扣税实际收益, 设置明细表
* @return: void
* @Author: sui q
* @Date: 2023/1/11 11:17
*/
protected BdBonusDeduct setBonusDetailDeduct(BonusConfigDTO bonusConfigDTO, Object cuMemberDetail, BigDecimal orderAmount, BigDecimal exchangeRate) {
Integer pkBonusItems = ReflectUtils.invokeGetter(cuMemberDetail, BonusFieldConstants.PK_BONUS_ITEMS);
@ -958,11 +539,9 @@ public abstract class BonusSettleHandle {
}
/**
* @Description: 根据订单分类分为首购复购真实获取新增业绩
* 根据订单分类分为首购复购真实获取新增业绩
*
* @param orderExtList 订单列表
* @return: void
* @Author: sui q
* @Date: 2022/11/2 11:24
*/
public void assortSaOrder(Map<Long, MemberAchieveParam> cuMemberAchieveHashMap, List<SaOrderExt> orderExtList, Boolean isFirst, BonusConfigDTO bonusConfigDTO) {
// 注册+升级+云代注册+云代升级 首购 注册+升级其他 复购 首购+复购 = 真实
@ -971,7 +550,7 @@ public abstract class BonusSettleHandle {
if (cuMemberAchieveHashMap.containsKey(saOrderExt.getPkMember())) {
cuMemberAchieve = cuMemberAchieveHashMap.get(saOrderExt.getPkMember());
// 所有的都算真实业绩
}else{
} else {
cuMemberAchieve = MemberAchieveParam.builder()
.pkRate(saOrderExt.getPkRate())
.pkMember(saOrderExt.getPkMember())
@ -982,14 +561,13 @@ public abstract class BonusSettleHandle {
.build();
cuMemberAchieveHashMap.put(saOrderExt.getPkMember(), cuMemberAchieve);
}
if(isFirst) {
if (isFirst) {
cuMemberAchieve.setNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getNewAmount(), saOrderExt.getOrderAmount()));
cuMemberAchieve.setNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getNewPv(), saOrderExt.getOrderAchieve()));
cuMemberAchieve.setRegisterBloNewPv(ComputeUtil.computeAdd(cuMemberAchieve.getRegisterBloNewPv(), saOrderExt.getOrderAchieve()));
}else{
} else {
cuMemberAchieve.setRepurchaseBloNewAmount(ComputeUtil.computeAdd(cuMemberAchieve.getRepurchaseBloNewAmount(), convertLocalCurrency(saOrderExt, bonusConfigDTO)));
}
}
}
@ -1003,7 +581,8 @@ public abstract class BonusSettleHandle {
return orderAmount;
}
protected boolean validateExistBonus(CuMemberSettleExt targetMemberSettleExt, String settleDate){
protected boolean validateExistBonus(CuMemberSettleExt targetMemberSettleExt, String settleDate) {
return targetMemberSettleExt.getExpireDate() == null || DateUtils.compareDateBefore(targetMemberSettleExt.getExpireDate(), DateUtils.parseStringToDate(settleDate));
}
}

View File

@ -332,14 +332,12 @@ public class BonusSettlePurchaseHandle extends BonusSettleHandle {
}
/**
* 计算加权积分奖励 自己购买数量每1个100 1分推荐数量每1个100 1分血缘网体10代内新增每1个100 1分安置网体小区每1个100 1分
*
* @param settleTableName 结算表
* @param period 期间
* @param bonusConfigDTO 参数
* @param cuMemberBonusMap 所有计算出来的奖金汇总
* @Description: 计算加权积分奖励 自己购买数量每1个100 1分推荐数量每1个100 1分血缘网体10代内新增每1个100 1分安置网体小区每1个100 1分
* @return: void
* @Author: sui q
* @Date: 2022/11/10 14:17
*/
List<CuMemberBonusPoint> calculatePointShareBonus(String settleTableName, String settleTableNameDetail, String currentTableNameDetail, BonusConfigDTO bonusConfigDTO,
Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, List<SaOrderExt> resaleOrderList, List<SaOrderExt> buySaOrderExtList) {

View File

@ -54,50 +54,44 @@ import java.util.*;
@Slf4j
public class BonusSettleServiceImpl implements IBonusSettleService {
@Autowired
private ICuMemberTreeService cuMemberTreeService;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private ICuMemberMonthPeriodService cuMemberMonthPeriodService;
@Autowired
private ICuMemberAwardsService cuMemberAwardsService;
@Autowired
private ICuMemberService cuMemberService;
@Autowired
private ICuMemberAchieveLogService cuMemberAchieveLogService;
@Autowired
private ICuMemberAchieveService cuMemberAchieveService;
@Autowired
private ICuAwardsControlService cuAwardsControlService;
@Autowired
public void setCuMemberMonthPeriodService(ICuMemberMonthPeriodService cuMemberMonthPeriodService) {
this.cuMemberMonthPeriodService = cuMemberMonthPeriodService;
}
@Autowired
public void setCuAwardsControlService(ICuAwardsControlService cuAwardsControlService) {
this.cuAwardsControlService = cuAwardsControlService;
}
@Autowired
public void setCuMemberAchieveService(ICuMemberAchieveService cuMemberAchieveService) {
this.cuMemberAchieveService = cuMemberAchieveService;
}
@Autowired
public void setCuMemberAchieveLogService(ICuMemberAchieveLogService cuMemberAchieveLogService) {
this.cuMemberAchieveLogService = cuMemberAchieveLogService;
}
@Autowired
private BonusSettleFirstPurchaseHandle bonusSettleFirstPurchaseHandle;
@Autowired
private BonusSettlePurchaseHandle bonusSettlePurchaseHandle;
@Autowired
private BonusSettleStoreHandle bonusSettleStoreHandle;
@Autowired
private ICuMemberBonusService cuMemberBonusService;
@Autowired
private ICuMemberBonusPushService cuMemberBonusPushService;
@Autowired
private ICuMemberBonusExpandService cuMemberBonusExpandService;
@Autowired
private ICuMemberBonusCoachService cuMemberBonusCoachService;
@Autowired
private ICuMemberBonusDetailService cuMemberBonusDetailService;
@Autowired
private ICuMemberBonusRangeService cuMemberBonusRangeService;
@Autowired
private ICuMemberBonusPointService cuMemberBonusPointService;
@Autowired
private ICuMemberRiskControlService cuMemberRiskControlService;
@DubboReference
IRangeServiceApi rangeServiceApi;
@ -108,77 +102,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
@DubboReference
ICuStoreServiceApi cuStoreServiceApi;
private ICuMemberBonusService cuMemberBonusService;
private ICuMemberBonusPushService cuMemberBonusPushService;
private ICuMemberBonusExpandService cuMemberBonusExpandService;
private ICuMemberBonusCoachService cuMemberBonusCoachService;
private ICuMemberBonusDetailService cuMemberBonusDetailService;
private ICuMemberBonusRangeService cuMemberBonusRangeService;
private ICuMemberBonusPointService cuMemberBonusPointService;
@Autowired
private ICuMemberRiskControlService cuMemberRiskControlService;
@Autowired
public void setCuMemberBonusPointService(ICuMemberBonusPointService cuMemberBonusPointService) {
this.cuMemberBonusPointService = cuMemberBonusPointService;
}
@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;
}
@Autowired
public void setCuMemberService(ICuMemberService cuMemberService) {
this.cuMemberService = cuMemberService;
}
@Autowired
public void setCuMemberAwardsService(ICuMemberAwardsService cuMemberAwardsService) {
this.cuMemberAwardsService = cuMemberAwardsService;
}
@Autowired
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
this.cuMemberTreeService = cuMemberTreeService;
}
@Autowired
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
}
/**
* 每日计算会员奖金最终的奖金
@ -298,7 +221,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
areaStoreMap.put(key, storeDto);
}
}
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleStoreHandle.calculateStoreBonus(areaStoreMap, cuntryStoreMap, storeSaOrderExtList, currentSettleTableName, currentTableNameDetail, bonusConfigDTO, period, cuMemberBonusMap, riskControlMap);
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleStoreHandle.calculateStoreBonus(areaStoreMap, cuntryStoreMap, storeSaOrderExtList,
currentSettleTableName, currentTableNameDetail, bonusConfigDTO, period, cuMemberBonusMap, riskControlMap);
if (cuMemberBonusDetailList.size() > 0) {
recordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
}
@ -311,7 +235,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
//*****************************计算领袖奖********************************/
// 领袖奖是基于计算结束的大小区业绩需要先把数据放入数据库 结算日期=领袖奖结算期间进行结算领袖奖
if (period.equals(currentMemberMonthPeriod.getEndPeriod())) {
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleFirstPurchaseHandle.calculateLeaderBonus(currentSettleTableName, currentTableNameDetail, settleDate, bonusConfigDTO, period, cuMemberBonusMap, riskControlMap);
List<CuMemberBonusDetail> cuMemberBonusDetailList = bonusSettleFirstPurchaseHandle.calculateLeaderBonus(currentSettleTableName, currentTableNameDetail, settleDate,
bonusConfigDTO, period, cuMemberBonusMap, riskControlMap);
if (cuMemberBonusDetailList.size() > 0) {
if (recordDetailVO.getCuMemberBonusDetailList() == null) {
recordDetailVO.setCuMemberBonusDetailList(cuMemberBonusDetailList);
@ -321,7 +246,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
}
}
// 加权积分是基于计算结束的大小区业绩血缘业绩等需要先把数据放入数据库
List<CuMemberBonusPoint> cuMemberBonusPointList = bonusSettlePurchaseHandle.calculatePointShareBonus(currentSettleTableName, currentTableNameDetail, currentTableNameDetail, bonusConfigDTO, period, cuMemberBonusMap, resaleOrderList, buySaOrderExtList);
List<CuMemberBonusPoint> cuMemberBonusPointList = bonusSettlePurchaseHandle.calculatePointShareBonus(currentSettleTableName, currentTableNameDetail, currentTableNameDetail, bonusConfigDTO, period,
cuMemberBonusMap, resaleOrderList, buySaOrderExtList);
if (cuMemberBonusPointList.size() > 0) {
recordDetailVO.setCuMemberBonusPointList(cuMemberBonusPointList);
}

View File

@ -1,6 +1,7 @@
package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageInfo;
@ -25,7 +26,6 @@ import com.hzs.common.domain.system.config.ext.BdBonusItemsExt;
import com.hzs.bonus.bonus.param.BonusParam;
import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailVO;
import com.hzs.bonus.bonus.vo.MemberBonusVO;
import com.hzs.sale.order.ISaOrderServiceApi;
import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi;
@ -36,6 +36,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.temporal.ChronoUnit;
import java.util.*;
@ -49,101 +50,42 @@ import java.util.stream.Collectors;
public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, CuMemberBonus> implements ICuMemberBonusService {
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
ISystemConfigServiceApi iSystemConfigServiceApi;
@DubboReference
ISaOrderServiceApi saOrderServiceApi;
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
ICurrencyServiceApi currencyServiceApi;
ICurrencyServiceApi iCurrencyServiceApi;
@DubboReference
IBonusItemsServiceApi bonusItemsServiceApi;
@Autowired
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
IBonusItemsServiceApi iBonusItemsServiceApi;
@Resource
private CuMemberBonusDetailMapper cuMemberBonusDetailMapper;
@Resource
private CuMemberBonusPushMapper cuMemberBonusPushMapper;
@Resource
private CuMemberBonusExpandMapper cuMemberBonusExpandMapper;
@Resource
private CuMemberBonusCoachMapper cuMemberBonusCoachMapper;
@Resource
private CuMemberBonusRangeMapper cuMemberBonusRangeMapper;
@Resource
private CuMemberBonusPointMapper cuMemberBonusPointMapper;
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
private ICuMemberTreeService cuMemberTreeService;
private IBonusSettleService bonusSettleService;
@Autowired
public void setCuMemberBonusPointMapper(CuMemberBonusPointMapper cuMemberBonusPointMapper) {
this.cuMemberBonusPointMapper = cuMemberBonusPointMapper;
}
private ICuMemberTreeService iCuMemberTreeService;
@Autowired
public void setBonusSettleService(IBonusSettleService bonusSettleService) {
this.bonusSettleService = bonusSettleService;
}
@Autowired
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
this.cuMemberTreeService = cuMemberTreeService;
}
@Autowired
public void setCuMemberBonusSettle(CuMemberBonusSettle cuMemberBonusSettle) {
this.cuMemberBonusSettle = cuMemberBonusSettle;
}
@Autowired
public void setCuMemberBonusPushMapper(CuMemberBonusPushMapper cuMemberBonusPushMapper) {
this.cuMemberBonusPushMapper = cuMemberBonusPushMapper;
}
@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;
}
@Autowired
public void setCuMemberBonusDetailMapper(CuMemberBonusDetailMapper cuMemberBonusDetailMapper) {
this.cuMemberBonusDetailMapper = cuMemberBonusDetailMapper;
}
private IBonusSettleService iBonusSettleService;
@Override
public List<Long> batchQueryCuMemberBonusSeq(Integer rowNum) {
return baseMapper.batchQueryCuMemberBonusSeq(rowNum);
}
@Override
public List<MemberBonusVO> queryMemberBonusTotalVoByCondition(BonusParam bonusParam) {
List<MemberBonusVO> memberBonusVoList = new ArrayList<>();
List<CuMemberBonus> cuMemberBonusList = baseMapper.queryMemberBonusTotalByCondition(bonusParam);
cuMemberBonusList.forEach(cuMemberBonus -> {
MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class);
memberBonusVoList.add(memberBonusVO);
});
return memberBonusVoList;
}
@Override
public List<CuMemberBonusExt> queryMemberBonusVoByCondition(BonusParam bonusParam) {
String value = systemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// 周结的话不能查询当前周的数据只能查询上周的数据
bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate())));
@ -205,7 +147,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam) {
String value = systemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
// if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// // 周结的话不能查询当前周的数据只能查询上周的数据
// bonusParam.setStartDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getStartDate())));
@ -219,7 +161,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
bonusParam.setGrantStatus(EGrantStatus.PUBLISHED.getValue());
}
List<CuMemberBonusExt> cuMemberBonusExtList = baseMapper.queryMemberBonusByCondition(bonusParam);
R<CurrencyDTO> currency = currencyServiceApi.getCurrency(bonusParam.getPkCountry());
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry());
// 汇率比例
BigDecimal inExchangeRate = currency.getData().getInExchangeRate();
for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) {
@ -292,7 +234,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<CuMemberBonusExt> queryMemberBonusTotalByCondition(BonusParam bonusParam) {
String value = systemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
String value = iSystemConfigServiceApi.getBonusSystemConfig(bonusParam.getPkCountry(), ESystemConfig.EXPAND_CAP_METHOD.getKey()).getData();
if (StringUtils.isNotEmpty(value) && Objects.equals(Integer.toString(EExpandCapMethod.WEEK_SETTLE.getValue()), value)) {
// 周结的话不能查询当前周
bonusParam.setEndDate(DateUtils.parseStringToDate(DateUtils.getRecentlyTuesday(bonusParam.getEndDate())));
@ -353,7 +295,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
TableDataInfo dataTable;
Integer bonusItemsValue = 0;
if (bonusParam.getPkBonusItems() != null) {
BdBonusItems bonusItems = bonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
BdBonusItems bonusItems = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
bonusItemsValue = bonusItems.getBonusValue();
}
if (null == bonusParam.getPkBonusItems()) {
@ -416,7 +358,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
});
}
Map<Integer, BdBonusItemsExt> bonusItemsMap = convertBonusItems(bonusParam);
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry()).getData();
memberBonusDetailVOList.forEach(memberBonusDetailVO -> {
if (bonusItemsMap.containsKey(memberBonusDetailVO.getPkBonusItems())) {
memberBonusDetailVO.setBonusName(bonusItemsMap.get(memberBonusDetailVO.getPkBonusItems()).getBonusName());
@ -433,7 +375,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
}
private Map<Integer, BdBonusItemsExt> convertBonusItems(BonusParam bonusParam) {
List<BdBonusItemsExt> bonusItemsExtList = bonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry()).getData();
List<BdBonusItemsExt> bonusItemsExtList = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry()).getData();
Map<Integer, BdBonusItemsExt> bonusItemsMap = new HashMap<>(ComputeUtil.mapInitCapacity(bonusItemsExtList.size()));
bonusItemsExtList.forEach(bonusItems ->
bonusItemsMap.put(bonusItems.getPkId(), bonusItems));
@ -446,7 +388,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
List<MemberBonusDetailSerVO> memberBonusDetailSerVoS = new ArrayList<>();
Integer bonusItemsValue = 0;
if (bonusParam.getPkBonusItems() != null) {
BdBonusItems bonusItems = bonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
BdBonusItems bonusItems = iBonusItemsServiceApi.queryBonusItems(bonusParam.getPkCountry(), bonusParam.getPkBonusItems()).getData();
bonusItemsValue = bonusItems.getBonusValue();
bonusParam.setBonusValue(bonusItemsValue);
}
@ -570,30 +512,6 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
baseMapper.batchInsertCuMemberBonus(list));
}
@Override
public void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList) {
baseMapper.insertOrUpdateCuMemberBonus(cuMemberBonusList);
}
@Override
public List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList) {
QueryWrapper<CuMemberBonus> queryWrapper = new QueryWrapper<>();
List<Long> memberList = cuMemberBonusList.stream().map(CuMemberBonus::getPkMember).collect(Collectors.toList());
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
queryWrapper.in(MemberFieldConstants.PK_MEMBER, memberList);
return baseMapper.selectList(queryWrapper);
}
@Override
public List<CuMemberBonus> queryExistsPurchaseBonusMember(Integer period, List<Integer> pkCountryList) {
QueryWrapper<CuMemberBonus> queryWrapper = new QueryWrapper<>();
queryWrapper.select("pk_member,pk_country,direct_income,expand_income,coach_income,share_income,pur_real_subtotal");
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
queryWrapper.in(SystemFieldConstants.PK_COUNTRY, pkCountryList);
queryWrapper.gt("PUR_REAL_SUBTOTAL", 0);
return baseMapper.selectList(queryWrapper);
}
@Override
public Boolean updateCuMemberBonusStatus(Integer pkCountry, Integer grantStatus, Integer oldGrantStatus, Integer startPeriod, Integer endPeriod) {
return baseMapper.updateCuMemberBonusStatus(pkCountry, grantStatus, oldGrantStatus, startPeriod, endPeriod) > 0 ? Boolean.TRUE : Boolean.FALSE;
@ -625,34 +543,28 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
if (DateUtils.compareDateBefore(startDate, DateUtils.parseStringToDate("2023-12-04"))) {
return Boolean.TRUE;
}
// CuMemberSettlePeriod cuMemberSettlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate);
// CuMemberSettlePeriodExt cuMemberSettlePeriodExt = cuMemberSettlePeriodService.getCuMemberSettlePeriod(CountryConstants.TOGO_COUNTRY, DateUtils.parseStringToDate(settleDate));
// if(!cuMemberSettlePeriod.getPkId().equals(cuMemberSettlePeriodExt.getEndPeriod())){
// return Boolean.TRUE;
// }
// startDate = DateUtils.beforeDate(6, ChronoUnit.DAYS, startDate);
// 自动初始化表
cuMemberTreeService.createCuMemberTree(settleDate);
iCuMemberTreeService.createCuMemberTree(settleDate);
log.info("初始化表完成");
// 奖金结算
List<SaOrderExt> saOrderExtList = saOrderServiceApi.querySaOrderByDay(startDate, settleEndDate).getData();
List<SaOrderExt> saOrderExtList = iSaOrderServiceApi.querySaOrderByDay(startDate, settleEndDate).getData();
// 60天前买的订单用于积分加权
List<SaOrderExt> buySaOrderExtList = saOrderServiceApi.querySaOrderByEffectiveDay(startDate, settleEndDate).getData();
List<SaOrderExt> buySaOrderExtList = iSaOrderServiceApi.querySaOrderByEffectiveDay(startDate, settleEndDate).getData();
// 确认收获的订单用于店铺收益
List<SaOrderExt> storeSaOrderExtList = null;
if (settleDate.endsWith("10")) {
settleEndDate = DateUtils.currentMonthFirstDate(startDate);
storeSaOrderExtList = saOrderServiceApi.queryDeliverySaOrderByDay(DateUtils.beforeMonthFirstDate(startDate), settleEndDate).getData();
storeSaOrderExtList = iSaOrderServiceApi.queryDeliverySaOrderByDay(DateUtils.beforeMonthFirstDate(startDate), settleEndDate).getData();
}
bonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList, buySaOrderExtList, storeSaOrderExtList);
iBonusSettleService.calculateCuMemberBonus(settleDate, saOrderExtList, buySaOrderExtList, storeSaOrderExtList);
return Boolean.TRUE;
}
@Override
public Set<Long> queryMemberBonusByPeriod(Integer period) {
QueryWrapper<CuMemberBonus> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
queryWrapper.le(MemberBonusFieldConstants.GRANT_STATUS, EGrantStatus.PUBLISHED.getValue());
LambdaQueryWrapper<CuMemberBonus> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberBonus::getPeriod, period);
queryWrapper.le(CuMemberBonus::getGrantStatus, EGrantStatus.PUBLISHED.getValue());
List<CuMemberBonus> cuMemberBonusList = baseMapper.selectList(queryWrapper);
return cuMemberBonusList.stream().distinct().map(CuMemberBonus::getPkId).collect(Collectors.toSet());
}

View File

@ -1,25 +1,16 @@
package com.hzs.bonus.bonus.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hzs.bonus.bonus.service.ICuMemberShareDetailService;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.domain.member.bonus.CuMemberShareDetail;
import com.hzs.common.domain.member.ext.CuMemberShareDetailExt;
import com.hzs.bonus.bonus.mapper.CuMemberShareDetailMapper;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 会员奖金-分红奖金配置明细 服务实现类
* </p>
*
* @author hzs
* @since 2023-07-03
*/
@Service
public class CuMemberShareDetailServiceImpl extends ServiceImpl<CuMemberShareDetailMapper, CuMemberShareDetail> implements ICuMemberShareDetailService {
@ -29,23 +20,4 @@ public class CuMemberShareDetailServiceImpl extends ServiceImpl<CuMemberShareDet
baseMapper.saveMemberShareBonus(cuMemberShareDetailList);
}
/*
* @description: 根据期间查询奖衔设置的分红配置
* @author: sui q
* @date: 2023/8/11 15:35
* @param: null null
**/
@Override
public Map<String, CuMemberShareDetail> queryCuMemberShareBonusByPeriod(Integer period){
List<CuMemberShareDetail> cuMemberShareDetailList = baseMapper.queryCuMemberShareBonusByPeriod(period);
Map<String, CuMemberShareDetail> cuMemberShareDetailMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberShareDetailList.size()));
if(CollectionUtil.isNotEmpty(cuMemberShareDetailList)){
for (CuMemberShareDetail cuMemberShareDetail : cuMemberShareDetailList) {
String key =cuMemberShareDetail.getPkCountry().toString() + cuMemberShareDetail.getPkAwards();
cuMemberShareDetailMap.put(key, cuMemberShareDetail);
}
}
return cuMemberShareDetailMap;
}
}

View File

@ -17,11 +17,7 @@ import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 返回后端用户端查询奖金明细vo
* @Author: sui q
* @Time: 2022/12/20 9:56
* @Classname: MemberBonusDetailVO
* @PackageName: com.hzs.member.bonus.vo
* 返回后端用户端查询奖金明细vo
*/
@Data
@Builder

View File

@ -18,11 +18,7 @@ import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 返回会员端查询奖金明细vo
* @Author: sui q
* @Time: 2022/12/20 9:56
* @Classname: MemberBonusDetailVO
* @PackageName: com.hzs.member.bonus.vo
* 返回会员端查询奖金明细vo
*/
@Data
@Builder

View File

@ -11,11 +11,7 @@ import java.math.BigDecimal;
import java.util.Date;
/**
* @Description: 用于查询会员奖金
* @Author: sui q
* @Time: 2023/1/13 10:38
* @Classname: MemberBonusVO
* @PackageName: com.hzs.member.bonus.vo
* 用于查询会员奖金
*/
@Data
@Builder

View File

@ -69,7 +69,7 @@
<!-- 会员网体月表数据,用于查询 网体跟业绩分开 横向分表-->
<sql id="CuMemberTreeColumn">
period NUMBER(6) default 0 not null,
period NUMBER(6) default 0 not null,
pk_member NUMBER(20) not null,
pk_parent NUMBER(20) not null,
pk_place_parent NUMBER(20),
@ -110,6 +110,7 @@
repurchase_blo_amount NUMBER(17,6) default 0 not null,
repurchase_blo_new_amount NUMBER(17,6) default 0 not null
</sql>
<sql id="CuMemberSettleDetailColumn">
pk_member NUMBER(20) not null,
place_dept NUMBER(4),
@ -172,31 +173,61 @@
</sql>
<insert id="insertCuMemberSettleByMember">
insert into ${settleTableName}(pk_member,pk_parent,pk_place_parent,place_dept,member_code,member_name,
customer_type,phone,pk_grade,pk_awards,account_status,pay_status,register_authority,category,
purchase_type,purchase_status,share_status,income_status,pk_team_code,
pk_center_code,pk_vertex,pk_settle_country,is_real_name,pk_country,pk_rate,expire_date,
resale_income_number,resale_income_bonus)
select cm.pk_id,pk_parent,pk_place_parent,place_dept,member_code,member_name,
customer_type,phone,pk_settle_grade,pk_awards,account_status,pay_status,register_authority,category,
(case when purchase_status = 0 then 1 else 0 end) purchase_type,
purchase_status,share_status,income_status,pk_team_code,pk_center_code,
pk_vertex,pk_settle_country,is_real_name,cm.pk_country,nvl(bc.pk_id,-1) pk_rate,cm.expire_date,
cm.resale_income_number,(cm.resale_income_bonus-cm.resale_income_number*150) cm from cu_member cm
left join (
select pk_country,max(pk_id) pk_id from bd_currency
where del_flag=0 and pk_country=1 and enable_state=0 and effective_date &lt;=sysdate
group by pk_country) bc
on cm.pk_settle_country = bc.pk_country
where cm.del_flag=0
insert into ${settleTableName}(pk_member, pk_parent, pk_place_parent, place_dept, member_code, member_name,
customer_type, phone, pk_grade, pk_awards, account_status, pay_status, register_authority, category,
purchase_type, purchase_status, share_status, income_status, pk_team_code,
pk_center_code, pk_vertex, pk_settle_country, is_real_name, pk_country, pk_rate, expire_date,
resale_income_number, resale_income_bonus)
select cm.pk_id,
pk_parent,
pk_place_parent,
place_dept,
member_code,
member_name,
customer_type,
phone,
pk_settle_grade,
pk_awards,
account_status,
pay_status,
register_authority,
category,
(case when purchase_status = 0 then 1 else 0 end) purchase_type,
purchase_status,
share_status,
income_status,
pk_team_code,
pk_center_code,
pk_vertex,
pk_settle_country,
is_real_name,
cm.pk_country,
nvl(bc.pk_id, -1) pk_rate,
cm.expire_date,
cm.resale_income_number,
(cm.resale_income_bonus - cm.resale_income_number * 150) cm
from cu_member cm
left join (
select pk_country, max(pk_id) pk_id
from bd_currency
where del_flag = 0
and pk_country = 1
and enable_state = 0
and effective_date &lt;= sysdate
group by pk_country) bc
on cm.pk_settle_country = bc.pk_country
where cm.del_flag = 0
</insert>
<insert id="insertCuMemberSettleDetailByMember">
insert into ${settleTableName}(pk_member,place_dept)
select pk_place_parent pk_member,place_dept from cu_member
where del_flag=0 and pk_place_parent is not null
insert into ${settleTableName}(pk_member, place_dept)
select pk_place_parent pk_member, place_dept
from cu_member
where del_flag = 0
and pk_place_parent is not null
union
select pk_member,place_dept from ${yesSettleTableName}
select pk_member, place_dept
from ${yesSettleTableName}
</insert>
<update id="createCuMemberSettleTable">
@ -346,6 +377,7 @@
<delete id="truncateCuMemberTreeTable">
truncate table ${tableName}
</delete>
<select id="queryExistOracleTable" resultType="java.lang.Integer">
select 1
from user_tables
@ -530,16 +562,6 @@
on bc.pk_country=a.pk_settle_country and bc.del_flag=0
</select>
<select id="queryByMemberParentSumPv" resultType="com.hzs.bonus.achieve.param.MemberParentCountParam">
select sum(cr.REGISTER_PV) parentMemberSumPv,cm.PK_PARENT pkMember from ${tableName} cr
left join CU_MEMBER cm on cm.PK_ID = cr.PK_MEMBER
where cm.del_flag = 0 and cm.PK_PARENT in
<foreach collection="memberIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
group by cm.PK_PARENT
</select>
<select id="queryCuMemberSettlePlaceDeptUnderUmbrella" resultType="java.lang.Integer">
select place_dept from settleTableName where pk_place_parent=#{pkMember}
</select>

View File

@ -4,60 +4,64 @@
<!-- 通用查询映射结果 -->
<resultMap id="CuMemberBonus" type="com.hzs.common.domain.member.ext.CuMemberBonusExt">
<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_MEMBER" property="pkMember" />
<result column="PERIOD" property="period" />
<result column="PK_RATE" property="pkRate" />
<result column="out_exchange_rate" property="outExchangeRate" />
<result column="DIRECT_INCOME" property="directIncome" />
<result column="SEE_POINT_INCOME" property="seePointIncome" />
<result column="EXPAND_INCOME" property="expandIncome" />
<result column="EXPAND_NO_CAPPING" property="expandNoCapping" />
<result column="COACH_INCOME" property="coachIncome" />
<result column="SHARE_INCOME" property="shareIncome" />
<result column="SERVICE_INCOME" property="serviceIncome" />
<result column="BACK_POINTS" property="backPoints" />
<result column="SERVICE_SPEND" property="serviceSpend" />
<result column="PUR_REAL_SUBTOTAL" property="purRealSubtotal" />
<result column="REPUR_RANGE_INCOME" property="repurRangeIncome" />
<result column="SAME_LEVEL_INCOME" property="sameLevelIncome" />
<result column="POINT_SHARE_INCOME" property="pointShareIncome" />
<result column="FIRE_SHARE_INCOME" property="fireShareIncome" />
<result column="REPUR_REAL_SUBTOTAL" property="repurRealSubtotal" />
<result column="GLOBAL_POINTS" property="globalPoints" />
<result column="REAL_INCOME_TOTAL" property="realIncomeTotal" />
<result column="INCOME_STATUS" property="incomeStatus" />
<result column="GRANT_STATUS" property="grantStatus" />
<result column="SETTLE_DATE" property="settleDate" />
<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_MEMBER" property="pkMember"/>
<result column="PERIOD" property="period"/>
<result column="PK_RATE" property="pkRate"/>
<result column="out_exchange_rate" property="outExchangeRate"/>
<result column="DIRECT_INCOME" property="directIncome"/>
<result column="SEE_POINT_INCOME" property="seePointIncome"/>
<result column="EXPAND_INCOME" property="expandIncome"/>
<result column="EXPAND_NO_CAPPING" property="expandNoCapping"/>
<result column="COACH_INCOME" property="coachIncome"/>
<result column="SHARE_INCOME" property="shareIncome"/>
<result column="SERVICE_INCOME" property="serviceIncome"/>
<result column="BACK_POINTS" property="backPoints"/>
<result column="SERVICE_SPEND" property="serviceSpend"/>
<result column="PUR_REAL_SUBTOTAL" property="purRealSubtotal"/>
<result column="REPUR_RANGE_INCOME" property="repurRangeIncome"/>
<result column="SAME_LEVEL_INCOME" property="sameLevelIncome"/>
<result column="POINT_SHARE_INCOME" property="pointShareIncome"/>
<result column="FIRE_SHARE_INCOME" property="fireShareIncome"/>
<result column="REPUR_REAL_SUBTOTAL" property="repurRealSubtotal"/>
<result column="GLOBAL_POINTS" property="globalPoints"/>
<result column="REAL_INCOME_TOTAL" property="realIncomeTotal"/>
<result column="INCOME_STATUS" property="incomeStatus"/>
<result column="GRANT_STATUS" property="grantStatus"/>
<result column="SETTLE_DATE" property="settleDate"/>
<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="STORE_INCOME" property="storeIncome" />
<result column="STORE_RANGE_INCOME" property="storeRangeIncome" />
<result column="PUR_REAL_SUBTOTAL" property="purRealSubtotal" />
<result column="REPUR_REAL_SUBTOTAL" property="repurRealSubtotal" />
<result column="VERTEX_NAME" property="vertexName"/>
<result column="TEAM_NAME" property="teamName"/>
<result column="STORE_INCOME" property="storeIncome"/>
<result column="STORE_RANGE_INCOME" property="storeRangeIncome"/>
<result column="PUR_REAL_SUBTOTAL" property="purRealSubtotal"/>
<result column="REPUR_REAL_SUBTOTAL" property="repurRealSubtotal"/>
</resultMap>
<update id="updateCuMemberBonusStatus">
update cu_member_bonus set grant_status = #{grantStatus}, pk_modified=100000000, modified_time=sysdate
where del_flag= 0
and grant_status = #{oldGrantStatus}
and grant_status = #{oldGrantStatus}
and period between #{startPeriod} and #{endPeriod}
<if test="pkCountry != null">
and pk_country = #{pkCountry}
</if>
</update>
<delete id="deleteCuMemberBonus">
delete from cu_member_bonus where period= #{period} and grant_status &lt;= 2
delete
from cu_member_bonus
where period = #{period}
and grant_status &lt;= 2
</delete>
<insert id="batchInsertCuMemberBonus">
@ -71,7 +75,8 @@
pk_country,pk_creator,grant_status,income_status from(
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate,jdbcType=INTEGER} pk_rate,
#{item.directIncome} direct_income,#{item.seePointIncome} see_point_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
#{item.directIncome} direct_income,#{item.seePointIncome} see_point_income,#{item.expandIncome} expand_income,#{item.expandNoCapping}
expand_no_capping,
#{item.coachIncome} coach_income,#{item.shareIncome} share_income,
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurRangeIncome} repur_range_income,
@ -82,89 +87,19 @@
</foreach>) )b
on (cb.pk_member=b.pk_member and cb.period=b.period)
WHEN NOT MATCHED THEN
insert(pk_id,pk_member,period,pk_rate,direct_income,see_point_income,expand_income,expand_no_capping,
insert(pk_id,pk_member,period,pk_rate,direct_income,see_point_income,expand_income,expand_no_capping,
coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_range_income,same_level_income,
point_share_income,fire_share_income,repur_real_subtotal,
global_points,store_income,store_range_income,real_income_total,
pk_country,pk_creator,grant_status,income_status)
values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.see_point_income,b.expand_income,b.expand_no_capping,
values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.see_point_income,b.expand_income,b.expand_no_capping,
b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend,
b.pur_real_subtotal,b.repur_range_income,b.same_level_income,
b.point_share_income,b.fire_share_income,b.repur_real_subtotal,
b.global_points,b.store_income,b.store_range_income,b.real_income_total,
b.pk_country,b.pk_creator,b.grant_status,b.income_status)
</insert>
<insert id="insertOrUpdateCuMemberBonus">
merge into cu_member_bonus a
using(
select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
global_points,real_income_total,
pk_country,pk_creator,grant_status,income_status from(
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate} pk_rate,
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
#{item.expandCapping} expand_capping,#{item.coachIncome} coach_income,#{item.shareIncome} share_income,
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income,
#{item.repurRangeIncome} repur_range_income,#{item.repurExpandIncome} repur_expand_income,
#{item.repurRealSubtotal} repur_real_subtotal,#{item.globalPoints} global_points,
#{item.realIncomeTotal} real_income_total,#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,
#{item.grantStatus} grant_status,#{item.incomeStatus} income_status from dual
</foreach>)
) b
on (a.pk_member = b.pk_member and a.period = b.period)
when matched then
update set
a.direct_income = a.direct_income + b.direct_income,a.expand_income=a.expand_income+b.expand_income,
a.expand_no_capping=a.expand_no_capping+b.expand_no_capping,a.expand_capping=a.expand_capping+b.expand_capping,
a.coach_income=a.coach_income+b.coach_income,a.share_income=a.share_income+b.share_income,
a.service_income=a.service_income+b.service_income,a.back_points=a.back_points+b.back_points,
a.service_spend=a.service_spend+b.service_spend,
a.pur_real_subtotal=a.pur_real_subtotal+b.pur_real_subtotal,
a.repur_range_income=a.repur_range_income+b.repur_range_income,
a.repur_real_subtotal=a.repur_real_subtotal+b.repur_real_subtotal,
a.global_points=a.global_points+b.global_points,a.real_income_total=a.real_income_total+b.real_income_total
when not matched then
insert (pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
pur_real_subtotal,repur_push_income,repur_range_income,repur_expand_income,repur_real_subtotal,
global_points,real_income_total,
pk_country,pk_creator,grant_status,income_status)
values(b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping,
b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend,
b.pur_real_subtotal,b.repur_push_income,b.repur_range_income,b.repur_expand_income,b.repur_real_subtotal,
b.global_points,b.pk_country,b.pk_creator,b.grant_status,b.income_status)
</insert>
<select id="queryMemberBonusTotalByCondition" resultMap="CuMemberBonus">
select cb.period,sum(direct_income) direct_income,sum(expand_income) expand_income,sum(expand_no_capping) expand_no_capping,
sum(coach_income) coach_income,sum(share_income) share_income,
sum(service_income) service_income,sum(back_points) back_points,sum(service_spend) service_spend,
sum(pur_real_subtotal) pur_real_subtotal,
sum(real_income_total) real_income_total,cp.settle_date from cu_member_bonus cb
inner join cu_member cm
on cb.pk_member = cm.pk_id
inner join cu_member_settle_period cp
on cb.period = cp.pk_id
where cb.del_flag=0 and cm.del_flag=0
and cp.del_flag=0 and cb.income_status=0
<if test="pkVertex != null and pkVertex != ''">
and cm.pk_vertex = #{pkVertex}
</if>
<if test="pkTeamCode != null and pkTeamCode != ''">
and cm.pk_team_code = #{pkTeamCode}
</if>
<if test="startDate != null">
and cp.settle_date >=#{startDate, jdbcType=DATE}
</if>
<if test="endDate != null">
and cp.settle_date &lt; #{endDate, jdbcType=DATE}
</if>
group by cb.period,cp.settle_date
</select>
<select id="queryMemberBonusByCondition" resultMap="CuMemberBonus">
select cp.settle_date,cb.direct_income,cb.see_point_income,cb.expand_income,cb.expand_no_capping,
@ -174,7 +109,7 @@
inner join cu_member_settle_period cp
on cb.period = cp.pk_id
where cb.del_flag=0 and cp.del_flag=0
and cb.pk_member=#{pkMember}
and cb.pk_member=#{pkMember}
<if test="grantStatus != null">
and cb.grant_status >= #{grantStatus}
</if>
@ -186,6 +121,7 @@
</if>
order by cp.settle_date desc
</select>
<select id="queryMemberBonusByConditionForServer" resultMap="CuMemberBonus">
select cm.member_code,cm.member_name,cm.pk_settle_grade,cm.pk_awards,bv.vertex_name,ct.team_name,
cb.period,cp.settle_date,cb.direct_income,cb.see_point_income,cb.expand_income,cb.expand_no_capping,
@ -233,10 +169,10 @@
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
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
@ -253,8 +189,10 @@
</if>
order by cb.period desc
</select>
<select id="queryBonusTotalVoByConditionForServer" resultMap="CuMemberBonus">
select cb.period,cp.settle_date,nvl(min(bc.out_exchange_rate),1) out_exchange_rate,sum(cb.direct_income) direct_income,sum(cb.expand_income) expand_income,
select cb.period,cp.settle_date,nvl(min(bc.out_exchange_rate),1) out_exchange_rate,sum(cb.direct_income) direct_income,sum(cb.expand_income)
expand_income,
sum(cb.expand_no_capping) expand_no_capping,sum(cb.coach_income) coach_income,
sum(cb.share_income) share_income,sum(cb.service_income) service_income,sum(cb.back_points) back_points,
sum(cb.service_spend) service_spend,sum(cb.pur_real_subtotal) pur_real_subtotal,
@ -265,7 +203,7 @@
inner join cu_member_settle_period cp
on cb.period = cp.pk_id
left join bd_currency bc
on bc.pk_id = cb.pk_rate and bc.del_flag=0
on bc.pk_id = cb.pk_rate and bc.del_flag=0
where cb.del_flag=0 and cp.del_flag=0
<if test="bonusParam.pkCountry != null">
and cb.pk_country = #{bonusParam.pkCountry}
@ -304,16 +242,21 @@
group by cb.period,cp.settle_date
order by cb.period desc
</select>
<select id="batchQueryCuMemberBonusSeq" resultType="java.lang.Long">
select cu_member_bonus_seq.nextval from dual connect by rownum &lt;= #{rowNum}
select cu_member_bonus_seq.nextval
from dual connect by rownum &lt;= #{rowNum}
</select>
<select id="queryWeekMemberBonus" resultMap="CuMemberBonus">
select cb.pk_member,sum(expand_income) expand_income from cu_member_bonus cb
inner join BD_SYSTEM_CONFIG sy
on cb.pk_country = sy.pk_country
where sy.key = 'EXPAND_CAP_METHOD1' and sy.value='2'
and cb.period>= #{startPeriod} and cb.period &lt; #{endPeriod}
select cb.pk_member, sum(expand_income) expand_income
from cu_member_bonus cb
inner join BD_SYSTEM_CONFIG sy
on cb.pk_country = sy.pk_country
where sy.key = 'EXPAND_CAP_METHOD1'
and sy.value = '2'
and cb.period >= #{startPeriod}
and cb.period &lt; #{endPeriod}
group by cb.pk_member
</select>
</mapper>

View File

@ -4,62 +4,45 @@
<!-- 通用查询映射结果 -->
<resultMap id="CuMemberShareDetail" type="com.hzs.common.domain.member.bonus.CuMemberShareDetail">
<id column="PK_ID" property="pkId" />
<result column="PK_SHARE_BONUS" property="pkShareBonus" />
<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_AWARDS" property="pkAwards" />
<result column="PROMOTE_TOTAL" property="promoteTotal" />
<result column="REACH_TOTAL" property="reachTotal" />
<result column="EXPECT_SHARE_INCOME" property="expectShareIncome" />
<result column="EXPECT_SHARE_SUBTOTAL" property="expectShareSubtotal" />
<result column="REAL_SHARE_INCOME" property="realShareIncome" />
<result column="REAL_SHARE_SUBTOTAL" property="realShareSubtotal" />
<id column="PK_ID" property="pkId"/>
<result column="PK_SHARE_BONUS" property="pkShareBonus"/>
<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_AWARDS" property="pkAwards"/>
<result column="PROMOTE_TOTAL" property="promoteTotal"/>
<result column="REACH_TOTAL" property="reachTotal"/>
<result column="EXPECT_SHARE_INCOME" property="expectShareIncome"/>
<result column="EXPECT_SHARE_SUBTOTAL" property="expectShareSubtotal"/>
<result column="REAL_SHARE_INCOME" property="realShareIncome"/>
<result column="REAL_SHARE_SUBTOTAL" property="realShareSubtotal"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
DEL_FLAG,
CREATION_TIME,
MODIFIED_TIME,
PK_COUNTRY,
PK_CREATOR,
PK_MODIFIED,
PK_ID, PK_AWARDS,PK_SHARE_BONUS, PROMOTE_TOTAL, REACH_TOTAL, EXPECT_SHARE_INCOME, EXPECT_SHARE_SUBTOTAL, REAL_SHARE_INCOME, REAL_SHARE_SUBTOTAL
</sql>
<update id="saveMemberShareBonus">
merge into cu_member_share_detail a
using(
<foreach collection="cuMemberShareDetailList" item="item" separator=" union ">
select #{item.pkAwards} pk_awards,#{item.pkShareBonus} pk_share_bonus,#{item.promoteTotal} promote_total,#{item.reachTotal} reach_total,
#{item.expectShareIncome} expect_share_income,#{item.expectShareSubtotal} expect_share_subtotal,
#{item.realShareIncome} real_share_income,#{item.realShareSubtotal} real_share_subtotal,
#{item.creationTime, jdbcType=TIMESTAMP} creation_time,#{item.pkCountry} pk_country,#{item.pkCreator,jdbcType=BIGINT} pk_creator,
#{item.modifiedTime, jdbcType=TIMESTAMP} modified_time,#{item.pkModified,jdbcType=BIGINT} pk_modified from dual
</foreach>
) b
<foreach collection="cuMemberShareDetailList" item="item" separator=" union ">
select #{item.pkAwards} pk_awards,#{item.pkShareBonus} pk_share_bonus,#{item.promoteTotal} promote_total,#{item.reachTotal} reach_total,
#{item.expectShareIncome} expect_share_income,#{item.expectShareSubtotal} expect_share_subtotal,
#{item.realShareIncome} real_share_income,#{item.realShareSubtotal} real_share_subtotal,
#{item.creationTime, jdbcType=TIMESTAMP} creation_time,#{item.pkCountry} pk_country,#{item.pkCreator,jdbcType=BIGINT} pk_creator,
#{item.modifiedTime, jdbcType=TIMESTAMP} modified_time,#{item.pkModified,jdbcType=BIGINT} pk_modified from dual
</foreach>
) b
on (a.pk_share_bonus=b.pk_share_bonus and a.pk_awards=b.pk_awards)
WHEN NOT MATCHED THEN
insert(pk_awards,pk_share_bonus, promote_total, reach_total, expect_share_income, expect_share_subtotal, real_share_income,
real_share_subtotal,creation_time,pk_country,pk_creator)
real_share_subtotal,creation_time,pk_country,pk_creator)
values
(b.pk_awards,b.pk_share_bonus,b.promote_total,b.reach_total, b.expect_share_income, b.expect_share_subtotal, b.real_share_income,
b.real_share_subtotal,b.creation_time,b.pk_country,b.pk_creator)
when matched then
update set a.promote_total=b.promote_total,a.reach_total=b.reach_total,a.expect_share_income=b.expect_share_income,
a.expect_share_subtotal=b.expect_share_subtotal,a.real_share_income=b.real_share_income,
a.real_share_subtotal=b.real_share_subtotal,a.modified_time=b.modified_time,a.pk_modified=b.pk_modified
a.expect_share_subtotal=b.expect_share_subtotal,a.real_share_income=b.real_share_income,
a.real_share_subtotal=b.real_share_subtotal,a.modified_time=b.modified_time,a.pk_modified=b.pk_modified
</update>
<select id="queryCuMemberShareBonusByPeriod" resultMap="CuMemberShareDetail">
select cd.* from CU_MEMBER_SHARE_BONUS ch
inner join CU_MEMBER_SHARE_DETAIL cd
on ch.pk_id =cd.pk_share_bonus
where ch.del_flag=0 and cd.del_flag=0
and ch.period=#{period}
</select>
</mapper>

View File

@ -10,8 +10,6 @@ import java.util.List;
/**
* 订单类型枚举类
*
* @author hzs
*/
@AllArgsConstructor
@Getter

View File

@ -14,12 +14,7 @@ import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 服务补贴
* </p>
*
* @author hzs
* @since 2022-11-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -61,5 +56,4 @@ public class BdBonusService extends BaseEntity {
private String assessmentTypeVal;
}

View File

@ -8,12 +8,7 @@ import java.math.BigDecimal;
import java.util.Date;
/**
* @description: 会员业绩扩展表
* @author: sui q
* @time: 2023/8/26 10:45
* @classname: CuMemberAchieveVO
* @package_name: com.hzs.common.domain.member.achieve.ext
* version 1.0.0
* 会员业绩扩展表
*/
@EqualsAndHashCode(callSuper = true)
@Data

View File

@ -13,12 +13,7 @@ import lombok.*;
import lombok.experimental.Accessors;
/**
* <p>
* 会员奖金-分红奖金配置明细
* </p>
*
* @author hzs
* @since 2023-07-03
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -11,9 +11,6 @@ import lombok.experimental.Accessors;
/**
* 订单奖项表
*
* @author hzs
* @since 2023-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)

View File

@ -15,12 +15,7 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal;
/**
* <p>
* 等级配置表
* </p>
*
* @author zhangjing
* @since 2022-09-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ -36,7 +31,7 @@ public class BdGrade extends BaseEntity {
/**
* 等级名称
*/
@Excel(name = "注册等级",sort = 1)
@Excel(name = "注册等级", sort = 1)
@TableField("GRADE_NAME")
private String gradeName;

View File

@ -20,7 +20,7 @@ import java.util.Date;
public class BonusSettleJob {
@DubboReference
private IMemberSettleBonusApi iMemberSettleBonusApi;
IMemberSettleBonusApi iMemberSettleBonusApi;
/**
* 奖金每天自动结算,计算前一天奖金

View File

@ -10,7 +10,7 @@ logging.config=classpath:logback.xml
### 执行器通讯TOKEN [选填]:非空时启用;
xxl.job.accessToken=africa_token
### 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxl.job.executor.appname=xxl-job-africa-test
xxl.job.executor.appname=xxl-job-africa
### 执行器注册 [选填]:优先使用该配置作为注册地址,为空时使用内嵌服务 ”IP:PORT“ 作为注册地址。从而更灵活的支持容器类型执行器动态IP和动态映射端口问题。
xxl.job.executor.address=
### 执行器IP [选填]默认为空表示自动获取IP多网卡时可手动设置指定IP该IP不会绑定Host仅作为通讯实用地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"