diff --git a/api-mapper/src/main/java/com/heyu/api/data/enums/OrderActionEnums.java b/api-mapper/src/main/java/com/heyu/api/data/enums/OrderActionEnums.java index 7ef5a3f..731c320 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/enums/OrderActionEnums.java +++ b/api-mapper/src/main/java/com/heyu/api/data/enums/OrderActionEnums.java @@ -1,52 +1,68 @@ package com.heyu.api.data.enums; public enum OrderActionEnums { - Admin_Cancel("Admin_Cancel", "admin取消按钮", "/mm/order/cancel"), - App_Apply_Cancel("App_Apply_Cancel", "app申请取消按钮", "/app/order/applyCancel"), - Admin_Delivered("Admin_Delivered", "admin妥投,确认收货", "/mm/order/delivered"), + Admin_Cancel("Admin_Cancel", "admin取消按钮", "/mm/order/cancel", OrderStatusEnums.cancel.getStatus()), - App_Delivered("App_Delivered", "app妥投,确认收货", "/app/order/delivered"), + App_Apply_Cancel("App_Apply_Cancel", "app申请取消按钮", "/app/order/applyCancel", OrderStatusEnums.apply_cancel.getStatus()), - Admin_Shipped("Admin_Shipped", "admin签收按钮", "/mm/order/shipped"), - App_Shipped("App_Shipped", "app签收按钮", "/app/order/shipped"), + Admin_Delivered("Admin_Delivered", "admin妥投,确认收货", "/mm/order/delivered",OrderStatusEnums.delivered.getStatus()), - Admin_To_Shipping("Admin_To_Shipping", "admin发货按钮", "/mm/order/toShipping"), - Admin_Un_Shipping("Admin_Un_Shipping", "admin取消发货", "/mm/order/unShipping"), + App_Delivered("App_Delivered", "app妥投,确认收货", "/app/order/delivered",OrderStatusEnums.delivered.getStatus()), - App_Delete("App_Delete", "app删除按钮", "/app/order/delete"), + Admin_Shipped("Admin_Shipped", "admin签收按钮", "/mm/order/shipped",OrderStatusEnums.shipped.getStatus()), - App_Close("App_Close", "app关闭订单", "/app/order/close"), + App_Shipped("App_Shipped", "app签收按钮", "/app/order/shipped",OrderStatusEnums.shipped.getStatus()), - App_Apply_Refund("App_Apply_Refund", "app申请退款,接口参数refundType传1 ", "/app/reverse/add"), + Admin_To_Shipping("Admin_To_Shipping", "admin发货按钮", "/mm/order/toShipping", OrderStatusEnums.shipping.getStatus()), - App_Apply_Return_Refund("App_Apply_Return_Refund", "app申请退货退款,接口参数refundType传2", "/app/reverse/add"), + Admin_Un_Shipping("Admin_Un_Shipping", "admin取消发货", "/mm/order/unShipping",OrderStatusEnums.wait_shipping.getStatus()), - Admin_Seller_Agree_Cancel("Admin_Seller_Agree_Cancel", "卖家同意取消", "/mm/reverse/approve"), + App_Delete("App_Delete", "app删除按钮", "/app/order/delete",OrderStatusEnums.delete.getStatus()), - Admin_Seller_Reject_Cancel("Admin_Seller_Reject_Cancel", "卖家拒绝取消", "/mm/reverse/approve"), + App_Close("App_Close", "app关闭订单", "/app/order/close",OrderStatusEnums.close.getStatus()), - Admin_Seller_Agree_Refund("Admin_Seller_Agree_Refund", "卖家同意退款", "/mm/reverse/approve"), + App_Apply_Refund("App_Apply_Refund", "app申请退款,接口参数refundType传1 ", "/app/reverse/add", + ReverseStatusEnums.buyer_apply_refund_wait_seller_agree.getStatus()), - Admin_Seller_Reject_Refund("Admin_Seller_Reject_Refund", "卖家拒绝退款", "/mm/reverse/approve"), + App_Apply_Return_Refund("App_Apply_Return_Refund", "app申请退货退款,接口参数refundType传2", + "/app/reverse/add",ReverseStatusEnums.buyer_apply_return_wait_seller_agree.getStatus()), - Admin_Seller_Agree_Return_Refund("Admin_Seller_Agree_Refund", "卖家同意退货退款", "/mm/reverse/approve"), + Admin_Seller_Agree_Cancel("Admin_Seller_Agree_Cancel", "卖家同意取消", "/mm/reverse/approve", + ReverseStatusEnums.seller_agree_cancel.getStatus()), - Admin_Seller_Reject_Return_Refund("Admin_Seller_Reject_Refund", "卖家拒绝退货退款", "/mm/reverse/approve"), + Admin_Seller_Reject_Cancel("Admin_Seller_Reject_Cancel", "卖家拒绝取消", "/mm/reverse/approve", + ReverseStatusEnums.seller_reject_cancel.getStatus()), - App_Buyer_Upload_Reverse_TrackNumber("App_Buyer_Upload_Reverse_TrackNumber", "买家上传逆向tracknumber", "/app/reverse/tracknumber"), + Admin_Seller_Agree_Refund("Admin_Seller_Agree_Refund", "卖家同意退款", "/mm/reverse/approve", + ReverseStatusEnums.agree_refund.getStatus()), - Admin_Seller_Agree_Sign_Receipt("Admin_Seller_Agree_Sign_Receipt", "卖家同意签收", "/mm/reverse/approve"), + Admin_Seller_Reject_Refund("Admin_Seller_Reject_Refund", "卖家拒绝退款", "/mm/reverse/approve", + ReverseStatusEnums.reject_refund.getStatus()), - Admin_Seller_Reject_Sign_Receipt("Admin_Seller_Reject_Sign_Receipt", "卖家拒绝签收", "/mm/reverse/approve"), + Admin_Seller_Agree_Return_Refund("Admin_Seller_Agree_Refund", "卖家同意退货退款", "/mm/reverse/approve", + ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus()), - Admin_Seller_Qa_Check_Finished("Admin_Seller_Qa_Check_Finished", "卖家质检完成", "/mm/reverse/approve"), + Admin_Seller_Reject_Return_Refund("Admin_Seller_Reject_Refund", "卖家拒绝退货退款", "/mm/reverse/approve" + , ReverseStatusEnums.reject_return.getStatus()), + + App_Buyer_Upload_Reverse_TrackNumber("App_Buyer_Upload_Reverse_TrackNumber", "买家上传逆向tracknumber", + "/app/reverse/tracknumber",ReverseStatusEnums.shipping.getStatus()), + + Admin_Seller_Agree_Sign_Receipt("Admin_Seller_Agree_Sign_Receipt", "卖家同意签收", "/mm/reverse/approve", + ReverseStatusEnums.agree_sign_receipt.getStatus()), + + Admin_Seller_Reject_Sign_Receipt("Admin_Seller_Reject_Sign_Receipt", "卖家拒绝签收", "/mm/reverse/approve", + ReverseStatusEnums.reject_sign_receipt.getStatus()), + + Admin_Seller_Qa_Check_Finished("Admin_Seller_Qa_Check_Finished", "卖家质检完成", "/mm/reverse/approve", + ReverseStatusEnums.qa_check_finished.getStatus()), + + App_Buyer_Reverse_Order_Close("App_Buyer_Reverse_Order_Close", "买家申请退款后,可关闭逆向订单", "/app/reverse/close", + ReverseStatusEnums.close.getStatus()), - App_Buyer_Reverse_Order_Close("App_Buyer_Reverse_Order_Close", "买家申请退款后,可关闭逆向订单", "/app/reverse/close"), ; - - /*** * 取消按钮 */ @@ -64,13 +80,21 @@ public enum OrderActionEnums { */ private String interfaceUri; + /*** + * 目标状态名称 + * + */ + private String targetStatus ; - OrderActionEnums(String buttonName, String desc, String interfaceUri) { + + OrderActionEnums(String buttonName, String desc, String interfaceUri, String targetStatus) { this.buttonName = buttonName; this.desc = desc; this.interfaceUri = interfaceUri; + this.targetStatus = targetStatus; } + public String getButtonName() { return buttonName; } @@ -94,4 +118,12 @@ public enum OrderActionEnums { public void setInterfaceUri(String interfaceUri) { this.interfaceUri = interfaceUri; } + + public String getTargetStatus() { + return targetStatus; + } + + public void setTargetStatus(String targetStatus) { + this.targetStatus = targetStatus; + } } diff --git a/api-mapper/src/main/java/com/heyu/api/data/enums/ReverseStatusEnums.java b/api-mapper/src/main/java/com/heyu/api/data/enums/ReverseStatusEnums.java index 055e5f6..f0f3d8d 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/enums/ReverseStatusEnums.java +++ b/api-mapper/src/main/java/com/heyu/api/data/enums/ReverseStatusEnums.java @@ -1,5 +1,7 @@ package com.heyu.api.data.enums; +import com.heyu.api.data.entity.vv.VvReverseOrderEntity; + public enum ReverseStatusEnums { // 逆向状态状态 wait_seller_agree 等待卖家同意 , @@ -57,6 +59,8 @@ public enum ReverseStatusEnums { private String desc; + + // 订单取消:cancel,买家申请退款,等待卖家同意:buyer_apply_reverse_wait_seller_agree,卖家同意退货,买家邮寄:seller_agree_return_wait_buyer_post,运送中:shipping,已签收:shipped,拒绝签收:reject_shipped,质检完成:qa_check_finished,同意退款:agree_refund,拒绝退款:reject_refund,微信退款中:weixin_refunding,退款完成:refunded,退款关闭:close public String getStatus() { diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderActionDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderActionDTO.java index fffcc08..9fd5c65 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderActionDTO.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/OrderActionDTO.java @@ -26,4 +26,11 @@ public class OrderActionDTO { */ private String interfaceUri; + + /*** + * 目标状态名称 + * + */ + private String targetStatus ; + } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvApproveRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvApproveRequest.java index f5494dd..8482101 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvApproveRequest.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvApproveRequest.java @@ -2,54 +2,36 @@ package com.heyu.api.alibaba.request.mm.reverse; import com.heyu.api.alibaba.request.mm.AdminBaseDTO; +import com.heyu.api.alibaba.request.mm.order.ResourceDTO; import lombok.Data; +import java.util.List; + @Data public class VvApproveRequest extends AdminBaseDTO { - /*** * 逆向id */ private Long reverseOrderId; - /*** - * 卖家同意退货,买家邮寄:seller_agree_return_wait_buyer_post - * 拒绝退货:reject_return - * 拒绝签收:reject_shipped, - * 质检完成:qa_check_finished, - * 同意退款:agree_refund, - * 拒绝退款:reject_refund - * 退款关闭:close + * 按钮名称 */ - private String status ; + private String buttonName ; /*** * 关闭订单原因 */ - private String closeReason; + private String reason; /*** - * 拒绝退款原因 + * 资源信息 */ - private String rejectRefundReason; + private List resources; - /*** - * 拒绝签收原因 - */ - private String rejectShippedReason; - /*** - * 质检完成评论 - */ - private String qaCheckFinishedComment; - - /*** - * 拒绝退货原因 - */ - private String rejectReturnReason; } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java index eaca037..4fda6e1 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java @@ -1,5 +1,6 @@ package com.heyu.api.alibaba.request.mm.reverse; +import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO; import com.heyu.api.data.entity.vv.VvPackageEntity; import com.heyu.api.data.entity.vv.VvReverseOrderEntity; import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; @@ -24,10 +25,16 @@ public class VvReverseOrderDTO extends VvReverseOrderEntity { */ private List vvReverseOrderProveEntities; - - + /*** + * 包裹信息 + */ private VvPackageEntity vvPackageEntity;; + /*** + * action 列表 + */ + private List orderActionList; + } diff --git a/api-third/src/main/java/com/heyu/api/service/impl/AbstractOrderAction.java b/api-third/src/main/java/com/heyu/api/service/impl/AbstractOrderAction.java index 292c061..767a7d9 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/AbstractOrderAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/AbstractOrderAction.java @@ -3,6 +3,7 @@ package com.heyu.api.service.impl; import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; +import com.heyu.api.data.utils.CollectionUtils; import com.heyu.api.service.impl.order.*; import java.util.ArrayList; @@ -16,7 +17,10 @@ public abstract class AbstractOrderAction { public static final List actions = Arrays.asList( + new ApplyRefund(), new ApplyReturnRefund(), + new BuyerCloseReverseOrderAction(), + new BuyerUploadReverseTrackNumberAction(), new CancelAction(), new CloseAction(), new DeleteAction(), @@ -39,6 +43,20 @@ public abstract class AbstractOrderAction { } } return actionDTOS; - } + + + public static boolean checkFailed(VvTradeOrderLineEntity vvTradeOrderLineEntity, boolean isApp, OrderActionEnums orderActionEnums) { + List orderActionDTOS = getOrderActionDTO(vvTradeOrderLineEntity, isApp); + if (CollectionUtils.isNotEmpty(orderActionDTOS)) { + for (OrderActionDTO orderActionDTO : orderActionDTOS) { + if (orderActionDTO.getButtonName().equals(orderActionEnums.getButtonName())) { + return false; + } + } + } + return true; + } + + } diff --git a/api-third/src/main/java/com/heyu/api/service/impl/AbstractReverseAction.java b/api-third/src/main/java/com/heyu/api/service/impl/AbstractReverseAction.java index 5279fd6..2373913 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/AbstractReverseAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/AbstractReverseAction.java @@ -3,7 +3,8 @@ package com.heyu.api.service.impl; import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO; import com.heyu.api.data.entity.vv.VvReverseOrderEntity; import com.heyu.api.data.enums.OrderActionEnums; -import com.heyu.api.service.impl.reverse.SellerAgreeCancelAction; +import com.heyu.api.data.utils.CollectionUtils; +import com.heyu.api.service.impl.reverse.*; import java.util.ArrayList; import java.util.Arrays; @@ -11,27 +12,47 @@ import java.util.List; public abstract class AbstractReverseAction { - - public abstract OrderActionEnums getAction(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp,boolean isAdmin); - + public abstract OrderActionEnums getAction(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp, boolean isAdmin); public static final List actions = Arrays.asList( - new SellerAgreeCancelAction() + new SellerAgreeCancelAction(), + new SellerAgreeRefundAction(), + new SellerAgreeReturnRefundAction(), + new SellerAgreeSignReceiptAction(), + new SellerQaCheckFinishedAction(), + new SellerRejectCancelAction(), + new SellerRejectRefundAction(), + new SellerRejectReturnRefundAction(), + new SellerRejectSignReceiptAction() ); public static List getOrderActionDTO(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp) { List actionDTOS = new ArrayList<>(); for (AbstractReverseAction action : actions) { - OrderActionEnums orderActionEnums = action.getAction(vvReverseOrderEntity, isApp,!isApp); + OrderActionEnums orderActionEnums = action.getAction(vvReverseOrderEntity, isApp, !isApp); if (orderActionEnums != null) { OrderActionDTO orderActionDTO = new OrderActionDTO(); orderActionDTO.setDesc(orderActionEnums.getDesc()); orderActionDTO.setButtonName(orderActionEnums.getButtonName()); orderActionDTO.setInterfaceUri(orderActionEnums.getInterfaceUri()); + orderActionDTO.setTargetStatus(orderActionEnums.getTargetStatus()); actionDTOS.add(orderActionDTO); } } return actionDTOS; - } + + + public static OrderActionDTO check(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp,String buttonName) { + List orderActionDTOS = getOrderActionDTO(vvReverseOrderEntity, isApp); + if(CollectionUtils.isNotEmpty(orderActionDTOS)){ + for (OrderActionDTO orderActionDTO : orderActionDTOS) { + if(orderActionDTO.getButtonName().equals(buttonName)){ + return orderActionDTO; + } + } + } + return null; + } + } diff --git a/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java b/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java index 1318da6..f4b775e 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java @@ -96,20 +96,23 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic public int addOrderLineStatusLog(Long tradeOrderLineId, Object status, String changeStatusUser, String ... reason) { VvTradeOrderLineStatusLogEntity entity = new VvTradeOrderLineStatusLogEntity(); entity.setTradeOrderLineId(tradeOrderLineId); - - - if(status instanceof OrderStatusEnums){ + if (status instanceof OrderStatusEnums) { entity.setStatus(((OrderStatusEnums) status).getStatus()); entity.setStatusDesc(((OrderStatusEnums) status).getDesc()); - }else if (status instanceof ReverseStatusEnums){ + } else if (status instanceof ReverseStatusEnums) { entity.setStatus(((ReverseStatusEnums) status).getStatus()); entity.setStatusDesc(((ReverseStatusEnums) status).getDesc()); } entity.setChangeStatusUser(changeStatusUser); + if (reason != null && reason.length > 0) { entity.setReason(reason[0]); + if (reason.length > 1) { + entity.setFeatures(reason[1]); + } } + entity.setTraceId(LogAspect.threadLocalNo.get()); vvTradeOrderLineStatusLogDao.insertVvTradeOrderLineStatusLog(entity); return 1; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/order/BuyerCloseReverseOrderAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/BuyerCloseReverseOrderAction.java new file mode 100644 index 0000000..2d0867f --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/BuyerCloseReverseOrderAction.java @@ -0,0 +1,22 @@ +package com.heyu.api.service.impl.order; + + +import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; +import com.heyu.api.data.enums.OrderActionEnums; +import com.heyu.api.data.enums.ReverseStatusEnums; +import com.heyu.api.service.impl.AbstractOrderAction; + +public class BuyerCloseReverseOrderAction extends AbstractOrderAction { + @Override + public OrderActionEnums getAction(VvTradeOrderLineEntity vvReverseOrderEntity, boolean isApp) { + if ( + + ReverseStatusEnums.buyer_apply_cancel.getStatus().equals(vvReverseOrderEntity.getReverseStatus()) + ) { + if (isApp) { + return OrderActionEnums.App_Buyer_Reverse_Order_Close; + } + } + return null; + } +} diff --git a/api-third/src/main/java/com/heyu/api/service/impl/reverse/BuyerUploadReverseTrackNumberAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/BuyerUploadReverseTrackNumberAction.java similarity index 55% rename from api-third/src/main/java/com/heyu/api/service/impl/reverse/BuyerUploadReverseTrackNumberAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/BuyerUploadReverseTrackNumberAction.java index 1536c47..a9335db 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/reverse/BuyerUploadReverseTrackNumberAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/BuyerUploadReverseTrackNumberAction.java @@ -1,16 +1,16 @@ -package com.heyu.api.service.impl.reverse; +package com.heyu.api.service.impl.order; -import com.heyu.api.data.entity.vv.VvReverseOrderEntity; +import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; import com.heyu.api.data.enums.ReverseStatusEnums; -import com.heyu.api.service.impl.AbstractReverseAction; +import com.heyu.api.service.impl.AbstractOrderAction; -public class BuyerUploadReverseTrackNumberAction extends AbstractReverseAction { +public class BuyerUploadReverseTrackNumberAction extends AbstractOrderAction { @Override - public OrderActionEnums getAction(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp, boolean isAdmin) { + public OrderActionEnums getAction(VvTradeOrderLineEntity vvReverseOrderEntity, boolean isApp) { if ( - ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(vvReverseOrderEntity.getStatus()) + ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(vvReverseOrderEntity.getReverseStatus()) ) { if (isApp) { return OrderActionEnums.App_Buyer_Upload_Reverse_TrackNumber; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java index b30ac75..b0d8db9 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java @@ -16,8 +16,9 @@ public class DeleteAction extends AbstractOrderAction { || OrderStatusEnums.delivered.getStatus().equals(vvTradeOrderLineEntity.getStatus()) || OrderStatusEnums.shipped.getStatus().equals(vvTradeOrderLineEntity.getStatus()) ) { - return OrderActionEnums.Admin_To_Shipping; - + if(isApp){ + return OrderActionEnums.App_Delete; + } } return null; } diff --git a/api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java index 1b6c16a..ca47632 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java @@ -14,7 +14,7 @@ public class DeliveredAction extends AbstractOrderAction { ) { if(isApp){ - return OrderActionEnums.Admin_Delivered; + return OrderActionEnums.App_Delivered; } return OrderActionEnums.Admin_Delivered; } diff --git a/api-third/src/main/java/com/heyu/api/service/impl/reverse/BuyerCloseReverseOrderAction.java b/api-third/src/main/java/com/heyu/api/service/impl/reverse/BuyerCloseReverseOrderAction.java deleted file mode 100644 index cb314fa..0000000 --- a/api-third/src/main/java/com/heyu/api/service/impl/reverse/BuyerCloseReverseOrderAction.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.heyu.api.service.impl.reverse; - - -import com.heyu.api.data.entity.vv.VvReverseOrderEntity; -import com.heyu.api.data.enums.OrderActionEnums; -import com.heyu.api.data.enums.ReverseStatusEnums; -import com.heyu.api.service.impl.AbstractReverseAction; - -public class BuyerCloseReverseOrderAction extends AbstractReverseAction { - @Override - public OrderActionEnums getAction(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp, boolean isAdmin) { - if ( - - ReverseStatusEnums.buyer_apply_cancel.getStatus().equals(vvReverseOrderEntity.getStatus()) - ) { - if (isApp) { - return OrderActionEnums.App_Buyer_Reverse_Order_Close; - } - } - return null; - } -} diff --git a/api-third/src/main/java/com/heyu/api/service/impl/reverse/SellerAgreeCancelAction.java b/api-third/src/main/java/com/heyu/api/service/impl/reverse/SellerAgreeCancelAction.java index 5b64ea2..2a93260 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/reverse/SellerAgreeCancelAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/reverse/SellerAgreeCancelAction.java @@ -22,6 +22,4 @@ public class SellerAgreeCancelAction extends AbstractReverseAction { return null; } - - } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java index 9fd7c2f..dca6c23 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java @@ -22,6 +22,7 @@ import com.heyu.api.jsapi.JsapiPrepay; import com.heyu.api.jsapi.dto.refund.Refund; import com.heyu.api.service.ReverseOrderService; import com.heyu.api.service.VvTradeOrderConvertService; +import com.heyu.api.service.impl.AbstractOrderAction; import com.heyu.api.utils.ISelect; import com.heyu.api.utils.PPageUtils; import lombok.extern.slf4j.Slf4j; @@ -182,7 +183,6 @@ public class AdminOrderController { VVOrderDetailResp vvOrderDetailResp = new VVOrderDetailResp(); vvOrderDetailResp.setVvTradeOrderResp(vvOrderListResps.get(0)); - if (CollectionUtils.isEmpty(vvOrderListResps)) { for (VVOrderListResp vvOrderListResp : vvOrderListResps) { List adminPackageDTOS = vvOrderListResp.getPackageList(); @@ -210,14 +210,14 @@ public class AdminOrderController { public R toPackAndShipping(@RequestBody VvToShippingDTO vvOrderRequest) { List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(vvOrderRequest.getTradeOrderLineIds()); for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { - if (!OrderStatusEnums.wait_shipping.getStatus().equals(tradeOrderLineEntity.getStatus())) { + if (AbstractOrderAction.checkFailed(tradeOrderLineEntity, false, OrderActionEnums.Admin_To_Shipping)) { return R.error("订单状态不对"); } } VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(vvTradeOrderLineEntityList.get(0).getTradeOrderId()); VvPackageEntity vvPackageEntity = vvPackageDao.selectVvPackageByTrackNumber(vvOrderRequest.getTrackNumber()); - if(vvPackageEntity == null ){ + if (vvPackageEntity == null) { vvPackageEntity = new VvPackageEntity(); } @@ -248,7 +248,6 @@ public class AdminOrderController { OrderStatusEnums.shipping, vvOrderRequest.getUserName()); } - return R.ok(); } @@ -257,8 +256,14 @@ public class AdminOrderController { * http://localhost:8888/mm/order/unShipping */ @RequestMapping("/unShipping") - public R unpack(@RequestBody VvUnShippingDTO vvOrderRequest) { + public R unShipping(@RequestBody VvUnShippingDTO vvOrderRequest) { List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(vvOrderRequest.getTradeOrderLineIds()); + for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { + if (AbstractOrderAction.checkFailed(tradeOrderLineEntity, false, OrderActionEnums.Admin_Un_Shipping)) { + return R.error("没有Admin_Un_Shipping按钮"); + } + } + for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { tradeOrderLineEntity.setStatus(OrderStatusEnums.wait_shipping.getStatus()); tradeOrderLineEntity.setTrackNumber(null); @@ -284,7 +289,7 @@ public class AdminOrderController { public R shipped(@RequestBody VvShippedDTO vvDeliveredDTO) { List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(vvDeliveredDTO.getTrackNumber()); for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { - if (!OrderStatusEnums.shipping.getStatus().equals(tradeOrderLineEntity.getStatus())) { + if (AbstractOrderAction.checkFailed(tradeOrderLineEntity, false, OrderActionEnums.Admin_Shipped)) { return R.error("订单状态不对"); } } @@ -335,10 +340,11 @@ public class AdminOrderController { public R delivered(@RequestBody VvDeliveredDTO vvDeliveredDTO) { List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(vvDeliveredDTO.getTrackNumber()); for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { - if (!OrderStatusEnums.shipped.getStatus().equals(tradeOrderLineEntity.getStatus())) { + if (AbstractOrderAction.checkFailed(tradeOrderLineEntity, false, OrderActionEnums.Admin_Delivered)) { return R.error("订单状态不对"); } } + for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { tradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus()); tradeOrderLineEntity.setGmtDelivered(new Date()); @@ -362,14 +368,15 @@ public class AdminOrderController { public R delivered(@RequestBody VvCancelDTO vvCancelDTO) { List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(vvCancelDTO.getTradeOrderId()); for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) { - if (!OrderStatusEnums.wait_shipping.getStatus().equals(vvTradeOrderLineEntity.getStatus())) { + if (AbstractOrderAction.checkFailed(vvTradeOrderLineEntity, false, OrderActionEnums.Admin_Cancel)) { return R.error("订单状态不是wait_shipping,不能取消订单"); } } + AppliyReverseRequest appliyReverseRequest = new AppliyReverseRequest(); appliyReverseRequest.setRefundType(RefundTypeEnums.only_refund.getCode()); appliyReverseRequest.setRefundReason("订单取消:" + vvCancelDTO.getReason()); - appliyReverseRequest.setStatus(ReverseStatusEnums.cancel.getStatus()); + appliyReverseRequest.setStatus(ReverseStatusEnums.seller_agree_cancel.getStatus()); R r = reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest); if (r.ifSuccessful()) { @@ -401,6 +408,7 @@ public class AdminOrderController { } return r; } + /*** * 上传结算证据 */ diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java index 1e68b80..5c34fc3 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java @@ -3,12 +3,13 @@ package com.heyu.api.controller.mm; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.heyu.api.data.enums.ReverseStatusEnums; +import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO; import com.heyu.api.alibaba.request.mm.reverse.VvApproveRequest; import com.heyu.api.alibaba.request.mm.reverse.VvReverseListRequest; import com.heyu.api.alibaba.request.mm.reverse.VvReverseOrderDTO; import com.heyu.api.data.dao.vv.*; import com.heyu.api.data.entity.vv.*; +import com.heyu.api.data.enums.ReverseStatusEnums; import com.heyu.api.data.enums.RoleEnums; import com.heyu.api.data.service.vv.VvPackageService; import com.heyu.api.data.utils.R; @@ -16,7 +17,8 @@ import com.heyu.api.data.utils.SanUtils; import com.heyu.api.data.utils.StringUtils; import com.heyu.api.jsapi.JsapiPrepay; import com.heyu.api.jsapi.dto.refund.Refund; -import com.heyu.api.service.ReverseOrderService; +import com.heyu.api.service.VvTradeOrderConvertService; +import com.heyu.api.service.impl.AbstractReverseAction; import com.heyu.api.utils.ISelect; import com.heyu.api.utils.PPageUtils; import lombok.extern.slf4j.Slf4j; @@ -45,15 +47,9 @@ public class AdminReverseController { private VvReverseOrderProveDao vvReverseOrderProveDao; - @Autowired - private VvTradeOrderDao vvTradeOrderDao; - @Autowired private VvTradeOrderLineDao vvTradeOrderLineDao; - @Autowired - private ReverseOrderService reverseOrderService; - @Autowired private JsapiPrepay jsapiPrepay; @@ -63,6 +59,9 @@ public class AdminReverseController { @Autowired private VvPackageService vvPackageService; + @Autowired + private VvTradeOrderConvertService vvTradeOrderConvertService; + /*** * 逆向列表 https://api.1024api.com/api-interface/mm/reverse/list * @param vvReverseListRequest @@ -98,7 +97,6 @@ public class AdminReverseController { vvPackageService.selectVvKuaidiAndUpdateData(vvReverseOrderEntity.getTrackNumber(), RoleEnums.admin.getRole()); } } - Map vvPackageEntityMap = new HashMap<>(); if (CollectionUtils.isNotEmpty(trackNumbers)) { List packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers); @@ -106,6 +104,7 @@ public class AdminReverseController { vvPackageEntityMap.put(packageEntity.getTrackNumber(), packageEntity); } } + List vvReverseOrderDTOS = new ArrayList<>(); for (VvReverseOrderEntity vvReverseOrderEntity : vvReverseOrderEntities) { VvReverseOrderDTO vvReverseOrderDTO = new VvReverseOrderDTO(); @@ -114,111 +113,75 @@ public class AdminReverseController { vvReverseOrderDTO.setVvReverseOrderProveEntities(vvProveMap.get(vvReverseOrderEntity.getId())); vvReverseOrderDTO.setVvPackageEntity(vvPackageEntityMap.get(vvReverseOrderEntity.getTrackNumber())); + List actionDTOS = AbstractReverseAction.getOrderActionDTO(vvReverseOrderEntity, false); + vvReverseOrderDTO.setOrderActionList(actionDTOS); vvReverseOrderDTOS.add(vvReverseOrderDTO); } - pageUtils.setRows(vvReverseOrderDTOS); - return R.ok().put("page", pageUtils); + return R.ok().setData(pageUtils); } - /*** - * 卖家同意退货,买家邮寄:seller_agree_return_wait_buyer_post - * 拒绝退货:reject_return - * 拒绝签收:reject_shipped, - * 质检完成:qa_check_finished, - * 同意退款:agree_refund, - * 拒绝退款:reject_refund - * 退款关闭:close - * - * 逆向审批 https://api.1024api.com/api-interface/mm/reverse/approve - */ + + @RequestMapping("/approve") public R approve(@RequestBody VvApproveRequest vvApproveRequest) { VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(vvApproveRequest.getReverseOrderId()); - vvReverseOrderEntity.setStatus(vvApproveRequest.getStatus()); + OrderActionDTO orderActionDTO = AbstractReverseAction.check(vvReverseOrderEntity, false, vvApproveRequest.getButtonName()); + if (orderActionDTO == null) { + return R.error("没有这个按钮的权限"); + } + String targetStatus = orderActionDTO.getTargetStatus(); + vvReverseOrderEntity.setStatus(targetStatus); vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity); - - if (ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.buyer_apply_return_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus())) { - return R.error("逆向订单状态不是 seller_agree_return_wait_buyer_post"); - } + if (ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtSellerAgreeReturn(new Date()); vvReverseOrderEntity.setSellerAgreeReturnUser(vvApproveRequest.getUserName()); - } - - if (ReverseStatusEnums.reject_return.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.buyer_apply_return_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus())) { - return R.error("逆向订单状态不是 buyer_apply_reverse_wait_seller_agree"); - } + } else if (ReverseStatusEnums.reject_return.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtRejectReturn(new Date()); vvReverseOrderEntity.setRejectReturnUser(vvApproveRequest.getUserName()); - vvReverseOrderEntity.setRejectReturnReason(vvApproveRequest.getRejectReturnReason()); - } else if (ReverseStatusEnums.shipped.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.shipping.getStatus().equals(vvReverseOrderEntity.getStatus())) { - return R.error("逆向订单状态不是 shipping"); - } + vvReverseOrderEntity.setRejectReturnReason(vvApproveRequest.getReason()); + } else if (ReverseStatusEnums.shipped.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtShipped(new Date()); vvReverseOrderEntity.setShippedUser(vvApproveRequest.getUserName()); - } else if (ReverseStatusEnums.reject_sign_receipt.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.shipping.getStatus().equals(vvReverseOrderEntity.getStatus()) - && !ReverseStatusEnums.shipped.getStatus().equals(vvReverseOrderEntity.getStatus())) { - return R.error("逆向订单状态不是 shipping or shipped"); - } + } else if (ReverseStatusEnums.reject_sign_receipt.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtRejectSignReceipt(new Date()); vvReverseOrderEntity.setRejectSignReceiptUser(vvApproveRequest.getUserName()); - vvReverseOrderEntity.setRejectSignReceiptReason(vvApproveRequest.getRejectRefundReason()); - } else if (ReverseStatusEnums.agree_sign_receipt.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.shipped.getStatus().equals(vvReverseOrderEntity.getStatus())) { - return R.error("逆向订单状态不是 shipping"); - } + vvReverseOrderEntity.setRejectSignReceiptReason(vvApproveRequest.getReason()); + } else if (ReverseStatusEnums.agree_sign_receipt.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtAgreeSignReceipt(new Date()); vvReverseOrderEntity.setAgreeSignReceiptUser(vvApproveRequest.getUserName()); - } else if (ReverseStatusEnums.qa_check_finished.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.shipped.getStatus().equals(vvReverseOrderEntity.getStatus())) { - return R.error("逆向订单状态不是 shipped"); - } + } else if (ReverseStatusEnums.qa_check_finished.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtQaCheckFinished(new Date()); vvReverseOrderEntity.setQaCheckFinishedUser(vvApproveRequest.getUserName()); - vvReverseOrderEntity.setQaCheckFinishedComment(vvApproveRequest.getQaCheckFinishedComment()); - } else if (ReverseStatusEnums.agree_refund.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.qa_check_finished.getStatus().equals(vvReverseOrderEntity.getStatus()) - && !ReverseStatusEnums.cancel.getDesc().equals(vvApproveRequest.getStatus()) - && !ReverseStatusEnums.buyer_apply_refund_wait_seller_agree.getDesc().equals(vvApproveRequest.getStatus()) - ) { - return R.error("逆向订单状态不是 qa_check_finished 或 cancel "); - } + vvReverseOrderEntity.setQaCheckFinishedComment(vvApproveRequest.getReason()); + } else if (ReverseStatusEnums.agree_refund.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtAgreeRefund(new Date()); vvReverseOrderEntity.setAgreeRefundUser(vvApproveRequest.getUserName()); - } else if (ReverseStatusEnums.reject_refund.getStatus().equals(vvApproveRequest.getStatus())) { - if (!ReverseStatusEnums.qa_check_finished.getStatus().equals(vvReverseOrderEntity.getStatus()) - && !ReverseStatusEnums.buyer_apply_refund_wait_seller_agree.getDesc().equals(vvApproveRequest.getStatus()) - ) { - return R.error("逆向订单状态不是 buyer_apply_reverse_wait_seller_agree"); - } + } else if (ReverseStatusEnums.reject_refund.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtRejectRefund(new Date()); vvReverseOrderEntity.setRejectRefundUser(vvApproveRequest.getUserName()); - vvReverseOrderEntity.setRejectRefundReason(vvApproveRequest.getRejectRefundReason()); - } else if (ReverseStatusEnums.close.getStatus().equals(vvApproveRequest.getStatus())) { - if ( - !ReverseStatusEnums.buyer_apply_refund_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus()) - && !ReverseStatusEnums.buyer_apply_return_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus()) - && !ReverseStatusEnums.buyer_apply_return_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus()) - ) { - return R.error("逆向订单状态不是 buyer_apply_reverse_wait_seller_agree"); - } + vvReverseOrderEntity.setRejectRefundReason(vvApproveRequest.getReason()); + } else if (ReverseStatusEnums.close.getStatus().equals(targetStatus)) { vvReverseOrderEntity.setGmtClose(new Date()); vvReverseOrderEntity.setCloseUser(vvApproveRequest.getUserName()); - vvReverseOrderEntity.setCloseReason(vvApproveRequest.getCloseReason()); + vvReverseOrderEntity.setCloseReason(vvApproveRequest.getReason()); } - List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvApproveRequest.getReverseOrderId()); List tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId); List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds); for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) { vvTradeOrderLineEntity.setReverseStatus(vvReverseOrderEntity.getStatus()); vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity); + // 添加逆向状态日志 + vvTradeOrderConvertService.addOrderLineStatusLog( + vvTradeOrderLineEntity.getId(), + targetStatus, + vvApproveRequest.getUserName(), + vvApproveRequest.getReason(), + JSON.toJSONString(vvApproveRequest.getResources()) + ); } - if (ReverseStatusEnums.agree_refund.getStatus().equals(vvApproveRequest.getStatus())) { + if (ReverseStatusEnums.agree_refund.getStatus().equals(targetStatus)) { Refund refund = jsapiPrepay.refund(vvReverseOrderEntity.getTradeOrderId(), vvReverseOrderEntity.getId()); log.info("AdminReverseController reverseOrderEntity id:{} refund:{}", vvReverseOrderEntity.getId(), JSON.toJSONString(refund)); vvReverseOrderEntity.setWeixinFundsAccount(JSON.toJSONString(refund.getFundsAccount())); @@ -230,12 +193,8 @@ public class AdminReverseController { vvReverseOrderEntity.setGmtPreRefund(new Date()); vvReverseOrderEntity.setStatus(ReverseStatusEnums.weixin_refunding.getStatus()); vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity); + } - - - - - return R.ok(); } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java index ca8f079..e6de92c 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java @@ -443,10 +443,10 @@ public class AppOrderController { request.getBuyerId() + "" ); } - return R.ok(); } + /*** * 订单 妥投 /app/order/delivered */ diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java index d9847d2..b17e170 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java @@ -132,6 +132,9 @@ public class AppReverseController { !ReverseStatusEnums.buyer_apply_refund_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus()) && !ReverseStatusEnums.buyer_apply_return_wait_seller_agree.getStatus().equals(vvReverseOrderEntity.getStatus()) && !ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(vvReverseOrderEntity.getStatus())) { + + + return R.error("逆向订单状态非buyer_apply_reverse_wait_seller_agree 和 seller_agree_return_wait_buyer_post,订单不允许关闭 "); } @@ -146,6 +149,7 @@ public class AppReverseController { for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) { tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus()); vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity); + vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(), ReverseStatusEnums.close.getStatus(), request.getBuyerId() + ""