## 奖金添加秒结处理;
This commit is contained in:
parent
7eab829106
commit
af6e0937e0
|
@ -3,6 +3,7 @@ package com.hzs.bonus.achieve.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.achieve.CuMemberRetailRange;
|
||||
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -29,8 +30,18 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeParent(@Param("tableName") String tableName, @Param("saOrderExtList") List<?> saOrderExtList);
|
||||
|
||||
/**
|
||||
* 根据会员查询会员血缘上网体 -- 秒结使用
|
||||
*/
|
||||
List<CuMemberRetailRangeExt> getCuMemberRetailRangeParent(@Param("saOrderExt") SaOrderExt saOrderExt);
|
||||
|
||||
CuMemberRetailRangeExt queryCuMemberRetailRangeByMemberId(@Param("tableName") String tableName, @Param("memberId") Long memberId);
|
||||
|
||||
/**
|
||||
* 查询会员信息
|
||||
*/
|
||||
CuMemberRetailRangeExt getMemberRetailRange(@Param("memberId") Long memberId);
|
||||
|
||||
/**
|
||||
* 批量更新网体
|
||||
*/
|
||||
|
@ -45,4 +56,18 @@ public interface CuMemberRetailRangeMapper extends BaseMapper<CuMemberRetailRang
|
|||
*/
|
||||
int updateMemberEnable(@Param("rangeTableName") String rangeTableName, @Param("pkMemberList") List<Long> pkMemberList);
|
||||
|
||||
/**
|
||||
* 当前网体更新极差秒结表
|
||||
*/
|
||||
void mergeMemberSecondRetailRangeByRange(@Param("secondRangeTableName") String secondRangeTableName,
|
||||
@Param("pkMember") Long pkMember);
|
||||
|
||||
/**
|
||||
* 昨天的结算表更新极差秒结状态
|
||||
*/
|
||||
void mergeMemberSecondRetailRangeByRangeEnable(@Param("rangeTableName") String rangeTableName,
|
||||
@Param("secondRangeTableName") String secondRangeTableName,
|
||||
@Param("pkMember") Long pkMember);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -24,6 +24,11 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
*/
|
||||
List<CuMemberRetailRangeExt> queryCuMemberRetailRangeParent(String tableName, List<SaOrderExt> saOrderExtList);
|
||||
|
||||
/**
|
||||
* 根据会员查询会员血缘上网体 -- 秒结使用
|
||||
*/
|
||||
List<CuMemberRetailRangeExt> getCuMemberRetailRangeParent(SaOrderExt saOrderExt);
|
||||
|
||||
/**
|
||||
* 更新会员树的累计业绩
|
||||
*
|
||||
|
@ -41,4 +46,10 @@ public interface ICuMemberRetailRangeService extends IService<CuMemberRetailRang
|
|||
*/
|
||||
int updateMemberEnable(String rangeTableName, List<Long> pkMemberList);
|
||||
|
||||
/**
|
||||
* 更新极差秒接表,用昨天的结算表
|
||||
*/
|
||||
void mergeMemberSecondRetailRangeByRange(String rangeTableName, String secondRangeTableName, Long pkMember);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -50,6 +50,11 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
return memberRetailRangeExtList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberRetailRangeExt> getCuMemberRetailRangeParent(SaOrderExt saOrderExt) {
|
||||
return baseMapper.getCuMemberRetailRangeParent(saOrderExt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCuMemberRetailRange(String settleTableName, Map<Long, CuMemberRetailRangeExt> cuMemberTreeMap) {
|
||||
List<List<?>> treeList = setUpdCuMemberTreeLists(cuMemberTreeMap);
|
||||
|
@ -67,4 +72,13 @@ public class CuMemberRetailRangeServiceImpl extends ServiceImpl<CuMemberRetailRa
|
|||
return baseMapper.updateMemberEnable(rangeTableName, pkMemberList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mergeMemberSecondRetailRangeByRange(String rangeTableName, String secondRangeTableName, Long pkMember) {
|
||||
// 当前网体更新极差秒接表(血缘伞上)
|
||||
baseMapper.mergeMemberSecondRetailRangeByRange(secondRangeTableName, pkMember);
|
||||
// 昨天的结算表更新极差秒结(激活状态和等级)
|
||||
baseMapper.mergeMemberSecondRetailRangeByRangeEnable(rangeTableName, secondRangeTableName, pkMember);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -78,4 +78,11 @@ public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {
|
|||
@Param("oldGrantStatus") Integer oldGrantStatus, @Param("startPeriod") Integer startPeriod,
|
||||
@Param("endPeriod") Integer endPeriod);
|
||||
|
||||
/**
|
||||
* 批量插入会员奖金主表
|
||||
*
|
||||
* @param cuMemberBonusList 会员奖金
|
||||
*/
|
||||
void insertOrUpdateCuMemberBonus(@Param("cuMemberBonusList") List<CuMemberBonus> cuMemberBonusList);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package com.hzs.bonus.bonus.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberRetailLog;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 秒接日志记录表 Mapper 接口
|
||||
*/
|
||||
public interface CuMemberRetailLogMapper extends BaseMapper<CuMemberRetailLog> {
|
||||
|
||||
/*
|
||||
* 更新会员日志
|
||||
**/
|
||||
void updateCuMemberRetailLogByList(@Param("cuMemberRetailLogs") List<CuMemberRetailLog> cuMemberRetailLogs);
|
||||
|
||||
}
|
|
@ -17,4 +17,9 @@ public interface IBonusSettleService {
|
|||
*/
|
||||
void calculateCuMemberBonus(String date, List<SaOrderExt> saOrderExtList);
|
||||
|
||||
/**
|
||||
* 根据订单计算新零售奖金 -- 秒结
|
||||
*/
|
||||
void calculateCuMemberRetailRangeBonusBySaOrder(String orderCode);
|
||||
|
||||
}
|
||||
|
|
|
@ -128,4 +128,16 @@ public interface ICuMemberBonusService extends IService<CuMemberBonus> {
|
|||
|
||||
CuMemberBonusExt initCuMemberBonus();
|
||||
|
||||
/**
|
||||
* 批量插入会员奖金主表
|
||||
*
|
||||
* @param cuMemberBonusList 会员奖金
|
||||
*/
|
||||
void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList);
|
||||
|
||||
/**
|
||||
* 查询会员奖金
|
||||
*/
|
||||
List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
package com.hzs.bonus.bonus.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberRetailLog;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 秒接日志记录表 服务类
|
||||
*/
|
||||
public interface ICuMemberRetailLogService extends IService<CuMemberRetailLog> {
|
||||
|
||||
/*
|
||||
* 查询24小时之内失败的记录,重试
|
||||
**/
|
||||
List<CuMemberRetailLog> queryCuMemberRetailLog();
|
||||
|
||||
/*
|
||||
* 更新会员日志
|
||||
**/
|
||||
void updateCuMemberRetailLogByList(List<CuMemberRetailLog> cuMemberRetailLogs);
|
||||
|
||||
}
|
|
@ -59,6 +59,54 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
@DubboReference
|
||||
IMemberServiceApi iMemberServiceApi;
|
||||
|
||||
/**
|
||||
* 秒结:
|
||||
* 首购级差、复购级差、复购配送(业绩、盒数、等级、奖衔、日奖)
|
||||
*/
|
||||
List<CuMemberBonusRange> calculateCuMemberRetailRangeBonusBySecond(String settleDate, SaOrderExt saOrderExt, BonusConfigDTO bonusConfigDTO,
|
||||
int currentPeriod, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList) {
|
||||
// 直推、复购级差收益
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = new ArrayList<>();
|
||||
|
||||
// 按照血缘,查询该会员所有伞上会员 -- 不处理业绩等,直接查询会员表 cu_member
|
||||
List<CuMemberRetailRangeExt> memberRetailRangeExtList = iCuMemberRetailRangeService.getCuMemberRetailRangeParent(saOrderExt);
|
||||
// 会员结算map(key:会员ID,value:结算扩展)
|
||||
Map<Long, CuMemberRetailRangeExt> memberRangeExtMap = new HashMap<>();
|
||||
for (CuMemberRetailRangeExt cuMemberRetailRangeExt : memberRetailRangeExtList) {
|
||||
if (!memberRangeExtMap.containsKey(cuMemberRetailRangeExt.getPkMember())) {
|
||||
memberRangeExtMap.put(cuMemberRetailRangeExt.getPkMember(), cuMemberRetailRangeExt);
|
||||
}
|
||||
}
|
||||
|
||||
// 配送收益配置
|
||||
Map<Integer, CuMemberRetailRegion> regionMap = iMemberServiceApi.listEffectiveRegion(DateUtils.parseStringToDate(settleDate)).getData();
|
||||
// 订单指定产品盒数
|
||||
BigDecimal boxNum = saOrderExt.getBoxNum();
|
||||
|
||||
// 计算奖金 直推级差
|
||||
if ((EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType())
|
||||
&& boxNum.compareTo(BigDecimal.ZERO) > 0
|
||||
) {
|
||||
// 注册或升级订单并且存在盒数产品,才有 直推级差
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, currentPeriod, saOrderExt));
|
||||
} else if (EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
|
||||
// 复购订单
|
||||
if (boxNum.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// 存在盒数商品,计算复购级差
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRepurRangeBonus(memberRangeExtMap, cuMemberBonusMap,
|
||||
bonusConfigDTO, currentPeriod, saOrderExt));
|
||||
}
|
||||
// 计算配送收益
|
||||
if (regionMap.size() != 0) {
|
||||
cuMemberBonusDetailList.addAll(calculateRetailRepurRegionBonus(memberRangeExtMap, cuMemberBonusMap,
|
||||
bonusConfigDTO, currentPeriod, saOrderExt, regionMap, null, true));
|
||||
}
|
||||
}
|
||||
return cuMemberBonusRangeList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 日结:
|
||||
* 计算新零售奖金,首购级差、复购级差
|
||||
|
@ -185,7 +233,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
&& boxNum.compareTo(BigDecimal.ZERO) > 0
|
||||
) {
|
||||
// 注册或升级订单并且存在盒数产品,才有 直推级差
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt, gradeIdMap));
|
||||
cuMemberBonusRangeList.addAll(calculateRetailRangeBonus(memberRangeExtMap, cuMemberBonusMap, bonusConfigDTO, period, saOrderExt));
|
||||
|
||||
// 订单存在升级记录
|
||||
if (memberLevelMap.containsKey(saOrderExt.getPkId())) {
|
||||
|
@ -222,7 +270,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
// 计算配送收益
|
||||
if (regionMap.size() != 0) {
|
||||
cuMemberBonusDetailList.addAll(calculateRetailRepurRegionBonus(memberRangeExtMap, cuMemberBonusMap,
|
||||
bonusConfigDTO, period, saOrderExt, regionMap, rangeTableName));
|
||||
bonusConfigDTO, period, saOrderExt, regionMap, rangeTableName, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -295,7 +343,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
* 计算直推级差收益
|
||||
*/
|
||||
List<CuMemberBonusRange> calculateRetailRangeBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt, Map<Integer, BdGrade> gradeIdMap) {
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt) {
|
||||
// 直推级差返回数据
|
||||
List<CuMemberBonusRange> memberBonusRangeList = new ArrayList<>();
|
||||
|
||||
|
@ -654,7 +702,7 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
*/
|
||||
List<CuMemberBonusDetail> calculateRetailRepurRegionBonus(Map<Long, CuMemberRetailRangeExt> memberRangeExtMap, Map<Long, CuMemberBonus> cuMemberBonusMap,
|
||||
BonusConfigDTO bonusConfigDTO, Integer period, SaOrderExt saOrderExt, Map<Integer, CuMemberRetailRegion> regionMap,
|
||||
String rangeTableName) {
|
||||
String rangeTableName, boolean secondFlag) {
|
||||
// 复购配送区域返回数据
|
||||
List<CuMemberBonusDetail> memberBonusDetailList = new ArrayList<>();
|
||||
|
||||
|
@ -665,7 +713,13 @@ public class BonusSettleRangeHandle extends BonusSettleHandle {
|
|||
if (null != retailRegion) {
|
||||
CuMemberRetailRangeExt targetMemberRangeExt = memberRangeExtMap.get(retailRegion.getPkMember());
|
||||
if (ObjectUtil.isEmpty(targetMemberRangeExt)) {
|
||||
if (secondFlag) {
|
||||
// 秒结处理
|
||||
targetMemberRangeExt = cuMemberRetailRangeMapper.getMemberRetailRange(retailRegion.getPkMember());
|
||||
} else {
|
||||
// 非秒结处理
|
||||
targetMemberRangeExt = cuMemberRetailRangeMapper.queryCuMemberRetailRangeByMemberId(rangeTableName, retailRegion.getPkMember());
|
||||
}
|
||||
if (null == targetMemberRangeExt) {
|
||||
// 配送区域对应的会员不存在了,直接跳过
|
||||
return memberBonusDetailList;
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.hzs.bonus.achieve.service.ICuMemberSettlePeriodService;
|
||||
import com.hzs.bonus.bonus.service.*;
|
||||
import com.hzs.bonus.bonus.vo.BonusRecordDetailVO;
|
||||
import com.hzs.bonus.order.service.IBonusOrderService;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.enums.*;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.member.bonus.*;
|
||||
|
@ -40,6 +43,24 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
private ICuMemberBonusRangeService iCuMemberBonusRangeService;
|
||||
@Autowired
|
||||
private BonusSettleRangeHandle bonusSettleRangeHandle;
|
||||
@Autowired
|
||||
private IBonusOrderService iBonusOrderService;
|
||||
|
||||
/**
|
||||
* 保存会员奖金
|
||||
*
|
||||
* @param cuMemberBonusMap 奖金map
|
||||
*/
|
||||
protected void saveCuMemberBonus(int period, String settleDate, Map<Long, CuMemberBonus> cuMemberBonusMap) {
|
||||
// 保存奖金
|
||||
List<CuMemberBonus> cuMemberBonusList = setCuMemberBonusSeq(settleDate, cuMemberBonusMap);
|
||||
if (cuMemberBonusList.size() > 0) {
|
||||
// 插入奖金主表
|
||||
iCuMemberBonusService.insertOrUpdateCuMemberBonus(cuMemberBonusList);
|
||||
List<CuMemberBonus> cuMemberBonuses = iCuMemberBonusService.queryCuMemberBonus(period, cuMemberBonusList);
|
||||
cuMemberBonuses.forEach(cuMemberBonus -> cuMemberBonusMap.put(cuMemberBonus.getPkMember(), cuMemberBonus));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
@ -74,6 +95,59 @@ public class BonusSettleServiceImpl implements IBonusSettleService {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void calculateCuMemberRetailRangeBonusBySaOrder(String orderCode) {
|
||||
// 需要处理的订单
|
||||
List<SaOrderExt> retailOrderList = iBonusOrderService.queryRetailSaOrderByDay(DateUtils.beforeDate(6, ChronoUnit.DAYS), DateUtils.afterDate(1, ChronoUnit.DAYS), orderCode);
|
||||
|
||||
if (CollectionUtil.isNotEmpty(retailOrderList)) {
|
||||
// 查询奖金参数
|
||||
BonusConfigDTO bonusConfigDTO = iBonusItemsServiceApi.queryBonusConfigDTO().getData();
|
||||
// 会员奖金map
|
||||
Map<Long, CuMemberBonus> cuMemberBonusMap = new HashMap<>(MagicNumberConstants.BATCH_UPDATE_NUM);
|
||||
// 订单数据
|
||||
SaOrderExt saOrderExt = retailOrderList.get(0);
|
||||
|
||||
// 处理奖金结算秒结表,判断是否存在当天结算的秒接表,从cu_member中获取网体,从昨日结算表中获取累计、结余数据
|
||||
// 今天结算期数
|
||||
String settleDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, saOrderExt.getPayTime());
|
||||
int currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
|
||||
if (saOrderExt.getDelFlag() == EYesNo.YES.getIntValue()) {
|
||||
// 订单下单处理(正向)
|
||||
// 会员奖金明细
|
||||
List<CuMemberBonusDetail> cuMemberBonusDetailList = new ArrayList<>();
|
||||
// 实时计算秒结数据(秒奖)
|
||||
List<CuMemberBonusRange> cuMemberBonusRangeList = bonusSettleRangeHandle.calculateCuMemberRetailRangeBonusBySecond(settleDate, saOrderExt, bonusConfigDTO,
|
||||
currentPeriod, cuMemberBonusMap, cuMemberBonusDetailList);
|
||||
saveCuMemberBonus(currentPeriod, settleDate, cuMemberBonusMap);
|
||||
|
||||
Set<Long> memberIdSet = iCuMemberBonusService.queryMemberBonusByPeriod(currentPeriod);
|
||||
if (cuMemberBonusRangeList.size() > 0) {
|
||||
cuMemberBonusRangeList.forEach(cuMemberBonusRange ->
|
||||
cuMemberBonusRange.setPkBonus(cuMemberBonusMap.get(cuMemberBonusRange.getPkBonus()).getPkId()));
|
||||
iCuMemberBonusRangeService.batchInsertCuMemberBonusRange(cuMemberBonusRangeList, memberIdSet);
|
||||
}
|
||||
if (cuMemberBonusDetailList.size() > 0) {
|
||||
cuMemberBonusDetailList.forEach(cuMemberBonusDetail ->
|
||||
cuMemberBonusDetail.setPkBonus(cuMemberBonusMap.get(cuMemberBonusDetail.getPkBonus()).getPkId()));
|
||||
iCuMemberBonusDetailService.batchInsertCuMemberBonusDetail(cuMemberBonusDetailList, memberIdSet);
|
||||
}
|
||||
} else {
|
||||
// 订单撤单处理(逆向)
|
||||
// if (!DateUtils.isSameDay(saOrderExt.getPayTime(), DateUtils.currentDate())) {
|
||||
// settleDate = DateUtils.parseDateToFormat(DateUtils.YYYY_MM_DD, DateUtils.beforeDate(1, ChronoUnit.DAYS));
|
||||
// currentPeriod = iCuMemberSettlePeriodService.getCuMemberSettlePeriodByDate(settleDate).getPkId();
|
||||
// }
|
||||
// // 实时计算撤单数据(业绩、盒数、等级、奖衔、日奖)
|
||||
// bonusSettleRangeHandle.calculateCuMemberBackRetailIncome(saOrderExt, bonusConfigDTO,
|
||||
// secondRangeTableName, beforePeriod, currentPeriod);
|
||||
// // 处理收益
|
||||
// iCuMemberBonusService.mergeBackMemberBonusIncome(saOrderExt.getPkId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算每天的奖金入库
|
||||
*
|
||||
|
|
|
@ -404,4 +404,18 @@ public class CuMemberBonusServiceImpl extends ServiceImpl<CuMemberBonusMapper, C
|
|||
return cuMemberBonusList.stream().distinct().map(CuMemberBonus::getPkId).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertOrUpdateCuMemberBonus(List<CuMemberBonus> cuMemberBonusList) {
|
||||
baseMapper.insertOrUpdateCuMemberBonus(cuMemberBonusList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CuMemberBonus> queryCuMemberBonus(int period, List<CuMemberBonus> cuMemberBonusList) {
|
||||
QueryWrapper<CuMemberBonus> queryWrapper = new QueryWrapper<>();
|
||||
List<Long> memberList = cuMemberBonusList.stream().map(CuMemberBonus::getPkMember).collect(Collectors.toList());
|
||||
queryWrapper.eq(MemberFieldConstants.PERIOD, period);
|
||||
queryWrapper.in(MemberFieldConstants.PK_MEMBER, memberList);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package com.hzs.bonus.bonus.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.hzs.bonus.bonus.mapper.CuMemberRetailLogMapper;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberRetailLogService;
|
||||
import com.hzs.common.core.enums.EYesNo;
|
||||
import com.hzs.common.core.utils.DateUtils;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberRetailLog;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 秒接日志记录表 服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class CuMemberRetailLogServiceImpl extends ServiceImpl<CuMemberRetailLogMapper, CuMemberRetailLog> implements ICuMemberRetailLogService {
|
||||
|
||||
@Override
|
||||
public List<CuMemberRetailLog> queryCuMemberRetailLog() {
|
||||
LambdaQueryWrapper<CuMemberRetailLog> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(CuMemberRetailLog::getEnableStatus, EYesNo.NO.getIntValue());
|
||||
Date endTime = DateUtils.currentDateTime();
|
||||
Date startTime = DateUtils.beforeDate(1, ChronoUnit.DAYS, endTime);
|
||||
queryWrapper.gt(CuMemberRetailLog::getCreationTime, startTime);
|
||||
queryWrapper.le(CuMemberRetailLog::getCreationTime, endTime);
|
||||
queryWrapper.orderByAsc(CuMemberRetailLog::getCreationTime);
|
||||
return baseMapper.selectList(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCuMemberRetailLogByList(List<CuMemberRetailLog> cuMemberRetailLogs) {
|
||||
baseMapper.updateCuMemberRetailLogByList(cuMemberRetailLogs);
|
||||
}
|
||||
}
|
|
@ -25,4 +25,10 @@ public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> {
|
|||
@Param("endDate") Date endDate,
|
||||
@Param("upType") Integer upType);
|
||||
|
||||
|
||||
/**
|
||||
* 查询会员最新手动升级记录,更新秒结表会员等级小于手动升级的会员等级
|
||||
*/
|
||||
void updateCuMemberGradeSecond(@Param("secondRangeTableName") String secondRangeTableName, @Param("period") Integer period);
|
||||
|
||||
}
|
||||
|
|
|
@ -31,4 +31,9 @@ public interface ICuMemberGradeService extends IService<CuMemberGrade> {
|
|||
*/
|
||||
List<CuMemberLevel> listAutoLevel(Date startDate, Date endDate);
|
||||
|
||||
/**
|
||||
* 查询会员最新手动升级记录,更新秒结表会员等级小于手动升级的会员等级
|
||||
*/
|
||||
void updateCuMemberGradeSecond(String secondRangeTableName, Integer period);
|
||||
|
||||
}
|
||||
|
|
|
@ -34,4 +34,10 @@ public class CuMemberGradeServiceImpl extends ServiceImpl<CuMemberGradeMapper, C
|
|||
// 自动升级记录列表
|
||||
return baseMapper.queryCuMemberLevel(startDate, endDate, EUpgradeType.AUTO_UPGRADE.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCuMemberGradeSecond(String secondRangeTableName, Integer period) {
|
||||
baseMapper.updateCuMemberGradeSecond(secondRangeTableName, period);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
package com.hzs.bonus.listener;
|
||||
|
||||
import com.hzs.bonus.bonus.service.IBonusSettleService;
|
||||
import com.hzs.bonus.bonus.service.ICuMemberRetailLogService;
|
||||
import com.hzs.common.core.constant.CountryConstants;
|
||||
import com.hzs.common.core.constant.MagicNumberConstants;
|
||||
import com.hzs.common.core.constant.RabbitMqConstants;
|
||||
import com.hzs.common.core.enums.EYesNo;
|
||||
import com.hzs.common.domain.member.bonus.CuMemberRetailLog;
|
||||
import com.hzs.common.domain.sale.ext.SaOrderExt;
|
||||
import com.rabbitmq.client.Channel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.*;
|
||||
import org.springframework.amqp.support.AmqpHeaders;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 订单秒接
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SaOrderSecondListener {
|
||||
|
||||
@Autowired
|
||||
private IBonusSettleService iBonusSettleService;
|
||||
@Autowired
|
||||
private ICuMemberRetailLogService iCuMemberRetailLogService;
|
||||
|
||||
@RabbitListener(bindings = @QueueBinding(
|
||||
exchange = @Exchange(value = RabbitMqConstants.ORDER_SECOND_EXCHANGE, type = "topic"),
|
||||
value = @Queue(value = RabbitMqConstants.ORDER_SECOND_QUEUE, durable = "true", autoDelete = "false"),
|
||||
key = RabbitMqConstants.ORDER_SECOND_KEY))
|
||||
@RabbitHandler
|
||||
public void onMessage(Message<SaOrderExt> message, Channel channel) throws Exception {
|
||||
SaOrderExt saOrderExt = message.getPayload();
|
||||
log.info("秒结开始消费,接收到的参数:{}", saOrderExt.getOrderCode());
|
||||
|
||||
Long deliveryTag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
|
||||
channel.basicAck(deliveryTag, false);
|
||||
|
||||
CuMemberRetailLog cuMemberRetailLog = new CuMemberRetailLog();
|
||||
cuMemberRetailLog.setPkCountry(CountryConstants.CHINA_COUNTRY);
|
||||
cuMemberRetailLog.setPkCreator(MagicNumberConstants.PK_ADMIN);
|
||||
cuMemberRetailLog.setOrderCode(saOrderExt.getOrderCode());
|
||||
if (saOrderExt.getCancelBool() != null && saOrderExt.getCancelBool()) {
|
||||
cuMemberRetailLog.setCancelStatus(EYesNo.YES.getIntValue());
|
||||
}
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
iBonusSettleService.calculateCuMemberRetailRangeBonusBySaOrder(saOrderExt.getOrderCode());
|
||||
} catch (Exception e) {
|
||||
cuMemberRetailLog.setEnableStatus(EYesNo.NO.getIntValue());
|
||||
cuMemberRetailLog.setMsg(e.getMessage());
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
iCuMemberRetailLogService.save(cuMemberRetailLog);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -163,7 +163,6 @@
|
|||
a.pay_time,
|
||||
a.pk_rate,
|
||||
a.system_type,
|
||||
a.income_status,
|
||||
a.pk_country,
|
||||
a.pk_settle_country,
|
||||
a.enable_status,
|
||||
|
@ -204,6 +203,34 @@
|
|||
</foreach>
|
||||
</select>
|
||||
|
||||
<!-- 根据会员查询会员血缘上网体 秒结使用 -->
|
||||
<select id="getCuMemberRetailRangeParent" resultMap="CuMemberRetailRangeExt">
|
||||
select a.pk_id pk_member,
|
||||
a.member_code,
|
||||
a.member_name,
|
||||
a.pk_parent,
|
||||
a.pk_settle_country,
|
||||
a.category,
|
||||
a.account_status,
|
||||
a.pk_settle_grade pk_grade,
|
||||
a.income_status,
|
||||
a.pay_time,
|
||||
a.system_type,
|
||||
a.pk_country,
|
||||
a.pk_settle_country,
|
||||
a.is_activate enable_status,
|
||||
ba.grade_value,
|
||||
ba.grade_name
|
||||
from (select *
|
||||
from cu_member
|
||||
where del_flag = 0
|
||||
start with pk_id = #{item}
|
||||
connect by pk_id = prior pk_parent) a
|
||||
inner join bd_grade ba
|
||||
on a.pk_settle_grade = ba.pk_id
|
||||
where ba.del_flag = 0
|
||||
</select>
|
||||
|
||||
<select id="queryCuMemberRetailRangeByMemberId"
|
||||
resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt">
|
||||
SELECT a.pk_member,
|
||||
|
@ -254,6 +281,33 @@
|
|||
and a.pk_member = #{memberId}
|
||||
</select>
|
||||
|
||||
<!-- 查询会员信息 -->
|
||||
<select id="getMemberRetailRange"
|
||||
resultType="com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt">
|
||||
select a.pk_id pk_member,
|
||||
a.member_code,
|
||||
a.member_name,
|
||||
a.pk_parent,
|
||||
a.pk_settle_country,
|
||||
a.category,
|
||||
a.account_status,
|
||||
a.pk_settle_grade pk_grade,
|
||||
a.income_status,
|
||||
a.pay_time,
|
||||
a.system_type,
|
||||
a.pk_country,
|
||||
a.pk_settle_country,
|
||||
a.is_activate enable_status,
|
||||
ba.grade_value,
|
||||
ba.grade_name
|
||||
from cu_member a
|
||||
inner join bd_grade ba
|
||||
on a.pk_settle_grade = ba.pk_id
|
||||
where a.del_flag = 0
|
||||
and a.pk_id = #{item}
|
||||
and ba.del_flag = 0
|
||||
</select>
|
||||
|
||||
<!-- 更新会员激活状态 -->
|
||||
<update id="updateMemberEnable">
|
||||
update ${rangeTableName} cmr
|
||||
|
@ -264,4 +318,56 @@
|
|||
</foreach>
|
||||
</update>
|
||||
|
||||
<!-- 当前网体更新极差秒接表 -->
|
||||
<update id="mergeMemberSecondRetailRangeByRange">
|
||||
merge into ${secondRangeTableName} a
|
||||
using (
|
||||
select a.pk_id pk_member,
|
||||
a.pk_parent,
|
||||
a.pk_settle_grade pk_grade,
|
||||
a.pk_awards,
|
||||
a.pk_range_awards,
|
||||
a.is_activate enable_status,
|
||||
a.system_type
|
||||
from (select *
|
||||
from cu_member
|
||||
where del_flag = 0
|
||||
start
|
||||
with pk_id = #{pkMember}
|
||||
connect by pk_id = prior pk_parent
|
||||
) a
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when not matched then
|
||||
insert (pk_member, pk_parent, pk_grade, pk_awards, pk_share_awards, enable_status, system_type)
|
||||
values (b.pk_member, b.pk_parent, b.pk_grade, b.pk_awards, b.pk_range_awards, b.enable_status, b.system_type)
|
||||
</update>
|
||||
|
||||
<!-- 更新极差秒接表,用昨天的结算表 -->
|
||||
<update id="mergeMemberSecondRetailRangeByRangeEnable">
|
||||
merge into ${secondRangeTableName} a
|
||||
using (
|
||||
select a.pk_id pk_member,
|
||||
a.pk_parent,
|
||||
a.pk_settle_grade pk_grade,
|
||||
a.pk_awards,
|
||||
a.pk_range_awards,
|
||||
nvl(b.enable_status, 1) enable_status
|
||||
from (select *
|
||||
from cu_member
|
||||
where del_flag = 0
|
||||
start
|
||||
with pk_id = #{pkMember}
|
||||
connect by pk_id = prior pk_parent
|
||||
) a
|
||||
left join ${rangeTableName} b
|
||||
on a.pk_id = b.pk_member
|
||||
where b.enable_status = 0
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set a.enable_status = b.enable_status, a.pk_grade = b.pk_grade
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -507,4 +507,93 @@
|
|||
from dual connect by rownum <= #{rowNum}
|
||||
</select>
|
||||
|
||||
<insert id="insertOrUpdateCuMemberBonus">
|
||||
merge into cu_member_bonus a
|
||||
using(
|
||||
select pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
|
||||
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
|
||||
pur_real_subtotal,repur_push_income,
|
||||
repur_range_income,
|
||||
repur_expand_income,repur_real_subtotal,
|
||||
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
|
||||
repur_coupon,repur_coupon_subtotal,global_points,
|
||||
car_award_points,hi_fun_income,hai_fun_income,
|
||||
retail_range_income, retail_same_level_income, retail_area_income,
|
||||
retail_benefit_range_income, retail_benefit_avg_income, retail_benefit_income,
|
||||
retail_real_subtotal, maker_direct_income,maker_share_income, maker_real_subtotal, real_income_total,
|
||||
pk_country, pk_creator, grant_status, income_status
|
||||
from (
|
||||
<foreach item="item" index="index" collection="cuMemberBonusList" separator=" union ">
|
||||
select #{item.pkId} pk_id,#{item.pkMember} pk_member,#{item.period} period,#{item.pkRate} pk_rate,
|
||||
#{item.directIncome} direct_income,#{item.expandIncome} expand_income,#{item.expandNoCapping} expand_no_capping,
|
||||
#{item.expandCapping} expand_capping,#{item.coachIncome} coach_income,#{item.shareIncome} share_income,
|
||||
#{item.serviceIncome} service_income,#{item.backPoints} back_points,#{item.serviceSpend} service_spend,
|
||||
#{item.purRealSubtotal} pur_real_subtotal,#{item.repurPushIncome} repur_push_income,
|
||||
#{item.repurRangeIncome} repur_range_income,
|
||||
#{item.repurExpandIncome} repur_expand_income,
|
||||
#{item.repurRealSubtotal} repur_real_subtotal,#{item.cloudDirectIncome} cloud_direct_income,
|
||||
#{item.cloudPurIncome} cloud_pur_income,#{item.cloudRepurIncome} cloud_repur_income,
|
||||
#{item.cloudRealSubtotal} cloud_real_subtotal,#{item.repurCoupon} repur_coupon,
|
||||
#{item.repurCouponSubtotal} repur_coupon_subtotal,#{item.globalPoints} global_points,
|
||||
#{item.carAwardPoints} car_award_points,#{item.hiFunIncome} hi_fun_income,
|
||||
#{item.haiFunIncome} hai_fun_income,#{item.makerDirectIncome} maker_direct_income,
|
||||
#{item.makerShareIncome} maker_share_income,#{item.makerRealSubtotal} maker_real_subtotal,
|
||||
#{item.realIncomeTotal} real_income_total,#{item.pkCountry} pk_country,#{item.pkCreator} pk_creator,
|
||||
#{item.grantStatus} grant_status, #{item.incomeStatus} income_status,
|
||||
#{item.retailRangeIncome} retail_range_income, #{item.retailSameLevelIncome} retail_same_level_income,
|
||||
#{item.retailAreaIncome} retail_area_income, #{item.retailBenefitRangeIncome} retail_benefit_range_income,
|
||||
#{item.retailBenefitAvgIncome} retail_benefit_avg_income, #{item.retailBenefitIncome} retail_benefit_income,
|
||||
#{item.retailRealSubtotal} retail_real_subtotal
|
||||
from dual
|
||||
</foreach>)
|
||||
) b
|
||||
on (a.pk_member = b.pk_member and a.period = b.period)
|
||||
when matched then
|
||||
update set
|
||||
a.direct_income = a.direct_income + b.direct_income,a.expand_income=a.expand_income+b.expand_income,
|
||||
a.expand_no_capping=a.expand_no_capping+b.expand_no_capping,a.expand_capping=a.expand_capping+b.expand_capping,
|
||||
a.coach_income=a.coach_income+b.coach_income,a.share_income=a.share_income+b.share_income,
|
||||
a.service_income=a.service_income+b.service_income,a.back_points=a.back_points+b.back_points,a.service_spend=a.service_spend+b.service_spend,
|
||||
a.pur_real_subtotal=a.pur_real_subtotal+b.pur_real_subtotal,a.repur_push_income=a.repur_push_income+b.repur_push_income,
|
||||
a.repur_range_income = a.repur_range_income + b.repur_range_income,
|
||||
a.repur_expand_income=a.repur_expand_income+b.repur_expand_income,
|
||||
a.repur_real_subtotal=a.repur_real_subtotal+b.repur_real_subtotal,a.cloud_direct_income=a.cloud_direct_income+b.cloud_direct_income,
|
||||
a.cloud_pur_income=a.cloud_pur_income+b.cloud_pur_income,a.cloud_repur_income=a.cloud_repur_income+b.cloud_repur_income,
|
||||
a.cloud_real_subtotal=a.cloud_real_subtotal+b.cloud_real_subtotal,a.repur_coupon=a.repur_coupon+b.repur_coupon,
|
||||
a.global_points=a.global_points+b.global_points,a.car_award_points=a.car_award_points+b.car_award_points,
|
||||
a.hi_fun_income=a.hi_fun_income+b.hi_fun_income,a.real_income_total=a.real_income_total+b.real_income_total,
|
||||
a.retail_range_income = a.retail_range_income + b.retail_range_income,
|
||||
a.retail_same_level_income = a.retail_same_level_income + b.retail_same_level_income,
|
||||
a.retail_area_income = a.retail_area_income + b.retail_area_income,
|
||||
a.retail_benefit_range_income = a.retail_benefit_range_income + b.retail_benefit_range_income,
|
||||
a.retail_benefit_avg_income = a.retail_benefit_avg_income + b.retail_benefit_avg_income,
|
||||
a.retail_benefit_income = a.retail_benefit_income + b.retail_benefit_income,
|
||||
a.retail_real_subtotal = a.retail_real_subtotal + b.retail_real_subtotal
|
||||
when not matched then
|
||||
insert (
|
||||
pk_id,pk_member,period,pk_rate,direct_income,expand_income,expand_no_capping,
|
||||
expand_capping,coach_income,share_income,service_income,back_points,service_spend,
|
||||
pur_real_subtotal,repur_push_income,
|
||||
repur_range_income,
|
||||
repur_expand_income,repur_real_subtotal,
|
||||
cloud_direct_income,cloud_pur_income,cloud_repur_income,cloud_real_subtotal,
|
||||
repur_coupon,global_points,car_award_points,hi_fun_income,real_income_total,
|
||||
pk_country,pk_creator,grant_status,income_status,
|
||||
retail_range_income, retail_same_level_income, retail_area_income,
|
||||
retail_benefit_range_income, retail_benefit_avg_income, retail_benefit_income,
|
||||
retail_real_subtotal)
|
||||
values (
|
||||
b.pk_id,b.pk_member,b.period,b.pk_rate,b.direct_income,b.expand_income,b.expand_no_capping,
|
||||
b.expand_capping,b.coach_income,b.share_income,b.service_income,b.back_points,b.service_spend,
|
||||
b.pur_real_subtotal,b.repur_push_income,
|
||||
b.repur_range_income,
|
||||
b.repur_expand_income,b.repur_real_subtotal,
|
||||
b.cloud_direct_income,b.cloud_pur_income,b.cloud_repur_income,b.cloud_real_subtotal,
|
||||
b.repur_coupon,b.global_points,b.car_award_points,b.hi_fun_income,b.real_income_total,
|
||||
b.pk_country,b.pk_creator,b.grant_status,b.income_status,
|
||||
b.retail_range_income, b.retail_same_level_income, b.retail_area_income,
|
||||
b.retail_benefit_range_income, b.retail_benefit_avg_income, b.retail_benefit_income,
|
||||
b.retail_real_subtotal)
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.hzs.bonus.bonus.mapper.CuMemberRetailLogMapper">
|
||||
|
||||
<update id="updateCuMemberRetailLogByList">
|
||||
update cu_member_retail_log
|
||||
set enable_status = 0
|
||||
where del_flag = 0
|
||||
and pk_id in
|
||||
<foreach collection="cuMemberRetailLogs" item="item" open="(" close=")" separator=",">
|
||||
#{item.pkId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
</mapper>
|
|
@ -35,4 +35,31 @@
|
|||
order by upgrade_time
|
||||
</select>
|
||||
|
||||
<!-- 查询会员最新手动升级记录,更新秒结表会员等级小于手动升级的会员等级 -->
|
||||
<update id="updateCuMemberGradeSecond">
|
||||
merge into ${secondRangeTableName} a
|
||||
using (
|
||||
select cs.pk_member, b.pk_grade
|
||||
from ${secondRangeTableName} cs
|
||||
inner join (
|
||||
select a.pk_member, max(a.new_level) pk_grade
|
||||
from cu_member_grade a
|
||||
inner join (
|
||||
select pk_member, max(nvl(modified_time, creation_time)) creation_time
|
||||
from cu_member_grade
|
||||
where period <= #{period}
|
||||
and del_flag = 0
|
||||
and up_type = 2
|
||||
group by pk_member
|
||||
) b on a.pk_member = b.pk_member and nvl(a.modified_time, a.creation_time) = b.creation_time
|
||||
group by a.pk_member
|
||||
) b on cs.pk_member = b.pk_member
|
||||
where cs.pk_grade < b.pk_grade
|
||||
) b
|
||||
on (a.pk_member = b.pk_member)
|
||||
when matched then
|
||||
update set
|
||||
a.pk_grade = b.pk_grade
|
||||
</update>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -52,6 +52,7 @@ import com.hzs.system.base.dto.CurrencyDTO;
|
|||
import com.hzs.system.config.IGradeServiceApi;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -100,6 +101,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@DubboReference
|
||||
IGradeServiceApi iGradeServiceApi;
|
||||
|
@ -537,9 +540,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
log.error("新零售 payRegSaOrder 会员注册失败,{}", saveResult.getMsg());
|
||||
throw new RuntimeException("会员注册失败");
|
||||
}
|
||||
// 同步全网产品库存
|
||||
this.allProductSync(saOrderExt);
|
||||
|
||||
this.pushOrderMq(saOrderExt);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -561,9 +563,8 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
log.error("新零售 payUpgOrder 会员升级失败,{}", saveResult.getMsg());
|
||||
throw new RuntimeException("会员升级失败");
|
||||
}
|
||||
// 同步全网产品库存
|
||||
this.allProductSync(saOrderExt);
|
||||
|
||||
this.pushOrderMq(saOrderExt);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -582,10 +583,33 @@ public class RetailOrderServiceImpl implements IRetailOrderService {
|
|||
log.error("新零售 payOtherOrder 会员其它订单失败,{}", saveResult.getMsg());
|
||||
throw new RuntimeException("下单支付失败");
|
||||
}
|
||||
|
||||
this.pushOrderMq(saOrderExt);
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单推送MQ处理
|
||||
*
|
||||
* @param saOrderExt 会员订单
|
||||
*/
|
||||
private void pushOrderMq(SaOrderExt saOrderExt) {
|
||||
try {
|
||||
// 同步全网产品库存
|
||||
this.allProductSync(saOrderExt);
|
||||
|
||||
return null;
|
||||
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
|
||||
|| EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()
|
||||
) {
|
||||
// 计算奖金,通过mq分发消息,异步处理
|
||||
saOrderExt.setCancelBool(Boolean.FALSE);
|
||||
log.info("新零售秒结消息,order.second.exchange:{}", saOrderExt.getOrderCode());
|
||||
rabbitTemplate.convertAndSend(RabbitMqConstants.ORDER_SECOND_EXCHANGE, RabbitMqConstants.ORDER_SECOND_KEY, saOrderExt);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("新零售 pushOrderMq 推送MQ失败. order: {}", saOrderExt, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
|
|
|
@ -10,6 +10,19 @@ public class RabbitMqConstants {
|
|||
*/
|
||||
public final static String PREFIX = "global.";
|
||||
|
||||
/**
|
||||
* 奖金秒接 exchange
|
||||
*/
|
||||
public static final String ORDER_SECOND_EXCHANGE = PREFIX + "order.second.exchange";
|
||||
/**
|
||||
* 奖金秒接 queue
|
||||
*/
|
||||
public static final String ORDER_SECOND_QUEUE = PREFIX + "order.second.queue";
|
||||
/**
|
||||
* 奖金秒接 key
|
||||
*/
|
||||
public static final String ORDER_SECOND_KEY = PREFIX + "order.second.key";
|
||||
|
||||
/**
|
||||
* 活动 exchange
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue