From 23aaaefc06f9fa2724dc6624cecdd320691fd51c Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Mon, 1 Sep 2025 11:28:00 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=A5=96=E9=87=91=E5=85=AC=E5=B8=83?= =?UTF-8?q?=E3=80=81=E5=8F=91=E6=94=BE=E6=94=B9=E5=9B=9E=E6=97=A5=E5=A4=84?= =?UTF-8?q?=E7=90=86=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manage/CuMemberSettleController.java | 27 +-- .../mapper/CuMemberSettlePeriodMapper.java | 7 - .../service/ICuMemberSettlePeriodService.java | 10 - .../impl/CuMemberSettlePeriodServiceImpl.java | 5 - .../api/ApiCuMemberBonusController.java | 14 +- .../bonus/service/IBonusGrantService.java | 7 +- .../service/impl/BonusGrantServiceImpl.java | 217 ++++++++---------- .../achieve/CuMemberSettlePeriodMapper.xml | 14 -- 8 files changed, 105 insertions(+), 196 deletions(-) diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/controller/manage/CuMemberSettleController.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/controller/manage/CuMemberSettleController.java index a95c698e..46678935 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/controller/manage/CuMemberSettleController.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/controller/manage/CuMemberSettleController.java @@ -140,7 +140,7 @@ public class CuMemberSettleController extends BaseController { return AjaxResult.error("每月15号和每月最后一天才能发放"); } - iBonusGrantService.grantBonusByPeriod(SecurityUtils.getPkCountry(), startSettleDate, endSettleDate); + iBonusGrantService.grantBonusByPeriod(SecurityUtils.getPkCountry(), startSettleDate); return AjaxResult.success(); } @@ -170,32 +170,9 @@ public class CuMemberSettleController extends BaseController { public AjaxResult withdrawalBonus(String settleDate) { Date startDate = DateUtils.parseStringToDate(settleDate); if (DateUtils.compareDateBefore(DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate()), startDate)) { - // 只能提现7天以外的奖金! return AjaxResult.error(TransactionUtils.getContent(BonusMsgConstants.WITHDRAW_VALIDATE_DATE)); } - - // 发放开始时间 - String startSettleDate = null; - // 发放结束时间 - String endSettleDate = null; - // 发放日期的天 - int dateDD = Integer.parseInt(DateUtils.parseDateTimeToStr(DateUtils.DD, startDate)); - // 发放最后一天 - int monthLast = Integer.parseInt(DateUtils.parseDateTimeToStr(DateUtils.DD, DateUtils.currentMonthLastDate(startDate))); - if (dateDD == 15) { - // 15号,发 上月24号 到 本月7号 - startSettleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(DateUtils.addMonths(startDate, -1), 24)); - endSettleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(startDate, 24)); - } else if (dateDD == monthLast) { - // 最后一天,发 8号 到 23号 - startSettleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(startDate, 8)); - endSettleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(startDate, 23)); - } - if (null == startSettleDate) { - return AjaxResult.error("每月15号和每月最后一天才能发放"); - } - - iBonusGrantService.withdrawalBonusByPeriod(SecurityUtils.getPkCountry(), startSettleDate, endSettleDate); + iBonusGrantService.withdrawalBonusByPeriod(SecurityUtils.getPkCountry(), settleDate); return AjaxResult.success(); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberSettlePeriodMapper.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberSettlePeriodMapper.java index 37ce3df0..dd4bd788 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberSettlePeriodMapper.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/mapper/CuMemberSettlePeriodMapper.java @@ -20,13 +20,6 @@ public interface CuMemberSettlePeriodMapper extends BaseMapper listMemberSettlePeriod(@Param("pkCountry") Integer pkCountry, - @Param("settleDate") Date settleDate, - @Param("endSettleDate") Date endSettleDate); - /** * 查询期间 */ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberSettlePeriodService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberSettlePeriodService.java index 30197dcc..c8e67462 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberSettlePeriodService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/ICuMemberSettlePeriodService.java @@ -29,16 +29,6 @@ public interface ICuMemberSettlePeriodService extends IService listCuMemberSettlePeriod(Integer pkCountry, Date date, Date endDate); - /** * 根据国家查询奖金期数返回到前台 */ diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java index 96a6a6d0..876efb8e 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/achieve/service/impl/CuMemberSettlePeriodServiceImpl.java @@ -204,11 +204,6 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl listCuMemberSettlePeriod(Integer pkCountry, Date date, Date endDate) { - return baseMapper.listMemberSettlePeriod(pkCountry, date, endDate); - } - private CuMemberSettlePeriod getCuMemberSettlePeriod(String date) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(CuMemberSettlePeriod::getSettleDate, DateUtils.parseStringToDate(date)); diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java index 39e168c0..3332b4e2 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/controller/api/ApiCuMemberBonusController.java @@ -39,17 +39,6 @@ public class ApiCuMemberBonusController extends BaseController { public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); -// // 当前日期的天 -// int dateDD = Integer.parseInt(DateUtils.parseDateTimeToStr(DateUtils.DD, bonusParam.getEndDate())); -// if (dateDD < 15) { -// // 今天日期小于15号,查询上月23号之前的 -// bonusParam.setEndDate(DateUtils.setDays(DateUtils.addMonths(bonusParam.getEndDate(), -1), 23)); -// } else { -// // 今天日期大于等于15号,查询本月7号之前的 -// bonusParam.setEndDate(DateUtils.setDays(bonusParam.getEndDate(), 7)); -// } -// // 新查询奖金明细 -// List cuMemberBonusList = iCuMemberBonusService.listMemberBonus(bonusParam); List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(bonusParam); List firstPurchaseVOList = new ArrayList<>(); @@ -68,8 +57,7 @@ public class ApiCuMemberBonusController extends BaseController { public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) { setBonusParam(bonusParam); - // 新查询奖金明细 - List cuMemberBonusList = iCuMemberBonusService.listMemberBonus(bonusParam); + List cuMemberBonusList = iCuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam); MemberRealIncomeVO memberRealIncomeVO = new MemberRealIncomeVO(); if (CollectionUtil.isEmpty(cuMemberBonusList)) { diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/IBonusGrantService.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/IBonusGrantService.java index 4ddeb100..0d2bc5dd 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/IBonusGrantService.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/IBonusGrantService.java @@ -25,10 +25,9 @@ public interface IBonusGrantService { /** * 每天发放奖金 * - * @param settleDate 发放开始日期 - * @param endSettleDate 发放结束日期 + * @param settleDate 发放日期 */ - Boolean grantBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate); + Boolean grantBonusByPeriod(Integer pkCountry, String settleDate); /** * 指定期数发放奖金 @@ -43,6 +42,6 @@ public interface IBonusGrantService { * * @param settleDate 日期 */ - void withdrawalBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate); + void withdrawalBonusByPeriod(Integer pkCountry, String settleDate); } diff --git a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java index a615ba52..50a6a829 100644 --- a/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java +++ b/bd-business/bd-business-bonus/src/main/java/com/hzs/bonus/bonus/service/impl/BonusGrantServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.DayOfWeek; import java.time.temporal.ChronoUnit; import java.util.*; @@ -81,41 +82,15 @@ public class BonusGrantServiceImpl implements IBonusGrantService { @Override @Transactional(rollbackFor = Exception.class) public void grantWithdrawBonusByPeriodEveryDay() { - // 会员只15、30号发: - // 24-7 : 15号发 - // 8-23 : 30号发 (每月最后一天) - - // 当前日期 - Date nowDate = DateUtils.currentDate(); - // 当前日期的天 - int dateDD = Integer.parseInt(DateUtils.parseDateTimeToStr(DateUtils.DD, nowDate)); - // 当月最后一天 - int monthLast = Integer.parseInt(DateUtils.parseDateTimeToStr(DateUtils.DD, DateUtils.currentMonthLastDate(nowDate))); - // 发放开始时间 - String settleDate = null; - // 发放结束时间 - String endSettleDate = null; - Map integerBdCountryMap = iCountryServiceApi.getAllCountryMap().getData(); if (integerBdCountryMap.size() > 0) { for (Integer pkCountry : integerBdCountryMap.keySet()) { - if (dateDD == 15) { - // 15号,发 上月24号 到 本月7号 - settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(DateUtils.addMonths(nowDate, -1), 24)); - endSettleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(nowDate, 24)); - } else if (dateDD == monthLast) { - // 当月最后一天,发 本月8号 到 本月23号 - settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(nowDate, 8)); - endSettleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.setDays(nowDate, 23)); - } - - if (null != settleDate) { - // 开始结束时间都有值,才进行发放 - // 发放奖金 - grantBonusByPeriod(pkCountry, settleDate, endSettleDate); - // 奖金可以提现 - withdrawalBonusByPeriod(pkCountry, settleDate, endSettleDate); - } + // 先发放奖金,验证是否是周结,周结发放上周的,直接变为可提现 + Date grantDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate()); + String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, grantDay); + grantBonusByPeriod(pkCountry, settleDate); + // 设置奖金可以提现 + withdrawalBonusByPeriod(pkCountry, settleDate); } } } @@ -152,76 +127,81 @@ public class BonusGrantServiceImpl implements IBonusGrantService { return cuMemberSettlePeriodByDate; } - private List getCuMemberSettlePeriod(Integer pkCountry, String settleDate, String endSettleDate) { - Date nowDate = DateUtils.currentDateTime(); - List cuMemberSettlePeriodList = iCuMemberSettlePeriodService.listCuMemberSettlePeriod(pkCountry, DateUtils.parseStringToDate(settleDate), DateUtils.parseStringToDate(endSettleDate)); - for (CuMemberSettlePeriodExt cuMemberSettlePeriodExt : cuMemberSettlePeriodList) { - cuMemberSettlePeriodExt.setPkModified(MagicNumberConstants.PK_ADMIN); - cuMemberSettlePeriodExt.setModifiedTime(nowDate); - } - return cuMemberSettlePeriodList; - } - @Override @Transactional(rollbackFor = Exception.class) - public Boolean grantBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate) { - // 奖金发放范围期间 - List cuMemberSettlePeriodList = getCuMemberSettlePeriod(pkCountry, settleDate, endSettleDate); - - Date currentDateTime = DateUtils.currentDateTime(); - Map bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData(); - - for (CuMemberSettlePeriodExt cuMemberSettlePeriod : cuMemberSettlePeriodList) { - if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsGrant()) { - // 已经发放,则跳过 - continue; - } - String settleDateStr = DateUtils.parseDateTimeToStr(DateUtils.YYYY_MM_DD, cuMemberSettlePeriod.getSettleDate()); - - // 查询奖金表,查询未发放的奖金明细 - List cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); - if (cuMemberBonusList.size() > 0) { - // 新增交易流水 - List cuMemberTradeList = new ArrayList<>(); - cuMemberBonusList.forEach(cuMemberBonus -> { - // 奖金币(首购+复购+云代+海粉+嗨粉+店铺) - packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, cuMemberBonus.getRealIncomeTotal(), settleDateStr); - }); - List seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size()); - // 新增流水明细,记录奖金明细的发放状态、消费明细 - List cuMemberTradeDetailList = new ArrayList<>(); - Map bdAccountMap = iAccountServiceApi.getAccountListByCountry(pkCountry).getData(); - for (int i = 0; i < cuMemberTradeList.size(); i++) { - CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i); - cuMemberTrade.setPkId(seqList.get(i)); - if (bdAccountMap.containsKey(cuMemberTrade.getPkAccount()) && EAccount.BONUS.getValue() == bdAccountMap.get(cuMemberTrade.getPkAccount()).getFieldValue()) { - // 验证有奖金币的记录发放记录 - CuMemberTradeDetail cuMemberTradeDetail = CuMemberTradeDetail.builder() - .period(cuMemberSettlePeriod.getPkId()) - .pkMemberTrade(cuMemberTrade.getPkId()) - .grantMoney(cuMemberTrade.getTradeAmount()) - .consumeMoney(cuMemberTrade.getTradeAmount()) - .build(); - cuMemberTradeDetail.setPkCountry(cuMemberTrade.getPkCountry()); - cuMemberTradeDetail.setPkCreator(cuMemberTrade.getPkCreator()); - cuMemberTradeDetail.setCreationTime(cuMemberTrade.getCreationTime()); - cuMemberTradeDetailList.add(cuMemberTradeDetail); - } - } - // 批量保存交易流水,交易流水明细 - iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList); - iCuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList); - // 批量更新会员账户,更新余额 - iCuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); - // 更新奖金表发放状态 - iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(), - cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); - } - // 更新期间表状态 - cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue()); - cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime()); - iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); + public Boolean grantBonusByPeriod(Integer pkCountry, String settleDate) { + // 奖金发放 + CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate); + if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsGrant()) { + return Boolean.FALSE; } + // 验证是否周奖,周奖只能周三发放 + if (EExpandCapMethod.WEEK_SETTLE.getValue() == cuMemberSettlePeriod.getSettleCycle()) { + if (DateUtils.getRecentlyDay(DateUtils.parseStringToDate(settleDate)) != DayOfWeek.WEDNESDAY.getValue()) { + return Boolean.FALSE; + } + } else { + Date startDate = DateUtils.parseStringToDate(settleDate); + if (DateUtils.compareDateBefore(DateUtils.beforeDate(7, ChronoUnit.DAYS, DateUtils.currentDate()), startDate)) { + return Boolean.FALSE; + } + } + Map bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData(); + Date currentDateTime = DateUtils.currentDateTime(); + + // 查询奖金表,查询未发放的奖金明细 + List cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); + if (cuMemberBonusList.size() > 0) { + // 新增交易流水 + List cuMemberTradeList = new ArrayList<>(); + cuMemberBonusList.forEach(cuMemberBonus -> { + CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(cuMemberBonus.getPkCountry()).getData(); + // 奖金币(首购+复购+云代+海粉+嗨粉+店铺) + packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRealIncomeTotal(), currencyDTO.getOutExchangeRate()), settleDate); + // 重销币(商城重消+平台服务费) +// BigDecimal repeat = ComputeUtil.computeAdd(cuMemberBonus.getBackPoints(), cuMemberBonus.getServiceSpend()); + packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPEAT.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getBackPoints(), currencyDTO.getOutExchangeRate()), settleDate); + // 复购券 + packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.REPURCHASE.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getRepurCouponSubtotal(), currencyDTO.getOutExchangeRate()), settleDate); + // 环球积分 +// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.GLOBAL_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getGlobalPoints(), currencyDTO.getOutExchangeRate()), settleDate); + // 车奖积分 +// packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.CAR_AWARD_POINTS.getValue(), currentDateTime, cuMemberBonus, ComputeUtil.computeMultiply(cuMemberBonus.getCarAwardPoints(), currencyDTO.getOutExchangeRate()), settleDate); + }); + List seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size()); + // 新增流水明细,记录奖金明细的发放状态、消费明细 + List cuMemberTradeDetailList = new ArrayList<>(); + Map bdAccountMap = iAccountServiceApi.getAccountListByCountry(pkCountry).getData(); + for (int i = 0; i < cuMemberTradeList.size(); i++) { + CuMemberTrade cuMemberTrade = cuMemberTradeList.get(i); + cuMemberTrade.setPkId(seqList.get(i)); + if (bdAccountMap.containsKey(cuMemberTrade.getPkAccount()) && EAccount.BONUS.getValue() == bdAccountMap.get(cuMemberTrade.getPkAccount()).getFieldValue()) { + // 验证有奖金币的记录发放记录 + CuMemberTradeDetail cuMemberTradeDetail = CuMemberTradeDetail.builder() + .period(cuMemberSettlePeriod.getPkId()) + .pkMemberTrade(cuMemberTrade.getPkId()) + .grantMoney(cuMemberTrade.getTradeAmount()) + .consumeMoney(cuMemberTrade.getTradeAmount()) + .build(); + cuMemberTradeDetail.setPkCountry(cuMemberTrade.getPkCountry()); + cuMemberTradeDetail.setPkCreator(cuMemberTrade.getPkCreator()); + cuMemberTradeDetail.setCreationTime(cuMemberTrade.getCreationTime()); + cuMemberTradeDetailList.add(cuMemberTradeDetail); + } + } + // 批量保存交易流水,交易流水明细 + iCuMemberTradeService.batchInsertCuMemberTrade(cuMemberTradeList); + iCuMemberTradeDetailService.batchInsertCuMemberTradeDetail(cuMemberTradeDetailList); + // 批量更新会员账户,更新余额 + iCuMemberAccountService.updateMemberAccountGrantByPeriod(pkCountry, cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); + // 更新奖金表发放状态 + iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.GRANT.getValue(), EGrantStatus.PUBLISHED.getValue(), + cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); + } + // 更新期间表状态 + cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue()); + cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime()); + iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); return Boolean.TRUE; } @@ -283,27 +263,28 @@ public class BonusGrantServiceImpl implements IBonusGrantService { @Override @Transactional(rollbackFor = Exception.class) - public void withdrawalBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate) { + public void withdrawalBonusByPeriod(Integer pkCountry, String settleDate) { // 奖金可提现 - List cuMemberSettlePeriodList = getCuMemberSettlePeriod(pkCountry, settleDate, endSettleDate); - - for (CuMemberSettlePeriodExt cuMemberSettlePeriod : cuMemberSettlePeriodList) { - if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsWithdrawal()) { - // 已经提现,则跳过 - continue; - } - // 批量更新会员账户,更新余额(cu_member_account) - iCuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry); - // 更新交易明细表状态(cu_member_trade_detail) - iCuMemberTradeDetailService.updateCuMemberTradeDetailByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry); - // 更新奖金表发放状态(cu_member_bonus) - iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.WITHDRAWAL.getValue(), EGrantStatus.GRANT.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); - // 更新期间表状态(cu_member_settle_period_detail) - cuMemberSettlePeriod.setIsWithdrawal(EYesNo.YES.getIntValue()); - cuMemberSettlePeriod.setWithdrawalDate(DateUtils.currentDateTime()); - iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); + CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate); + if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsWithdrawal()) { + return; } - + // 验证是否周奖,周奖只能周四提现 + if (EExpandCapMethod.WEEK_SETTLE.getValue() == cuMemberSettlePeriod.getSettleCycle()) { + if (DateUtils.getRecentlyDay(DateUtils.parseStringToDate(settleDate)) != DayOfWeek.THURSDAY.getValue()) { + return; + } + } + // 批量更新会员账户,更新余额 + iCuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry); + // 更新交易明细表状态 cu_member_trade_detail + iCuMemberTradeDetailService.updateCuMemberTradeDetailByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry); + // 更新奖金表发放状态 + iCuMemberBonusService.updateCuMemberBonusStatus(pkCountry, EGrantStatus.WITHDRAWAL.getValue(), EGrantStatus.GRANT.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod()); + // 更新期间表状态 + cuMemberSettlePeriod.setIsWithdrawal(EYesNo.YES.getIntValue()); + cuMemberSettlePeriod.setWithdrawalDate(DateUtils.currentDateTime()); + iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod); } /** diff --git a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberSettlePeriodMapper.xml b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberSettlePeriodMapper.xml index 66e58ff4..f3cbc3aa 100644 --- a/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberSettlePeriodMapper.xml +++ b/bd-business/bd-business-bonus/src/main/resources/mapper/bonus/achieve/CuMemberSettlePeriodMapper.xml @@ -51,20 +51,6 @@ and cp.settle_date = #{settleDate, jdbcType=DATE} - - -