## 见点奖复购考核;
This commit is contained in:
parent
512af3d529
commit
4ffedd6734
|
@ -6,7 +6,6 @@ import com.hzs.bonus.achieve.service.ICuMemberMonthAchieveService;
|
|||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
||||
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.bonus.vo.MemberSettlePeriodVO;
|
||||
import com.hzs.common.core.annotation.AccessPermissions;
|
||||
|
@ -16,7 +15,6 @@ import com.hzs.common.core.enums.EOperationBusiness;
|
|||
import com.hzs.common.core.enums.EOperationMethod;
|
||||
import com.hzs.common.core.enums.EOperationModule;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.core.utils.StringUtils;
|
||||
import com.hzs.common.core.web.controller.BaseController;
|
||||
import com.hzs.common.core.web.domain.AjaxResult;
|
||||
import com.hzs.common.core.web.page.TableDataInfo;
|
||||
|
@ -31,13 +29,6 @@ import java.util.ArrayList;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: sui q
|
||||
* @Time: 2022/11/2 16:21
|
||||
* @Classname: CuMemberSettleController
|
||||
* @PackageName: com.hzs.member.achieve.controller
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/manage/settle")
|
||||
public class CuMemberSettleController extends BaseController {
|
||||
|
@ -45,8 +36,6 @@ public class CuMemberSettleController extends BaseController {
|
|||
@Autowired
|
||||
private ICuMemberBonusService cuMemberBonusService;
|
||||
@Autowired
|
||||
private IBonusSettleService bonusSettleService;
|
||||
@Autowired
|
||||
private ICuMemberTreeService cuMemberTreeService;
|
||||
@Autowired
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
|
@ -184,21 +173,6 @@ public class CuMemberSettleController extends BaseController {
|
|||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒接结算业绩,仅用于测试
|
||||
*
|
||||
* @return AjaxResult
|
||||
*/
|
||||
@GetMapping("/settle-second-bonus")
|
||||
public AjaxResult settleSecondBonus(String orderCode) {
|
||||
if (StringUtils.isEmpty(orderCode)) {
|
||||
return AjaxResult.error();
|
||||
}
|
||||
// bonusSettleService.calculateCumberBonusBySecond(orderCode);
|
||||
bonusSettleService.calculateCuMemberRangAwardsBySaOrder(orderCode);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 秒接结算业绩,仅用于测试
|
||||
*
|
||||
|
@ -223,10 +197,7 @@ public class CuMemberSettleController extends BaseController {
|
|||
}
|
||||
|
||||
/*
|
||||
* @description: 查询奖金计算期数列表
|
||||
* @author: sui q
|
||||
* @date: 2023/4/26 17:10
|
||||
* @param: null null
|
||||
* 查询奖金计算期数列表
|
||||
**/
|
||||
@AccessPermissions("bonusCount")
|
||||
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.SELECT)
|
||||
|
|
|
@ -8,51 +8,41 @@ import org.apache.ibatis.annotations.Param;
|
|||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public interface CuMemberRangeMapper extends BaseMapper<CuMemberRange> {
|
||||
|
||||
/*
|
||||
* @description: 更新极差秒接表,用昨天的结算表
|
||||
* @param: null null
|
||||
* 更新极差秒接表,用昨天的结算表
|
||||
**/
|
||||
void mergeMemberSecondRangeByRange(@Param("rangeTableName") String rangeTableName, @Param("secondRangeTableName") String secondRangeTableName,
|
||||
@Param("pkMember") Long pkMember);
|
||||
|
||||
/*
|
||||
* @description: 根据会员查询会员上的所有网体
|
||||
* @param: null null
|
||||
* 根据会员查询会员上的所有网体
|
||||
**/
|
||||
List<CuMemberRangeExt> queryCuMemberRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList);
|
||||
|
||||
/*
|
||||
* @description: 根据会员查询会员上的所有网体, 按照pkParent作为key
|
||||
* @param: null null
|
||||
* 根据会员查询会员上的所有网体, 按照pkParent作为key
|
||||
**/
|
||||
List<CuMemberRangeExt> queryCuMemberSecondRangeParent(@Param("rangeTableName") String rangeTableName, @Param("secondTableName") String tableName, @Param("pkMember") Long pkMember);
|
||||
|
||||
/*
|
||||
* @description: 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
* @param: null null
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
**/
|
||||
List<CuMemberRangeExt> queryCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("pkParent") Long pkParent, @Param("orderDate") Date orderDate);
|
||||
|
||||
/*
|
||||
* @description: 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
* @param: null null
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
**/
|
||||
List<CuMemberRangeExt> querySecondCuMemberRangeExtByParent(@Param("tableName") String tableName, @Param("secondTableName") String secondTableName, @Param("pkParent") Long pkParent);
|
||||
|
||||
/*
|
||||
* @description: 批量更新网体
|
||||
* @param: null null
|
||||
* 批量更新网体
|
||||
**/
|
||||
void mergeCuMemberRangeExt(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);
|
||||
|
||||
/*
|
||||
* @description: 批量更新网体
|
||||
* @param: null null
|
||||
* 批量更新网体
|
||||
**/
|
||||
void mergeSecondCuMemberRangeExt(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList);
|
||||
|
||||
|
@ -66,15 +56,13 @@ public interface CuMemberRangeMapper extends BaseMapper<CuMemberRange> {
|
|||
void mergeCuMemberSecondRange(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<?> cuMemberRangeExtList);
|
||||
|
||||
/*
|
||||
* @description: 验证血缘部门 有多少个满足等级
|
||||
* @param: null null
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
**/
|
||||
Integer validateCuMemberPlaceAwards(@Param("rangeTableName") String rangeTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList,
|
||||
@Param("pkRangeAwards") Integer pkRangeAwards, @Param("orderDate") Date orderDate);
|
||||
|
||||
/*
|
||||
* @description: 验证血缘部门 有多少个满足等级
|
||||
* @param: null null
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
**/
|
||||
Integer validateSecondCuMemberPlaceAwards(@Param("secondTableName") String secondTableName, @Param("cuMemberRangeExtList") List<CuMemberRangeExt> cuMemberRangeExtList,
|
||||
@Param("pkRangeAwards") Integer pkRangeAwards);
|
||||
|
|
|
@ -352,4 +352,13 @@ public interface CuMemberTreeMapper extends BaseMapper<CuMemberTree> {
|
|||
@Param("settleTableNameMonthLast") String settleTableNameMonthLast,
|
||||
@Param("pkMemberList") List<?> pkMemberList);
|
||||
|
||||
/**
|
||||
* 更新日结复购考核
|
||||
*
|
||||
* @param settleTableName
|
||||
* @param assessTableName
|
||||
* @return
|
||||
*/
|
||||
int updateCuMemberSettlePointAssess(@Param("settleTableName") String settleTableName, @Param("assessTableName") String assessTableName);
|
||||
|
||||
}
|
||||
|
|
|
@ -15,8 +15,7 @@ import java.util.Map;
|
|||
public interface ICuMemberRangeService extends IService<CuMemberRange> {
|
||||
|
||||
/*
|
||||
* @description: 更新极差秒接表,用昨天的结算表
|
||||
* @param: null null
|
||||
* 更新极差秒接表,用昨天的结算表
|
||||
**/
|
||||
void mergeMemberSecondRangeByRange(String rangeTableName, String secondRangeTableName, Long pkMember);
|
||||
|
||||
|
@ -30,50 +29,42 @@ public interface ICuMemberRangeService extends IService<CuMemberRange> {
|
|||
void updateCuMemberSecondRange(String secondTableName, Map<Long, CuMemberRangeExt> cuMemberTreeMap);
|
||||
|
||||
/*
|
||||
* @description: 根据会员查询会员上的所有网体, 按照pkParent作为key
|
||||
* @param: null null
|
||||
* 根据会员查询会员上的所有网体, 按照pkParent作为key
|
||||
**/
|
||||
Map<Long, List<CuMemberRangeExt>> queryCuMemberRangeParent(String tableName, List<SaOrderExt> saOrderExtList);
|
||||
|
||||
/*
|
||||
* @description: 根据会员查询会员上的所有网体, 按照pkParent作为key,查询极差秒接表
|
||||
* @param: null null
|
||||
* 根据会员查询会员上的所有网体, 按照pkParent作为key,查询极差秒接表
|
||||
**/
|
||||
Map<Long, List<CuMemberRangeExt>> queryCuMemberSecondRangeParent(String rangeTableName, String secondTableName, Long pkMember);
|
||||
|
||||
/*
|
||||
* @description: 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
* @param: null null
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
**/
|
||||
List<CuMemberRangeExt> queryCuMemberRangeExtByParent(String tableName, Long pkParent, Date orderDate);
|
||||
|
||||
/*
|
||||
* @description: 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
* @param: null null
|
||||
* 推荐推荐人查询推荐人下的所有部门, 该订单日期之前的算他的网体
|
||||
**/
|
||||
List<CuMemberRangeExt> querySecondCuMemberRangeExtByParent(String tableName, String secondTableName, Long pkParent);
|
||||
|
||||
/*
|
||||
* @description: 批量更新网体
|
||||
* @param: null null
|
||||
* 批量更新网体
|
||||
**/
|
||||
void mergeCuMemberRangeExt(String rangeTableName, List<CuMemberRangeExt> cuMemberRangeExtList);
|
||||
|
||||
/*
|
||||
* @description: 批量更新网体
|
||||
* @param: null null
|
||||
* 批量更新网体
|
||||
**/
|
||||
void mergeSecondCuMemberRangeExt(String secondTableName, List<CuMemberRangeExt> cuMemberRangeExtList);
|
||||
|
||||
/*
|
||||
* @description: 验证血缘部门 有多少个满足等级
|
||||
* @param: null null
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
**/
|
||||
Integer validateCuMemberPlaceAwards(String rangeTableName, List<CuMemberRangeExt> cuMemberRangeExtList, Integer pkRangeAwards, Date orderDate);
|
||||
|
||||
/*
|
||||
* @description: 验证血缘部门 有多少个满足等级
|
||||
* @param: null null
|
||||
* 验证血缘部门 有多少个满足等级
|
||||
**/
|
||||
Integer validateSecondCuMemberPlaceAwards(String secondTableName, List<CuMemberRangeExt> cuMemberRangeExtList, Integer pkRangeAwards);
|
||||
}
|
||||
|
|
|
@ -91,7 +91,6 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
|
|||
* 判断是否存在临时表
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @Description:
|
||||
* @return: void
|
||||
*/
|
||||
Integer queryExistOracleTable(String tableName);
|
||||
|
@ -359,4 +358,12 @@ public interface ICuMemberTreeService extends IService<CuMemberTree> {
|
|||
*/
|
||||
List<CuMemberSettleExt> listUpgradeAwards(String settleTableName, Integer awardsValue);
|
||||
|
||||
/**
|
||||
* 更新日结复购考核
|
||||
*
|
||||
* @param settleTableName
|
||||
* @param assessTableName
|
||||
*/
|
||||
void updateCuMemberSettlePointAssess(String settleTableName, String assessTableName);
|
||||
|
||||
}
|
||||
|
|
|
@ -12,9 +12,6 @@ import org.springframework.stereotype.Service;
|
|||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberRangeServiceImpl extends ServiceImpl<CuMemberRangeMapper, CuMemberRange> implements ICuMemberRangeService {
|
||||
|
||||
|
|
|
@ -61,12 +61,6 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
if (number == null || number <= 0) {
|
||||
// 初始化日表数据,将cu_member数据插入到最新的日表记录表
|
||||
baseMapper.insertCuMemberSettleByMember(settleTableName);
|
||||
// 结算日期月份的第一天
|
||||
// TODO new 复购考核按月新増业绩走,晋升奖衔首月不处理复购免考
|
||||
// Date settleDate = DateUtils.parseStringToDate(date);
|
||||
// Date endDate = DateUtils.afterDate(1, ChronoUnit.DAYS, settleDate);
|
||||
// Date startDate = DateUtils.beforeMonthFirstDate(settleDate);
|
||||
// updateCuMemberSettleExemptByAward(settleTableName, startDate, endDate);
|
||||
}
|
||||
|
||||
// // 创建极差结算记录表
|
||||
|
@ -91,6 +85,8 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
createMonthTreeTableName(date);
|
||||
// 创建月表业绩记录表(cu_member_achieve)
|
||||
iCuMemberAchieveService.createCuMemberAchieve(date);
|
||||
// 创建考核月表(cu_member_assess)
|
||||
iCuMemberAssessService.createCuMemberAssessMonth(date);
|
||||
|
||||
// 创建秒接表,秒结表只需要表结构,跟日表一模一样,秒结表期间是date+1期间
|
||||
Date tomorrowDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(date));
|
||||
|
@ -119,7 +115,6 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, beforeDate)).getPkId();
|
||||
// 不删除每月最后一天数据
|
||||
String afterDate = DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, DateUtils.afterDate(1, ChronoUnit.DAYS, beforeDate));
|
||||
log.info("afterDate: {}", afterDate);
|
||||
if (!afterDate.endsWith("01")) {
|
||||
String beforeSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + beforePeriod;
|
||||
number = baseMapper.queryExistOracleTable(beforeSettleTableName);
|
||||
|
@ -470,4 +465,9 @@ public class CuMemberTreeServiceImpl extends ServiceImpl<CuMemberTreeMapper, CuM
|
|||
return baseMapper.listUpgradeAwards(settleTableName, awardsValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCuMemberSettlePointAssess(String settleTableName, String assessTableName) {
|
||||
baseMapper.updateCuMemberSettlePointAssess(settleTableName, assessTableName);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,20 +1,11 @@
|
|||
package com.hzs.bonus.bonus.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.bonus.bonus.param.BdWaresBonusParam;
|
||||
import com.hzs.common.domain.member.bonus.BdWaresBonus;
|
||||
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 特殊商品分配奖金 Mapper 接口
|
||||
*/
|
||||
public interface BdWaresBonusMapper extends BaseMapper<BdWaresBonus> {
|
||||
|
||||
/*
|
||||
* 查询特殊品奖金配置
|
||||
**/
|
||||
List<BdWaresBonusExt> querySpecialWaresBonus(BdWaresBonusParam waresBonusParam);
|
||||
|
||||
}
|
||||
|
|
|
@ -7,12 +7,7 @@ import java.math.BigDecimal;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description: 商品奖金配置表
|
||||
* @author: sui q
|
||||
* @time: 2024/11/7 09:46
|
||||
* @classname: BdWaresBonusParam
|
||||
* @package_name: com.hzs.bonus.bonus.param
|
||||
* version 1.0.0
|
||||
* 商品奖金配置表
|
||||
*/
|
||||
@Data
|
||||
public class BdWaresBonusParam implements Serializable {
|
||||
|
|
|
@ -1,20 +1,11 @@
|
|||
package com.hzs.bonus.bonus.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.bonus.bonus.param.BdWaresBonusParam;
|
||||
import com.hzs.common.domain.member.bonus.BdWaresBonus;
|
||||
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 特殊商品分配奖金 服务类
|
||||
*/
|
||||
public interface IBdWaresBonusService extends IService<BdWaresBonus> {
|
||||
|
||||
/*
|
||||
* 查询特殊品奖金配置
|
||||
**/
|
||||
List<BdWaresBonusExt> querySpecialWaresBonus(BdWaresBonusParam waresBonusParam);
|
||||
|
||||
}
|
||||
|
|
|
@ -26,12 +26,7 @@ public interface IBonusSettleService {
|
|||
void calculateCuMemberBonus(String date, List<SaOrderExt> saOrderExtList);
|
||||
|
||||
/*
|
||||
* @description: 根据订单实时计算奖衔
|
||||
**/
|
||||
void calculateCuMemberRangAwardsBySaOrder(String orderCode);
|
||||
|
||||
/*
|
||||
* @description: 4-n配置修改后,重算首购奖金
|
||||
* 4-n配置修改后,重算首购奖金
|
||||
**/
|
||||
void repeatCuMemberBonusByExpand(String settleDate, List<SaOrderExt> saOrderExtList);
|
||||
}
|
||||
|
|
|
@ -2,23 +2,14 @@ package com.hzs.bonus.bonus.service.impl;
|
|||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.bonus.mapper.BdWaresBonusMapper;
|
||||
import com.hzs.bonus.bonus.param.BdWaresBonusParam;
|
||||
import com.hzs.bonus.bonus.service.IBdWaresBonusService;
|
||||
import com.hzs.common.domain.member.bonus.BdWaresBonus;
|
||||
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 特殊商品分配奖金 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class BdWaresBonusServiceImpl extends ServiceImpl<BdWaresBonusMapper, BdWaresBonus> implements IBdWaresBonusService {
|
||||
|
||||
@Override
|
||||
public List<BdWaresBonusExt> querySpecialWaresBonus(BdWaresBonusParam waresBonusParam) {
|
||||
return baseMapper.querySpecialWaresBonus(waresBonusParam);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -858,71 +858,6 @@ public class BonusSettleFirstPurchaseHandle extends BonusSettleHandle {
|
|||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算报单服务费
|
||||
* 车奖 全球分红 有奖衔的会员,复购考核通过的,根据对应奖衔可拿代数配置拿下面代数的(推荐+拓展+领导+分红)奖金合计为基数的相应代数的比率(配置值)
|
||||
* 跟领导奖一样的算法,不算启动卡
|
||||
*
|
||||
* @param settleDateStr 结算日期
|
||||
* @param period 期间
|
||||
*/
|
||||
List<CuMemberBonusDetail> calculateShareBonus(String settleDateStr, BonusConfigDTO bonusConfigDTO, Integer period,
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap, Map<Long, CuAwardsControl> cuAwardsControlMap) {
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
|
||||
Date settleDate = DateUtils.parseStringToDate(settleDateStr);
|
||||
String currentFirstDate = DateUtils.currentMonthFirstDateStr(settleDate);
|
||||
String beforeMonthLastDate = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, currentFirstDate);
|
||||
// 查询上月最后一天
|
||||
Integer beforeMonthLastPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeMonthLastDate).getPkId();
|
||||
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + beforeMonthLastPeriod;
|
||||
String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + beforeMonthLastPeriod;
|
||||
// 查询上月第一天
|
||||
String beforeMonthFirstDate = DateUtils.beforeMonthFirstDateStr(settleDate);
|
||||
Integer beforeMonthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeMonthFirstDate).getPkId();
|
||||
// 查询上月最后一天会员等级达到奖衔的会员
|
||||
Integer assessPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentFirstDate).getPkId();
|
||||
String assessTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(settleDateStr);
|
||||
// 获取结算日期的第一天的日期
|
||||
// 查询复购考核结果
|
||||
List<CuMemberSettleExt> cuMemberSettleExtList = iCuMemberTreeService.queryMemberSettleByAwards(settleTableName, rangeTableName, beforeMonthFirstPeriod, beforeMonthLastPeriod);
|
||||
if (CollectionUtil.isNotEmpty(cuMemberSettleExtList)) {
|
||||
Map<Long, CuMemberAssess> cuMemberAssessMap = iCuMemberAssessService.queryCuMemberAssessByMember(assessTableName, assessPeriod, EAssessmentType.REPURCHASE_ASSESS.getValue(), cuMemberSettleExtList);
|
||||
for (CuMemberSettleExt targetMemberSettleExt : cuMemberSettleExtList) {
|
||||
SaOrder saOrder = SaOrder.builder().pkId(0L).orderAchieve(BigDecimal.ZERO).build();
|
||||
saOrder.setPkCountry(targetMemberSettleExt.getPkSettleCountry());
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, saOrder, targetMemberSettleExt);
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrder, targetMemberSettleExt, cuMemberBonus);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberSettleExt.getPkSettleCountry(), EBonusItems.DIVIDEND_INCOME.getValue()));
|
||||
// 获取计算比例,根据奖衔获取
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalAchieve(targetMemberSettleExt.getRealIncomeTotal());
|
||||
cuMemberBonusDetail.setCalValue(targetMemberSettleExt.getAbonusRatio());
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(targetMemberSettleExt.getRealIncomeTotal(), targetMemberSettleExt.getAbonusRatio()));
|
||||
shareRemark(cuMemberBonusDetail, settleDateStr);
|
||||
BdBonusDeduct bdBonusDeduct = bonusConfigDTO.getBonusDeductsMap().get(cuMemberBonusDetail.getPkBonusItems());
|
||||
cuMemberBonusDetail.setIncomeTax(BigDecimal.ZERO);
|
||||
cuMemberBonusDetail.setRealIncome(ComputeUtil.computeSubtract(cuMemberBonusDetail.getPretaxIncome(), cuMemberBonusDetail.getIncomeTax()));
|
||||
cuMemberBonusDetail.setPkCountry(targetMemberSettleExt.getPkSettleCountry());
|
||||
cuMemberBonusDetail.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
// if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()
|
||||
// && EYesNo.NO.getIntValue() == targetMemberSettleExt.getPurchaseStatus()) {
|
||||
// // 需要复购考核的
|
||||
// CuMemberAssess cuMemberAssess = cuMemberAssessMap.get(targetMemberSettleExt.getPkMember());
|
||||
// if (cuMemberAssess == null) {
|
||||
// cuMemberBonusDetail.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
// }
|
||||
// }
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setShareIncome(ComputeUtil.computeAdd(cuMemberBonus.getShareIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setFirstPurchaseTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
cuMemberBonusDetailList.add(cuMemberBonusDetail);
|
||||
}
|
||||
}
|
||||
return cuMemberBonusDetailList;
|
||||
}
|
||||
|
||||
void calculateCuMemberBloodAchieveByOrder(String settleTableName, Map<Long, CuMemberSettleExt> cuMemberSettleExtMap,
|
||||
List<SaOrderExt> firPurchaseOrderList, List<SaOrderExt> repurchaseOrderList,
|
||||
List<SaOrderExt> mallOrderList) {
|
||||
|
|
|
@ -1,690 +0,0 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
import com.hzs.common.domain.bonus.BdBonusDeduct;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
import com.hzs.common.domain.member.bonus.*;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAwards;
|
||||
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
|
||||
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.system.config.BdRangeAwards;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 计算乐享极差收益
|
||||
*/
|
||||
@Component
|
||||
public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||
|
||||
@Autowired
|
||||
private ICuMemberRangeService iCuMemberRangeService;
|
||||
@Autowired
|
||||
private ICuMemberAwardsService iCuMemberAwardsService;
|
||||
@Autowired
|
||||
private ICuMemberService iCuMemberService;
|
||||
|
||||
/**
|
||||
* 实时计算当月奖衔
|
||||
*/
|
||||
Map<Long, CuMemberRangeExt> calculateCuMemberRangeAwardsByDay(SaOrderExt saOrderExt, List<BdRangeAwards> rangeAwardsList, String secondRangeTableName, int beforePeriod, int currentPeriod) {
|
||||
String rangeTableName = TableNameConstants.CU_MEMBER_RANGE + beforePeriod;
|
||||
iCuMemberRangeService.mergeMemberSecondRangeByRange(rangeTableName, secondRangeTableName, saOrderExt.getPkMember());
|
||||
// 极差奖衔封装为2个treeMap
|
||||
Map<Integer, BdRangeAwards> consumeRangeAwardsMap = new TreeMap<>();
|
||||
Map<Integer, BdRangeAwards> bloodRangeAwardsMap = new TreeMap<>();
|
||||
packageRangeAwardsByType(rangeAwardsList, consumeRangeAwardsMap, bloodRangeAwardsMap);
|
||||
// 按照血缘,查询该会员所有伞上会员
|
||||
Map<Long, List<CuMemberRangeExt>> parentRangeExtMap = iCuMemberRangeService.queryCuMemberSecondRangeParent(rangeTableName, secondRangeTableName, saOrderExt.getPkMember());
|
||||
Map<Long, CuMemberRangeExt> memberRangeExtMap = getMemberSettle(parentRangeExtMap);
|
||||
// 计算奖衔
|
||||
// 先算团队奖衔,计算完奖金后在计算消费奖衔,计算完奖衔计算奖金
|
||||
// 计算自消费奖衔
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(sourceMemberRangeExt.getPkParent());
|
||||
// 个人累计消费pv
|
||||
sourceMemberRangeExt.setConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
sourceMemberRangeExt.setNewPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getNewPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
// 个人月消费pv,当月会员且当月有消费,推荐有效数量+1
|
||||
if (sourceMemberRangeExt.getMonthMember() == EYesNo.YES.getIntValue() && ComputeUtil.compareEqual(sourceMemberRangeExt.getMonthPv(), BigDecimal.ZERO)) {
|
||||
targetMemberRangeExt.setEffectiveNum(targetMemberRangeExt.getEffectiveNum() + 1);
|
||||
targetMemberRangeExt.setNewEffectiveNum(targetMemberRangeExt.getNewEffectiveNum() + 1);
|
||||
}
|
||||
sourceMemberRangeExt.setMonthPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
// 奖衔升级记录
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
// 消费奖衔
|
||||
cuMemberAwardsList.addAll(calculateConsumeRangeAwards(currentPeriod, parentRangeExtMap, memberRangeExtMap, rangeTableName, sourceMemberRangeExt, saOrderExt, consumeRangeAwardsMap));
|
||||
// 团队奖衔
|
||||
cuMemberAwardsList.addAll(calculateBloodRangeAwards(currentPeriod, parentRangeExtMap, memberRangeExtMap, rangeTableName, saOrderExt, bloodRangeAwardsMap, sourceMemberRangeExt.getPkParent(), secondRangeTableName));
|
||||
if (cuMemberAwardsList.size() > 0) {
|
||||
iCuMemberAwardsService.saveBatchCuMemberAwards(cuMemberAwardsList);
|
||||
// 更新会员表,更新奖衔
|
||||
iCuMemberService.updateCuMemberRangeByPeriod(cuMemberAwardsList, currentPeriod);
|
||||
}
|
||||
return memberRangeExtMap;
|
||||
}
|
||||
|
||||
void calculateRangeEvBonus(Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberRangeExt> memberRangeExtMap, List<CuMemberBonusPush> cuMemberBonusPushList, List<BdWaresBonusExt> bdWaresBonusExtList, SaOrderExt saOrderExt) {
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
if (ComputeUtil.compareValue(saOrderExt.getOrderAssAchieve(), BigDecimal.valueOf(15.625))) {
|
||||
// 1= 自己购买了11单 2= 上3代拿 100 200 300 上3代各拿100 上11代各拿1100
|
||||
int specialWaresState = 0;
|
||||
BdWaresBonusExt calWaresBonusExt = null;
|
||||
for (SaOrderItemsExt saOrderItemsExt : saOrderExt.getOrderItemsExtList()) {
|
||||
boolean flag = Boolean.FALSE;
|
||||
if (bdWaresBonusExtList != null && bdWaresBonusExtList.size() > 0) {
|
||||
for (BdWaresBonusExt bdWaresBonusExt : bdWaresBonusExtList) {
|
||||
if (bdWaresBonusExt.getPkWares().equals(saOrderItemsExt.getPkWares())) {
|
||||
specialWaresState = 2;
|
||||
flag = Boolean.TRUE;
|
||||
calWaresBonusExt = bdWaresBonusExt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flag) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (specialWaresState > 0) {
|
||||
sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + calWaresBonusExt.getTotalAlgebra());
|
||||
int algebra = 0;
|
||||
for (BdWaresBonusItems bdWaresBonusItems : calWaresBonusExt.getBdWaresBonusItemsList()) {
|
||||
CuMemberBonusPush cuMemberBonusPush = calculatePushBonusOne(sourceMemberRangeExt, memberRangeExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt,
|
||||
bdWaresBonusItems.getAlgebra() - algebra, bdWaresBonusItems.getAssAchieve(), cuMemberBonusPushList);
|
||||
if (cuMemberBonusPush != null) {
|
||||
sourceMemberRangeExt = memberRangeExtMap.get(cuMemberBonusPush.getPkBonus());
|
||||
algebra = bdWaresBonusItems.getAlgebra();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sourceMemberRangeExt.setBuyEffectiveNum(sourceMemberRangeExt.getBuyEffectiveNum() + 1);
|
||||
calculatePushBonusOne(sourceMemberRangeExt, memberRangeExtMap, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt,
|
||||
sourceMemberRangeExt.getBuyEffectiveNum(), saOrderExt.getOrderAssAchieve(), cuMemberBonusPushList);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void packageRangeAwardsByType(List<BdRangeAwards> rangeAwardsList, Map<Integer, BdRangeAwards> consumeRangeAwardsMap, Map<Integer, BdRangeAwards> bloodRangeAwardsMap) {
|
||||
for (BdRangeAwards bdRangeAwards : rangeAwardsList) {
|
||||
if (ComputeUtil.compareValue(bdRangeAwards.getConsumePv())) {
|
||||
consumeRangeAwardsMap.put(bdRangeAwards.getAwardsValue(), bdRangeAwards);
|
||||
}
|
||||
if (ComputeUtil.compareValue(bdRangeAwards.getTeamConsumeCheck())) {
|
||||
bloodRangeAwardsMap.put(bdRangeAwards.getAwardsValue(), bdRangeAwards);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 先计算奖衔,奖衔计算分为2种,先计算自己消费足够的,S1-S3,S4以上的另一种方式,自消费的只有购买人,其他的都是根据业绩,注意,有人可以直接是S4
|
||||
* 先验证团队业绩,小区业绩,验证小市场需要从上往下走 s1只能通过自消费,除了购买人其他人丛S2开始升级
|
||||
* 计算个人消费奖项
|
||||
**/
|
||||
public List<CuMemberAwards> calculateConsumeRangeAwards(Integer period, Map<Long, List<CuMemberRangeExt>> parentRangeExtMap, Map<Long, CuMemberRangeExt> memberRangeExtMap, String rangeTableName,
|
||||
CuMemberRangeExt sourceMemberRangeExt, SaOrderExt saOrderExt,
|
||||
Map<Integer, BdRangeAwards> consumeRangeAwardsMap) {
|
||||
int rangeAwardsValue = 2;
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
while (consumeRangeAwardsMap.containsKey(sourceMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue)) {
|
||||
// 验证pv是否满足
|
||||
BdRangeAwards bdRangeAwards = consumeRangeAwardsMap.get(sourceMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue);
|
||||
if (ComputeUtil.compareValue(sourceMemberRangeExt.getTeamConsumePv(), bdRangeAwards.getTeamConsumeCheck()) &&
|
||||
ComputeUtil.compareValue(sourceMemberRangeExt.getConsumePv(), bdRangeAwards.getConsumePv())) {
|
||||
// 去结算表种查询该会员下所有会员,会员团队业绩+消费业绩是业绩 计算小区业绩 团队业绩-小区业绩 验证小区、直推必有一种
|
||||
// 如果需要验证小区
|
||||
if (ComputeUtil.compareValue(bdRangeAwards.getCommunityCheck())) {
|
||||
List<CuMemberRangeExt> cuMemberRangeExtList = iCuMemberRangeService.queryCuMemberRangeExtByParent(rangeTableName, sourceMemberRangeExt.getPkMember(), saOrderExt.getPayTime());
|
||||
// 需要验证团队业绩,小区业绩
|
||||
if (calculateAwards(parentRangeExtMap, memberRangeExtMap, sourceMemberRangeExt, bdRangeAwards, cuMemberRangeExtList, false)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
cuMemberAwardsList.add(getCuMemberAwards(sourceMemberRangeExt, period, saOrderExt, bdRangeAwards));
|
||||
sourceMemberRangeExt.setPkRangeAwards(bdRangeAwards.getPkId());
|
||||
sourceMemberRangeExt.setPkAwards(bdRangeAwards.getPkAwards());
|
||||
sourceMemberRangeExt.setRangeAwardsValue(bdRangeAwards.getAwardsValue());
|
||||
rangeAwardsValue += 2;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 当月有消费,修改为考核通过
|
||||
if (sourceMemberRangeExt.getMonthMember() == EYesNo.YES.getIntValue() && ComputeUtil.compareValue(sourceMemberRangeExt.getMonthPv())) {
|
||||
sourceMemberRangeExt.setAssessStatus(EAssessStatus.EXAMINE_PASS.getValue());
|
||||
}
|
||||
sourceMemberRangeExt.setConsumeStatus(EYesNo.YES.getIntValue());
|
||||
return cuMemberAwardsList;
|
||||
}
|
||||
|
||||
/*
|
||||
* 计算团队极差奖衔
|
||||
**/
|
||||
public List<CuMemberAwards> calculateBloodRangeAwards(Integer period, Map<Long, List<CuMemberRangeExt>> parentRangeExtMap, Map<Long, CuMemberRangeExt> memberRangeExtMap, String rangeTableName, SaOrderExt saOrderExt,
|
||||
Map<Integer, BdRangeAwards> bloodRangeAwardsMap, long pkParent, String secondRangeTableName) {
|
||||
// 计算血缘奖衔,一级一级升级,分为2段,s2、s3 一级,s3以上一级,先验证团队总业绩,
|
||||
// 小市场先验证目前小市场加新增是否满足,满足计算,不满足不计算,不满足小市场先累计,算小市场,每天最终计算完毕重新计算S1以上小市场
|
||||
List<CuMemberAwards> cuMemberAwardsList = new ArrayList<>();
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
// 无效会员不累计业绩,当月会员有消费,上月会员考核通过
|
||||
if (EYesNo.YES.getIntValue() == targetMemberRangeExt.getConsumeStatus()) {
|
||||
targetMemberRangeExt.setTeamConsumeAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumeAmount(), saOrderExt.getOrderAmount()));
|
||||
targetMemberRangeExt.setTeamConsumePv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
targetMemberRangeExt.setTeamMonthAmount(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthAmount(), saOrderExt.getOrderAmount()));
|
||||
targetMemberRangeExt.setTeamMonthPv(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
targetMemberRangeExt.setNewTeamPv(ComputeUtil.computeAdd(targetMemberRangeExt.getNewTeamPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
|
||||
sourceMemberRangeExt.setDeptTeamConsumeAmount(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamConsumeAmount(), saOrderExt.getOrderAmount()));
|
||||
sourceMemberRangeExt.setDeptTeamConsumePv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamConsumePv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
sourceMemberRangeExt.setDeptTeamMonthAmount(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamMonthAmount(), saOrderExt.getOrderAmount()));
|
||||
sourceMemberRangeExt.setDeptTeamMonthPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptTeamMonthPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
sourceMemberRangeExt.setDeptNewTeamPv(ComputeUtil.computeAdd(sourceMemberRangeExt.getDeptNewTeamPv(), ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve())));
|
||||
}
|
||||
if (targetMemberRangeExt.getAssessStatus() == EAssessStatus.EXAMINE_PASS.getValue()) {
|
||||
int rangeAwardsValue = 2;
|
||||
while (bloodRangeAwardsMap.containsKey(targetMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue)) {
|
||||
// 验证pv是否满足
|
||||
BdRangeAwards bdRangeAwards = bloodRangeAwardsMap.get(targetMemberRangeExt.getRangeAwardsValue() + rangeAwardsValue);
|
||||
if (ComputeUtil.compareValue(targetMemberRangeExt.getTeamConsumePv(), bdRangeAwards.getTeamConsumeCheck())) {
|
||||
// 去结算表种查询该会员下所有会员,会员团队业绩+消费业绩是业绩 计算小区业绩 团队业绩-小区业绩 验证小区、直推必有一种
|
||||
List<CuMemberRangeExt> cuMemberRangeExtList;
|
||||
if (secondRangeTableName != null) {
|
||||
cuMemberRangeExtList = iCuMemberRangeService.querySecondCuMemberRangeExtByParent(rangeTableName, secondRangeTableName, targetMemberRangeExt.getPkMember());
|
||||
} else {
|
||||
cuMemberRangeExtList = iCuMemberRangeService.queryCuMemberRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember(), saOrderExt.getPayTime());
|
||||
}
|
||||
if (cuMemberRangeExtList.size() > 0) {
|
||||
if (calculateAwards(parentRangeExtMap, memberRangeExtMap, targetMemberRangeExt, bdRangeAwards, cuMemberRangeExtList, true)) {
|
||||
break;
|
||||
}
|
||||
// 验证血缘部门,需要有几个部门大于考核等级,数据库验证一次,
|
||||
// 当日的实时奖衔,这个位置直接在会员表中计算就可以
|
||||
if (bdRangeAwards.getPlaceNum() > 0) {
|
||||
if (secondRangeTableName != null) {
|
||||
iCuMemberRangeService.mergeSecondCuMemberRangeExt(secondRangeTableName, parentRangeExtMap.get(targetMemberRangeExt.getPkMember()));
|
||||
// 验证
|
||||
Integer placeNum = iCuMemberRangeService.validateSecondCuMemberPlaceAwards(secondRangeTableName, cuMemberRangeExtList, bdRangeAwards.getCheckAwards());
|
||||
if (bdRangeAwards.getPlaceNum() > placeNum) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// 更新网体,更新伞下
|
||||
iCuMemberRangeService.mergeCuMemberRangeExt(rangeTableName, parentRangeExtMap.get(targetMemberRangeExt.getPkMember()));
|
||||
// 验证
|
||||
Integer placeNum = iCuMemberRangeService.validateCuMemberPlaceAwards(rangeTableName, cuMemberRangeExtList, bdRangeAwards.getCheckAwards(), saOrderExt.getPayTime());
|
||||
if (bdRangeAwards.getPlaceNum() > placeNum) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cuMemberAwardsList.add(getCuMemberAwards(targetMemberRangeExt, period, saOrderExt, bdRangeAwards));
|
||||
targetMemberRangeExt.setPkRangeAwards(bdRangeAwards.getPkId());
|
||||
targetMemberRangeExt.setPkAwards(bdRangeAwards.getPkAwards());
|
||||
targetMemberRangeExt.setRangeAwardsValue(bdRangeAwards.getAwardsValue());
|
||||
rangeAwardsValue += 2;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
sourceMemberRangeExt = targetMemberRangeExt;
|
||||
}
|
||||
return cuMemberAwardsList;
|
||||
}
|
||||
|
||||
/*
|
||||
* 计算奖衔,验证小区业绩和推荐数量是否满足
|
||||
**/
|
||||
private boolean calculateAwards(Map<Long, List<CuMemberRangeExt>> parentRangeExtMap, Map<Long, CuMemberRangeExt> memberRangeExtMap, CuMemberRangeExt targetMemberRangeExt, BdRangeAwards bdRangeAwards, List<CuMemberRangeExt> cuMemberRangeExtList, Boolean isRecommend) {
|
||||
BigDecimal bigAreaPv = BigDecimal.ZERO;
|
||||
Integer recommendNum = 0;
|
||||
for (CuMemberRangeExt cuMemberRangeExt : cuMemberRangeExtList) {
|
||||
if (parentRangeExtMap.containsKey(cuMemberRangeExt.getPkParent())) {
|
||||
parentRangeExtMap.get(cuMemberRangeExt.getPkParent()).add(cuMemberRangeExt);
|
||||
} else {
|
||||
List<CuMemberRangeExt> memberRangeExtList = new ArrayList<>();
|
||||
memberRangeExtList.add(cuMemberRangeExt);
|
||||
parentRangeExtMap.put(cuMemberRangeExt.getPkParent(), memberRangeExtList);
|
||||
}
|
||||
if (memberRangeExtMap.containsKey(cuMemberRangeExt.getPkMember())) {
|
||||
cuMemberRangeExt = memberRangeExtMap.get(cuMemberRangeExt.getPkMember());
|
||||
}
|
||||
// 团队业绩+个人业绩
|
||||
BigDecimal validatePv = ComputeUtil.computeAdd(cuMemberRangeExt.getDeptTeamConsumePv(), cuMemberRangeExt.getConsumePv());
|
||||
if (ComputeUtil.compareValue(validatePv, bigAreaPv)) {
|
||||
bigAreaPv = validatePv;
|
||||
}
|
||||
// 有效的,等级满足的算推荐数量、验证部门数量的 需要走语句
|
||||
if (cuMemberRangeExt.getAssessStatus() == EAssessStatus.EXAMINE_PASS.getValue() && bdRangeAwards.getCheckAwards() <= cuMemberRangeExt.getPkRangeAwards()) {
|
||||
recommendNum += 1;
|
||||
}
|
||||
}
|
||||
// 小区业绩
|
||||
BigDecimal communityCheck = ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamConsumePv(), bigAreaPv);
|
||||
// 验证小区,验证失败
|
||||
if (ComputeUtil.compareGreaterThan(bdRangeAwards.getCommunityCheck(), communityCheck)) {
|
||||
return true;
|
||||
}
|
||||
// 验证推荐
|
||||
return isRecommend && bdRangeAwards.getRecommendNum() > recommendNum;
|
||||
}
|
||||
|
||||
/*
|
||||
* 计算幸运奖,先计算有效代数,所有有效代数均分,比例10%
|
||||
**/
|
||||
CuMemberBonusCoach calculateLuckPushBonus(Map<Long, CuMemberRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO,
|
||||
Integer period, SaOrderExt saOrderExt) {
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
// 计算代数
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
if (ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
|
||||
EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus()) {
|
||||
continue;
|
||||
}
|
||||
// 验证推荐有效代数是否大于当前代数
|
||||
if (targetMemberRangeExt.getEffectiveNum() >= 1 && EAssessStatus.EXAMINE_PASS.getValue() == targetMemberRangeExt.getAssessStatus()) {
|
||||
getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
CuMemberBonusCoach cuMemberBonusCoach = getCuMemberBonusCoach(bonusConfigDTO, saOrderExt, 1, targetMemberRangeExt);
|
||||
BigDecimal bonusRatio = BigDecimal.valueOf(10);
|
||||
cuMemberBonusCoach.setCoachGeneration(1);
|
||||
cuMemberBonusCoach.setCalValue(bonusRatio);
|
||||
cuMemberBonusCoach.setPretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusCoach.getCalAchieve(), bonusRatio));
|
||||
CuMemberBonus cuMemberBonus = cuMemberBonusMap.get(cuMemberBonusCoach.getPkBonus());
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusCoach, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
coachRangeRemark(saOrderExt, cuMemberBonusCoach, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusCoach.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudDirectIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudDirectIncome(), cuMemberBonusCoach.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusCoach);
|
||||
}
|
||||
return cuMemberBonusCoach;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/*
|
||||
* 计算极差收益,根据极差收益计算平级收益
|
||||
**/
|
||||
List<CuMemberBonusRange> calculateRangeBonus(Map<Long, CuMemberRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap, BonusConfigDTO bonusConfigDTO,
|
||||
Integer period, SaOrderExt saOrderExt, List<BdRangeAwards> rangeAwardsList, List<CuMemberBonusDetail> cuMemberBonusDetailList) {
|
||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||
// 用等级计算,按照一级级算
|
||||
BigDecimal bonusRatio = BigDecimal.ZERO;
|
||||
CuMemberRangeExt sourceMemberRangeExt = memberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
int i = 0;
|
||||
boolean storeFlag = Boolean.TRUE;
|
||||
// 计算极差
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
||||
ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
|
||||
EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) {
|
||||
continue;
|
||||
}
|
||||
// 计算店铺收益
|
||||
if (storeFlag && targetMemberRangeExt.getRangeStoreStatus() == 2) {
|
||||
cuMemberBonusDetailList.add(calculateRangeStoreBonusOne(memberRangeExtMap, targetMemberRangeExt, bonusConfigDTO, period, cuMemberBonusMap, saOrderExt));
|
||||
storeFlag = Boolean.FALSE;
|
||||
}
|
||||
for (int j = i; j < rangeAwardsList.size(); j++) {
|
||||
BdRangeAwards bdRangeAwards = rangeAwardsList.get(j);
|
||||
if (targetMemberRangeExt.getPkRangeAwards().equals(bdRangeAwards.getPkId())) {
|
||||
bonusRatio = ComputeUtil.computeSubtract(bdRangeAwards.getRangeRatio(), bonusRatio);
|
||||
if (ComputeUtil.compareValue(bonusRatio)) {
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_FIRST_PURCHASE.getValue());
|
||||
CuMemberBonusRange cuMemberBonusRange = getCuMemberBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
|
||||
cuMemberBonusRange.setCalValue(bonusRatio);
|
||||
cuMemberBonusRange.setPretaxIncome(ComputeUtil.computeBonusMultiply(saOrderExt.getOrderAchieve(), bonusRatio));
|
||||
cuMemberBonusRange.setPkRange(targetMemberRangeExt.getPkRangeAwards());
|
||||
cuMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkRangeAwards());
|
||||
cuMemberBonusRange.setPkOrderItems(0L);
|
||||
rangeRemark(saOrderExt, cuMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusRange.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudPurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudPurIncome(), cuMemberBonusRange.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusRange);
|
||||
}
|
||||
memberBonusRangeList.add(cuMemberBonusRange);
|
||||
bonusRatio = bdRangeAwards.getRangeRatio();
|
||||
sourceMemberRangeExt = targetMemberRangeExt;
|
||||
}
|
||||
j++;
|
||||
i = j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i >= rangeAwardsList.size()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// 根据极差奖金计算平级奖金
|
||||
List<CuMemberBonusRange> memberOrdBonusRangeList = new ArrayList<>();
|
||||
for (CuMemberBonusRange cuMemberBonusRange : memberBonusRangeList) {
|
||||
sourceMemberRangeExt = memberRangeExtMap.get(cuMemberBonusRange.getPkBonus());
|
||||
pkParent = sourceMemberRangeExt.getPkParent();
|
||||
// 拿2次平级
|
||||
int oriLevel = 0;
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = memberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
if (EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
||||
ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() ||
|
||||
EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) {
|
||||
continue;
|
||||
}
|
||||
if (oriLevel < 2) {
|
||||
if (targetMemberRangeExt.getPkRangeAwards().equals(sourceMemberRangeExt.getPkRangeAwards())) {
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
int pkBonusItems = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_REPURCHASE.getValue());
|
||||
CuMemberBonusRange oriMemberBonusRange = getCuMemberBonusRange(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItems);
|
||||
oriMemberBonusRange.setCalAchieve(cuMemberBonusRange.getPretaxIncome());
|
||||
oriMemberBonusRange.setCalValue(BigDecimal.valueOf(10));
|
||||
oriMemberBonusRange.setPretaxIncome(ComputeUtil.computeBonusMultiply(oriMemberBonusRange.getCalAchieve(), oriMemberBonusRange.getCalValue()));
|
||||
oriMemberBonusRange.setPkRange(targetMemberRangeExt.getPkRangeAwards());
|
||||
oriMemberBonusRange.setPkBeforeRange(sourceMemberRangeExt.getPkRangeAwards());
|
||||
oriMemberBonusRange.setPkOrderItems(0L);
|
||||
oriRangeRemark(saOrderExt, oriMemberBonusRange, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, oriMemberBonusRange, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == oriMemberBonusRange.getIncomeStatus()) {
|
||||
cuMemberBonus.setCloudRepurIncome(ComputeUtil.computeAdd(cuMemberBonus.getCloudRepurIncome(), oriMemberBonusRange.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, oriMemberBonusRange);
|
||||
}
|
||||
memberOrdBonusRangeList.add(oriMemberBonusRange);
|
||||
oriLevel++;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (memberOrdBonusRangeList.size() > 0) {
|
||||
memberBonusRangeList.addAll(memberOrdBonusRangeList);
|
||||
}
|
||||
return memberBonusRangeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算某条订单的推荐奖金
|
||||
*/
|
||||
CuMemberBonusPush calculatePushBonusOne(CuMemberRangeExt sourceMemberRangeExt, Map<Long, CuMemberRangeExt> cuMemberRangeExtMap, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
SaOrderExt saOrderExt, int algebra, BigDecimal orderAssAchieve, List<CuMemberBonusPush> cuMemberBonusPushList) {
|
||||
if (sourceMemberRangeExt == null) {
|
||||
return null;
|
||||
}
|
||||
if (algebra >= 12) {
|
||||
return null;
|
||||
}
|
||||
long pkParent = sourceMemberRangeExt.getPkParent();
|
||||
int i = 1;
|
||||
while (true) {
|
||||
CuMemberRangeExt targetMemberRangeExt = cuMemberRangeExtMap.get(pkParent);
|
||||
if (targetMemberRangeExt == null) {
|
||||
break;
|
||||
}
|
||||
pkParent = targetMemberRangeExt.getPkParent();
|
||||
if (i < algebra) {
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
// 死点没有奖金,自身没有购买没有奖金
|
||||
if (ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
||||
targetMemberRangeExt.getBuyEffectiveNum() <= 0 || EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) {
|
||||
// 记录烧伤记录
|
||||
targetMemberRangeExt.setIncomeStatus(EBonusIncomeStatus.FIRE_BURN.getValue());
|
||||
}
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue())) {
|
||||
continue;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
// 直推奖金明细
|
||||
int pkBonusItem = getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.HELP_EACH_INCOME.getValue());
|
||||
CuMemberBonusPush cuMemberBonusPush = getCuMemberBonusPush(saOrderExt, targetMemberRangeExt, cuMemberBonus, pkBonusItem);
|
||||
cuMemberBonusPush.setCalType(ECalType.VALUE.getValue());
|
||||
// 前2代买的有特殊规则
|
||||
if (algebra == 1) {
|
||||
// 第一代前三单需要自购一单,从第四单开始需要自动二单,需要验证是否买了第二单
|
||||
if (targetMemberRangeExt.getFirstAgent() >= 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 1) {
|
||||
continue;
|
||||
}
|
||||
targetMemberRangeExt.setFirstAgent(targetMemberRangeExt.getFirstAgent() + 1);
|
||||
cuMemberBonusPush.setSecond(targetMemberRangeExt.getFirstAgent());
|
||||
} else if (algebra == 2) {
|
||||
if (targetMemberRangeExt.getSecondAgent() < 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 1) {
|
||||
continue;
|
||||
} else if (targetMemberRangeExt.getSecondAgent() >= 3 && targetMemberRangeExt.getBuyEffectiveNum() <= 2) {
|
||||
continue;
|
||||
}
|
||||
targetMemberRangeExt.setSecondAgent(targetMemberRangeExt.getSecondAgent() + 1);
|
||||
cuMemberBonusPush.setSecond(targetMemberRangeExt.getSecondAgent());
|
||||
} else {
|
||||
if (targetMemberRangeExt.getBuyEffectiveNum() < algebra) {
|
||||
continue;
|
||||
}
|
||||
cuMemberBonusPush.setSecond(-1);
|
||||
}
|
||||
cuMemberBonusPush.setRound(algebra);
|
||||
cuMemberBonusPush.setCalAchieve(orderAssAchieve);
|
||||
cuMemberBonusPush.setCalValue(BigDecimal.ONE);
|
||||
cuMemberBonusPush.setPretaxIncome(orderAssAchieve);
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusPush, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
recommendRangeRemark(saOrderExt, cuMemberBonusPush, cuMemberRangeExtMap, targetMemberRangeExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusPush.getIncomeStatus()) {
|
||||
cuMemberBonus.setRepurPushIncome(ComputeUtil.computeAdd(cuMemberBonus.getRepurPushIncome(), cuMemberBonusPush.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusPush);
|
||||
}
|
||||
cuMemberBonusPushList.add(cuMemberBonusPush);
|
||||
if (targetMemberRangeExt.getIncomeStatus() == EBonusIncomeStatus.NORMAL.getValue()) {
|
||||
return cuMemberBonusPush;
|
||||
} else {
|
||||
cuMemberBonusPush.setSecond(-1);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算服务中心奖
|
||||
*/
|
||||
CuMemberBonusDetail calculateRangeStoreBonusOne(Map<Long, CuMemberRangeExt> cuMemberRangeExtMap, CuMemberRangeExt targetMemberRangeExt, BonusConfigDTO bonusConfigDTO, Integer period, Map<Long, CuMemberBonus> cuMemberBonusMap, SaOrderExt saOrderExt) {
|
||||
CuMemberRangeExt sourceMemberRangeExt = cuMemberRangeExtMap.get(saOrderExt.getPkMember());
|
||||
if (targetMemberRangeExt == null || ECategory.NORMAL.getValue() != targetMemberRangeExt.getCategory() || EAccountStatus.STOP_INCOME.getValue() == targetMemberRangeExt.getAccountStatus() ||
|
||||
EAssessStatus.EXAMINE_PASS.getValue() != targetMemberRangeExt.getAssessStatus()) {
|
||||
return null;
|
||||
}
|
||||
// 验证是否有奖金
|
||||
if (validatePkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue())) {
|
||||
return null;
|
||||
}
|
||||
CuMemberBonus cuMemberBonus = getCuMemberBonus(period, cuMemberBonusMap, targetMemberRangeExt.getPkMember(),
|
||||
targetMemberRangeExt.getIncomeStatus(), targetMemberRangeExt.getPkSettleCountry(), targetMemberRangeExt.getPkRate());
|
||||
CuMemberBonusDetail cuMemberBonusDetail = getCuMemberBonusDetail(saOrderExt, targetMemberRangeExt, cuMemberBonus);
|
||||
BigDecimal serviceRadio = BigDecimal.valueOf(5);
|
||||
// 计算比例
|
||||
cuMemberBonusDetail.setCalValue(serviceRadio);
|
||||
cuMemberBonusDetail.setPkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.STORE_INCOME.getValue()));
|
||||
cuMemberBonusDetail.setPretaxIncome(ComputeUtil.computeBonusMultiply(cuMemberBonusDetail.getCalAchieve(), serviceRadio));
|
||||
// 收益占比
|
||||
BdBonusDeduct bdBonusDeduct = setBonusDetailDeduct(bonusConfigDTO, cuMemberBonusDetail, saOrderExt.getOrderAmount(), saOrderExt.getInExchangeRate());
|
||||
rangeServiceRemark(saOrderExt, cuMemberBonusDetail, sourceMemberRangeExt, targetMemberRangeExt);
|
||||
if (EBonusIncomeStatus.NORMAL.getValue() == cuMemberBonusDetail.getIncomeStatus()) {
|
||||
cuMemberBonus.setStoreIncome(ComputeUtil.computeAdd(cuMemberBonus.getStoreIncome(), cuMemberBonusDetail.getPretaxIncome()));
|
||||
setCloudTotal(bdBonusDeduct, cuMemberBonus, cuMemberBonusDetail);
|
||||
}
|
||||
return cuMemberBonusDetail;
|
||||
}
|
||||
|
||||
CuMemberBonusPush getCuMemberBonusPush(SaOrderExt saOrderExt, CuMemberRangeExt cuMemberRangeExt, CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
||||
CuMemberBonusPush cuMemberBonusPush = CuMemberBonusPush.builder()
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.pkBonusItems(pkBonusItems)
|
||||
// 正常还是烧伤
|
||||
.incomeStatus(cuMemberRangeExt.getIncomeStatus())
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.round(-1)
|
||||
.second(-1)
|
||||
.build();
|
||||
cuMemberBonusPush.setPkCountry(cuMemberRangeExt.getPkSettleCountry());
|
||||
cuMemberBonusPush.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
return cuMemberBonusPush;
|
||||
}
|
||||
|
||||
protected CuMemberBonusCoach getCuMemberBonusCoach(BonusConfigDTO bonusConfigDTO, SaOrderExt saOrderExt,
|
||||
int i, CuMemberRangeExt targetMemberRangeExt) {
|
||||
CuMemberBonusCoach cuMemberBonusCoach = CuMemberBonusCoach.builder()
|
||||
.pkBonus(targetMemberRangeExt.getPkMember())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonusItems(getPkBonusItems(bonusConfigDTO, targetMemberRangeExt.getPkSettleCountry(), EBonusItems.CLOUD_AGENT_DIRECT_PUSH.getValue()))
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
|
||||
.calAchieve(saOrderExt.getOrderAchieve())
|
||||
.currentGeneration(i)
|
||||
// 计算比例
|
||||
.calValue(BigDecimal.ZERO)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.coachNoCapping(BigDecimal.ZERO)
|
||||
.coachCapping(BigDecimal.ZERO)
|
||||
.coachNormalHalf(BigDecimal.ZERO)
|
||||
.coachNormalReal(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberBonusCoach.setPkCountry(targetMemberRangeExt.getPkSettleCountry());
|
||||
cuMemberBonusCoach.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
return cuMemberBonusCoach;
|
||||
}
|
||||
|
||||
private CuMemberBonusRange getCuMemberBonusRange(SaOrderExt saOrderExt, CuMemberRangeExt targetMemberRangeExt,
|
||||
CuMemberBonus cuMemberBonus, Integer pkBonusItems) {
|
||||
CuMemberBonusRange cuMemberBonusRange = CuMemberBonusRange.builder()
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.pkBonusItems(pkBonusItems)
|
||||
// 正常还是烧伤
|
||||
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
|
||||
.calType(ECalType.VALUE.getValue())
|
||||
.calAchieve(saOrderExt.getOrderAchieve())
|
||||
.calValue(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberBonusRange.setPkCountry(targetMemberRangeExt.getPkSettleCountry());
|
||||
cuMemberBonusRange.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
return cuMemberBonusRange;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param memberRangeMap 查询出来的结算数据
|
||||
* 记录需要修改的会员结算表数据, 安置的
|
||||
*/
|
||||
private Map<Long, CuMemberRangeExt> getMemberSettle(Map<Long, List<CuMemberRangeExt>> memberRangeMap) {
|
||||
Map<Long, CuMemberRangeExt> memberRangeExtMap = new HashMap<>();
|
||||
memberRangeMap.forEach((key, memberRangeExtList) -> {
|
||||
memberRangeExtList.forEach(cuMemberSettleExt -> {
|
||||
if (!memberRangeExtMap.containsKey(cuMemberSettleExt.getPkMember())) {
|
||||
memberRangeExtMap.put(cuMemberSettleExt.getPkMember(), cuMemberSettleExt);
|
||||
} else {
|
||||
CuMemberRangeExt cuMemberRangeExt = memberRangeExtMap.get(cuMemberSettleExt.getPkMember());
|
||||
if (cuMemberRangeExt.getNewTeamPv() == null) {
|
||||
cuMemberRangeExt.setNewTeamPv(BigDecimal.ZERO);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
return memberRangeExtMap;
|
||||
}
|
||||
|
||||
private CuMemberAwards getCuMemberAwards(CuMemberRangeExt sourceRangeExt, Integer period, SaOrderExt saOrderExt, BdRangeAwards bdRangeAwards) {
|
||||
CuMemberAwards cuMemberAwards = CuMemberAwards.builder()
|
||||
.pkMember(sourceRangeExt.getPkMember())
|
||||
.period(period)
|
||||
.upType(EUpgradeType.AUTO_UPGRADE.getValue())
|
||||
// 原等级
|
||||
.oldLevel(sourceRangeExt.getPkRangeAwards())
|
||||
.newLevel(bdRangeAwards.getPkId())
|
||||
// 默认不免考
|
||||
.purchaseStatus(EYesNo.NO.getIntValue())
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.build();
|
||||
cuMemberAwards.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberAwards.setPkCountry(saOrderExt.getPkCountry());
|
||||
cuMemberAwards.setCreationTime(saOrderExt.getPayTime());
|
||||
return cuMemberAwards;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param saOrderExt 订单
|
||||
* @param targetMemberRangeExt 奖金网体
|
||||
* @param cuMemberBonus 奖金主表
|
||||
* 奖金明细 报单服务费、分红、云代首购、云代复购、海豆收益
|
||||
* @return: CuMemberBonusDetail
|
||||
*/
|
||||
private CuMemberBonusDetail getCuMemberBonusDetail(SaOrder saOrderExt, CuMemberRangeExt targetMemberRangeExt, CuMemberBonus cuMemberBonus) {
|
||||
CuMemberBonusDetail cuMemberBonusDetail = CuMemberBonusDetail.builder()
|
||||
.pkOrder(saOrderExt.getPkId())
|
||||
.calType(ECalType.RATIO.getValue())
|
||||
.incomeStatus(targetMemberRangeExt.getIncomeStatus())
|
||||
.calAchieve(ComputeUtil.computeAdd(saOrderExt.getOrderAchieve(), saOrderExt.getOrderAssAchieve()))
|
||||
.pkBonus(cuMemberBonus.getPkId())
|
||||
.pretaxIncome(BigDecimal.ZERO)
|
||||
.incomeTax(BigDecimal.ZERO)
|
||||
.realIncome(BigDecimal.ZERO)
|
||||
.incomeRatio(BigDecimal.ZERO)
|
||||
.incomeDialRatio(BigDecimal.ZERO)
|
||||
.orderDialRatio(BigDecimal.ZERO)
|
||||
.build();
|
||||
cuMemberBonusDetail.setPkCountry(targetMemberRangeExt.getPkSettleCountry());
|
||||
cuMemberBonusDetail.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
return cuMemberBonusDetail;
|
||||
}
|
||||
}
|
|
@ -5,24 +5,22 @@ import cn.hutool.core.collection.CollectionUtil;
|
|||
import cn.hutool.json.JSONUtil;
|
||||
import com.hzs.bonus.achieve.param.MemberAchieveParam;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberAchieveService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberRangeService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberTreeService;
|
||||
import com.hzs.bonus.base.service.ICuAwardsControlService;
|
||||
import com.hzs.bonus.base.service.ICuMemberAchieveLogService;
|
||||
import com.hzs.bonus.base.service.ICuMemberService;
|
||||
import com.hzs.bonus.bonus.param.BdWaresBonusParam;
|
||||
import com.hzs.bonus.bonus.param.BonusExpandParam;
|
||||
import com.hzs.bonus.bonus.service.*;
|
||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||
import com.hzs.bonus.bonus.vo.MemberBonusDetailCalVO;
|
||||
import com.hzs.bonus.detail.service.ICuMemberAssessService;
|
||||
import com.hzs.bonus.detail.service.ICuMemberAwardsService;
|
||||
import com.hzs.bonus.risk.service.ICuMemberRiskControlService;
|
||||
import com.hzs.bonus.swing.service.ICuMemberSwingNetLogService;
|
||||
import com.hzs.common.core.config.BdConfig;
|
||||
import com.hzs.common.core.constant.BonusFieldConstants;
|
||||
import com.hzs.common.core.constant.CountryConstants;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.TableNameConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.ComputeUtil;
|
||||
|
@ -31,12 +29,10 @@ import com.hzs.common.core.utils.reflect.ReflectUtils;
|
|||
import com.hzs.common.domain.bonus.risk.CuMemberRiskControl;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberAchieveExt;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRangeExt;
|
||||
import com.hzs.common.domain.member.base.CuAwardsControl;
|
||||
import com.hzs.common.domain.member.base.CuMember;
|
||||
import com.hzs.common.domain.member.bonus.*;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAchieveLog;
|
||||
import com.hzs.common.domain.member.ext.BdWaresBonusExt;
|
||||
import com.hzs.common.domain.member.ext.CuBonusExpandExt;
|
||||
import com.hzs.common.domain.member.ext.CuMemberExt;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
|
@ -45,7 +41,6 @@ import com.hzs.common.domain.member.swing.ext.CuMemberSwingNetExt;
|
|||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.common.domain.system.config.BdGrade;
|
||||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
import com.hzs.member.base.IMemberServiceApi;
|
||||
import com.hzs.sale.order.ISaOrderServiceApi;
|
||||
import com.hzs.system.base.ISystemConfigServiceApi;
|
||||
|
@ -107,8 +102,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
@Autowired
|
||||
private ICuMemberRepeatBonusService iCuMemberRepeatBonusService;
|
||||
@Autowired
|
||||
private IBdWaresBonusService iBdWaresBonusService;
|
||||
@Autowired
|
||||
private ICuBonusExpandService iCuBonusExpandService;
|
||||
@Autowired
|
||||
private ICuMemberBonusService iCuMemberBonusService;
|
||||
|
@ -123,16 +116,12 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
@Autowired
|
||||
private ICuMemberBonusRangeService iCuMemberBonusRangeService;
|
||||
@Autowired
|
||||
private ICuMemberRangeService iCuMemberRangeService;
|
||||
@Autowired
|
||||
private ICuMemberRiskControlService iCuMemberRiskControlService;
|
||||
@Autowired
|
||||
private ICuMemberBonusDelayService iCuMemberBonusDelayService;
|
||||
@Autowired
|
||||
private ICuMemberBonusDelayDetailService iCuMemberBonusDelayDetailService;
|
||||
@Autowired
|
||||
private BonusSettleRangeHandle bonusSettleRangeHandle;
|
||||
@Autowired
|
||||
private BonusSettleFirstPurchaseHandle bonusSettleFirstPurchaseHandle;
|
||||
@Autowired
|
||||
private BonusSettlePurchaseHandle bonusSettlePurchaseHandle;
|
||||
|
@ -142,6 +131,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
private BonusSettleRepCouponsHandle bonusSettleRepCouponsHandle;
|
||||
@Autowired
|
||||
private BonusSettleMallHandle bonusSettleMallHandle;
|
||||
@Autowired
|
||||
private ICuMemberAssessService iCuMemberAssessService;
|
||||
|
||||
// 新拓展处理时间
|
||||
private final String newExpandDate = "2025-06-01";
|
||||
|
@ -400,26 +391,11 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
iCuMemberTreeService.updateCuMemberSecondPlaceParent(secondTableName, settleTableName, yesSettleTableName, saOrderExt.getPkMember(), memberList, EYesNo.YES.getIntValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存会员奖金
|
||||
*
|
||||
* @param cuMemberBonusMap 奖金map
|
||||
* @return: CuMemberBonus 奖金
|
||||
*/
|
||||
protected void saveCuMemberBonus(int period, String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
// 保存奖金
|
||||
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
|
||||
// 插入奖金主表
|
||||
iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
|
||||
List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
|
||||
cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
|
||||
}
|
||||
|
||||
/**
|
||||
* 每日计算会员奖金,最终的奖金
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void calculateCuMemberBonus(String settleDate, List<SaOrderExt> saOrderExtList) {
|
||||
try {
|
||||
// 今天期间
|
||||
|
@ -427,8 +403,8 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 会员结算日表(cu_member_settle) + 期间
|
||||
String currentSettleTableName = TableNameConstants.CU_MEMBER_SETTLE + period;
|
||||
|
||||
// 昨日期间
|
||||
String yesterday = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, settleDate);
|
||||
// 昨日期间
|
||||
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(yesterday).getPkId();
|
||||
|
||||
// 查询日期-1的网体数据,从日历史表中获得
|
||||
|
@ -437,6 +413,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 将结算日昨日业绩数据 迁移到 网体业绩历史记录结算表(cu_member_settle)
|
||||
iCuMemberTreeService.initCuMemberTreeTable(yesterdayTableName, currentSettleTableName);
|
||||
|
||||
// 处理复购考核数据(见点收益) -- 新会员当月、次月免考,本月从复购订单下单时间开始
|
||||
iCuMemberAssessService.initMemberAssess(settleDate, currentSettleTableName);
|
||||
|
||||
// 国家奖衔map
|
||||
Map<String, BdAwards> awardsMap = iAwardsServiceApi.getAwards().getData();
|
||||
// 等级map
|
||||
|
@ -555,18 +534,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap, cuAwardsControlMap);
|
||||
// }
|
||||
|
||||
// // 计算店铺奖金
|
||||
// if (settleDate.endsWith("10")) {
|
||||
// calculateStoreOrder(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
// }
|
||||
// // 计算实际分红奖金
|
||||
// if (settleDate.endsWith("10")) {
|
||||
// calculateShareBonus(settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
// }
|
||||
// // 计算全球积分、车奖积分
|
||||
// // 环球积分和车奖积分的规则。有荣衔,复购考核通过的10代不压缩,以推荐+拓展+领导+分红为合计基数,获取对应比例,比例根据参数配置
|
||||
// calculateGlobalCarBonus(cuMemberSettleExtMap, currentSettleTableName, settleDate, bonusConfigDTO, period, recordDetailVO, cuMemberBonusMap);
|
||||
|
||||
// 保存当日计算的奖金等
|
||||
insertCuMemberBonus(settleDate, period, cuMemberBonusMap, recordDetailVO);
|
||||
// 处理血缘业绩,统计伞下直推
|
||||
|
@ -587,8 +554,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// 迁移网体数据到月表(会员网体月表、会员业绩月表)
|
||||
iCuMemberTreeService.insertCuMemberTreeBySettleDate(settleDate, currentSettleTableName, period);
|
||||
|
||||
// 计算完当日奖金后,根据业绩计算下月奖衔
|
||||
// 计算完当日奖金后,处理下月表初始化
|
||||
Date currentDate = DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.parseStringToDate(settleDate));
|
||||
// 结算日期的后一天
|
||||
String afterDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
|
||||
if (afterDate.endsWith("01")) {
|
||||
// new 不是月奖衔,每月初不更新(月度级差奖衔需要去掉)
|
||||
|
@ -601,9 +569,9 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
// iCuMemberTreeService.updateCuMemberAwardsBySettle(currentSettleTableName, rangeTableName, startPeriod, period);
|
||||
|
||||
// 结算每月月末那一天,都是先删除,在新增,重新考核
|
||||
iCuMemberTreeService.initCuMemberAssessData(settleDate);
|
||||
// iCuMemberTreeService.initCuMemberAssessData(settleDate);
|
||||
// 更新奖衔考核结果
|
||||
iCuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
|
||||
// iCuMemberAwardsService.updateCuMemberAwardsExamine(currentDate, period);
|
||||
|
||||
// 生成月表(cu_member_month)
|
||||
String monthTableName = TableNameConstants.CU_MEMBER_MONTH + DateUtils.getMonth(afterDate);
|
||||
|
@ -624,59 +592,19 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void calculateCuMemberRangAwardsBySaOrder(String orderCode) {
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.DELETE_DATA_BATCH_UPDATE_NUM);
|
||||
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||
SaOrderExt saOrderExt = iSaOrderServiceApi.querySaOrderByDay(DateUtils.currentDate(), DateUtils.afterDate(1, ChronoUnit.DAYS), orderCode).getData();
|
||||
if (saOrderExt != null) {
|
||||
// 处理奖金结算秒结表,判断是否存在当天结算的秒接表,从cu_member中获取网体,从昨日结算表中获取累计、结余数据
|
||||
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
|
||||
String beforeDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, saOrderExt.getPayTime()));
|
||||
int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
int beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDay).getPkId();
|
||||
List<BdRangeAwards> rangeAwardsList = iAwardsServiceApi.queryRangeAwards().getData();
|
||||
String secondRangeTableName = TableNameConstants.CU_MEMBER_RANGE_S + currentPeriod;
|
||||
Map<Long, CuMemberRangeExt> memberRangeExtMap = bonusSettleRangeHandle.calculateCuMemberRangeAwardsByDay(saOrderExt, rangeAwardsList, secondRangeTableName, beforePeriod, currentPeriod);
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
List<CuMemberBonusPush> cuMemberBonusPushList = new ArrayList<>();
|
||||
List<CuMemberBonusCoach> cuMemberBonusCoachList = new ArrayList<>();
|
||||
// 计算奖金,幸运收益、极差收益、平级收益
|
||||
CuMemberBonusCoach cuMemberBonusCoach = bonusSettleRangeHandle.calculateLuckPushBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, currentPeriod, saOrderExt);
|
||||
if (cuMemberBonusCoach != null) {
|
||||
cuMemberBonusCoachList.add(cuMemberBonusCoach);
|
||||
}
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>(bonusSettleRangeHandle.calculateRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, currentPeriod, saOrderExt, rangeAwardsList, cuMemberBonusDetailList));
|
||||
List<BdWaresBonusExt> bdWaresBonusExtList = iBdWaresBonusService.querySpecialWaresBonus(new BdWaresBonusParam());
|
||||
bonusSettleRangeHandle.calculateRangeEvBonus(cuMemberBonusMap, bonusConfigDTO, currentPeriod, memberRangeExtMap, cuMemberBonusPushList, bdWaresBonusExtList, saOrderExt);
|
||||
saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
|
||||
if (cuMemberBonusPushList.size() > 0) {
|
||||
for (CuMemberBonusPush cuMemberBonusPush : cuMemberBonusPushList) {
|
||||
cuMemberBonusPush.setPkBonus(cuMemberBonusMap.get(cuMemberBonusPush.getPkBonus()).getPkId());
|
||||
iCuMemberBonusPushService.insertCuMemberBonusPush(cuMemberBonusPush);
|
||||
}
|
||||
}
|
||||
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
|
||||
if (cuMemberBonusCoachList.size() > 0) {
|
||||
cuMemberBonusCoachList.forEach(cuMemberBonusCoach1 ->
|
||||
cuMemberBonusCoach1.setPkBonus(cuMemberBonusMap.get(cuMemberBonusCoach1.getPkBonus()).getPkId()));
|
||||
iCuMemberBonusCoachService.batchInsertCuMemberBonusCoach(cuMemberBonusCoachList, memberIdSet);
|
||||
}
|
||||
if (cuMemberBonusRangeList.size() > 0) {
|
||||
cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
|
||||
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
|
||||
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
|
||||
}
|
||||
if (cuMemberBonusDetailList.size() > 0) {
|
||||
cuMemberBonusDetailList.forEach(bonusDetail ->
|
||||
bonusDetail.setPkBonus(cuMemberBonusMap.get(bonusDetail.getPkBonus()).getPkId()));
|
||||
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
|
||||
}
|
||||
if (memberRangeExtMap.size() > 0) {
|
||||
iCuMemberRangeService.updateCuMemberSecondRange(secondRangeTableName, memberRangeExtMap);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 保存会员奖金
|
||||
*
|
||||
* @param cuMemberBonusMap 奖金map
|
||||
* @return: CuMemberBonus 奖金
|
||||
*/
|
||||
protected void saveCuMemberBonus(int period, String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
// 保存奖金
|
||||
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
|
||||
// 插入奖金主表
|
||||
iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
|
||||
List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
|
||||
cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -829,6 +757,14 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
}
|
||||
}
|
||||
|
||||
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
|
||||
// 根据结算日期获取周期的期间,用于海外
|
||||
String recentlyMonday = DateUtils.getRecentlyTuesday(settleDate);
|
||||
CuMemberSettlePeriod startMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(recentlyMonday);
|
||||
// 查询封顶周期是周的国家的所有人的拓展收益、复购拓展收益
|
||||
return iCuMemberBonusService.queryWeekMemberBonus(startMemberSettlePeriod.getPkId(), period);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据不同的订单类型计算奖金
|
||||
*
|
||||
|
@ -911,14 +847,6 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
});
|
||||
}
|
||||
|
||||
private Map<Long, CuMemberBonus> getWeekMemberBonusMap(String settleDate, Integer period) {
|
||||
// 根据结算日期获取周期的期间,用于海外
|
||||
String recentlyMonday = DateUtils.getRecentlyTuesday(settleDate);
|
||||
CuMemberSettlePeriod startMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(recentlyMonday);
|
||||
// 查询封顶周期是周的国家的所有人的拓展收益、复购拓展收益
|
||||
return iCuMemberBonusService.queryWeekMemberBonus(startMemberSettlePeriod.getPkId(), period);
|
||||
}
|
||||
|
||||
private Map<Long, CuAwardsControl> getCuAwardsControlMap() {
|
||||
// 查询真实奖衔控制
|
||||
List<CuAwardsControl> cuAwardsControls = iCuAwardsControlService.queryAllCuAwardsControl();
|
||||
|
|
|
@ -11,17 +11,13 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
* 会员信息-会员考核记录 Mapper 接口
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-31
|
||||
*/
|
||||
public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
||||
|
||||
/**
|
||||
* 创建每年的会员考核表
|
||||
* 创建会员考核表
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @return: void
|
||||
*/
|
||||
void createCuMemberAssessTable(String tableName);
|
||||
|
||||
|
@ -29,13 +25,11 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* 创建会员网体推荐人索引
|
||||
*
|
||||
* @param tableName 日期
|
||||
* @return: void
|
||||
*/
|
||||
void createCuMemberTableUniqueIndex(String tableName);
|
||||
|
||||
/*
|
||||
* @description: 清空表数据
|
||||
* @param: null null
|
||||
* 清空表数据
|
||||
**/
|
||||
void deleteCuMemberAssessByPeriod(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
|
@ -46,7 +40,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param sourceTableName 来源表,用哪个表进行更新
|
||||
* @param period 期间
|
||||
* @param month 考核月份
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer insertRepCuMemberAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName,
|
||||
@Param("period") Integer period, @Param("month") String month);
|
||||
|
@ -58,7 +51,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param sourceTableName 来源表,用哪个表进行更新
|
||||
* @param period 期间
|
||||
* @param month 考核月份
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer insertRepCuMemberRangeAssess(@Param("tableName") String tableName, @Param("sourceTableName") String sourceTableName,
|
||||
@Param("period") Integer period, @Param("month") String month);
|
||||
|
@ -71,7 +63,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param sourcePeriod 来源结算期
|
||||
* @param period 结算结算期间
|
||||
* @param assessType 考核类型 0=复购考核 1=分红考核
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer updateAssessPeriodBeginByBeforeMonth(@Param("beforeTableName") String beforeTableName, @Param("tableName") String tableName,
|
||||
@Param("sourcePeriod") Integer sourcePeriod,
|
||||
|
@ -86,7 +77,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param startDate 开始时间
|
||||
* @param endDate 结束时间
|
||||
* @param orderTypeList 订单类型
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer updateAssessPeriodAddBySaOrder(@Param("tableName") String tableName, @Param("period") Integer period,
|
||||
@Param("assessType") Integer assessType, @Param("startDate") Date startDate,
|
||||
|
@ -99,7 +89,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer updateAssessPeriodExemptBalanceByUsed(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
|
@ -111,7 +100,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param period 期间
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer updateAssessCuMemberToRepExempt(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName,
|
||||
@Param("period") Integer period, @Param("startDate") Date startDate, @Param("endDate") Date endDate,
|
||||
|
@ -123,7 +111,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param settleTableName 每日结算表
|
||||
* @param startDate 开始日期
|
||||
* @param endDate 结束日期
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer updateCuMemberSettleToRepExempt(@Param("settleTableName") String settleTableName, @Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate, @Param("startPeriod") Integer startPeriod,
|
||||
|
@ -136,7 +123,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param settleTableName 每日结算表
|
||||
* @param period 期间
|
||||
* @param saOrderList 根据撤单数据过来的订单
|
||||
* @return: List<CuMemberAssess>
|
||||
*/
|
||||
List<CuMemberAssessExt> queryAssessPeriodByRevokeOrder(@Param("tableName") String tableName, @Param("settleTableName") String settleTableName,
|
||||
@Param("period") Integer period, @Param("saOrderList") List<?> saOrderList);
|
||||
|
@ -148,7 +134,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
* @param period 期间
|
||||
* @param assessType 考核类型
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
* @return: List<CuMemberAssess>
|
||||
*/
|
||||
List<CuMemberAssess> queryCuMemberAssessByMember(@Param("tableName") String tableName, @Param("period") Integer period,
|
||||
@Param("assessType") Integer assessType,
|
||||
|
@ -159,7 +144,6 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: List<CuMemberAssess>
|
||||
*/
|
||||
List<CuMemberAssess> queryCuMemberShareAssess(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
|
@ -170,15 +154,11 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: Integer
|
||||
*/
|
||||
Integer updateAssessPeriodCheckBalanceByUsed(@Param("tableName") String tableName, @Param("period") Integer period);
|
||||
|
||||
/**
|
||||
* 会员-考核明细列表
|
||||
*
|
||||
* @param: [cuMemberAssessVO] 查询条件
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
List<CuMemberAssessVO> selectAssessList(@Param("tableName") String tableName,
|
||||
@Param("pkMember") Long pkMember,
|
||||
|
@ -194,9 +174,7 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
);
|
||||
|
||||
/**
|
||||
* @description: 查询会员月度考核
|
||||
* @param: [tableName, cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 查询会员月度考核
|
||||
**/
|
||||
List<CuMemberAssessVO> getMemberAssessMonthList(@Param("tableName") String tableName,
|
||||
@Param("pkMember") Long pkMember,
|
||||
|
@ -207,23 +185,43 @@ public interface CuMemberAssessMapper extends BaseMapper<CuMemberAssess> {
|
|||
|
||||
|
||||
/**
|
||||
* @description: 查询会员订单考核积分
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 查询会员订单考核积分
|
||||
**/
|
||||
CuMemberAssessVO getOrderAssessList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/**
|
||||
* @description: 根据考核类型查询会员订单信息
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 根据考核类型查询会员订单信息
|
||||
**/
|
||||
List<CuMemberAssessVO> getOrderByAssessList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/*
|
||||
* @description: 查询满足分红考核的人数,达标人数
|
||||
* @param: null null
|
||||
* 查询满足分红考核的人数,达标人数
|
||||
**/
|
||||
List<CuMemberAssess> queryCuMemberAssTotal(@Param("settleTable") String settleTable, @Param("period") Integer period,
|
||||
@Param("pkCountry") Integer pkCountry);
|
||||
|
||||
/**
|
||||
* 创建免考会员数据
|
||||
*
|
||||
* @param accessTableName
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
*/
|
||||
int createPassMemberAssess(@Param("accessTableName") String accessTableName,
|
||||
@Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate);
|
||||
|
||||
/**
|
||||
* 处理考试通过会员
|
||||
*
|
||||
* @param accessTableName
|
||||
* @param startDate
|
||||
* @param endDate
|
||||
* @return
|
||||
*/
|
||||
int updatePassMemberAssess(@Param("accessTableName") String accessTableName,
|
||||
@Param("startDate") Date startDate,
|
||||
@Param("endDate") Date endDate);
|
||||
|
||||
}
|
||||
|
|
|
@ -10,12 +10,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员信息-会员考核记录 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-31
|
||||
*/
|
||||
public interface ICuMemberAssessService extends IService<CuMemberAssess> {
|
||||
|
||||
|
@ -24,19 +19,18 @@ public interface ICuMemberAssessService extends IService<CuMemberAssess> {
|
|||
*
|
||||
* @param settleDate 结算日期
|
||||
* @param period 结算期间
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 13:45
|
||||
*/
|
||||
void initCuMemberAssessData(String settleDate, int period);
|
||||
|
||||
/**
|
||||
* 创建考核月表
|
||||
*
|
||||
* @param date
|
||||
*/
|
||||
void createCuMemberAssessMonth(String date);
|
||||
|
||||
/**
|
||||
* 复购考核每月第一考核调用此方法
|
||||
*
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 11:43
|
||||
*/
|
||||
void calculationCuMemberAssess(Date currentDate);
|
||||
|
||||
|
@ -44,9 +38,6 @@ public interface ICuMemberAssessService extends IService<CuMemberAssess> {
|
|||
* 重算考核 奖金用、每天的重算复购考核用(复购考核、分红考核),只重算免考的
|
||||
*
|
||||
* @param currentDate 哪一天进行重新复购考核,拿昨天的值跟现在的值对比
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/7 11:19
|
||||
*/
|
||||
void retryCalculationAssess(Date currentDate, Boolean flag);
|
||||
|
||||
|
@ -57,71 +48,50 @@ public interface ICuMemberAssessService extends IService<CuMemberAssess> {
|
|||
* @param period 期间
|
||||
* @param assessType 考核类型
|
||||
* @param cuMemberSettleExtList 会员列表
|
||||
* @return: Map<Long, CuMemberAssess> 会员作为键
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/16 19:13
|
||||
*/
|
||||
Map<Long, CuMemberAssess> queryCuMemberAssessByMember(String assessTableName, Integer period, Integer assessType, List<CuMemberSettleExt> cuMemberSettleExtList);
|
||||
|
||||
/**
|
||||
* 查询会员分红考核结果,只查询出免考或者考核通过的,用于分红
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @return: List<CuMemberAssess>
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/16 19:13
|
||||
* @param period 期间
|
||||
*/
|
||||
List<CuMemberAssess> queryCuMemberShareAssess(String tableName, Integer period);
|
||||
|
||||
/**
|
||||
* @description: 会员-考核明细列表
|
||||
* @author: zhang jing
|
||||
* @date: 2023/1/23 10:17
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 会员-考核明细列表
|
||||
**/
|
||||
List<CuMemberAssessVO> selectAssessList(CuMemberAssessVO cuMemberAssessVO,List<Integer> orderTypeList);
|
||||
List<CuMemberAssessVO> selectAssessList(CuMemberAssessVO cuMemberAssessVO, List<Integer> orderTypeList);
|
||||
|
||||
/**
|
||||
* @description: 查询会员月度考核(查询列表用)
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 14:46
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 查询会员月度考核(查询列表用)
|
||||
**/
|
||||
List<CuMemberAssessVO> getMemberAssessMonthList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/**
|
||||
* @description: 查询会员月度考核(查询积分用)
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 14:46
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 查询会员月度考核(查询积分用)
|
||||
**/
|
||||
List<CuMemberAssessVO> getMemberAssessMonth(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/**
|
||||
* @description: 查询会员订单考核积分
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 17:52
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 查询会员订单考核积分
|
||||
**/
|
||||
CuMemberAssessVO getOrderAssessList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: zhang jing
|
||||
* @date: 2023/4/23 19:44
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
List<CuMemberAssessVO> getOrderByAssessList(CuMemberAssessVO cuMemberAssessVO);
|
||||
|
||||
/*
|
||||
* @description: 查询满足分红考核的人数,达标人数
|
||||
* @author: sui q
|
||||
* @date: 2023/7/3 16:51
|
||||
* @param: null null
|
||||
**/
|
||||
/**
|
||||
* 查询满足分红考核的人数,达标人数
|
||||
*/
|
||||
List<CuMemberAssess> queryCuMemberAssTotal(String startDate, Integer pkCountry);
|
||||
|
||||
/**
|
||||
* 初始化会员考核数据
|
||||
*
|
||||
* @param settleDate
|
||||
* @param currentSettleTableName
|
||||
*/
|
||||
void initMemberAssess(String settleDate, String currentSettleTableName);
|
||||
|
||||
}
|
||||
|
|
|
@ -14,61 +14,32 @@ import com.hzs.common.core.utils.DateUtils;
|
|||
import com.hzs.common.core.utils.StringUtils;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberSettlePeriod;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAssess;
|
||||
import com.hzs.common.domain.member.detail.CuMemberAssessDetail;
|
||||
import com.hzs.common.domain.member.ext.CuMemberAssessExt;
|
||||
import com.hzs.common.domain.member.ext.CuMemberSettleExt;
|
||||
import com.hzs.common.domain.sale.order.SaOrder;
|
||||
import com.hzs.common.domain.system.config.BdAwards;
|
||||
import com.hzs.bonus.detail.mapper.CuMemberAssessMapper;
|
||||
import com.hzs.bonus.detail.vo.CuMemberAssessVO;
|
||||
import com.hzs.sale.order.ISaOrderServiceApi;
|
||||
import com.hzs.system.config.IAwardsServiceApi;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 会员信息-会员考核记录 服务实现类
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-31
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper, CuMemberAssess> implements ICuMemberAssessService {
|
||||
|
||||
private ICuMemberTreeService cuMemberTreeService;
|
||||
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
|
||||
private ICuMemberAssessDetailService cuMemberAssessDetailService;
|
||||
@Autowired
|
||||
private ICuMemberTreeService iCuMemberTreeService;
|
||||
@Autowired
|
||||
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
|
||||
@Autowired
|
||||
private ICuMemberAssessDetailService iCuMemberAssessDetailService;
|
||||
|
||||
@Autowired
|
||||
private CuMemberBonusSettle cuMemberBonusSettle;
|
||||
|
||||
@DubboReference
|
||||
ISaOrderServiceApi saOrderServiceApi;
|
||||
@DubboReference
|
||||
IAwardsServiceApi awardsServiceApi;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberAssessDetailService(ICuMemberAssessDetailService cuMemberAssessDetailService) {
|
||||
this.cuMemberAssessDetailService = cuMemberAssessDetailService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
|
||||
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberTreeService(ICuMemberTreeService cuMemberTreeService) {
|
||||
this.cuMemberTreeService = cuMemberTreeService;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
@ -85,19 +56,19 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
if (DateUtils.currentDay(currentDate) == 1) {
|
||||
// 考核表
|
||||
String tableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.currentYear(currentDate);
|
||||
Integer num = cuMemberTreeService.queryExistOracleTable(tableName);
|
||||
Integer num = iCuMemberTreeService.queryExistOracleTable(tableName);
|
||||
if (num == null || num <= 0) {
|
||||
// 判断是否存在年表
|
||||
// 判断是否存在年表(cu_member_assess)
|
||||
baseMapper.createCuMemberAssessTable(tableName);
|
||||
baseMapper.createCuMemberTableUniqueIndex(tableName);
|
||||
cuMemberTreeService.createCuMemberTableSequence(tableName, TableNameConstants.CU_MEMBER_ASSESS_SEQ);
|
||||
iCuMemberTreeService.createCuMemberTableSequence(tableName, TableNameConstants.CU_MEMBER_ASSESS_SEQ);
|
||||
}
|
||||
// TODO cabbage 目前没有月考核了,此处不需要创建月考核数据
|
||||
// 目前没有月考核了,此处不需要创建月考核数据
|
||||
// calculationCuMemberAssess(currentDate);
|
||||
// String sourceTable = TableNameConstants.CU_MEMBER_SETTLE + period;
|
||||
// 判断当前时间是月初第一天,需要初始化数据,判断表中是否有数据,没有数据可以进行初始化
|
||||
// String assessDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate);
|
||||
// period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(assessDate).getPkId();
|
||||
// period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(assessDate).getPkId();
|
||||
// num = baseMapper.queryCuMemberAssessCount(tableName, period);
|
||||
// if (num == null || num <= 0) {
|
||||
// // 初始化复购考核
|
||||
|
@ -108,7 +79,17 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// baseMapper.insertShareCuMemberAssess(tableName, sourceTable, period, month);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCuMemberAssessMonth(String date) {
|
||||
String accessTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getMonth(date);
|
||||
Integer num = iCuMemberTreeService.queryExistOracleTable(accessTableName);
|
||||
if (num == null || num <= 0) {
|
||||
// 判断是否存在年表(cu_member_assess)
|
||||
baseMapper.createCuMemberAssessTable(accessTableName);
|
||||
baseMapper.createCuMemberTableUniqueIndex(accessTableName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -122,7 +103,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// 考核日期不能跨越考核,只能当月考核,当月考核上月
|
||||
if (DateUtils.currentDay(currentDate) == 1) {
|
||||
String currentMonthFirstDate = DateUtils.currentMonthFirstDateStr(currentDate);
|
||||
Integer currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
Integer currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
String currentTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(currentMonthFirstDate);
|
||||
// 清空数据 根据期数清空cu_member_assess cu_member_assess_detail表数据
|
||||
initCurrentAssess(currentDate, currentTableName, currentPeriod);
|
||||
|
@ -136,7 +117,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
baseMapper.updateAssessPeriodExemptBalanceByUsed(currentTableName, currentPeriod);
|
||||
// 2 需要扣除通过的,需要记录流水
|
||||
// 记录流水,新增或修改
|
||||
cuMemberAssessDetailService.updateCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
iCuMemberAssessDetailService.updateCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
baseMapper.updateAssessPeriodCheckBalanceByUsed(currentTableName, currentPeriod);
|
||||
}
|
||||
}
|
||||
|
@ -161,7 +142,8 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
}
|
||||
|
||||
/**
|
||||
* @description: 会员-考核明细列表
|
||||
* 会员-考核明细列表
|
||||
*
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
|
@ -185,7 +167,8 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
}
|
||||
|
||||
/**
|
||||
* @description: 查询会员月度考核(查询列表用)
|
||||
* 查询会员月度考核(查询列表用)
|
||||
*
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
|
@ -208,7 +191,8 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
}
|
||||
|
||||
/**
|
||||
* @description: 查询会员月度考核(查询积分用)
|
||||
* 查询会员月度考核(查询积分用)
|
||||
*
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
**/
|
||||
|
@ -223,17 +207,17 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
if (DateUtils.compareDateBefore(date, cuMemberAssessVO.getStartDate()) || DateUtils.compareDateEqual(date, cuMemberAssessVO.getStartDate())) {
|
||||
//获取当前月第一天
|
||||
Date date1 = DateUtils.currentMonthFirstDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, date));
|
||||
period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
|
||||
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
|
||||
DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date1)).getPkId();
|
||||
} else {
|
||||
Date date1 = DateUtils.currentMonthFirstDate(cuMemberAssessVO.getStartDate());
|
||||
period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
|
||||
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
|
||||
DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date1)).getPkId();
|
||||
}
|
||||
} else {
|
||||
year = DateUtils.currentYear(date);
|
||||
Date date1 = DateUtils.currentMonthFirstDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, date));
|
||||
period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
|
||||
period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(
|
||||
DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date1)).getPkId();
|
||||
}
|
||||
String tableName = TableNameConstants.CU_MEMBER_ASSESS + year;
|
||||
|
@ -252,13 +236,13 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public void retryCalculationAssess(Date currentDate, Boolean flag) {
|
||||
// String beforeDateStr = DateUtils.beforeDateStr(1, ChronoUnit.DAYS, DateUtils.YYYY_MM_DD, currentDate);
|
||||
// Integer beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDateStr).getPkId();
|
||||
Integer currentPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)).getPkId();
|
||||
// Integer beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeDateStr).getPkId();
|
||||
Integer currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate)).getPkId();
|
||||
// String beforeTableName = TableNameConstants.CU_MEMBER_SETTLE + beforePeriod;
|
||||
//// a)更新结算表会员前2部分会员免考状态 满足首次注册的会员 满足满足首次升级的会员
|
||||
// String tableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.currentYear(currentDate);
|
||||
// String currentMonthFirstDateStr = DateUtils.currentMonthFirstDateStr(currentDate);
|
||||
// Integer monthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
// Integer monthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
// // 结算日期月份的第一天
|
||||
Date startDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
// // 结算日期后一天
|
||||
|
@ -269,8 +253,8 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
//// d)前一天不免考,后一天免考,需要做重新考核,直接变考核通过,原来考核通过的不回退考核金额,且考核状态为考核通过,不是免考通过
|
||||
// // 所有的海粉会员设置复购考核失败,存在任意订单的海粉会员复购考核成功
|
||||
// // 复购免考通过
|
||||
Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
Integer startPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
// baseMapper.updateAssessCuMemberToRepExempt(tableName, settleTableName, monthFirstPeriod, startDate, endDate, startPeriod, endPeriod);
|
||||
// // 奖金重算时更新结算表,flag=true代表奖金重算时,重算考核需要更新网体 flag=false 代表重算考核
|
||||
if (flag) {
|
||||
|
@ -282,7 +266,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// // 查询出考核表免考的数据
|
||||
// List<CuMemberAssess> oldCuMemberAssessList = baseMapper.queryExemptAssessCuMember(tableName, monthFirstPeriod);
|
||||
//// b)查询前一天的会员免考记录,查询结算日会员免考记录
|
||||
// List<CuMemberSettleExt> oldCuMemberSettleExtList = cuMemberTreeService.queryExemptCuMemberSettle(beforeTableName);
|
||||
// List<CuMemberSettleExt> oldCuMemberSettleExtList = iCuMemberTreeService.queryExemptCuMemberSettle(beforeTableName);
|
||||
//// c)比较会员2天免考发生的状态,只需要计算变化的值,去掉没有发生变化的值
|
||||
// List<CuMemberSettleExt> newCuMemberSettleExtList = new ArrayList<>();
|
||||
// if (oldCuMemberAssessList.size() > 0 && oldCuMemberSettleExtList != null && oldCuMemberSettleExtList.size() > 0) {
|
||||
|
@ -308,7 +292,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// if (newCuMemberSettleExtList.size() > 0) {
|
||||
// // 处理考核数据
|
||||
// // 记录流水,新增或修改
|
||||
// cuMemberAssessDetailService.insertCuMemberAssessDetailByPeriod(tableName, monthFirstPeriod, newCuMemberSettleExtList);
|
||||
// iCuMemberAssessDetailService.insertCuMemberAssessDetailByPeriod(tableName, monthFirstPeriod, newCuMemberSettleExtList);
|
||||
// List<List<?>> cutCuMemberSettleExtList = cuMemberBonusSettle.handleCutList(newCuMemberSettleExtList);
|
||||
// cutCuMemberSettleExtList.forEach(assessExtList ->
|
||||
// baseMapper.updateAssessPeriodCheckBalanceByTmp(tableName, monthFirstPeriod, assessExtList));
|
||||
|
@ -319,12 +303,12 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
private void initCurrentAssess(Date currentDate, String currentTableName, Integer currentPeriod) {
|
||||
// 获取上月最后一天
|
||||
String beforeLastDate = DateUtils.beforeMonthLastDateStr(currentDate);
|
||||
CuMemberSettlePeriod cuMemberSettlePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeLastDate);
|
||||
CuMemberSettlePeriod cuMemberSettlePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeLastDate);
|
||||
int period = cuMemberSettlePeriod.getPkId();
|
||||
String sourceTable = TableNameConstants.CU_MEMBER_SETTLE + period;
|
||||
String rangeSourceTable = TableNameConstants.CU_MEMBER_RANGE + period;
|
||||
// 清空子表、主表数据
|
||||
cuMemberAssessDetailService.deleteCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
iCuMemberAssessDetailService.deleteCuMemberAssessDetailByPeriod(currentTableName, currentPeriod);
|
||||
baseMapper.deleteCuMemberAssessByPeriod(currentTableName, currentPeriod);
|
||||
// 初始化复购考核
|
||||
String month = DateUtils.getMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, currentDate));
|
||||
|
@ -337,7 +321,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// a)更新结算表会员前2部分会员免考状态 满足首次注册的会员 满足满足首次升级的会员
|
||||
String tableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.currentYear(currentDate);
|
||||
String currentMonthFirstDateStr = DateUtils.currentMonthFirstDateStr(currentDate);
|
||||
Integer monthFirstPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
Integer monthFirstPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDateStr).getPkId();
|
||||
// 结算日期月份的第一天
|
||||
Date startDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
// 结算日期后一天
|
||||
|
@ -345,22 +329,22 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
String settleTableName = TableNameConstants.CU_MEMBER_SETTLE + currentPeriod;
|
||||
if (DateUtils.currentDay(DateUtils.currentDate()) == 1) {
|
||||
String currentMonthFirstDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, currentDate));
|
||||
Integer yesterdayPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
Integer yesterdayPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(currentMonthFirstDate).getPkId();
|
||||
settleTableName = TableNameConstants.CU_MEMBER_SETTLE + yesterdayPeriod;
|
||||
}
|
||||
// 首次晋升、首次升级都是当月加下月考核,查询出上月1号到考核日期的值,
|
||||
// 等级看会员表支付时间,奖衔看奖衔变更表是否免考(分组取),手动免考查看 最新的结算表手动考核
|
||||
// d)前一天不免考,后一天免考,需要做重新考核,直接变考核通过,原来考核通过的不回退考核金额,且考核状态为考核通过,不是免考通过
|
||||
// 复购免考通过
|
||||
Integer startPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
Integer startPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, startDate)).getPkId();
|
||||
Integer endPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, endDate)).getPkId();
|
||||
baseMapper.updateAssessCuMemberToRepExempt(tableName, settleTableName, monthFirstPeriod, startDate, endDate, startPeriod, endPeriod);
|
||||
|
||||
// 初始化订单数据,将当月新增加入数据库
|
||||
// 上月第一天,上月最后一天
|
||||
Date beforeFirstDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
Date currentFirstDate = DateUtils.currentMonthFirstDate(currentDate);
|
||||
cuMemberAssessDetailService.insertCuMemberAssesDetailByOrder(currentTableName, currentPeriod, beforeFirstDate, currentFirstDate);
|
||||
iCuMemberAssessDetailService.insertCuMemberAssesDetailByOrder(currentTableName, currentPeriod, beforeFirstDate, currentFirstDate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -384,7 +368,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
// 获取结算日上月最后一天,获取期间
|
||||
Date beforeMonthFirstDate = DateUtils.beforeMonthFirstDate(currentDate);
|
||||
String beforeMonthFirstDateStr = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, beforeMonthFirstDate);
|
||||
Integer beforePeriod = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeMonthFirstDateStr).getPkId();
|
||||
Integer beforePeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(beforeMonthFirstDateStr).getPkId();
|
||||
String beforeTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(beforeMonthFirstDateStr);
|
||||
Date currentMonthFirstDate = DateUtils.currentMonthFirstDate(currentDate);
|
||||
// 初始化复购考核的上月结余 // 更新当月结余
|
||||
|
@ -395,11 +379,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
}
|
||||
|
||||
/**
|
||||
* @description: 查询会员订单考核积分
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 17:52
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 查询会员订单考核积分
|
||||
**/
|
||||
@Override
|
||||
public CuMemberAssessVO getOrderAssessList(CuMemberAssessVO cuMemberAssessVO) {
|
||||
|
@ -407,11 +387,7 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
}
|
||||
|
||||
/**
|
||||
* @description: 根据考核类型查询会员订单信息
|
||||
* @author: zhang jing
|
||||
* @date: 2023/4/23 19:45
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: java.util.List<com.hzs.member.detail.vo.CuMemberAssessVO>
|
||||
* 根据考核类型查询会员订单信息
|
||||
**/
|
||||
@Override
|
||||
public List<CuMemberAssessVO> getOrderByAssessList(CuMemberAssessVO cuMemberAssessVO) {
|
||||
|
@ -420,8 +396,32 @@ public class CuMemberAssessServiceImpl extends ServiceImpl<CuMemberAssessMapper,
|
|||
|
||||
@Override
|
||||
public List<CuMemberAssess> queryCuMemberAssTotal(String startDate, Integer pkCountry) {
|
||||
int period = cuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(startDate).getPkId();
|
||||
int period = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(startDate).getPkId();
|
||||
String tableTable = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getYear(startDate);
|
||||
return baseMapper.queryCuMemberAssTotal(tableTable, period, pkCountry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initMemberAssess(String settleDate, String currentSettleTableName) {
|
||||
// 本月考核表
|
||||
String assessTableName = TableNameConstants.CU_MEMBER_ASSESS + DateUtils.getMonth(settleDate);
|
||||
// 当月时间
|
||||
Date monthDate = DateUtils.parseDateOne(settleDate, DateUtils.YYYY_MM_DD);
|
||||
// 上月第一天
|
||||
Date startDate = DateUtils.getFirstDayOfMonth(DateUtils.addMonths(monthDate, -1));
|
||||
// 当月最后一天
|
||||
Date endDate = DateUtils.getLastDayOfMonth(monthDate);
|
||||
// 上月新会员本月免考
|
||||
baseMapper.createPassMemberAssess(assessTableName, startDate, endDate);
|
||||
|
||||
// 会员复购订单首月免考
|
||||
// 当月第一天
|
||||
startDate = DateUtils.getFirstDayOfMonth(monthDate);
|
||||
// 当月会员复购考试
|
||||
baseMapper.updatePassMemberAssess(assessTableName, startDate, endDate);
|
||||
|
||||
// 更新日结表会员免考信息
|
||||
iCuMemberTreeService.updateCuMemberSettlePointAssess(currentSettleTableName, assessTableName);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -386,7 +386,8 @@
|
|||
</update>
|
||||
|
||||
<update id="createCuMemberTreeParentIndex">
|
||||
create index ${tableName}_parent
|
||||
create index
|
||||
${tableName}_parent
|
||||
on ${tableName}
|
||||
(
|
||||
pk_parent
|
||||
|
@ -394,7 +395,8 @@
|
|||
</update>
|
||||
|
||||
<update id="createCuMemberTreePlaceIndex">
|
||||
create index ${tableName}_place
|
||||
create index
|
||||
${tableName}_place
|
||||
on ${tableName}
|
||||
(
|
||||
pk_place_parent,
|
||||
|
@ -403,7 +405,8 @@
|
|||
</update>
|
||||
|
||||
<update id="createCuMemberTableUniqueIndex">
|
||||
create unique index ${tableName}_PK_M
|
||||
create unique index
|
||||
${tableName}_PK_M
|
||||
on ${tableName}
|
||||
(
|
||||
PK_MEMBER,
|
||||
|
@ -412,7 +415,8 @@
|
|||
</update>
|
||||
|
||||
<update id="createCuMemberTreeDayOnlyIndex">
|
||||
create unique index ${tableName}_PK_M
|
||||
create unique index
|
||||
${tableName}_PK_M
|
||||
on ${tableName}
|
||||
(
|
||||
PK_MEMBER
|
||||
|
@ -1263,4 +1267,17 @@
|
|||
on cms.pk_member = t.pk_member
|
||||
</select>
|
||||
|
||||
<!-- 更新日结复购考核 -->
|
||||
<update id="updateCuMemberSettlePointAssess">
|
||||
merge into #{settleTableName} cms
|
||||
using (select cma.pk_member
|
||||
from #{assessTableName} cma
|
||||
where cma.del_flag = 0
|
||||
and cma.assess_type = 0
|
||||
and cma.assess_status in (1, 2)) tmp
|
||||
on (tmp.pk_member = cms.pk_member)
|
||||
when matched then
|
||||
update set cms.purchase_status = 0
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -2,39 +2,4 @@
|
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.BdWaresBonusMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BdWaresBonusExt" type="com.hzs.common.domain.member.ext.BdWaresBonusExt">
|
||||
<id column="PK_ID" property="pkId"/>
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<result column="PK_COUNTRY" property="pkCountry"/>
|
||||
<result column="CREATION_TIME" property="creationTime"/>
|
||||
<result column="MODIFIED_TIME" property="modifiedTime"/>
|
||||
<result column="PK_CREATOR" property="pkCreator"/>
|
||||
<result column="PK_MODIFIED" property="pkModified"/>
|
||||
<result column="PK_WARES" property="pkWares"/>
|
||||
<result column="ORDER_ASS_ACHIEVE" property="orderAssAchieve"/>
|
||||
<result column="TOTAL_ALGEBRA" property="totalAlgebra"/>
|
||||
<collection property="bdWaresBonusItemsList" ofType="com.hzs.common.domain.member.bonus.BdWaresBonusItems">
|
||||
<result column="PK_ID_ITEM" property="pkId"/>
|
||||
<result column="ASS_ACHIEVE" property="assAchieve"/>
|
||||
<result column="ALGEBRA" property="algebra"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="querySpecialWaresBonus" resultMap="BdWaresBonusExt">
|
||||
select bw.*,ba.wares_code,ba.wares_name,bt.pk_id pk_id_item,bt.ass_achieve,bt.algebra from bd_wares_bonus bw
|
||||
inner join bd_wares_bonus_items bt
|
||||
on bw.pk_id=bt.pk_wares_bonus
|
||||
inner join bd_wares ba
|
||||
on ba.pk_id=bw.pk_wares
|
||||
where bw.del_flag=0 and bt.del_flag=0 and ba.del_flag=0
|
||||
<if test="waresCode != null and waresCode != ''">
|
||||
and ba.wares_code=#{waresCode}
|
||||
</if>
|
||||
<if test="waresName != null and waresName != ''">
|
||||
and ba.wares_name = #{waresName}
|
||||
</if>
|
||||
order by bw.pk_wares,bt.algebra
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -4,116 +4,141 @@
|
|||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="CuMemberAssess" type="com.hzs.common.domain.member.ext.CuMemberAssessExt">
|
||||
<id column="PK_ID" property="pkId" />
|
||||
<result column="DEL_FLAG" property="delFlag" />
|
||||
<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_COUNTRY" property="pkCountry" />
|
||||
<result column="PK_MEMBER" property="pkMember" />
|
||||
<result column="PERIOD" property="period" />
|
||||
<result column="SETTLE_MONTH" property="settleMonth" />
|
||||
<result column="ASSESS_TYPE" property="assessType" />
|
||||
<result column="DEL_FLAG" property="delFlag"/>
|
||||
<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_COUNTRY" property="pkCountry"/>
|
||||
<result column="PK_MEMBER" property="pkMember"/>
|
||||
<result column="PERIOD" property="period"/>
|
||||
<result column="SETTLE_MONTH" property="settleMonth"/>
|
||||
<result column="ASSESS_TYPE" property="assessType"/>
|
||||
<result column="PK_ORIGINAL_AWARDS" property="pkOriginalAwards"/>
|
||||
<result column="PK_AWARDS" property="pkAwards" />
|
||||
<result column="ASSESS_TARGET" property="assessTarget" />
|
||||
<result column="IS_EXAMINE" property="isExamine" />
|
||||
<result column="ASSESS_STATUS" property="assessStatus" />
|
||||
<result column="MONTH_BALANCE" property="monthBalance" />
|
||||
<result column="MONTH_ADD" property="monthAdd" />
|
||||
<result column="CUR_MONTH_ADD" property="curMonthAdd" />
|
||||
<result column="MONTH_USED" property="monthUsed" />
|
||||
<result column="MONTH_SURPLUS" property="monthSurplus" />
|
||||
<result column="PK_AWARDS" property="pkAwards"/>
|
||||
<result column="ASSESS_TARGET" property="assessTarget"/>
|
||||
<result column="IS_EXAMINE" property="isExamine"/>
|
||||
<result column="ASSESS_STATUS" property="assessStatus"/>
|
||||
<result column="MONTH_BALANCE" property="monthBalance"/>
|
||||
<result column="MONTH_ADD" property="monthAdd"/>
|
||||
<result column="CUR_MONTH_ADD" property="curMonthAdd"/>
|
||||
<result column="MONTH_USED" property="monthUsed"/>
|
||||
<result column="MONTH_SURPLUS" property="monthSurplus"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="CuMemberAssessColumn">
|
||||
pk_id NUMBER(20) primary key,
|
||||
pk_member NUMBER(20) not null,
|
||||
period NUMBER(6) not null,
|
||||
settle_month VARCHAR2(12) not null,
|
||||
assess_type NUMBER(2) not null,
|
||||
pk_awards NUMBER(6) not null,
|
||||
assess_target NUMBER(17,6) default 0 not null,
|
||||
is_examine NUMBER(1) default 1 not null,
|
||||
assess_status NUMBER(2) not null,
|
||||
month_balance NUMBER(17,6) default 0 not null,
|
||||
month_add NUMBER(17,6) default 0 not null,
|
||||
cur_month_add number(17,6) default 0 not null,
|
||||
month_used NUMBER(17,6) default 0 not null,
|
||||
month_surplus NUMBER(17,6) default 0 not null,
|
||||
del_flag NUMBER(1) default 0 not null,
|
||||
pk_country NUMBER(4) not null,
|
||||
pk_creator NUMBER(20) not null,
|
||||
creation_time DATE default sysdate not null,
|
||||
modified_time DATE,
|
||||
pk_modified NUMBER(20)
|
||||
pk_member NUMBER(20) not null,
|
||||
period NUMBER(6) default 0 not null,
|
||||
settle_month VARCHAR2(10),
|
||||
assess_type NUMBER(2) not null,
|
||||
pk_awards NUMBER(6) default 1 not null,
|
||||
assess_target NUMBER(17,6) default 0 not null,
|
||||
is_examine NUMBER(1) default 1 not null,
|
||||
assess_status NUMBER(2) not null,
|
||||
month_balance NUMBER(17,6) default 0 not null,
|
||||
month_add NUMBER(17,6) default 0 not null,
|
||||
cur_month_add NUMBER(17,6) default 0 not null,
|
||||
month_used NUMBER(17,6) default 0 not null,
|
||||
month_surplus NUMBER(17,6) default 0 not null,
|
||||
del_flag NUMBER(1) default 0 not null,
|
||||
creation_time DATE default sysdate not null,
|
||||
modified_time DATE,
|
||||
pk_country NUMBER(4) default 1 not null,
|
||||
pk_creator NUMBER(20) not null,
|
||||
pk_modified NUMBER(20),
|
||||
start_date DATE,
|
||||
end_date DATE
|
||||
</sql>
|
||||
|
||||
<update id="createCuMemberAssessTable">
|
||||
create table ${tableName}
|
||||
(
|
||||
<include refid="CuMemberAssessColumn"></include>
|
||||
)
|
||||
</update>
|
||||
|
||||
<update id="createCuMemberTableUniqueIndex">
|
||||
create index
|
||||
${tableName}_MEMBER
|
||||
on ${tableName}
|
||||
(
|
||||
PK_MEMBER,
|
||||
ASSESS_TYPE
|
||||
)
|
||||
</update>
|
||||
|
||||
<insert id="insertRepCuMemberAssess">
|
||||
merge into ${tableName} a
|
||||
using(
|
||||
select pk_member,#{period} period,#{month} settle_month,0 assess_type,pk_awards,nvl(b.purchase_check,0) ASSESS_TARGET,
|
||||
1 IS_EXAMINE,2 assess_status,ct.pk_settle_country PK_COUNTRY,1 pk_creator
|
||||
from ${sourceTableName} ct
|
||||
left join bd_awards b
|
||||
on ct.pk_awards=b.pk_id
|
||||
where category=0
|
||||
using (
|
||||
select pk_member,
|
||||
#{period} period,
|
||||
#{month} settle_month,
|
||||
0 assess_type,
|
||||
pk_awards,
|
||||
nvl(b.purchase_check, 0) ASSESS_TARGET,
|
||||
1 IS_EXAMINE,
|
||||
2 assess_status,
|
||||
ct.pk_settle_country PK_COUNTRY,
|
||||
1 pk_creator
|
||||
from ${sourceTableName} ct
|
||||
left join bd_awards b
|
||||
on ct.pk_awards = b.pk_id
|
||||
where category = 0
|
||||
) b
|
||||
on (a.pk_member=b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||||
WHEN MATCHED THEN
|
||||
update set a.SETTLE_MONTH=b.SETTLE_MONTH,a.PK_AWARDS=b.PK_AWARDS,a.ASSESS_TARGET=b.ASSESS_TARGET,
|
||||
a.IS_EXAMINE=b.IS_EXAMINE,a.ASSESS_STATUS=b.ASSESS_STATUS
|
||||
when not matched then
|
||||
insert (PK_MEMBER,period,SETTLE_MONTH,ASSESS_TYPE,PK_AWARDS,ASSESS_TARGET,
|
||||
IS_EXAMINE,ASSESS_STATUS,PK_COUNTRY,PK_CREATOR)
|
||||
values(b.PK_MEMBER,b.period,b.SETTLE_MONTH,b.ASSESS_TYPE,b.PK_AWARDS,b.ASSESS_TARGET,
|
||||
b.IS_EXAMINE,b.ASSESS_STATUS,b.PK_COUNTRY,b.PK_CREATOR)
|
||||
on (a.pk_member = b.pk_member and a.period = b.period and a.assess_type = b.assess_type)
|
||||
WHEN MATCHED THEN
|
||||
update set a.SETTLE_MONTH = b.SETTLE_MONTH,a.PK_AWARDS = b.PK_AWARDS,a.ASSESS_TARGET = b.ASSESS_TARGET,
|
||||
a.IS_EXAMINE = b.IS_EXAMINE,a.ASSESS_STATUS = b.ASSESS_STATUS
|
||||
when not matched then
|
||||
insert (PK_MEMBER, period, SETTLE_MONTH, ASSESS_TYPE, PK_AWARDS, ASSESS_TARGET,
|
||||
IS_EXAMINE, ASSESS_STATUS, PK_COUNTRY, PK_CREATOR)
|
||||
values (b.PK_MEMBER, b.period, b.SETTLE_MONTH, b.ASSESS_TYPE, b.PK_AWARDS, b.ASSESS_TARGET,
|
||||
b.IS_EXAMINE, b.ASSESS_STATUS, b.PK_COUNTRY, b.PK_CREATOR)
|
||||
|
||||
</insert>
|
||||
|
||||
<insert id="insertRepCuMemberRangeAssess">
|
||||
merge into ${tableName} a
|
||||
using(
|
||||
select pk_member,#{period} period,#{month} settle_month,0 assess_type,pk_range_awards pk_awards,nvl(b.purchase_check,0) ASSESS_TARGET,
|
||||
1 IS_EXAMINE,2 assess_status,ct.pk_settle_country PK_COUNTRY,1 pk_creator
|
||||
using (
|
||||
select pk_member,
|
||||
#{period} period,
|
||||
#{month} settle_month,
|
||||
0 assess_type,
|
||||
pk_range_awards pk_awards,
|
||||
nvl(b.purchase_check, 0) ASSESS_TARGET,
|
||||
1 IS_EXAMINE,
|
||||
2 assess_status,
|
||||
ct.pk_settle_country PK_COUNTRY,
|
||||
1 pk_creator
|
||||
from ${sourceTableName} ct
|
||||
left join bd_range_awards b
|
||||
on ct.pk_range_awards=b.pk_id
|
||||
where category=0
|
||||
on ct.pk_range_awards = b.pk_id
|
||||
where category = 0
|
||||
) b
|
||||
on (a.pk_member=b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||||
on (a.pk_member = b.pk_member and a.period = b.period and a.assess_type = b.assess_type)
|
||||
WHEN MATCHED THEN
|
||||
update set a.SETTLE_MONTH=b.SETTLE_MONTH,a.PK_AWARDS=b.PK_AWARDS,a.ASSESS_TARGET=b.ASSESS_TARGET,
|
||||
a.IS_EXAMINE=b.IS_EXAMINE,a.ASSESS_STATUS=b.ASSESS_STATUS
|
||||
update set a.SETTLE_MONTH = b.SETTLE_MONTH,a.PK_AWARDS = b.PK_AWARDS,a.ASSESS_TARGET = b.ASSESS_TARGET,
|
||||
a.IS_EXAMINE = b.IS_EXAMINE,a.ASSESS_STATUS = b.ASSESS_STATUS
|
||||
when not matched then
|
||||
insert (PK_MEMBER,period,SETTLE_MONTH,ASSESS_TYPE,PK_AWARDS,ASSESS_TARGET,
|
||||
IS_EXAMINE,ASSESS_STATUS,PK_COUNTRY,PK_CREATOR)
|
||||
values(b.PK_MEMBER,b.period,b.SETTLE_MONTH,b.ASSESS_TYPE,b.PK_AWARDS,b.ASSESS_TARGET,
|
||||
b.IS_EXAMINE,b.ASSESS_STATUS,b.PK_COUNTRY,b.PK_CREATOR)
|
||||
insert (PK_MEMBER, period, SETTLE_MONTH, ASSESS_TYPE, PK_AWARDS, ASSESS_TARGET,
|
||||
IS_EXAMINE, ASSESS_STATUS, PK_COUNTRY, PK_CREATOR)
|
||||
values (b.PK_MEMBER, b.period, b.SETTLE_MONTH, b.ASSESS_TYPE, b.PK_AWARDS, b.ASSESS_TARGET,
|
||||
b.IS_EXAMINE, b.ASSESS_STATUS, b.PK_COUNTRY, b.PK_CREATOR)
|
||||
</insert>
|
||||
|
||||
<update id="createCuMemberAssessTable">
|
||||
create table ${tableName}
|
||||
(
|
||||
<include refid="CuMemberAssessColumn"></include>
|
||||
)
|
||||
</update>
|
||||
|
||||
<update id="createCuMemberTableUniqueIndex">
|
||||
create unique index ${tableName}_PK_M on ${tableName}(PK_MEMBER,period, assess_type)
|
||||
</update>
|
||||
|
||||
<update id="updateAssessPeriodBeginByBeforeMonth">
|
||||
merge into ${tableName} a
|
||||
using (select pk_member,assess_type,month_surplus from ${beforeTableName} cs
|
||||
inner join cu_member cm
|
||||
on cs.pk_member=cm.pk_id and cm.del_flag=0
|
||||
where period = #{sourcePeriod} and assess_type = #{assessType} and cm.system_type=0) b
|
||||
on (a.pk_member = b.pk_member and a.assess_type = b.assess_type)
|
||||
when matched then
|
||||
update set a.month_balance = b.month_surplus where a.del_flag= 0 and a.period= #{period}
|
||||
using (select pk_member, assess_type, month_surplus
|
||||
from ${beforeTableName} cs
|
||||
inner join cu_member cm
|
||||
on cs.pk_member = cm.pk_id and cm.del_flag = 0
|
||||
where period = #{sourcePeriod}
|
||||
and assess_type = #{assessType}
|
||||
and cm.system_type = 0) b
|
||||
on (a.pk_member = b.pk_member and a.assess_type = b.assess_type)
|
||||
when matched then
|
||||
update set a.month_balance = b.month_surplus where a.del_flag= 0 and a.period= #{period}
|
||||
</update>
|
||||
<update id="updateAssessPeriodAddBySaOrder">
|
||||
merge into ${tableName} a
|
||||
|
@ -124,12 +149,12 @@
|
|||
#{item}
|
||||
</foreach>
|
||||
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||||
<!-- <if test="assessType == 0">
|
||||
union all
|
||||
select pk_member,order_achieve order_achieve from sa_t_order
|
||||
where del_flag = 0 and order_status = 1 and order_type =21
|
||||
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||||
</if>-->
|
||||
<!-- <if test="assessType == 0">
|
||||
union all
|
||||
select pk_member,order_achieve order_achieve from sa_t_order
|
||||
where del_flag = 0 and order_status = 1 and order_type =21
|
||||
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||||
</if>-->
|
||||
)
|
||||
group by pk_member
|
||||
) b
|
||||
|
@ -139,54 +164,75 @@
|
|||
</update>
|
||||
|
||||
<update id="updateAssessPeriodExemptBalanceByUsed">
|
||||
update ${tableName} set month_surplus = month_balance+month_add
|
||||
where del_flag= 0 and period = #{period}
|
||||
update ${tableName}
|
||||
set month_surplus = month_balance + month_add
|
||||
where del_flag = 0
|
||||
and period = #{period}
|
||||
</update>
|
||||
|
||||
<update id="updateAssessPeriodCheckBalanceByUsed">
|
||||
update ${tableName} set assess_status = 0, month_used = assess_target, month_surplus = month_balance+month_add-assess_target
|
||||
where del_flag= 0 and assess_status=2 and period = #{period} and assess_target <= month_balance+month_add
|
||||
update ${tableName}
|
||||
set assess_status = 0,
|
||||
month_used = assess_target,
|
||||
month_surplus = month_balance + month_add - assess_target
|
||||
where del_flag = 0
|
||||
and assess_status = 2
|
||||
and period = #{period}
|
||||
and assess_target <= month_balance + month_add
|
||||
</update>
|
||||
|
||||
<update id="updateAssessCuMemberToRepExempt">
|
||||
merge into ${tableName} a
|
||||
using (
|
||||
select distinct pk_member,#{period} period,0 assess_type from(
|
||||
select pk_id pk_member from cu_member where del_flag =0 and category =0
|
||||
and pay_status = 1
|
||||
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||||
union
|
||||
select pk_member from cu_member_awards
|
||||
where del_flag=0 and purchase_status= 0 and
|
||||
period >= #{startPeriod} and period < #{endPeriod}
|
||||
union
|
||||
select pk_member from ${settleTableName} ct
|
||||
inner join bd_awards ba
|
||||
on ct.pk_awards = ba.pk_id
|
||||
where ct.purchase_status=0 and ba.purchase_check >0)
|
||||
) b
|
||||
on (a.pk_member = b.pk_member and a.period=b.period and a.assess_type=b.assess_type)
|
||||
when matched then
|
||||
update set a.is_examine=0
|
||||
using (
|
||||
select distinct pk_member, #{period} period, 0 assess_type
|
||||
from (
|
||||
select pk_id pk_member
|
||||
from cu_member
|
||||
where del_flag = 0
|
||||
and category = 0
|
||||
and pay_status = 1
|
||||
and pay_time >= #{startDate, jdbcType=DATE}
|
||||
and pay_time < #{endDate, jdbcType=DATE}
|
||||
union
|
||||
select pk_member
|
||||
from cu_member_awards
|
||||
where del_flag = 0
|
||||
and purchase_status = 0
|
||||
and period >= #{startPeriod}
|
||||
and period < #{endPeriod}
|
||||
union
|
||||
select pk_member
|
||||
from ${settleTableName} ct
|
||||
inner join bd_awards ba
|
||||
on ct.pk_awards = ba.pk_id
|
||||
where ct.purchase_status = 0
|
||||
and ba.purchase_check > 0)
|
||||
) b
|
||||
on (a.pk_member = b.pk_member and a.period = b.period and a.assess_type = b.assess_type)
|
||||
when matched then
|
||||
update set a.is_examine = 0
|
||||
</update>
|
||||
|
||||
<update id="updateCuMemberSettleToRepExempt">
|
||||
merge into ${settleTableName} a
|
||||
using ( select distinct pk_id pk_member from cu_member where del_flag =0 and category =0
|
||||
and pay_status = 1
|
||||
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||||
<!--union
|
||||
select distinct pk_member from cu_member_awards
|
||||
where del_flag=0 and purchase_status= 0 and
|
||||
period >= #{startPeriod} and period < #{endPeriod}-->
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.purchase_status=0
|
||||
using ( select distinct pk_id pk_member from cu_member where del_flag =0 and category =0
|
||||
and pay_status = 1
|
||||
and pay_time >= #{startDate, jdbcType=DATE} and pay_time < #{endDate, jdbcType=DATE}
|
||||
<!--union
|
||||
select distinct pk_member from cu_member_awards
|
||||
where del_flag=0 and purchase_status= 0 and
|
||||
period >= #{startPeriod} and period < #{endPeriod}-->
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.purchase_status=0
|
||||
</update>
|
||||
|
||||
<delete id="deleteCuMemberAssessByPeriod">
|
||||
delete from ${tableName} where period = #{period} and del_flag=0
|
||||
delete
|
||||
from ${tableName}
|
||||
where period = #{period}
|
||||
and del_flag = 0
|
||||
</delete>
|
||||
|
||||
<select id="queryAssessPeriodByRevokeOrder" resultMap="CuMemberAssess">
|
||||
|
@ -212,13 +258,22 @@
|
|||
</select>
|
||||
|
||||
<select id="queryCuMemberShareAssess" resultType="com.hzs.common.domain.member.detail.CuMemberAssess">
|
||||
select pk_member,PERIOD,PK_AWARDS,assess_status,pk_country from ${tableName} where period= #{period} and assess_type=1
|
||||
and assess_status in(0,1) and pk_country=1
|
||||
select pk_member, PERIOD, PK_AWARDS, assess_status, pk_country
|
||||
from ${tableName}
|
||||
where period = #{period}
|
||||
and assess_type = 1
|
||||
and assess_status in (0, 1)
|
||||
and pk_country = 1
|
||||
union
|
||||
select ca.pk_member,ca.PERIOD,ca.PK_AWARDS,ca.assess_status,ca.pk_country from ${tableName} ca
|
||||
inner join bd_awards ba
|
||||
on ca.PK_AWARDS=ba.pk_id
|
||||
where period= #{period} and assess_type=0 and assess_status in(0,1) and ca.pk_country >1 and ba.awards_value>0
|
||||
select ca.pk_member, ca.PERIOD, ca.PK_AWARDS, ca.assess_status, ca.pk_country
|
||||
from ${tableName} ca
|
||||
inner join bd_awards ba
|
||||
on ca.PK_AWARDS = ba.pk_id
|
||||
where period = #{period}
|
||||
and assess_type = 0
|
||||
and assess_status in (0, 1)
|
||||
and ca.pk_country > 1
|
||||
and ba.awards_value > 0
|
||||
</select>
|
||||
|
||||
|
||||
|
@ -226,7 +281,7 @@
|
|||
<select id="selectAssessList"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
|
||||
select * from (
|
||||
select * from (
|
||||
SELECT
|
||||
a.PK_ASSESS pkAssess,
|
||||
a.PK_MEMBER pkMember,
|
||||
|
@ -259,7 +314,7 @@
|
|||
AND b.ASSESS_STATUS = #{assessStatus}
|
||||
</if>
|
||||
|
||||
<if test="changeType ==null and assessStatus==null ">
|
||||
<if test="changeType ==null and assessStatus==null ">
|
||||
UNION ALL
|
||||
select
|
||||
null pkAssess,
|
||||
|
@ -271,26 +326,26 @@
|
|||
ORDER_ASS_ACHIEVE orderAssAchieve,
|
||||
ORDER_ACHIEVE orderAchieve,
|
||||
ORDER_CODE orderCode
|
||||
from SA_ORDER
|
||||
from SA_ORDER
|
||||
WHERE
|
||||
DEL_FLAG = 0
|
||||
<if test="pkMember != null ">
|
||||
AND PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
<if test="orderTypeList != null ">
|
||||
and ORDER_TYPE in
|
||||
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="assessType == 0 ">
|
||||
AND order_achieve > 0
|
||||
</if>
|
||||
<if test="assessType == 1 ">
|
||||
AND ORDER_ASS_ACHIEVE > 0
|
||||
</if>
|
||||
<if test="orderTypeList != null ">
|
||||
and ORDER_TYPE in
|
||||
<foreach collection="orderTypeList" item="item" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="assessType == 0 ">
|
||||
AND order_achieve > 0
|
||||
</if>
|
||||
<if test="assessType == 1 ">
|
||||
AND ORDER_ASS_ACHIEVE > 0
|
||||
</if>
|
||||
|
||||
<if test="pkCountry != null ">
|
||||
<if test="pkCountry != null ">
|
||||
AND PK_COUNTRY = #{pkCountry}
|
||||
</if>
|
||||
|
||||
|
@ -300,15 +355,12 @@
|
|||
<if test="endDate != null">
|
||||
and PAY_TIME < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
|
||||
</if>
|
||||
</if>
|
||||
)
|
||||
order by tradeTime desc
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
<!--查询会员月度考核-->
|
||||
|
||||
<!--查询会员月度考核-->
|
||||
<select id="getMemberAssessMonthList"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
SELECT
|
||||
|
@ -322,7 +374,7 @@
|
|||
WHERE
|
||||
a.DEL_FLAG = 0
|
||||
<if test="period != null ">
|
||||
AND a.period=#{period}
|
||||
AND a.period=#{period}
|
||||
</if>
|
||||
<if test="pkMember != null ">
|
||||
AND a.PK_MEMBER = #{pkMember}
|
||||
|
@ -333,20 +385,18 @@
|
|||
<if test="assessType != null ">
|
||||
AND a.ASSESS_TYPE = #{assessType}
|
||||
</if>
|
||||
|
||||
|
||||
|
||||
</select>
|
||||
|
||||
<!--根据考核类型查询会员订单信息-->
|
||||
<select id="getOrderByAssessList"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
select PK_MEMBER pkMember,
|
||||
select PK_MEMBER pkMember,
|
||||
PAY_TIME tradeTime,
|
||||
ORDER_ASS_ACHIEVE orderAssAchieve,
|
||||
ORDER_ACHIEVE orderAchieve,
|
||||
ORDER_TYPE orderType,
|
||||
ORDER_CODE orderCode
|
||||
from SA_ORDER
|
||||
from SA_ORDER
|
||||
WHERE
|
||||
DEL_FLAG = 0
|
||||
<if test="pkMember != null ">
|
||||
|
@ -367,7 +417,6 @@
|
|||
order by PAY_TIME desc
|
||||
</select>
|
||||
|
||||
|
||||
<!--查询会员订单考核积分-->
|
||||
<select id="getOrderAssessList" parameterType="com.hzs.bonus.detail.vo.CuMemberAssessVO"
|
||||
resultType="com.hzs.bonus.detail.vo.CuMemberAssessVO">
|
||||
|
@ -384,7 +433,6 @@
|
|||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="pkMember != null ">
|
||||
AND a.PK_MEMBER = #{pkMember}
|
||||
</if>
|
||||
|
@ -397,16 +445,84 @@
|
|||
<if test="endDate != null">
|
||||
and a.PAY_TIME < #{endDate, jdbcType=DATE}
|
||||
</if>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberAssTotal" resultType="com.hzs.common.domain.member.detail.CuMemberAssess">
|
||||
select cm.pk_awards pkAwards,count(cm.pk_id) assessStatus from ${settleTable} cm
|
||||
inner join bd_awards ba
|
||||
on cm.pk_awards = ba.pk_id
|
||||
where period= #{period} and cm.pk_country= #{pkCountry} and ASSESS_TYPE=1 and ASSESS_STATUS in(0,1)
|
||||
and ba.awards_value >0
|
||||
select cm.pk_awards pkAwards, count(cm.pk_id) assessStatus
|
||||
from ${settleTable} cm
|
||||
inner join bd_awards ba
|
||||
on cm.pk_awards = ba.pk_id
|
||||
where period = #{period}
|
||||
and cm.pk_country = #{pkCountry}
|
||||
and ASSESS_TYPE = 1
|
||||
and ASSESS_STATUS in (0, 1)
|
||||
and ba.awards_value > 0
|
||||
group by cm.pk_awards
|
||||
order by pk_awards
|
||||
</select>
|
||||
|
||||
<!-- 创建免考会员数据 -->
|
||||
<update id="createPassMemberAssess">
|
||||
merge into #{accessTableName} cma
|
||||
using (
|
||||
select cm.pk_id
|
||||
from cu_member cm
|
||||
where cm.del_flag = 0
|
||||
and cm.pay_status = 1
|
||||
and cm.pay_time >= #{startDate}
|
||||
and #{endDate} >= cm.pay_time
|
||||
) tmp
|
||||
on (cma.pk_member = tmp.pk_id and assess_type = 0 and cma.del_flag = 0)
|
||||
when not matched then
|
||||
insert
|
||||
(pk_member,
|
||||
assess_type,
|
||||
is_examine,
|
||||
assess_status,
|
||||
pk_creator,
|
||||
start_date,
|
||||
end_date)
|
||||
values (tmp.pk_id,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
tmp.pk_id,
|
||||
#{startDate},
|
||||
#{endDate})
|
||||
</update>
|
||||
|
||||
<!-- 处理考试通过会员 -->
|
||||
<update id="updatePassMemberAssess">
|
||||
merge into #{accessTableName} cma
|
||||
using (select tmp.pk_member, tmp.pay_time
|
||||
from (select so.pk_member, min(so.pay_time) pay_time
|
||||
from sa_order so
|
||||
where so.del_flag = 0
|
||||
and so.order_type = 3
|
||||
and so.order_status = 1
|
||||
and so.order_achieve > 0
|
||||
and so.pay_time >= #{startDate}
|
||||
and #{endDate} >= so.pay_time
|
||||
group by so.pk_member) tmp
|
||||
left join #{accessTableName} cma
|
||||
on cma.pk_member = tmp.pk_member
|
||||
and cma.assess_type = 0
|
||||
and cma.del_flag = 0
|
||||
where cma.start_date is null
|
||||
or tmp.pay_time > cma.start_date) tmp
|
||||
on (cma.pk_member = tmp.pk_member and assess_type = 0 and cma.del_flag = 0 and cma.is_examine = 1)
|
||||
when matched then
|
||||
update set cma.start_date = tmp.pay_time
|
||||
when not matched then
|
||||
insert
|
||||
(pk_member,
|
||||
assess_type,
|
||||
is_examine,
|
||||
assess_status,
|
||||
pk_creator,
|
||||
start_date,
|
||||
end_date)
|
||||
values (tmp.pk_member, 0, 1, 0, tmp.pk_member, tmp.pay_time, #{endDate})
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -28,13 +28,6 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* @Description:
|
||||
* @Author: zhangjing
|
||||
* @Time: 2022/11/8 13:50
|
||||
* @Classname: CuMemberAssessController
|
||||
* @PackageName: com.hzs.member.detail.controller.manage
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/assess")
|
||||
public class ApiCuMemberAssessController extends BaseController {
|
||||
|
@ -209,11 +202,7 @@ public class ApiCuMemberAssessController extends BaseController {
|
|||
|
||||
|
||||
/**
|
||||
* @description: 查询考核积分
|
||||
* @author: zhang jing
|
||||
* @date: 2023/3/14 17:14
|
||||
* @param: [cuMemberAssessVO]
|
||||
* @return: com.hzs.common.core.web.domain.AjaxResult
|
||||
* 查询考核积分
|
||||
**/
|
||||
@GetMapping("/assAchieve")
|
||||
public AjaxResult assAchieve(CuMemberAssessVO cuMemberAssessVO) {
|
||||
|
|
|
@ -9,56 +9,41 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 考核业绩变化明细表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-10-28
|
||||
*/
|
||||
public interface ICuMemberAssessDetailService extends IService<CuMemberAssessDetail> {
|
||||
|
||||
/*
|
||||
* @description: 根据期间删除会员考核记录
|
||||
* @author: sui q
|
||||
* @date: 2023/5/25 10:52
|
||||
* @param: null null
|
||||
* 根据期间删除会员考核记录
|
||||
**/
|
||||
void deleteCuMemberAssessDetailByPeriod(String tableName, Integer period);
|
||||
|
||||
/*
|
||||
* @description: 每月考试将订单插入会员考核明细
|
||||
* @author: sui q
|
||||
* @date: 2023/5/25 11:36
|
||||
* @param: null null
|
||||
* 每月考试将订单插入会员考核明细
|
||||
**/
|
||||
void insertCuMemberAssesDetailByOrder(String tableName, Integer period, Date startDate, Date endDate);
|
||||
|
||||
/**
|
||||
* 插入考核记录
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @param period 期间
|
||||
* @param newCuMemberSettleExtList 会员列表
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 15:56
|
||||
*/
|
||||
void insertCuMemberAssessDetailByPeriod(String tableName, Integer period, List<CuMemberSettleExt> newCuMemberSettleExtList);
|
||||
|
||||
/**
|
||||
* 新增或修改会员考核明细表,根据期间,重算就是修改
|
||||
*
|
||||
* @param tableName 来源表
|
||||
* @param period 期间
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/8 11:21
|
||||
* @param period 期间
|
||||
*/
|
||||
void updateCuMemberAssessDetailByPeriod(String tableName, Integer period);
|
||||
|
||||
/**
|
||||
* 删除可能会发生变动的会员的考核明细
|
||||
* 删除可能会发生变动的会员的考核明细
|
||||
*
|
||||
* @param revokeDetailList 变动的记录
|
||||
* @Author: sui q
|
||||
* @Date: 2022/11/9 15:31
|
||||
*/
|
||||
*/
|
||||
void deleteCuMemberAssessDetailByList(List<CuMemberAssessDetail> revokeDetailList);
|
||||
}
|
||||
|
|
|
@ -16,12 +16,7 @@ import java.util.Date;
|
|||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 考核业绩变化明细表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-10-28
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberAssessDetailServiceImpl extends ServiceImpl<CuMemberAssessDetailMapper, CuMemberAssessDetail> implements ICuMemberAssessDetailService {
|
||||
|
@ -54,7 +49,7 @@ public class CuMemberAssessDetailServiceImpl extends ServiceImpl<CuMemberAssessD
|
|||
if (purchaseMemberList.size() > 0) {
|
||||
List<List<?>> purchaseHandleCutList = cuMemberBonusSettle.handleCutList(purchaseMemberList);
|
||||
purchaseHandleCutList.forEach(cuMemberBonusSettleList ->
|
||||
baseMapper.insertCuMemberAssessDetailByPeriod(tableName, period, cuMemberBonusSettleList, EAssessmentType.REPURCHASE_ASSESS.getValue()) );
|
||||
baseMapper.insertCuMemberAssessDetailByPeriod(tableName, period, cuMemberBonusSettleList, EAssessmentType.REPURCHASE_ASSESS.getValue()));
|
||||
}
|
||||
if (shareMemberList.size() > 0) {
|
||||
List<List<?>> shareHandleCutList = cuMemberBonusSettle.handleCutList(shareMemberList);
|
||||
|
|
|
@ -119,7 +119,7 @@ public class EnumsController extends BaseController {
|
|||
public AjaxResult AssessmentType() {
|
||||
List<EnumEntity> enumEntityList = new ArrayList<>();
|
||||
for (EAssessmentType value : EAssessmentType.values()) {
|
||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.ASSESSMENT_TYPE));
|
||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel()));
|
||||
}
|
||||
return AjaxResult.success(enumEntityList);
|
||||
}
|
||||
|
@ -411,7 +411,7 @@ public class EnumsController extends BaseController {
|
|||
public AjaxResult algebra() {
|
||||
List<EnumEntity> enumEntityList = new ArrayList<>();
|
||||
for (EAlgebra value : EAlgebra.values()) {
|
||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.ALGEBRA));
|
||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel()));
|
||||
}
|
||||
return AjaxResult.success(enumEntityList);
|
||||
}
|
||||
|
@ -462,7 +462,7 @@ public class EnumsController extends BaseController {
|
|||
List<EnumEntity> enumEntityList = new ArrayList<>();
|
||||
for (EAreaType value : EAreaType.values()) {
|
||||
if (value.getEnable() == EnableStatus.ENABLE.getValue()) {
|
||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.EAREA_TYPE));
|
||||
enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel()));
|
||||
}
|
||||
}
|
||||
return AjaxResult.success(enumEntityList);
|
||||
|
|
|
@ -43,10 +43,6 @@ public class EnumsInitController {
|
|||
for (EUpgradeType value : EUpgradeType.values()) {
|
||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
}
|
||||
// 地区类型枚举
|
||||
for (EAreaType value : EAreaType.values()) {
|
||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
}
|
||||
// 结算方式枚举
|
||||
for (ESettleType value : ESettleType.values()) {
|
||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
|
@ -81,11 +77,6 @@ public class EnumsInitController {
|
|||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
}
|
||||
|
||||
// 代数枚举
|
||||
for (EAlgebra value : EAlgebra.values()) {
|
||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
}
|
||||
|
||||
// 奖衔枚举枚举
|
||||
for (EAwards value : EAwards.values()) {
|
||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
|
@ -318,13 +309,6 @@ public class EnumsInitController {
|
|||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 考核类型
|
||||
*/
|
||||
for (EAssessmentType value : EAssessmentType.values()) {
|
||||
initList.add(this.createData(value.getKey(), value.getLabel()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 免考类型
|
||||
*/
|
||||
|
|
|
@ -311,18 +311,11 @@ public class EnumsPrefixConstants {
|
|||
*/
|
||||
public static final String MEMBER_ASSESS_STATUS = "ENU_MEMBER_ASSESS_S_";
|
||||
|
||||
|
||||
/**
|
||||
* 订单类型枚举类
|
||||
*/
|
||||
public static final String ORDER_TYPE = "ENU_ORDER_T_";
|
||||
|
||||
/**
|
||||
* 盘点类型
|
||||
*/
|
||||
public static final String INVENTORY_TYPE = "ENU_INV_T_";
|
||||
|
||||
|
||||
/**
|
||||
* 客商类型
|
||||
*/
|
||||
|
@ -430,11 +423,6 @@ public class EnumsPrefixConstants {
|
|||
* 性别
|
||||
*/
|
||||
public static final String SEX = "ENU_SEX_U_";
|
||||
/**
|
||||
* 代数
|
||||
*/
|
||||
public static final String ALGEBRA = "ENU_ALGEBRA_A_";
|
||||
|
||||
|
||||
/**
|
||||
* 所属专区枚举类
|
||||
|
@ -730,11 +718,6 @@ public class EnumsPrefixConstants {
|
|||
* 区域类型
|
||||
*/
|
||||
public static final String EREGION_TYPE = "ENU_EREGION_TYPE_";
|
||||
/**
|
||||
* 地区类型
|
||||
*/
|
||||
public static final String EAREA_TYPE = "ENU_EAREA_TYPE_";
|
||||
|
||||
|
||||
/**
|
||||
* 登录状态
|
||||
|
@ -758,7 +741,6 @@ public class EnumsPrefixConstants {
|
|||
*/
|
||||
public static final String NOTICE_TYPE = "ENU_NOTICE_TYPE_";
|
||||
|
||||
|
||||
/**
|
||||
* 公告功能类型
|
||||
*/
|
||||
|
|
|
@ -6,7 +6,6 @@ public class TableNameConstants {
|
|||
* 业绩表
|
||||
*/
|
||||
public static final String CU_MEMBER_ACHIEVE = "cu_member_achieve";
|
||||
|
||||
/**
|
||||
* 业绩表序列
|
||||
*/
|
||||
|
@ -16,7 +15,6 @@ public class TableNameConstants {
|
|||
* 会员网体记录
|
||||
*/
|
||||
public static final String CU_MEMBER_TREE = "cu_member_tree";
|
||||
|
||||
/**
|
||||
* 会员网体记录序列
|
||||
*/
|
||||
|
@ -36,22 +34,20 @@ public class TableNameConstants {
|
|||
* 会员结算秒结表
|
||||
*/
|
||||
public static final String CU_MEMBER_SECOND = "cu_member_second";
|
||||
|
||||
/**
|
||||
* 会员极差秒结表
|
||||
*/
|
||||
public static final String CU_MEMBER_RANGE_S = "cu_member_second_s";
|
||||
|
||||
/**
|
||||
* 会员考核记录表
|
||||
*/
|
||||
public static final String CU_MEMBER_ASSESS = "cu_member_assess";
|
||||
|
||||
/**
|
||||
* 用于报表,月表数据
|
||||
*/
|
||||
public static final String CU_MEMBER_MONTH = "cu_member_month";
|
||||
|
||||
/**
|
||||
* 会员考核记录表
|
||||
*/
|
||||
public static final String CU_MEMBER_ASSESS = "cu_member_assess";
|
||||
/**
|
||||
* 会员考核记录表序列
|
||||
*/
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
package com.hzs.common.core.enums;
|
||||
|
||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 代数枚举(复购直推)
|
||||
*
|
||||
* @author: hzs
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
@ -16,45 +13,45 @@ public enum EAlgebra {
|
|||
/**
|
||||
* 一代
|
||||
*/
|
||||
ONE_ALGEBRA(1, "一代", 0, EnumsPrefixConstants.ALGEBRA + "1"),
|
||||
ONE_ALGEBRA(1, "一代", 0),
|
||||
|
||||
/**
|
||||
* 二代
|
||||
*/
|
||||
TWO_ALGEBRA(2, "二代", 0, EnumsPrefixConstants.ALGEBRA + "2"),
|
||||
TWO_ALGEBRA(2, "二代", 0),
|
||||
|
||||
/**
|
||||
* 三代
|
||||
*/
|
||||
THREE_ALGEBRA(3, "三代", 0, EnumsPrefixConstants.ALGEBRA + "3"),
|
||||
THREE_ALGEBRA(3, "三代", 0),
|
||||
/**
|
||||
* 四代
|
||||
*/
|
||||
FOUR_ALGEBRA(4, "四代", 0, EnumsPrefixConstants.ALGEBRA + "4"),
|
||||
FOUR_ALGEBRA(4, "四代", 0),
|
||||
/**
|
||||
* 五代
|
||||
*/
|
||||
FIVE_ALGEBRA(5, "五代", 0, EnumsPrefixConstants.ALGEBRA + "5"),
|
||||
FIVE_ALGEBRA(5, "五代", 0),
|
||||
/**
|
||||
* 六代
|
||||
*/
|
||||
SIX_ALGEBRA(6, "六代", 0, EnumsPrefixConstants.ALGEBRA + "6"),
|
||||
SIX_ALGEBRA(6, "六代", 0),
|
||||
/**
|
||||
* 七代
|
||||
*/
|
||||
SEVEN_ALGEBRA(7, "七代", 0, EnumsPrefixConstants.ALGEBRA + "7"),
|
||||
SEVEN_ALGEBRA(7, "七代", 0),
|
||||
/**
|
||||
* 八代
|
||||
*/
|
||||
EIGHT_ALGEBRA(8, "八代", 0, EnumsPrefixConstants.ALGEBRA + "8"),
|
||||
EIGHT_ALGEBRA(8, "八代", 0),
|
||||
/**
|
||||
* 九代
|
||||
*/
|
||||
NINE_ALGEBRA(9, "九代", 0, EnumsPrefixConstants.ALGEBRA + "9"),
|
||||
NINE_ALGEBRA(9, "九代", 0),
|
||||
/**
|
||||
* 十代
|
||||
*/
|
||||
TEN_ALGEBRA(10, "十代", 0, EnumsPrefixConstants.ALGEBRA + "10"),
|
||||
TEN_ALGEBRA(10, "十代", 0),
|
||||
|
||||
;
|
||||
|
||||
|
@ -70,18 +67,5 @@ public enum EAlgebra {
|
|||
* 是否启用(0=是,1=否) -- 来源EYesNo
|
||||
*/
|
||||
private final int enable;
|
||||
/**
|
||||
* 国际化翻译key值
|
||||
*/
|
||||
private final String key;
|
||||
|
||||
public static String getALGEBRA(int value){
|
||||
for (EAlgebra ALGEBRA : EAlgebra.values()) {
|
||||
if (ALGEBRA.getValue() == value){
|
||||
return ALGEBRA.getLabel();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.hzs.common.core.enums;
|
||||
|
||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
|
@ -14,17 +13,17 @@ public enum EAreaType {
|
|||
/**
|
||||
* 1=州
|
||||
*/
|
||||
PROVINCE(1, "省", 0, EnumsPrefixConstants.EAREA_TYPE + "1"),
|
||||
PROVINCE(1, "省", 0),
|
||||
|
||||
/**
|
||||
* 2=国家
|
||||
*/
|
||||
CITY(2, "市", 0, EnumsPrefixConstants.EAREA_TYPE + "2"),
|
||||
CITY(2, "市", 0),
|
||||
|
||||
/**
|
||||
* 3=区/县
|
||||
*/
|
||||
COUNTY(3, "区/县", 0, EnumsPrefixConstants.EAREA_TYPE + "3"),
|
||||
|
||||
COUNTY(3, "区/县", 0),
|
||||
|
||||
;
|
||||
|
||||
|
@ -40,10 +39,6 @@ public enum EAreaType {
|
|||
* 是否启用(0=是,1=否) -- 来源EYesNo
|
||||
*/
|
||||
private final int enable;
|
||||
/**
|
||||
* 国际化翻译key值
|
||||
*/
|
||||
private final String key;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -5,11 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Description: 考核状态
|
||||
* @Author: sui q
|
||||
* @Time: 2022/11/9 13:33
|
||||
* @Classname: EAssessStatus
|
||||
* @PackageName: com.hzs.common.core.enums
|
||||
* 考核状态
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.hzs.common.core.enums;
|
||||
|
||||
import com.hzs.common.core.constant.EnumsPrefixConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
|
@ -10,18 +9,21 @@ import lombok.Getter;
|
|||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum EAssessmentType {
|
||||
|
||||
/**
|
||||
* 0=复购考核
|
||||
* 0=复购考核(见点考核)
|
||||
*/
|
||||
REPURCHASE_ASSESS(0, "复购考核", 0, EnumsPrefixConstants.ASSESSMENT_TYPE + 0),
|
||||
REPURCHASE_ASSESS(0, "复购考核", 0),
|
||||
|
||||
/**
|
||||
* 1=分红考核
|
||||
*/
|
||||
SHARE_ASSESS(1, "分红考核", 0, EnumsPrefixConstants.ASSESSMENT_TYPE + 1),
|
||||
SHARE_ASSESS(1, "分红考核", 0),
|
||||
|
||||
/**
|
||||
* 2=不考核
|
||||
*/
|
||||
NO_ASSESSMENT(2, "不考核", 0, EnumsPrefixConstants.ASSESSMENT_TYPE + 2),
|
||||
NO_ASSESSMENT(2, "不考核", 0),
|
||||
|
||||
;
|
||||
|
||||
|
@ -37,9 +39,5 @@ public enum EAssessmentType {
|
|||
* 是否启用(0=是,1=否) -- 来源EYesNo
|
||||
*/
|
||||
private final int enable;
|
||||
/**
|
||||
* 国际化翻译key值
|
||||
*/
|
||||
private final String key;
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import lombok.AllArgsConstructor;
|
|||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @Description: 奖金收益状态 奖金明细表(cu_member_bonus_XX)
|
||||
* 奖金收益状态 奖金明细表(cu_member_bonus_XX)
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
|
|
|
@ -89,7 +89,6 @@ public enum EBonusItems {
|
|||
* 车奖积分
|
||||
*/
|
||||
// CAR_BONUS_POINTS(19, "车奖积分", 0, EnumsPrefixConstants.BONUS_ITEMS + 19),
|
||||
|
||||
/**
|
||||
* 海粉收益 禁用
|
||||
*/
|
||||
|
|
|
@ -12,14 +12,6 @@ import lombok.Data;
|
|||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2024-10-15
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
|
|
|
@ -4,15 +4,8 @@ import com.hzs.common.domain.member.achieve.CuMemberRange;
|
|||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @description: 极差扩展
|
||||
* @author: sui q
|
||||
* @time: 2024/10/15 15:32
|
||||
* @classname: CuMemberRangeExt
|
||||
* @package_name: com.hzs.common.domain.member.achieve.ext
|
||||
* version 1.0.0
|
||||
* 极差扩展
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
|
|
|
@ -11,17 +11,11 @@ import lombok.*;
|
|||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 会员信息-会员考核记录
|
||||
* </p>
|
||||
*
|
||||
* @author hzs
|
||||
* @since 2022-08-31
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@KeySequence("CU_MEMBER_ASSESS_SEQ")
|
||||
@TableName("CU_MEMBER_ASSESS")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
|
@ -30,12 +24,6 @@ public class CuMemberAssess extends BaseEntity {
|
|||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId("PK_ID")
|
||||
private Long pkId;
|
||||
|
||||
/**
|
||||
* 会员编号
|
||||
*/
|
||||
|
@ -55,7 +43,7 @@ public class CuMemberAssess extends BaseEntity {
|
|||
private String settleMonth;
|
||||
|
||||
/**
|
||||
* 考核类型( 0=复购考核,1=分红考核)
|
||||
* 考核类型 0=复购考核 1=分红考核 5=见点考核
|
||||
*/
|
||||
@TableField("ASSESS_TYPE")
|
||||
private Integer assessType;
|
||||
|
|
|
@ -170,4 +170,10 @@ public class BdGrade extends BaseEntity {
|
|||
@TableField("BOX_SMALL_TOTAL")
|
||||
private Integer boxSmallTotal;
|
||||
|
||||
/**
|
||||
* 见点代数
|
||||
*/
|
||||
@TableField("ALGEBRA")
|
||||
private Integer algebra;
|
||||
|
||||
}
|
||||
|
|
|
@ -12,12 +12,7 @@ import lombok.experimental.Accessors;
|
|||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 复购直推配置
|
||||
* </p>
|
||||
*
|
||||
* @author zhangjing
|
||||
* @since 2023-06-29
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
|
Loading…
Reference in New Issue