浏览代码

订单退换货

24282 1 年之前
父节点
当前提交
092f2f15c9
共有 18 个文件被更改,包括 678 次插入0 次删除
  1. 64 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderExchangeController.java
  2. 20 0
      sd-business/src/main/java/com/sd/business/controller/order/OrderExchangeDetailController.java
  3. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeDetailDto.java
  4. 17 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeDetailSelectDto.java
  5. 35 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeDto.java
  6. 22 0
      sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeSelectDto.java
  7. 82 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderExchange.java
  8. 51 0
      sd-business/src/main/java/com/sd/business/entity/order/po/OrderExchangeDetail.java
  9. 39 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderExchangeDetailVo.java
  10. 24 0
      sd-business/src/main/java/com/sd/business/entity/order/vo/OrderExchangeVo.java
  11. 17 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderExchangeDetailMapper.java
  12. 26 0
      sd-business/src/main/java/com/sd/business/mapper/order/OrderExchangeMapper.java
  13. 17 0
      sd-business/src/main/java/com/sd/business/service/order/OrderExchangeDetailService.java
  14. 41 0
      sd-business/src/main/java/com/sd/business/service/order/OrderExchangeService.java
  15. 21 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderExchangeDetailServiceImpl.java
  16. 156 0
      sd-business/src/main/java/com/sd/business/service/order/impl/OrderExchangeServiceImpl.java
  17. 4 0
      sd-business/src/main/resources/mapper/order/OrderExchangeDetailMapper.xml
  18. 25 0
      sd-business/src/main/resources/mapper/order/OrderExchangeMapper.xml

+ 64 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderExchangeController.java

@@ -0,0 +1,64 @@
+package com.sd.business.controller.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import com.sd.business.entity.order.dto.OrderExchangeDto;
+import com.sd.business.entity.order.dto.OrderExchangeSelectDto;
+import com.sd.business.entity.order.vo.OrderExchangeVo;
+import com.sd.business.service.order.OrderExchangeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 订单退换货 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@RestController
+@RequestMapping("/orderExchange")
+public class OrderExchangeController {
+
+    @Autowired
+    private OrderExchangeService orderExchangeService;
+
+    /**
+     * 订单退换货分页
+     */
+    @PostMapping("/page")
+    public Page<OrderExchangeVo> page(@RequestBody OrderExchangeSelectDto dto) {
+        return orderExchangeService.getPage(dto);
+    }
+
+    /**
+     * 订单退换货明细
+     */
+    @PostMapping("/detail")
+    public OrderExchangeVo detail(@RequestBody BaseSelectDto dto) {
+        return orderExchangeService.detail(dto.getId());
+    }
+
+    /**
+     * 订单退换货新增
+     */
+    @PostMapping("/add")
+    public void add(@Validated @RequestBody OrderExchangeDto orderExchangeDto) {
+        orderExchangeService.add(orderExchangeDto);
+    }
+
+    // /**
+    //  * 订单退换货删除
+    //  */
+    // @PostMapping("/delete")
+    // public void delete(@RequestBody BaseSelectDto dto) {
+    //     orderExchangeService.delete(dto.getId());
+    // }
+
+}

+ 20 - 0
sd-business/src/main/java/com/sd/business/controller/order/OrderExchangeDetailController.java

