提交修改

This commit is contained in:
quyixiao 2025-11-19 13:07:34 +08:00
parent b2a5b836ac
commit 3c03c23992
13 changed files with 974 additions and 816 deletions

View File

@ -51,4 +51,7 @@ public interface VvPackageDao extends BaseMapper<VvPackageEntity> {
List<VvPackageEntity> selectVvPackageBySignReceiptStatus(String signReceiptStatus);
@LIMIT
VvPackageEntity selectVvPackageByReverseOrderId(Long reverseOrderId);
}

View File

@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
/**
*包裹表
* @author quyixiao
* @since 2025-11-18
* @since 2025-11-19
*/
@Data
@ -44,6 +44,9 @@ private static final long serialVersionUID = 1L;
public final static String shipping_type = CLASS_NAME + "shipping_type"; // order 正向 reverse 逆向
public final static String kuaidi_query_expire_time = CLASS_NAME + "kuaidi_query_expire_time"; // 过期时间注意请控制每一单查询频率至少在半小时以上否则会造成锁单
public final static String sign_receipt_status = CLASS_NAME + "sign_receipt_status"; // not_sign_receipt, sign_receipt
public final static String seller_id = CLASS_NAME + "seller_id"; // 卖家id
public final static String seller_warehouse_id = CLASS_NAME + "seller_warehouse_id"; // 卖家仓库地址id
public final static String reverse_order_id = CLASS_NAME + "reverse_order_id"; // 逆向订单id
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ -91,6 +94,12 @@ private static final long serialVersionUID = 1L;
private Long kuaidiQueryExpireTime;
//not_sign_receipt, sign_receipt
private String signReceiptStatus;
//卖家id
private Long sellerId;
//卖家仓库地址id
private Long sellerWarehouseId;
//逆向订单id
private Long reverseOrderId;
/**
*
* @return
@ -436,6 +445,51 @@ private static final long serialVersionUID = 1L;
this.signReceiptStatus = signReceiptStatus;
}
/**
* 卖家id
* @return
*/
public Long getSellerId() {
return sellerId;
}
/**
* 卖家id
* @param sellerId
*/
public void setSellerId(Long sellerId) {
this.sellerId = sellerId;
}
/**
* 卖家仓库地址id
* @return
*/
public Long getSellerWarehouseId() {
return sellerWarehouseId;
}
/**
* 卖家仓库地址id
* @param sellerWarehouseId
*/
public void setSellerWarehouseId(Long sellerWarehouseId) {
this.sellerWarehouseId = sellerWarehouseId;
}
/**
* 逆向订单id
* @return
*/
public Long getReverseOrderId() {
return reverseOrderId;
}
/**
* 逆向订单id
* @param reverseOrderId
*/
public void setReverseOrderId(Long reverseOrderId) {
this.reverseOrderId = reverseOrderId;
}
@Override
public String toString() {
return "VvPackageEntity{" +
@ -462,6 +516,9 @@ private static final long serialVersionUID = 1L;
",shippingType=" + shippingType +
",kuaidiQueryExpireTime=" + kuaidiQueryExpireTime +
",signReceiptStatus=" + signReceiptStatus +
",sellerId=" + sellerId +
",sellerWarehouseId=" + sellerWarehouseId +
",reverseOrderId=" + reverseOrderId +
"}";
}
}

View File

