提交修改

This commit is contained in:
quyixiao 2025-11-16 21:33:15 +08:00
parent 1aa7c0985e
commit 27944a2503
14 changed files with 187 additions and 38 deletions

View File

@ -32,6 +32,7 @@ private static final long serialVersionUID = 1L;
public final static String features_ = CLASS_NAME + "features"; // 附加信息
public final static String change_status_user = CLASS_NAME + "change_status_user"; // 改变这个状态的用户
public final static String trace_id = CLASS_NAME + "trace_id"; // 日志编号
public final static String status_desc = CLASS_NAME + "status_desc"; // 状态描述
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ -55,6 +56,8 @@ private static final long serialVersionUID = 1L;
private String changeStatusUser;
//日志编号
private String traceId;
//状态描述
private String statusDesc;
/**
*
* @return
@ -220,6 +223,21 @@ private static final long serialVersionUID = 1L;
this.traceId = traceId;
}
/**
* 状态描述
* @return
*/
public String getStatusDesc() {
return statusDesc;
}
/**
* 状态描述
* @param statusDesc
*/
public void setStatusDesc(String statusDesc) {
this.statusDesc = statusDesc;
}
@Override
public String toString() {
return "VvTradeOrderLineStatusLogEntity{" +
@ -234,6 +252,7 @@ private static final long serialVersionUID = 1L;
",features=" + features +
",changeStatusUser=" + changeStatusUser +
",traceId=" + traceId +
",statusDesc=" + statusDesc +
"}";
}
}

View File

@ -14,7 +14,11 @@ public enum ReverseStatusEnums {
create("create", "订单创建"),
cancel("cancel", "订单取消"),
buyer_apply_cancel("buyer_apply_cancel", "买家申请订单取消"),
cancel("cancel", "卖家同意订单取消"),
seller_reject_cancel("seller_reject_cancel", "买家拒绝取消"),
buyer_apply_refund_wait_seller_agree("buyer_apply_refund_wait_seller_agree", "买家申请仅退款,等待卖家同意,"),

View File

@ -13,6 +13,11 @@ public class AppCloseDTO extends AppBaseRequest {
*/
private Long tradeOrderId;
/***
* 关闭原因
*/
private String reason;
}

View File

@ -16,7 +16,7 @@ public class VvCancelDTO extends AdminBaseDTO {
/***
* 订单取消原因
*/
private String cancelReason;
private String reason;
}

View File

@ -0,0 +1,23 @@
package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.alibaba.request.vv.AppBaseRequest;
import lombok.Data;
@Data
public class VvTradeOrderCancelDTO extends AppBaseRequest {
/***
* 如果订单还没有发货就传订单编号 如果订单已经发货了就传 物流单号
*/
private Long tradeOrderId;
/***
* 取消原因
*/
private String reason;
}

View File

@ -0,0 +1,23 @@
package com.heyu.api.alibaba.request.mm.order.resp;
import com.heyu.api.alibaba.request.vv.AppBaseRequest;
import lombok.Data;
@Data
public class VvTradeOrderShippedDTO extends AppBaseRequest {
/***
* 物流单号
*/
private String trackNumber;
/***
* 如果订单还没有发货就传订单编号 如果订单已经发货了就传 物流单号
*/
private Long tradeOrderId;
}

View File

@ -11,11 +11,11 @@ public interface VvTradeOrderConvertService {
List<VvTradeOrderLineEntity> list, boolean isApp);
public int addOrderLineStatusLogList(List<Long> tradeOrderLineId, String status, String changeStatusUser, String... reason);
public int addOrderLineStatusLogList(List<Long> tradeOrderLineId, Object status, String changeStatusUser, String... reason);
int addOrderLineStatusLog(Long tradeOrderLineId,
String status,
Object status,
String changeStatusUser,
String... reason

View File

@ -120,6 +120,8 @@ public class ReverseOrderServiceImpl implements ReverseOrderService {
vvReverseOrderProveDao.insertOrUpdateVvReverseOrderProve(vvReverseOrderProveEntity);
}
}
return R.ok().setData(vvReverseOrderEntity);
}

View File

