From e1e8e9da6355ec5a0ae4793e5b6bb34c0ac54966 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Wed, 27 Aug 2025 09:35:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/data/dao/vv/VvReverseOrderDao.java | 18 +++ .../data/dao/vv/VvReverseOrderLineDao.java | 41 +++++ .../data/dao/vv/VvReverseOrderProveDao.java | 5 + .../data/entity/vv/VvReverseOrderEntity.java | 59 +++++++- .../entity/vv/VvReverseOrderLineEntity.java | 78 +++++++--- .../entity/vv/VvReverseOrderProveEntity.java | 5 +- .../vv/VvReverseOrderLineServiceImpl.java | 68 +++++++++ .../service/vv/VvReverseOrderLineService.java | 34 +++++ .../com/heyu/api/data/utils}/SanUtils.java | 143 +++++++++++++++++- .../mapper/vv/VvReverseOrderLineDao.xml | 6 + .../java/com/test/xxx/MysqlMain_insert.java | 2 +- .../java/com/test/xxx/MysqlMain_update.java | 2 +- .../request/mm/enums/ReverseStatusEnums.java | 2 +- .../mm/reverse/AppliyReverseRequest.java | 22 +++ .../mm/reverse/VvReverseListRequest.java | 38 +++++ .../request/mm/reverse/VvReverseOrderDTO.java | 30 ++++ .../controller/mm/AdminReverseController.java | 88 +++++++++++ .../api/controller/mm/OrderController.java | 2 +- .../api/controller/vv/AppOrderController.java | 9 +- .../controller/vv/AppReverseController.java | 64 ++++++++ 20 files changed, 674 insertions(+), 42 deletions(-) create mode 100644 api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderLineDao.java create mode 100644 api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvReverseOrderLineServiceImpl.java create mode 100644 api-mapper/src/main/java/com/heyu/api/data/service/vv/VvReverseOrderLineService.java rename {api-common/src/main/java/com/heyu/api/common => api-mapper/src/main/java/com/heyu/api/data/utils}/SanUtils.java (52%) create mode 100644 api-mapper/src/main/resources/mapper/vv/VvReverseOrderLineDao.xml create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/AppliyReverseRequest.java create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseListRequest.java create mode 100644 api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java index 72b4565..a13e7c2 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderDao.java @@ -7,10 +7,17 @@ package com.heyu.api.data.dao.vv; * @author quyixiao * @since 2025-08-26 */ +import com.baomidou.mybatisplus.core.metadata.IPage; import com.heyu.api.data.entity.vv.VvReverseOrderEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lz.mybatis.plugin.annotations.Column; +import com.lz.mybatis.plugin.annotations.IF; +import com.lz.mybatis.plugin.annotations.OrderBy; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; + @Mapper public interface VvReverseOrderDao extends BaseMapper { @@ -33,4 +40,15 @@ public interface VvReverseOrderDao extends BaseMapper { int deleteVvReverseOrderById(@Param("id")Long id); + + @OrderBy(VvReverseOrderEntity.id_) + List selectByAdminCondition(IPage page, + @IF Long tradeOrderId, + @IF String status, + @IF String trackNumber, + @IF Integer refundType, + @IF @Column(VvReverseOrderEntity.create_timestamp) Long minCreateTimestamp, + @IF @Column(VvReverseOrderEntity.create_timestamp) Long maxCreateTimestamp, + @IF @OrderBy(VvReverseOrderEntity.create_timestamp) String createTimestampSort + ); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderLineDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderLineDao.java new file mode 100644 index 0000000..6a97a61 --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderLineDao.java @@ -0,0 +1,41 @@ +package com.heyu.api.data.dao.vv; +/** +*

+* 逆向子单表 服务类 +*

+* +* @author quyixiao +* @since 2025-08-27 +*/ +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lz.mybatis.plugin.annotations.IN; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface VvReverseOrderLineDao extends BaseMapper { + + + VvReverseOrderLineEntity selectVvReverseOrderLineById(@Param("id")Long id); + + + Long insertVvReverseOrderLine(VvReverseOrderLineEntity vvReverseOrderLine); + + + Long insertOrUpdateVvReverseOrderLine(VvReverseOrderLineEntity vvReverseOrderLine); + + + int updateVvReverseOrderLineById(VvReverseOrderLineEntity vvReverseOrderLine); + + + int updateCoverVvReverseOrderLineById(VvReverseOrderLineEntity vvReverseOrderLine); + + + int deleteVvReverseOrderLineById(@Param("id")Long id); + + + List selectVvReverseOrderLineByReverseOrderId(@IN List reverseOrderId); +} \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderProveDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderProveDao.java index a6e30fd..abae93f 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderProveDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvReverseOrderProveDao.java @@ -9,8 +9,12 @@ package com.heyu.api.data.dao.vv; */ import com.heyu.api.data.entity.vv.VvReverseOrderProveEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.lz.mybatis.plugin.annotations.IN; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; + +import java.util.List; + @Mapper public interface VvReverseOrderProveDao extends BaseMapper { @@ -33,4 +37,5 @@ public interface VvReverseOrderProveDao extends BaseMapper selectVvReverseOrderProveByReverseOrderId(@IN List reverseOrderId); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java index 8420573..41648bc 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderEntity.java @@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date; /** *逆向表 * @author quyixiao -* @since 2025-08-26 +* @since 2025-08-27 */ @Data @@ -39,6 +39,9 @@ private static final long serialVersionUID = 1L; public final static String gmt_refunded = CLASS_NAME + "gmt_refunded"; // 退款完成时间 public final static String gmt_close = CLASS_NAME + "gmt_close"; // 退款关闭时间 public final static String track_number = CLASS_NAME + "track_number"; // 物流追踪号 + public final static String gmt_cancel = CLASS_NAME + "gmt_cancel"; // 订单取消时间 + public final static String create_timestamp = CLASS_NAME + "create_timestamp"; // 创建时间撮 + public final static String modify_timestamp = CLASS_NAME + "modify_timestamp"; // 修改时间撮 // @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -76,6 +79,12 @@ private static final long serialVersionUID = 1L; private Date gmtClose; //物流追踪号 private String trackNumber; + //订单取消时间 + private Date gmtCancel; + //创建时间撮 + private Long createTimestamp; + //修改时间撮 + private Long modifyTimestamp; /** * * @return @@ -346,6 +355,51 @@ private static final long serialVersionUID = 1L; this.trackNumber = trackNumber; } + /** + * 订单取消时间 + * @return + */ + public Date getGmtCancel() { + return gmtCancel; + } + /** + * 订单取消时间 + * @param gmtCancel + */ + public void setGmtCancel(Date gmtCancel) { + this.gmtCancel = gmtCancel; + } + + /** + * 创建时间撮 + * @return + */ + public Long getCreateTimestamp() { + return createTimestamp; + } + /** + * 创建时间撮 + * @param createTimestamp + */ + public void setCreateTimestamp(Long createTimestamp) { + this.createTimestamp = createTimestamp; + } + + /** + * 修改时间撮 + * @return + */ + public Long getModifyTimestamp() { + return modifyTimestamp; + } + /** + * 修改时间撮 + * @param modifyTimestamp + */ + public void setModifyTimestamp(Long modifyTimestamp) { + this.modifyTimestamp = modifyTimestamp; + } + @Override public String toString() { return "VvReverseOrderEntity{" + @@ -367,6 +421,9 @@ private static final long serialVersionUID = 1L; ",gmtRefunded=" + gmtRefunded + ",gmtClose=" + gmtClose + ",trackNumber=" + trackNumber + + ",gmtCancel=" + gmtCancel + + ",createTimestamp=" + createTimestamp + + ",modifyTimestamp=" + modifyTimestamp + "}"; } } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderLineEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderLineEntity.java index e6e13b4..54ec8e7 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderLineEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderLineEntity.java @@ -10,7 +10,7 @@ import java.util.Date;import java.util.Date; /** *逆向子单表 * @author quyixiao -* @since 2025-08-26 +* @since 2025-08-27 */ @Data @@ -29,9 +29,11 @@ private static final long serialVersionUID = 1L; public final static String trade_order_id = CLASS_NAME + "trade_order_id"; // 订单id public final static String trade_order_line_id = CLASS_NAME + "trade_order_line_id"; // 子单id public final static String refund_amount = CLASS_NAME + "refund_amount"; // 退款金额 - public final static String status_ = CLASS_NAME + "status"; // 逆向状态状态 wait_seller_agree 等待卖家同意 , wait_buyer_post 等待买家寄东西, shipping 运送中, delivered 妥投, reject_delivered 拒绝妥投, agree_refunded 同意退款 ,refunded 退款完成 ,close 退款关闭 public final static String seller_id = CLASS_NAME + "seller_id"; // 卖家id public final static String seller_name = CLASS_NAME + "seller_name"; // 卖家名称 + public final static String product_name = CLASS_NAME + "product_name"; // 商品名称 + public final static String sku_image_url = CLASS_NAME + "sku_image_url"; // sku 图片 + public final static String product_id = CLASS_NAME + "product_id"; // 商品id // @TableId(value = "id", type = IdType.AUTO) private Long id; @@ -49,12 +51,16 @@ private static final long serialVersionUID = 1L; private Long tradeOrderLineId; //退款金额 private BigDecimal refundAmount; - //逆向状态状态 wait_seller_agree 等待卖家同意 , wait_buyer_post 等待买家寄东西, shipping 运送中, delivered 妥投, reject_delivered 拒绝妥投, agree_refunded 同意退款 ,refunded 退款完成 ,close 退款关闭 - private String status; //卖家id private Long sellerId; //卖家名称 private String sellerName; + //商品名称 + private String productName; + //sku 图片 + private String skuImageUrl; + //商品id + private Long productId; /** * * @return @@ -175,21 +181,6 @@ private static final long serialVersionUID = 1L; this.refundAmount = refundAmount; } - /** - * 逆向状态状态 wait_seller_agree 等待卖家同意 , wait_buyer_post 等待买家寄东西, shipping 运送中, delivered 妥投, reject_delivered 拒绝妥投, agree_refunded 同意退款 ,refunded 退款完成 ,close 退款关闭 - * @return - */ - public String getStatus() { - return status; - } - /** - * 逆向状态状态 wait_seller_agree 等待卖家同意 , wait_buyer_post 等待买家寄东西, shipping 运送中, delivered 妥投, reject_delivered 拒绝妥投, agree_refunded 同意退款 ,refunded 退款完成 ,close 退款关闭 - * @param status - */ - public void setStatus(String status) { - this.status = status; - } - /** * 卖家id * @return @@ -220,6 +211,51 @@ private static final long serialVersionUID = 1L; this.sellerName = sellerName; } + /** + * 商品名称 + * @return + */ + public String getProductName() { + return productName; + } + /** + * 商品名称 + * @param productName + */ + public void setProductName(String productName) { + this.productName = productName; + } + + /** + * sku 图片 + * @return + */ + public String getSkuImageUrl() { + return skuImageUrl; + } + /** + * sku 图片 + * @param skuImageUrl + */ + public void setSkuImageUrl(String skuImageUrl) { + this.skuImageUrl = skuImageUrl; + } + + /** + * 商品id + * @return + */ + public Long getProductId() { + return productId; + } + /** + * 商品id + * @param productId + */ + public void setProductId(Long productId) { + this.productId = productId; + } + @Override public String toString() { return "VvReverseOrderLineEntity{" + @@ -231,9 +267,11 @@ private static final long serialVersionUID = 1L; ",tradeOrderId=" + tradeOrderId + ",tradeOrderLineId=" + tradeOrderLineId + ",refundAmount=" + refundAmount + - ",status=" + status + ",sellerId=" + sellerId + ",sellerName=" + sellerName + + ",productName=" + productName + + ",skuImageUrl=" + skuImageUrl + + ",productId=" + productId + "}"; } } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderProveEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderProveEntity.java index 2ce7e6a..59bcd4a 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderProveEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvReverseOrderProveEntity.java @@ -1,12 +1,11 @@ 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.math.BigDecimal; -import java.util.Date;import java.util.Date; +import java.util.Date; /** *退款证据表 * @author quyixiao diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvReverseOrderLineServiceImpl.java b/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvReverseOrderLineServiceImpl.java new file mode 100644 index 0000000..0bf5467 --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/service/impl/vv/VvReverseOrderLineServiceImpl.java @@ -0,0 +1,68 @@ +package com.heyu.api.data.service.impl.vv; +/** +*

+* 逆向子单表 服务类 +*

+* +* @author quyixiao +* @since 2025-08-27 +*/ + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.heyu.api.data.dao.vv.VvReverseOrderLineDao; +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; +import com.heyu.api.data.service.vv.VvReverseOrderLineService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +@Service +public class VvReverseOrderLineServiceImpl extends ServiceImpl implements VvReverseOrderLineService { + + + @Autowired + private VvReverseOrderLineDao vvReverseOrderLineDao; + + + + @Override + public VvReverseOrderLineEntity selectVvReverseOrderLineById(Long id){ + return vvReverseOrderLineDao.selectVvReverseOrderLineById(id); + } + + + + @Override + public Long insertVvReverseOrderLine(VvReverseOrderLineEntity vvReverseOrderLine){ + return vvReverseOrderLineDao.insertVvReverseOrderLine(vvReverseOrderLine); + } + + + + @Override + public Long insertOrUpdateVvReverseOrderLine(VvReverseOrderLineEntity vvReverseOrderLine){ + return vvReverseOrderLineDao.insertOrUpdateVvReverseOrderLine(vvReverseOrderLine); + } + + + + @Override + public int updateVvReverseOrderLineById(VvReverseOrderLineEntity vvReverseOrderLine){ + return vvReverseOrderLineDao.updateVvReverseOrderLineById(vvReverseOrderLine); + } + + + + @Override + public int updateCoverVvReverseOrderLineById(VvReverseOrderLineEntity vvReverseOrderLine){ + return vvReverseOrderLineDao.updateCoverVvReverseOrderLineById(vvReverseOrderLine); + } + + + + @Override + public int deleteVvReverseOrderLineById(Long id){ + return vvReverseOrderLineDao.deleteVvReverseOrderLineById(id); + } + + + +} diff --git a/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvReverseOrderLineService.java b/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvReverseOrderLineService.java new file mode 100644 index 0000000..4c6e7fe --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/service/vv/VvReverseOrderLineService.java @@ -0,0 +1,34 @@ +package com.heyu.api.data.service.vv; +/** +*

+* 逆向子单表 服务类 +*

+* +* @author quyixiao +* @since 2025-08-27 +*/ +import com.baomidou.mybatisplus.extension.service.IService; +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; +public interface VvReverseOrderLineService extends IService { + + + + VvReverseOrderLineEntity selectVvReverseOrderLineById(Long id); + + + Long insertVvReverseOrderLine(VvReverseOrderLineEntity vvReverseOrderLine); + + + Long insertOrUpdateVvReverseOrderLine(VvReverseOrderLineEntity vvReverseOrderLine); + + + int updateVvReverseOrderLineById(VvReverseOrderLineEntity vvReverseOrderLine); + + + int updateCoverVvReverseOrderLineById(VvReverseOrderLineEntity vvReverseOrderLine); + + + int deleteVvReverseOrderLineById(Long id); + + +} \ No newline at end of file diff --git a/api-common/src/main/java/com/heyu/api/common/SanUtils.java b/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java similarity index 52% rename from api-common/src/main/java/com/heyu/api/common/SanUtils.java rename to api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java index b964387..8d411af 100644 --- a/api-common/src/main/java/com/heyu/api/common/SanUtils.java +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java @@ -1,6 +1,7 @@ -package com.heyu.api.common; +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; import org.apache.commons.collections.CollectionUtils; @@ -9,10 +10,8 @@ import org.apache.commons.lang3.ClassUtils; import java.lang.invoke.SerializedLambda; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; @Slf4j public class SanUtils { @@ -62,7 +61,6 @@ public class SanUtils { return list; } - Map map = new HashMap<>(); Method method = getMethod(function); for (V value : values) { list.add((R) method.invoke(value)); @@ -94,6 +92,49 @@ public class SanUtils { return listmap; } + + public static R findAnyNotNull(List values, LBiFunction0 function) { + try { + if (CollectionUtils.isEmpty(values)) { + return null; + + } + Method method = getMethod(function); + for (V value : values) { + R r = (R) method.invoke(value); + if (r != null) { + return r; + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static R sum(List values, LBiFunction0 function) { + BigDecimal sum = BigDecimal.ZERO; + Class clazz = null; + try { + if (CollectionUtils.isEmpty(values)) { + return null; + } + Method method = getMethod(function); + clazz = method.getReturnType(); + for (V value : values) { + R r = (R) method.invoke(value); + if (r != null) { + sum = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO).add(sum); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + return (R) parseBasicTypeWrapper(clazz, sum); + } + private static Method getMethod(LBiFunction0 function) { try { Method method = function.getClass().getDeclaredMethods()[1]; @@ -151,7 +192,6 @@ public class SanUtils { return null; } - public static List convert(List list, LBiFunction0 function) { List methods = getMethods(function); List result = new ArrayList<>(); @@ -174,6 +214,94 @@ public class SanUtils { return result; } + + + /** + * 基本类型包装类解析 + */ + public static Object parseBasicTypeWrapper(Class parameterType, Object value) { + if (Number.class.isAssignableFrom(parameterType)) { + if (parameterType == Integer.class || parameterType == int.class) { + return NumberUtils.objToIntDefault(value, null); + } else if (parameterType == Short.class || parameterType == short.class) { + return NumberUtils.objToShortDefault(value, null); + } else if (parameterType == Long.class || parameterType == long.class) { + return NumberUtils.objToLongDefault(value, null); + } else if (parameterType == Float.class || parameterType == float.class) { + return NumberUtils.objToFloatDefault(value, null); + } else if (parameterType == Double.class || parameterType == double.class) { + return NumberUtils.objToDoubleDefault(value, null); + } else if (parameterType == Byte.class || parameterType == byte.class) { + return NumberUtils.objToByteDefault(value, null); + } else if (parameterType == BigDecimal.class) { + return NumberUtils.objToBigDecimalDefault(value, null); + } + } else if (parameterType == Boolean.class || parameterType == boolean.class) { + return NumberUtils.objToBooleanDefault(value, null); + } else if (parameterType == Character.class || parameterType == char.class) { + return NumberUtils.objToCharacterDefault(value, null); + } else if (parameterType == String.class) { + return value !=null ? value.toString() : null ; + }else if (parameterType == Date.class && value instanceof Date){ + return value; + } else if (parameterType == Date.class && value instanceof String) { + Object target = DateUtils.parseStr2Date((String) value, YYYY_MM_DD_HH_MM_SS); + if (target == null) { + target = DateUtils.parseStr2Date((String) value, YYYY_MM_DD); + if(target == null){ + target = DateUtils.parseStr2Date((String) value, YYYY); + if(target == null){ + target = DateUtils.parseStr2Date((String) value, YYYY_MM); + if(target == null){ + target = DateUtils.parseStr2Date((String) value, YYYY_MM_DD_HH); + if(target == null){ + target = DateUtils.parseStr2Date((String) value, YYYY_MM_DD_HH_MM); + } + } + } + } + } + return target; + } + return null; + } + + public static String YYYY = "yyyy"; + public static String YYYY_MM = "yyyy-MM"; + public static String YYYY_MM_DD = "yyyy-MM-dd"; + public static String YYYY_MM_DD_HH = "yyyy-MM-dd HH"; + public static String YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm"; + public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + + private static final List> primitiveTypes = new ArrayList<>(32); + + static { + primitiveTypes.add(Boolean.class); + primitiveTypes.add(Byte.class); + primitiveTypes.add(Character.class); + primitiveTypes.add(Double.class); + primitiveTypes.add(Float.class); + primitiveTypes.add(Integer.class); + primitiveTypes.add(Long.class); + primitiveTypes.add(Short.class); + primitiveTypes.add(BigDecimal.class); + + primitiveTypes.add(boolean.class); + primitiveTypes.add(byte.class); + primitiveTypes.add(char.class); + primitiveTypes.add(double.class); + primitiveTypes.add(float.class); + primitiveTypes.add(int.class); + primitiveTypes.add(long.class); + primitiveTypes.add(short.class); + primitiveTypes.add(String.class); + primitiveTypes.add(Date.class); + } + + public static boolean isBasicDataTypes(Class clazz) { + return primitiveTypes.contains(clazz) ? true : false; + } + public static void main(String[] args) { AriseUser ai = new AriseUser(); ai.setName("张三"); @@ -198,4 +326,5 @@ public class SanUtils { } + } diff --git a/api-mapper/src/main/resources/mapper/vv/VvReverseOrderLineDao.xml b/api-mapper/src/main/resources/mapper/vv/VvReverseOrderLineDao.xml new file mode 100644 index 0000000..1a9533f --- /dev/null +++ b/api-mapper/src/main/resources/mapper/vv/VvReverseOrderLineDao.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java index f6c235c..534ba97 100644 --- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java +++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_insert.java @@ -94,7 +94,7 @@ public class MysqlMain_insert { List list = new ArrayList(); - list.add(new TablesBean("vv_settlement_prove_detail")); + list.add(new TablesBean("vv_reverse_order_line")); 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 d28fb85..752dc1f 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_trade_order_line"; + String a = "vv_reverse_order"; for (String s : a.split(",")) { list.add(new TablesBean(s)); } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/enums/ReverseStatusEnums.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/enums/ReverseStatusEnums.java index 5063acf..1c3d867 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/enums/ReverseStatusEnums.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/enums/ReverseStatusEnums.java @@ -11,7 +11,7 @@ public enum ReverseStatusEnums { // refunded 退款完成 , // close 退款关闭 cancel("cancel","订单取消"), - wait_seller_agree("wait_seller_agree","等待卖家同意"), + buyer_apply_reverse_wait_seller_agree("buyer_apply_reverse_wait_seller_agree","买家申请退款,等待卖家同意,"), wait_buyer_post("wait_buyer_post","买家邮寄"), shipping("shipping","运送中"), delivered("delivered","已签收"), 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 new file mode 100644 index 0000000..c69ee87 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/AppliyReverseRequest.java @@ -0,0 +1,22 @@ +package com.heyu.api.alibaba.request.mm.reverse; + + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AppliyReverseRequest { + + /*** + * 订单子单列表 + */ + private List tradeOrderLineIds; + + + /*** + * 申请退款金额 + */ + private BigDecimal refundAmount; +} diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseListRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseListRequest.java new file mode 100644 index 0000000..a7816b2 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseListRequest.java @@ -0,0 +1,38 @@ +package com.heyu.api.alibaba.request.mm.reverse; + + +import lombok.Data; + +@Data +public class VvReverseListRequest { + + private Integer pageNum = 1 ; + + + private Integer pageSize = 10 ; + + + //创建时间撮 + private Long minCreateTimestamp; + + private Long maxCreateTimestamp; + + //订单号 + private Long tradeOrderId; + //状态 wait_seller_agree 等待卖家同意 , wait_buyer_post 等待买家寄东西, shipping 运送中, delivered 妥投, reject_delivered 拒绝妥投, agree_refunded 同意退款 ,refunded 退款完成 ,close 退款关闭 + private String status; + + + //退款类型,1 仅退款, 2 退款退货 + private Integer refundType; + + //物流追踪号 + private String trackNumber; + + + /*** + * 按创建时间排序,,传 ASC 或 DESC + */ + private String createTimestampSort; + +} diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java new file mode 100644 index 0000000..94f0f40 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/reverse/VvReverseOrderDTO.java @@ -0,0 +1,30 @@ +package com.heyu.api.alibaba.request.mm.reverse; + +import com.heyu.api.data.entity.vv.VvReverseOrderEntity; +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; +import com.heyu.api.data.entity.vv.VvReverseOrderProveEntity; +import lombok.Data; + +import java.util.List; + + +@Data +public class VvReverseOrderDTO extends VvReverseOrderEntity { + + + /*** + * 退款子单列表 + */ + private List vvReverseOrderLineEntities; + + + /*** + * 退款证据列表 + */ + private List vvReverseOrderProveEntities; + + + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java new file mode 100644 index 0000000..cbb91cb --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java @@ -0,0 +1,88 @@ +package com.heyu.api.controller.mm; + + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.heyu.api.alibaba.request.mm.reverse.VvReverseListRequest; +import com.heyu.api.alibaba.request.mm.reverse.VvReverseOrderDTO; +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.VvReverseOrderProveDao; +import com.heyu.api.data.entity.vv.VvReverseOrderEntity; +import com.heyu.api.data.entity.vv.VvReverseOrderLineEntity; +import com.heyu.api.data.entity.vv.VvReverseOrderProveEntity; +import com.heyu.api.data.utils.R; +import com.heyu.api.utils.ISelect; +import com.heyu.api.utils.PPageUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +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.util.List; +import java.util.Map; + +@Slf4j +@RestController +@RequestMapping("/mm/reverse") +public class AdminReverseController { + + @Autowired + private VvReverseOrderDao vvReverseOrderDao; + + @Autowired + private VvReverseOrderLineDao vvReverseOrderLineDao; + + + @Autowired + private VvReverseOrderProveDao vvReverseOrderProveDao; + + + /*** + * 逆向列表 + * @param vvReverseListRequest + * @return + */ + @RequestMapping("/list") + public R list(@RequestBody VvReverseListRequest vvReverseListRequest) { + PPageUtils pageUtils = PPageUtils.startPage(vvReverseListRequest.getPageNum(), vvReverseListRequest.getPageSize()) + .doSelect(new ISelect() { + @Override + public List doSelect(IPage page) { + return vvReverseOrderDao.selectByAdminCondition(page, + vvReverseListRequest.getTradeOrderId(), + vvReverseListRequest.getStatus(), + vvReverseListRequest.getTrackNumber(), + vvReverseListRequest.getRefundType(), + vvReverseListRequest.getMinCreateTimestamp(), + vvReverseListRequest.getMaxCreateTimestamp(), + vvReverseListRequest.getCreateTimestampSort() + ); + } + }); + + + List vvReverseOrderEntities = pageUtils.getRows(); + List reverseOrderIds = SanUtils.list2listFilterNull(vvReverseOrderEntities, VvReverseOrderEntity::getId); + + List reverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(reverseOrderIds); + Map> vvReverseOrderLineEntityMap = SanUtils.list2GroupBy(reverseOrderLineEntities, VvReverseOrderLineEntity::getReverseOrderId); + + + List vvReverseOrderProveEntities = vvReverseOrderProveDao.selectVvReverseOrderProveByReverseOrderId(reverseOrderIds); + + Map> vvProveMap = SanUtils.list2GroupBy(vvReverseOrderProveEntities, VvReverseOrderProveEntity::getReverseOrderId); + + for (VvReverseOrderEntity vvReverseOrderEntity : vvReverseOrderEntities) { + VvReverseOrderDTO vvReverseOrderDTO = new VvReverseOrderDTO(); + BeanUtils.copyProperties(vvReverseOrderEntity, vvReverseOrderDTO); + vvReverseOrderDTO.setVvReverseOrderLineEntities(vvReverseOrderLineEntityMap.get(vvReverseOrderEntity.getId())); + vvReverseOrderDTO.setVvReverseOrderProveEntities(vvProveMap.get(vvReverseOrderEntity.getId())); + } + return R.ok().put("page", pageUtils); + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/OrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/OrderController.java index 9bce25c..de9a73e 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/OrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/OrderController.java @@ -7,7 +7,7 @@ import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums; import com.heyu.api.alibaba.request.mm.order.*; import com.heyu.api.alibaba.request.mm.order.resp.PackageDTO; import com.heyu.api.alibaba.request.mm.order.resp.VVOrderListResp; -import com.heyu.api.common.SanUtils; +import com.heyu.api.data.utils.SanUtils; import com.heyu.api.data.dao.vv.*; import com.heyu.api.data.entity.vv.*; import com.heyu.api.data.utils.BigDecimalUtil; diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java index 0d774c6..cfc6c35 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java @@ -7,7 +7,7 @@ import com.heyu.api.alibaba.request.mm.enums.OrderStatusEnums; import com.heyu.api.alibaba.request.mm.order.AppDeliveredDTO; import com.heyu.api.alibaba.request.mm.order.resp.*; import com.heyu.api.alibaba.request.vv.AppOrderRequest; -import com.heyu.api.common.SanUtils; +import com.heyu.api.data.utils.SanUtils; import com.heyu.api.data.dao.vv.*; import com.heyu.api.data.entity.vv.*; import com.heyu.api.data.utils.BigDecimalUtil; @@ -62,16 +62,11 @@ public class AppOrderController { @Autowired private VvBuyerAddressDao vvBuyerAddressDao; - /*** * 列表 */ @RequestMapping("/list") public R list(@RequestBody AppOrderRequest vvOrderRequest) { - - - - PPageUtils pageUtils = PPageUtils.startPage(vvOrderRequest.getPageNum(), vvOrderRequest.getPageSize()) .doSelect(new ISelect() { @Override @@ -102,7 +97,7 @@ public class AppOrderController { List vvTradeOrderLineEntities = pageUtils.getRows(); // 获取订单 - List tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntities,VvTradeOrderLineEntity::getTradeOrderId ); + List tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTradeOrderId); List tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds); // 对订单进行排序,必须按照子单的顺序 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 new file mode 100644 index 0000000..acaf7c3 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java @@ -0,0 +1,64 @@ +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.VvTradeOrderEntity; +import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; +import com.heyu.api.data.utils.R; +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.util.List; + +@Slf4j +@RestController +@RequestMapping("/app/reverse") +public class AppReverseController { + + + @Autowired + private VvReverseOrderDao vvReverseOrderDao; + + @Autowired + private VvReverseOrderLineDao vvReverseOrderLineDao; + + @Autowired + private VvTradeOrderLineDao vvTradeOrderLineDao; + + @Autowired + private VvTradeOrderDao vvTradeOrderDao; + + @RequestMapping("/add") + public R add(@RequestBody AppliyReverseRequest appliyReverseRequest) { + List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(appliyReverseRequest.getTradeOrderLineIds()); + + Long tradeOrderId = SanUtils.findAnyNotNull(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTradeOrderId); + + VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(tradeOrderId); + + VvReverseOrderEntity vvReverseOrderEntity = new VvReverseOrderEntity(); + + vvReverseOrderEntity.setTradeOrderId(tradeOrderId); + vvReverseOrderEntity.setStatus(ReverseStatusEnums.buyer_apply_reverse_wait_seller_agree.getStatus()); + + // 设置退款金额 + vvReverseOrderEntity.setRefundAmount(appliyReverseRequest.getRefundAmount() == null + ? SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice) + : appliyReverseRequest.getRefundAmount()); + + + return R.ok(); + + + } +}