3
0
Fork 0

## 奖金发放处理;

This commit is contained in:
cabbage 2025-07-14 16:05:30 +08:00
parent 7c267b2444
commit 712fda3fdf
18 changed files with 307 additions and 345 deletions

View File

@ -25,5 +25,4 @@ public interface CuMemberTradeMapper extends BaseMapper<CuMemberTrade> {
*/
void batchInsertCuMemberTrade(@Param("cuMemberTradeList") List<?> cuMemberTradeList);
}

View File

@ -19,7 +19,6 @@ public class CuMemberTradeServiceImpl extends ServiceImpl<CuMemberTradeMapper, C
@Autowired
private CuMemberBonusSettle cuMemberBonusSettle;
@Override
public List<Long> batchQueryCuMemberTradeSeq(Integer rowNum) {
return baseMapper.batchQueryCuMemberTradeSeq(rowNum);

View File

@ -5,7 +5,6 @@ import com.hzs.bonus.achieve.param.MemberPeriodParam;
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;
@ -15,7 +14,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;
@ -37,8 +35,6 @@ public class CuMemberSettleController extends BaseController {
@Autowired
private ICuMemberBonusService iCuMemberBonusService;
@Autowired
private IBonusSettleService iBonusSettleService;
@Autowired
private ICuMemberTreeService iCuMemberTreeService;
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@ -75,7 +71,6 @@ public class CuMemberSettleController extends BaseController {
@GetMapping("/settle-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.INSERT)
public AjaxResult settleBonus(String settleDate) {
// initTable(settleDate);
Date startDate = DateUtils.parseStringToDate(settleDate);
if (DateUtils.compareDateAfter(DateUtils.beforeDate(6, ChronoUnit.DAYS, DateUtils.currentDate()), startDate)) {
return AjaxResult.error(TransactionUtils.getContent(BonusMsgConstants.SETTLE_VALIDATE_DATE));
@ -85,9 +80,7 @@ public class CuMemberSettleController extends BaseController {
}
/**
* 公布奖金
*
* @return AjaxResult
* 公布奖金 -- 页面使用
*/
@GetMapping("/publish-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.PUBLISH)
@ -101,9 +94,7 @@ public class CuMemberSettleController extends BaseController {
}
/**
* 不公布奖金
*
* @return AjaxResult
* 不公布奖金 -- 页面使用
*/
@GetMapping("/no-publish-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.NO_PUBLISH)
@ -117,25 +108,44 @@ public class CuMemberSettleController extends BaseController {
}
/**
* 发放奖金
*
* @return AjaxResult
* 发放奖金 -- 页面使用
*/
@GetMapping("/grant-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.GRANT)
public AjaxResult grantBonus(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.GRANT_VALIDATE_DATE));
}
iBonusGrantService.grantBonusByPeriod(SecurityUtils.getPkCountry(), settleDate);
// 发放开始时间
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.grantBonusByPeriod(SecurityUtils.getPkCountry(), startSettleDate, endSettleDate);
return AjaxResult.success();
}
/**
* 发放奖金
*
* @return AjaxResult
* 发放奖金指定期数 -- 页面未使用
*/
@GetMapping("/grant-temp-bonus")
public AjaxResult grantTempBonus(Integer pkCountry, String settleDate) {
@ -144,9 +154,7 @@ public class CuMemberSettleController extends BaseController {
}
/**
* 发放奖金
*
* @return AjaxResult
* 发放奖金定时任务 -- 页面未使用
*/
@GetMapping("/grant-bonus_all")
public AjaxResult grantBonusAll() {
@ -155,18 +163,39 @@ public class CuMemberSettleController extends BaseController {
}
/**
* 奖金提现
*
* @return AjaxResult
* 奖金提现 -- 页面使用
*/
@GetMapping("/withdrawal-bonus")
@Log(module = EOperationModule.BONUS_SETTLE, business = EOperationBusiness.BONUS_SETTLE, method = EOperationMethod.WITHDRAWAL)
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));
}
iBonusGrantService.withdrawalBonusByPeriod(SecurityUtils.getPkCountry(), settleDate);
// 发放开始时间
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);
return AjaxResult.success();
}

View File

@ -17,7 +17,15 @@ public interface CuMemberSettlePeriodMapper extends BaseMapper<CuMemberSettlePer
/**
* 根据日期查询会员结算期间
*/
CuMemberSettlePeriodExt queryMemberSettlePeriod(@Param("pkCountry") Integer pkCountry, @Param("settleDate") Date settleDate);
CuMemberSettlePeriodExt queryMemberSettlePeriod(@Param("pkCountry") Integer pkCountry,
@Param("settleDate") Date settleDate);
/**
* 根据日期查询对应的期间列表
*/
List<CuMemberSettlePeriodExt> listMemberSettlePeriod(@Param("pkCountry") Integer pkCountry,
@Param("settleDate") Date settleDate,
@Param("endSettleDate") Date endSettleDate);
/**
* 查询期间

View File

@ -29,6 +29,16 @@ public interface ICuMemberSettlePeriodService extends IService<CuMemberSettlePer
*/
CuMemberSettlePeriodExt getCuMemberSettlePeriod(Integer pkCountry, Date date);
/**
* 根据日期查询对应的期间列表
*
* @param pkCountry
* @param date
* @param endDate
* @return
*/
List<CuMemberSettlePeriodExt> listCuMemberSettlePeriod(Integer pkCountry, Date date, Date endDate);
/**
* 根据国家查询奖金期数返回到前台
*/

View File

@ -204,6 +204,11 @@ public class CuMemberSettlePeriodServiceImpl extends ServiceImpl<CuMemberSettleP
return baseMapper.queryMemberSettlePeriod(pkCountry, date);
}
@Override
public List<CuMemberSettlePeriodExt> listCuMemberSettlePeriod(Integer pkCountry, Date date, Date endDate) {
return baseMapper.listMemberSettlePeriod(pkCountry, date, endDate);
}
private CuMemberSettlePeriod getCuMemberSettlePeriod(String date) {
LambdaQueryWrapper<CuMemberSettlePeriod> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CuMemberSettlePeriod::getSettleDate, DateUtils.parseStringToDate(date));

View File

@ -5,8 +5,6 @@ import cn.hutool.core.collection.CollectionUtil;
import com.hzs.bonus.bonus.param.BonusParam;
import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.bonus.vo.*;
import com.hzs.common.core.enums.EGrantStatus;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils;
import com.hzs.common.core.web.controller.BaseController;
import com.hzs.common.core.web.page.TableDataInfo;
@ -34,34 +32,6 @@ public class ApiCuMemberBonusController extends BaseController {
@Autowired
private ICuMemberBonusService iCuMemberBonusService;
/**
* 新零售实时奖金查询会员实时奖金当日的奖金
*/
@PostMapping("/query-current-bonus")
public TableDataInfo listCurrentBonus(@RequestBody BonusParam bonusParam) {
bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId());
bonusParam.setStartDate(DateUtils.currentDate());
bonusParam.setEndDate(DateUtils.afterDate(1, ChronoUnit.DAYS, DateUtils.currentDate()));
bonusParam.setGrantStatus(EGrantStatus.SETTLED.getValue());
List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberSecondBonusVoByCondition(bonusParam);
List<MemberBonusVO> memberBonusVOList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
if (ComputeUtil.compareValue(cuMemberBonus.getRealIncomeTotal())) {
MemberBonusVO memberBonusVO = BeanUtil.copyProperties(cuMemberBonus, MemberBonusVO.class, "settleDate");
memberBonusVO.setServiceSpend(BigDecimal.ZERO);
memberBonusVO.setSettleDate(DateUtils.currentDate());
BigDecimal serviceSpend = ComputeUtil.computeSubtract(ComputeUtil.computeAddNum(cuMemberBonus.getRetailRangeIncome(), cuMemberBonus.getRetailSameLevelIncome(),
cuMemberBonus.getRetailAreaIncome()),
cuMemberBonus.getRetailRealSubtotal());
memberBonusVO.setBackPoints(serviceSpend);
memberBonusVOList.add(memberBonusVO);
}
});
return getDataTable(memberBonusVOList);
}
/**
* 新零售实时奖金查询会员奖金列表
*/
@ -69,7 +39,18 @@ public class ApiCuMemberBonusController extends BaseController {
public TableDataInfo listFirstRepurchaseBonus(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusVoByCondition(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<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.listMemberBonus(bonusParam);
List<MemberBonusFirstPurchaseVO> firstPurchaseVOList = new ArrayList<>();
cuMemberBonusList.forEach(cuMemberBonus -> {
@ -85,17 +66,15 @@ public class ApiCuMemberBonusController extends BaseController {
*/
@PostMapping("/query-bonus-total")
public TableDataInfo lisBonusTotal(@RequestBody BonusParam bonusParam) {
bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId());
bonusParam.setEndDate(DateUtils.currentDate());
bonusParam.setStartDate(DateUtils.beforeDate(1, ChronoUnit.DAYS, bonusParam.getEndDate()));
setBonusParam(bonusParam);
// 新查询奖金明细
List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.listMemberBonus(bonusParam);
List<CuMemberBonusExt> cuMemberBonusList = iCuMemberBonusService.queryMemberBonusTotalByCondition(bonusParam);
MemberRealIncomeVO memberRealIncomeVO = new MemberRealIncomeVO();
if (CollectionUtil.isEmpty(cuMemberBonusList)) {
memberRealIncomeVO.setRealIncomeTotal(BigDecimal.ZERO);
} else {
// memberRealIncomeVO.setRealIncomeTotal(ComputeUtil.computeAdd(cuMemberBonusList.get(0).getRealIncomeTotal(), cuMemberBonusList.get(0).getBackPoints()));
memberRealIncomeVO.setRealIncomeTotal(cuMemberBonusList.get(0).getRealIncomeTotal());
}
return getDataTable(Collections.singletonList(memberRealIncomeVO));
@ -116,7 +95,8 @@ public class ApiCuMemberBonusController extends BaseController {
bonusParam.setPkCountry(SecurityUtils.getPkCountry());
bonusParam.setPkMember(SecurityUtils.getUserId());
Date startDate = DateUtils.beforeDate(15, ChronoUnit.DAYS, DateUtils.currentDate());
// 默认查询90天之内的
Date startDate = DateUtils.beforeDate(60, ChronoUnit.DAYS, DateUtils.currentDate());
if (bonusParam.getStartDate() == null) {
bonusParam.setStartDate(startDate);
} else if (DateUtils.compareDateBefore(bonusParam.getStartDate(), startDate)) {
@ -136,8 +116,7 @@ public class ApiCuMemberBonusController extends BaseController {
public TableDataInfo listBonusSource(@RequestBody BonusParam bonusParam) {
setBonusParam(bonusParam);
startPage();
TableDataInfo tableDataInfo = iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
return tableDataInfo;
return iCuMemberBonusService.queryMemberBonusDetailVoByCondition(bonusParam);
}
}

View File

@ -27,6 +27,14 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
*/
List<CuMemberBonusExt> queryMemberBonusByCondition(BonusParam bonusParam);
/**
* 查询会员奖金明细
*
* @param bonusParam
* @return
*/
List<CuMemberBonusExt> listMemberBonus(BonusParam bonusParam);
/**
* 根据查询条件查询会员奖金
*

View File

@ -10,6 +10,9 @@ public interface IBonusGrantService {
*/
void publishBonusByPeriodEveryDay();
/**
* 每天公放奖金,定时任务
*/
void grantWithdrawBonusByPeriodEveryDay();
/**
@ -22,10 +25,17 @@ public interface IBonusGrantService {
/**
* 每天发放奖金
*
* @param settleDate 日期
* @param settleDate 发放开始日期
* @param endSettleDate 发放结束日期
*/
Boolean grantBonusByPeriod(Integer pkCountry, String settleDate);
Boolean grantBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate);
/**
* 指定期数发放奖金
*
* @param pkCountry
* @param settleDate
*/
void grantBonusByTempPeriod(Integer pkCountry, String settleDate);
/**
@ -33,6 +43,6 @@ public interface IBonusGrantService {
*
* @param settleDate 日期
*/
void withdrawalBonusByPeriod(Integer pkCountry, String settleDate);
void withdrawalBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate);
}

View File

@ -30,11 +30,12 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
List<CuMemberBonusExt> queryMemberBonusVoByCondition(BonusParam bonusParam);
/**
* 根据查询条件查询会员秒接奖金
* 查询会员奖金明细
*
* @param bonusParam 查询条件
* @param bonusParam
* @return
*/
List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam);
List<CuMemberBonusExt> listMemberBonus(BonusParam bonusParam);
/**
* 根据查询条件查询会员奖金

View File

@ -28,7 +28,6 @@ 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.*;
@ -47,13 +46,13 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
@Autowired
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@Autowired
private MemberToolsHandler memberToolsHandler;
@Autowired
private ICuMemberTradeService iCuMemberTradeService;
@Autowired
private ICuMemberTradeDetailService iCuMemberTradeDetailService;
@Autowired
private ICuMemberAccountService iCuMemberAccountService;
@Autowired
private MemberToolsHandler memberToolsHandler;
@DubboReference
ICountryServiceApi iCountryServiceApi;
@ -82,23 +81,41 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
@Override
@Transactional(rollbackFor = Exception.class)
public void grantWithdrawBonusByPeriodEveryDay() {
// 会员只1530号发
// 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<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);
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));
}
// 周奖发放上周的奖金
// CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
// Date withdrawDay = DateUtils.beforeDate(7, ChronoUnit.DAYS, grantDay);
// if (EExpandCapMethod.WEEK_SETTLE.getValue() == cuMemberSettlePeriod.getSettleCycle() ||
// !CountryConstants.CHINA_COUNTRY.equals(pkCountry)) {
// withdrawDay = grantDay;
// }
if (null != settleDate) {
// 开始结束时间都有值才进行发放
// 发放奖金
grantBonusByPeriod(pkCountry, settleDate, endSettleDate);
// 奖金可以提现
withdrawalBonusByPeriod(pkCountry, settleDate, endSettleDate);
}
}
}
}
@ -135,27 +152,31 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
return cuMemberSettlePeriodByDate;
}
private List<CuMemberSettlePeriodExt> getCuMemberSettlePeriod(Integer pkCountry, String settleDate, String endSettleDate) {
Date nowDate = DateUtils.currentDateTime();
List<CuMemberSettlePeriodExt> 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) {
// 奖金发放
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<Integer, BdAccount> bdAccountValueMap = iAccountServiceApi.getAccountMapByCountry(pkCountry).getData();
public Boolean grantBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate) {
// 奖金发放范围期间
List<CuMemberSettlePeriodExt> cuMemberSettlePeriodList = getCuMemberSettlePeriod(pkCountry, settleDate, endSettleDate);
Date currentDateTime = DateUtils.currentDateTime();
Map<Integer, BdAccount> 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<CuMemberBonus> cuMemberBonusList = iCuMemberBonusService.queryCuMemberBonusByCondition(pkCountry, EGrantStatus.PUBLISHED.getValue(), cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod());
@ -163,18 +184,8 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
// 新增交易流水
List<CuMemberTrade> 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);
packAccountTrade(cuMemberTradeList, bdAccountValueMap, EAccount.BONUS.getValue(), currentDateTime, cuMemberBonus, cuMemberBonus.getRealIncomeTotal(), settleDateStr);
});
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细
@ -210,6 +221,7 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
cuMemberSettlePeriod.setIsGrant(EYesNo.YES.getIntValue());
cuMemberSettlePeriod.setGrantDate(DateUtils.currentDateTime());
iCuMemberSettlePeriodService.updateCuMemberSettlePeriodByDate(cuMemberSettlePeriod);
}
return Boolean.TRUE;
}
@ -219,20 +231,16 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
// 查询奖金表查询未发放的奖金明细
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();
CurrencyDTO currencyDTO = iCurrencyServiceApi.getCurrency(pkCountry).getData();
if (cuMemberBonusList.size() > 0) {
// 新增交易流水
List<CuMemberTrade> 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);
});
List<Long> seqList = iCuMemberTradeService.batchQueryCuMemberTradeSeq(cuMemberTradeList.size());
// 新增流水明细,记录奖金明细的发放状态消费明细
@ -266,8 +274,8 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
}
}
private void packAccountTrade(List<CuMemberTrade> cuMemberTradeList, Map<Integer, BdAccount> bdAccountMap, int accountValue, Date currentDateTime, CuMemberBonus cuMemberBonus, BigDecimal grantValue,
String settleDate) {
private void packAccountTrade(List<CuMemberTrade> cuMemberTradeList, Map<Integer, BdAccount> bdAccountMap, int accountValue, Date currentDateTime,
CuMemberBonus cuMemberBonus, BigDecimal grantValue, String settleDate) {
if (ComputeUtil.compareValue(grantValue) && bdAccountMap.containsKey(accountValue)) {
cuMemberTradeList.add(packageMemberTrade(cuMemberBonus, bdAccountMap.get(accountValue).getPkId(), grantValue, currentDateTime, settleDate));
}
@ -275,30 +283,29 @@ public class BonusGrantServiceImpl implements IBonusGrantService {
@Override
@Transactional(rollbackFor = Exception.class)
public void withdrawalBonusByPeriod(Integer pkCountry, String settleDate) {
public void withdrawalBonusByPeriod(Integer pkCountry, String settleDate, String endSettleDate) {
// 奖金可提现
CuMemberSettlePeriodExt cuMemberSettlePeriod = getCuMemberSettlePeriod(pkCountry, settleDate);
List<CuMemberSettlePeriodExt> cuMemberSettlePeriodList = getCuMemberSettlePeriod(pkCountry, settleDate, endSettleDate);
for (CuMemberSettlePeriodExt cuMemberSettlePeriod : cuMemberSettlePeriodList) {
if (EYesNo.YES.getIntValue() == cuMemberSettlePeriod.getIsWithdrawal()) {
return;
// 已经提现则跳过
continue;
}
// 验证是否周奖周奖只能周四提现
if (EExpandCapMethod.WEEK_SETTLE.getValue() == cuMemberSettlePeriod.getSettleCycle()) {
if (DateUtils.getRecentlyDay(DateUtils.parseStringToDate(settleDate)) != DayOfWeek.THURSDAY.getValue()) {
return;
}
}
// 批量更新会员账户更新余额
// 批量更新会员账户更新余额cu_member_account)
iCuMemberAccountService.updateMemberAccountWithdrawalByPeriod(cuMemberSettlePeriod.getStartPeriod(), cuMemberSettlePeriod.getEndPeriod(), pkCountry);
// 更新交易明细表状态 cu_member_trade_detail
// 更新交易明细表状态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);
}
}
/**
* 封装会员 消费的 交易流水
*

View File

@ -14,7 +14,6 @@ import com.hzs.bonus.bonus.service.ICuMemberBonusService;
import com.hzs.bonus.bonus.vo.MemberBonusDetailSerVO;
import com.hzs.bonus.bonus.vo.MemberBonusDetailVO;
import com.hzs.common.core.constant.*;
import com.hzs.common.core.domain.R;
import com.hzs.common.core.enums.*;
import com.hzs.common.core.utils.ComputeUtil;
import com.hzs.common.core.utils.DateUtils;
@ -70,6 +69,11 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
return handleMemberBonusPurchase(getCuMemberBonusExtList(bonusParam), bonusParam);
}
@Override
public List<CuMemberBonusExt> listMemberBonus(BonusParam bonusParam) {
return baseMapper.listMemberBonus(bonusParam);
}
private List<CuMemberBonusExt> handleMemberBonusPurchase(List<CuMemberBonusExt> cuMemberBonusExtList, BonusParam bonusParam) {
List<CuMemberBonusExt> memberBonusExtList = new ArrayList<>();
Map<String, CuMemberBonusExt> cuMemberBonusExtMap = new HashMap<>();
@ -86,36 +90,10 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
if (!DateUtils.compareDateEqual(endDate, DateUtils.beforeDate(1, ChronoUnit.DAYS, DateUtils.currentDate()))
|| DateUtils.compareDateTimeAfter(DateUtils.currentDateTime(), compareDate)) {
CuMemberBonusExt cuMemberBonusExt = new CuMemberBonusExt();
cuMemberBonusExt.setSettleDate(endDate);
cuMemberBonusExt.setServiceSpend(BigDecimal.ZERO);
cuMemberBonusExt.setBackPoints(BigDecimal.ZERO);
cuMemberBonusExt.setDirectIncome(BigDecimal.ZERO);
cuMemberBonusExt.setExpandIncome(BigDecimal.ZERO);
cuMemberBonusExt.setCoachIncome(BigDecimal.ZERO);
cuMemberBonusExt.setShareIncome(BigDecimal.ZERO);
cuMemberBonusExt.setServiceIncome(BigDecimal.ZERO);
cuMemberBonusExt.setBackPoints(BigDecimal.ZERO);
cuMemberBonusExt.setServiceSpend(BigDecimal.ZERO);
cuMemberBonusExt.setPurRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurPushIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurExpandIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRepurRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCoupon(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCouponShare(BigDecimal.ZERO);
cuMemberBonusExt.setRepurCouponSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setGlobalPoints(BigDecimal.ZERO);
cuMemberBonusExt.setCarAwardPoints(BigDecimal.ZERO);
cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO);
cuMemberBonusExt.setStoreIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailSameLevelIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailAreaIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailBenefitRangeIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailBenefitAvgIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailBenefitIncome(BigDecimal.ZERO);
cuMemberBonusExt.setRetailRealSubtotal(BigDecimal.ZERO);
cuMemberBonusExt.setRealIncomeTotal(BigDecimal.ZERO);
memberBonusExtList.add(cuMemberBonusExt);
}
}
@ -124,48 +102,11 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
return memberBonusExtList;
}
@Override
public List<CuMemberBonusExt> queryMemberSecondBonusVoByCondition(BonusParam bonusParam) {
return getCuMemberBonusExtList(bonusParam);
}
private List<CuMemberBonusExt> getCuMemberBonusExtList(BonusParam bonusParam) {
if (bonusParam.getGrantStatus() == null) {
bonusParam.setGrantStatus(EGrantStatus.PUBLISHED.getValue());
}
List<CuMemberBonusExt> cuMemberBonusExtList = baseMapper.queryMemberBonusByCondition(bonusParam);
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(bonusParam.getPkCountry());
// 汇率比例
BigDecimal inExchangeRate = currency.getData().getInExchangeRate();
for (CuMemberBonusExt cuMemberBonusExt : cuMemberBonusExtList) {
cuMemberBonusExt.setDirectIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getDirectIncome(), inExchangeRate));
cuMemberBonusExt.setExpandIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getExpandIncome(), inExchangeRate));
cuMemberBonusExt.setCoachIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getCoachIncome(), inExchangeRate));
cuMemberBonusExt.setShareIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getShareIncome(), inExchangeRate));
cuMemberBonusExt.setServiceIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getServiceIncome(), inExchangeRate));
cuMemberBonusExt.setBackPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getBackPoints(), inExchangeRate));
cuMemberBonusExt.setServiceSpend(ComputeUtil.computeMultiply(cuMemberBonusExt.getServiceSpend(), inExchangeRate));
cuMemberBonusExt.setPurRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getPurRealSubtotal(), inExchangeRate));
cuMemberBonusExt.setRepurPushIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurPushIncome(), inExchangeRate));
cuMemberBonusExt.setRepurRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRepurExpandIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurExpandIncome(), inExchangeRate));
cuMemberBonusExt.setRepurRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurRealSubtotal(), inExchangeRate));
cuMemberBonusExt.setRepurCoupon(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCoupon(), inExchangeRate));
cuMemberBonusExt.setRepurCouponShare(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponShare(), inExchangeRate));
cuMemberBonusExt.setRepurCouponSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRepurCouponSubtotal(), inExchangeRate));
cuMemberBonusExt.setGlobalPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getGlobalPoints(), inExchangeRate));
cuMemberBonusExt.setCarAwardPoints(ComputeUtil.computeMultiply(cuMemberBonusExt.getCarAwardPoints(), inExchangeRate));
cuMemberBonusExt.setRealIncomeTotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRealIncomeTotal(), inExchangeRate));
cuMemberBonusExt.setStoreIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getStoreIncome(), inExchangeRate));
cuMemberBonusExt.setRetailRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRetailSameLevelIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailSameLevelIncome(), inExchangeRate));
cuMemberBonusExt.setRetailAreaIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailAreaIncome(), inExchangeRate));
cuMemberBonusExt.setRetailBenefitRangeIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailBenefitRangeIncome(), inExchangeRate));
cuMemberBonusExt.setRetailBenefitAvgIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailBenefitAvgIncome(), inExchangeRate));
cuMemberBonusExt.setRetailBenefitIncome(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailBenefitIncome(), inExchangeRate));
cuMemberBonusExt.setRetailRealSubtotal(ComputeUtil.computeMultiply(cuMemberBonusExt.getRetailRealSubtotal(), inExchangeRate));
}
return cuMemberBonusExtList;
return baseMapper.queryMemberBonusByCondition(bonusParam);
}
@Override
@ -424,15 +365,7 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
@Override
public List<CuMemberBonus> queryCuMemberBonusByCondition(Integer pkCountry, Integer grantStatus, Integer startPeriod, Integer endPeriod) {
QueryWrapper<CuMemberBonus> queryWrapper = new QueryWrapper<>();
queryWrapper.select("pk_member,pk_rate,pk_country,sum(direct_income) direct_income,sum(expand_income) expand_income,sum(expand_no_capping) expand_no_capping," +
"sum(expand_capping) expand_capping,sum(coach_income) coach_income,sum(share_income) share_income," +
"sum(service_income) service_income,sum(back_points) back_points,sum(service_spend) service_spend," +
"sum(pur_real_subtotal) pur_real_subtotal,sum(repur_range_income) repur_range_income,sum(repur_expand_income) repur_expand_income," +
"sum(repur_real_subtotal) repur_real_subtotal,sum(cloud_direct_income) cloud_direct_income,sum(cloud_pur_income) cloud_pur_income," +
"sum(cloud_repur_income) cloud_repur_income,sum(cloud_real_subtotal) cloud_real_subtotal,sum(repur_coupon) repur_coupon," +
"sum(REPUR_COUPON_SHARE) REPUR_COUPON_SHARE,sum(REPUR_COUPON_SUBTOTAL) REPUR_COUPON_SUBTOTAL," +
"sum(global_points) global_points,sum(car_award_points) car_award_points,sum(hi_fun_income) hi_fun_income," +
"sum(real_income_total) real_income_total");
queryWrapper.select("pk_member,pk_rate,pk_country,sum(real_income_total) real_income_total");
queryWrapper.eq(SystemFieldConstants.PK_COUNTRY, pkCountry);
queryWrapper.eq(MemberBonusFieldConstants.GRANT_STATUS, grantStatus);
queryWrapper.eq(MemberBonusFieldConstants.INCOME_STATUS, ENormalDisable.NORMAL.getValue());

View File

@ -73,7 +73,7 @@ public class MemberBonusFirstPurchaseVO extends PubMemberBonusVO {
// private BigDecimal repurRealSubtotal;
/**
* 新零售直推收益
* 直推级差收益
*/
@BigDecimalFormat
private BigDecimal retailRangeIncome;

View File

@ -2,85 +2,6 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hzs.bonus.account.mapper.CuMemberTradeMapper">
<!-- 通用查询映射结果 -->
<resultMap id="CuMemberTrade" type="com.hzs.common.domain.member.account.CuMemberTrade">
<id column="PK_ID" property="pkId"/>
<result column="DEL_FLAG" property="delFlag"/>
<result column="PK_COUNTRY" property="pkCountry"/>
<result column="PK_CREATOR" property="pkCreator"/>
<result column="CREATION_TIME" property="creationTime"/>
<result column="PK_MODIFIED" property="pkModified"/>
<result column="MODIFIED_TIME" property="modifiedTime"/>
<result column="PK_MEMBER" property="pkMember"/>
<result column="TRADE_CODE" property="tradeCode"/>
<result column="PK_ACCOUNT" property="pkAccount"/>
<result column="TRADE_TYPE" property="tradeType"/>
<result column="TRADE_CLASSIFY" property="tradeClassify"/>
<result column="PK_RATE" property="pkRate"/>
<result column="TRADE_AMOUNT" property="tradeAmount"/>
<result column="TRADE_BALANCE" property="tradeBalance"/>
<result column="TRADE_BEFORE_BALANCE" property="tradeBeforeBalance"/>
<result column="SOURCE_CODE" property="sourceCode"/>
<result column="TRADE_STATUE" property="tradeStatue"/>
<result column="REMARKS" property="remarks"/>
</resultMap>
<sql id="select_base">
select t.*, m.member_code as memberCode, m.member_name as memberName
from cu_member_trade t
left join cu_member m
on t.pk_member = m.pk_id
</sql>
<sql id="ids_where">
<where>
t.del_flag='0'
and t.pk_id in
<foreach collection="pkIds" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</where>
</sql>
<sql id="list_where">
<where>
t.del_flag='0'
<if test="memberName != null and memberName != ''">
and m.member_name like #{memberName} || '%'
</if>
<if test="memberCode != null and memberCode != ''">
and m.member_code like #{memberCode} || '%'
</if>
<if test="tradeAmount != null">
and t.TRADE_AMOUNT = #{tradeAmount}
</if>
<if test="remarks != null and remarks != ''">
and m.REMARKS like #{remarks} || '%'
</if>
<if test="pkAccount != null">
and t.PK_ACCOUNT = #{pkAccount}
</if>
<if test="tradeType != null">
and t.TRADE_TYPE = #{tradeType}
</if>
<if test="sourceCode != null and sourceCode != ''">
and t.SOURCE_CODE = #{sourceCode}
</if>
<if test="pkCountry != null">
and t.pk_country = #{pkCountry}
</if>
<if test="tradeClassify != null">
and t.TRADE_CLASSIFY = #{tradeClassify}
</if>
<if test="startDate != null and startDate != ''">
and t.CREATION_TIME >= to_date(#{startDate}, 'yyyy-mm-dd')
</if>
<if test="endDate != null and endDate != ''">
and t.CREATION_TIME &lt;= to_date(#{endDate} || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
</if>
</where>
</sql>
<update id="batchInsertCuMemberTrade">
merge into cu_member_trade a
using (

View File

@ -51,6 +51,20 @@
and cp.settle_date = #{settleDate, jdbcType=DATE}
</select>
<select id="listMemberSettlePeriod" resultMap="CuMemberSettlePeriodExt">
<include refid="memberPeriod"></include>
and cd.pk_country = #{pkCountry}
and cp.settle_date >= #{settleDate, jdbcType=DATE}
<if test="null == endSettleDate">
and cp.settle_date &lt;= #{settleDate, jdbcType=DATE}
</if>
<if test="null != endSettleDate">
and cp.settle_date &lt;= #{endSettleDate, jdbcType=DATE}
</if>
order by cp.settle_date
</select>
<select id="queryMemberSettlePeriodByCondition" resultMap="CuMemberSettlePeriodExt">
<include refid="memberPeriod"></include>
and cd.pk_country=#{pkCountry}

View File

@ -185,6 +185,45 @@
order by cp.settle_date desc
</select>
<!-- 查询会员奖金明细 -->
<select id="listMemberBonus" resultMap="CuMemberBonus">
select tmp.settle_date,
sum(tmp.repur_range_income) repur_range_income,
sum(tmp.retail_range_income) retail_range_income,
sum(tmp.retail_real_subtotal) retail_real_subtotal,
sum(tmp.real_income_total) real_income_total
from (select case
when EXTRACT(DAY FROM cp.settle_date) >= 24 or
EXTRACT(DAY FROM cp.settle_date) &lt; 7 then
to_date(to_char(cp.settle_date, 'yyyy-mm') || '-' || 15,
'yyyy-mm-dd')
else
LAST_DAY(cp.settle_date)
end settle_date,
cb.repur_range_income,
cb.retail_range_income,
cb.retail_real_subtotal,
cb.real_income_total
from CU_MEMBER_BONUS cb
inner join cu_member_settle_period cp
on cb.period = cp.pk_id
where cb.del_flag = 0
and cb.pk_member = #{pkMember}
and cp.del_flag = 0
<if test="grantStatus != null">
and cb.grant_status >= #{grantStatus}
</if>
<if test="startDate != null">
and cp.settle_date >= #{startDate, jdbcType=DATE}
</if>
<if test="endDate != null">
and cp.settle_date &lt; #{endDate, jdbcType=DATE}
</if>
) tmp
group by tmp.settle_date
order by tmp.settle_date desc
</select>
<select id="queryMemberBonusByConditionForServer" resultMap="CuMemberBonus">
select cm.member_code, cm.member_name,
cm.pk_settle_grade, cm.pk_awards,

View File

@ -40,7 +40,7 @@ public class BonusMsgConstants {
public static final String GRANT_VALIDATE_DATE = "只能发放7天以外的奖金";
/**
* 奖金发放 -- 只能提现14天以外的奖金
* 奖金发放 -- 只能提现7天以外的奖金
*/
public static final String WITHDRAW_VALIDATE_DATE = "只能提现14天以外的奖金!";
public static final String WITHDRAW_VALIDATE_DATE = "只能提现7天以外的奖金!";
}

View File

@ -19,8 +19,8 @@ import java.util.Date;
public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
public static final String YYYY = "yyyy";
public static final String MM = "MM";
public static final String DD = "dd";
public static final String YYYYMM = "yyyyMM";
public static final String YYYY_MM = "yyyy-MM";