@ -11,6 +11,8 @@ import com.heyu.api.data.entity.vv.VvPackageEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
import com.heyu.api.data.entity.vv.VvTradeOrderLineStatusLogEntity;
import com.heyu.api.data.enums.OrderStatusEnums;
import com.heyu.api.data.enums.ReverseStatusEnums;
import com.heyu.api.data.utils.SanUtils;
import com.heyu.api.service.VvTradeOrderConvertService;
import org.springframework.beans.BeanUtils;
@ -83,7 +85,7 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic
}
@Override
public int addOrderLineStatusLogList(List<Long> tradeOrderLineIdList, String status, String changeStatusUser, String... reason) {
public int addOrderLineStatusLogList(List<Long> tradeOrderLineIdList, Object status, String changeStatusUser, String... reason) {
for (Long tradeOrderLineId : tradeOrderLineIdList) {
addOrderLineStatusLog(tradeOrderLineId, status, changeStatusUser, reason);
}
@ -91,10 +93,19 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic
}
@Override
public int addOrderLineStatusLog(Long tradeOrderLineId, String status, String changeStatusUser, String... reason) {
public int addOrderLineStatusLog(Long tradeOrderLineId, Object status, String changeStatusUser, String ... reason) {
VvTradeOrderLineStatusLogEntity entity = new VvTradeOrderLineStatusLogEntity();
entity.setTradeOrderLineId(tradeOrderLineId);
entity.setStatus(status);
if(status instanceof OrderStatusEnums){
entity.setStatus(((OrderStatusEnums) status).getStatus());
entity.setStatusDesc(((OrderStatusEnums) status).getDesc());
}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]);

View File

@ -245,7 +245,7 @@ public class AdminOrderController {
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
OrderStatusEnums.shipping.getStatus(),
OrderStatusEnums.shipping,
vvOrderRequest.getUserName());
}
@ -268,7 +268,7 @@ public class AdminOrderController {
vvTradeOrderLineDao.updateCoverVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
OrderStatusEnums.wait_shipping.getStatus(),
OrderStatusEnums.wait_shipping,
vvOrderRequest.getUserName(),
vvOrderRequest.getReason()
);
@ -296,7 +296,7 @@ public class AdminOrderController {
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
OrderStatusEnums.shipped.getStatus(),
OrderStatusEnums.shipped,
vvDeliveredDTO.getUserName()
);
}
@ -315,7 +315,6 @@ public class AdminOrderController {
dto.setType(DelayTypeEnums.delivered.getType());
int second = DateUtils.betweenSecond(time, timeAfter15);
log.info("AdminOrderController delay send :{}", JSON.toJSONString(dto));
// 通过广播模式发布延时消息 延时30分钟 持久化消息 消费后销毁 这里无需指定路由会广播至每个绑定此交换机的队列
@ -347,7 +346,7 @@ public class AdminOrderController {
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
OrderStatusEnums.delivered.getStatus(),
OrderStatusEnums.delivered,
vvDeliveredDTO.getUserName()
);
}
@ -367,10 +366,9 @@ public class AdminOrderController {
return R.error("订单状态不是wait_shipping不能取消订单");
}
}
AppliyReverseRequest appliyReverseRequest = new AppliyReverseRequest();
appliyReverseRequest.setRefundType(RefundTypeEnums.only_refund.getCode());
appliyReverseRequest.setRefundReason("订单取消:" + vvCancelDTO.getCancelReason());
appliyReverseRequest.setRefundReason("订单取消:" + vvCancelDTO.getReason());
appliyReverseRequest.setStatus(ReverseStatusEnums.cancel.getStatus());
R r = reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
@ -390,14 +388,13 @@ public class AdminOrderController {
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
vvTradeOrderLineEntity.setGmtCancel(new Date());
vvTradeOrderLineEntity.setCancelUser(vvCancelDTO.getUserName());
vvTradeOrderLineEntity.setCancelReason(vvCancelDTO.getCancelReason());
vvTradeOrderLineEntity.setCancelReason(vvCancelDTO.getReason());
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(
vvTradeOrderLineEntity.getId(),
OrderStatusEnums.cancel.getStatus(),
OrderStatusEnums.cancel,
vvCancelDTO.getUserName(),
vvCancelDTO.getCancelReason()
vvCancelDTO.getReason()
);
}
vvReverseOrderDao.updateVvReverseOrderById(reverseOrderEntity);