@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
/**
*卖家仓库表
* @author quyixiao
* @since 2025-08-26
* @since 2025-11-19
*/
@Data
@ -31,6 +31,7 @@ private static final long serialVersionUID = 1L;
public final static String district_ = CLASS_NAME + "district"; //
public final static String warehouse_detail_address = CLASS_NAME + "warehouse_detail_address"; // 仓库详情地址
public final static String seller_id = CLASS_NAME + "seller_id"; // 卖家id
public final static String warehouse_phone = CLASS_NAME + "warehouse_phone"; // 卖家手机号
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ -52,6 +53,8 @@ private static final long serialVersionUID = 1L;
private String warehouseDetailAddress;
//卖家id
private Long sellerId;
//卖家手机号
private String warehousePhone;
/**
*
* @return
@ -202,6 +205,21 @@ private static final long serialVersionUID = 1L;
this.sellerId = sellerId;
}
/**
* 卖家手机号
* @return
*/
public String getWarehousePhone() {
return warehousePhone;
}
/**
* 卖家手机号
* @param warehousePhone
*/
public void setWarehousePhone(String warehousePhone) {
this.warehousePhone = warehousePhone;
}
@Override
public String toString() {
return "VvSellerWarehouseEntity{" +
@ -215,6 +233,7 @@ private static final long serialVersionUID = 1L;
",district=" + district +
",warehouseDetailAddress=" + warehouseDetailAddress +
",sellerId=" + sellerId +
",warehousePhone=" + warehousePhone +
"}";
}
}

View File

@ -7,16 +7,21 @@ import com.heyu.api.data.enums.ReverseStatusEnums;
import com.heyu.api.data.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())
) {
|| 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())) {
if (isApp) {
return OrderActionEnums.App_Buyer_Reverse_Order_Close;
}
}
return null;
}
}

View File

