3
0
Fork 0

Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
sangelxiu1 2025-06-14 09:47:41 +08:00
commit b0658f1bc3
7 changed files with 155 additions and 181 deletions

View File

@ -9,11 +9,7 @@ import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @Description: 新零售会员信息 * 新零售会员信息
* @Author: jiang chao
* @Time: 2024/12/11 15:46
* @Classname: RetailMemberDataDTO
* @PackageName: com.hzs.system.common.dto
*/ */
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@ -32,14 +28,14 @@ public class RetailMemberDataDTO implements Serializable {
private Integer pkGrade; private Integer pkGrade;
/** /**
* 极差奖衔 * 当月奖衔
*/ */
private Integer pkAwards; private Integer pkAwards;
/** /**
* 荣誉奖衔 * 荣誉奖衔
*/ */
private Integer pkRangeAwards; private Integer pkMaxAwards;
/** /**
* 国家名称 * 国家名称
@ -71,23 +67,24 @@ public class RetailMemberDataDTO implements Serializable {
* 等级图标 * 等级图标
*/ */
private String gradeIcon; private String gradeIcon;
/** /**
* 极差奖衔显示 * 月度奖衔显示
*/ */
private String awardsVal; private String awardsVal;
/** /**
* 极差奖衔图标 * 月度奖衔图标
*/ */
private String awardsIcon; private String awardsIcon;
/** /**
* 荣誉奖衔显示 * 荣誉奖衔显示
*/ */
private String rangeAwardsVal; private String maxAwardsVal;
/** /**
* 荣誉奖衔图标 * 荣誉奖衔图标
*/ */
private String rangeAwardsIcon; private String maxAwardsIcon;
/** /**
* 币种图标 * 币种图标

View File

@ -1,20 +1,12 @@
package com.hzs.bonus.bonus.service; 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 { public interface IBonusGrantService {
/** /**
* 每天公布奖金,定时任务 * 每天公布奖金,定时任务
*
* @return: void
* @Author: sui q
* @Date: 2023/3/20 17:06
*/ */
void publishBonusByPeriodEveryDay(); void publishBonusByPeriodEveryDay();
@ -24,9 +16,6 @@ public interface IBonusGrantService {
* 手动公布奖金 * 手动公布奖金
* *
* @param settleDate 日期 * @param settleDate 日期
* @return: void
* @Author: sui q
* @Date: 2023/3/20 17:06
*/ */
void publishBonusByPeriod(Integer pkCountry, String settleDate); void publishBonusByPeriod(Integer pkCountry, String settleDate);
@ -34,9 +23,6 @@ public interface IBonusGrantService {
* 手动不公布奖金 * 手动不公布奖金
* *
* @param settleDate 日期 * @param settleDate 日期
* @return: void
* @Author: sui q
* @Date: 2023/3/20 17:06
*/ */
void noPublishBonusByPeriod(Integer pkCountry, String settleDate); void noPublishBonusByPeriod(Integer pkCountry, String settleDate);
@ -44,9 +30,6 @@ public interface IBonusGrantService {
* 每天发放奖金 * 每天发放奖金
* *
* @param settleDate 日期 * @param settleDate 日期
* @return: void
* @Author: sui q
* @Date: 2023/3/20 17:06
*/ */
Boolean grantBonusByPeriod(Integer pkCountry, String settleDate); Boolean grantBonusByPeriod(Integer pkCountry, String settleDate);
@ -56,9 +39,6 @@ public interface IBonusGrantService {
* 每天奖金提现 * 每天奖金提现
* *
* @param settleDate 日期 * @param settleDate 日期
* @return: void
* @Author: sui q
* @Date: 2023/3/20 17:07
*/ */
void withdrawalBonusByPeriod(Integer pkCountry, String settleDate); void withdrawalBonusByPeriod(Integer pkCountry, String settleDate);

View File

@ -1,6 +1,5 @@
package com.hzs.bonus.bonus.service.impl; 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.ICuMemberAccountService;
import com.hzs.bonus.account.service.ICuMemberTradeDetailService; import com.hzs.bonus.account.service.ICuMemberTradeDetailService;
import com.hzs.bonus.account.service.ICuMemberTradeService; 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.ICurrencyServiceApi;
import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAccountServiceApi; import com.hzs.system.config.IAccountServiceApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -33,70 +33,47 @@ import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
/** /**
* 金发放实现类 * 金发放实现类
*/ */
@Slf4j
@Service @Service
public class BonusGrantServiceImpl implements IBonusGrantService { public class BonusGrantServiceImpl implements IBonusGrantService {
@DubboReference @DubboReference
IAccountServiceApi accountServiceApi; IAccountServiceApi iAccountServiceApi;
@DubboReference
IActivityServiceApi activityServiceApi;
private ICuMemberBonusService cuMemberBonusService;
private ICuMemberSettlePeriodService cuMemberSettlePeriodService;
@Autowired
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired @Autowired
private MemberToolsHandler memberToolsHandler; private MemberToolsHandler memberToolsHandler;
@Autowired
private ICuMemberTradeService cuMemberTradeService; private ICuMemberTradeService iCuMemberTradeService;
@Autowired
private ICuMemberTradeDetailService cuMemberTradeDetailService; private ICuMemberTradeDetailService iCuMemberTradeDetailService;
@Autowired
private ICuMemberAccountService cuMemberAccountService; private ICuMemberAccountService iCuMemberAccountService;
@DubboReference @DubboReference
ICountryServiceApi countryServiceApi; ICountryServiceApi iCountryServiceApi;
@DubboReference @DubboReference
ICurrencyServiceApi currencyServiceApi; ICurrencyServiceApi iCurrencyServiceApi;
@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;
}
@Transactional(rollbackFor = Exception.class)
@Override @Override
public void publishBonusByPeriodEveryDay() { public void publishBonusByPeriodEveryDay() {
Map<Integer, BdCountry> integerBdCountryMap = countryServiceApi.getAllCountryMap().getData(); Map<Integer, BdCountry> integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData();
if (integerBdCountryMap.size() > 0) { if (integerBdCountryMap.size() > 0) {
for (Integer pkCountry : integerBdCountryMap.keySet()) { for (Integer pkCountry : integerBdCountryMap.keySet()) {
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate())); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate()));
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate); CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
log.info("公布奖金参数, settleDate: {}, ", settleDate);
// 设置不公布后不能自动公布奖金 // 设置不公布后不能自动公布奖金
if (EYesNo.PROHIBIT.getIntValue() == cuMemberSettlePeriod.getIsPublish()) { if (EYesNo.PROHIBIT.getIntValue() == cuMemberSettlePeriod.getIsPublish()) {
return; return;
} }
log.info("公布奖金期数状态, isPublish: {}, ", cuMemberSettlePeriod.getIsPublish());
publishBonus(cuMemberSettlePeriod); publishBonus(cuMemberSettlePeriod);
} }
} }
@ -105,13 +82,16 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void grantWithdrawBonusByPeriodEveryDay() { public void grantWithdrawBonusByPeriodEveryDay() {
Map<Integer, BdCountry> integerBdCountryMap = countryServiceApi.getAllCountryMap().getData(); Map<Integer, BdCountry> integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData();
if (integerBdCountryMap.size() > 0) { if (integerBdCountryMap.size() > 0) {
for (Integer pkCountry : integerBdCountryMap.keySet()) { for (Integer pkCountry : integerBdCountryMap.keySet()) {
// 先发放奖金验证是否是周结周结发放上周的直接变为可提现 // 先发放奖金验证是否是周结周结发放上周的直接变为可提现
Date grantDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate()); Date grantDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate());
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, grantDay); String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, grantDay);
grantBonusByPeriod(pkCountry, settleDate); grantBonusByPeriod(pkCountry, settleDate);
// 设置奖金可以提现
withdrawalBonusByPeriod(pkCountry, settleDate);
// 周奖发放上周的奖金 // 周奖发放上周的奖金
// CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate); // CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
// Date withdrawDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, grantDay); // Date withdrawDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, grantDay);
@ -119,29 +99,26 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// !CountryConstants.CHINA_COUNTRY.equals(pkCountry)) { // !CountryConstants.CHINA_COUNTRY.equals(pkCountry)) {
// withdrawDay = grantDay; // 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) { private void publishBonus(CuMemberSettlePeriodExt cuMemberSettlePeriod) {
if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsPublish()) { if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsPublish()) {
return; 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()); cuMemberSettlePeriod.getPkId(), cuMemberSettlePeriod.getPkId());
// 更新期间表状态 // 更新期间表状态cu_member_settle_period_detail
cuMemberSettlePeriod.setIsPublish(EYesNo.YES.getIntValue()); cuMemberSettlePeriod.setIsPublish(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime()); cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
} }
@Override @Override
@ -160,11 +137,11 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 更新期间表状态 // 更新期间表状态
cuMemberSettlePeriod.setIsPublish(EYesNo.PROHIBIT.getIntValue()); cuMemberSettlePeriod.setIsPublish(EYesNo.PROHIBIT.getIntValue());
cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime()); cuMemberSettlePeriod.setPublishDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
} }
private CuMemberSettlePeriodExt getCuMemberSettlePeriod(Integer pkCountry, String settleDate) { 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.setPkModified(MagicNumberConstants.PK_ADMIN);
cuMemberSettlePeriodByDate.setModifiedTime(DateUtils.currentDateTime()); cuMemberSettlePeriodByDate.setModifiedTime(DateUtils.currentDateTime());
return cuMemberSettlePeriodByDate; return cuMemberSettlePeriodByDate;
@ -189,16 +166,16 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
return Boolean.FALSE; return Boolean.FALSE;
} }
} }
Map<Integer, BdAccount> bdAccountValueMap = accountServiceApi.getAccountMapByCountry(pkCountry).getData(); Map<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
Date currentDateTime = DateUtils.currentDateTime(); 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) { if (cuMemberBonusList.size() > 0) {
// 新增交易流水 // 新增交易流水
List<CuMemberTrade> cuMemberTradeList = new ArrayList<>(); List<CuMemberTrade> cuMemberTradeList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { 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); 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); // 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<>(); 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++) { for (int i = 0; i < cuMemberTradeList.size(); i++) {
CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i); CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i);
cuMemberTrade.setPkId(seqList.get(i)); cuMemberTrade.setPkId(seqList.get(i));
@ -233,18 +210,18 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
} }
} }
// 批量保存交易流水交易流水明细 // 批量保存交易流水交易流水明细
cuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList); iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
cuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList); 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.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
} }
// 更新期间表状态 // 更新期间表状态
cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue()); cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime()); cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -253,14 +230,14 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 奖金发放 // 奖金发放
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate); CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
// 查询奖金表查询未发放的奖金明细 // 查询奖金表查询未发放的奖金明细
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());
Map<Integer, BdAccount> bdAccountValueMap = accountServiceApi.getAccountMapByCountry(pkCountry).getData(); Map<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
Date currentDateTime = DateUtils.currentDateTime(); Date currentDateTime = DateUtils.currentDateTime();
if (cuMemberBonusList.size() > 0) { if (cuMemberBonusList.size() > 0) {
// 新增交易流水 // 新增交易流水
List<CuMemberTrade> cuMemberTradeList = new ArrayList<>(); List<CuMemberTrade> cuMemberTradeList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> { 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); 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); // 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<>(); 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++) { for (int i = 0; i < cuMemberTradeList.size(); i++) {
CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i); CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i);
cuMemberTrade.setPkId(seqList.get(i)); cuMemberTrade.setPkId(seqList.get(i));
@ -295,12 +272,12 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
} }
} }
// 批量保存交易流水交易流水明细 // 批量保存交易流水交易流水明细
cuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList); iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList);
cuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList); 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.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 // 更新交易明细表状态 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.setIsWithdrawal(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setWithdrawalDate(DateUtils.currentDateTime()); cuMemberSettlePeriod.setWithdrawalDate(DateUtils.currentDateTime());
cuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
} }
/** /**

View File

@ -33,6 +33,7 @@ import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.system.config.BdRangeAwards; import com.hzs.common.domain.system.config.BdRangeAwards;
import com.hzs.member.detail.ICuMemberServiceLogServiceApi; import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
import com.hzs.system.config.dto.BonusConfigDTO; import com.hzs.system.config.dto.BonusConfigDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -44,8 +45,9 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 计算乐享极差收益 * 计算新零售收益
*/ */
@Slf4j
@Component @Component
public class BonusSettleRangeHandle extends BonusSettleHandle { public class BonusSettleRangeHandle extends BonusSettleHandle {
@ -920,9 +922,10 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(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) { if (areaBoxNum > bigBoxNum) {
// 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区 // 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区
bigBoxNum = areaBoxNum; bigBoxNum = areaBoxNum;
@ -941,6 +944,9 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
} }
} }
if (targetMemberRangeExt.getPkMember() == 201) {
log.info("targetMemberRangeExt: {}", targetMemberRangeExt);
}
// 计算奖衔荣誉级别 // 计算奖衔荣誉级别
while (true) { while (true) {
// 当前实时奖衔值 + 5获取下一个奖衔值 // 当前实时奖衔值 + 5获取下一个奖衔值
@ -983,58 +989,58 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
} }
break; break;
} }
// 计算分红奖衔秒结不走这个地方 // // 计算分红奖衔秒结不走这个地方
while (true) { // while (true) {
if (null == targetMemberRangeExt.getShareAwardsValue()) { // if (null == targetMemberRangeExt.getShareAwardsValue()) {
break; // break;
} // }
int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5; // int awardsValue = targetMemberRangeExt.getShareAwardsValue() + 5;
if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) { // if (targetMemberRangeExt.getGradeValue().equals(EGrade.S_VIP.getValue()) && retailAwardsMap.containsKey(awardsValue)) {
BdAwards bdAwards = retailAwardsMap.get(awardsValue); // BdAwards bdAwards = retailAwardsMap.get(awardsValue);
// 先验证累计业绩 // // 先验证累计业绩
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) { // if (ComputeUtil.compareValue(ComputeUtil.computeAdd(targetMemberRangeExt.getTeamMonthPv(), targetMemberRangeExt.getMonthConsumePv()), bdAwards.getShareTotalCheck())) {
// 验证小区计算小区业绩 // // 验证小区计算小区业绩
List<CuMemberRetailRangeExt> cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember()); // List<CuMemberRetailRangeExt> cuMemberRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeExtByParent(rangeTableName, targetMemberRangeExt.getPkMember());
BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv(); // BigDecimal consumeBigPv = targetMemberRangeExt.getMonthConsumePv();
// if (ComputeUtil.compareGreaterThan(targetMemberRangeExt.getBigTeamPv(), consumeBigPv)) { //// if (ComputeUtil.compareGreaterThan(targetMemberRangeExt.getBigTeamPv(), consumeBigPv)) {
// consumeBigPv = targetMemberRangeExt.getBigTeamPv(); //// 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;
// }
// } // }
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRangeExtList) { // BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv));
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { // if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); // if (bdAwards.getPlaceDeptNum() > 0) {
} // // 验证是否有多个区满足业绩
BigDecimal consumePv = ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()); // List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck());
if (ComputeUtil.compareGreaterThan(consumePv, consumeBigPv)) { // int enoughNum = 0;
consumeBigPv = consumePv; // for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) {
} // if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
} // cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember());
BigDecimal smallAreaPv = ComputeUtil.computeAdd(targetMemberRangeExt.getMonthConsumePv(), ComputeUtil.computeSubtract(targetMemberRangeExt.getTeamMonthPv(), consumeBigPv)); // }
if (ComputeUtil.compareValue(smallAreaPv, bdAwards.getShareCommunityCheck())) { // if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) {
if (bdAwards.getPlaceDeptNum() > 0) { // enoughNum += 1;
// 验证是否有多个区满足业绩 // }
List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList = iCuMemberRetailRangeService.queryCuMemberRetailRangeEnoughAchieve(rangeTableName, targetMemberRangeExt.getPkMember(), bdAwards.getShareCommunityCheck()); // }
int enoughNum = 0; // if (bdAwards.getPlaceDeptNum() > enoughNum) {
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : cuMemberRetailRangeExtList) { // break;
if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) { // }
cuMemberRetailRangeExt = memberRangeExtMap.get(cuMemberRetailRangeExt.getPkMember()); // }
} // cuMemberAwardsList.add(getCuMemberRetailAwards(targetMemberRangeExt, period, saOrderExt, bdAwards, EAwardsType.SHARE_TYPE.getValue()));
if (ComputeUtil.compareValue(ComputeUtil.computeAdd(cuMemberRetailRangeExt.getMonthConsumePv(), cuMemberRetailRangeExt.getTeamMonthPv()), bdAwards.getShareCommunityCheck())) { // targetMemberRangeExt.setShareAwardsValue(bdAwards.getAwardsValue());
enoughNum += 1; // targetMemberRangeExt.setPkShareAwards(bdAwards.getPkId());
} // continue;
} // }
if (bdAwards.getPlaceDeptNum() > enoughNum) { // }
break; // }
} // 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())) { if (memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
cuMemberRetailRangeExt = memberRangeExtMap.get(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) { if (areaBoxNum > bigBoxNum) {
// 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区 // 实际订单累计盒数 大于 累计消费盒数实际订单累计盒数为大区
bigBoxNum = areaBoxNum; bigBoxNum = areaBoxNum;

View File

@ -37,7 +37,7 @@ public class MemberRetailServiceImpl implements IMemberRetailService {
.pkSettleCountry(CountryConstants.CHINA_COUNTRY) .pkSettleCountry(CountryConstants.CHINA_COUNTRY)
.pkGrade(cuMember.getPkSettleGrade()) .pkGrade(cuMember.getPkSettleGrade())
.pkAwards(cuMember.getPkAwards()) .pkAwards(cuMember.getPkAwards())
.pkRangeAwards(cuMember.getPkRangeAwards()) .pkMaxAwards(cuMember.getPkMaxAwards())
.build()).getData(); .build()).getData();
// 会员标记0=正常会员1=V0会员2=V5会员 // 会员标记0=正常会员1=V0会员2=V5会员
@ -77,8 +77,10 @@ public class MemberRetailServiceImpl implements IMemberRetailService {
.gradeIcon(memberDataDTO.getGradeIcon()) .gradeIcon(memberDataDTO.getGradeIcon())
.pkAwardsVal(memberDataDTO.getAwardsVal()) .pkAwardsVal(memberDataDTO.getAwardsVal())
.awardsIcon(memberDataDTO.getAwardsIcon()) .awardsIcon(memberDataDTO.getAwardsIcon())
.pkRangeAwardsVal(memberDataDTO.getRangeAwardsVal()) .pkMaxAwardsVal(memberDataDTO.getMaxAwardsVal())
.rangeAwardsIcon(memberDataDTO.getRangeAwardsIcon()) .maxAwardsIcon(memberDataDTO.getMaxAwardsIcon())
// .pkRangeAwardsVal(memberDataDTO.getRangeAwardsVal())
// .rangeAwardsIcon(memberDataDTO.getRangeAwardsIcon())
.currencyIcon(memberDataDTO.getCurrencyIcon()) .currencyIcon(memberDataDTO.getCurrencyIcon())
.memberSign(memberSign) .memberSign(memberSign)
.control(control) .control(control)

View File

@ -76,22 +76,31 @@ public class RetailMemberInfoVO implements Serializable {
private String gradeIcon; private String gradeIcon;
/** /**
* 极差奖衔名称 * 当月奖衔名称
*/ */
private String pkAwardsVal; private String pkAwardsVal;
/** /**
* 极差奖衔图标 * 当月奖衔图标
*/ */
private String awardsIcon; private String awardsIcon;
/** /**
* 荣誉奖衔名称 * 荣誉奖衔名称
*/ */
private String pkRangeAwardsVal; private String pkMaxAwardsVal;
/** /**
* 荣誉奖衔图标 * 荣誉奖衔图标
*/ */
private String rangeAwardsIcon; private String maxAwardsIcon;
// /**
// * 荣誉奖衔名称
// */
// private String pkRangeAwardsVal;
// /**
// * 荣誉奖衔图标
// */
// private String rangeAwardsIcon;
/** /**
* 币种图标 * 币种图标

View File

@ -131,7 +131,7 @@ public class CommonServiceProvider implements ICommonServiceApi {
memberDataDTO.setGradeVal(bdGrade.getGradeName()); memberDataDTO.setGradeVal(bdGrade.getGradeName());
} }
} }
// 极差奖衔 // 当月奖衔
if (null != memberDataDTO.getPkAwards()) { if (null != memberDataDTO.getPkAwards()) {
BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkAwards()); BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkAwards());
if (null != bdAwards) { if (null != bdAwards) {
@ -143,13 +143,15 @@ public class CommonServiceProvider implements ICommonServiceApi {
} }
} }
// 荣誉奖衔 // 荣誉奖衔
if (null != memberDataDTO.getPkRangeAwards()) { if (null != memberDataDTO.getPkMaxAwards()) {
BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkRangeAwards()); BdAwards bdAwards = iBdAwardsService.getBdAwardsOne(memberDataDTO.getPkMaxAwards());
if (null != bdAwards) { if (null != bdAwards) {
memberDataDTO.setRangeAwardsVal(bdAwards.getAwardsName()); if (EAwards.MEMBER.getValue() == bdAwards.getAwardsValue()) {
if (EAwards.MEMBER.getValue() != bdAwards.getAwardsValue()) { memberDataDTO.setMaxAwardsVal(memberDataDTO.getAwardsVal());
// 奖衔如果是会员级别不返回图标 memberDataDTO.setMaxAwardsIcon(memberDataDTO.getAwardsIcon());
memberDataDTO.setRangeAwardsIcon(bdAwards.getImage()); } else {
memberDataDTO.setMaxAwardsVal(bdAwards.getAwardsName());
memberDataDTO.setMaxAwardsIcon(bdAwards.getImage());
} }
} }
} }