View File

@ -137,6 +137,7 @@ public class AdminReverseController {
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(vvApproveRequest.getReverseOrderId());
vvReverseOrderEntity.setStatus(vvApproveRequest.getStatus());
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");
@ -144,6 +145,7 @@ public class AdminReverseController {
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");
@ -182,7 +184,6 @@ public class AdminReverseController {
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 ");
}
@ -230,6 +231,11 @@ public class AdminReverseController {
vvReverseOrderEntity.setStatus(ReverseStatusEnums.weixin_refunding.getStatus());
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
}
return R.ok();
}

View File

@ -6,19 +6,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.heyu.api.alibaba.request.mm.order.AppCloseDTO;
import com.heyu.api.alibaba.request.mm.order.AppDeliveredDTO;
import com.heyu.api.alibaba.request.mm.order.resp.*;
import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseRequest;
import com.heyu.api.alibaba.request.vv.AppOrderRequest;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.dao.vv.*;
import com.heyu.api.data.dto.WeiXinPayDelayDTO;
import com.heyu.api.data.entity.vv.*;
import com.heyu.api.data.enums.DelayTypeEnums;
import com.heyu.api.data.enums.OrderStatusEnums;
import com.heyu.api.data.enums.PayTypeEnums;
import com.heyu.api.data.enums.RoleEnums;
import com.heyu.api.data.enums.*;
import com.heyu.api.data.utils.*;
import com.heyu.api.jsapi.JsapiPrepay;
import com.heyu.api.jsapi.dto.pay.DirectAPIv3JsapiPrepayResponse;
import com.heyu.api.jsapi.dto.pay.WxPayVO;
import com.heyu.api.service.ReverseOrderService;
import com.heyu.api.service.VvTradeOrderConvertService;
import com.heyu.api.utils.ISelect;
import com.heyu.api.utils.PPageUtils;
@ -99,7 +98,8 @@ public class AppOrderController {
@Autowired
private VvTradeOrderConvertService vvTradeOrderConvertService;
@Autowired
private ReverseOrderService reverseOrderService;
/***
* https://api.1024api.com/api-interface/app/order/list
@ -144,7 +144,6 @@ public class AppOrderController {
for (VVOrderListResp vvOrderListResp : vvOrderListResps) {
VvTradeOrderEntity vvTradeOrderEntity = new VvTradeOrderEntity();
BeanUtils.copyProperties(vvOrderListResp, vvTradeOrderEntity);
if (CollectionUtils.isNotEmpty(vvOrderListResp.getPackageList())) {
for (AdminPackageDTO adminPackageDTO : vvOrderListResp.getPackageList()) {
AppPackageDTO appPackageDTO = new AppPackageDTO();
@ -391,6 +390,11 @@ public class AppOrderController {
}
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
vvTradeOrderLineDao.updateByBuerIdAndIds(OrderStatusEnums.delete.getStatus(), vvOrderRequest.getBuyerId(), vvTradeOrderLineEntity.getId());
vvTradeOrderConvertService.addOrderLineStatusLog(
vvTradeOrderLineEntity.getId(),
OrderStatusEnums.delete,
vvOrderRequest.getBuyerId() + ""
);
}
}
return R.ok();
@ -400,18 +404,52 @@ public class AppOrderController {
// /app/order/applyCancel
@Describe("申请取消")
@RequestMapping("/applyCancel")
public R applyCancel(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) {
public R applyCancel(@RequestBody VvTradeOrderCancelDTO request) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(request.getTradeOrderId());
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
if (!OrderStatusEnums.wait_shipping.getStatus().equals(vvTradeOrderLineEntity.getStatus())) {
return R.error("订单状态不是wait_shipping不能取消订单");
}
}
AppliyReverseRequest appliyReverseRequest = new AppliyReverseRequest();
appliyReverseRequest.setRefundType(RefundTypeEnums.only_refund.getCode());
appliyReverseRequest.setRefundReason("买家申请订单取消:" + request.getReason());
appliyReverseRequest.setStatus(ReverseStatusEnums.buyer_apply_cancel.getStatus());
reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
vvTradeOrderConvertService.addOrderLineStatusLog(vvTradeOrderLineEntity.getId(),
ReverseStatusEnums.buyer_apply_cancel,
request.getBuyerId() + ""
,request.getReason()
);
}
return R.ok();
}
// /app/order/shipped
@Describe("申请取消")
@Describe("买家签收")
@RequestMapping("/shipped")
public R shipped(@RequestBody VvTradeOrderDeleteDTO vvOrderRequest) {
public R shipped(@RequestBody VvTradeOrderShippedDTO request) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(request.getTrackNumber());
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
if (!OrderStatusEnums.shipped.getStatus().equals(tradeOrderLineEntity.getStatus())) {
return R.error("订单状态不对");
}
}
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.shipped.getStatus());
tradeOrderLineEntity.setGmtDelivered(new Date());
tradeOrderLineEntity.setDeliveredUser(request.getBuyerId() + "");
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
OrderStatusEnums.shipped,
request.getBuyerId() + ""
);
}
return R.ok();
}
@ -438,7 +476,14 @@ public class AppOrderController {
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
tradeOrderLineEntity.setGmtDelivered(new Date());
tradeOrderLineEntity.setDeliveredUser(vvDeliveredDTO.getBuyerId() + "");
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(
tradeOrderLineEntity.getId(),
OrderStatusEnums.delivered,
vvDeliveredDTO.getBuyerId() + ""
);
}
return R.ok();
}
@ -461,7 +506,16 @@ public class AppOrderController {
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
tradeOrderLineEntity.setGmtClose(new Date());
tradeOrderLineEntity.setCloseUser(appCloseDTO.getTradeOrderId() + "");
tradeOrderLineEntity.setCloseReason(appCloseDTO.getReason());
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(
tradeOrderLineEntity.getId(),
OrderStatusEnums.close,
appCloseDTO.getBuyerId() + "",
appCloseDTO.getReason()
);
}
jsApiPrepay.close(appCloseDTO.getTradeOrderId());
return R.ok();

View File

@ -16,6 +16,7 @@ import com.heyu.api.data.utils.NumberUtil;
import com.heyu.api.data.utils.R;
import com.heyu.api.data.utils.SanUtils;
import com.heyu.api.service.ReverseOrderService;
import com.heyu.api.service.VvTradeOrderConvertService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -51,8 +52,8 @@ public class AppReverseController {
@Autowired
private ReverseOrderService reverseOrderService;
@Autowired
private VvTradeOrderConvertService vvTradeOrderConvertService;
/***
*
* https://api.1024api.com/api-interface/app/reverse/add
@ -71,16 +72,15 @@ public class AppReverseController {
}
appliyReverseRequest.setRefundReason("买家申请退款:" + appliyReverseRequest.getRefundReason());
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(appliyReverseRequest.getTradeOrderLineIds());
;
R r = reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
if (r.ifSuccessful()) {
VvReverseOrderEntity vvReverseOrderEntity = (VvReverseOrderEntity) r.getData();
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
}
return R.ok();
}
/**
* 退货退款 /app/reverse/tracknumber
*
@ -125,24 +125,30 @@ public class AppReverseController {
*/
@Describe("逆向订单关闭")
@RequestMapping("/close")
public R close(@RequestBody AppliyReverseCloseRequest appliyReverseRequest) {
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(appliyReverseRequest.getReverseOrderId());
public R close(@RequestBody AppliyReverseCloseRequest request) {
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(request.getReverseOrderId());
if (
!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,订单不允许关闭 ");
}
vvReverseOrderEntity.setStatus(ReverseStatusEnums.close.getStatus());
vvReverseOrderEntity.setGmtClose(new Date());
vvReverseOrderEntity.setCloseReason(appliyReverseRequest.getCloseReason());
vvReverseOrderEntity.setCloseReason(request.getCloseReason());
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(appliyReverseRequest.getReverseOrderId());
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(request.getReverseOrderId());
List<Long> tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<VvTradeOrderLineEntity> tradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) {
tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus());
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
ReverseStatusEnums.close.getStatus(),
request.getBuyerId() + ""
);
}
return R.ok("逆向订单关闭成功");
}

View File

@ -25,7 +25,6 @@ public class AppUploadOssController {
@Autowired
private OssFileUploadService ossFileUploadService;
/**
* post man 配置
* https://blog.csdn.net/maowendi/article/details/80537304