@ -48,9 +48,11 @@ public class MysqlMain_update {
}
List<TablesBean> list = new ArrayList<TablesBean>();
list.add(new TablesBean("vv_package"));
Map<String, String> map = MysqlUtil2ShowCreateTable.getComments();
for (int i = 0; i < list.size(); i++) {
TablesBean obj = list.get(i);

View File

@ -17,7 +17,7 @@ public class VvToShippingDTO extends AdminBaseDTO {
*/
private List<Long> tradeOrderLineIds;
//包裹图片url 是否必填写
//包裹图片url 是否必填写 X
private List<String> packageImageUrls;
//订单追踪号 是否必填写
@ -32,6 +32,10 @@ public class VvToShippingDTO extends AdminBaseDTO {
//运费 是否必填写
private BigDecimal shippingAmount = BigDecimal.ZERO;
//卖家id
private Long sellerId;
//卖家仓库地址id
private Long sellerWarehouseId;
public static void main(String[] args) {

View File

@ -14,6 +14,6 @@ public class AppliyReverseCloseRequest extends AppBaseRequest {
//订单关闭原因
private String closeReason;
private String reason;
}

View File

@ -32,6 +32,13 @@ public class VvApproveRequest extends AdminBaseDTO {
*/
private List<ResourceDTO> resources;
//卖家id
private Long sellerId;
//卖家仓库地址id
private Long sellerWarehouseId;
}

View File

@ -225,6 +225,7 @@ public class AdminOrderController {
return R.error("订单状态不对");
}
}
VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(vvTradeOrderLineEntityList.get(0).getTradeOrderId());
VvPackageEntity vvPackageEntity = vvPackageDao.selectVvPackageByTrackNumber(vvOrderRequest.getTrackNumber());
if (vvPackageEntity == null) {
@ -245,6 +246,8 @@ public class AdminOrderController {
vvPackageEntity.setTrackNumber(vvOrderRequest.getTrackNumber());
vvPackageEntity.setShippingType(ShippingTypeEnums.order.getType());
vvPackageEntity.setSignReceiptStatus(ApiConstants.NOT_SIGN_RECEIPT);
vvPackageEntity.setSellerId(vvOrderRequest.getSellerId());
vvPackageEntity.setSellerWarehouseId(vvOrderRequest.getSellerWarehouseId());
vvPackageDao.insertOrUpdateVvPackage(vvPackageEntity);
vvPackageService.selectVvKuaidiAndUpdateData(vvPackageEntity.getTrackNumber(), RoleEnums.admin.getRole(), false);
@ -258,8 +261,9 @@ public class AdminOrderController {
tradeOrderLineEntity.setTrackNumber(vvOrderRequest.getTrackNumber());
tradeOrderLineEntity.setStatus(OrderStatusEnums.shipping.getStatus()); // 已经发货
tradeOrderLineEntity.setGmtToShipping(new Date());
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
tradeOrderLineEntity.setSellerId(vvOrderRequest.getSellerId());
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
vvTradeOrderConvertService.addOrderLineStatusLog(tradeOrderLineEntity.getId(),
OrderStatusEnums.shipping,
vvOrderRequest.getUserName());
@ -280,6 +284,7 @@ public class AdminOrderController {
return R.error("没有Admin_Un_Shipping按钮");
}
}
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.wait_shipping.getStatus());
tradeOrderLineEntity.setTrackNumber(null);
@ -362,7 +367,6 @@ public class AdminOrderController {
return R.error("订单状态不对");
}
}
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(OrderStatusEnums.delivered.getStatus());
tradeOrderLineEntity.setGmtDelivered(new Date());
@ -377,7 +381,6 @@ public class AdminOrderController {
return R.ok();
}
/***
* 订单取消
* http://localhost:8888/mm/order/cancel

View File

@ -3,6 +3,8 @@ package com.heyu.api.controller.mm;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.heyu.api.data.constants.ApiConstants;
import com.heyu.api.data.enums.ShippingTypeEnums;
import com.heyu.api.data.kuaidi100.OrderActionDTO;
import com.heyu.api.alibaba.request.mm.reverse.VvApproveRequest;
import com.heyu.api.alibaba.request.mm.reverse.VvReverseListRequest;
@ -30,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.*;
@Slf4j
@ -140,9 +143,21 @@ public class AdminReverseController {
String targetStatus = orderActionDTO.getTargetStatus();
vvReverseOrderEntity.setStatus(targetStatus);
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
if (ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(targetStatus)) {
vvReverseOrderEntity.setGmtSellerAgreeReturn(new Date());
vvReverseOrderEntity.setSellerAgreeReturnUser(vvApproveRequest.getUserName());
VvPackageEntity vvPackageEntity = new VvPackageEntity();
vvPackageEntity.setShippingAmount(BigDecimal.ZERO);
vvPackageEntity.setShippingType(ShippingTypeEnums.reverse.getType());
vvPackageEntity.setSellerId(vvApproveRequest.getSellerId());
vvPackageEntity.setSellerWarehouseId(vvApproveRequest.getSellerWarehouseId());
vvPackageEntity.setSignReceiptStatus(ApiConstants.NOT_SIGN_RECEIPT);
vvPackageDao.insertOrUpdateVvPackage(vvPackageEntity);
} else if (ReverseStatusEnums.reject_return.getStatus().equals(targetStatus)) {
vvReverseOrderEntity.setGmtRejectReturn(new Date());
vvReverseOrderEntity.setRejectReturnUser(vvApproveRequest.getUserName());
@ -176,6 +191,7 @@ public class AdminReverseController {
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);
@ -188,6 +204,7 @@ public class AdminReverseController {
JSON.toJSONString(vvApproveRequest.getResources())
);
}
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));

View File

@ -26,7 +26,6 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -60,6 +59,12 @@ public class AppReverseController {
@Autowired
private VvPackageService vvPackageService;
@Autowired
private VvSellerWarehouseDao vvSellerWarehouseDao;
/***
*
* https://api.1024api.com/api-interface/app/reverse/add
@ -94,13 +99,11 @@ public class AppReverseController {
@Describe("逆向订单更新订单号")
@RequestMapping("/upload/tracknumber")
public R uploadTracknumber(@RequestBody AppliyReverseProveRequest appliyReverseRequest) {
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(appliyReverseRequest.getReverseOrderId());
if ( AbstractReverseAction.checkFailed(vvReverseOrderEntity, false,
OrderActionEnums.App_Buyer_Upload_Reverse_TrackNumber.getButtonName())) {
return R.error("逆向订单状态非seller_agree_return_wait_buyer_post不对");
}
vvReverseOrderEntity.setStatus(ReverseStatusEnums.shipping.getStatus());
vvReverseOrderEntity.setTrackNumber(appliyReverseRequest.getTrackNumber());
vvReverseOrderEntity.setGmtBuyerPost(new Date());
@ -119,23 +122,25 @@ public class AppReverseController {
}
}
VvPackageEntity vvPackageEntity = new VvPackageEntity();
// 更新包裹信息
VvPackageEntity vvPackageEntity = vvPackageDao.selectVvPackageByReverseOrderId(vvReverseOrderEntity.getId());
vvPackageEntity.setPackageImageUrl(JSON.toJSONString(packageImageUrls));
vvPackageEntity.setShippingAmount(BigDecimal.ZERO);
vvPackageEntity.setShippingType(ShippingTypeEnums.reverse.getType());
vvPackageEntity.setTrackNumber(vvPackageEntity.getTrackNumber());
vvPackageDao.insertOrUpdateVvPackage(vvPackageEntity);
vvPackageService.selectVvKuaidiAndUpdateData(vvPackageEntity.getTrackNumber(), RoleEnums.user.getRole(), false);
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvReverseOrderEntity.getId());
List<Long> tradeOrderLineIds = SanUtils.getFieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
VvPackageEntity vvPackageEntityNew = vvPackageDao.selectVvPackageByTrackNumber(vvPackageEntity.getTrackNumber());
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderByTradeOrderIds(tradeOrderLineIds);
// 创建订阅
KuaiDi100Utils.subscribe(vvPackageEntityNew.getCom(), vvPackageEntityNew.getTrackNumber(),
vvTradeOrderLineEntityList.get(0).getBuyerPhone());
Long sellerWarehouseId = NumberUtil.objToLongDefault(vvPackageEntity.getSellerWarehouseId(), 1);
VvSellerWarehouseEntity vvSellerWarehouseEntity = vvSellerWarehouseDao.selectVvSellerWarehouseById(sellerWarehouseId);
// 创建订阅
KuaiDi100Utils.subscribe(vvPackageEntityNew.getCom(), vvPackageEntityNew.getTrackNumber(), vvSellerWarehouseEntity.getWarehousePhone());
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
tradeOrderLineEntity.setStatus(ReverseStatusEnums.shipping.getStatus()); // 已经发货
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
@ -144,12 +149,10 @@ public class AppReverseController {
appliyReverseRequest.getBuyerId() + ""
);
}
return R.ok();
}
/**
* 逆向订单关闭 /app/reverse/close
*
@ -158,17 +161,14 @@ public class AppReverseController {
@RequestMapping("/close")
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,订单不允许关闭 ");
if ( AbstractReverseAction.checkFailed(vvReverseOrderEntity, false,
OrderActionEnums.App_Buyer_Reverse_Order_Close.getButtonName())) {
return R.error("逆向订单状态不允许关闭 ");
}
vvReverseOrderEntity.setStatus(ReverseStatusEnums.close.getStatus());
vvReverseOrderEntity.setGmtClose(new Date());
vvReverseOrderEntity.setCloseReason(request.getCloseReason());
vvReverseOrderEntity.setCloseReason(request.getReason());
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(request.getReverseOrderId());

View File

@ -6,6 +6,7 @@ import com.heyu.api.data.dao.vv.VvPackageDao;
import com.heyu.api.data.entity.vv.VvPackageEntity;
import com.heyu.api.data.enums.RoleEnums;
import com.heyu.api.data.service.vv.VvPackageService;
import com.heyu.api.data.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -29,7 +30,9 @@ public class PackageUpdateJob {
log.info("PackageUpdateJob start select " + new Date());
List<VvPackageEntity> vvPackageEntityList = vvPackageDao.selectVvPackageBySignReceiptStatus(ApiConstants.NOT_SIGN_RECEIPT);
for (VvPackageEntity vvPackageEntity : vvPackageEntityList) {
vvPackageService.selectVvKuaidiAndUpdateData(vvPackageEntity.getTrackNumber(), RoleEnums.job.getRole(), false);
if(StringUtils.isNotEmpty(vvPackageEntity.getTrackNumber())) {
vvPackageService.selectVvKuaidiAndUpdateData(vvPackageEntity.getTrackNumber(), RoleEnums.job.getRole(), false);
}
}
}
}