Commit f840612e by jiangxiaoyang

Merge branch '3.0.21-剩余支付时间-20221010-jxy'

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/ExposureOrderService.java
parents 85a2a114 c7f6966a
......@@ -62,6 +62,12 @@ public class ExposureOrderController {
return ResponseUtil.success(exposureOrderService.getPaySuccessData(request));
}
@ApiAnnotation(logMessage = "获取超时时间, 生成取餐码,上线后删除getPaySuccessData")
@PostMapping("/getPaySuccessDataV2")
public BaseResponse<PaySuccessDataVo> getPaySuccessDataV2(@Validated @LogParams @RequestBody GetPaySuccessDataV2Request request) {
return ResponseUtil.success(exposureOrderService.getPaySuccessDataV2(request));
}
/**
* 发送支付成功模板消息
......
package cn.freemud.entities.vo;
import lombok.Data;
@Data
public class GetPaySuccessDataV2Request {
private Integer orderType;
private String orderClient;
private String partnerId;
private String storeId;
/**
* 订单业务类型 1:普通订单 2:虚拟订单
*/
private Integer bizType;
/**
* 订单特殊类型
*/
private Integer marketingType;
}
package cn.freemud.entities.vo.order;
import lombok.Data;
import java.util.Arrays;
import java.util.List;
@Data
public class QueryByKeysReq {
/**
* 商户号
*/
private String partnerId;
/**
* 订单类型
* 外卖先付 UNPAID_TIMEOUT_CLOSE_TIME_WMXF
* 堂食先付 UNPAID_TIMEOUT_CLOSE_TIME_TSXF
* 堂食后付 UNPAID_TIMEOUT_CLOSE_TIME_TSHF
*/
private List<String> configNames = Arrays.asList("UNPAID_TIMEOUT_CLOSE_TIME_WMXF","UNPAID_TIMEOUT_CLOSE_TIME_TSXF","UNPAID_TIMEOUT_CLOSE_TIME_TSHF");
public QueryByKeysReq(String partnerId) {
this.partnerId = partnerId;
}
}
package cn.freemud.entities.vo.order;
import lombok.Data;
@Data
public class QueryByKeysResp {
/**
* 外卖先付 UNPAID_TIMEOUT_CLOSE_TIME_WMXF
* 堂食先付 UNPAID_TIMEOUT_CLOSE_TIME_TSXF
* 堂食后付 UNPAID_TIMEOUT_CLOSE_TIME_TSHF
*/
private String configName;
/**
* 单位分钟
*/
private String configValue;
}
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.GetMallPayConfigVo;
import cn.freemud.entities.vo.GetPayConfigVo;
import cn.freemud.entities.vo.GetPaySuccessDataRequest;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.GetPaySuccessDataV2Request;
import cn.freemud.entities.vo.order.PayConfigVo;
import cn.freemud.entities.vo.order.PaySuccessDataVo;
import cn.freemud.entities.vo.order.QueryByKeysReq;
import cn.freemud.entities.vo.order.QueryByKeysResp;
import cn.freemud.enums.AggregationTypeEnum;
import cn.freemud.enums.OrderTackCodeFactory;
import cn.freemud.enums.TakeCodeOrderType;
import cn.freemud.manager.OrderTackCodeManager;
import cn.freemud.service.business.impl.OrderBusinessServiceImpl;
import cn.freemud.service.impl.PayServiceImpl;
import cn.freemud.service.thirdparty.OrderServiceClient;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.application.sdk.api.ordercenter.adapter.OrderCenterSdkAdapter;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Objects;
/**
* @author Clover.z
* @version 1.0.0
......@@ -32,6 +43,7 @@ public class ExposureOrderService {
private final OrderTackCodeManager orderTackCodeManager;
private final OrderBusinessServiceImpl orderBusinessService;
private final OrderCenterSdkAdapter orderCenterSdkAdapter;
private final OrderServiceClient orderServiceClient;
public PayConfigVo getPayConfig(GetPayConfigVo req) {
PayConfigVo vo = new PayConfigVo();
......@@ -59,6 +71,46 @@ public class ExposureOrderService {
return vo;
}
/**
* 获取超时时间, 生成取餐码,上线后删除getPaySuccessData
* @param reqVo
* @return
*/
public PaySuccessDataVo getPaySuccessDataV2(GetPaySuccessDataV2Request reqVo) {
Integer type = TakeCodeOrderType.getTakeCodeOrderType(reqVo.getOrderType());
String takeCode = orderTackCodeManager.generateTackCode(type,
reqVo.getPartnerId(),
reqVo.getStoreId(),
null,
OrderTackCodeFactory.getByOrderClient(reqVo.getOrderClient()).getGenerateTackCodeFunc());
Integer timeout = 0;
//查询待支付订单时效配置
BaseResponse<List<QueryByKeysResp>> listBaseResponse = orderServiceClient.queryByKeys(new QueryByKeysReq(reqVo.getPartnerId()));
if (listBaseResponse == null || !Objects.equals("100", listBaseResponse.getCode())) {
timeout = 30;
}
Integer v1Type = orderCenterSdkAdapter.getOldOrderType(reqVo.getOrderType());
for(QueryByKeysResp resp : listBaseResponse.getResult()){
// 外卖订单
if (Objects.equals(v1Type, OrderTypeV1.TAKE_OUT.getCode()) && Objects.equals("UNPAID_TIMEOUT_CLOSE_TIME_WMXF",resp.getConfigName())) {
timeout = Integer.valueOf(resp.getConfigValue());
}else if(Objects.equals(reqVo.getBizType(), BizTypeEnum.ORDINARY.getBizType()) && (Objects.equals(reqVo.getMarketingType(), MarketTypeEnum.ORDER.getIndex()) || Objects.equals(reqVo.getMarketingType(), MarketTypeEnum.CASHIER.getIndex()) )
&& Objects.equals("UNPAID_TIMEOUT_CLOSE_TIME_TSXF",resp.getConfigName())){
//堂食先付
timeout = Integer.valueOf(resp.getConfigValue());
}else if(Objects.equals(reqVo.getBizType(), BizTypeEnum.ORDINARY.getBizType()) && Objects.equals(reqVo.getMarketingType(), MarketTypeEnum.POST_ORDER.getIndex())
&& Objects.equals("UNPAID_TIMEOUT_CLOSE_TIME_TSHF",resp.getConfigName())){
//堂食后付
timeout = Integer.valueOf(resp.getConfigValue());
}
}
PaySuccessDataVo vo = new PaySuccessDataVo();
vo.setTakeCode(takeCode);
vo.setTimeout(timeout);
return vo;
}
/**
* 新商城支付门店配置
......
......@@ -452,11 +452,11 @@ public class PayServiceImpl {
paymentRequest.setReverseNotifyiDcUrl(reverseNotifyiDcUrl);
paymentRequest.setPayCode(payCode);
// if ("2080".equals(partnerId)) {
//【ID1035981】【蜜雪冰城】订单C端,拼接order_body字段:蜜雪冰城+门店编号
//【ID1035981】【蜜雪冰城】订单C端,拼接order_body字段:蜜雪冰城+门店编号
// paymentRequest.setPrincipalName("蜜雪冰城" + storeId + "店");
// } else {
// saas 查询小程序配置
paymentRequest.setPrincipalName(this.getPaymentPrincipalName(partnerId, appId));
// saas 查询小程序配置
paymentRequest.setPrincipalName(this.getPaymentPrincipalName(partnerId, appId));
// }
return paymentRequest;
}
......@@ -585,51 +585,51 @@ public class PayServiceImpl {
}
//使用支付FeignClient
// if (usePayFeignClient) {
orderPayResponse = new OrderPayResponse();
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), orderBean.getShopId());
if (StringUtils.isBlank(clientCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse;
}
requestDto.setClientCode(Long.parseLong(clientCode));
orderPayResponse = new OrderPayResponse();
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), orderBean.getShopId());
if (StringUtils.isBlank(clientCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse;
}
requestDto.setClientCode(Long.parseLong(clientCode));
// com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = paymentNewClient.unifiedOrder(requestDto);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = null;
//处理超时情况,后续冲正mq正常冲正,同支付sdk逻辑
try {
response = this.unifiedOrder(requestDto);
} catch (Exception e) {
AppLogUtil.errorLog("获取预支付信息异常", JSONObject.toJSONString(requestDto), null, e);
}
//预支付接口失败
if (null == response || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, response.getCode())
|| !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode())) {
String errorMessage = "unified fail";
if (null != response) {
errorMessage = StringUtils.isNotEmpty(response.getMessage()) ? response.getMessage() : response.getData().getResultMsg();
}
//打印业务异常
if (response != null && printUnifiedPayResponseError) {
AppLogUtil.errorLog("获取预支付信息失败", JSONObject.toJSONString(requestDto), JSONObject.toJSONString(response), null);
}
//预支付失败需要把原因进行记录
orderPayResponse.setMsg(errorMessage);
return orderPayResponse;
}
putDelMq(request.getPartnerId(), request.getStoreId(), response.getData().getFmId(), orderBean.getOid(), null);
this.convent2CreateOrderResponseVo(orderPayResponse, paymentRequest.getWxAppId(), response.getData());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.WECHAT);
if (orderPayResponse.getPayOrder() != null && StringUtils.isNotBlank(orderPayResponse.getPayOrder().getAliPayOrder())
&& !orderPayResponse.getPayOrder().getAliPayOrder().startsWith("wx")) {
orderPayResponse.setPayChannelType(PayChannelType.ALIPAY);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = null;
//处理超时情况,后续冲正mq正常冲正,同支付sdk逻辑
try {
response = this.unifiedOrder(requestDto);
} catch (Exception e) {
AppLogUtil.errorLog("获取预支付信息异常", JSONObject.toJSONString(requestDto), null, e);
}
//预支付接口失败
if (null == response || !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS_STR, response.getCode())
|| !Objects.equals(ResponseCodeConstant.RESPONSE_SUCCESS, response.getData().getResultCode())) {
String errorMessage = "unified fail";
if (null != response) {
errorMessage = StringUtils.isNotEmpty(response.getMessage()) ? response.getMessage() : response.getData().getResultMsg();
}
//抖音支付
if (PayChannelType.TIKTOKPAY.getIndex().toString().equalsIgnoreCase(orderBean.getPayChannelType())) {
orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY);
//打印业务异常
if (response != null && printUnifiedPayResponseError) {
AppLogUtil.errorLog("获取预支付信息失败", JSONObject.toJSONString(requestDto), JSONObject.toJSONString(response), null);
}
//预支付失败需要把原因进行记录
orderPayResponse.setMsg(errorMessage);
return orderPayResponse;
}
putDelMq(request.getPartnerId(), request.getStoreId(), response.getData().getFmId(), orderBean.getOid(), null);
this.convent2CreateOrderResponseVo(orderPayResponse, paymentRequest.getWxAppId(), response.getData());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(PayChannelType.WECHAT);
if (orderPayResponse.getPayOrder() != null && StringUtils.isNotBlank(orderPayResponse.getPayOrder().getAliPayOrder())
&& !orderPayResponse.getPayOrder().getAliPayOrder().startsWith("wx")) {
orderPayResponse.setPayChannelType(PayChannelType.ALIPAY);
}
//抖音支付
if (PayChannelType.TIKTOKPAY.getIndex().toString().equalsIgnoreCase(orderBean.getPayChannelType())) {
orderPayResponse.setPayChannelType(PayChannelType.TIKTOKPAY);
}
return orderPayResponse;
// }
// com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
// if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
......@@ -1392,7 +1392,7 @@ public class PayServiceImpl {
paymentQueryOrderRequest.setPartnerId(refundRequest.getPartnerId());
paymentQueryOrderRequest.setStoreId(refundRequest.getStoreId());
paymentQueryOrderRequest.setFrontTransId(refundRequest.getOrgTransId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse = null;
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryOrderResponseDto> payQueryOrderResponse = null;
try {
payQueryOrderResponse = omsPaymentClient.payQueryOrder(paymentQueryOrderRequest);
}catch (Exception e){
......
......@@ -2,6 +2,8 @@ package cn.freemud.service.thirdparty;
import cn.freemud.entities.vo.order.EditLogisticsReq;
import cn.freemud.entities.vo.order.DirectDeliveryReq;
import cn.freemud.entities.vo.order.QueryByKeysReq;
import cn.freemud.entities.vo.order.QueryByKeysResp;
import com.freemud.application.sdk.api.ordercenter.annotation.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.QueryInvoiceRepDto;
......@@ -81,4 +83,11 @@ public interface OrderServiceClient {
@PostMapping(value = "/order/v2/directDelivery")
BaseResponse directDelivery(@RequestBody DirectDeliveryReq DeditLogisticsReq);
/**
* 查询待支付订单时效配置
*/
@LogIgnoreFeign(logMessage="queryByKeys")
@PostMapping(value = "/order/config/queryByKeys")
BaseResponse<List<QueryByKeysResp>> queryByKeys(@RequestBody QueryByKeysReq req);
}
......@@ -14,6 +14,7 @@ public enum MarketTypeEnum {
SVC(8, "储值卡充值"),
WE_CHAT_LIVE_SELL(9, "微信视频号卖券"),
TIKTOK_MARKET_ORDER(11, "抖音卖券换购营销"),
POST_ORDER(12, "多人点单后付"),
;
private Integer index;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment