From ff2f6f30c1152d0ff134b9e98419022870e13d4d Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Wed, 24 Sep 2025 09:14:19 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E7=9B=B4=E6=8E=A8=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E6=92=A4=E5=8D=95=E9=99=8D=E7=BA=A7=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hzs/member/base/IMemberServiceApi.java | 19 +- .../activity/dto/AcRecommendUpgradeDTO.java | 7 - .../base/provider/MemberServiceProvider.java | 20 ++ .../service/ICuMemberBusinessService.java | 19 +- .../impl/CuMemberBusinessServiceImpl.java | 32 ++- .../provider/ActivityServiceProvider.java | 4 +- .../service/impl/ActivityServiceImpl.java | 6 +- .../recommend/dto/AcRecommendUpgrade.java | 32 --- .../mapper/AcRecomUpgradeRecordMapper.java | 10 +- .../service/IAcRecomUpgradeRecordService.java | 2 +- .../IAcRepurCouponsRuleConfigService.java | 4 +- .../impl/AcRecomUpgradeRecordServiceImpl.java | 4 +- .../AcRepurCouponsRuleConfigServiceImpl.java | 197 +++++++++--------- .../recommend/vo/AcRecommendSharVO.java | 6 - .../recommend/vo/AcRecommendUpgradeVO.java | 6 - .../activity/recommend/vo/AcRecommendVO.java | 1 - .../vo/AcRepurchaseCouponsShowVO.java | 7 - .../recommend/vo/AcRepurchaseCouponsVO.java | 7 - .../recommend/AcRecomUpgradeRecordMapper.xml | 32 +-- .../mqcall/listener/ActivityBackListener.java | 18 +- 20 files changed, 218 insertions(+), 215 deletions(-) delete mode 100644 bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/dto/AcRecommendUpgrade.java diff --git a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java index 33fa4a2b..6debd753 100644 --- a/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java +++ b/bd-api/bd-api-member/src/main/java/com/hzs/member/base/IMemberServiceApi.java @@ -284,7 +284,7 @@ public interface IMemberServiceApi { R 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则有血缘关系) * diff --git a/bd-api/bd-api-sale/src/main/java/com/hzs/activity/dto/AcRecommendUpgradeDTO.java b/bd-api/bd-api-sale/src/main/java/com/hzs/activity/dto/AcRecommendUpgradeDTO.java index 5c36ce25..b3dd209e 100644 --- a/bd-api/bd-api-sale/src/main/java/com/hzs/activity/dto/AcRecommendUpgradeDTO.java +++ b/bd-api/bd-api-sale/src/main/java/com/hzs/activity/dto/AcRecommendUpgradeDTO.java @@ -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 diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java index 39efa409..2655e529 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/provider/MemberServiceProvider.java @@ -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 checkParent(String topCode, Long userId) { return R.ok(iCuMemberService.checkParent(topCode, userId) > 0); diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberBusinessService.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberBusinessService.java index 165cc5a3..bb9504cc 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberBusinessService.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/ICuMemberBusinessService.java @@ -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); + /** * 查询会员的安置位置 * diff --git a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java index 1be5568b..a92dc78e 100644 --- a/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java +++ b/bd-business/bd-business-member/src/main/java/com/hzs/member/base/service/impl/CuMemberBusinessServiceImpl.java @@ -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.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.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(); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/provider/ActivityServiceProvider.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/provider/ActivityServiceProvider.java index bda2b989..28a72cfd 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/provider/ActivityServiceProvider.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/provider/ActivityServiceProvider.java @@ -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 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(); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/ActivityServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/ActivityServiceImpl.java index 0da80568..6490d755 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/ActivityServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/base/service/impl/ActivityServiceImpl.java @@ -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()); diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/dto/AcRecommendUpgrade.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/dto/AcRecommendUpgrade.java deleted file mode 100644 index 384bf615..00000000 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/dto/AcRecommendUpgrade.java +++ /dev/null @@ -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; - -} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/mapper/AcRecomUpgradeRecordMapper.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/mapper/AcRecomUpgradeRecordMapper.java index 35b630d1..07ff813b 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/mapper/AcRecomUpgradeRecordMapper.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/mapper/AcRecomUpgradeRecordMapper.java @@ -33,10 +33,10 @@ public interface AcRecomUpgradeRecordMapper extends BaseMapper listRecomOrder(@Param("pkMember") Long pkMember, + @Param("pkGrade") Integer pkGrade, + @Param("num") Integer num, + @Param("startTime") Date startTime, + @Param("endTime") Date endTime); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRecomUpgradeRecordService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRecomUpgradeRecordService.java index 1c4ad2dc..9387e87f 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRecomUpgradeRecordService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRecomUpgradeRecordService.java @@ -50,6 +50,6 @@ public interface IAcRecomUpgradeRecordService extends IService listRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRepurCouponsRuleConfigService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRepurCouponsRuleConfigService.java index e02cb887..48ad83da 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRepurCouponsRuleConfigService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/IAcRepurCouponsRuleConfigService.java @@ -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 listRecomOrder(Long pkMember, Integer pkGrade, Integer num, Date startTime, Date endTime) { + return baseMapper.listRecomOrder(pkMember, pkGrade, num, startTime, endTime); } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/impl/AcRepurCouponsRuleConfigServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/impl/AcRepurCouponsRuleConfigServiceImpl.java index 7d76f1b9..6a94b9db 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/impl/AcRepurCouponsRuleConfigServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/recommend/service/impl/AcRepurCouponsRuleConfigServiceImpl.java @@ -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 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 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 0) { startTime = monthFirst; } + List 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 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 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 upgradeRecordList = iAcRecomUpgradeRecordService.list(Wrappers.lambdaQuery() + .eq(AcRecomUpgradeRecord::getPkMember, pkMember) + .eq(AcRecomUpgradeRecord::getPkOrderId, pkOrderId) + .orderByDesc(AcRecomUpgradeRecord::getUpgradeTime) + ); + if (CollectionUtil.isNotEmpty(upgradeRecordList)) { + // 会员活动升级记录 + AcRecomUpgradeRecord recomUpgradeRecord = upgradeRecordList.get(0); + // 删除活动升级记录 + iAcRecomUpgradeRecordService.update(Wrappers.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 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 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 - + 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 diff --git a/bd-third/src/main/java/com/hzs/third/mqcall/listener/ActivityBackListener.java b/bd-third/src/main/java/com/hzs/third/mqcall/listener/ActivityBackListener.java index 24912842..b8d62d5a 100644 --- a/bd-third/src/main/java/com/hzs/third/mqcall/listener/ActivityBackListener.java +++ b/bd-third/src/main/java/com/hzs/third/mqcall/listener/ActivityBackListener.java @@ -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> message, Channel channel) throws Exception { + public void onMessage(Message> 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) {