@@ -0,0 +1,20 @@
+package com.sd.business.controller.order;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * <p>
+ * 订单退换货明细 前端控制器
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@RestController
+@RequestMapping("/orderExchangeDetail")
+public class OrderExchangeDetailController {
+
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeDetailDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单退换货明细新增编辑入参实体
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+public class OrderExchangeDetailDto extends OrderExchangeDetail {
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeDetailSelectDto.java

@@ -0,0 +1,17 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单退换货明细列表查询入参实体
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+public class OrderExchangeDetailSelectDto extends BaseSelectDto {
+
+}

+ 35 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeDto.java

@@ -0,0 +1,35 @@
+package com.sd.business.entity.order.dto;
+
+import com.fjhx.file.entity.ObsFile;
+import com.sd.business.entity.order.po.OrderExchange;
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 订单退换货新增编辑入参实体
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+public class OrderExchangeDto extends OrderExchange {
+
+    /**
+     * 商品订单
+     */
+    @NotEmpty(message = "订单商品不能为空")
+    @Valid
+    private List<OrderExchangeDetail> orderExchangeDetailList;
+
+    /**
+     * 商品图片
+     */
+    private List<ObsFile> fileList;
+
+}

+ 22 - 0
sd-business/src/main/java/com/sd/business/entity/order/dto/OrderExchangeSelectDto.java

@@ -0,0 +1,22 @@
+package com.sd.business.entity.order.dto;
+
+import com.ruoyi.common.core.domain.BaseSelectDto;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 订单退换货列表查询入参实体
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+public class OrderExchangeSelectDto extends BaseSelectDto {
+
+    /**
+     * 订单id
+     */
+    private Long orderInfoId;
+
+}

+ 82 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderExchange.java

@@ -0,0 +1,82 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 订单退换货
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+@TableName("order_exchange")
+public class OrderExchange extends BasePo {
+
+    /**
+     * 订单id
+     */
+    @NotNull(message = "订单id不能为空")
+    private Long orderInfoId;
+
+    /**
+     * 类型 1退货 2换货
+     */
+    @NotNull(message = "退换货类型不能为空")
+    private Integer type;
+
+    /**
+     * 退换货原因
+     */
+    @NotBlank(message = "售后原因不能为空")
+    private String reason;
+
+    /**
+     * 退换货备注
+     */
+    private String remark;
+
+    /**
+     * 收货人
+     */
+    private String consignee;
+
+    /**
+     * 收货人电话
+     */
+    private String consigneeNumber;
+
+    /**
+     * 省
+     */
+    private String province;
+
+    /**
+     * 市
+     */
+    private String city;
+
+    /**
+     * 县
+     */
+    private String county;
+
+    /**
+     * 详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * 邮编
+     */
+    private String postcode;
+
+}

+ 51 - 0
sd-business/src/main/java/com/sd/business/entity/order/po/OrderExchangeDetail.java

@@ -0,0 +1,51 @@
+package com.sd.business.entity.order.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.domain.BasePo;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * <p>
+ * 订单退换货明细
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+@TableName("order_exchange_detail")
+public class OrderExchangeDetail extends BasePo {
+
+    /**
+     * 订单退换货id
+     */
+    private Long orderExchangeId;
+
+    /**
+     * 订单明细id
+     */
+    @NotNull(message = "订单sku id不能为空")
+    private Long orderSkuId;
+
+    /**
+     * 退换货数量
+     */
+    @NotNull(message = "退换货数量不能为空")
+    private BigDecimal quantity;
+
+    /**
+     * 退货状态
+     */
+    private Integer returnStatus;
+
+    /**
+     * 换货状态
+     */
+    private Integer exchangeStatus;
+
+}

+ 39 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderExchangeDetailVo.java

@@ -0,0 +1,39 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 订单退换货明细列表查询返回值实体
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+public class OrderExchangeDetailVo extends OrderExchangeDetail {
+
+    /**
+     * sku规格id
+     */
+    private Long skuSpecId;
+
+    /**
+     * sku规格品号
+     */
+    private String skuSpecCode;
+
+    /**
+     * sku规格品名
+     */
+    private String skuSpecName;
+
+    /**
+     * 购买数量
+     */
+    private BigDecimal buyQuantity;
+
+}

+ 24 - 0
sd-business/src/main/java/com/sd/business/entity/order/vo/OrderExchangeVo.java

@@ -0,0 +1,24 @@
+package com.sd.business.entity.order.vo;
+
+import com.sd.business.entity.order.po.OrderExchange;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * 订单退换货列表查询返回值实体
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Getter
+@Setter
+public class OrderExchangeVo extends OrderExchange {
+
+    /**
+     * 订单退货明细
+     */
+    private List<OrderExchangeDetailVo> orderExchangeDetailList;
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderExchangeDetailMapper.java

@@ -0,0 +1,17 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+
+
+/**
+ * <p>
+ * 订单退换货明细 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+public interface OrderExchangeDetailMapper extends BaseMapper<OrderExchangeDetail> {
+
+}

+ 26 - 0
sd-business/src/main/java/com/sd/business/mapper/order/OrderExchangeMapper.java

@@ -0,0 +1,26 @@
+package com.sd.business.mapper.order;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.po.OrderExchange;
+import com.sd.business.entity.order.vo.OrderExchangeVo;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * <p>
+ * 订单退换货 Mapper 接口
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+public interface OrderExchangeMapper extends BaseMapper<OrderExchange> {
+
+    /**
+     * 订单退换货分页
+     */
+    Page<OrderExchangeVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<OrderExchange> wrapper);
+
+}

+ 17 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderExchangeDetailService.java

@@ -0,0 +1,17 @@
+package com.sd.business.service.order;
+
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+
+
+/**
+ * <p>
+ * 订单退换货明细 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+public interface OrderExchangeDetailService extends BaseService<OrderExchangeDetail> {
+
+}

+ 41 - 0
sd-business/src/main/java/com/sd/business/service/order/OrderExchangeService.java

@@ -0,0 +1,41 @@
+package com.sd.business.service.order;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.service.BaseService;
+import com.sd.business.entity.order.dto.OrderExchangeDto;
+import com.sd.business.entity.order.dto.OrderExchangeSelectDto;
+import com.sd.business.entity.order.po.OrderExchange;
+import com.sd.business.entity.order.vo.OrderExchangeVo;
+
+
+/**
+ * <p>
+ * 订单退换货 服务类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+public interface OrderExchangeService extends BaseService<OrderExchange> {
+
+    /**
+     * 订单退换货分页
+     */
+    Page<OrderExchangeVo> getPage(OrderExchangeSelectDto dto);
+
+    /**
+     * 订单退换货明细
+     */
+    OrderExchangeVo detail(Long id);
+
+    /**
+     * 订单退换货新增
+     */
+    void add(OrderExchangeDto orderExchangeDto);
+
+    /**
+     * 订单退换货删除
+     */
+    void delete(Long id);
+
+}

