This commit is contained in:
quyixiao 2025-08-27 13:01:45 +08:00
parent dc3d0875e8
commit a011f75daa
5 changed files with 101 additions and 20 deletions

View File

@ -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 +
"}";
}
}

View File

@ -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<String, List<AriseUser>> map = list2GroupBy(list, AriseUser::getName);
System.out.println(JSON.toJSONString(map));
int age = sum(list, AriseUser::getAge);
System.out.println(age);
}

View File

@ -49,7 +49,7 @@ public class MysqlMain_update {
List<TablesBean> list = new ArrayList<TablesBean>();
String a = "vv_reverse_order";
String a = "vv_trade_order_line";
for (String s : a.split(",")) {
list.add(new TablesBean(s));
}

View File

@ -16,7 +16,12 @@ public class AppliyReverseRequest {
/***
* 申请退款金额
* 申请退款金额,如果卖家没有选择修改则不需要传
*/
private BigDecimal refundAmount;
/***
* 退款类型 1 仅退款 2 退款退货
*/
private Integer refundType;
}

View File

@ -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<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(appliyReverseRequest.getTradeOrderLineIds());
Map<Long, VvTradeOrderLineEntity> 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();
}
}