提交修改

This commit is contained in:
quyixiao 2025-11-17 23:51:42 +08:00
parent f9146aaa3d
commit 3d1dded608
18 changed files with 237 additions and 193 deletions

View File

@ -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;
}
}

View File

@ -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() {

View File

@ -26,4 +26,11 @@ public class OrderActionDTO {
*/
private String interfaceUri;
/***
* 目标状态名称
*
*/
private String targetStatus ;
}

View File

@ -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<ResourceDTO> resources;
/***
* 拒绝签收原因
*/
private String rejectShippedReason;
/***
* 质检完成评论
*/
private String qaCheckFinishedComment;
/***
* 拒绝退货原因
*/
private String rejectReturnReason;
}

View File

@ -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<VvReverseOrderProveEntity> vvReverseOrderProveEntities;
/***
* 包裹信息
*/
private VvPackageEntity vvPackageEntity;;
/***
* action 列表
*/
private List<OrderActionDTO> orderActionList;
}

View File

@ -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<AbstractOrderAction> 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<OrderActionDTO> orderActionDTOS = getOrderActionDTO(vvTradeOrderLineEntity, isApp);
if (CollectionUtils.isNotEmpty(orderActionDTOS)) {
for (OrderActionDTO orderActionDTO : orderActionDTOS) {
if (orderActionDTO.getButtonName().equals(orderActionEnums.getButtonName())) {
return false;
}
}
}
return true;
}
}

View File

@ -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<AbstractReverseAction> 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<OrderActionDTO> getOrderActionDTO(VvReverseOrderEntity vvReverseOrderEntity, boolean isApp) {
List<OrderActionDTO> 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<OrderActionDTO> orderActionDTOS = getOrderActionDTO(vvReverseOrderEntity, isApp);
if(CollectionUtils.isNotEmpty(orderActionDTOS)){
for (OrderActionDTO orderActionDTO : orderActionDTOS) {
if(orderActionDTO.getButtonName().equals(buttonName)){
return orderActionDTO;
}
}
}
return null;
}
}

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -14,7 +14,7 @@ public class DeliveredAction extends AbstractOrderAction {
) {
if(isApp){
return OrderActionEnums.Admin_Delivered;
return OrderActionEnums.App_Delivered;
}
return OrderActionEnums.Admin_Delivered;
}

View File

@ -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;
}
}

View File

@ -22,6 +22,4 @@ public class SellerAgreeCancelAction extends AbstractReverseAction {
return null;
}
}

View File

@ -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<AdminPackageDTO> adminPackageDTOS = vvOrderListResp.getPackageList();
@ -210,14 +210,14 @@ public class AdminOrderController {
public R toPackAndShipping(@RequestBody VvToShippingDTO vvOrderRequest) {
List<VvTradeOrderLineEntity> 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<VvTradeOrderLineEntity> 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<VvTradeOrderLineEntity> 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<VvTradeOrderLineEntity> 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<VvTradeOrderLineEntity> 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;
}
/***
* 上传结算证据
*/

View File

@ -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<String, VvPackageEntity> vvPackageEntityMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(trackNumbers)) {
List<VvPackageEntity> packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers);
@ -106,6 +104,7 @@ public class AdminReverseController {
vvPackageEntityMap.put(packageEntity.getTrackNumber(), packageEntity);
}
}
List<VvReverseOrderDTO> 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<OrderActionDTO> 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<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvApproveRequest.getReverseOrderId());
List<Long> tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<VvTradeOrderLineEntity> 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();
}

View File

@ -443,10 +443,10 @@ public class AppOrderController {
request.getBuyerId() + ""
);
}
return R.ok();
}
/***
* 订单 妥投 /app/order/delivered
*/

View File

@ -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() + ""