+ 21 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderExchangeDetailServiceImpl.java

@@ -0,0 +1,21 @@
+package com.sd.business.service.order.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+import com.sd.business.mapper.order.OrderExchangeDetailMapper;
+import com.sd.business.service.order.OrderExchangeDetailService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * <p>
+ * 订单退换货明细 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Service
+public class OrderExchangeDetailServiceImpl extends ServiceImpl<OrderExchangeDetailMapper, OrderExchangeDetail> implements OrderExchangeDetailService {
+
+}

+ 156 - 0
sd-business/src/main/java/com/sd/business/service/order/impl/OrderExchangeServiceImpl.java

@@ -0,0 +1,156 @@
+package com.sd.business.service.order.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.file.utils.ObsFileUtil;
+import com.ruoyi.common.constant.StatusConstant;
+import com.ruoyi.common.core.domain.BaseIdPo;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.sd.business.entity.order.dto.OrderExchangeDto;
+import com.sd.business.entity.order.dto.OrderExchangeSelectDto;
+import com.sd.business.entity.order.po.OrderExchange;
+import com.sd.business.entity.order.po.OrderExchangeDetail;
+import com.sd.business.entity.order.po.OrderSku;
+import com.sd.business.entity.order.vo.OrderExchangeDetailVo;
+import com.sd.business.entity.order.vo.OrderExchangeVo;
+import com.sd.business.mapper.order.OrderExchangeMapper;
+import com.sd.business.service.order.OrderExchangeDetailService;
+import com.sd.business.service.order.OrderExchangeService;
+import com.sd.business.service.order.OrderSkuService;
+import com.sd.business.service.sku.SkuSpecService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+
+/**
+ * <p>
+ * 订单退换货 服务实现类
+ * </p>
+ *
+ * @author
+ * @since 2023-09-14
+ */
+@Service
+public class OrderExchangeServiceImpl extends ServiceImpl<OrderExchangeMapper, OrderExchange> implements OrderExchangeService {
+
+    @Autowired
+    private OrderExchangeDetailService orderExchangeDetailService;
+
+    @Autowired
+    private OrderSkuService orderSkuService;
+
+    @Autowired
+    private SkuSpecService skuSpecService;
+
+    @Override
+    public Page<OrderExchangeVo> getPage(OrderExchangeSelectDto dto) {
+        IWrapper<OrderExchange> wrapper = getWrapper();
+        wrapper.orderByDesc("oe", OrderExchange::getId);
+        wrapper.eq("oe", OrderExchange::getOrderInfoId, dto.getOrderInfoId());
+        Page<OrderExchangeVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
+        return page;
+    }
+
+    @Override
+    public OrderExchangeVo detail(Long id) {
+        OrderExchange orderExchange = this.getById(id);
+        if (orderExchange == null) {
+            throw new ServiceException("未知订单号");
+        }
+
+        OrderExchangeVo result = BeanUtil.toBean(orderExchange, OrderExchangeVo.class);
+        List<OrderExchangeDetail> list = orderExchangeDetailService.list(q -> q.eq(OrderExchangeDetail::getOrderExchangeId, id));
+        List<OrderExchangeDetailVo> orderExchangeDetailList = BeanUtil.copyToList(list, OrderExchangeDetailVo.class);
+
+        // 赋值sku规格id和采购数量
+        orderSkuService.attributeAssign(orderExchangeDetailList, OrderExchangeDetailVo::getOrderSkuId, (item, orderSku) -> {
+            item.setSkuSpecId(orderSku.getSkuSpecId());
+            item.setBuyQuantity(orderSku.getQuantity());
+        });
+
+        // 赋值sku品号品名
+        skuSpecService.attributeAssign(orderExchangeDetailList, OrderExchangeDetailVo::getSkuSpecId, (item, skuSpec) -> {
+            item.setSkuSpecCode(skuSpec.getCode());
+            item.setSkuSpecName(skuSpec.getName());
+        });
+
+        return result;
+    }
+
+    @DSTransactional
+    @Override
+    public void add(OrderExchangeDto orderExchangeDto) {
+        orderExchangeDto.setId(IdWorker.getId());
+
+        List<OrderExchangeDetail> orderExchangeDetailList = orderExchangeDto.getOrderExchangeDetailList();
+
+        // 获取订单sku id集合
+        List<Long> orderSkuIdList = orderExchangeDetailList.stream()
+                .map(OrderExchangeDetail::getOrderSkuId)
+                .collect(Collectors.toList());
+
+        // 根据集合查询订单数量
+        Map<Long, BigDecimal> map = orderSkuService.mapKV(BaseIdPo::getId, OrderSku::getQuantity,
+                q -> q.in(BaseIdPo::getId, orderSkuIdList));
+
+        // 已添加订单产品退货列表
+        List<OrderExchangeDetail> list = new ArrayList<>();
+        if (orderExchangeDto.getType().equals(1)) {
+            list = orderExchangeDetailService.list(q -> q.in(OrderExchangeDetail::getOrderSkuId, orderSkuIdList));
+        }
+
+        for (OrderExchangeDetail orderExchangeDetail : orderExchangeDetailList) {
+
+            Long orderSkuId = orderExchangeDetail.getOrderSkuId();
+
+            // 数量为空,没找到订单sku id
+            BigDecimal quantity = map.get(orderSkuId);
+            if (quantity == null) {
+                throw new ServiceException("未知订单skuId:" + orderSkuId);
+            }
+
+            // 退换货数量大于订单产品购买数量
+            if (orderExchangeDetail.getQuantity().compareTo(quantity) > 0) {
+                throw new ServiceException("退换货数量不能大于订单产品购买数量");
+            }
+
+            // 如果退货,已退货数量+本次退货数量不能大于订单产品数量
+            if (orderExchangeDto.getType().equals(1)) {
+                BigDecimal returnQuantity = list.stream()
+                        .filter(item -> Objects.equals(item.getOrderSkuId(), orderSkuId))
+                        .map(OrderExchangeDetail::getQuantity)
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                if (returnQuantity.add(orderExchangeDetail.getQuantity()).compareTo(quantity) > 0) {
+                    throw new ServiceException("已记录退货数量加本次退货数量大于订单产品购买数量");
+                }
+
+            }
+
+            orderExchangeDetail.setOrderExchangeId(orderExchangeDto.getId());
+            orderExchangeDetail.setReturnStatus(StatusConstant.NO);
+            orderExchangeDetail.setExchangeStatus(StatusConstant.NO);
+        }
+
+        save(orderExchangeDto);
+        orderExchangeDetailService.saveBatch(orderExchangeDetailList);
+        ObsFileUtil.saveFile(orderExchangeDto.getFileList(), orderExchangeDto.getId());
+    }
+
+    @Override
+    public void delete(Long id) {
+        this.removeById(id);
+    }
+
+}

+ 4 - 0
sd-business/src/main/resources/mapper/order/OrderExchangeDetailMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderExchangeDetailMapper">
+</mapper>

+ 25 - 0
sd-business/src/main/resources/mapper/order/OrderExchangeMapper.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sd.business.mapper.order.OrderExchangeMapper">
+    <select id="getPage" resultType="com.sd.business.entity.order.vo.OrderExchangeVo">
+        select oe.id,
+               oe.order_info_id,
+               oe.type,
+               oe.reason,
+               oe.remark,
+               oe.consignee,
+               oe.consignee_number,
+               oe.province,
+               oe.city,
+               oe.county,
+               oe.detailed_address,
+               oe.postcode,
+               oe.create_user,
+               oe.create_time,
+               oe.update_user,
+               oe.update_time
+        from order_exchange oe
+            ${ew.customSqlSegment}
+    </select>
+
+</mapper>