diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/dto/AcAddUpgradeRecordDTO.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/dto/AcAddUpgradeRecordDTO.java new file mode 100644 index 00000000..d3164562 --- /dev/null +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/dto/AcAddUpgradeRecordDTO.java @@ -0,0 +1,20 @@ +package com.hzs.activity.add.dto; + +import com.hzs.common.domain.activity.add.AcAddUpgradeRecord; +import com.hzs.system.config.dto.GradeDTO; +import lombok.Data; + +@Data +public class AcAddUpgradeRecordDTO { + + /** + * 加购升级记录 + */ + private AcAddUpgradeRecord acAddUpgradeRecord; + + /** + * 等级DTO + */ + private GradeDTO gradeDTO; + +} diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/IAcAddUpgradeConfigService.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/IAcAddUpgradeConfigService.java index f3fb89f8..dd963738 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/IAcAddUpgradeConfigService.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/IAcAddUpgradeConfigService.java @@ -1,6 +1,7 @@ package com.hzs.activity.add.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.hzs.activity.add.dto.AcAddUpgradeRecordDTO; import com.hzs.activity.add.param.AcAddUpgradeParam; import com.hzs.common.core.web.domain.AjaxResult; import com.hzs.common.domain.activity.add.AcAddUpgradeConfig; @@ -25,8 +26,22 @@ public interface IAcAddUpgradeConfigService extends IService AjaxResult getDetail(Integer pkId); + /** + * 判断是否满足加购升级(显示使用) + * + * @param orderParam + * @param orderReturn + */ void handleAddUpgrade(OrderParam orderParam, OrderReturn orderReturn); - GradeDTO handleAddUpgrade(Integer specialArea, List orderItemsList, Integer pkGrade); + /** + * 判断是否满足加购升级(入库使用) + * + * @param specialArea + * @param orderItemsList + * @param pkGrade + * @return + */ + AcAddUpgradeRecordDTO handleAddUpgrade(Integer specialArea, List orderItemsList, Integer pkGrade); } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/impl/AcAddUpgradeConfigServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/impl/AcAddUpgradeConfigServiceImpl.java index 0076eca1..f75ee322 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/impl/AcAddUpgradeConfigServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/activity/add/service/impl/AcAddUpgradeConfigServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.activity.add.dto.AcAddUpgradeRecordDTO; import com.hzs.activity.add.mapper.AcAddUpgradeConfigMapper; import com.hzs.activity.add.param.*; import com.hzs.activity.add.service.IAcAddUpgradeConfigService; @@ -16,6 +17,7 @@ import com.hzs.common.core.enums.EActType; import com.hzs.common.core.enums.EApprovalBusiness; import com.hzs.common.core.enums.EControlType; import com.hzs.common.core.web.domain.AjaxResult; +import com.hzs.common.domain.activity.add.AcAddUpgradeRecord; import com.hzs.common.domain.activity.add.ext.AcAddUpgradeConfigExt; import com.hzs.common.domain.activity.base.AcBaseConfig; import com.hzs.common.domain.activity.base.AcGoalMemberConfig; @@ -209,7 +211,7 @@ public class AcAddUpgradeConfigServiceImpl extends ServiceImpl orderItemsList, Integer pkGrade) { + public AcAddUpgradeRecordDTO handleAddUpgrade(Integer specialArea, List orderItemsList, Integer pkGrade) { if (CollectionUtil.isEmpty(orderItemsList)) { return null; } @@ -220,13 +222,22 @@ public class AcAddUpgradeConfigServiceImpl extends ServiceImpl= configExt.getQuantity()) { - return GradeDTO.builder() + AcAddUpgradeRecordDTO dto = new AcAddUpgradeRecordDTO(); + dto.setAcAddUpgradeRecord(AcAddUpgradeRecord.builder() + .pkBaseId(configExt.getPkBaseId()) + .pkRuleId(configExt.getPkId()) + .pkOriginGrade(configExt.getOriginalLevel()) + .pkUpgradeGrade(configExt.getUpgradeLevel()) + .build()); + dto.setGradeDTO(GradeDTO.builder() .pkId(configExt.getUpgradeLevel()) .gradeValue(configExt.getGradeValue()) .gradeName(configExt.getGradeName()) .pkAwards(configExt.getPkAwards()) .registerAuthority(configExt.getRegisterAuthority()) - .build(); + .build()); + + return dto; } } } diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiRegSaOrderController.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiRegSaOrderController.java index 8cbdb2bf..d7586a69 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiRegSaOrderController.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/controller/api/ApiRegSaOrderController.java @@ -482,7 +482,7 @@ public class ApiRegSaOrderController extends ParentOrderController { // 返回计算等级 OrderReturn orderReturn = getOrderService().computeLevel(orderParam); if (orderReturn.getIsEnough()) { - // TODO 2025.10.20,如果满足升级条件,判断是否有加购升级活动 + // 2025.10.20,如果满足升级条件,判断是否有加购升级活动 iAcAddUpgradeConfigService.handleAddUpgrade(orderParam, orderReturn); return AjaxResult.success(orderReturn); } else { diff --git a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java index eafb0bfe..0343a4a0 100644 --- a/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java +++ b/bd-business/bd-business-sale/src/main/java/com/hzs/sale/order/service/impl/SaOrderServiceImpl.java @@ -12,8 +12,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hzs.activity.add.dto.AcAddUpgradeRecordDTO; import com.hzs.activity.add.service.IAcAddUpgradeConfigService; +import com.hzs.activity.add.service.IAcAddUpgradeRecordService; import com.hzs.activity.pick.service.IAcPickService; import com.hzs.common.core.config.BdConfig; import com.hzs.common.core.constant.*; @@ -26,6 +29,7 @@ import com.hzs.common.core.service.RedisService; import com.hzs.common.core.utils.*; import com.hzs.common.core.utils.reflect.ReflectUtils; import com.hzs.common.core.web.domain.AjaxResult; +import com.hzs.common.domain.activity.add.AcAddUpgradeRecord; import com.hzs.common.domain.member.account.CuMemberAccount; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMemberRegister; @@ -86,6 +90,7 @@ import com.hzs.system.sys.dto.LoginUser; import com.hzs.third.sms.ISmsServiceApi; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; +import org.bouncycastle.crypto.Wrapper; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -166,6 +171,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl private ISaOrderSyncService iSaOrderSyncService; @Autowired private IAcAddUpgradeConfigService iAcAddUpgradeConfigService; + @Autowired + private IAcAddUpgradeRecordService iAcAddUpgradeRecordService; @Autowired private UserTokenService userTokenService; @@ -610,8 +617,11 @@ public class SaOrderServiceImpl extends ServiceImpl impl } // TODO 2025.10.20 处理加购升级活动 - GradeDTO acGradeDTO = iAcAddUpgradeConfigService.handleAddUpgrade(saOrderExt.getOrderType(), orderItemsList, gradeDTO.getPkId()); - if (null != acGradeDTO) { + AcAddUpgradeRecordDTO acAddUpgradeRecordDTO = iAcAddUpgradeConfigService.handleAddUpgrade(saOrderExt.getOrderType(), orderItemsList, gradeDTO.getPkId()); + if (null != acAddUpgradeRecordDTO) { + saOrderExt.setAcAddUpgradeRecord(acAddUpgradeRecordDTO.getAcAddUpgradeRecord()); + + GradeDTO acGradeDTO = acAddUpgradeRecordDTO.getGradeDTO(); // 达到活动升级,需要处理 cuMember.setPkSettleGrade(acGradeDTO.getPkId()); cuMember.setPkSettleGradeValue(acGradeDTO.getGradeValue()); @@ -667,6 +677,15 @@ public class SaOrderServiceImpl extends ServiceImpl impl // 保存订单明细 iSaOrderItemsService.saveBatch(saOrderExt.getOrderItemsList()); + if (null != saOrderExt.getAcAddUpgradeRecord()) { + // 2025.10.22 加购升级记录 + AcAddUpgradeRecord acAddUpgradeRecord = saOrderExt.getAcAddUpgradeRecord(); + acAddUpgradeRecord.setPkMember(saOrderExt.getPkMember()); + acAddUpgradeRecord.setPkOrderId(saOrderExt.getPkId()); + acAddUpgradeRecord.setPkCreator(saOrderExt.getPkMember()); + iAcAddUpgradeRecordService.save(acAddUpgradeRecord); + } + // // 更新销量 // // 将订单表主键封装为明细表主键 // List waresNumberParamList = new ArrayList<>(); @@ -742,6 +761,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl @Override public Boolean payRegSaOrder(SaOrderExt saOrderExt, CuMember newCuMember, CuMemberAccountExt cuMemberAccountExt, Boolean isHaiFun) { + // 是否存在待支付(true=存在) boolean isToBePay = getIsToBePayByOrderType(newCuMember.getPkSettleCountry(), saOrderExt.getOrderType()); Date currentDateTime = DateUtils.currentDateTime(); Long pkCreator = saOrderExt.getPkCreator(); @@ -939,6 +959,15 @@ public class SaOrderServiceImpl extends ServiceImpl impl try { updateById(saOrderExt); iSaOrderItemsService.updateBatchById(saOrderExt.getOrderItemsList()); + + if (null != saOrderExt.getAcAddUpgradeRecord()) { + // 2025.10.22 加购升级记录 + AcAddUpgradeRecord acAddUpgradeRecord = saOrderExt.getAcAddUpgradeRecord(); + acAddUpgradeRecord.setPkMember(saOrderExt.getPkMember()); + acAddUpgradeRecord.setPkOrderId(saOrderExt.getPkId()); + acAddUpgradeRecord.setPkCreator(saOrderExt.getPkMember()); + iAcAddUpgradeRecordService.save(acAddUpgradeRecord); + } } finally { redisService.unlock(CacheConstants.MEMBER_ORDER + saOrderExt.getOrderCode()); } @@ -1668,6 +1697,14 @@ public class SaOrderServiceImpl extends ServiceImpl impl } cuMember.setConsumeAchieve(gradeDTO.getStartValue()); } + + // 删除加购升级数据 + iAcAddUpgradeRecordService.update(Wrappers.lambdaUpdate() + .eq(AcAddUpgradeRecord::getPkMember,saOrderExt.getPkMember()) + .eq(AcAddUpgradeRecord::getPkOrderId, saOrderExt.getPkId()) + .eq(AcAddUpgradeRecord::getDelFlag, EDelFlag.UN_DELETE.getValue()) + .set(AcAddUpgradeRecord::getDelFlag, EDelFlag.DELETE.getValue()) + ); } else if (EOrderType.PICK_ORDER.getValue() == saOrderExt.getOrderType()) { // 提货订单 if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { @@ -1679,7 +1716,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl } if (EOrderType.REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType() - && EOrderTypeExtend.REG_REP.getValue() == saOrderExt.getOrderTypeExtend()) { + && EOrderTypeExtend.REG_REP.getValue().equals(saOrderExt.getOrderTypeExtend())) { // 注册转复购订单,走的是注册订单的撤单流程 R tmpR = iMemberServiceApi.singleRevokeMemberByRegisterOrder(pkApprove, saOrderExt, businessCommissionDTO); if (!tmpR.isSuccess()) { @@ -1999,13 +2036,15 @@ public class SaOrderServiceImpl extends ServiceImpl impl saOrderExt.setPayType(EOrderPayType.ONLINE.getValue()); } if (newCuMember == null) { - throw new RuntimeException("生成会员失败"); + throw new ServiceException("1.订单生成会员失败"); } payRegSaOrder(saOrderExt, newCuMember, null, Boolean.FALSE); } else if (EOrderType.UPGRADE_ORDER.getValue() == saOrderExt.getOrderType() || EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) { // 升级订单 - payUpgradeSaOrder(saOrderExt, null); + if (payUpgradeSaOrder(saOrderExt, null)) { + throw new ServiceException("2.订单处理失败"); + } } else { // 其他订单 if (EOrderType.REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType() @@ -2024,7 +2063,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl saOrderExt = packageWholeSaOrder(orderParam, newCuMember); saOrderExt.setPayType(EOrderPayType.ONLINE.getValue()); if (!payReyZeroOrder(saOrderExt, newCuMember)) { - throw new ServiceException("会员或订单处理失败"); + throw new ServiceException("3.会员或订单处理失败"); } } else { // 188分享订单,复购订单 扩展类型为 注册转复购 @@ -2048,7 +2087,7 @@ public class SaOrderServiceImpl extends ServiceImpl impl } if (newCuMember == null) { - throw new RuntimeException("生成会员失败"); + throw new RuntimeException("4.生成会员失败"); } payRegSaOrder(saOrderExt, newCuMember, null, Boolean.TRUE); } diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/add/AcAddUpgradeRecord.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/add/AcAddUpgradeRecord.java index 16a618a0..e790b1fd 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/add/AcAddUpgradeRecord.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/activity/add/AcAddUpgradeRecord.java @@ -5,8 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import com.hzs.common.core.web.domain.BaseEntity; -import lombok.Data; -import lombok.EqualsAndHashCode; +import lombok.*; import lombok.experimental.Accessors; /** @@ -17,6 +16,9 @@ import lombok.experimental.Accessors; * @author bd * @since 2025-10-13 */ +@Builder +@AllArgsConstructor +@NoArgsConstructor @Data @EqualsAndHashCode(callSuper = true) @Accessors(chain = true) diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/base/CuMember.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/base/CuMember.java index fa2b0b24..778c313c 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/base/CuMember.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/member/base/CuMember.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.hzs.common.core.annotation.Excel; import com.hzs.common.core.web.domain.BaseEntity; +import com.hzs.common.domain.activity.add.AcAddUpgradeRecord; import lombok.*; import lombok.experimental.Accessors; import org.apache.commons.lang3.StringUtils; diff --git a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java index b48cec60..ce92b43e 100644 --- a/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java +++ b/bd-common/bd-common-domain/src/main/java/com/hzs/common/domain/sale/order/SaOrder.java @@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.hzs.common.core.web.domain.BaseEntity; +import com.hzs.common.domain.activity.add.AcAddUpgradeRecord; import lombok.*; import lombok.experimental.Accessors; @@ -226,4 +228,11 @@ public class SaOrder extends BaseEntity { @TableField("BOX_NUM") private Integer boxNum; + /** + * 活动升级数据 + */ + @JsonIgnore + @TableField(exist = false) + private AcAddUpgradeRecord acAddUpgradeRecord; + }