Commit 4bbef2d1 by ping.wu

Merge remote-tracking branch 'origin/develop' into develop

parents cd694771 1c44a280
...@@ -84,7 +84,7 @@ public class CancelOrderRequest extends BaseConfig { ...@@ -84,7 +84,7 @@ public class CancelOrderRequest extends BaseConfig {
* 是否部分退,默认否(全退) * 是否部分退,默认否(全退)
*/ */
@Builder.Default @Builder.Default
private boolean isPartRefund = false; private Boolean isPartRefund = false;
//用户预约时间,仅为预约单时存放 //用户预约时间,仅为预约单时存放
private String expectTime; private String expectTime;
......
...@@ -873,7 +873,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -873,7 +873,7 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
request.setOrderCode(cancelOrderRequest.getOrderId()); request.setOrderCode(cancelOrderRequest.getOrderId());
request.setReqRemark(cancelOrderRequest.getReqRemark()); request.setReqRemark(cancelOrderRequest.getReqRemark());
request.setReqAmount(cancelOrderRequest.getReqAmount()); request.setReqAmount(cancelOrderRequest.getReqAmount());
request.setPartRefund(cancelOrderRequest.isPartRefund()); request.setIsPartRefund(cancelOrderRequest.getIsPartRefund());
//售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单 //售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单
// 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消, // 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消,
request.setAfterSalesType(cancelOrderRequest.getAfterSalesType().getIndex() == null ? 1 : cancelOrderRequest.getAfterSalesType().getIndex()); request.setAfterSalesType(cancelOrderRequest.getAfterSalesType().getIndex() == null ? 1 : cancelOrderRequest.getAfterSalesType().getIndex());
......
...@@ -30,7 +30,7 @@ public class CancelOrderRequestAdapter { ...@@ -30,7 +30,7 @@ public class CancelOrderRequestAdapter {
req.setTrackingNo(LogThreadLocal.getTrackingNo()); req.setTrackingNo(LogThreadLocal.getTrackingNo());
req.setRefundSerialNo(refundId); req.setRefundSerialNo(refundId);
req.setPartRefund(refundAmount != null); // 是否部分退 req.setIsPartRefund(refundAmount != null); // 是否部分退
req.setReqAmount(refundAmount != null ? new BigDecimal(refundAmount) : null); // 退款金额 req.setReqAmount(refundAmount != null ? new BigDecimal(refundAmount) : null); // 退款金额
//操作来源客户端 1:POS插件 2:小助手 3:开放平台 4:自动任务 5:用户端 6:系统 7:万象 8:太一 //操作来源客户端 1:POS插件 2:小助手 3:开放平台 4:自动任务 5:用户端 6:系统 7:万象 8:太一
......
package cn.freemud.aop; package cn.freemud.aop;
import cn.freemud.constant.CommonRedisKeyConstant; import cn.freemud.constant.CommonRedisKeyConstant;
import cn.freemud.entities.vo.ThirdPartLogVo;
import cn.freemud.enums.CommonResponseResult; import cn.freemud.enums.CommonResponseResult;
import cn.freemud.inteceptor.CommonServiceException; import cn.freemud.interceptor.CommonServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.utils.AppLogUtil;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.log.ThirdPartyLog;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
......
...@@ -3,7 +3,6 @@ package cn.freemud.interceptor; ...@@ -3,7 +3,6 @@ package cn.freemud.interceptor;
import cn.freemud.base.constant.Version; import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.inteceptor.CommonServiceException;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
......
package cn.freemud.inteceptor; package cn.freemud.interceptor;
import cn.freemud.enums.CommonResponseResult; import cn.freemud.enums.CommonResponseResult;
import com.freemud.application.sdk.api.exception.IgnoreErrorAnnotation; import com.freemud.application.sdk.api.exception.IgnoreErrorAnnotation;
......
...@@ -292,13 +292,13 @@ public class RefundService { ...@@ -292,13 +292,13 @@ public class RefundService {
req.setRefundState(AfterSalesRefunStateEnum.STATE_2.getIndex()); req.setRefundState(AfterSalesRefunStateEnum.STATE_2.getIndex());
} else { } else {
// 其他退款失败的情况 不生成售后单 // 其他退款失败的情况 不生成售后单
throw new ServiceException(ResponseResult.MULTIORDER__ERRORREFUND.getCode()); throw new ServiceException(ResponseResult.MULTIORDER__ERRORREFUND.getMessage());
} }
BaseOrderResponse resp = orderCenterSdkService.orderCancel(req); BaseOrderResponse resp = orderCenterSdkService.orderCancel(req);
if (resp == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, resp.getErrcode())) { if (resp == null || !ObjectUtils.equals(ResponseConstant.SUCCESS_RESPONSE_CODE, resp.getErrcode())) {
throw new ServiceException(ResponseResult.ORDER__ERRORREFUND.getCode()); throw new ServiceException(ResponseResult.ORDER__ERRORREFUND.getMessage());
} }
if (state == PayRefundStatus.RUNNING.getCode()) { if (state == PayRefundStatus.RUNNING.getCode()) {
......
//package cn.freemud.client;
//
//import cn.freemud.adapter.ActivityAdapter;
//import cn.freemud.amqp.Header;
//import cn.freemud.amqp.MQAction;
//import cn.freemud.amqp.MQMessage;
//import cn.freemud.amqp.MQService;
//import cn.freemud.entities.dto.ActivityCancelStockRequestDto;
//import cn.freemud.entities.dto.QueryOrdersResponseDto;
//import cn.freemud.utils.FileUtil;
//import cn.freemud.utils.AppLogUtil;
//import com.alibaba.fastjson.JSON;
//import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
//import org.springframework.cloud.openfeign.EnableFeignClients;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import java.util.Arrays;
//
//@RunWith(SpringRunner.class)
//@SpringBootTest
//@EnableDiscoveryClient
//@EnableFeignClients
//@EnableAutoConfiguration
//public class MqTest {
// @Autowired
// private ActivityAdapter activityAdapter;
// @Value("${program.backorders_notify_activity_queue}")
// private String backOrdersNotifyActivityQueue;
// @Value("${program.backorders_notify_activity_exchange}")
// private String backOrdersNotifyActivityExchange;
// @Autowired
// private MQService mqService;
// @Test
// public void mqTest () {
// String fileName = "test";
// OrderBeanV1 orderBean = FileUtil.getObjectFromFile(fileName, OrderBeanV1.class);
// // 删除订单 通知活动添加商品库存
// ActivityCancelStockRequestDto activityCancelStockRequestDto = activityAdapter.convert2ActivityCancelStockRequestDto(
// orderBean, Arrays.asList(1,2,3));
// System.out.println(JSON.toJSONString(activityCancelStockRequestDto));
// try {
// Header header = new Header(MQAction.INSERT.getAction(), "backOrdersNotifyActivity", orderBean.getOid(), backOrdersNotifyActivityQueue);
// MQMessage<ActivityCancelStockRequestDto> message = new MQMessage<>(header, activityCancelStockRequestDto);
// mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersNotifyActivityQueue, message);
// } catch (Exception e) {
// AppLogUtil.errorLog("ActivityReverse", JSON.toJSONString(activityCancelStockRequestDto), "", e);
// }
//
// }
//}
...@@ -76,7 +76,7 @@ public class PaymentSdkAdapter { ...@@ -76,7 +76,7 @@ public class PaymentSdkAdapter {
multiQueryRequest.setPartnerId(partnerId); multiQueryRequest.setPartnerId(partnerId);
multiQueryRequest.setStoreId(storeCode); multiQueryRequest.setStoreId(storeCode);
multiQueryRequest.setFmId(""); multiQueryRequest.setFmId("");
multiQueryRequest.setRefundAmount(Long.valueOf(String.valueOf(refundAmount))); multiQueryRequest.setRefundAmount(refundAmount.longValue());
multiQueryRequest.setRefundTradeNo(String.valueOf(getRefundSerialNo())); multiQueryRequest.setRefundTradeNo(String.valueOf(getRefundSerialNo()));
multiQueryRequest.setNotifyUrl(refundNotifyCallback); multiQueryRequest.setNotifyUrl(refundNotifyCallback);
multiQueryRequest.setVer("V1"); multiQueryRequest.setVer("V1");
......
...@@ -19,7 +19,6 @@ import lombok.Data; ...@@ -19,7 +19,6 @@ import lombok.Data;
@Data @Data
public class PayRefundResponse { public class PayRefundResponse {
/** /**
* 支付退款状态 * 支付退款状态
*/ */
...@@ -39,4 +38,9 @@ public class PayRefundResponse { ...@@ -39,4 +38,9 @@ public class PayRefundResponse {
* 退款失败记录原因 * 退款失败记录原因
*/ */
private String message; private String message;
/**
* 是否为部分退款订单
*/
private Boolean partRefund = false;
} }
...@@ -112,6 +112,7 @@ public class PaymentHandle { ...@@ -112,6 +112,7 @@ public class PaymentHandle {
refundResponse = this.payRefund(req); refundResponse = this.payRefund(req);
} }
} }
refundResponse.setPartRefund(!Objects.equals(orderBean.getSettlementAmount(), refundAmount.longValue()));
} catch (OrderServiceException orderEx) { } catch (OrderServiceException orderEx) {
ResponseResult result = orderEx.getResult(); ResponseResult result = orderEx.getResult();
refundResponse = new PayRefundResponse(); refundResponse = new PayRefundResponse();
...@@ -140,7 +141,7 @@ public class PaymentHandle { ...@@ -140,7 +141,7 @@ public class PaymentHandle {
public PayRefundResponse getCommonPayRefundResponse(OrderInfoReqs order, String reason) { public PayRefundResponse getCommonPayRefundResponse(OrderInfoReqs order, String reason) {
PayRefundResponse refundResponse; PayRefundResponse refundResponse;
try { try {
BigDecimal refundAmount = getRefundAmount(order.getPartnerId(), order.getActualPayAmount(), order.getOrderCode()); BigDecimal refundAmount = getRefundAmount(order.getPartnerId(), order.getSettlementAmount(), order.getOrderCode());
if (CollectionUtils.isNotEmpty(order.getOrderPayItemCreateReqList())) { if (CollectionUtils.isNotEmpty(order.getOrderPayItemCreateReqList())) {
// payment/application/refund // payment/application/refund
refundResponse = this.multiRefund(order.getPartnerId(), order.getStoreId(), order.getOrderCode(), refundAmount); refundResponse = this.multiRefund(order.getPartnerId(), order.getStoreId(), order.getOrderCode(), refundAmount);
...@@ -165,6 +166,7 @@ public class PaymentHandle { ...@@ -165,6 +166,7 @@ public class PaymentHandle {
refundResponse = this.payRefund(req); refundResponse = this.payRefund(req);
} }
} }
refundResponse.setPartRefund(!Objects.equals(order.getSettlementAmount().compareTo(refundAmount), 0));
} catch (OrderServiceException orderEx) { } catch (OrderServiceException orderEx) {
ResponseResult result = orderEx.getResult(); ResponseResult result = orderEx.getResult();
refundResponse = new PayRefundResponse(); refundResponse = new PayRefundResponse();
...@@ -172,7 +174,8 @@ public class PaymentHandle { ...@@ -172,7 +174,8 @@ public class PaymentHandle {
refundResponse.setMessage(result.getMessage()); refundResponse.setMessage(result.getMessage());
refundResponse.setResult(result); refundResponse.setResult(result);
return refundResponse; return refundResponse;
} catch (Exception e) { } catch (Throwable e) {
ErrorLog.errorConvertJson(this.getClass(), e.getMessage(), e);
refundResponse = new PayRefundResponse(); refundResponse = new PayRefundResponse();
refundResponse.setPayRefundStatus(PayRefundStatus.COMPATIBILITY_STATUS); refundResponse.setPayRefundStatus(PayRefundStatus.COMPATIBILITY_STATUS);
refundResponse.setMessage("请稍后再试!"); refundResponse.setMessage("请稍后再试!");
......
...@@ -255,9 +255,13 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -255,9 +255,13 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
saasOrderHandle.refundAgree(request, refundResponse, orderBean); saasOrderHandle.refundAgree(request, refundResponse, orderBean);
// 推送pos、微信消息中心 // 推送pos、微信消息中心
orderBaseService.sendMessage(orderBean, ORDER_AGREE_REFUND, request.getReason()); orderBaseService.sendMessage(orderBean, ORDER_AGREE_REFUND, request.getReason());
//todo 可以考虑基于订单回调异步实现
//冲正库存 // 退款冲正发送消息队列(部分退款不进行冲正)
stockHandle.revert(request, orderBean); if (!refundResponse.getPartRefund()) {
// todo 可以考虑基于订单回调异步实现
stockHandle.revert(request, orderBean);
}
if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.RUNNING.getCode()) == 0) { if (refundResponse.getPayRefundStatus().getCode().compareTo(PayRefundStatus.RUNNING.getCode()) == 0) {
return ResponseUtil.error(ResponseResult.REFUND_FAIL.getCode(), refundResponse.getMessage()); return ResponseUtil.error(ResponseResult.REFUND_FAIL.getCode(), refundResponse.getMessage());
} }
...@@ -273,7 +277,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -273,7 +277,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
*/ */
private PayRefundResponse payRefundCommon(OrderManagerRequest request, OrderBeanV1 orderBean) { private PayRefundResponse payRefundCommon(OrderManagerRequest request, OrderBeanV1 orderBean) {
PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean); PayRefundResponse refundResponse = paymentHandle.getCommonPayRefundResponse(request, orderBean);
//同意退款退款失败记录到订单售后单 // 同意退款退款失败记录到订单售后单
if (orderBean.getAfterSalesOrderResp() != null && Objects.equals(PayRefundStatus.FAIL.getCode(), refundResponse.getPayRefundStatus().getCode())) { if (orderBean.getAfterSalesOrderResp() != null && Objects.equals(PayRefundStatus.FAIL.getCode(), refundResponse.getPayRefundStatus().getCode())) {
AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean, AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean,
request.getOperator(), request.getOperator(),
......
...@@ -96,5 +96,5 @@ public class OrderCancelReq { ...@@ -96,5 +96,5 @@ public class OrderCancelReq {
/** /**
* 是否部分退,默认否(全退) * 是否部分退,默认否(全退)
*/ */
private boolean isPartRefund = false; private Boolean isPartRefund = false;
} }
//package cn.freemud.client;
//
//import cn.freemud.adapter.ActivityAdapter;
//import cn.freemud.amqp.Header;
//import cn.freemud.amqp.MQAction;
//import cn.freemud.amqp.MQMessage;
//import cn.freemud.amqp.MQService;
//import cn.freemud.entities.dto.ActivityCancelStockRequestDto;
//import cn.freemud.utils.FileUtil;
//import com.alibaba.fastjson.JSON;
//import com.freemud.application.sdk.api.log.ErrorLog;
//import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
//import org.junit.Test;
//import org.junit.runner.RunWith;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
//import org.springframework.cloud.openfeign.EnableFeignClients;
//import org.springframework.test.context.junit4.SpringRunner;
//
//import java.util.Arrays;
//
//@RunWith(SpringRunner.class)
//@SpringBootTest
//@EnableDiscoveryClient
//@EnableFeignClients
//@EnableAutoConfiguration
//public class MqTest {
// @Autowired
// private ActivityAdapter activityAdapter;
// @Value("${program.backorders_notify_activity_queue}")
// private String backOrdersNotifyActivityQueue;
// @Value("${program.backorders_notify_activity_exchange}")
// private String backOrdersNotifyActivityExchange;
// @Autowired
// private MQService mqService;
// @Test
// public void mqTest () {
// String fileName = "test";
// OrderBeanV1 orderBean = FileUtil.getObjectFromFile(fileName, OrderBeanV1.class);
// // 删除订单 通知活动添加商品库存
// ActivityCancelStockRequestDto activityCancelStockRequestDto = activityAdapter.convert2ActivityCancelStockRequestDto(
// orderBean, Arrays.asList(1,2,3));
// System.out.println(JSON.toJSONString(activityCancelStockRequestDto));
// try {
// Header header = new Header(MQAction.INSERT.getAction(), "backOrdersNotifyActivity", orderBean.getOid(), backOrdersNotifyActivityQueue);
// MQMessage<ActivityCancelStockRequestDto> message = new MQMessage<>(header, activityCancelStockRequestDto);
// mqService.convertAndSend(backOrdersNotifyActivityExchange, backOrdersNotifyActivityQueue, message);
// } catch (Exception e) {
// ErrorLog.errorConvertJson(this.getClass(),"ActivityReverse"+ JSON.toJSONString(activityCancelStockRequestDto),e);
// }
//
// }
//}
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