新增免押相关接口
This commit is contained in:
@ -11,6 +11,7 @@ import lombok.Getter;
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum PayStatusEnum {
|
||||
INIT("INIT", "初始化"),
|
||||
USERPAYING("USERPAYING", "用户支付中"),
|
||||
SUCCESS("SUCCESS", "支付成功"),
|
||||
PAYERROR("PAYERROR", "支付失败"),
|
||||
|
||||
@ -11,6 +11,7 @@ import lombok.Getter;
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum SubOrderTypeEnum {
|
||||
NO_DEPOSIT("NO_DEPOSIT", "免押冻结订单"),
|
||||
DEPOSIT("DEPOSIT", "押金订单"),
|
||||
RENTCAR("RENTCAR", "租车订单"),
|
||||
RENTBATTEY("RENTBATTEY", "租电订单"),
|
||||
|
||||
@ -22,6 +22,13 @@ public interface OrderService {
|
||||
*/
|
||||
RentCarOrderResultDTO submitRentCarOrder(RentCarOrderReq rentCarOrderReq);
|
||||
|
||||
/**
|
||||
* 免押下单
|
||||
* @param rentCarOrderReq
|
||||
* @return
|
||||
*/
|
||||
RentCarOrderResultDTO depositFreeSubmitRentCarOrder(RentCarOrderReq rentCarOrderReq);
|
||||
|
||||
/**
|
||||
* 续租车
|
||||
* @param rentCarOrderReq
|
||||
|
||||
@ -18,6 +18,7 @@ import com.sczx.order.service.OrderService;
|
||||
import com.sczx.order.service.PayService;
|
||||
import com.sczx.order.thirdpart.dto.*;
|
||||
import com.sczx.order.thirdpart.dto.req.AlipayCloseRequest;
|
||||
import com.sczx.order.thirdpart.dto.req.AlipayFundFreezeRequest;
|
||||
import com.sczx.order.thirdpart.dto.req.CarQueryConditionReq;
|
||||
import com.sczx.order.thirdpart.integration.CarInteg;
|
||||
import com.sczx.order.thirdpart.integration.PayInteg;
|
||||
@ -143,9 +144,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
OrderMainPO orderMainPO = OrderConvert.INSTANCE.subOrderToPo(rentCarOrderReq, userInfoDTO, rentCarRuleDTO);
|
||||
orderMainPO.setOperatorId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
|
||||
orderMainPO.setOrderNo(OrderUtil.generateOrderNo());
|
||||
//TODO 默认应该是待支付状态,这里先默认支付完成待取车
|
||||
orderMainPO.setOrderStatus(OrderStatusEnum.WAIT_PAY.getCode());
|
||||
// orderMainPO.setOrderStatus(OrderStatusEnum.WAIT_PICK.getCode());
|
||||
orderMainPO.setFirstOrderTime(LocalDateTime.now());
|
||||
|
||||
//设置预计还车时间
|
||||
@ -238,6 +237,11 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RentCarOrderResultDTO depositFreeSubmitRentCarOrder(RentCarOrderReq rentCarOrderReq) {
|
||||
//TODO - 免押冻结
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -394,23 +398,37 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
LambdaQueryWrapper<OrderSubPO> orderSubQueryWrapper = new LambdaQueryWrapper<>();
|
||||
orderSubQueryWrapper.eq(OrderSubPO::getOrderId, orderMainPO.getOrderId());
|
||||
orderSubQueryWrapper.eq(OrderSubPO::getPayStatus, PayStatusEnum.USERPAYING.getCode());
|
||||
orderSubQueryWrapper.orderByDesc(OrderSubPO::getCreatedAt).last(" limit 1");
|
||||
OrderSubPO orderSubPO = orderSubRepo.getOne(orderSubQueryWrapper);
|
||||
orderSubQueryWrapper.in(OrderSubPO::getPayStatus, Arrays.asList(PayStatusEnum.USERPAYING.getCode(), PayStatusEnum.INIT.getCode()));
|
||||
orderSubQueryWrapper.orderByDesc(OrderSubPO::getCreatedAt);
|
||||
List<OrderSubPO> orderSubPOList = orderSubRepo.list(orderSubQueryWrapper);
|
||||
boolean closePayOrder = false;
|
||||
//获取门店信息
|
||||
CompanyStoreDTO companyStoreDTO = storeInteg.getStoreById(Integer.valueOf(orderMainPO.getStoreId().toString()));
|
||||
|
||||
OrderSubPO rentOrder = orderSubPOList.stream().filter(orderSubPO -> StringUtils.equalsIgnoreCase(orderSubPO.getSuborderType(), SubOrderTypeEnum.RENTCAR.getCode())).findFirst().orElse( new OrderSubPO());
|
||||
//关闭支付单
|
||||
if(StringUtils.equalsIgnoreCase(orderSubPO.getPaymentMethod(), PaymentTypeEnum.WX_PAY.getCode())){
|
||||
log.info("开始关闭支付单");
|
||||
closePayOrder = payInteg.closeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()), orderSubPO.getPaymentId());
|
||||
} else if(StringUtils.equalsIgnoreCase(orderSubPO.getPaymentMethod(), PaymentTypeEnum.ZFB_PAY.getCode())){
|
||||
log.info("开始关闭支付宝支付单");
|
||||
AlipayCloseRequest alipayCloseRequest = new AlipayCloseRequest();
|
||||
alipayCloseRequest.setCompanyId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
|
||||
alipayCloseRequest.setOutTradeNo(orderSubPO.getPaymentId());
|
||||
closePayOrder = payInteg.alipayCloseOrder(alipayCloseRequest);
|
||||
if(StringUtils.equalsIgnoreCase(rentOrder.getPaymentMethod(), PaymentTypeEnum.WX_PAY.getCode())){
|
||||
log.info("开始关闭微信租车支付单");
|
||||
closePayOrder = payInteg.closeOrder(Long.valueOf(companyStoreDTO.getOperatingCompanyId()), rentOrder.getPaymentId());
|
||||
} else if(StringUtils.equalsIgnoreCase(rentOrder.getPaymentMethod(), PaymentTypeEnum.ZFB_PAY.getCode())){
|
||||
|
||||
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(rentOrder.getPayStatus(), PayStatusEnum.USERPAYING.getCode())){
|
||||
log.info("开始关闭支付宝租车支付单");
|
||||
AlipayCloseRequest alipayCloseRequest = new AlipayCloseRequest();
|
||||
alipayCloseRequest.setCompanyId(Long.valueOf(companyStoreDTO.getOperatingCompanyId()));
|
||||
alipayCloseRequest.setOutTradeNo(rentOrder.getPaymentId());
|
||||
closePayOrder = payInteg.alipayCloseOrder(alipayCloseRequest);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(closePayOrder){
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package com.sczx.order.thirdpart.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("支付宝资金冻结响应参数")
|
||||
@Data
|
||||
public class AlipayFundFreezeResponse {
|
||||
private boolean success;
|
||||
private String message;
|
||||
private String outTradeNo; // 商户订单号
|
||||
private String orderStr; // 支付串(用于前端调起支付)
|
||||
private String code; // 状态码
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.sczx.order.thirdpart.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("支付宝资金冻结响应参数")
|
||||
@Data
|
||||
public class AlipayQueryFreezeResponse {
|
||||
private boolean success;
|
||||
private String message;
|
||||
private String outTradeNo; // 商户订单号
|
||||
private String authNo; // 支付串(用于前端调起支付)
|
||||
private String code; // 状态码
|
||||
}
|
||||
@ -62,4 +62,7 @@ public class UnifiedPaymentInfoDTO {
|
||||
|
||||
@ApiModelProperty(value = "支付宝交易号")
|
||||
private String tradeNo; // 支付宝交易号
|
||||
|
||||
@ApiModelProperty(value = "支付宝芝麻信用免押支付串(用于前端调起支付)")
|
||||
private String orderStr;
|
||||
}
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package com.sczx.order.thirdpart.dto.req;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("支付宝资金冻结请求参数")
|
||||
@Data
|
||||
public class AlipayFinishFreezeRequest {
|
||||
private String companyId;
|
||||
@ApiModelProperty(value = "支付宝资金授权订单号")
|
||||
private String authNo;
|
||||
|
||||
@ApiModelProperty(value = "解冻请求流水号")
|
||||
private String outRequestNo;
|
||||
|
||||
@ApiModelProperty(value = "解冻金额")
|
||||
private String amount;
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package com.sczx.order.thirdpart.dto.req;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("支付宝资金冻结请求参数")
|
||||
@Data
|
||||
public class AlipayFundFreezeRequest {
|
||||
private String companyId;
|
||||
private String outOrderNo;
|
||||
private String title;
|
||||
private String amount;
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.sczx.order.thirdpart.dto.req;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
|
||||
@ApiModel("支付宝资金冻结请求参数")
|
||||
@Data
|
||||
public class AlipayQueryFreezeRequest {
|
||||
private String companyId;
|
||||
private String outOrderNo;
|
||||
private String operationType;
|
||||
}
|
||||
@ -1,9 +1,6 @@
|
||||
package com.sczx.order.thirdpart.facade;
|
||||
|
||||
import com.sczx.order.thirdpart.dto.AlipayCreateResponse;
|
||||
import com.sczx.order.thirdpart.dto.AlipayQueryResponse;
|
||||
import com.sczx.order.thirdpart.dto.AlipayResponse;
|
||||
import com.sczx.order.thirdpart.dto.PaymentResponse;
|
||||
import com.sczx.order.thirdpart.dto.*;
|
||||
import com.sczx.order.thirdpart.dto.req.*;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -86,4 +83,32 @@ public interface PayFacade {
|
||||
*/
|
||||
@PostMapping("/api/alipay/refundQuery")
|
||||
AlipayResponse alipayRefundQuery(@RequestBody AlipayRefundRequest request);
|
||||
|
||||
/**
|
||||
* 冻结接口
|
||||
*/
|
||||
@PostMapping("/api/authAlipay/fundFreeze")
|
||||
AlipayFundFreezeResponse fundFreeze(@RequestBody AlipayFundFreezeRequest request);
|
||||
|
||||
/**
|
||||
* 取消冻结
|
||||
*/
|
||||
@PostMapping("/api/authAlipay/cancelFundFreeze")
|
||||
AlipayFundFreezeResponse cancelFundFreeze(@RequestBody AlipayFundFreezeRequest request);
|
||||
|
||||
/**
|
||||
* 查询冻结
|
||||
* @param alipayQueryFreezeRequest
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/authAlipay/queryFundFreeze")
|
||||
AlipayQueryFreezeResponse queryFundFreeze(@RequestBody AlipayQueryFreezeRequest alipayQueryFreezeRequest);
|
||||
|
||||
/**
|
||||
* 完结冻结
|
||||
* @param alipayFinishFreezeRequest
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/api/authAlipay/finishFreeze")
|
||||
AlipayResponse finishFreeze(@RequestBody AlipayFinishFreezeRequest alipayFinishFreezeRequest);
|
||||
}
|
||||
|
||||
@ -220,4 +220,69 @@ public class PayInteg {
|
||||
throw new InnerException("支付宝查询退款失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 免押冻结
|
||||
*/
|
||||
public AlipayFundFreezeResponse fundFreeze(AlipayFundFreezeRequest request) {
|
||||
try {
|
||||
AlipayFundFreezeResponse result = payFacade.fundFreeze( request);
|
||||
if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){
|
||||
return result;
|
||||
} else {
|
||||
throw new InnerException("免押冻结失败");
|
||||
}
|
||||
} catch (Exception e){
|
||||
log.error("免押冻结失败",e);
|
||||
throw new InnerException("免押冻结失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消冻结
|
||||
*/
|
||||
|
||||
public boolean cancelFundFreeze(AlipayFundFreezeRequest request) {
|
||||
try {
|
||||
AlipayFundFreezeResponse result = payFacade.cancelFundFreeze( request);
|
||||
if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){
|
||||
return true;
|
||||
} else {
|
||||
throw new InnerException("取消免押冻结失败");
|
||||
}
|
||||
} catch (Exception e){
|
||||
log.error("取消免押冻结失败",e);
|
||||
throw new InnerException("取消免押冻结失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public AlipayQueryFreezeResponse queryFundFreeze(AlipayQueryFreezeRequest alipayQueryFreezeRequest) {
|
||||
try {
|
||||
AlipayQueryFreezeResponse result = payFacade.queryFundFreeze( alipayQueryFreezeRequest);
|
||||
if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){
|
||||
return result;
|
||||
} else {
|
||||
throw new InnerException("查询免押冻结失败");
|
||||
}
|
||||
} catch (Exception e){
|
||||
log.error("查询免押押冻结失败",e);
|
||||
throw new InnerException("查询免押冻结失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public AlipayResponse finishFreeze(AlipayFinishFreezeRequest alipayFinishFreezeRequest) {
|
||||
try {
|
||||
AlipayResponse result = payFacade.finishFreeze(alipayFinishFreezeRequest);
|
||||
if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){
|
||||
return result;
|
||||
} else {
|
||||
throw new InnerException("完成免押冻结失败");
|
||||
}
|
||||
} catch (Exception e){
|
||||
log.error("完成免押押冻结失败",e);
|
||||
throw new InnerException("完成免押冻结失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user