Commit c52b566e by 王世昌

Merge branch 'feature/20210717-外卖单售后流程优化-wsc' into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents 0d8c0643 e1d58b2b
......@@ -20,6 +20,7 @@
<dependency>
<groupId>cn.freemud.commons</groupId>
<artifactId>commons-amqp</artifactId>
<version>2.0.3-snapshot</version>
</dependency>
<dependency>
<groupId>cn.freemud.commons</groupId>
......
......@@ -103,7 +103,10 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
extendInfoRequest.setIsQueryLabel(0);
extendInfoRequest.setIsQueryPaid(1);
BaseResponse<GetMemberExtendInfoResponseDto> extendInfo = customerClient.getMemberExtendInfo(extendInfoRequest);
OrderExtInfoDto extInfoDTO = JSONObject.parseObject(confirmOrderRequest.getExtInfo(),OrderExtInfoDto.class);
OrderExtInfoDto extInfoDTO = new OrderExtInfoDto();
if (StringUtils.isNotBlank(confirmOrderRequest.getExtInfo())){
extInfoDTO = JSONObject.parseObject(confirmOrderRequest.getExtInfo(),OrderExtInfoDto.class);
}
if (null == extendInfo.getData()) {
extInfoDTO.setMemberLevel("");
extInfoDTO.setPaidMember(false);
......@@ -126,6 +129,14 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
return orderSdkAdapter.convent2PayAccessResponse(response);
}
public static void main(String[] args) {
BaseResponse<GetMemberExtendInfoResponseDto> extendInfo = new BaseResponse<>() ;
extendInfo.setData(new GetMemberExtendInfoResponseDto());
System.out.println(extendInfo.getData().getMemberGrade() != null ? extendInfo.getData().getMemberGrade().getRuleName(): "");
}
@Override
public Integer getPaySuccessTimeout(ConfirmOrderRequest confirmOrderRequest, PaySuccessReq request) {
// 合阔pos 商户未接单退款超时时间
......
......@@ -479,6 +479,7 @@ public class MallOrderServiceImpl implements MallOrderService {
confirmOrderRequest.setOrderId(orderBean.getOid());
confirmOrderRequest.setOrderType(orderBean.getType());
confirmOrderRequest.setProductOrderCode(orderBean.getOid());
confirmOrderRequest.setExtInfo(orderBean.getExtInfo());
List<String> orderIds = new ArrayList<>();
//拼单调促销开团
......
......@@ -8,6 +8,8 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.universal.UniversalOrderService;
......@@ -18,7 +20,10 @@ import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson;
......@@ -112,6 +117,12 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private String autoRefundClient;
@Value("${saas.autoRefund.partnerId}")
private String autoRefundPartnerId;
@Autowired
private OrderCenterProperties orderCenterProperties;
@Autowired
private SaasOrderHandle saasOrderHandle;
@Autowired
private OrderCallbackClient orderCallbackClient;
@Override
......@@ -281,6 +292,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if (!LockUtils.lockAfter(redisCache.getRedisTemplate(), paySuccessKey)) {
return orderAdapter.paySuccessLockedMessage();
}
QueryOrdersResponseDto.DataBean.OrderBean orderBeanSass = null;
try {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
// 蜜雪+混合支付专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
......@@ -304,7 +316,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
orderService.timeOutRefund(orderBean);
return orderAdapter.sendPaySuccessNoticeMessage();
}
//紧急开关时 判断订单bean是否存在
orderBeanSass = orderBean;
/**
* 围餐处理
*/
......@@ -343,6 +356,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
} finally {
//删除分布式锁
redisCache.delete("saas:lockAfter:" + paySuccessKey);
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if (orderBeanSass != null && orderCenterProperties.isUrgentCallbackOpen()) {
// 查询
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBeanSass.getOid(),2,null,null);
ApiLog.infoMessage("紧急方案 支付成功直接调用callback,orderCode:{},requestId:{}",requestVo.getOrderCode(),requestVo.getRequestId());
orderCallbackClient.callbackOrder(requestVo);
}
}
}
......
......@@ -49,9 +49,7 @@ import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
import cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse;
import cn.freemud.management.service.handle.ActivityHandle;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.manager.OrderTackCodeManager;
import cn.freemud.manager.SpellGroupOrderDataManager;
......@@ -78,7 +76,6 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey;
......@@ -325,12 +322,6 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private BuyProductOnceManager buyProductOnceManager;
@Autowired
private OrderCallbackClient orderCallbackClient;
@Autowired
private OrderCenterProperties orderCenterProperties;
@Autowired
private SaasOrderHandle saasOrderHandle;
@Override
......@@ -546,6 +537,7 @@ public class OrderServiceImpl implements Orderservice {
String pickUpGoodsNo = orderTackCodeManager.generateTackCode(orderBean.getType(),partnerId,storeId,var1,OrderTackCodeFactory.getByOrderClient(orderBean.getOrderClient()).getGenerateTackCodeFunc());
var1.setPickUpGoodsNo(pickUpGoodsNo);
// 订单支付成功
var1.setExtInfo(extInfo);
com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse payAccessRes = orderBusinessService.payAccess(var1);
String string2 = JSONObject.toJSONString(payAccessRes);
JSONObject jsonObject2 = JSONObject.parseObject(string2);
......@@ -656,13 +648,6 @@ public class OrderServiceImpl implements Orderservice {
//支付成功后
// buriedPointService.paySuccessBuridPoint(partnerId, storeId, orderBean);
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if (orderCenterProperties.isUrgentCallbackOpen()) {
// 查询
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(),2,null,null);
ApiLog.infoMessage("紧急方案 支付成功直接调用callback,orderCode:{},requestId:{}",requestVo.getOrderCode(),requestVo.getRequestId());
orderCallbackClient.callbackOrder(requestVo);
}
return sendPaySuccessNoticeMessage();
}
......
......@@ -801,6 +801,7 @@ public class SellCouponOrderServiceImpl {
var1.setPayTransId(message.getOut_trade_no());
var1.setOperator(orderBean.getUserName());
var1.setEndTransId(message.getEndTransId());
var1.setExtInfo(orderBean.getExtInfo());
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
var1.setExpectTime(DateUtil.convert2String(new Date(orderBean.getGmtExpect()),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
......
......@@ -121,7 +121,8 @@ public class OrderVerifyHandle {
return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION, getOrderManagerResponse(orderBean));
}
//判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null
if (checkRefund(orderBean)
&& orderBean.getHasRefund() != null
&& orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
......@@ -191,7 +192,7 @@ public class OrderVerifyHandle {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED, getOrderManagerResponse(orderBean));
}
//判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null
if (checkRefund(orderBean)&&orderBean.getHasRefund() != null
&& orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
......@@ -208,6 +209,23 @@ public class OrderVerifyHandle {
return ResponseUtil.success();
}
private static boolean checkRefund(QueryOrdersResponse.DataBean.OrderBean orderBean) {
List<String> uncheckRefund = Arrays.asList(
OrderSourceType.ELEME.getCode(),
OrderSourceType.EBAI.getCode(),
OrderSourceType.MTWM.getCode(),
OrderSourceType.BDWM.getCode(),
OrderSourceType.JUBAOPEN.getCode(),
OrderSourceType.DIANPING.getCode(),
OrderSourceType.KOUBEI.getCode()
);
// 非三方渠道, 且是外卖类型三方配送的订单,不再进行售后单的判断,否则配送无法进行流转
return !Objects.equals(OldOrderType.TAKE_OUT.getCode(), orderBean.getType())
|| !(!uncheckRefund.contains(orderBean.getSource())
&& Objects.nonNull(orderBean.getAddInfo())
&& THIRD.equalsIgnoreCase(orderBean.getAddInfo().getDeliveryType()));
}
/**
* 拒单
*
......
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