## 直推升级撤单降级;

This commit is contained in:
cabbage 2025-09-24 09:14:19 +08:00
parent 9c6510f55d
commit 7a274cf736
20 changed files with 218 additions and 215 deletions

View File

@ -284,7 +284,7 @@ public interface IMemberServiceApi {
R<Boolean> updateCuMemberAccountByDraw(Integer payNum, AcDrawRewardNumExt acDrawRewardNumExt);
/**
* 更新用户等级
* 更新用户等级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
@ -292,6 +292,23 @@ public interface IMemberServiceApi {
*/
R<?> updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel);
/**
* 用户降级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
*/
R<?> reduceMemberLevel(CuMember cuMember, SaOrder saOrder);
/**
* 更新升级记录 -- 来源于活动
*
* @param saOrder 原订单
* @param newOrder 新订单
* @return
*/
R<?> changeMemberLevel(SaOrder saOrder, SaOrder newOrder);
/**
* 校验是否血缘关系返回true则有血缘关系
*

View File

@ -1,6 +1,5 @@
package com.hzs.activity.dto;
import com.hzs.common.core.enums.EOrderOperateStatus;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.AllArgsConstructor;
@ -12,12 +11,6 @@ import java.io.Serializable;
/**
* 直推-升级DTO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/26 10:27
* @Classname: AcRepurchaseCouponsDTO
* @Package_name: com.hzs.activity.recommend.dto
*/
@Data
@Builder

View File

@ -351,6 +351,26 @@ public class MemberServiceProvider implements IMemberServiceApi {
}
}
@Override
public R<?> reduceMemberLevel(CuMember cuMember, SaOrder saOrder) {
try {
iCuMemberBusinessService.reduceMemberLevel(cuMember, saOrder);
return R.ok();
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
@Override
public R<?> changeMemberLevel(SaOrder saOrder, SaOrder newOrder) {
try {
iCuMemberBusinessService.changeMemberLevel(saOrder, newOrder);
return R.ok();
} catch (Exception e) {
return R.fail(e.getMessage());
}
}
@Override
public R<Boolean> checkParent(String topCode, Long userId) {
return R.ok(iCuMemberService.checkParent(topCode, userId) > 0);

View File

@ -168,7 +168,7 @@ public interface ICuMemberBusinessService {
Boolean updateCuMemberAccountByDraw(Integer payNum, AcDrawRewardNumExt acDrawRewardNumExt);
/**
* 更新用户等级
* 更新用户等级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
@ -176,6 +176,23 @@ public interface ICuMemberBusinessService {
*/
void updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel);
/**
* 用户降级 -- 来源于活动
*
* @param cuMember 用户信息
* @param saOrder 订单信息
*/
void reduceMemberLevel(CuMember cuMember, SaOrder saOrder);
/**
* 更新升级记录 -- 来源于活动
*
* @param saOrder 原订单
* @param newOrder 新订单
* @return
*/
void changeMemberLevel(SaOrder saOrder, SaOrder newOrder);
/**
* 查询会员的安置位置
*

View File

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hzs.activity.pick.IAcPickServiceApi;
import com.hzs.bonus.settle.IMemberSettleBonusApi;
import com.hzs.common.core.constant.CacheConstants;
@ -61,9 +62,7 @@ import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAccountServiceApi;
import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IAwardsServiceApi;
import com.hzs.system.config.IGradeServiceApi;
import com.hzs.system.config.dto.AreaCurrencyDTO;
import com.hzs.system.config.dto.GradeDTO;
import com.hzs.third.pay.ITOnlinePaymentServiceApi;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
@ -92,8 +91,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@DubboReference
ISaOrderServiceApi iSaOrderServiceApi;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@DubboReference
IMemberSettleBonusApi iMemberSettleBonusApi;
@Autowired
@ -1201,13 +1198,38 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
return null;
}
@Override
@Transactional(rollbackFor = Exception.class)
@Override
public void updateMemberLevel(CuMember cuMember, SaOrder saOrder, Integer pkOldLevel) {
updateCuMember(cuMember);
saveLevelUpgrade(cuMember, EUpgradeType.ACTIVITY_UPGRADE.getValue(), saOrder, pkOldLevel);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void reduceMemberLevel(CuMember cuMember, SaOrder saOrder) {
updateCuMember(cuMember);
iCuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
.eq(CuMemberLevel::getPkMember, cuMember.getPkId())
.eq(CuMemberLevel::getUpType, EUpgradeType.ACTIVITY_UPGRADE.getValue())
.eq(CuMemberLevel::getPkOrder, saOrder.getPkId())
.set(CuMemberLevel::getDelFlag, EDelFlag.DELETE.getValue())
.set(CuMemberLevel::getUpgradeTime, new Date())
);
}
@Transactional(rollbackFor = Exception.class)
@Override
public void changeMemberLevel(SaOrder saOrder, SaOrder newOrder) {
iCuMemberLevelService.update(Wrappers.<CuMemberLevel>lambdaUpdate()
.eq(CuMemberLevel::getPkMember, saOrder.getPkReference())
.eq(CuMemberLevel::getUpType, EUpgradeType.ACTIVITY_UPGRADE.getValue())
.eq(CuMemberLevel::getPkOrder, saOrder.getPkId())
.set(CuMemberLevel::getPkOrder, newOrder.getPkId())
.set(CuMemberLevel::getUpgradeTime, newOrder.getPayTime())
);
}
@Override
public CuMember queryCuMemberPlaceDept(CuMember cuMember, Boolean isFirst, Boolean isFirstAchieve) {
Long pkMember = cuMember.getPkParent();

View File

@ -1,11 +1,9 @@
package com.hzs.activity.base.provider;
import cn.hutool.core.bean.BeanUtil;
import com.hzs.activity.base.IActivityServiceApi;
import com.hzs.activity.base.service.IActivityService;
import com.hzs.activity.draw.service.IAcDrawRewardNumService;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.recommend.service.IAcRepurCouponsRuleConfigService;
import com.hzs.common.core.domain.R;
import com.hzs.common.domain.activity.recommend.AcRepurCouponsRuleConfig;
@ -81,7 +79,7 @@ public class ActivityServiceProvider implements IActivityServiceApi {
@Override
public R<Boolean> invokeRecommendUpgrade(AcRecommendUpgradeDTO recommendUpgradeDTO) {
try {
return R.ok(iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(BeanUtil.copyProperties(recommendUpgradeDTO, AcRecommendUpgrade.class)));
return R.ok(iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(recommendUpgradeDTO));
} catch (Exception e) {
return R.fail();
}

View File

@ -19,8 +19,8 @@ import com.hzs.activity.draw.service.IAcDrawGiftRuleConfigService;
import com.hzs.activity.draw.service.IAcDrawRewardNumService;
import com.hzs.activity.draw.service.IAcDrawRuleConfigService;
import com.hzs.activity.draw.vo.AcDrawGiftRuleConfigVo;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.pick.service.IAcPickUpConfigService;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.service.IAcRepurCouponsRuleConfigService;
import com.hzs.activity.wares.service.IAcGiftConfigService;
@ -807,7 +807,7 @@ public class ActivityServiceImpl implements IActivityService {
// // 抽奖
// iAcDrawRewardNumService.giveMemberDrawNum(saOrderExt);
// 直推升级
iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgrade.builder()
iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgradeDTO.builder()
.saOrderExt(saOrderExt)
.orderOperateStatus(EOrderOperateStatus.NORMAL)
.build());
@ -815,7 +815,7 @@ public class ActivityServiceImpl implements IActivityService {
// // 抽奖
// iAcDrawRewardNumService.giveMemberDrawNum(saOrderExt);
// 直推升级
iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgrade.builder()
iAcRepurCouponsRuleConfigService.invokeRecommendUpgrade(AcRecommendUpgradeDTO.builder()
.saOrderExt(saOrderExt)
.orderOperateStatus(EOrderOperateStatus.NORMAL)
.build());

View File

@ -1,32 +0,0 @@
package com.hzs.activity.recommend.dto;
import com.hzs.common.core.enums.EOrderOperateStatus;
import com.hzs.common.domain.sale.ext.SaOrderExt;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 直推-升级DTO
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AcRecommendUpgrade implements Serializable {
private static final long serialVersionUID = 9005728656479475728L;
/**
* 订单信息
*/
private SaOrderExt saOrderExt;
/**
* 订单操作状态
*/
private EOrderOperateStatus orderOperateStatus;
}

View File

@ -35,11 +35,11 @@ public interface AcRecomUpgradeRecordMapper extends BaseMapper<AcRecomUpgradeRec
/**
* 判断会员是否达标并且查询对应订单
*/
SaOrder getRecomOrder(@Param("pkMember") Long pkMember,
@Param("pkGrade") Integer pkGrade,
@Param("num") Integer num,
@Param("startTime") Date startTime,
@Param("endTime") Date endTime);
List<SaOrder> listRecomOrder(@Param("pkMember") Long pkMember,
@Param("pkGrade") Integer pkGrade,
@Param("num") Integer num,
@Param("startTime") Date startTime,
@Param("endTime") Date endTime);
List<AcDirectPushUpgradeListVO> queryList(AcDirectPushUpgradeListParam param);
}

View File

@ -53,7 +53,7 @@ public interface IAcRecomUpgradeRecordService extends IService<AcRecomUpgradeRec
/**
* 判断会员是否达标并且查询对应订单
*/
SaOrder getRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime);
List<SaOrder> listRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime);
List<AcDirectPushUpgradeListVO> queryList(AcDirectPushUpgradeListParam param);
}

