From a011f75daabafcef4e10e568d4f0c7c6d581273c Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Wed, 27 Aug 2025 13:01:45 +0800 Subject: [PATCH] ruqwhnt --- .../entity/vv/VvTradeOrderLineEntity.java | 37 +++++++--- .../com/heyu/api/data/utils/SanUtils.java | 5 +- .../java/com/test/xxx/MysqlMain_update.java | 2 +- .../mm/reverse/AppliyReverseRequest.java | 7 +- .../controller/vv/AppReverseController.java | 70 +++++++++++++++++-- 5 files changed, 101 insertions(+), 20 deletions(-) diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderLineEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderLineEntity.java index 2eac794..1f2550e 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderLineEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvTradeOrderLineEntity.java @@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date; /** *购物车 * @author quyixiao -* @since 2025-08-26 +* @since 2025-08-27 */ @Data @@ -27,7 +27,7 @@ private static final long serialVersionUID = 1L; public final static String modify_time = CLASS_NAME + "modify_time"; // 修改时间 public final static String sale_price = CLASS_NAME + "sale_price"; // 单价 public final static String num_ = CLASS_NAME + "num"; // 数量 - public final static String status_ = CLASS_NAME + "status"; // wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, all_refund:全部退款,part_refund,部分退款 + public final static String status_ = CLASS_NAME + "status"; // wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, cancel 订单取消 public final static String trade_order_id = CLASS_NAME + "trade_order_id"; // 订单号 public final static String refund_amount = CLASS_NAME + "refund_amount"; // 退款金额 public final static String track_number = CLASS_NAME + "track_number"; // 包裹追踪号 @@ -44,7 +44,7 @@ private static final long serialVersionUID = 1L; public final static String gmt_to_pack = CLASS_NAME + "gmt_to_pack"; // 打包时间 public final static String gmt_delivered = CLASS_NAME + "gmt_delivered"; // 妥投时间 public final static String delivered_type = CLASS_NAME + "delivered_type"; // 1 买家手动确认收货, 2 系统自动确认收货 - public final static String settle_status = CLASS_NAME + "settle_status"; // 0 未结算 + public final static String settle_status = CLASS_NAME + "settle_status"; // 0 未结算,1 已经结算 public final static String gmt_settle = CLASS_NAME + "gmt_settle"; // 结算时间 public final static String seller_id = CLASS_NAME + "seller_id"; // 卖家id public final static String reverse_status = CLASS_NAME + "reverse_status"; // 逆向状态。 @@ -59,6 +59,7 @@ private static final long serialVersionUID = 1L; public final static String province_ = CLASS_NAME + "province"; // 省 public final static String city_ = CLASS_NAME + "city"; // 市 public final static String district_ = CLASS_NAME + "district"; // 区 + public final static String seller_name = CLASS_NAME + "seller_name"; // 卖家名称 // @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -72,7 +73,7 @@ private static final long serialVersionUID = 1L; private BigDecimal salePrice; //数量 private Integer num; - //wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, all_refund:全部退款,part_refund,部分退款 + //wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, cancel 订单取消 private String status; //订单号 private Long tradeOrderId; @@ -106,7 +107,7 @@ private static final long serialVersionUID = 1L; private Date gmtDelivered; //1 买家手动确认收货, 2 系统自动确认收货 private Integer deliveredType; - //0 未结算 + //0 未结算,1 已经结算 private Integer settleStatus; //结算时间 private Date gmtSettle; @@ -136,6 +137,8 @@ private static final long serialVersionUID = 1L; private String city; //区 private String district; + //卖家名称 + private String sellerName; /** * * @return @@ -227,14 +230,14 @@ private static final long serialVersionUID = 1L; } /** - * wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, all_refund:全部退款,part_refund,部分退款 + * wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, cancel 订单取消 * @return */ public String getStatus() { return status; } /** - * wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, all_refund:全部退款,part_refund,部分退款 + * wait_pay:待支付,待发货:wait_shipping, 已经发货: shipping , 已接收,delivered, cancel 订单取消 * @param status */ public void setStatus(String status) { @@ -482,14 +485,14 @@ private static final long serialVersionUID = 1L; } /** - * 0 未结算 + * 0 未结算,1 已经结算 * @return */ public Integer getSettleStatus() { return settleStatus; } /** - * 0 未结算 + * 0 未结算,1 已经结算 * @param settleStatus */ public void setSettleStatus(Integer settleStatus) { @@ -706,6 +709,21 @@ private static final long serialVersionUID = 1L; this.district = district; } + /** + * 卖家名称 + * @return + */ + public String getSellerName() { + return sellerName; + } + /** + * 卖家名称 + * @param sellerName + */ + public void setSellerName(String sellerName) { + this.sellerName = sellerName; + } + @Override public String toString() { return "VvTradeOrderLineEntity{" + @@ -747,6 +765,7 @@ private static final long serialVersionUID = 1L; ",province=" + province + ",city=" + city + ",district=" + district + + ",sellerName=" + sellerName + "}"; } } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java b/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java index 8d411af..1b616af 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java @@ -1,6 +1,5 @@ package com.heyu.api.data.utils; -import com.alibaba.fastjson.JSON; import com.heyu.api.common.LBiFunction0; import com.heyu.api.common.test.AriseUser; import lombok.extern.slf4j.Slf4j; @@ -320,8 +319,8 @@ public class SanUtils { list.add(ai2); list.add(ai3); - Map> map = list2GroupBy(list, AriseUser::getName); - System.out.println(JSON.toJSONString(map)); + int age = sum(list, AriseUser::getAge); + System.out.println(age); } diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java index 752dc1f..d28fb85 100644 --- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java +++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java @@ -49,7 +49,7 @@ public class MysqlMain_update { List list = new ArrayList(); - String a = "vv_reverse_order"; + String a = "vv_trade_order_line"; for (String s : a.split(",")) { list.add(new TablesBean(s)); } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/AppliyReverseRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/AppliyReverseRequest.java index c69ee87..c358751 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/AppliyReverseRequest.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/AppliyReverseRequest.java @@ -16,7 +16,12 @@ public class AppliyReverseRequest { /*** - * 申请退款金额 + * 申请退款金额,如果卖家没有选择修改,则不需要传 */ private BigDecimal refundAmount; + + /*** + * 退款类型 1 仅退款, 2 退款退货 + */ + private Integer refundType; } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java index 5cd99c1..ab5f017 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java @@ -3,22 +3,27 @@ package com.heyu.api.controller.vv; import com.heyu.api.alibaba.request.mm.enums.ReverseStatusEnums; import com.heyu.api.alibaba.request.mm.reverse.AppliyReverseRequest; -import com.heyu.api.data.utils.SanUtils; import com.heyu.api.data.dao.vv.VvReverseOrderDao; import com.heyu.api.data.dao.vv.VvReverseOrderLineDao; import com.heyu.api.data.dao.vv.VvTradeOrderDao; import com.heyu.api.data.dao.vv.VvTradeOrderLineDao; import com.heyu.api.data.entity.vv.VvReverseOrderEntity; +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; import com.heyu.api.data.entity.vv.VvTradeOrderEntity; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; +import com.heyu.api.data.utils.BigDecimalUtil; import com.heyu.api.data.utils.R; +import com.heyu.api.data.utils.SanUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; 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.Date; import java.util.List; +import java.util.Map; @Slf4j @RestController @@ -38,10 +43,20 @@ public class AppReverseController { @Autowired private VvTradeOrderDao vvTradeOrderDao; + + + /*** + * 逆向订单创建 + * @param appliyReverseRequest + * @return + */ @RequestMapping("/add") public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) { List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(appliyReverseRequest.getTradeOrderLineIds()); + + Map vvTradeOrderLineEntityMap = SanUtils.list2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); + Long tradeOrderId = SanUtils.findAnyNotNull(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTradeOrderId); VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(tradeOrderId); @@ -49,16 +64,59 @@ public class AppReverseController { VvReverseOrderEntity vvReverseOrderEntity = new VvReverseOrderEntity(); vvReverseOrderEntity.setTradeOrderId(vvTradeOrderEntity.getId()); + vvReverseOrderEntity.setStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus()); - // 设置退款金额 - vvReverseOrderEntity.setRefundAmount(appliyReverseRequest.getRefundAmount() == null + BigDecimal realRefundAmount = appliyReverseRequest.getRefundAmount() == null ? SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice) - : appliyReverseRequest.getRefundAmount()); + : appliyReverseRequest.getRefundAmount(); + // 设置退款金额 + vvReverseOrderEntity.setRefundAmount(realRefundAmount); + BigDecimal originRefundAmount = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice); // 本来应该退款金额 + + vvReverseOrderEntity.setRefundTradeOrderLineCount(appliyReverseRequest.getTradeOrderLineIds().size()); + vvReverseOrderEntity.setRefundType(appliyReverseRequest.getRefundType()); + vvReverseOrderEntity.setGmtBuyerApplyRefund(new Date()); + vvReverseOrderEntity.setCreateTimestamp(System.currentTimeMillis()); + vvReverseOrderEntity.setModifyTimestamp(System.currentTimeMillis()); + + vvReverseOrderDao.insertOrUpdateVvReverseOrder(vvReverseOrderEntity); + BigDecimal preSum = BigDecimal.ZERO; + for (int i = 0; i < appliyReverseRequest.getTradeOrderLineIds().size(); i++) { + Long tradeOrderLineId = appliyReverseRequest.getTradeOrderLineIds().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()); + } else { + if (i == appliyReverseRequest.getTradeOrderLineIds().size() - 1) { + BigDecimal lastRefundAmount = BigDecimalUtil.subtract(realRefundAmount, preSum); + vvReverseOrderLineEntity.setRefundAmount(lastRefundAmount); + } else { + BigDecimal allPrice = BigDecimalUtil.multiply(vvTradeOrderLineEntity.getSalePrice(), 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.setReverseStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus()); + vvTradeOrderLineDao.updateVvTradeOrderLineById(vvTradeOrderLineEntity); + } + return R.ok(); - - } }