免押逻辑修改
This commit is contained in:
@ -38,4 +38,21 @@ public interface PayService {
|
||||
* @return
|
||||
*/
|
||||
UnifiedPaymentInfoDTO freezeOrder(Long companyId,String outOrderNo, BigDecimal freezeFee);
|
||||
|
||||
/**
|
||||
* 解冻
|
||||
* @param companyId
|
||||
* @param outOrderNo
|
||||
* @param authCode
|
||||
* @return
|
||||
*/
|
||||
boolean finishFreezeOrder(Long companyId,String outOrderNo, String authCode);
|
||||
|
||||
/**
|
||||
* 取消冻结
|
||||
* @param companyId
|
||||
* @param outOrderNo
|
||||
* @return
|
||||
*/
|
||||
boolean cancelFreezeOrder(Long companyId,String outOrderNo);
|
||||
}
|
||||
|
||||
@ -612,11 +612,29 @@ public class OrderServiceImpl implements OrderService {
|
||||
if(orderMainPO.getIsDepositFree()){
|
||||
OrderSubPO noDepositOrder = orderSubPOList.stream().filter(orderSubPO -> StringUtils.equalsIgnoreCase(orderSubPO.getSuborderType(), SubOrderTypeEnum.NO_DEPOSIT.getCode())).findFirst().orElse(null);
|
||||
if(Objects.nonNull(noDepositOrder)){
|
||||
log.info("开始取消支付宝押金冻结支付单");
|
||||
AlipayFundFreezeRequest fundFreezeRequest = new AlipayFundFreezeRequest();
|
||||
fundFreezeRequest.setCompanyId(companyStoreDTO.getOperatingCompanyId().toString());
|
||||
fundFreezeRequest.setOutOrderNo(noDepositOrder.getPaymentId());
|
||||
closePayOrder = payInteg.cancelFundFreeze(fundFreezeRequest);
|
||||
if(StringUtils.equalsIgnoreCase(noDepositOrder.getPayStatus(), PayStatusEnum.USERPAYING.getCode())){
|
||||
log.info("查询支付宝冻结订单结果");
|
||||
AlipayQueryFreezeRequest alipayQueryFreezeRequest = new AlipayQueryFreezeRequest();
|
||||
alipayQueryFreezeRequest.setOutOrderNo(noDepositOrder.getPaymentId());
|
||||
alipayQueryFreezeRequest.setOperationType("FREEZE");
|
||||
alipayQueryFreezeRequest.setCompanyId(orderMainPO.getOperatorId().toString());
|
||||
AlipayQueryFreezeResponse queryFreezeResponse = payInteg.queryFundFreeze(alipayQueryFreezeRequest);
|
||||
if(queryFreezeResponse==null){
|
||||
closePayOrder = payService.cancelFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId());
|
||||
}else {
|
||||
closePayOrder = payService.finishFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId());
|
||||
}
|
||||
|
||||
} else if(StringUtils.equalsIgnoreCase(noDepositOrder.getPayStatus(), PayStatusEnum.SUCCESS.getCode())){
|
||||
closePayOrder = payService.finishFreezeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId());
|
||||
}
|
||||
if (closePayOrder) {
|
||||
//解冻成功更新状态为解冻成功
|
||||
LambdaUpdateWrapper<OrderSubPO> updatenoDepositWrapper = new LambdaUpdateWrapper<>();
|
||||
updatenoDepositWrapper.set(OrderSubPO::getPayStatus, PayStatusEnum.UNFREEZE_SUCCESS.getCode())
|
||||
.eq(OrderSubPO::getSuborderId, noDepositOrder.getSuborderId());
|
||||
orderSubRepo.update(updatenoDepositWrapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(StringUtils.equalsIgnoreCase(rentOrder.getPayStatus(), PayStatusEnum.USERPAYING.getCode())){
|
||||
@ -1353,13 +1371,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
.eq(OrderSubPO::getPayStatus, PayStatusEnum.SUCCESS).last(" limit 1");
|
||||
OrderSubPO noDepositOrder = orderSubRepo.getOne(orderSubWrapper);
|
||||
if (Objects.nonNull(noDepositOrder)) {
|
||||
AlipayFinishFreezeRequest alipayFinishFreezeRequest = new AlipayFinishFreezeRequest();
|
||||
alipayFinishFreezeRequest.setCompanyId(orderDTO.getOperatorId().toString());
|
||||
alipayFinishFreezeRequest.setAuthNo(noDepositOrder.getTransactionId());
|
||||
alipayFinishFreezeRequest.setOutRequestNo(noDepositOrder.getPaymentId());
|
||||
alipayFinishFreezeRequest.setAmount(noDepositOrder.getAmount().toString());
|
||||
AlipayResponse result = payInteg.finishFreeze(alipayFinishFreezeRequest);
|
||||
if (result.isSuccess()) {
|
||||
boolean result = payService.finishFreezeOrder(orderDTO.getOperatorId(),noDepositOrder.getPaymentId(),noDepositOrder.getTransactionId());
|
||||
if (result) {
|
||||
//解冻成功更新状态为解冻成功
|
||||
LambdaUpdateWrapper<OrderSubPO> updatenoDepositWrapper = new LambdaUpdateWrapper<>();
|
||||
updatenoDepositWrapper.set(OrderSubPO::getPayStatus, PayStatusEnum.UNFREEZE_SUCCESS.getCode())
|
||||
|
||||
@ -4,6 +4,7 @@ import com.sczx.order.common.enums.PaymentTypeEnum;
|
||||
import com.sczx.order.dto.SimpleUserInfoDTO;
|
||||
import com.sczx.order.service.PayService;
|
||||
import com.sczx.order.thirdpart.dto.AlipayFundFreezeResponse;
|
||||
import com.sczx.order.thirdpart.dto.AlipayResponse;
|
||||
import com.sczx.order.thirdpart.dto.UnifiedPaymentInfoDTO;
|
||||
import com.sczx.order.thirdpart.dto.req.*;
|
||||
import com.sczx.order.thirdpart.integration.PayInteg;
|
||||
@ -100,4 +101,24 @@ public class PayServiceImpl implements PayService {
|
||||
unifiedPaymentInfoDTO.setOrderStr(result.getOrderStr());
|
||||
return unifiedPaymentInfoDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean finishFreezeOrder(Long companyId, String outOrderNo, String authCode) {
|
||||
log.info("开始完结支付宝押金冻结支付单");
|
||||
AlipayFinishFreezeRequest finishFreezeRequest = new AlipayFinishFreezeRequest();
|
||||
finishFreezeRequest.setCompanyId(companyId.toString());
|
||||
finishFreezeRequest.setAuthNo(authCode);
|
||||
finishFreezeRequest.setOutRequestNo(OrderUtil.generateSubOrderNo(OrderUtil.FFZ_PREFIX));
|
||||
AlipayResponse alipayResponse = payInteg.finishFreeze(finishFreezeRequest);
|
||||
return alipayResponse.isSuccess();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cancelFreezeOrder(Long companyId, String outOrderNo) {
|
||||
log.info("开始取消支付宝押金冻结支付单");
|
||||
AlipayFundFreezeRequest request = new AlipayFundFreezeRequest();
|
||||
request.setCompanyId(companyId.toString());
|
||||
request.setOutOrderNo(outOrderNo);
|
||||
return payInteg.cancelFundFreeze(request);
|
||||
}
|
||||
}
|
||||
|
||||
@ -248,7 +248,7 @@ public class PayInteg {
|
||||
if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){
|
||||
return true;
|
||||
} else {
|
||||
throw new InnerException("取消免押冻结失败");
|
||||
return false;
|
||||
}
|
||||
} catch (Exception e){
|
||||
log.error("取消免押冻结失败",e);
|
||||
@ -263,7 +263,7 @@ public class PayInteg {
|
||||
if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){
|
||||
return result;
|
||||
} else {
|
||||
throw new InnerException("查询免押冻结失败");
|
||||
return null;
|
||||
}
|
||||
} catch (Exception e){
|
||||
log.error("查询免押押冻结失败",e);
|
||||
|
||||
@ -30,6 +30,8 @@ public class OrderUtil {
|
||||
|
||||
public static final String FZ_PREFIX = "FZ";
|
||||
|
||||
public static final String FFZ_PREFIX = "FFZ";
|
||||
|
||||
/**
|
||||
* 生成订单号的方法
|
||||
* @return 唯一订单号字符串
|
||||
|
||||
Reference in New Issue
Block a user