## 在线支付退款位置调整;北大分支隐藏乐学相关专区;

This commit is contained in:
cabbage 2025-07-03 17:34:25 +08:00
parent 7e93ed352f
commit 7ccef120e2
4 changed files with 81 additions and 90 deletions

View File

@ -129,7 +129,8 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
private ICuMemberSettlePeriodService iCuMemberSettlePeriodService; private ICuMemberSettlePeriodService iCuMemberSettlePeriodService;
@DubboReference @DubboReference
private ITOnlinePaymentServiceApi itOnlinePaymentServiceApi; ITOnlinePaymentServiceApi itOnlinePaymentServiceApi;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateCuMember(CuMember cuMember) { public void updateCuMember(CuMember cuMember) {
@ -631,11 +632,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) { public Boolean singleRevokeMemberByRegisterOrder(Long pkApprove, SaOrderExt saOrder, BusinessCommissionDTO businessCommissionDTO) {
deductCancelOrderCost(businessCommissionDTO); deductCancelOrderCost(businessCommissionDTO);
CuMemberAccount payMemberAccount;
// 默认回退给创建人
payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType() || if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType() ||
EOrderType.SPECIAL_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()); cuMemberRegister.setPkModified(saOrder.getPkCreator());
iCuMemberRegisterService.updateCuMemberRegister(cuMemberRegister); 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; return true;
} }
@ -685,7 +690,13 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
updateWrapperRegister.eq(CuMemberRegister::getPkMember, member.getPkId()); updateWrapperRegister.eq(CuMemberRegister::getPkMember, member.getPkId());
iCuMemberRegisterService.update(updateWrapperRegister); iCuMemberRegisterService.update(updateWrapperRegister);
} }
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount); if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
// 钱包支付则需要回退金额
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
} else {
// 在线支付处理退款
this.handleOnlineRefund(saOrder);
}
return true; return true;
} }
@ -904,7 +915,6 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
for (int i = memberList.size() - 1; i >= 0; i--) { for (int i = memberList.size() - 1; i >= 0; i--) {
Long pkMember = memberList.get(i); Long pkMember = memberList.get(i);
SaOrderExt saOrder = saOrderMap.get(pkMember); SaOrderExt saOrder = saOrderMap.get(pkMember);
CuMember cuMember = iCuMemberService.getMemberById(pkMember);
// 删除等级 // 删除等级
iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime); iCuMemberLevelService.deleteCuMemberLevelRecord(saOrder.getPkId(), pkApprove, currentDateTime);
// 回退奖衔,根据订单从 cu_member_awards查询 // 回退奖衔,根据订单从 cu_member_awards查询
@ -917,8 +927,21 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
cuMemberRegister.setPkCountry(saOrder.getPkCountry()); cuMemberRegister.setPkCountry(saOrder.getPkCountry());
cuMemberRegister.setPkModified(saOrder.getPkCreator()); cuMemberRegister.setPkModified(saOrder.getPkCreator());
iCuMemberRegisterService.updateCuMemberRegister(cuMemberRegister); 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; return Boolean.TRUE;
} }
@ -945,13 +968,19 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
// 回退奖衔,根据订单从 cu_member_awards查询 // 回退奖衔,根据订单从 cu_member_awards查询
iCuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime); iCuMemberAwardsService.deleteCuMemberAwards(saOrder.getPkId(), pkApprove, currentDateTime);
} }
// 部分撤单 todo 发货后邮费不退未发货退邮费 if (saOrder.getPayType().equals(EOrderPayType.WALLET.getValue())) {
if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) { // 钱包支付则需要回退金额
cancelPartOrderBackAmount(pkApprove, saOrder); // 部分撤单
if (saOrder.getBackOrderAmount() != null && ComputeUtil.compareValue(saOrder.getBackOrderAmount())) {
cancelPartOrderBackAmount(pkApprove, saOrder);
} else {
CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator());
// 回退账号余额
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
}
} else { } else {
CuMemberAccount payMemberAccount = iCuMemberAccountService.queryCuMemberAccountByPkMember(saOrder.getPkCreator()); // 在线支付处理退款
// 回退账号余额 this.handleOnlineRefund(saOrder);
cancelOrderBackAccount(pkApprove, saOrder, payMemberAccount);
} }
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -1612,4 +1641,22 @@ public class CuMemberBusinessServiceImpl implements ICuMemberBusinessService {
} }
/**
* 在线支付退款
*
* @param saOrder
*/
private void handleOnlineRefund(SaOrderExt saOrder) {
R<TOnlinePayment> onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrder.getOrderCode());
if (ObjectUtil.isNotEmpty(onlinePaymentR)) {
TOnlinePayment onlinePayment = onlinePaymentR.getData();
if (ObjectUtil.isNotEmpty(onlinePayment)) {
R<String> result = itOnlinePaymentServiceApi.refund(saOrder.getOrderCode(), saOrder.getPkCreator());
if (!result.isSuccess()) {
throw new ServiceException(result.getMsg());
}
}
}
}
} }

View File

