提交悠
This commit is contained in:
parent
6b8dee7ca1
commit
f8b0501988
@ -1,12 +1,12 @@
|
|||||||
package com.heyu.api.data.entity.vv;
|
package com.heyu.api.data.entity.vv;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import com.lz.mybatis.plugin.annotations.AS;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Date;import java.util.Date;
|
import java.util.Date;
|
||||||
/**
|
/**
|
||||||
*购物车
|
*购物车
|
||||||
* @author quyixiao
|
* @author quyixiao
|
||||||
@ -84,6 +84,8 @@ private static final long serialVersionUID = 1L;
|
|||||||
public final static String delivered_user = CLASS_NAME + "delivered_user"; // delivered的用户
|
public final static String delivered_user = CLASS_NAME + "delivered_user"; // delivered的用户
|
||||||
public final static String shipping_user = CLASS_NAME + "shipping_user"; // shipping的用户
|
public final static String shipping_user = CLASS_NAME + "shipping_user"; // shipping的用户
|
||||||
public final static String unpack_user = CLASS_NAME + "unpack_user"; // unpack的用户
|
public final static String unpack_user = CLASS_NAME + "unpack_user"; // unpack的用户
|
||||||
|
public final static String gmt_cancel = CLASS_NAME + "gmt_cancel"; // 订单取消时间
|
||||||
|
public final static String cancel_user = CLASS_NAME + "cancel_user"; // 订单取消用户
|
||||||
//
|
//
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
@ -211,6 +213,10 @@ private static final long serialVersionUID = 1L;
|
|||||||
private String shippingUser;
|
private String shippingUser;
|
||||||
//unpack的用户
|
//unpack的用户
|
||||||
private String unpackUser;
|
private String unpackUser;
|
||||||
|
//订单取消时间
|
||||||
|
private Date gmtCancel;
|
||||||
|
//订单取消用户
|
||||||
|
private String cancelUser;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
@ -1156,6 +1162,36 @@ private static final long serialVersionUID = 1L;
|
|||||||
this.unpackUser = unpackUser;
|
this.unpackUser = unpackUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单取消时间
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Date getGmtCancel() {
|
||||||
|
return gmtCancel;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 订单取消时间
|
||||||
|
* @param gmtCancel
|
||||||
|
*/
|
||||||
|
public void setGmtCancel(Date gmtCancel) {
|
||||||
|
this.gmtCancel = gmtCancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单取消用户
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getCancelUser() {
|
||||||
|
return cancelUser;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 订单取消用户
|
||||||
|
* @param cancelUser
|
||||||
|
*/
|
||||||
|
public void setCancelUser(String cancelUser) {
|
||||||
|
this.cancelUser = cancelUser;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "VvTradeOrderLineEntity{" +
|
return "VvTradeOrderLineEntity{" +
|
||||||
@ -1222,6 +1258,8 @@ private static final long serialVersionUID = 1L;
|
|||||||
",deliveredUser=" + deliveredUser +
|
",deliveredUser=" + deliveredUser +
|
||||||
",shippingUser=" + shippingUser +
|
",shippingUser=" + shippingUser +
|
||||||
",unpackUser=" + unpackUser +
|
",unpackUser=" + unpackUser +
|
||||||
|
",gmtCancel=" + gmtCancel +
|
||||||
|
",cancelUser=" + cancelUser +
|
||||||
"}";
|
"}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
package com.heyu.api.alibaba.request.mm.enums;
|
||||||
|
|
||||||
|
public enum RefundTypeEnums {
|
||||||
|
|
||||||
|
only_refund(1,"仅退款"),
|
||||||
|
return_refund(2,"退货退款"),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Integer code;
|
||||||
|
private String desc;
|
||||||
|
RefundTypeEnums(Integer code, String desc) {
|
||||||
|
this.code = code;
|
||||||
|
this.desc = desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(Integer code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDesc() {
|
||||||
|
return desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDesc(String desc) {
|
||||||
|
this.desc = desc;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package com.heyu.api.alibaba.request.mm.order;
|
||||||
|
|
||||||
|
|
||||||
|
import com.heyu.api.alibaba.request.mm.AdminBaseDTO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class VvCancelDTO extends AdminBaseDTO {
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 订单取消
|
||||||
|
*/
|
||||||
|
private Long tradeOrderId;
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 订单取消原因
|
||||||
|
*/
|
||||||
|
private String cancelReason;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -4,15 +4,12 @@ package com.heyu.api.alibaba.request.mm.order;
|
|||||||
import com.heyu.api.alibaba.request.mm.AdminBaseDTO;
|
import com.heyu.api.alibaba.request.mm.AdminBaseDTO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class VvDeliveredDTO extends AdminBaseDTO {
|
public class VvDeliveredDTO extends AdminBaseDTO {
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 子订单号
|
* 子订单号
|
||||||
*/
|
*/
|
||||||
private List<Long> tradeOrderLineIds;
|
private String trackNumber;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -10,17 +10,26 @@ import java.util.List;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class AppliyReverseRequest extends AppBaseRequest {
|
public class AppliyReverseRequest extends AppBaseRequest {
|
||||||
|
/**
|
||||||
|
* 后台登录的用户名
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 物流单号
|
* 物流单号
|
||||||
*/
|
*/
|
||||||
private String trackNumber;
|
private String trackNumber;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 申请退款金额,如果卖家没有选择修改,则不需要传
|
* 申请退款金额,如果卖家没有选择修改,则不需要传
|
||||||
*/
|
*/
|
||||||
private BigDecimal refundAmount;
|
private BigDecimal refundAmount;
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 退款类型 1 仅退款, 2 退款退货
|
* 退款类型 1 仅退款, 2 退款退货
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -0,0 +1,16 @@
|
|||||||
|
package com.heyu.api.service;
|
||||||
|
|
||||||
|
import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseRequest;
|
||||||
|
import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity;
|
||||||
|
import com.heyu.api.data.utils.R;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface ReverseOrderService {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
R createReverseOrder(List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList, AppliyReverseRequest appliyReverseRequest) ;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,126 @@
|
|||||||
|
package com.heyu.api.service.impl;
|
||||||
|
|
||||||
|
|
||||||
|
import com.heyu.api.alibaba.request.mm.enums.ReverseStatusEnums;
|
||||||
|
import com.heyu.api.alibaba.request.mm.enums.ReverseUploadSceneEnums;
|
||||||
|
import com.heyu.api.alibaba.request.mm.order.ResourceDTO;
|
||||||
|
import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseRequest;
|
||||||
|
import com.heyu.api.data.dao.vv.*;
|
||||||
|
import com.heyu.api.data.entity.vv.*;
|
||||||
|
import com.heyu.api.data.utils.BigDecimalUtil;
|
||||||
|
import com.heyu.api.data.utils.R;
|
||||||
|
import com.heyu.api.data.utils.SanUtils;
|
||||||
|
import com.heyu.api.service.ReverseOrderService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
public class ReverseOrderServiceImpl implements ReverseOrderService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VvTradeOrderDao vvTradeOrderDao;
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VvReverseOrderLineDao vvReverseOrderLineDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VvReverseOrderDao vvReverseOrderDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VvTradeOrderLineDao vvTradeOrderLineDao;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private VvReverseOrderProveDao vvReverseOrderProveDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public R createReverseOrder(List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList, AppliyReverseRequest appliyReverseRequest) {
|
||||||
|
List<Long> tradeOrderLineIds = SanUtils.list2list(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
|
||||||
|
Map<Long, VvTradeOrderLineEntity> vvTradeOrderLineEntityMap = SanUtils.list2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
|
||||||
|
|
||||||
|
Long tradeOrderId = SanUtils.findAnyNotNull(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTradeOrderId);
|
||||||
|
|
||||||
|
VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(tradeOrderId);
|
||||||
|
VvReverseOrderEntity vvReverseOrderEntity = new VvReverseOrderEntity();
|
||||||
|
vvReverseOrderEntity.setTradeOrderId(vvTradeOrderEntity.getId());
|
||||||
|
vvReverseOrderEntity.setStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus());
|
||||||
|
|
||||||
|
BigDecimal realRefundAmount = appliyReverseRequest.getRefundAmount() == null
|
||||||
|
? SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice)
|
||||||
|
: appliyReverseRequest.getRefundAmount();
|
||||||
|
// 设置退款金额
|
||||||
|
vvReverseOrderEntity.setRefundAmount(realRefundAmount);
|
||||||
|
BigDecimal originRefundAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice); // 本来应该退款金额
|
||||||
|
if (realRefundAmount.compareTo(originRefundAmount) > 0) {
|
||||||
|
return R.error("退款金额不能超过商品总额度");
|
||||||
|
}
|
||||||
|
|
||||||
|
vvReverseOrderEntity.setRefundTradeOrderLineCount(tradeOrderLineIds.size());
|
||||||
|
vvReverseOrderEntity.setRefundType(appliyReverseRequest.getRefundType());
|
||||||
|
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
|
||||||
|
vvReverseOrderEntity.setCreateTimestamp(System.currentTimeMillis());
|
||||||
|
vvReverseOrderEntity.setModifyTimestamp(System.currentTimeMillis());
|
||||||
|
vvReverseOrderEntity.setRefundCount(tradeOrderLineIds.size());
|
||||||
|
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
|
||||||
|
vvReverseOrderEntity.setRefundReason(appliyReverseRequest.getRefundReason());
|
||||||
|
vvReverseOrderDao.insertOrUpdateVvReverseOrder(vvReverseOrderEntity);
|
||||||
|
|
||||||
|
BigDecimal preSum = BigDecimal.ZERO;
|
||||||
|
for (int i = 0; i < tradeOrderLineIds.size(); i++) {
|
||||||
|
Long tradeOrderLineId = tradeOrderLineIds.get(i);
|
||||||
|
VvTradeOrderLineEntity vvTradeOrderLineEntity = vvTradeOrderLineEntityMap.get(tradeOrderLineId);
|
||||||
|
VvReverseOrderLineEntity vvReverseOrderLineEntity = new VvReverseOrderLineEntity();
|
||||||
|
vvReverseOrderLineEntity.setReverseOrderId(vvReverseOrderEntity.getId());
|
||||||
|
vvReverseOrderLineEntity.setTradeOrderId(vvTradeOrderEntity.getId());
|
||||||
|
vvReverseOrderLineEntity.setTradeOrderLineId(tradeOrderLineId);
|
||||||
|
if (appliyReverseRequest.getRefundAmount() == null) {
|
||||||
|
vvReverseOrderLineEntity.setRefundAmount(vvTradeOrderLineEntity.getPromotionPrice());
|
||||||
|
} else {
|
||||||
|
if (i == tradeOrderLineIds.size() - 1) {
|
||||||
|
BigDecimal lastRefundAmount = BigDecimalUtil.subtract(realRefundAmount, preSum);
|
||||||
|
vvReverseOrderLineEntity.setRefundAmount(lastRefundAmount);
|
||||||
|
} else {
|
||||||
|
BigDecimal allPrice = BigDecimalUtil.multiply(vvTradeOrderLineEntity.getPromotionPrice(), realRefundAmount);
|
||||||
|
BigDecimal subLineRefundAmount = BigDecimalUtil.divide(allPrice, originRefundAmount);
|
||||||
|
preSum = preSum.add(subLineRefundAmount);
|
||||||
|
vvReverseOrderLineEntity.setRefundAmount(subLineRefundAmount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vvReverseOrderLineEntity.setSellerId(vvTradeOrderLineEntity.getSellerId());
|
||||||
|
vvReverseOrderLineEntity.setSellerName(vvTradeOrderLineEntity.getSellerName());
|
||||||
|
vvReverseOrderLineEntity.setProductId(vvTradeOrderLineEntity.getProductId());
|
||||||
|
vvReverseOrderLineEntity.setProductName(vvTradeOrderLineEntity.getProductName());
|
||||||
|
vvReverseOrderLineEntity.setSkuImageUrl(vvTradeOrderLineEntity.getSkuImageUrl());
|
||||||
|
// 保存逆向子单
|
||||||
|
vvReverseOrderLineDao.insertVvReverseOrderLine(vvReverseOrderLineEntity);
|
||||||
|
|
||||||
|
// 设置退款相关的东西
|
||||||
|
vvTradeOrderLineEntity.setRefundCount(1);
|
||||||
|
vvTradeOrderLineEntity.setRefundAmount(vvReverseOrderLineEntity.getRefundAmount());
|
||||||
|
// 更新子单的逆向状态
|
||||||
|
vvTradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus());
|
||||||
|
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CollectionUtils.isNotEmpty(appliyReverseRequest.getResourceDTOList())) {
|
||||||
|
for (ResourceDTO resourceDTO : appliyReverseRequest.getResourceDTOList()) {
|
||||||
|
VvReverseOrderProveEntity vvReverseOrderProveEntity = new VvReverseOrderProveEntity();
|
||||||
|
vvReverseOrderProveEntity.setReverseOrderId(vvReverseOrderEntity.getId());
|
||||||
|
vvReverseOrderProveEntity.setResourceUrl(resourceDTO.getResourceUrl());
|
||||||
|
vvReverseOrderProveEntity.setType(resourceDTO.getType());
|
||||||
|
vvReverseOrderProveEntity.setScene(ReverseUploadSceneEnums.upload_reverse_prove.getCode());
|
||||||
|
vvReverseOrderProveDao.insertOrUpdateVvReverseOrderProve(vvReverseOrderProveEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return R.ok().setData(vvReverseOrderEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -5,10 +5,12 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.heyu.api.alibaba.request.mm.VvUnPackDTO;
|
import com.heyu.api.alibaba.request.mm.VvUnPackDTO;
|
||||||
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
|
import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums;
|
||||||
|
import com.heyu.api.alibaba.request.mm.enums.RefundTypeEnums;
|
||||||
import com.heyu.api.alibaba.request.mm.enums.ShippingTypeEnums;
|
import com.heyu.api.alibaba.request.mm.enums.ShippingTypeEnums;
|
||||||
import com.heyu.api.alibaba.request.mm.order.*;
|
import com.heyu.api.alibaba.request.mm.order.*;
|
||||||
import com.heyu.api.alibaba.request.mm.order.resp.VVOrderDetailResp;
|
import com.heyu.api.alibaba.request.mm.order.resp.VVOrderDetailResp;
|
||||||
import com.heyu.api.alibaba.request.mm.order.resp.VVOrderListResp;
|
import com.heyu.api.alibaba.request.mm.order.resp.VVOrderListResp;
|
||||||
|
import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseRequest;
|
||||||
import com.heyu.api.data.dao.vv.*;
|
import com.heyu.api.data.dao.vv.*;
|
||||||
import com.heyu.api.data.dto.PackageDelivedDelayDTO;
|
import com.heyu.api.data.dto.PackageDelivedDelayDTO;
|
||||||
import com.heyu.api.data.entity.vv.*;
|
import com.heyu.api.data.entity.vv.*;
|
||||||
@ -17,6 +19,7 @@ import com.heyu.api.data.utils.BigDecimalUtil;
|
|||||||
import com.heyu.api.data.utils.DateUtils;
|
import com.heyu.api.data.utils.DateUtils;
|
||||||
import com.heyu.api.data.utils.R;
|
import com.heyu.api.data.utils.R;
|
||||||
import com.heyu.api.data.utils.SanUtils;
|
import com.heyu.api.data.utils.SanUtils;
|
||||||
|
import com.heyu.api.service.ReverseOrderService;
|
||||||
import com.heyu.api.service.VvTradeOrderConvertService;
|
import com.heyu.api.service.VvTradeOrderConvertService;
|
||||||
import com.heyu.api.utils.ISelect;
|
import com.heyu.api.utils.ISelect;
|
||||||
import com.heyu.api.utils.PPageUtils;
|
import com.heyu.api.utils.PPageUtils;
|
||||||
@ -83,6 +86,9 @@ public class AdminOrderController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private RabbitTemplate rabbitTemplate;
|
private RabbitTemplate rabbitTemplate;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ReverseOrderService reverseOrderService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
@ -221,6 +227,7 @@ public class AdminOrderController {
|
|||||||
|
|
||||||
/***
|
/***
|
||||||
* 取消打包
|
* 取消打包
|
||||||
|
* http://localhost:8888/mm/order/unpack
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/unpack")
|
@RequestMapping("/unpack")
|
||||||
public R unpack(@RequestBody VvUnPackDTO vvOrderRequest) {
|
public R unpack(@RequestBody VvUnPackDTO vvOrderRequest) {
|
||||||
@ -237,6 +244,7 @@ public class AdminOrderController {
|
|||||||
|
|
||||||
/***
|
/***
|
||||||
* 已签收
|
* 已签收
|
||||||
|
* http://localhost:8888/mm/order/shipped
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/shipped")
|
@RequestMapping("/shipped")
|
||||||
public R shipped(@RequestBody VvShippedDTO vvDeliveredDTO) {
|
public R shipped(@RequestBody VvShippedDTO vvDeliveredDTO) {
|
||||||
@ -252,15 +260,13 @@ public class AdminOrderController {
|
|||||||
tradeOrderLineEntity.setUnpackUser(vvDeliveredDTO.getUserName());
|
tradeOrderLineEntity.setUnpackUser(vvDeliveredDTO.getUserName());
|
||||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
|
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
|
||||||
}
|
}
|
||||||
|
VvPackageEntity vvPackageEntity = vvPackageDao.selectVvPackageByTrackNumber(vvDeliveredDTO.getTrackNumber());
|
||||||
VvPackageEntity vvPackageEntity = vvPackageDao.selectVvPackageByTrackNumber(vvDeliveredDTO.getTrackNumber());
|
|
||||||
|
|
||||||
Date time = new Date();
|
Date time = new Date();
|
||||||
Date timeAfter15 = DateUtils.addDays(time, 15);
|
Date timeAfter15 = DateUtils.addDays(time, 15);
|
||||||
// 设置签收时间
|
// 设置签收时间
|
||||||
vvPackageEntity.setGmtSignReceipt(time);
|
vvPackageEntity.setGmtSignReceipt(time);
|
||||||
PackageDelivedDelayDTO dto = new PackageDelivedDelayDTO();
|
PackageDelivedDelayDTO dto = new PackageDelivedDelayDTO();
|
||||||
dto.setPackageId(vvPackageEntity.getId() );
|
dto.setPackageId(vvPackageEntity.getId());
|
||||||
dto.setRole(vvDeliveredDTO.getUserName());
|
dto.setRole(vvDeliveredDTO.getUserName());
|
||||||
dto.setSendTime(DateUtils.formatDate(new Date(), com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
dto.setSendTime(DateUtils.formatDate(new Date(), com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
||||||
dto.setDelayTime(DateUtils.formatDate(timeAfter15, com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
dto.setDelayTime(DateUtils.formatDate(timeAfter15, com.heyu.api.data.utils.DateUtils.YYYY_MM_DD_HH_MM_SS));
|
||||||
@ -269,7 +275,7 @@ public class AdminOrderController {
|
|||||||
|
|
||||||
int second = DateUtils.betweenSecond(time, timeAfter15);
|
int second = DateUtils.betweenSecond(time, timeAfter15);
|
||||||
|
|
||||||
log.info("AdminOrderController delay send :{}",JSON.toJSONString(dto));
|
log.info("AdminOrderController delay send :{}", JSON.toJSONString(dto));
|
||||||
// 通过广播模式发布延时消息 延时30分钟 持久化消息 消费后销毁 这里无需指定路由,会广播至每个绑定此交换机的队列
|
// 通过广播模式发布延时消息 延时30分钟 持久化消息 消费后销毁 这里无需指定路由,会广播至每个绑定此交换机的队列
|
||||||
|
|
||||||
rabbitTemplate.convertAndSend(delayExchangeName, "", JSON.toJSONString(dto), message -> {
|
rabbitTemplate.convertAndSend(delayExchangeName, "", JSON.toJSONString(dto), message -> {
|
||||||
@ -286,9 +292,9 @@ public class AdminOrderController {
|
|||||||
*/
|
*/
|
||||||
@RequestMapping("/delivered")
|
@RequestMapping("/delivered")
|
||||||
public R delivered(@RequestBody VvDeliveredDTO vvDeliveredDTO) {
|
public R delivered(@RequestBody VvDeliveredDTO vvDeliveredDTO) {
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(vvDeliveredDTO.getTradeOrderLineIds());
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(vvDeliveredDTO.getTrackNumber());
|
||||||
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||||
if (!OrderStatusEnums.shipping.getStatus().equals(tradeOrderLineEntity.getStatus())) {
|
if (!OrderStatusEnums.shipped.getStatus().equals(tradeOrderLineEntity.getStatus())) {
|
||||||
return R.error("订单状态不对");
|
return R.error("订单状态不对");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -301,6 +307,32 @@ public class AdminOrderController {
|
|||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* 订单取消
|
||||||
|
*/
|
||||||
|
@RequestMapping("/cancel")
|
||||||
|
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())) {
|
||||||
|
return R.error("订单状态不是wait_shipping,不能取消订单");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||||
|
vvTradeOrderLineEntity.setGmtCancel(new Date());
|
||||||
|
vvTradeOrderLineEntity.setCancelUser(vvCancelDTO.getUserName());
|
||||||
|
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||||
|
}
|
||||||
|
|
||||||
|
AppliyReverseRequest appliyReverseRequest = new AppliyReverseRequest();
|
||||||
|
appliyReverseRequest.setRefundType(RefundTypeEnums.only_refund.getCode());
|
||||||
|
appliyReverseRequest.setRefundReason(vvCancelDTO.getCancelReason());
|
||||||
|
|
||||||
|
return reverseOrderService.createReverseOrder(vvTradeOrderLineEntityList, appliyReverseRequest);
|
||||||
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* 上传结算证据
|
* 上传结算证据
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -12,7 +12,6 @@ import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseRequest;
|
|||||||
import com.heyu.api.common.annotation.Describe;
|
import com.heyu.api.common.annotation.Describe;
|
||||||
import com.heyu.api.data.dao.vv.*;
|
import com.heyu.api.data.dao.vv.*;
|
||||||
import com.heyu.api.data.entity.vv.*;
|
import com.heyu.api.data.entity.vv.*;
|
||||||
import com.heyu.api.data.utils.BigDecimalUtil;
|
|
||||||
import com.heyu.api.data.utils.R;
|
import com.heyu.api.data.utils.R;
|
||||||
import com.heyu.api.data.utils.SanUtils;
|
import com.heyu.api.data.utils.SanUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -26,7 +25,6 @@ import java.math.BigDecimal;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@ -63,89 +61,7 @@ public class AppReverseController {
|
|||||||
@RequestMapping("/add")
|
@RequestMapping("/add")
|
||||||
public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) {
|
public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) {
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(appliyReverseRequest.getTrackNumber());
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(appliyReverseRequest.getTrackNumber());
|
||||||
List<Long> tradeOrderLineIds = SanUtils.list2list(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
|
|
||||||
|
|
||||||
Map<Long, VvTradeOrderLineEntity> vvTradeOrderLineEntityMap = SanUtils.list2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
|
|
||||||
|
|
||||||
Long tradeOrderId = SanUtils.findAnyNotNull(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTradeOrderId);
|
|
||||||
|
|
||||||
VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(tradeOrderId);
|
|
||||||
|
|
||||||
VvReverseOrderEntity vvReverseOrderEntity = new VvReverseOrderEntity();
|
|
||||||
|
|
||||||
vvReverseOrderEntity.setTradeOrderId(vvTradeOrderEntity.getId());
|
|
||||||
|
|
||||||
vvReverseOrderEntity.setStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus());
|
|
||||||
|
|
||||||
BigDecimal realRefundAmount = appliyReverseRequest.getRefundAmount() == null
|
|
||||||
? SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice)
|
|
||||||
: appliyReverseRequest.getRefundAmount();
|
|
||||||
// 设置退款金额
|
|
||||||
vvReverseOrderEntity.setRefundAmount(realRefundAmount);
|
|
||||||
|
|
||||||
|
|
||||||
BigDecimal originRefundAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice); // 本来应该退款金额
|
|
||||||
if (realRefundAmount.compareTo(originRefundAmount) > 0) {
|
|
||||||
return R.error("退款金额不能超过商品总额度");
|
|
||||||
}
|
|
||||||
|
|
||||||
vvReverseOrderEntity.setRefundTradeOrderLineCount(tradeOrderLineIds.size());
|
|
||||||
vvReverseOrderEntity.setRefundType(appliyReverseRequest.getRefundType());
|
|
||||||
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
|
|
||||||
vvReverseOrderEntity.setCreateTimestamp(System.currentTimeMillis());
|
|
||||||
vvReverseOrderEntity.setModifyTimestamp(System.currentTimeMillis());
|
|
||||||
vvReverseOrderEntity.setRefundCount(tradeOrderLineIds.size());
|
|
||||||
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
|
|
||||||
vvReverseOrderEntity.setRefundReason(appliyReverseRequest.getRefundReason());
|
|
||||||
vvReverseOrderDao.insertOrUpdateVvReverseOrder(vvReverseOrderEntity);
|
|
||||||
BigDecimal preSum = BigDecimal.ZERO;
|
|
||||||
for (int i = 0; i < tradeOrderLineIds.size(); i++) {
|
|
||||||
Long tradeOrderLineId = tradeOrderLineIds.get(i);
|
|
||||||
VvTradeOrderLineEntity vvTradeOrderLineEntity = vvTradeOrderLineEntityMap.get(tradeOrderLineId);
|
|
||||||
VvReverseOrderLineEntity vvReverseOrderLineEntity = new VvReverseOrderLineEntity();
|
|
||||||
vvReverseOrderLineEntity.setReverseOrderId(vvReverseOrderEntity.getId());
|
|
||||||
vvReverseOrderLineEntity.setTradeOrderId(vvTradeOrderEntity.getId());
|
|
||||||
vvReverseOrderLineEntity.setTradeOrderLineId(tradeOrderLineId);
|
|
||||||
if (appliyReverseRequest.getRefundAmount() == null) {
|
|
||||||
vvReverseOrderLineEntity.setRefundAmount(vvTradeOrderLineEntity.getPromotionPrice());
|
|
||||||
} else {
|
|
||||||
if (i == tradeOrderLineIds.size() - 1) {
|
|
||||||
BigDecimal lastRefundAmount = BigDecimalUtil.subtract(realRefundAmount, preSum);
|
|
||||||
vvReverseOrderLineEntity.setRefundAmount(lastRefundAmount);
|
|
||||||
} else {
|
|
||||||
BigDecimal allPrice = BigDecimalUtil.multiply(vvTradeOrderLineEntity.getPromotionPrice(), realRefundAmount);
|
|
||||||
BigDecimal subLineRefundAmount = BigDecimalUtil.divide(allPrice, originRefundAmount);
|
|
||||||
preSum = preSum.add(subLineRefundAmount);
|
|
||||||
vvReverseOrderLineEntity.setRefundAmount(subLineRefundAmount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
vvReverseOrderLineEntity.setSellerId(vvTradeOrderLineEntity.getSellerId());
|
|
||||||
vvReverseOrderLineEntity.setSellerName(vvTradeOrderLineEntity.getSellerName());
|
|
||||||
vvReverseOrderLineEntity.setProductId(vvTradeOrderLineEntity.getProductId());
|
|
||||||
vvReverseOrderLineEntity.setProductName(vvTradeOrderLineEntity.getProductName());
|
|
||||||
vvReverseOrderLineEntity.setSkuImageUrl(vvTradeOrderLineEntity.getSkuImageUrl());
|
|
||||||
// 保存逆向子单
|
|
||||||
vvReverseOrderLineDao.insertVvReverseOrderLine(vvReverseOrderLineEntity);
|
|
||||||
|
|
||||||
// 设置退款相关的东西
|
|
||||||
vvTradeOrderLineEntity.setRefundCount(1);
|
|
||||||
vvTradeOrderLineEntity.setRefundAmount(vvReverseOrderLineEntity.getRefundAmount());
|
|
||||||
// 更新子单的逆向状态
|
|
||||||
vvTradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus());
|
|
||||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CollectionUtils.isNotEmpty(appliyReverseRequest.getResourceDTOList())) {
|
|
||||||
for (ResourceDTO resourceDTO : appliyReverseRequest.getResourceDTOList()) {
|
|
||||||
VvReverseOrderProveEntity vvReverseOrderProveEntity = new VvReverseOrderProveEntity();
|
|
||||||
vvReverseOrderProveEntity.setReverseOrderId(vvReverseOrderEntity.getId());
|
|
||||||
vvReverseOrderProveEntity.setResourceUrl(resourceDTO.getResourceUrl());
|
|
||||||
vvReverseOrderProveEntity.setType(resourceDTO.getType());
|
|
||||||
vvReverseOrderProveEntity.setScene(ReverseUploadSceneEnums.upload_reverse_prove.getCode());
|
|
||||||
|
|
||||||
vvReverseOrderProveDao.insertOrUpdateVvReverseOrderProve(vvReverseOrderProveEntity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return R.ok("申请退款成功");
|
return R.ok("申请退款成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,6 @@ public class WeiXinPayCloseHandler extends BaseDelayedHandler {
|
|||||||
|
|
||||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(weiXinPayDelayDTO.getTradeOrderId());
|
List<VvTradeOrderLineEntity> vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(weiXinPayDelayDTO.getTradeOrderId());
|
||||||
|
|
||||||
|
|
||||||
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
|
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
|
||||||
if(OrderStatusEnums.wait_pay.getStatus().equals(vvTradeOrderLineEntity.getStatus())){
|
if(OrderStatusEnums.wait_pay.getStatus().equals(vvTradeOrderLineEntity.getStatus())){
|
||||||
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
|
vvTradeOrderLineEntity.setStatus(OrderStatusEnums.close.getStatus());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user