Commit 6ef434ed by 咸鱼

还原部分退功能走老接口

parent c9a3c653
...@@ -19,6 +19,8 @@ import lombok.Builder; ...@@ -19,6 +19,8 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data @Data
public class CancelOrderRequest extends BaseConfig { public class CancelOrderRequest extends BaseConfig {
...@@ -73,6 +75,17 @@ public class CancelOrderRequest extends BaseConfig { ...@@ -73,6 +75,17 @@ public class CancelOrderRequest extends BaseConfig {
@Builder.Default @Builder.Default
private boolean isRefundDeliveryAmount = true; private boolean isRefundDeliveryAmount = true;
/**
* 部分退申请金额
*/
private BigDecimal reqAmount;
/**
* 是否部分退,默认否(全退)
*/
@Builder.Default
private boolean isPartRefund = false;
//用户预约时间,仅为预约单时存放 //用户预约时间,仅为预约单时存放
private String expectTime; private String expectTime;
......
package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Data
public class V2CancelOrderRequest {
@ApiModelProperty(value = "商户号", required = true)
@NotNull
private String partnerId;
@ApiModelProperty(value = "操作人")
private String operator;
@ApiModelProperty(value = "订单编号,与thirdOrderCode二选一,如果orderCode为null则使用thirdOrderCode查询订单")
private String orderCode;
@ApiModelProperty(value = "第三方订单编码,与orderCode二选一,三平台订单号,例如百度、饿了么、美团")
private String thirdOrderCode;
@NotNull(message = "下单渠道不能为空")
@Range(min = 1, max = 127)
private Byte orderClient;
@ApiModelProperty(value = "退的配送费,单位:分")
private BigDecimal deliveryAmount;
@ApiModelProperty(value = "售后原因")
private String afterSalesReason;
@ApiModelProperty(value = "取消原因", hidden = true)
private String cancelReason;
@ApiModelProperty(value = "申请说明")
private String reqRemark = "";
@ApiModelProperty(value = "从创建售后单开始计时,超时完成的时间(单位:分钟),超时后通知。若不需要通知,则不填写。")
private Integer timeout;
@ApiModelProperty(value = "订单定时任务")
private OrderTaskReq orderTask;
/**
* 操作来源客户端
*/
@ApiModelProperty(value = "操作来源客户端 1:POS插件 2:小助手 3:开放平台 4:自动任务 5:用户端 6:系统 7:万象 8:太一")
private Byte operationClient;
/**
* 售后退款状态
*/
@ApiModelProperty(value = "售后退款状态 0:未定义(存量数据) 1:未退款 2:退款中 3:退款失败 4:已退款")
private Byte refundState;
/**
* 退款失败原因
*/
@ApiModelProperty(value = "退款失败原因")
private String refundFailReason;
@ApiModelProperty(value = "售后单类型", required = true)
@NotNull
private Byte afterSalesType;
@ApiModelProperty(value = "是否退配送费,默认值:是")
@Builder.Default
private boolean isRefundDeliveryAmount = true ;
@ApiModelProperty(value = "申请金额,单位分,如果是全部退款,并且传递null,则自动填入 订单用户需支付金额", required = true)
private BigDecimal reqAmount;
@ApiModelProperty(value = "若为null,默认只做【创建】,售后单状态为【待处理】\n" +
"若为2,默认做【创建】+【审核通过】,售后单状态为【退货中】\n" +
"若为5,默认做【创建】+【同意并退货完成】,售后单状态【已退货】\n" +
"若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】")
private Byte createEvent;
@ApiModelProperty(value = "扩展字段")
private String extInfo = "{}";
@ApiModelProperty(value = "订单是否需要挂起,默认挂起")
private boolean suspended = true;
}
...@@ -8,6 +8,8 @@ import com.freemud.sdk.api.assortment.order.enums.OperationClientEnum; ...@@ -8,6 +8,8 @@ import com.freemud.sdk.api.assortment.order.enums.OperationClientEnum;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import java.math.BigDecimal;
/** /**
* @author Clover.z * @author Clover.z
* @version 1.0.0 * @version 1.0.0
...@@ -15,7 +17,7 @@ import org.apache.commons.lang.StringUtils; ...@@ -15,7 +17,7 @@ import org.apache.commons.lang.StringUtils;
*/ */
public class CancelOrderRequestAdapter { public class CancelOrderRequestAdapter {
public static CancelOrderRequest convert(OrderInfoReqs order, String refundId, AfterSalesType afterSalesType, String reason, String remark, Boolean refundDeliveryFee, Byte refundMode) { public static CancelOrderRequest convert(OrderInfoReqs order, String refundId, AfterSalesType afterSalesType, Long refundAmount, String reason, String remark, Boolean refundDeliveryFee, Byte refundMode) {
CancelOrderRequest req = new CancelOrderRequest(); CancelOrderRequest req = new CancelOrderRequest();
req.setOrderId(order.getOrderCode()); req.setOrderId(order.getOrderCode());
req.setPartnerId(order.getPartnerId()); req.setPartnerId(order.getPartnerId());
...@@ -27,6 +29,10 @@ public class CancelOrderRequestAdapter { ...@@ -27,6 +29,10 @@ public class CancelOrderRequestAdapter {
req.setReason(reason); req.setReason(reason);
req.setTrackingNo(LogThreadLocal.getTrackingNo()); req.setTrackingNo(LogThreadLocal.getTrackingNo());
req.setRefundSerialNo(refundId); req.setRefundSerialNo(refundId);
req.setPartRefund(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:太一
req.setOperationClient(OperationClientEnum.STATE_5.getIndex()); req.setOperationClient(OperationClientEnum.STATE_5.getIndex());
req.setOperator(order.getUserName()); req.setOperator(order.getUserName());
......
package cn.freemud.adapter;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.sdk.api.assortment.order.enums.AfterSalesRefunStateEnum;
import com.freemud.sdk.api.assortment.order.enums.OperationClientEnum;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.V2CancelOrderRequest;
import org.apache.commons.lang.StringUtils;
import java.math.BigDecimal;
public class V2CancelOrderRequestAdapter {
public static V2CancelOrderRequest convert(OrderInfoReqs order, Long refundAmount, AfterSalesType afterSalesType, String reason, String remark, Boolean refundDeliveryFee, Byte refundMode) {
V2CancelOrderRequest req = new V2CancelOrderRequest();
req.setPartnerId(order.getPartnerId());
req.setOperator(order.getUserName());
if (AfterSalesType.SYSTEM_CANCEL.getIndex().equals(afterSalesType.getIndex())) {
req.setOperator("admin");
req.setOperationClient(OperationClientEnum.STATE_6.getIndex().byteValue());
}
req.setOrderCode(order.getOrderCode());
req.setReqAmount(refundAmount != null ? new BigDecimal(refundAmount) : null);
req.setOrderClient(order.getOrderClient().byteValue());
req.setOperationClient(OperationClientEnum.STATE_5.getIndex().byteValue());
if (StringUtils.isNotBlank(reason) && reason.length() > 50) {
reason = reason.substring(0, 50);
}
req.setAfterSalesReason(reason);
req.setCancelReason(reason);
req.setReqRemark(remark);
req.setAfterSalesType(afterSalesType.getIndex().byteValue());
// 这里给默认值,外面调用者 自己的根据业务判断退款 状态
req.setRefundState(AfterSalesRefunStateEnum.STATE_1.getIndex().byteValue());
req.setRefundDeliveryAmount(refundDeliveryFee);
// 商城订单 增加拓展信息
CancelOrderRequest.AfterSalesOrderExtInfoReq ext = new CancelOrderRequest.AfterSalesOrderExtInfoReq();
ext.setRefundMode(refundMode);
req.setExtInfo(JSON.toJSONString(ext));
return req;
}
}
...@@ -3,8 +3,6 @@ package cn.freemud.service; ...@@ -3,8 +3,6 @@ package cn.freemud.service;
import cn.freemud.adapter.CancelOrderRequestAdapter; import cn.freemud.adapter.CancelOrderRequestAdapter;
import cn.freemud.adapter.MessageNoticeAdapter; import cn.freemud.adapter.MessageNoticeAdapter;
import cn.freemud.adapter.OrderPrintDtoAdapter; import cn.freemud.adapter.OrderPrintDtoAdapter;
import cn.freemud.adapter.V2CancelOrderRequestAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.delivery.QueryFreightRefundSupportedResponse; import cn.freemud.entities.dto.delivery.QueryFreightRefundSupportedResponse;
import cn.freemud.entities.dto.delivery.QueryFreightRefundSupportedVo; import cn.freemud.entities.dto.delivery.QueryFreightRefundSupportedVo;
...@@ -26,7 +24,6 @@ import cn.freemud.service.impl.OrderQueueService; ...@@ -26,7 +24,6 @@ import cn.freemud.service.impl.OrderQueueService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient; import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.EcologyAdminApplicationClient; import cn.freemud.service.thirdparty.EcologyAdminApplicationClient;
import cn.freemud.service.thirdparty.FMAssistantCloudPrintClient; import cn.freemud.service.thirdparty.FMAssistantCloudPrintClient;
import cn.freemud.service.thirdparty.OrderServiceClient;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter; import com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager; import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager;
...@@ -44,7 +41,6 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient; ...@@ -44,7 +41,6 @@ import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant; import com.freemud.sdk.api.assortment.order.constant.OrderRedisKeyConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity; import com.freemud.sdk.api.assortment.order.entities.OrderRefundConfigEntity;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.V2CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse; import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -81,7 +77,6 @@ public class RefundService { ...@@ -81,7 +77,6 @@ public class RefundService {
private final FMAssistantCloudPrintClient fmAssistantCloudPrintClient; private final FMAssistantCloudPrintClient fmAssistantCloudPrintClient;
private final OrderManagerAdapter orderManagerAdapter; private final OrderManagerAdapter orderManagerAdapter;
private final OrderVerifyHandle orderVerifyHandle; private final OrderVerifyHandle orderVerifyHandle;
private final OrderServiceClient orderServiceClient;
private OrderInfoReqs preValidRefund(String partnerId, String orderCode, Byte refundMode) { private OrderInfoReqs preValidRefund(String partnerId, String orderCode, Byte refundMode) {
// 查询订单信息 // 查询订单信息
...@@ -287,7 +282,7 @@ public class RefundService { ...@@ -287,7 +282,7 @@ public class RefundService {
} }
CancelOrderRequest req = CancelOrderRequestAdapter.convert(order, UUID.randomUUID().toString(), CancelOrderRequest req = CancelOrderRequestAdapter.convert(order, UUID.randomUUID().toString(),
AfterSalesType.USER_CANCEL, reason, remark, isRefundDeliveryFee, refundMode); AfterSalesType.USER_CANCEL, null, reason, remark, isRefundDeliveryFee, refundMode);
req.setRefundState(AfterSalesRefunStateEnum.STATE_4.getIndex()); req.setRefundState(AfterSalesRefunStateEnum.STATE_4.getIndex());
if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) { if (Objects.equals(PayRefundStatus.SUCCESS.getCode(), state)) {
//退款成功 //退款成功
...@@ -318,11 +313,10 @@ public class RefundService { ...@@ -318,11 +313,10 @@ public class RefundService {
private void createAfterSales(OrderInfoReqs order, Long refundAmount, String reason, String remark, Boolean refundDeliveryFee, Byte refundMode) { private void createAfterSales(OrderInfoReqs order, Long refundAmount, String reason, String remark, Boolean refundDeliveryFee, Byte refundMode) {
AfterSalesType type = NewOrderStatus.COMPLETE.getIndex().equals(order.getOrderState()) AfterSalesType type = NewOrderStatus.COMPLETE.getIndex().equals(order.getOrderState())
? AfterSalesType.USER_SALE_RETURN : AfterSalesType.USER_CANCEL; ? AfterSalesType.USER_SALE_RETURN : AfterSalesType.USER_CANCEL;
CancelOrderRequest req = CancelOrderRequestAdapter.convert(order, null, type, refundAmount, reason, remark, refundDeliveryFee, refundMode);
V2CancelOrderRequest req = V2CancelOrderRequestAdapter.convert(order, refundAmount, type, reason, remark, refundDeliveryFee, refundMode); BaseOrderResponse resp = orderCenterSdkService.orderCancel(req);
BaseResponse<Void> resp = orderServiceClient.refundOrder(req); if (!Objects.equals(resp.getErrcode(), 100)) {
if (!ResponseConstant.SUCCESS_RESPONSE_CODE_STR.equals(resp.getCode())) { throw new ServiceException(ResponseResult.ORDER__ERRORREFUND.getCode(), resp.getErrmsg());
throw new ServiceException(ResponseResult.ORDER__ERRORREFUND.getCode(), resp.getMessage());
} }
// 金额大于0的退款,发送到消息中心推送到pos // 金额大于0的退款,发送到消息中心推送到pos
......
...@@ -15,7 +15,6 @@ import cn.freemud.entities.dto.pay.QueryInvoiceByCodesRequest; ...@@ -15,7 +15,6 @@ import cn.freemud.entities.dto.pay.QueryInvoiceByCodesRequest;
import cn.freemud.entities.vo.QueryInvoiceReq; import cn.freemud.entities.vo.QueryInvoiceReq;
import cn.freemud.entities.vo.QueryRefundFailuresListReq; import cn.freemud.entities.vo.QueryRefundFailuresListReq;
import cn.freemud.entities.vo.RefundFailuresSuccessfulReq; import cn.freemud.entities.vo.RefundFailuresSuccessfulReq;
import com.freemud.sdk.api.assortment.order.request.order.V2CancelOrderRequest;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -90,9 +89,4 @@ public interface OrderServiceClient { ...@@ -90,9 +89,4 @@ public interface OrderServiceClient {
@LogIgnoreFeign(logMessage="queryByKeys") @LogIgnoreFeign(logMessage="queryByKeys")
@PostMapping(value = "/order/config/queryByKeys") @PostMapping(value = "/order/config/queryByKeys")
BaseResponse<List<QueryByKeysResp>> queryByKeys(@RequestBody QueryByKeysReq req); BaseResponse<List<QueryByKeysResp>> queryByKeys(@RequestBody QueryByKeysReq req);
@LogIgnoreFeign(logMessage="createInvoice")
@PostMapping("/order/v2/cancelPortion")
BaseResponse<Void> refundOrder(@RequestBody V2CancelOrderRequest v2CancelOrderRequest);
} }
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