提交修改
This commit is contained in:
parent
12fa45989f
commit
a9a938fc51
@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date;
|
||||
/**
|
||||
*逆向表
|
||||
* @author quyixiao
|
||||
* @since 2025-08-27
|
||||
* @since 2025-10-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ -43,6 +43,7 @@ private static final long serialVersionUID = 1L;
|
||||
public final static String create_timestamp = CLASS_NAME + "create_timestamp"; // 创建时间撮
|
||||
public final static String modify_timestamp = CLASS_NAME + "modify_timestamp"; // 修改时间撮
|
||||
public final static String refund_count = CLASS_NAME + "refund_count"; // 退款子单数量
|
||||
public final static String refund_reason = CLASS_NAME + "refund_reason"; // 退款原因
|
||||
//
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
@ -88,6 +89,8 @@ private static final long serialVersionUID = 1L;
|
||||
private Long modifyTimestamp;
|
||||
//退款子单数量
|
||||
private Integer refundCount;
|
||||
//退款原因
|
||||
private String refundReason;
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
@ -418,6 +421,21 @@ private static final long serialVersionUID = 1L;
|
||||
this.refundCount = refundCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款原因
|
||||
* @return
|
||||
*/
|
||||
public String getRefundReason() {
|
||||
return refundReason;
|
||||
}
|
||||
/**
|
||||
* 退款原因
|
||||
* @param refundReason
|
||||
*/
|
||||
public void setRefundReason(String refundReason) {
|
||||
this.refundReason = refundReason;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VvReverseOrderEntity{" +
|
||||
@ -443,6 +461,7 @@ private static final long serialVersionUID = 1L;
|
||||
",createTimestamp=" + createTimestamp +
|
||||
",modifyTimestamp=" + modifyTimestamp +
|
||||
",refundCount=" + refundCount +
|
||||
",refundReason=" + refundReason +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
@ -1,15 +1,16 @@
|
||||
package com.heyu.api.data.entity.vv;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.lz.mybatis.plugin.annotations.AS;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;import java.util.Date;
|
||||
/**
|
||||
*退款证据表
|
||||
* @author quyixiao
|
||||
* @since 2025-08-26
|
||||
* @since 2025-10-16
|
||||
*/
|
||||
|
||||
@Data
|
||||
@ -27,6 +28,7 @@ private static final long serialVersionUID = 1L;
|
||||
public final static String reverse_order_id = CLASS_NAME + "reverse_order_id"; // 逆向订单id
|
||||
public final static String type_ = CLASS_NAME + "type"; // image 或 video
|
||||
public final static String resource_url = CLASS_NAME + "resource_url"; // 资源url
|
||||
public final static String scene_ = CLASS_NAME + "scene"; // 场景,upload_track_number ,上传物流单号, upload_reverse_prove 上传证据
|
||||
//
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
@ -42,6 +44,8 @@ private static final long serialVersionUID = 1L;
|
||||
private String type;
|
||||
//资源url
|
||||
private String resourceUrl;
|
||||
//场景,upload_track_number ,上传物流单号, upload_reverse_prove 上传证据
|
||||
private String scene;
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
@ -147,6 +151,21 @@ private static final long serialVersionUID = 1L;
|
||||
this.resourceUrl = resourceUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 场景,upload_track_number ,上传物流单号, upload_reverse_prove 上传证据
|
||||
* @return
|
||||
*/
|
||||
public String getScene() {
|
||||
return scene;
|
||||
}
|
||||
/**
|
||||
* 场景,upload_track_number ,上传物流单号, upload_reverse_prove 上传证据
|
||||
* @param scene
|
||||
*/
|
||||
public void setScene(String scene) {
|
||||
this.scene = scene;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VvReverseOrderProveEntity{" +
|
||||
@ -157,6 +176,7 @@ private static final long serialVersionUID = 1L;
|
||||
",reverseOrderId=" + reverseOrderId +
|
||||
",type=" + type +
|
||||
",resourceUrl=" + resourceUrl +
|
||||
",scene=" + scene +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
@ -49,7 +49,7 @@ public class MysqlMain_update {
|
||||
List<TablesBean> list = new ArrayList<TablesBean>();
|
||||
|
||||
|
||||
String a = "vv_trade_order_line";
|
||||
String a = "vv_reverse_order";
|
||||
for (String s : a.split(",")) {
|
||||
list.add(new TablesBean(s));
|
||||
}
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
package com.heyu.api.alibaba.request.mm.enums;
|
||||
|
||||
|
||||
public enum ReverseUploadSceneEnums {
|
||||
|
||||
//场景,upload_track_number ,上传物流单号, upload_reverse_prove 上传证据
|
||||
upload_track_number("upload_track_number","上传物流单号"),
|
||||
|
||||
upload_reverse_prove("upload_reverse_prove","上传退款原因证据");
|
||||
|
||||
private String code;
|
||||
|
||||
private String desc;
|
||||
|
||||
|
||||
ReverseUploadSceneEnums(String code, String desc) {
|
||||
|
||||
|
||||
this.code = code;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
|
||||
public void setDesc(String desc) {
|
||||
this.desc = desc;
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,7 @@ import lombok.Data;
|
||||
public class ResourceDTO {
|
||||
|
||||
/***
|
||||
* 类型
|
||||
* 类型 image 或 video
|
||||
*/
|
||||
private String type ;
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.heyu.api.alibaba.request.mm.reverse;
|
||||
|
||||
|
||||
import com.heyu.api.alibaba.request.mm.order.ResourceDTO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -10,10 +11,9 @@ import java.util.List;
|
||||
public class AppliyReverseRequest {
|
||||
|
||||
/***
|
||||
* 订单子单列表
|
||||
* 物流单号
|
||||
*/
|
||||
private List<Long> tradeOrderLineIds;
|
||||
|
||||
private String trackNumber;
|
||||
|
||||
/***
|
||||
* 申请退款金额,如果卖家没有选择修改,则不需要传
|
||||
@ -26,7 +26,15 @@ public class AppliyReverseRequest {
|
||||
private Integer refundType;
|
||||
|
||||
|
||||
/***
|
||||
* 退款原因
|
||||
*/
|
||||
private String refundReason;
|
||||
|
||||
|
||||
/***
|
||||
* 图片或视频
|
||||
*/
|
||||
private List<ResourceDTO> resourceDTOList;
|
||||
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/buyer")
|
||||
public class BuyerController {
|
||||
public class AdminBuyerController {
|
||||
|
||||
|
||||
@Autowired
|
||||
@ -26,7 +26,7 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/admin/category/property")
|
||||
public class CategoryPropertyController {
|
||||
public class AdminCategoryPropertyController {
|
||||
|
||||
@Autowired
|
||||
private VvCategoryPropertyDao vvCategoryPropertyDao;
|
||||
@ -25,7 +25,7 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/comment")
|
||||
public class CommentController {
|
||||
public class AdminCommentController {
|
||||
|
||||
|
||||
@Autowired
|
||||
@ -19,7 +19,7 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/front/manager")
|
||||
public class FrontManagerController {
|
||||
public class AdminFrontManagerController {
|
||||
|
||||
@Autowired
|
||||
private VvProductDao vvProductDao;
|
||||
@ -31,7 +31,7 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/order")
|
||||
public class OrderController {
|
||||
public class AdminOrderController {
|
||||
|
||||
|
||||
@Autowired
|
||||
@ -282,7 +282,7 @@ public class OrderController {
|
||||
for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) {
|
||||
tradeOrderLineEntity.setSettleStatus(1);
|
||||
// 更新利润
|
||||
tradeOrderLineEntity.setProfitAmount(BigDecimalUtil.subtract(tradeOrderLineEntity.getSalePrice(), tradeOrderLineEntity.getOriginPrice()));
|
||||
tradeOrderLineEntity.setProfitAmount(BigDecimalUtil.subtract(tradeOrderLineEntity.getPromotionPrice(), tradeOrderLineEntity.getOriginPrice()));
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(tradeOrderLineEntity);
|
||||
|
||||
// 将子单和证据关联
|
||||
@ -29,7 +29,7 @@ import java.util.Map;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/product")
|
||||
public class ProductController {
|
||||
public class AdminProductController {
|
||||
|
||||
|
||||
@Autowired
|
||||
@ -17,7 +17,7 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/mm/shipping/cat")
|
||||
public class ShoppingCartController {
|
||||
public class AdminShoppingCartController {
|
||||
|
||||
|
||||
@Autowired
|
||||
@ -2,6 +2,7 @@ package com.heyu.api.controller.vv;
|
||||
|
||||
|
||||
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.AppliyReverseCloseRequest;
|
||||
import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseProveRequest;
|
||||
@ -44,15 +45,23 @@ public class AppReverseController {
|
||||
@Autowired
|
||||
private VvReverseOrderProveDao vvReverseOrderProveDao;
|
||||
|
||||
|
||||
/***
|
||||
* /app/reverse/add
|
||||
*
|
||||
* 逆向订单创建
|
||||
* @param appliyReverseRequest
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("/add")
|
||||
public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) {
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(appliyReverseRequest.getTradeOrderLineIds());
|
||||
|
||||
|
||||
List<VvTradeOrderLineEntity> VvTradeOrderLines = vvTradeOrderLineDao.selectVvTradeOrderLineByTrackNumber(appliyReverseRequest.getTrackNumber());
|
||||
|
||||
List<Long> tradeOrderLineIds = SanUtils.list2list(VvTradeOrderLines, VvTradeOrderLineEntity::getId);
|
||||
|
||||
|
||||
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
|
||||
|
||||
Map<Long, VvTradeOrderLineEntity> vvTradeOrderLineEntityMap = SanUtils.list2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
|
||||
|
||||
@ -67,37 +76,38 @@ public class AppReverseController {
|
||||
vvReverseOrderEntity.setStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus());
|
||||
|
||||
BigDecimal realRefundAmount = appliyReverseRequest.getRefundAmount() == null
|
||||
? SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice)
|
||||
? SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice)
|
||||
: appliyReverseRequest.getRefundAmount();
|
||||
// 设置退款金额
|
||||
vvReverseOrderEntity.setRefundAmount(realRefundAmount);
|
||||
|
||||
|
||||
BigDecimal originRefundAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice); // 本来应该退款金额
|
||||
vvReverseOrderEntity.setRefundTradeOrderLineCount(appliyReverseRequest.getTradeOrderLineIds().size());
|
||||
BigDecimal originRefundAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice); // 本来应该退款金额
|
||||
vvReverseOrderEntity.setRefundTradeOrderLineCount(tradeOrderLineIds.size());
|
||||
vvReverseOrderEntity.setRefundType(appliyReverseRequest.getRefundType());
|
||||
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
|
||||
vvReverseOrderEntity.setCreateTimestamp(System.currentTimeMillis());
|
||||
vvReverseOrderEntity.setModifyTimestamp(System.currentTimeMillis());
|
||||
vvReverseOrderEntity.setRefundCount(appliyReverseRequest.getTradeOrderLineIds().size());
|
||||
vvReverseOrderEntity.setRefundCount(tradeOrderLineIds.size());
|
||||
vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date());
|
||||
vvReverseOrderEntity.setRefundReason(appliyReverseRequest.getRefundReason());
|
||||
vvReverseOrderDao.insertOrUpdateVvReverseOrder(vvReverseOrderEntity);
|
||||
BigDecimal preSum = BigDecimal.ZERO;
|
||||
for (int i = 0; i < appliyReverseRequest.getTradeOrderLineIds().size(); i++) {
|
||||
Long tradeOrderLineId = appliyReverseRequest.getTradeOrderLineIds().get(i);
|
||||
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.getSalePrice());
|
||||
vvReverseOrderLineEntity.setRefundAmount(vvTradeOrderLineEntity.getPromotionPrice());
|
||||
} else {
|
||||
if (i == appliyReverseRequest.getTradeOrderLineIds().size() - 1) {
|
||||
if (i == tradeOrderLineIds.size() - 1) {
|
||||
BigDecimal lastRefundAmount = BigDecimalUtil.subtract(realRefundAmount, preSum);
|
||||
vvReverseOrderLineEntity.setRefundAmount(lastRefundAmount);
|
||||
} else {
|
||||
BigDecimal allPrice = BigDecimalUtil.multiply(vvTradeOrderLineEntity.getSalePrice(), realRefundAmount);
|
||||
BigDecimal allPrice = BigDecimalUtil.multiply(vvTradeOrderLineEntity.getPromotionPrice(), realRefundAmount);
|
||||
BigDecimal subLineRefundAmount = BigDecimalUtil.divide(allPrice, originRefundAmount);
|
||||
preSum = preSum.add(subLineRefundAmount);
|
||||
vvReverseOrderLineEntity.setRefundAmount(subLineRefundAmount);
|
||||
@ -118,12 +128,29 @@ public class AppReverseController {
|
||||
vvTradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus());
|
||||
vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity);
|
||||
}
|
||||
return R.ok();
|
||||
|
||||
|
||||
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("申请退款成功");
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping("/uploadProve")
|
||||
public R uploadProve(@RequestBody AppliyReverseProveRequest appliyReverseRequest) {
|
||||
/**
|
||||
* 退货退款 : /app/reverse/tracknumber
|
||||
*
|
||||
*/
|
||||
@RequestMapping("/upload/tracknumber")
|
||||
public R uploadTracknumber(@RequestBody AppliyReverseProveRequest appliyReverseRequest) {
|
||||
VvReverseOrderEntity vvReverseOrderEntity = vvReverseOrderDao.selectVvReverseOrderById(appliyReverseRequest.getReverseOrderId());
|
||||
if (!ReverseStatusEnums.seller_agree_return_wait_buyer_post.getStatus().equals(vvReverseOrderEntity.getStatus())) {
|
||||
return R.error("逆向订单状态不对");
|
||||
@ -141,6 +168,7 @@ public class AppReverseController {
|
||||
vvReverseOrderProveEntity.setReverseOrderId(vvReverseOrderEntity.getId());
|
||||
vvReverseOrderProveEntity.setResourceUrl(resourceDTO.getResourceUrl());
|
||||
vvReverseOrderProveEntity.setType(resourceDTO.getType());
|
||||
vvReverseOrderProveEntity.setScene(ReverseUploadSceneEnums.upload_track_number.getCode());
|
||||
|
||||
vvReverseOrderProveDao.insertOrUpdateVvReverseOrderProve(vvReverseOrderProveEntity);
|
||||
}
|
||||
@ -176,6 +204,4 @@ public class AppReverseController {
|
||||
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user