forked from angelo/java-retail-app
## 计算会员等级直推会员不算注水;奖金公布接口调整;
This commit is contained in:
parent
da6ffb525d
commit
2f6e9da598
|
@ -1,20 +1,12 @@
|
|||
package com.hzs.bonus.bonus.service;
|
||||
|
||||
/**
|
||||
* @Description: 奖金发放
|
||||
* @Author: sui q
|
||||
* @Time: 2023/3/20 17:04
|
||||
* @Classname: IBonusGrantService
|
||||
* @PackageName: com.hzs.member.bonus.service
|
||||
* 奖金发放
|
||||
*/
|
||||
public interface IBonusGrantService {
|
||||
|
||||
/**
|
||||
* 每天公布奖金,定时任务
|
||||
*
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/3/20 17:06
|
||||
*/
|
||||
void publishBonusByPeriodEveryDay();
|
||||
|
||||
|
@ -24,9 +16,6 @@ public interface IBonusGrantService {
|
|||
* 手动公布奖金
|
||||
*
|
||||
* @param settleDate 日期
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/3/20 17:06
|
||||
*/
|
||||
void publishBonusByPeriod(Integer pkCountry, String settleDate);
|
||||
|
||||
|
@ -34,9 +23,6 @@ public interface IBonusGrantService {
|
|||
* 手动不公布奖金
|
||||
*
|
||||
* @param settleDate 日期
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/3/20 17:06
|
||||
*/
|
||||
void noPublishBonusByPeriod(Integer pkCountry, String settleDate);
|
||||
|
||||
|
@ -44,9 +30,6 @@ public interface IBonusGrantService {
|
|||
* 每天发放奖金
|
||||
*
|
||||
* @param settleDate 日期
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/3/20 17:06
|
||||
*/
|
||||
Boolean grantBonusByPeriod(Integer pkCountry, String settleDate);
|
||||
|
||||
|
@ -56,9 +39,6 @@ public interface IBonusGrantService {
|
|||
* 每天奖金提现
|
||||
*
|
||||
* @param settleDate 日期
|
||||
* @return: void
|
||||
* @Author: sui q
|
||||
* @Date: 2023/3/20 17:07
|
||||
*/
|
||||
void withdrawalBonusByPeriod(Integer pkCountry, String settleDate);
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.hzs.activity.base.IActivityServiceApi;
|
||||
import com.hzs.bonus.account.service.ICuMemberAccountService;
|
||||
import com.hzs.bonus.account.service.ICuMemberTradeDetailService;
|
||||
import com.hzs.bonus.account.service.ICuMemberTradeService;
|
||||
|
@ -22,6 +21,7 @@ import com.hzs.system.base.ICountryServiceApi;
|
|||
import com.hzs.system.base.ICurrencyServiceApi;
|
||||
import com.hzs.system.base.dto.CurrencyDTO;
|
||||
import com.hzs.system.config.IAccountServiceApi;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -33,70 +33,47 @@ import java.time.temporal.ChronoUnit;
|
|||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 金发放实现类
|
||||
* 奖金发放实现类
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class BonusGrantServiceImpl implements IBonusGrantService {
|
||||
|
||||
@DubboReference
|
||||
IAccountServiceApi accountServiceApi;
|
||||
@DubboReference
|
||||
IActivityServiceApi activityServiceApi;
|
||||
|
||||
private ICuMemberBonusService cuMemberBonusService;
|
||||
|
||||
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
|
||||
IAccountServiceApi iAccountServiceApi;
|
||||
|
||||
@Autowired
|
||||
private ICuMemberBonusService iCuMemberBonusService;
|
||||
@Autowired
|
||||
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
|
||||
@Autowired
|
||||
private MemberToolsHandler memberToolsHandler;
|
||||
|
||||
private ICuMemberTradeService cuMemberTradeService;
|
||||
|
||||
private ICuMemberTradeDetailService cuMemberTradeDetailService;
|
||||
|
||||
private ICuMemberAccountService cuMemberAccountService;
|
||||
@Autowired
|
||||
private ICuMemberTradeService iCuMemberTradeService;
|
||||
@Autowired
|
||||
private ICuMemberTradeDetailService iCuMemberTradeDetailService;
|
||||
@Autowired
|
||||
private ICuMemberAccountService iCuMemberAccountService;
|
||||
|
||||
@DubboReference
|
||||
ICountryServiceApi countryServiceApi;
|
||||
ICountryServiceApi iCountryServiceApi;
|
||||
@DubboReference
|
||||
ICurrencyServiceApi currencyServiceApi;
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberAccountService(ICuMemberAccountService cuMemberAccountService) {
|
||||
this.cuMemberAccountService = cuMemberAccountService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberTradeDetailService(ICuMemberTradeDetailService cuMemberTradeDetailService) {
|
||||
this.cuMemberTradeDetailService = cuMemberTradeDetailService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberTradeService(ICuMemberTradeService cuMemberTradeService) {
|
||||
this.cuMemberTradeService = cuMemberTradeService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberSettlePeriodService(ICuMemberSettlePeriodService cuMemberSettlePeriodService) {
|
||||
this.cuMemberSettlePeriodService = cuMemberSettlePeriodService;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setCuMemberBonusService(ICuMemberBonusService cuMemberBonusService) {
|
||||
this.cuMemberBonusService = cuMemberBonusService;
|
||||
}
|
||||
ICurrencyServiceApi iCurrencyServiceApi;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void publishBonusByPeriodEveryDay() {
|
||||
Map<Integer, BdCountry> integerBdCountryMap = countryServiceApi.getAllCountryMap().getData();
|
||||
Map<Integer, BdCountry> integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData();
|
||||
if (integerBdCountryMap.size() > 0) {
|
||||
for (Integer pkCountry : integerBdCountryMap.keySet()) {
|
||||
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate()));
|
||||
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
|
||||
log.info("公布奖金参数, settleDate: {}, ", settleDate);
|
||||
// 设置不公布后不能自动公布奖金
|
||||
if (EYesNo.PROHIBIT.getIntValue() == cuMemberSettlePeriod.getIsPublish()) {
|
||||
return;
|
||||
}
|
||||
log.info("公布奖金期数状态, isPublish: {}, ", cuMemberSettlePeriod.getIsPublish());
|
||||
publishBonus(cuMemberSettlePeriod);
|
||||
}
|
||||
}
|
||||
|
@ -105,13 +82,16 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void grantWithdrawBonusByPeriodEveryDay() {
|
||||
Map<Integer, BdCountry> integerBdCountryMap = countryServiceApi.getAllCountryMap().getData();
|
||||
Map<Integer, BdCountry> integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData();
|
||||
if (integerBdCountryMap.size() > 0) {
|
||||
for (Integer pkCountry : integerBdCountryMap.keySet()) {
|
||||
// 先发放奖金,验证是否是周结,周结发放上周的,直接变为可提现
|
||||
Date grantDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate());
|
||||
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, grantDay);
|
||||
grantBonusByPeriod(pkCountry, settleDate);
|
||||
// 设置奖金可以提现
|
||||
withdrawalBonusByPeriod(pkCountry, settleDate);
|
||||
|
||||
// 周奖发放上周的奖金
|
||||
// CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
|
||||
// Date withdrawDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, grantDay);
|
||||
|
@ -119,29 +99,26 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
// !CountryConstants.CHINA_COUNTRY.equals(pkCountry)) {
|
||||
// withdrawDay = grantDay;
|
||||
// }
|
||||
withdrawalBonusByPeriod(pkCountry, DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, grantDay));
|
||||
// 设置奖金可以提现
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* @description: 公布奖金
|
||||
* @author: sui q
|
||||
* @date: 2023/4/24 14:19
|
||||
* @param: null null
|
||||
* 公布奖金
|
||||
**/
|
||||
private void publishBonus(CuMemberSettlePeriodExt cuMemberSettlePeriod) {
|
||||
if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsPublish()) {
|
||||
return;
|
||||
}
|
||||
// 更新奖金状态
|
||||
cuMemberBonusService.updateCuMemberBonusStatus(null, EGrantStatus.PUBLISHED.getValue(), EGrantStatus.SETTLED.getValue(),
|
||||
|
||||
log.info("公布奖金开始, periodId: {}, ", cuMemberSettlePeriod.getPkId());
|
||||
// 更新奖金状态(cu_member_bonus)
|
||||
iCuMemberBonusService.updateCuMemberBonusStatus(null, EGrantStatus.PUBLISHED.getValue(), EGrantStatus.SETTLED.getValue(),
|
||||
cuMemberSettlePeriod.getPkId(), cuMemberSettlePeriod.getPkId());
|
||||
// 更新期间表状态
|
||||
// 更新期间表状态(cu_member_settle_period_detail)
|
||||
cuMemberSettlePeriod.setIsPublish(EYesNo.YES.getIntValue());
|
||||
cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime());
|
||||
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -160,11 +137,11 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
// 更新期间表状态
|
||||
cuMemberSettlePeriod.setIsPublish(EYesNo.PROHIBIT.getIntValue());
|
||||
cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime());
|
||||
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
}
|
||||
|
||||
private CuMemberSettlePeriodExt getCuMemberSettlePeriod(Integer pkCountry, String settleDate) {
|
||||
CuMemberSettlePeriodExt cuMemberSettlePeriodByDate = cuMemberSettlePeriodService.getCuMemberSettlePeriod(pkCountry, DateUtils.parseStringToDate(settleDate));
|
||||
CuMemberSettlePeriodExt cuMemberSettlePeriodByDate = iCuMemberSettlePeriodService.getCuMemberSettlePeriod(pkCountry, DateUtils.parseStringToDate(settleDate));
|
||||
cuMemberSettlePeriodByDate.setPkModified(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberSettlePeriodByDate.setModifiedTime(DateUtils.currentDateTime());
|
||||
return cuMemberSettlePeriodByDate;
|
||||
|
@ -189,16 +166,16 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
return Boolean.FALSE;
|
||||
}
|
||||
}
|
||||
Map<Integer, BdAccount> bdAccountValueMap = accountServiceApi.getAccountMapByCountry(pkCountry).getData();
|
||||
Map<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
|
||||
Date currentDateTime = DateUtils.currentDateTime();
|
||||
|
||||
// 查询奖金表,查询未发放的奖金明细
|
||||
List<CuMemberBonus> cuMemberBonusList = cuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
List<CuMemberBonus> cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
if (cuMemberBonusList.size() > 0) {
|
||||
// 新增交易流水
|
||||
List<CuMemberTrade> cuMemberTradeList = new ArrayList<>();
|
||||
cuMemberBonusList.forEach(cuMemberBonus -> {
|
||||
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
|
||||
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
|
||||
// 奖金币(首购+复购+云代+海粉+嗨粉+店铺)
|
||||
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate);
|
||||
// 重销币(商城重消+平台服务费)
|
||||
|
@ -211,10 +188,10 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
// 车奖积分
|
||||
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
|
||||
});
|
||||
List<Long> seqList = cuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
|
||||
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
|
||||
// 新增流水明细,记录奖金明细的发放状态、消费明细
|
||||
List<CuMemberTradeDetail> cuMemberTradeDetailList = new ArrayList<>();
|
||||
Map<Integer, BdAccount> bdAccountMap = accountServiceApi.getAccountListByCountry(pkCountry).getData();
|
||||
Map<Integer, BdAccount> bdAccountMap = iAccountServiceApi.getAccountListByCountry(pkCountry).getData();
|
||||
for (int i = 0; i < cuMemberTradeList.size(); i++) {
|
||||
CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i);
|
||||
cuMemberTrade.setPkId(seqList.get(i));
|
||||
|
@ -233,18 +210,18 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
}
|
||||
}
|
||||
// 批量保存交易流水,交易流水明细
|
||||
cuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
|
||||
cuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
|
||||
iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
|
||||
iCuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
|
||||
// 批量更新会员账户,更新余额
|
||||
cuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
iCuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
// 更新奖金表发放状态
|
||||
cuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
|
||||
iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
|
||||
cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
}
|
||||
// 更新期间表状态
|
||||
cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue());
|
||||
cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime());
|
||||
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
|
@ -253,14 +230,14 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
// 奖金发放
|
||||
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
|
||||
// 查询奖金表,查询未发放的奖金明细
|
||||
List<CuMemberBonus> cuMemberBonusList = cuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
Map<Integer, BdAccount> bdAccountValueMap = accountServiceApi.getAccountMapByCountry(pkCountry).getData();
|
||||
List<CuMemberBonus> cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
Map<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
|
||||
Date currentDateTime = DateUtils.currentDateTime();
|
||||
if (cuMemberBonusList.size() > 0) {
|
||||
// 新增交易流水
|
||||
List<CuMemberTrade> cuMemberTradeList = new ArrayList<>();
|
||||
cuMemberBonusList.forEach(cuMemberBonus -> {
|
||||
CurrencyDTO currencyDTO = currencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
|
||||
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData();
|
||||
// 奖金币(首购+复购+云代+海粉+嗨粉+店铺)
|
||||
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate);
|
||||
// 重销币(商城重消+平台服务费)
|
||||
|
@ -273,10 +250,10 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
// 车奖积分
|
||||
// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate);
|
||||
});
|
||||
List<Long> seqList = cuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
|
||||
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
|
||||
// 新增流水明细,记录奖金明细的发放状态、消费明细
|
||||
List<CuMemberTradeDetail> cuMemberTradeDetailList = new ArrayList<>();
|
||||
Map<Integer, BdAccount> bdAccountMap = accountServiceApi.getAccountListByCountry(pkCountry).getData();
|
||||
Map<Integer, BdAccount> bdAccountMap = iAccountServiceApi.getAccountListByCountry(pkCountry).getData();
|
||||
for (int i = 0; i < cuMemberTradeList.size(); i++) {
|
||||
CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i);
|
||||
cuMemberTrade.setPkId(seqList.get(i));
|
||||
|
@ -295,12 +272,12 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
}
|
||||
}
|
||||
// 批量保存交易流水,交易流水明细
|
||||
cuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
|
||||
cuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
|
||||
iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
|
||||
iCuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList);
|
||||
// 批量更新会员账户,更新余额
|
||||
cuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
iCuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
// 更新奖金表发放状态
|
||||
cuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
|
||||
iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(),
|
||||
cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
}
|
||||
}
|
||||
|
@ -327,15 +304,15 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
|
|||
}
|
||||
}
|
||||
// 批量更新会员账户,更新余额
|
||||
cuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
|
||||
iCuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
|
||||
// 更新交易明细表状态 cu_member_trade_detail
|
||||
cuMemberTradeDetailService.updateCuMemberTradeDetailByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
|
||||
iCuMemberTradeDetailService.updateCuMemberTradeDetailByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
|
||||
// 更新奖金表发放状态
|
||||
cuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.WITHDRAWAL.getValue(), EGrantStatus.GRANT.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.WITHDRAWAL.getValue(), EGrantStatus.GRANT.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
|
||||
// 更新期间表状态
|
||||
cuMemberSettlePeriod.setIsWithdrawal(EYesNo.YES.getIntValue());
|
||||
cuMemberSettlePeriod.setWithdrawalDate(DateUtils.currentDateTime());
|
||||
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -33,6 +33,7 @@ import com.hzs.common.domain.system.config.BdGrade;
|
|||
import com.hzs.common.domain.system.config.BdRangeAwards;
|
||||
import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
|
||||
import com.hzs.system.config.dto.BonusConfigDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
@ -44,8 +45,9 @@ import java.util.*;
|
|||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 计算乐享极差收益
|
||||
* 计算新零售收益
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class BonusSettleRangeHandle extends BonusSettleHandle {
|
||||
|
||||
|
@ -920,9 +922,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
}
|
||||
// 最新确认逻辑,计算大小区时,不需要去掉注水
|
||||
// 最新确认逻辑,计算大小区时,需要去掉注水
|
||||
// 伞下团队累计盒数 + 自己消费盒数
|
||||
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum();
|
||||
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum()
|
||||
- cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum();
|
||||
if (areaBoxNum > bigBoxNum) {
|
||||
// 实际订单累计盒数 大于 累计消费盒数,实际订单累计盒数为大区
|
||||
bigBoxNum = areaBoxNum;
|
||||
|
@ -941,6 +944,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (targetMemberRangeExt.getPkMember() == 201) {
|
||||
log.info("targetMemberRangeExt: {}", targetMemberRangeExt);
|
||||
}
|
||||
// 计算奖衔(荣誉级别)
|
||||
while (true) {
|
||||
// 当前实时奖衔值 + 5,获取下一个奖衔值
|
||||
|
@ -983,58 +989,58 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
}
|
||||
break;
|
||||
}
|
||||
// 计算分红奖衔(秒结不走这个地方)
|
||||
while (true) {
|
||||
if (null == targetMemberRangeExt.getShareAwardsValue()) {
|
||||
break;
|
||||
}
|
||||
int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
|
||||
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
|
||||
BdAwards bdAwards = retailAwardsMap.get(awardsValue);
|
||||
// 先验证累计业绩
|
||||
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
|
||||
// 验证小区,计算小区业绩
|
||||
List<CuMemberRetailRangeExt> cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
|
||||
BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
|
||||
// if (ComputeUtil.compareGreaterThan(targetMemberRangeExt.getBigTeamPv(), consumeBigPv)) {
|
||||
// consumeBigPv = targetMemberRangeExt.getBigTeamPv();
|
||||
// // 计算分红奖衔(秒结不走这个地方)
|
||||
// while (true) {
|
||||
// if (null == targetMemberRangeExt.getShareAwardsValue()) {
|
||||
// break;
|
||||
// }
|
||||
// int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
|
||||
// if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
|
||||
// BdAwards bdAwards = retailAwardsMap.get(awardsValue);
|
||||
// // 先验证累计业绩
|
||||
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
|
||||
// // 验证小区,计算小区业绩
|
||||
// List<CuMemberRetailRangeExt> cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
|
||||
// BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
|
||||
//// if (ComputeUtil.compareGreaterThan(targetMemberRangeExt.getBigTeamPv(), consumeBigPv)) {
|
||||
//// consumeBigPv = targetMemberRangeExt.getBigTeamPv();
|
||||
//// }
|
||||
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
|
||||
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
// }
|
||||
// BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
|
||||
// if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
|
||||
// consumeBigPv = consumePv;
|
||||
// }
|
||||
// }
|
||||
// BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
|
||||
// if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
|
||||
// if (bdAwards.getPlaceDeptNum() > 0) {
|
||||
// // 验证是否有多个区满足业绩
|
||||
// List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
|
||||
// int enoughNum = 0;
|
||||
// for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
|
||||
// if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
// cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
// }
|
||||
// if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
|
||||
// enoughNum += 1;
|
||||
// }
|
||||
// }
|
||||
// if (bdAwards.getPlaceDeptNum() > enoughNum) {
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue()));
|
||||
// targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
|
||||
// targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
|
||||
// continue;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) {
|
||||
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
}
|
||||
BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv());
|
||||
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) {
|
||||
consumeBigPv = consumePv;
|
||||
}
|
||||
}
|
||||
BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
|
||||
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
|
||||
if (bdAwards.getPlaceDeptNum() > 0) {
|
||||
// 验证是否有多个区满足业绩
|
||||
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
|
||||
int enoughNum = 0;
|
||||
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
|
||||
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
}
|
||||
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
|
||||
enoughNum += 1;
|
||||
}
|
||||
}
|
||||
if (bdAwards.getPlaceDeptNum() > enoughNum) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue()));
|
||||
targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
|
||||
targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1106,9 +1112,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
|
||||
}
|
||||
// 最新确认逻辑,计算大小区时,不需要去掉注水
|
||||
// 最新确认逻辑,计算大小区时,需要去掉注水
|
||||
// 伞下团队累计盒数 + 自己消费盒数
|
||||
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum();
|
||||
int areaBoxNum = cuMemberRetailRangeExt.getTeamBoxNum() + cuMemberRetailRangeExt.getConsumeBoxNum()
|
||||
- cuMemberRetailRangeExt.getBigBoxNum() - cuMemberRetailRangeExt.getSmallBoxNum();
|
||||
if (areaBoxNum > bigBoxNum) {
|
||||
// 实际订单累计盒数 大于 累计消费盒数,实际订单累计盒数为大区
|
||||
bigBoxNum = areaBoxNum;
|
||||
|
|
Loading…
Reference in New Issue