View File

@ -1,7 +1,7 @@
package com.hzs.activity.recommend.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeParam;
import com.hzs.activity.recommend.param.AcRecommendParam;
import com.hzs.activity.recommend.vo.AcRecommendVO;
@ -59,7 +59,7 @@ public interface IAcRepurCouponsRuleConfigService extends IService<AcRepurCoupon
*
* @param acRecommendUpgrade 直推升级信息
*/
Boolean invokeRecommendUpgrade(AcRecommendUpgrade acRecommendUpgrade);
Boolean invokeRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade);
/**
* 查询目前所有启用的复购券规则

View File

@ -52,8 +52,8 @@ public class AcRecomUpgradeRecordServiceImpl extends ServiceImpl<AcRecomUpgradeR
}
@Override
public SaOrder getRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime) {
return baseMapper.getRecomOrder(pkMember, pkGrade, num, startTime, endTime);
public List<SaOrder> listRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime) {
return baseMapper.listRecomOrder(pkMember, pkGrade, num, startTime, endTime);
}
@Override

View File

@ -12,9 +12,8 @@ import com.hzs.activity.base.param.ActivityParam;
import com.hzs.activity.base.service.*;
import com.hzs.activity.base.vo.AcGiftConfigVO;
import com.hzs.activity.base.vo.BaseConfigVo;
import com.hzs.activity.dto.AcRecommendUpgradeDTO;
import com.hzs.activity.people.vo.AcBaseConfigVO;
import com.hzs.activity.pick.service.IAcPickService;
import com.hzs.activity.recommend.dto.AcRecommendUpgrade;
import com.hzs.activity.recommend.mapper.AcRepurCouponsRuleConfigMapper;
import com.hzs.activity.recommend.param.AcDirectPushUpgradeParam;
import com.hzs.activity.recommend.param.AcRecommendParam;
@ -48,7 +47,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Member;
import java.util.*;
import java.util.stream.Collectors;
@ -73,8 +71,6 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
@Autowired
private IAcApprovalLogService acApprovalLogService;
@Autowired
private IAcPickService acPickService;
@Autowired
private IAcGoalMemberConfigService acGoalMemberConfigService;
@Autowired
private IAcRepurSharOrderTypeService acRepurSharOrderTypeService;
@ -582,32 +578,31 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean invokeRecommendUpgrade(AcRecommendUpgrade acRecommendUpgrade) {
AcBaseConfigVO baseConfigVO = AcBaseConfigVO.builder()
.actType(EActType.RECOMMEND_UPGRADE.getValue())
.pkCountry(acRecommendUpgrade.getSaOrderExt().getPkCountry())
.build();
// 查询订单时内的直推活动
List<AcBaseConfig> acBaseConfigs = iAcBaseConfigService.selectBaseConfigByType(baseConfigVO);
if (CollUtil.isNotEmpty(acBaseConfigs)) {
EOrderOperateStatus orderOperateStatus = acRecommendUpgrade.getOrderOperateStatus();
for (AcBaseConfig baseConfig : acBaseConfigs) {
if (orderOperateStatus.equals(EOrderOperateStatus.NORMAL)) {
// 正常处理
public Boolean invokeRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade) {
if (EOrderOperateStatus.NORMAL.equals(acRecommendUpgrade.getOrderOperateStatus())) {
// 正向处理
AcBaseConfigVO baseConfigVO = AcBaseConfigVO.builder()
.actType(EActType.RECOMMEND_UPGRADE.getValue())
.pkCountry(acRecommendUpgrade.getSaOrderExt().getPkCountry())
.build();
// 查询订单时内的直推活动
List<AcBaseConfig> acBaseConfigs = iAcBaseConfigService.selectBaseConfigByType(baseConfigVO);
if (CollUtil.isNotEmpty(acBaseConfigs)) {
for (AcBaseConfig baseConfig : acBaseConfigs) {
handleRecommendUpgrade(acRecommendUpgrade, baseConfig);
} else {
// 撤单处理
cancelOrder(acRecommendUpgrade, baseConfig);
}
}
} else {
// 撤单处理
handleCancelRecommendUpgrade(acRecommendUpgrade);
}
return true;
}
/**
* 处理业务(正常报单)
* 下单处理
*/
private void handleRecommendUpgrade(AcRecommendUpgrade acRecommendUpgrade, AcBaseConfig baseConfig) {
private void handleRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade, AcBaseConfig baseConfig) {
Date nowDate = new Date();
// 订单信息
SaOrderExt saOrderExt = acRecommendUpgrade.getSaOrderExt();
@ -658,8 +653,10 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
if (monthFirst.compareTo(startTime) > 0) {
startTime = monthFirst;
}
List<SaOrder> recomOrderList = iAcRecomUpgradeRecordService.listRecomOrder(pkMember, upgradeRuleConfig.getPkRecommendGrade(), upgradeRuleConfig.getRecommendNumber(), startTime, endTime);
// 校验推荐人是否可以升级
if (null == iAcRecomUpgradeRecordService.getRecomOrder(pkMember, upgradeRuleConfig.getPkRecommendGrade(), upgradeRuleConfig.getRecommendNumber(), startTime, endTime)) {
if (CollectionUtil.isEmpty(recomOrderList)
|| recomOrderList.size() != upgradeRuleConfig.getRecommendNumber()) {
return;
}
// 封装规则升级记录
@ -699,69 +696,80 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
}
}
/**
* 撤单
* 撤单处理
*/
private Boolean cancelOrder(AcRecommendUpgrade acRecommendUpgrade, AcBaseConfig baseConfig) {
private void handleCancelRecommendUpgrade(AcRecommendUpgradeDTO acRecommendUpgrade) {
Date nowDate = new Date();
// 订单信息
SaOrderExt saOrderExt = acRecommendUpgrade.getSaOrderExt();
// 订单ID
Long pkOrderId = saOrderExt.getPkId();
//修改人
Long pkModified = saOrderExt.getPkReference();
AcRecomUpgradeRecordExt upgradeRecordOrder = new AcRecomUpgradeRecordExt();
upgradeRecordOrder.setPkOrderId(pkOrderId);
upgradeRecordOrder.setStartDate(baseConfig.getActStartDate());
upgradeRecordOrder.setEndDate(baseConfig.getActEndDate());
//根据orderId查询
AcRecomUpgradeRecord recomUpgradeRecord = iAcRecomUpgradeRecordService.selectUpgradeRecordByOrderId(upgradeRecordOrder);
if (null != recomUpgradeRecord) {
Long pkRuleId = recomUpgradeRecord.getPkRuleId();
//查询规则
AcRecomUpgradeRuleConfig upgradeRuleConfig = iAcRecomUpgradeRuleConfigService.getById(pkRuleId);
//结算等级
Integer pkSettleGrade = upgradeRuleConfig.getPkSettleGrade();
//找茬等级
Integer pkRecommendGrade = upgradeRuleConfig.getPkRecommendGrade();
if (pkSettleGrade.equals(recomUpgradeRecord.getPkSettleGrade()) && pkRecommendGrade.equals(recomUpgradeRecord.getPkRecommendGrade())) {
//撤单更新状态
iAcRecomUpgradeRecordService.cancelOrder(pkOrderId, pkModified);
AcRecomUpgradeRecordExt upgradeRecord = BeanUtil.copyProperties(recomUpgradeRecord, AcRecomUpgradeRecordExt.class);
upgradeRecord.setPkSettleGrade(pkSettleGrade);
upgradeRecord.setPkRecommendGrade(pkRecommendGrade);
upgradeRecord.setStartDate(baseConfig.getActStartDate());
upgradeRecord.setEndDate(baseConfig.getActEndDate());
upgradeRecord.setUpgradeStatus(1);
//推荐人数
List<Long> recommendNumber = iAcRecomUpgradeRecordService.selectRecommendNumber(upgradeRecord);
//配置的推荐人数
Integer recommendConfigNumber = upgradeRuleConfig.getRecommendNumber();
if (CollUtil.isNotEmpty(recommendNumber) && recommendNumber.size() < recommendConfigNumber) {
Long pkMember = recomUpgradeRecord.getPkMember();
//调用降级处理
Integer pkUpgradeGrade = upgradeRuleConfig.getPkUpgradeGrade();
CuMember data = iMemberServiceApi.getMember(pkMember).getData();
//用户信息
CuMember cuMember = CuMember.builder().pkId(pkMember).pkSettleGrade(pkSettleGrade).memberCode(data.getMemberCode())
.pkSettleCountry(data.getPkSettleCountry()).build();
cuMember.setPkModified(pkMember);
cuMember.setModifiedTime(new Date());
SaOrder saOrder = SaOrder.builder().payTime(new Date()).build();
//修改升级状态
iAcRecomUpgradeRecordService.updateUpgradeStatusById(recommendNumber, pkModified, EYesNo.YES.getIntValue());
//查询是否配置赠品
List<AcGiftConfigExt> acGiftConfigList = giftConfigService.queryListByRuleIdList(pkRuleId, saOrderExt.getPkCountry());
//调用提货接口
if (CollUtil.isNotEmpty(acGiftConfigList)) {
AcGiftConfigExt acGiftConfigExt = acGiftConfigList.get(0);
acPickService.updatePickUsableByMemberAndActivityType(pkMember, EActType.DIRECT_PUSH_GIFT.getValue(), baseConfig.getPkId(), pkRuleId
, acGiftConfigExt.getQuantity(), pkModified);
}
//调用降级处理
iMemberServiceApi.updateMemberLevel(cuMember, saOrder, pkUpgradeGrade);
// 推荐人
Long pkMember = saOrderExt.getPkReference();
List<AcRecomUpgradeRecord> upgradeRecordList = iAcRecomUpgradeRecordService.list(Wrappers.<AcRecomUpgradeRecord>lambdaQuery()
.eq(AcRecomUpgradeRecord::getPkMember, pkMember)
.eq(AcRecomUpgradeRecord::getPkOrderId, pkOrderId)
.orderByDesc(AcRecomUpgradeRecord::getUpgradeTime)
);
if (CollectionUtil.isNotEmpty(upgradeRecordList)) {
// 会员活动升级记录
AcRecomUpgradeRecord recomUpgradeRecord = upgradeRecordList.get(0);
// 删除活动升级记录
iAcRecomUpgradeRecordService.update(Wrappers.<AcRecomUpgradeRecord>lambdaUpdate()
.eq(AcRecomUpgradeRecord::getPkId, recomUpgradeRecord.getPkId())
.set(AcRecomUpgradeRecord::getDelFlag, EDelFlag.DELETE.getValue())
.set(AcRecomUpgradeRecord::getModifiedTime, nowDate)
.set(AcRecomUpgradeRecord::getPkModified, saOrderExt.getPkMember())
);
// 推荐会员信息
CuMember referenceMember = iMemberServiceApi.getMember(pkMember).getData();
if (!referenceMember.getPkSettleGrade().equals(recomUpgradeRecord.getPkRecommendGrade())) {
// 会员目前等于与这次活动升级不一致只需要删掉升级记录
CuMember cuMember = CuMember.builder()
.pkId(pkMember)
.pkSettleGrade(referenceMember.getPkSettleGrade())
.build();
iMemberServiceApi.reduceMemberLevel(cuMember, saOrderExt);
} else {
// 活动基础配置
AcBaseConfig baseConfig = iAcBaseConfigService.getById(recomUpgradeRecord.getPkId());
// 活动基础配置
AcRecomUpgradeRuleConfig upgradeRuleConfig = iAcRecomUpgradeRuleConfigService.getById(recomUpgradeRecord.getPkRuleId());
// 查询订单时间范围
// 默认活动开始时间
Date startTime = baseConfig.getActStartDate();
// 默认活动结束时间
Date endTime = baseConfig.getActEndDate();
// 当月第一天
Date monthFirst = DateUtils.getFirstDayOfMonth(nowDate);
if (monthFirst.compareTo(startTime) > 0) {
startTime = monthFirst;
}
// 当月最后一天
Date monthLast = DateUtils.getLastDayOfMonth(nowDate);
if (monthLast.compareTo(endTime) < 0) {
endTime = monthLast;
}
List<SaOrder> recomOrderList = iAcRecomUpgradeRecordService.listRecomOrder(pkMember, upgradeRuleConfig.getPkRecommendGrade(), upgradeRuleConfig.getRecommendNumber(), startTime, endTime);
// 校验推荐人是否可以升级
if (CollectionUtil.isEmpty(recomOrderList)
|| recomOrderList.size() != upgradeRuleConfig.getRecommendNumber()) {
// 订单撤单后目前订单不够升级了需要降级
CuMember cuMember = CuMember.builder()
.pkId(pkMember)
.pkSettleGrade(recomUpgradeRecord.getPkSettleGrade())
.build();
iMemberServiceApi.reduceMemberLevel(cuMember, saOrderExt);
return;
}
// 足够升级更新升级记录时间
SaOrder newOrder = recomOrderList.get(recomOrderList.size() - 1);
iMemberServiceApi.changeMemberLevel(saOrderExt, newOrder);
}
}
return true;
}
@ -792,32 +800,16 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
return true;
case PLACE_STOP:
// 安置禁止
if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) {
return false;
} else {
return true;
}
return iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) <= 0;
case BLOOD_STOP:
// 血缘禁止
if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) {
return false;
} else {
return true;
}
return iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) <= 0;
case PLACE_ALLWO:
// 安置可见
if (iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0) {
return true;
} else {
return false;
}
return iAcBaseAuthorityService.checkPlaceParent(pkMember, memberCodeList) > 0;
case BLOOD_ALLOW:
// 血缘可见
if (iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0) {
return true;
} else {
return false;
}
return iAcBaseAuthorityService.checkParent(pkMember, memberCodeList) > 0;
default:
}
}
@ -862,14 +854,14 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
}
Integer controlType = acDirectPushUpgradeParam.getControlType();
if (controlType.equals(EControlType.SAVE.getValue())) {
log.info("直推升级新增{}",JSONUtil.toJsonStr(acDirectPushUpgradeParam));
log.info("直推升级新增{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
return saveDirectPushUpgradeData(acDirectPushUpgradeParam);
} else if (controlType.equals(EControlType.MODIFY.getValue())) {
log.info("直推升级修改{}",JSONUtil.toJsonStr(acDirectPushUpgradeParam));
log.info("直推升级修改{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
deleteDirectPushUpgradeData(acDirectPushUpgradeParam);
return saveDirectPushUpgradeData(acDirectPushUpgradeParam);
} else {
log.info("直推升级刪除{}",JSONUtil.toJsonStr(acDirectPushUpgradeParam));
log.info("直推升级刪除{}", JSONUtil.toJsonStr(acDirectPushUpgradeParam));
deleteDirectPushUpgradeData(acDirectPushUpgradeParam);
}
//业务单号
@ -945,7 +937,6 @@ public class AcRepurCouponsRuleConfigServiceImpl extends ServiceImpl<AcRepurCoup
}
private String saveDirectPushUpgradeBaseConfig(AcDirectPushUpgradeParam acDirectPushUpgradeParam) {
ActivityParam activityParam = acDirectPushUpgradeParam.getActivityParam();
if (null == activityParam) {

View File

@ -10,12 +10,6 @@ import java.util.List;
/**
* 复购券均分VO
*
* @Description:
* @Author: ljc
* @Time: 2023/5/4 15:19
* @Classname: AcRecommendSharVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@AllArgsConstructor

View File

@ -11,12 +11,6 @@ import java.util.List;
/**
* 直推升级VO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:06
* @Classname: AcRecommendUpgradeVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@Builder

View File

@ -17,7 +17,6 @@ import java.util.List;
@NoArgsConstructor
public class AcRecommendVO implements Serializable {
private static final long serialVersionUID = 7140530986849619774L;
/**
* 活动基本配置主键

View File

@ -8,13 +8,6 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:40
* @Classname: AcRepurchaseCouponsShowVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@Builder
@AllArgsConstructor

View File

@ -1,6 +1,5 @@
package com.hzs.activity.recommend.vo;
import com.hzs.common.core.annotation.Transaction;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
@ -12,12 +11,6 @@ import java.math.BigDecimal;
/**
* 直推复购券 VO
*
* @Description:
* @Author: ljc
* @Time: 2023/4/22 11:00
* @Classname: AcRepurchaseCouponsVO
* @Package_name: com.hzs.activity.recommend.vo
*/
@Data
@AllArgsConstructor

View File

@ -41,23 +41,25 @@
</select>
<!-- 判断会员是否达标并且查询对应订单 -->
<select id="getRecomOrder" resultType="com.hzs.common.domain.sale.order.SaOrder">
select so.pk_reference, max(so.pk_id) pk_id, max(so.pay_time) pay_time
<select id="listRecomOrder" resultType="com.hzs.common.domain.sale.order.SaOrder">
select t.* from (
select so.*
from sa_order so
left join cu_member_level cml
on cml.pk_member = so.pk_member
and cml.pk_order = so.pk_id
left join bd_grade bg
on bg.pk_id = cml.new_level
left join cu_member_level cml
on cml.pk_member = so.pk_member
and cml.pk_order = so.pk_id
left join bd_grade bg
on bg.pk_id = cml.new_level
where so.del_flag = 0
and so.order_status = 1
and (so.order_type in (1, 2) or so.order_type_extend = 1)
and so.pay_time >= #{startTime}
and #{endTime} >= so.pay_time
and so.pk_reference = #{pkMember}
and bg.grade_value >= (select grade_value from bd_grade where pk_id = #{pkGrade})
group by so.pk_reference
having count(so.pk_reference) >= #{num}
and so.order_status = 1
and so.order_type in (1, 2)
and so.pay_time >= #{startTime}
and #{endTime} >= so.pay_time
and so.pk_reference = #{pkMember}
and bg.grade_value >= (select grade_value from bd_grade where pk_id = #{pkGrade})
order by so.pay_time
) t
where #{num} >= rownum
</select>
<select id="queryList" resultType="com.hzs.activity.recommend.vo.AcDirectPushUpgradeListVO">
SELECT

View File

@ -25,15 +25,16 @@ import java.util.List;
public class ActivityBackListener {
@DubboReference
IActivityServiceApi activityServiceApi;
IActivityServiceApi iActivityServiceApi;
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(value = RabbitMqConstants.ORDER_CANCEL_EXCHANGE, type = "topic"),
value = @Queue(value = RabbitMqConstants.ORDER_CANCEL_ACTIVITY_BACK_QUEUE, durable = "true", autoDelete = "false"),
key = RabbitMqConstants.ORDER_CANCEL_KEY))
@RabbitHandler
public void onMessage(Message<List<SaOrderExt>> message, Channel channel) throws Exception {
public void onMessage(Message<List<SaOrderExt>> message, Channel channel) {
try {
Thread.sleep(500);
Long deliveryTag = (Long) message.getHeaders().get(AmqpHeaders.DELIVERY_TAG);
channel.basicAck(deliveryTag, false);
@ -44,15 +45,16 @@ public class ActivityBackListener {
if (CollectionUtil.isNotEmpty(saOrderExtList)) {
SaOrderExt saOrderExt = saOrderExtList.get(0);
// 处理抽奖
activityServiceApi.backGiveMemberDrawNum(saOrderExt);
// // 处理抽奖
// iActivityServiceApi.backGiveMemberDrawNum(saOrderExt);
if (EOrderType.REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|| EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()
|| EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrderExt.getOrderType()
|| EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
|| EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) {
// 处理直推升级
activityServiceApi.invokeRecommendUpgrade(AcRecommendUpgradeDTO.builder().saOrderExt(saOrderExt).orderOperateStatus(EOrderOperateStatus.CANCEL).build());
iActivityServiceApi.invokeRecommendUpgrade(AcRecommendUpgradeDTO.builder().
saOrderExt(saOrderExt).
orderOperateStatus(EOrderOperateStatus.CANCEL)
.build());
}
}
} catch (Exception e) {