@ -21,7 +21,6 @@ import com.hzs.common.core.service.RedisService;
import com.hzs.common.core.utils.*; import com.hzs.common.core.utils.*;
import com.hzs.common.core.utils.reflect.ReflectUtils; import com.hzs.common.core.utils.reflect.ReflectUtils;
import com.hzs.common.domain.member.account.CuMemberAccount; 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.CuMember;
import com.hzs.common.domain.member.base.CuMemberRegister; import com.hzs.common.domain.member.base.CuMemberRegister;
import com.hzs.common.domain.member.base.CuMemberShare; 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.account.dto.MemberAmountDTO;
import com.hzs.member.achieve.IMemberAchieveServiceApi; import com.hzs.member.achieve.IMemberAchieveServiceApi;
import com.hzs.member.base.IMemberServiceApi; import com.hzs.member.base.IMemberServiceApi;
import com.hzs.member.base.dto.MemberContinueDTO;
import com.hzs.member.detail.ICuMemberDetailServiceApi; import com.hzs.member.detail.ICuMemberDetailServiceApi;
import com.hzs.member.detail.ICuMemberServiceLogServiceApi; import com.hzs.member.detail.ICuMemberServiceLogServiceApi;
import com.hzs.sale.deliver.param.DeliverSecondParam; 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.ICountryServiceApi;
import com.hzs.system.base.ICurrencyServiceApi; import com.hzs.system.base.ICurrencyServiceApi;
import com.hzs.system.base.ISystemConfigServiceApi; import com.hzs.system.base.ISystemConfigServiceApi;
import com.hzs.system.base.dto.CountryDTO;
import com.hzs.system.base.dto.CurrencyDTO; import com.hzs.system.base.dto.CurrencyDTO;
import com.hzs.system.config.IAreaCurrencyServiceApi; import com.hzs.system.config.IAreaCurrencyServiceApi;
import com.hzs.system.config.IAwardsServiceApi; 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.ApprovalSubmitDTO;
import com.hzs.system.sys.dto.LoginUser; import com.hzs.system.sys.dto.LoginUser;
import com.hzs.third.pay.ITOnlinePaymentServiceApi; import com.hzs.third.pay.ITOnlinePaymentServiceApi;
import com.hzs.third.sms.ISmsServiceApi;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
@ -134,9 +130,8 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
ICuMemberDetailServiceApi iCuMemberDetailServiceApi; ICuMemberDetailServiceApi iCuMemberDetailServiceApi;
@DubboReference @DubboReference
ICuMemberAgreementWhiteApi cuMemberAgreementWhiteApi; ICuMemberAgreementWhiteApi cuMemberAgreementWhiteApi;
@DubboReference @DubboReference
private ITOnlinePaymentServiceApi itOnlinePaymentServiceApi; ITOnlinePaymentServiceApi itOnlinePaymentServiceApi;
@Autowired @Autowired
private IBdWaresService iBdWaresService; private IBdWaresService iBdWaresService;
@ -1585,37 +1580,11 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
} }
cuMember.setConsumeAchieve(gradeDTO.getStartValue()); 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()) { } else if (EOrderType.PICK_ORDER.getValue() == saOrderExt.getOrderType()) {
// 提货订单 // 提货订单
if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) {
throw new RuntimeException("撤销订单退还提货失败"); 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()) { if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, null, businessCommissionDTO).getData()) {
@ -2399,54 +2368,29 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
cuMember.setConsumeAchieve(gradeDTO.getStartValue()); 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()) { } else if (myOrderVO.getOrderType() == EOrderType.PICK_ORDER.getValue()) {
//提货订单退还提货数量 //提货订单退还提货数量
if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) { if (!iAcPickService.cancelPickOrder(saOrderExt.getOrderCode(), pkApprove)) {
throw new RuntimeException("撤单失败"); 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()) { if (!memberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, null, businessCommissionDTO).getData()) {
throw new RuntimeException("撤单失败"); throw new RuntimeException("撤单失败");
} }
} }
R<TOnlinePayment> onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrderExt.getOrderCode()); // 在线支付退款已经迁移到调用member服务处理明细位置
TOnlinePayment onlinePayment; // R<TOnlinePayment> onlinePaymentR = itOnlinePaymentServiceApi.getOnlinePayment(saOrderExt.getOrderCode());
if(ObjectUtil.isNotEmpty(onlinePaymentR)){ // TOnlinePayment onlinePayment;
onlinePayment = onlinePaymentR.getData(); // if(ObjectUtil.isNotEmpty(onlinePaymentR)){
if(ObjectUtil.isNotEmpty(onlinePayment)){ // onlinePayment = onlinePaymentR.getData();
R result = itOnlinePaymentServiceApi.refund(saOrderExt.getOrderCode(), SecurityUtils.getUserId()); // if(ObjectUtil.isNotEmpty(onlinePayment)){
if(!result.isSuccess()){ // R result = itOnlinePaymentServiceApi.refund(saOrderExt.getOrderCode(), SecurityUtils.getUserId());
throw new ServiceException(result.getMsg()); // if(!result.isSuccess()){
} // throw new ServiceException(result.getMsg());
} // }
} // }
// }
try { try {
// 验证订单是否有仓库有仓库的可以回退没有的回退 // 验证订单是否有仓库有仓库的可以回退没有的回退
if (saOrderExt.getPkStorehouse() != null) { if (saOrderExt.getPkStorehouse() != null) {

View File

@ -1115,7 +1115,7 @@ public class EnumsController extends BaseController {
public AjaxResult orderType() { public AjaxResult orderType() {
List<EnumEntity> enumEntityList = new ArrayList<>(); List<EnumEntity> enumEntityList = new ArrayList<>();
for (EOrderType value : EOrderType.values()) { 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); return AjaxResult.success(enumEntityList);
} }

View File

@ -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),
/** /**
* 续约订单 * 续约订单