Merge pull request 'khy1' (#75) from khy1 into master
All checks were successful
continuous-integration/drone/push Build is passing

Reviewed-on: #75
This commit is contained in:
root 2024-10-25 11:27:44 +08:00
commit eac7fc313d
7 changed files with 17 additions and 26 deletions

View File

@ -76,8 +76,10 @@ public class AppTradeOrderController {
@Operation(summary = "更新订单为已支付") // pay-module 支付服务进行回调可见 PayNotifyJob @Operation(summary = "更新订单为已支付") // pay-module 支付服务进行回调可见 PayNotifyJob
@PermitAll @PermitAll
public CommonResult<Boolean> updateOrderPaid(@RequestBody PayOrderNotifyReqDTO notifyReqDTO) { public CommonResult<Boolean> updateOrderPaid(@RequestBody PayOrderNotifyReqDTO notifyReqDTO) {
System.out.println("进入回调notify:"+ notifyReqDTO);
tradeOrderUpdateService.updateOrderPaid(Long.valueOf(notifyReqDTO.getMerchantOrderId()), tradeOrderUpdateService.updateOrderPaid(Long.valueOf(notifyReqDTO.getMerchantOrderId()),
notifyReqDTO.getPayOrderId()); notifyReqDTO.getPayOrderId());
System.out.println("订单更新完成");
return success(true); return success(true);
} }

View File

@ -32,6 +32,6 @@ public interface TradePaidMemberUserService {
TradePaidMemberUserDO getByIdAndPayOrderId(Long id, Long payOrderId); TradePaidMemberUserDO getByPayOrderId(Long payOrderId);
} }

View File

@ -85,10 +85,12 @@ public class TradeTradePaidMemberUserServiceImpl implements TradePaidMemberUserS
@Override @Override
public TradePaidMemberUserDO getByIdAndPayOrderId(Long id, Long payOrderId) { public TradePaidMemberUserDO getByPayOrderId(Long payOrderId) {
TradePaidMemberUserDO tradePaidMemberUserDO = tradePaidMemberUserMapper.selectOne( TradePaidMemberUserDO tradePaidMemberUserDO = tradePaidMemberUserMapper.selectOne(
new LambdaQueryWrapperX<TradePaidMemberUserDO>().eqIfPresent(TradePaidMemberUserDO::getId,id) new LambdaQueryWrapperX<TradePaidMemberUserDO>().eqIfPresent(TradePaidMemberUserDO::getPayOrderId,payOrderId));
.eqIfPresent(TradePaidMemberUserDO::getPayOrderId,payOrderId)); if (tradePaidMemberUserDO == null) {
throw exception(PAID_MEMBER_ORDER_NOT_EXISTS);
}
return tradePaidMemberUserDO; return tradePaidMemberUserDO;
} }

View File

@ -330,14 +330,16 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_PAY) @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_PAY)
public void updateOrderPaid(Long id, Long payOrderId) { public void updateOrderPaid(Long id, Long payOrderId) {
System.out.println("进入校验");
// 1. 校验并获得交易订单可支付 // 1. 校验并获得交易订单可支付
KeyValue<TradeOrderDO, PayOrderRespDTO> orderResult = validateOrderPayable(id, payOrderId); KeyValue<TradeOrderDO, PayOrderRespDTO> orderResult = validateOrderPayable(id, payOrderId);
System.out.println("校验成功");
TradeOrderDO order = orderResult.getKey(); TradeOrderDO order = orderResult.getKey();
PayOrderRespDTO payOrder = orderResult.getValue(); PayOrderRespDTO payOrder = orderResult.getValue();
System.out.println("交易订单成功id"+id+"和payOrderId"+payOrderId); System.out.println("交易订单成功id"+id+"和payOrderId"+payOrderId);
//会员用户信息支付状态修改 //会员用户信息支付状态修改
TradeMemberUserDO tradeMemberUserDO = tradeMemberUserService.getUser(getLoginUserId()); TradeMemberUserDO tradeMemberUserDO = tradeMemberUserService.getUser(getLoginUserId());
TradePaidMemberUserDO tradePaidMemberUserDO = tradePaidMemberUserService.getByIdAndPayOrderId(id,payOrderId); TradePaidMemberUserDO tradePaidMemberUserDO = tradePaidMemberUserService.getByPayOrderId(payOrderId);
if(tradePaidMemberUserDO != null && tradeMemberUserDO != null){ if(tradePaidMemberUserDO != null && tradeMemberUserDO != null){
System.out.println("进入会员支付修改操作paid"+tradePaidMemberUserDO+"和member"+tradeMemberUserDO); System.out.println("进入会员支付修改操作paid"+tradePaidMemberUserDO+"和member"+tradeMemberUserDO);
tradePaidMemberUserDO.setPayTime(LocalDateTime.now()); tradePaidMemberUserDO.setPayTime(LocalDateTime.now());

View File

@ -84,6 +84,6 @@ public interface PaidMemberUserService {
*/ */
PageResult<PaidMemberUserDO> getMemberUserPage(PaidMemberUserPageReqVO pageReqVO); PageResult<PaidMemberUserDO> getMemberUserPage(PaidMemberUserPageReqVO pageReqVO);
PaidMemberUserDO getByIdAndPayOrderId(Long id,Long payOrderId); PaidMemberUserDO getByPayOrderId(Long payOrderId);
} }

View File

@ -186,10 +186,12 @@ public class PaidMemberUserServiceImpl implements PaidMemberUserService {
} }
@Override @Override
public PaidMemberUserDO getByIdAndPayOrderId(Long id, Long payOrderId) { public PaidMemberUserDO getByPayOrderId(Long payOrderId) {
PaidMemberUserDO paidMemberUserDO = paidMemberUserMapper.selectOne( PaidMemberUserDO paidMemberUserDO = paidMemberUserMapper.selectOne(
new LambdaQueryWrapperX<PaidMemberUserDO>().eqIfPresent(PaidMemberUserDO::getId,id) new LambdaQueryWrapperX<PaidMemberUserDO>().eqIfPresent(PaidMemberUserDO::getPayOrderId,payOrderId));
.eqIfPresent(PaidMemberUserDO::getPayOrderId,payOrderId)); if(paidMemberUserDO == null){
throw exception(PAID_MEMBER_ORDER_NOT_EXISTS);
}
return paidMemberUserDO; return paidMemberUserDO;
} }

View File

@ -154,17 +154,6 @@ public class PayOrderServiceImpl implements PayOrderService {
// 1.32 校验支付渠道是否有效 // 1.32 校验支付渠道是否有效
PayChannelDO channel = validateChannelCanSubmit(order.getAppId(), reqVO.getChannelCode()); PayChannelDO channel = validateChannelCanSubmit(order.getAppId(), reqVO.getChannelCode());
PayClient client = channelService.getPayClient(channel.getId()); PayClient client = channelService.getPayClient(channel.getId());
// 如果订单扩展里面已经存在该订单号的订单扩展正在等待则关闭已有的订单扩展然后再创建解决先点击微信支付然后再使用余额支付会产生两个扩展订单的bug
LambdaQueryWrapperX<PayOrderExtensionDO> wrapperX = new LambdaQueryWrapperX<>();
wrapperX.eq(PayOrderExtensionDO::getOrderId, order.getId()).eq(PayOrderExtensionDO::getStatus, PayOrderStatusEnum.WAITING.getStatus());
List<PayOrderExtensionDO> existOrderExtensionList = orderExtensionMapper.selectList(wrapperX);
if (existOrderExtensionList != null){
// 考虑到这种重复的扩展订单一般就一个最大值取决与支付方式个数所以不使用批处理插入
for (PayOrderExtensionDO payOrderExtensionDO : existOrderExtensionList) {
payOrderExtensionDO.setStatus(PayOrderStatusEnum.CLOSED.getStatus());
orderExtensionMapper.updateById(payOrderExtensionDO);
}
}
// 2. 插入 PayOrderExtensionDO // 2. 插入 PayOrderExtensionDO
String no = noRedisDAO.generate(payProperties.getOrderNoPrefix()); String no = noRedisDAO.generate(payProperties.getOrderNoPrefix());
PayOrderExtensionDO orderExtension = PayOrderConvert.INSTANCE.convert(reqVO, userIp) PayOrderExtensionDO orderExtension = PayOrderConvert.INSTANCE.convert(reqVO, userIp)
@ -277,12 +266,7 @@ public class PayOrderServiceImpl implements PayOrderService {
PayChannelDO channel = channelService.validPayChannel(channelId); PayChannelDO channel = channelService.validPayChannel(channelId);
// 更新支付订单为已支付 // 更新支付订单为已支付
TenantUtils.execute(channel.getTenantId(), () -> getSelf().notifyOrder(channel, notify)); TenantUtils.execute(channel.getTenantId(), () -> getSelf().notifyOrder(channel, notify));
// 获取订单扩展
PayOrderExtensionDO payOrderExtensionDO = orderExtensionMapper.selectByNo(notify.getOutTradeNo()); PayOrderExtensionDO payOrderExtensionDO = orderExtensionMapper.selectByNo(notify.getOutTradeNo());
// 判断订单是否更新为已支付
if (Objects.equals(PayOrderStatusEnum.SUCCESS.getStatus(), orderMapper.selectById(payOrderExtensionDO.getOrderId()).getStatus())){
// 充值判断
PayWalletRechargeDO walletRechargeDO = walletRechargeMapper.selectOne("pay_order_id", payOrderExtensionDO.getOrderId()); PayWalletRechargeDO walletRechargeDO = walletRechargeMapper.selectOne("pay_order_id", payOrderExtensionDO.getOrderId());
if (walletRechargeDO != null){ if (walletRechargeDO != null){
walletRechargeDO.setPayStatus(true); walletRechargeDO.setPayStatus(true);
@ -291,7 +275,6 @@ public class PayOrderServiceImpl implements PayOrderService {
payWalletService.addWalletBalance(walletRechargeDO.getWalletId(),walletRechargeDO.getPayOrderId().toString(),RECHARGE,walletRechargeDO.getTotalPrice()); payWalletService.addWalletBalance(walletRechargeDO.getWalletId(),walletRechargeDO.getPayOrderId().toString(),RECHARGE,walletRechargeDO.getTotalPrice());
} }
} }
}
/** /**
* 通知并更新订单的支付结果 * 通知并更新订单的支付结果