From 7f17acdaf417e429d22abd131af57c3aa734906e Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Thu, 3 Jul 2025 17:34:25 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=9C=A8=E7=BA=BF=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E4=BD=8D=E7=BD=AE=E8=B0=83=E6=95=B4=EF=BC=9B?= =?UTF-8?q?=E5=8C=97=E5=A4=A7=E5=88=86=E6=94=AF=E9=9A=90=E8=97=8F=E4=B9=90?= =?UTF-8?q?=E5=AD=A6=E7=9B=B8=E5=85=B3=E4=B8=93=E5=8C=BA=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/CuMemberBusinessServiceImpl.java | 81 ++++++++++++++---- .../service/impl/SaOrderServiceImpl.java | 82 +++---------------- .../enums/controller/EnumsController.java | 2 +- .../com/hzs/common/core/enums/EOrderType.java | 6 +- 4 files changed, 81 insertions(+), 90 deletions(-) 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 1f2395d8..274f7009 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 @@ -129,7 +129,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { private ICuMemberSettlePeriodService iCuMemberSettlePeriodService; @DubboReference - private ITOnlinePaymentServiceApi itOnlinePaymentServiceApi; + ITOnlinePaymentServiceApi itOnlinePaymentServiceApi; + @Override @Transactional(rollbackFor = Exception.class) public void updateCuMember(CuMember cuMember) { @@ -631,11 +632,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { @Transactional(rollbackFor = Exception.class) public Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) { deductCancelOrderCost(businessCommissionDTO); - - CuMemberAccount payMemberAccount; - // 默认回退给创建人 - payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator()); - if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType() || EOrderType.SPECIAL_REGISTER_ORDER.getValue() == saOrder.getOrderType()) { // 会员账号 验证会员账户是否存在金额 @@ -653,7 +649,16 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { cuMemberRegister.setPkModified(saOrder.getPkCreator()); iCuMemberRegisterService.updateCuMemberRegister(cuMemberRegister); } - cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + + if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) { + // 钱包支付,则需要回退金额 + // 默认回退给创建人 + CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator()); + cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + } else { + // 在线支付,处理退款 + this.handleOnlineRefund(saOrder); + } return true; } @@ -685,7 +690,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { updateWrapperRegister.eq(CuMemberRegister::getPkMember, member.getPkId()); iCuMemberRegisterService.update(updateWrapperRegister); } - cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) { + // 钱包支付,则需要回退金额 + cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + } else { + // 在线支付,处理退款 + this.handleOnlineRefund(saOrder); + } return true; } @@ -904,7 +915,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { for (int i = memberList.size() - 1; i >= 0; i--) { Long pkMember = memberList.get(i); SaOrderExt saOrder = saOrderMap.get(pkMember); - CuMember cuMember = iCuMemberService.getMemberById(pkMember); // 删除等级 iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); // 回退奖衔,根据订单从 cu_member_awards查询 @@ -917,8 +927,21 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { cuMemberRegister.setPkCountry(saOrder.getPkCountry()); cuMemberRegister.setPkModified(saOrder.getPkCreator()); iCuMemberRegisterService.updateCuMemberRegister(cuMemberRegister); - CuMemberAccount payMemberAccount = cuMemberAccountMap.get(saOrder.getPkCreator()); - cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + + if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) { + // 钱包支付,则需要回退金额 + CuMemberAccount payMemberAccount = cuMemberAccountMap.get(saOrder.getPkCreator()); + cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + } + } + for (int i = memberList.size() - 1; i >= 0; i--) { + Long pkMember = memberList.get(i); + SaOrderExt saOrder = saOrderMap.get(pkMember); + + if (saOrder.getPayType().equals(EOrderPayType.ONLINE.getValue())) { + // 在线支付,处理退款 + this.handleOnlineRefund(saOrder); + } } return Boolean.TRUE; } @@ -945,13 +968,19 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { // 回退奖衔,根据订单从 cu_member_awards查询 iCuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime); } - // 部分撤单 todo 发货后邮费不退,未发货退邮费 - if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) { - cancelPartOrderBackAmount(pkApprove, saOrder); + if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) { + // 钱包支付,则需要回退金额 + // 部分撤单 + if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) { + cancelPartOrderBackAmount(pkApprove, saOrder); + } else { + CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator()); + // 回退账号余额 + cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + } } else { - CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator()); - // 回退账号余额 - cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); + // 在线支付,处理退款 + this.handleOnlineRefund(saOrder); } return Boolean.TRUE; } @@ -1612,4 +1641,22 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService { } + /** + * 在线支付退款 + * + * @param saOrder + */ + private void handleOnlineRefund(SaOrderExt saOrder) { + R onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrder.getOrderCode()); + if (ObjectUtil.isNotEmpty(onlinePaymentR)) { + TOnlinePayment onlinePayment = onlinePaymentR.getData(); + if (ObjectUtil.isNotEmpty(onlinePayment)) { + R result = itOnlinePaymentServiceApi.refund(saOrder.getOrderCode(), saOrder.getPkCreator()); + if (!result.isSuccess()) { + throw new ServiceException(result.getMsg()); + } + } + } + } + } 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 b474d5f3..08830d3a 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 @@ -21,7 +21,6 @@ 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.domain.member.account.CuMemberAccount; -import com.hzs.common.domain.member.account.CuMemberTrade; import com.hzs.common.domain.member.base.CuMember; import com.hzs.common.domain.member.base.CuMemberRegister; import com.hzs.common.domain.member.base.CuMemberShare; @@ -49,7 +48,6 @@ import com.hzs.member.account.dto.CuMemberBankParam; import com.hzs.member.account.dto.MemberAmountDTO; import com.hzs.member.achieve.IMemberAchieveServiceApi; import com.hzs.member.base.IMemberServiceApi; -import com.hzs.member.base.dto.MemberContinueDTO; import com.hzs.member.detail.ICuMemberDetailServiceApi; import com.hzs.member.detail.ICuMemberServiceLogServiceApi; import com.hzs.sale.deliver.param.DeliverSecondParam; @@ -67,7 +65,6 @@ import com.hzs.system.base.IAreaServiceApi; import com.hzs.system.base.ICountryServiceApi; import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.ISystemConfigServiceApi; -import com.hzs.system.base.dto.CountryDTO; import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.config.IAreaCurrencyServiceApi; import com.hzs.system.config.IAwardsServiceApi; @@ -80,7 +77,6 @@ import com.hzs.system.sys.dto.ApprovalBusinessResultDTO; import com.hzs.system.sys.dto.ApprovalSubmitDTO; import com.hzs.system.sys.dto.LoginUser; import com.hzs.third.pay.ITOnlinePaymentServiceApi; -import com.hzs.third.sms.ISmsServiceApi; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.amqp.rabbit.core.RabbitTemplate; @@ -134,9 +130,8 @@ public class SaOrderServiceImpl extends ServiceImpl impl ICuMemberDetailServiceApi iCuMemberDetailServiceApi; @DubboReference ICuMemberAgreementWhiteApi cuMemberAgreementWhiteApi; - @DubboReference - private ITOnlinePaymentServiceApi itOnlinePaymentServiceApi; + ITOnlinePaymentServiceApi itOnlinePaymentServiceApi; @Autowired private IBdWaresService iBdWaresService; @@ -1585,37 +1580,11 @@ public class SaOrderServiceImpl extends ServiceImpl impl } cuMember.setConsumeAchieve(gradeDTO.getStartValue()); } - - // 乐学升级需要扣除代金券 - if (EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) { - iAcPickService.deductionsCouponByOrder(saOrderExt.getPkMember(), saOrderExt.getPkId()); - } } else if (EOrderType.PICK_ORDER.getValue() == saOrderExt.getOrderType()) { // 提货订单 if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { throw new RuntimeException("撤销订单退还提货失败"); } - } else if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType()) { - // 乐学复购订单(订单明细中非赠品的商品数量求和,就是需要退的代金券数量) - // 需要退的代金券数量 - int returnNum = 0; - if (CollectionUtil.isNotEmpty(saOrderExt.getOrderItemsExtList())) { - for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) { - if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { - returnNum += saOrderItems.getWaresQuantity(); - } - } - } else if (CollectionUtil.isNotEmpty(saOrderExt.getOrderItemsList())) { - for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) { - if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { - returnNum += saOrderItems.getWaresQuantity(); - } - } - } - - if (returnNum != 0) { - iAcPickService.updatePickUsableByMember(saOrderExt.getPkCreator(), EPickType.COUPON.getValue(), null, null, returnNum, pkApprove); - } } if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, null, businessCommissionDTO).getData()) { @@ -2399,54 +2368,29 @@ public class SaOrderServiceImpl extends ServiceImpl impl cuMember.setConsumeAchieve(gradeDTO.getStartValue()); } - - // 乐学升级需要抽除代金券 - if (EOrderType.SPECIAL_UPGRADE_ORDER.getValue() == saOrderExt.getOrderType()) { - iAcPickService.deductionsCouponByOrder(saOrderExt.getPkMember(), saOrderExt.getPkId()); - } } else if (myOrderVO.getOrderType() == EOrderType.PICK_ORDER.getValue()) { //提货订单退还提货数量 if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { throw new RuntimeException("撤单失败"); } - } else if (EOrderType.SPECIAL_REPURCHASE_ORDER.getValue() == saOrderExt.getOrderType()) { - // 乐学复购订单(订单明细中非赠品的商品数量求和,就是需要退的代金券数量) - // 需要退的代金券数量 - int returnNum = 0; - if (CollectionUtil.isNotEmpty(saOrderExt.getOrderItemsExtList())) { - for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsExtList()) { - if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { - returnNum += saOrderItems.getWaresQuantity(); - } - } - } else if (CollectionUtil.isNotEmpty(saOrderExt.getOrderItemsList())) { - for (SaOrderItems saOrderItems : saOrderExt.getOrderItemsList()) { - if (EYesNo.NO.getIntValue() == saOrderItems.getIsGift()) { - returnNum += saOrderItems.getWaresQuantity(); - } - } - } - - if (returnNum != 0) { - iAcPickService.updatePickUsableByMember(saOrderExt.getPkCreator(), EPickType.COUPON.getValue(), null, null, returnNum, pkApprove); - } } if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, null, businessCommissionDTO).getData()) { throw new RuntimeException("撤单失败"); } } - R onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrderExt.getOrderCode()); - TOnlinePayment onlinePayment; - if(ObjectUtil.isNotEmpty(onlinePaymentR)){ - onlinePayment = onlinePaymentR.getData(); - if(ObjectUtil.isNotEmpty(onlinePayment)){ - R result = itOnlinePaymentServiceApi.refund(saOrderExt.getOrderCode(), SecurityUtils.getUserId()); - if(!result.isSuccess()){ - throw new ServiceException(result.getMsg()); - } - } - } + // 在线支付退款,已经迁移到调用member服务处理明细位置 +// R onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrderExt.getOrderCode()); +// TOnlinePayment onlinePayment; +// if(ObjectUtil.isNotEmpty(onlinePaymentR)){ +// onlinePayment = onlinePaymentR.getData(); +// if(ObjectUtil.isNotEmpty(onlinePayment)){ +// R result = itOnlinePaymentServiceApi.refund(saOrderExt.getOrderCode(), SecurityUtils.getUserId()); +// if(!result.isSuccess()){ +// throw new ServiceException(result.getMsg()); +// } +// } +// } try { // 验证订单是否有仓库,有仓库的可以回退,没有的回退 if (saOrderExt.getPkStorehouse() != null) { diff --git a/bd-business/bd-business-system/src/main/java/com/hzs/system/enums/controller/EnumsController.java b/bd-business/bd-business-system/src/main/java/com/hzs/system/enums/controller/EnumsController.java index 86144b41..b63b8a88 100644 --- a/bd-business/bd-business-system/src/main/java/com/hzs/system/enums/controller/EnumsController.java +++ b/bd-business/bd-business-system/src/main/java/com/hzs/system/enums/controller/EnumsController.java @@ -1115,7 +1115,7 @@ public class EnumsController extends BaseController { public AjaxResult orderType() { List enumEntityList = new ArrayList<>(); for (EOrderType value : EOrderType.values()) { - enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel(), EnumsPrefixConstants.ORDER_TYPE)); + enumEntityList.add(new EnumEntity(value.getValue(), value.getLabel())); } return AjaxResult.success(enumEntityList); } diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java index 7c07217b..28bfaba3 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EOrderType.java @@ -52,17 +52,17 @@ public enum EOrderType { /** * 乐学注册订单 */ - SPECIAL_REGISTER_ORDER(24, "乐学注册订单", 0, EnumsPrefixConstants.ORDER_TYPE + 24), + SPECIAL_REGISTER_ORDER(24, "乐学注册订单", 1, EnumsPrefixConstants.ORDER_TYPE + 24), /** * 乐学升级订单 */ - SPECIAL_UPGRADE_ORDER(25, "乐学升级订单", 0, EnumsPrefixConstants.ORDER_TYPE + 25), + SPECIAL_UPGRADE_ORDER(25, "乐学升级订单", 1, EnumsPrefixConstants.ORDER_TYPE + 25), /** * 乐学甄选订单 */ - SPECIAL_REPURCHASE_ORDER(26, "乐学甄选", 0, EnumsPrefixConstants.ORDER_TYPE + 26), + SPECIAL_REPURCHASE_ORDER(26, "乐学甄选", 1, EnumsPrefixConstants.ORDER_TYPE + 26), /** * 续约订单