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 @@ ...@@ -20,6 +20,7 @@
<dependency> <dependency>
<groupId>cn.freemud.commons</groupId> <groupId>cn.freemud.commons</groupId>
<artifactId>commons-amqp</artifactId> <artifactId>commons-amqp</artifactId>
<version>2.0.3-snapshot</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud.commons</groupId> <groupId>cn.freemud.commons</groupId>
......
...@@ -103,7 +103,10 @@ public class OrderBusinessServiceImpl implements OrderBusinessService { ...@@ -103,7 +103,10 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
extendInfoRequest.setIsQueryLabel(0); extendInfoRequest.setIsQueryLabel(0);
extendInfoRequest.setIsQueryPaid(1); extendInfoRequest.setIsQueryPaid(1);
BaseResponse<GetMemberExtendInfoResponseDto> extendInfo = customerClient.getMemberExtendInfo(extendInfoRequest); 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()) { if (null == extendInfo.getData()) {
extInfoDTO.setMemberLevel(""); extInfoDTO.setMemberLevel("");
extInfoDTO.setPaidMember(false); extInfoDTO.setPaidMember(false);
...@@ -126,6 +129,14 @@ public class OrderBusinessServiceImpl implements OrderBusinessService { ...@@ -126,6 +129,14 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
return orderSdkAdapter.convent2PayAccessResponse(response); 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 @Override
public Integer getPaySuccessTimeout(ConfirmOrderRequest confirmOrderRequest, PaySuccessReq request) { public Integer getPaySuccessTimeout(ConfirmOrderRequest confirmOrderRequest, PaySuccessReq request) {
// 合阔pos 商户未接单退款超时时间 // 合阔pos 商户未接单退款超时时间
......
...@@ -479,6 +479,7 @@ public class MallOrderServiceImpl implements MallOrderService { ...@@ -479,6 +479,7 @@ public class MallOrderServiceImpl implements MallOrderService {
confirmOrderRequest.setOrderId(orderBean.getOid()); confirmOrderRequest.setOrderId(orderBean.getOid());
confirmOrderRequest.setOrderType(orderBean.getType()); confirmOrderRequest.setOrderType(orderBean.getType());
confirmOrderRequest.setProductOrderCode(orderBean.getOid()); confirmOrderRequest.setProductOrderCode(orderBean.getOid());
confirmOrderRequest.setExtInfo(orderBean.getExtInfo());
List<String> orderIds = new ArrayList<>(); List<String> orderIds = new ArrayList<>();
//拼单调促销开团 //拼单调促销开团
......
...@@ -8,6 +8,8 @@ import cn.freemud.entities.vo.*; ...@@ -8,6 +8,8 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo; import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; 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.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.universal.UniversalOrderService; import cn.freemud.service.universal.UniversalOrderService;
...@@ -18,7 +20,10 @@ import cn.freemud.utils.ResponseUtil; ...@@ -18,7 +20,10 @@ import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType; import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; 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.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.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.util.LockUtils; import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson; import com.google.gson.Gson;
...@@ -112,6 +117,12 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -112,6 +117,12 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private String autoRefundClient; private String autoRefundClient;
@Value("${saas.autoRefund.partnerId}") @Value("${saas.autoRefund.partnerId}")
private String autoRefundPartnerId; private String autoRefundPartnerId;
@Autowired
private OrderCenterProperties orderCenterProperties;
@Autowired
private SaasOrderHandle saasOrderHandle;
@Autowired
private OrderCallbackClient orderCallbackClient;
@Override @Override
...@@ -281,6 +292,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -281,6 +292,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if (!LockUtils.lockAfter(redisCache.getRedisTemplate(), paySuccessKey)) { if (!LockUtils.lockAfter(redisCache.getRedisTemplate(), paySuccessKey)) {
return orderAdapter.paySuccessLockedMessage(); return orderAdapter.paySuccessLockedMessage();
} }
QueryOrdersResponseDto.DataBean.OrderBean orderBeanSass = null;
try { try {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message); ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
// 蜜雪+混合支付专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值 // 蜜雪+混合支付专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
...@@ -304,7 +316,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -304,7 +316,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
orderService.timeOutRefund(orderBean); orderService.timeOutRefund(orderBean);
return orderAdapter.sendPaySuccessNoticeMessage(); return orderAdapter.sendPaySuccessNoticeMessage();
} }
//紧急开关时 判断订单bean是否存在
orderBeanSass = orderBean;
/** /**
* 围餐处理 * 围餐处理
*/ */
...@@ -343,6 +356,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -343,6 +356,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
} finally { } finally {
//删除分布式锁 //删除分布式锁
redisCache.delete("saas:lockAfter:" + paySuccessKey); 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; ...@@ -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.activity.GroupWorkRefundResponse;
import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse;
import cn.freemud.management.service.handle.ActivityHandle; 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.MulitiPaymentClient;
import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.BuyProductOnceManager; import cn.freemud.manager.BuyProductOnceManager;
import cn.freemud.manager.OrderTackCodeManager; import cn.freemud.manager.OrderTackCodeManager;
import cn.freemud.manager.SpellGroupOrderDataManager; import cn.freemud.manager.SpellGroupOrderDataManager;
...@@ -78,7 +76,6 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager; ...@@ -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.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum; import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService; 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.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey; import com.freemud.application.sdk.api.ordercenter.common.OrderAndShoppingCommonRedisKey;
...@@ -325,12 +322,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -325,12 +322,6 @@ public class OrderServiceImpl implements Orderservice {
@Autowired @Autowired
private BuyProductOnceManager buyProductOnceManager; private BuyProductOnceManager buyProductOnceManager;
@Autowired
private OrderCallbackClient orderCallbackClient;
@Autowired
private OrderCenterProperties orderCenterProperties;
@Autowired
private SaasOrderHandle saasOrderHandle;
@Override @Override
...@@ -546,6 +537,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -546,6 +537,7 @@ public class OrderServiceImpl implements Orderservice {
String pickUpGoodsNo = orderTackCodeManager.generateTackCode(orderBean.getType(),partnerId,storeId,var1,OrderTackCodeFactory.getByOrderClient(orderBean.getOrderClient()).getGenerateTackCodeFunc()); String pickUpGoodsNo = orderTackCodeManager.generateTackCode(orderBean.getType(),partnerId,storeId,var1,OrderTackCodeFactory.getByOrderClient(orderBean.getOrderClient()).getGenerateTackCodeFunc());
var1.setPickUpGoodsNo(pickUpGoodsNo); var1.setPickUpGoodsNo(pickUpGoodsNo);
// 订单支付成功 // 订单支付成功
var1.setExtInfo(extInfo);
com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse payAccessRes = orderBusinessService.payAccess(var1); com.freemud.sdk.api.assortment.order.response.order.PayAccessResponse payAccessRes = orderBusinessService.payAccess(var1);
String string2 = JSONObject.toJSONString(payAccessRes); String string2 = JSONObject.toJSONString(payAccessRes);
JSONObject jsonObject2 = JSONObject.parseObject(string2); JSONObject jsonObject2 = JSONObject.parseObject(string2);
...@@ -656,13 +648,6 @@ public class OrderServiceImpl implements Orderservice { ...@@ -656,13 +648,6 @@ public class OrderServiceImpl implements Orderservice {
//支付成功后 //支付成功后
// buriedPointService.paySuccessBuridPoint(partnerId, storeId, orderBean); // 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(); return sendPaySuccessNoticeMessage();
} }
......
...@@ -801,6 +801,7 @@ public class SellCouponOrderServiceImpl { ...@@ -801,6 +801,7 @@ public class SellCouponOrderServiceImpl {
var1.setPayTransId(message.getOut_trade_no()); var1.setPayTransId(message.getOut_trade_no());
var1.setOperator(orderBean.getUserName()); var1.setOperator(orderBean.getUserName());
var1.setEndTransId(message.getEndTransId()); var1.setEndTransId(message.getEndTransId());
var1.setExtInfo(orderBean.getExtInfo());
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){ if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
var1.setExpectTime(DateUtil.convert2String(new Date(orderBean.getGmtExpect()),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); var1.setExpectTime(DateUtil.convert2String(new Date(orderBean.getGmtExpect()),DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
} }
......
...@@ -121,7 +121,8 @@ public class OrderVerifyHandle { ...@@ -121,7 +121,8 @@ public class OrderVerifyHandle {
return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION, getOrderManagerResponse(orderBean)); return ResponseUtil.error(ResponseResult.DELIVERY_SEND_REPETITION, getOrderManagerResponse(orderBean));
} }
//判断订单状态是否为已经申请退款订单 //判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null if (checkRefund(orderBean)
&& orderBean.getHasRefund() != null
&& orderBean.getHasRefund() && orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1 && (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) { || orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
...@@ -191,7 +192,7 @@ public class OrderVerifyHandle { ...@@ -191,7 +192,7 @@ public class OrderVerifyHandle {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED, getOrderManagerResponse(orderBean)); return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED, getOrderManagerResponse(orderBean));
} }
//判断订单状态是否为已经申请退款订单 //判断订单状态是否为已经申请退款订单
if (orderBean.getHasRefund() != null if (checkRefund(orderBean)&&orderBean.getHasRefund() != null
&& orderBean.getHasRefund() && orderBean.getHasRefund()
&& (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1 && (orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 1
|| orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) { || orderBean.getRefundList().get(orderBean.getRefundList().size() - 1).getStatus() == 4)) {
...@@ -208,6 +209,23 @@ public class OrderVerifyHandle { ...@@ -208,6 +209,23 @@ public class OrderVerifyHandle {
return ResponseUtil.success(); 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