From d2985d31ba7b387749b2350882172f675b923347 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Mon, 14 Jul 2025 16:22:38 +0800
Subject: [PATCH] 订单流程补充

---
 oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java       |    8 
 oying-system/src/main/resources/mapper/system/MerchantMapper.xml                               |    6 
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java         |   32 ++
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java |   41 ++
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java               |   13 
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java                  |   14 
 oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java                      |   10 
 oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java                |    6 
 oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java                |    2 
 oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java     |    3 
 oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml                    |    2 
 oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java                   |   26 ++
 oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java                        |    2 
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java             |   49 ++-
 oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java                      |    5 
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java                        |   15 
 oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml                          |    4 
 oying-common/src/main/java/com/oying/utils/RedisUtils.java                                     |   20 
 oying-system/src/main/resources/mapper/sh/OrderMapper.xml                                      |  175 ++++++------
 oying-system/src/main/java/com/oying/modules/sh/domain/Order.java                              |   33 ++
 oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml                    |    2 
 oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java         |    9 
 oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java             |   20 
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java                        |   50 +++
 oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java                  |   10 
 oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java                          |   11 
 oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java      |   15 
 oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java          |    7 
 oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml                                |  176 +++++++++---
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java       |    7 
 oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml                       |    3 
 31 files changed, 527 insertions(+), 249 deletions(-)

diff --git a/oying-common/src/main/java/com/oying/utils/RedisUtils.java b/oying-common/src/main/java/com/oying/utils/RedisUtils.java
index bf5b094..4467f18 100644
--- a/oying-common/src/main/java/com/oying/utils/RedisUtils.java
+++ b/oying-common/src/main/java/com/oying/utils/RedisUtils.java
@@ -21,14 +21,15 @@
  * @author Z
  */
 @Component
-@SuppressWarnings({"unchecked","all"})
+@SuppressWarnings({"unchecked", "all"})
 public class RedisUtils {
     private static final Logger log = LoggerFactory.getLogger(RedisUtils.class);
     @Value("${jwt.generate-order-sn}")
     private String generateOrderSn;
     @Value("${wx.enabled}")
     private Boolean wxEnabled;
-    private static final String T = "-T-";
+    private static final String T = "T-";
+    private static final String OY = "OY-";
     private RedisTemplate<Object, Object> redisTemplate;
 
     public RedisUtils(RedisTemplate<Object, Object> redisTemplate) {
@@ -46,7 +47,7 @@
     public String generateOrderSn(Integer i) {
         StringBuilder sb = new StringBuilder();
         String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
-        String key = generateOrderSn + date;
+        String key = generateOrderSn + i + date;
         Long increment = increment(key);
         sb.append(date);
         sb.append(String.format("%04d", i));
@@ -58,7 +59,7 @@
         }
         if (wxEnabled) {
             // 生产环境
-            return sb.toString();
+            return OY + sb.toString();
         } else {
             // 测试环境
             return T + sb.toString();
@@ -227,9 +228,10 @@
 
     /**
      * 批量模糊删除key
+     *
      * @param pattern
      */
-    public void scanDel(String pattern){
+    public void scanDel(String pattern) {
         ScanOptions options = ScanOptions.scanOptions().match(pattern).build();
         try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection(
                 (RedisCallback<Cursor<byte[]>>) connection -> (Cursor<byte[]>) new ConvertingCursor<>(
@@ -273,7 +275,7 @@
     /**
      * 普通缓存获取
      *
-     * @param key 键
+     * @param key   键
      * @param clazz 列表中元素的类型
      * @return 值
      */
@@ -300,7 +302,7 @@
      * @return 值
      */
     public String getStr(String key) {
-        if(StrUtil.isBlank(key)){
+        if (StrUtil.isBlank(key)) {
             return null;
         }
         Object value = redisTemplate.opsForValue().get(key);
@@ -320,7 +322,7 @@
     public List<Object> multiGet(List<String> keys) {
         List list = redisTemplate.opsForValue().multiGet(Sets.newHashSet(keys));
         List resultList = Lists.newArrayList();
-        Optional.ofNullable(list).ifPresent(e-> list.forEach(ele-> Optional.ofNullable(ele).ifPresent(resultList::add)));
+        Optional.ofNullable(list).ifPresent(e -> list.forEach(ele -> Optional.ofNullable(ele).ifPresent(resultList::add)));
         return resultList;
     }
 
@@ -816,6 +818,7 @@
 
     /**
      * 递增
+     *
      * @param key
      * @return
      */
@@ -825,6 +828,7 @@
 
     /**
      * 递减
+     *
      * @param key
      * @return
      */
diff --git a/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java b/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java
index 69718a4..f7e4a21 100644
--- a/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java
+++ b/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java
@@ -11,12 +11,11 @@
     ONE(1, "支付成功"),
     TWO(2, "商家已接单"),
     THREE(3, "骑手已接单"),
-    FOUR(4, "商家已接单"),
-    FIVE(5, "商家已备货"),
-    SIX(6, "骑手已到店"),
-    SEVEN(7, "骑手已取货"),
-    EIGHT(8, "商品已送达"),
-    NINE(9, "订单已完成"),
+    FOUR(4, "商家已备货"),
+    FIVE(5, "骑手已到店"),
+    SIX(6, "骑手已取货,正在送货"),
+    SEVEN(7, "商品已送达"),
+    EIGHT(8, "订单已完成"),
     UNKNOWN(99, "未知枚举");
 
     private final Integer key;
diff --git a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
index 23ff7af..404251a 100644
--- a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
@@ -5,8 +5,8 @@
 import com.oying.modules.hwc.utils.SignUtil;
 import com.oying.modules.hwc.utils.XmlUtils;
 import com.oying.modules.security.config.SwiftPassProperties;
-import com.oying.modules.sh.domain.Order;
 import com.oying.modules.sh.domain.OrderReturn;
+import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.modules.sh.service.OrderReturnService;
 import com.oying.modules.sh.service.OrderService;
 import com.oying.utils.enums.PayStateEnum;
@@ -46,21 +46,22 @@
                 String sign_type = map.get("sign_type");
                 String reSign = map.get("sign");
                 if (map.containsKey("sign")) {
-                    Order order = orderService.getByOrderNum(map.get("out_trade_no"));
-                    PayTypeEnum status = PayTypeEnum.find(order.getPayType());
+                    OrderResponse order = orderService.getByOrderNum(map.get("out_trade_no"));
+                    PayTypeEnum status = PayTypeEnum.find(order.getOrder().getPayType());
                     if (SignUtil.verifySign(reSign, sign_type, map, properties, status)) {
                         log.error("验证签名错误!:{}", map.toString());
                     } else {
                         if ("0".equals(map.get("status"))) {
                             if ("0".equals(map.get("result_code"))) {
                                 //业务处理
-                                if (PayStateEnum.SUCCESS.getKey().equals(order.getPayState())) {
+                                if (PayStateEnum.SUCCESS.getKey().equals(order.getOrder().getPayState())) {
                                     // 已处理
                                     respString = "success";
                                 } else {
                                     PayStateEnum stateEnum = PayStateEnum.NOTPAY;
                                     if ("0".equals(map.get("pay_result"))) {
                                         stateEnum = PayStateEnum.SUCCESS;
+                                        orderService.paySuccess(order);
                                     }
                                     orderService.updatePayStatus(map.get("out_trade_no"), stateEnum, map.get("pay_info"), map.get("time_end"));
                                     // 处理成功
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java b/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java
index 21544b0..1f33c2a 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java
@@ -33,12 +33,16 @@
     private Long orderId;
 
     @TableField(exist = false)
-    @ApiModelProperty(value = "用户角色")
+    @ApiModelProperty(value = "商品")
     private Set<OrderProductSnapshot> productSnapshots;
 
     @NotBlank
     @ApiModelProperty(value = "订单号")
     private String orderNum;
+
+    @NotBlank
+    @ApiModelProperty(value = "取单号")
+    private String orderStoreNum;
 
     @NotNull
     @ApiModelProperty(value = "订单状态")
@@ -48,12 +52,29 @@
     @ApiModelProperty(value = "订单状态描述")
     private String orderStatusDescribe;
 
-    @ApiModelProperty(value = "订单状态描述")
+    @ApiModelProperty(value = "订单备注")
     private String orderRemark;
 
     @NotBlank
     @ApiModelProperty(value = "预计送达时间")
     private String orderTime;
+
+    @NotNull
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal sendPrice;
+
+    @NotBlank
+    @ApiModelProperty(value = "配送类型")
+    private String sendType;
+
+    @ApiModelProperty(value = "骑手Id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "骑手名称")
+    private String riderName;
 
     @NotNull
     @ApiModelProperty(value = "用户id")
@@ -139,14 +160,14 @@
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        Order user = (Order) o;
-        return Objects.equals(orderId, user.orderId) &&
-                Objects.equals(orderNum, user.orderNum);
+        Order order = (Order) o;
+        return Objects.equals(orderId, order.orderId) &&
+                Objects.equals(orderNum, order.orderNum);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(orderId, username);
+        return Objects.hash(orderId, orderNum);
     }
 
     public void copy(Order source){
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java
index e1afb75..5a0b697 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java
@@ -3,6 +3,7 @@
 import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
+
 import java.math.BigDecimal;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
@@ -15,10 +16,10 @@
 import lombok.Setter;
 
 /**
-* @description /
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @description /
+ * @date 2025-06-11
+ **/
 @Getter
 @Setter
 @TableName("sh_order_address_snapshot")
@@ -71,7 +72,7 @@
     @ApiModelProperty(value = "地址标签(家/公司/学校等)")
     private String tag;
 
-    public void copy(OrderAddressSnapshot source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    public void copy(OrderAddressSnapshot source) {
+        BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java
index 78ff273..f837d29 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java
@@ -26,6 +26,10 @@
     private Long logId;
 
     @NotBlank
+    @ApiModelProperty(value = "订单号")
+    private String orderNum;
+
+    @NotBlank
     @ApiModelProperty(value = "用户账号")
     private String username;
 
@@ -45,17 +49,13 @@
     @ApiModelProperty(value = "备注")
     private String remark;
 
-    @NotNull
+    @NotBlank
     @ApiModelProperty(value = "操作时的订单快照")
     private String snapshotData;
 
     @NotNull
     @ApiModelProperty(value = "操作时间")
     private Timestamp operationTime;
-
-    @NotNull
-    @ApiModelProperty(value = "订单号")
-    private String orderNum;
 
     public void copy(OrderOperationLog source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java
index 06a4865..988d692 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java
@@ -1,5 +1,6 @@
 package com.oying.modules.sh.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.oying.base.BaseEntity;
 import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
@@ -10,6 +11,8 @@
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Objects;
+import java.util.Set;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -46,6 +49,31 @@
     @NotBlank
     @ApiModelProperty(value = "订单号")
     private String orderNum;
+
+    @NotBlank
+    @ApiModelProperty(value = "预计送达时间")
+    private String orderTime;
+
+    @NotBlank
+    @ApiModelProperty(value = "取单号")
+    private String orderStoreNum;
+
+    @NotNull
+    @ApiModelProperty(value = "配送费")
+    private BigDecimal sendPrice;
+
+    @NotBlank
+    @ApiModelProperty(value = "配送类型")
+    private String sendType;
+
+    @ApiModelProperty(value = "骑手Id")
+    private Long riderId;
+
+    @ApiModelProperty(value = "骑手手机号")
+    private String riderPhone;
+
+    @ApiModelProperty(value = "骑手名称")
+    private String riderName;
 
     @NotBlank
     @ApiModelProperty(value = "支付类型")
@@ -116,6 +144,28 @@
     @ApiModelProperty(value = "审核信息")
     private String auditMessage;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "商品")
+    private Set<OrderReturnProductSnapshot> productSnapshots;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        OrderReturn info = (OrderReturn) o;
+        return Objects.equals(returnId, info.returnId) &&
+                Objects.equals(returnNum, info.returnNum);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(returnId, returnNum);
+    }
+
     public void copy(OrderReturn source) {
         BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
     }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java
index a792693..c3cf423 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java
@@ -4,19 +4,22 @@
 import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
+
 import java.math.BigDecimal;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
+import java.util.Objects;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 /**
-* @description /
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @description /
+ * @date 2025-06-11
+ **/
 @Data
 @TableName("sh_order_return_product_snapshot")
 public class OrderReturnProductSnapshot implements Serializable {
@@ -83,7 +86,24 @@
     @ApiModelProperty(value = "实付金额")
     private BigDecimal actuallyPayPrice;
 
-    public void copy(OrderReturnProductSnapshot source){
-        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        OrderReturnProductSnapshot snapshot = (OrderReturnProductSnapshot) o;
+        return Objects.equals(snapshotId, snapshot.snapshotId);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(snapshotId);
+    }
+
+    public void copy(OrderReturnProductSnapshot source) {
+        BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
     }
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java b/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java
index b597d31..68b5161 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java
@@ -6,7 +6,6 @@
 import cn.hutool.core.bean.copier.CopyOptions;
 import java.math.BigDecimal;
 import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -65,7 +64,6 @@
     @ApiModelProperty(value = "纬度")
     private BigDecimal latitude;
 
-    @NotNull
     @ApiModelProperty(value = "是否默认: false")
     private Boolean isDefault = false;
 
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java
index 76e8eee..1c54b2d 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java
@@ -1,16 +1,18 @@
 package com.oying.modules.sh.domain.dto;
 
 import lombok.Data;
+
 import java.sql.Timestamp;
 import java.util.List;
+
 import io.swagger.annotations.ApiModelProperty;
 
 /**
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @date 2025-06-11
+ **/
 @Data
-public class OrderQueryCriteria{
+public class OrderQueryCriteria {
 
     @ApiModelProperty(value = "页码", example = "1")
     private Integer page = 1;
@@ -18,25 +20,25 @@
     @ApiModelProperty(value = "每页数据量", example = "10")
     private Integer size = 10;
 
-    @ApiModelProperty(value = "商品模糊查询")
+    @ApiModelProperty(value = "模糊查询(订单号、用户账号、描述、商品编号、条形码、商品名称、商品标题、商品描述)")
     private String blurry;
 
     @ApiModelProperty(value = "订单状态")
-    private Integer orderStatus;
+    private List<Integer> orderStatus;
 
-    @ApiModelProperty(value = "订单号")
+    @ApiModelProperty(value = "订单号模糊查询")
     private String orderNum;
 
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
-    @ApiModelProperty(value = "用户账号")
+    @ApiModelProperty(value = "用户账号模糊查询")
     private String username;
 
     @ApiModelProperty(value = "门店ID")
     private Long storeId;
 
-    @ApiModelProperty(value = "描述")
+    @ApiModelProperty(value = "描述模糊查询")
     private String orderDescribe;
 
     @ApiModelProperty(value = "支付状态")
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java
index 710cd22..66f2261 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java
@@ -18,11 +18,17 @@
     @ApiModelProperty(value = "每页数据量", example = "10")
     private Integer size = 10;
 
+    @ApiModelProperty(value = "偏移量", hidden = true)
+    private long offset;
+
+    @ApiModelProperty(value = "商品模糊查询")
+    private String blurry;
+
     @ApiModelProperty(value = "退单号")
     private String returnNum;
 
     @ApiModelProperty(value = "订单状态")
-    private Integer returnStatus;
+    private List<Integer> returnStatus;
 
     @ApiModelProperty(value = "订单号")
     private String orderNum;
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java b/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java
index 03bb2da..37c0b10 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java
@@ -32,7 +32,7 @@
     private List<ProductOrder> products;
     @ApiModelProperty(value = "备注")
     private String remark;
-    @NotBlank(message = "支付类型不能为空")
+    @NotNull(message = "支付类型不能为空")
     @ApiModelProperty(value = "支付类型")
     private PayTypeEnum payType;
 
diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java
new file mode 100644
index 0000000..37d2760
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java
@@ -0,0 +1,26 @@
+package com.oying.modules.sh.domain.vo;
+
+import com.oying.modules.sh.domain.Order;
+import com.oying.modules.sh.domain.OrderAddressSnapshot;
+import com.oying.modules.sh.domain.OrderOperationLog;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author xin
+ * @description
+ * @date 2025/7/14 14:51
+ */
+@Getter
+@Setter
+public class OrderResponse {
+
+    private Order order;
+
+    private OrderAddressSnapshot address;
+
+    private List<OrderOperationLog> operation;
+
+}
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java
index a879aba..8172479 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java
@@ -2,6 +2,7 @@
 
 import com.oying.modules.sh.domain.Order;
 import com.oying.modules.sh.domain.dto.OrderQueryCriteria;
+
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
@@ -11,21 +12,23 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 /**
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @date 2025-06-11
+ **/
 @Mapper
 public interface OrderMapper extends BaseMapper<Order> {
 
-    IPage<Order> findAll(@Param("criteria") OrderQueryCriteria criteria, Page<Object> page);
+    IPage<Order> findAll(@Param("criteria") OrderQueryCriteria criteria, @Param("blurry") String blurry, Page<Object> page);
 
-    List<Order> findAll(@Param("criteria") OrderQueryCriteria criteria);
+    List<Order> findAll(@Param("criteria") OrderQueryCriteria criteria, @Param("blurry") String blurry);
 
-    Long countAll(@Param("criteria") OrderQueryCriteria criteria);
+    Long countAll(@Param("criteria") OrderQueryCriteria criteria, @Param("blurry") String blurry);
 
     Order getByOrderNum(String orderNum);
 
     void updatePayStatus(String orderNum, String payState, String payMessage, String payTime);
 
     void updateCloseStatus(String orderNum, String payState);
+
+    void updateOrderStatus(String orderNum, Integer key, String value);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
index 451b94f..cc2598b 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
@@ -2,7 +2,9 @@
 
 import com.oying.modules.sh.domain.OrderReturn;
 import com.oying.modules.sh.domain.dto.OrderReturnQueryCriteria;
+
 import java.util.List;
+
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -10,17 +12,19 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 /**
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @date 2025-06-11
+ **/
 @Mapper
 public interface OrderReturnMapper extends BaseMapper<OrderReturn> {
 
-    IPage<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria, Page<Object> page);
+    IPage<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("blurry") String blurry, Page<Object> page);
 
-    List<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria);
+    List<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("criteria") String blurry);
 
     OrderReturn getByReturnNum(String returnNum);
 
     void updatePayStatus(String returnNum, String status, String time);
+
+    Long countAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("criteria") String blurry);
 }
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java
index 4bee5be..2815777 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java
@@ -1,6 +1,7 @@
 package com.oying.modules.sh.rest;
 
 import com.oying.annotation.Log;
+import com.oying.modules.sh.domain.Order;
 import com.oying.modules.sh.domain.request.GeneratorOrder;
 import com.oying.modules.sh.domain.request.SubmitOrder;
 import com.oying.modules.sh.service.OrderService;
@@ -59,6 +60,15 @@
         return new ResponseEntity<>(R.success(orderService.queryAll(criteria, page)), HttpStatus.OK);
     }
 
+    @PostMapping
+    @Log("新增订单信息")
+    @ApiOperation("新增订单信息")
+    @PreAuthorize("@el.check('order:add')")
+    public ResponseEntity<Object> create(@Validated @RequestBody Order order) {
+        orderService.create(order);
+        return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
+    }
+
     @PostMapping("generator")
     @Log("小程序:生成确认订单")
     @ApiOperation("小程序:生成确认订单")
diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java
index cc70dad..6bf864f 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java
@@ -62,12 +62,10 @@
     @Log("小程序:新增用户地址")
     @ApiOperation("小程序:新增用户地址")
     public ResponseEntity<Object> createUserAddress(@Validated @RequestBody UserAddress resources) {
-        if (resources.getAddressId() != null) {
-            throw new BadRequestException("新增用户地址主键必须为空");
-        }
+        resources.setAddressId(null);
         resources.setUserId(SecurityUtils.getCurrentUserId());
         userAddressService.create(resources);
-        return new ResponseEntity<>(R.success(), HttpStatus.CREATED);
+        return new ResponseEntity<>(R.success(resources), HttpStatus.CREATED);
     }
 
     @PutMapping
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java
index 3f1ed13..482091c 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java
@@ -1,5 +1,7 @@
 package com.oying.modules.sh.service;
 
+import com.oying.modules.sh.domain.Order;
+import com.oying.modules.sh.domain.OrderAddressSnapshot;
 import com.oying.modules.sh.domain.OrderOperationLog;
 import com.oying.modules.sh.domain.dto.OrderOperationLogQueryCriteria;
 import java.util.List;
@@ -38,6 +40,11 @@
     void create(OrderOperationLog resources);
 
     /**
+     * 创建
+     */
+    void create(Order order, OrderAddressSnapshot addressSnapshot);
+
+    /**
     * 编辑
     * @param resources /
     */
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java
index 1ae08fb..49f1dc7 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java
@@ -13,6 +13,7 @@
 import com.oying.modules.sh.domain.request.GeneratorOrder;
 import com.oying.modules.sh.domain.request.SubmitOrder;
 import com.oying.modules.sh.domain.vo.OrderInfo;
+import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.utils.PageResult;
 import com.oying.utils.enums.PayStateEnum;
 
@@ -44,9 +45,9 @@
 
     Order submitOrder(SubmitOrder submit, HttpServletRequest request);
 
-    Order getByOrderNum(String orderNum);
+    OrderResponse getByOrderNum(String orderNum);
 
-    void paySuccess(Order order);
+    void paySuccess(OrderResponse order);
 
     void updatePayStatus(String outTradeNo, PayStateEnum stateEnum, String payInfo, String timeEnd);
 
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
index fd06f35..d4b2546 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
@@ -1,7 +1,11 @@
 package com.oying.modules.sh.service.impl;
 
+import com.alibaba.fastjson2.JSON;
+import com.oying.modules.sh.domain.Order;
+import com.oying.modules.sh.domain.OrderAddressSnapshot;
 import com.oying.modules.sh.domain.OrderOperationLog;
-import com.oying.utils.FileUtil;
+import com.oying.utils.*;
+import com.oying.utils.enums.OrderStatusEnum;
 import lombok.RequiredArgsConstructor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,20 +14,20 @@
 import com.oying.modules.sh.mapper.OrderOperationLogMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import com.oying.utils.PageUtil;
+
+import java.sql.Timestamp;
 import java.util.List;
 import java.util.Map;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
-import com.oying.utils.PageResult;
 
 /**
-* @description 服务实现
-* @author lixin
-* @date 2025-06-11
-**/
+ * @author lixin
+ * @description 服务实现
+ * @date 2025-06-11
+ **/
 @Service
 @RequiredArgsConstructor
 public class OrderOperationLogServiceImpl extends ServiceImpl<OrderOperationLogMapper, OrderOperationLog> implements OrderOperationLogService {
@@ -31,12 +35,12 @@
     private final OrderOperationLogMapper orderOperationLogMapper;
 
     @Override
-    public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page){
+    public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page) {
         return PageUtil.toPage(orderOperationLogMapper.findAll(criteria, page));
     }
 
     @Override
-    public List<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria){
+    public List<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria) {
         return orderOperationLogMapper.findAll(criteria);
     }
 
@@ -53,6 +57,25 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
+    public void create(Order order, OrderAddressSnapshot addressSnapshot) {
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("order", order);
+        map.put("address", addressSnapshot);
+        String username = SecurityUtils.getCurrentUsername();
+        Timestamp time = new Timestamp(System.currentTimeMillis());
+        OrderOperationLog resources = new OrderOperationLog();
+        resources.setOrderNum(order.getOrderNum());
+        resources.setUsername(username);
+        resources.setUserType(ConstantsKey.BUYER);
+        resources.setOperation(OrderStatusEnum.ZERO.getKey());
+        resources.setOperationDescribe(OrderStatusEnum.ZERO.getValue());
+        resources.setRemark(username + ":" + time + ">" + OrderStatusEnum.ZERO.getValue() + ":" + order.getOrderNum());
+        resources.setSnapshotData(JSON.toJSONString(map));
+        resources.setOperationTime(time);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
     public void update(OrderOperationLog resources) {
         OrderOperationLog orderOperationLog = getById(resources.getLogId());
         orderOperationLog.copy(resources);
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
index 3ad516b..f8fe21d 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
@@ -36,12 +36,15 @@
 
     @Override
     public PageResult<OrderReturn> queryAll(OrderReturnQueryCriteria criteria, Page<Object> page) {
-        return PageUtil.toPage(orderReturnMapper.findAll(criteria, page));
+        criteria.setOffset(page.offset());
+        List<OrderReturn> list = orderReturnMapper.findAll(criteria, criteria.getBlurry());
+        Long total = orderReturnMapper.countAll(criteria, criteria.getBlurry());
+        return PageUtil.toPage(list, total);
     }
 
     @Override
     public List<OrderReturn> queryAll(OrderReturnQueryCriteria criteria) {
-        return orderReturnMapper.findAll(criteria);
+        return orderReturnMapper.findAll(criteria, criteria.getBlurry());
     }
 
     @Override
diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
index 243f9ea..be09c2c 100644
--- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
@@ -9,18 +9,14 @@
 import com.oying.modules.pc.product.service.ProductService;
 import com.oying.modules.pc.store.domain.Store;
 import com.oying.modules.pc.store.service.StoreService;
-import com.oying.modules.sh.domain.Order;
-import com.oying.modules.sh.domain.OrderAddressSnapshot;
-import com.oying.modules.sh.domain.OrderProductSnapshot;
-import com.oying.modules.sh.domain.UserAddress;
+import com.oying.modules.sh.domain.*;
 import com.oying.modules.sh.domain.request.GeneratorOrder;
 import com.oying.modules.sh.domain.request.ProductOrder;
 import com.oying.modules.sh.domain.request.SubmitOrder;
 import com.oying.modules.sh.domain.vo.OrderInfo;
+import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.modules.sh.domain.vo.ProductInfo;
-import com.oying.modules.sh.service.OrderAddressSnapshotService;
-import com.oying.modules.sh.service.OrderProductSnapshotService;
-import com.oying.modules.sh.service.UserAddressService;
+import com.oying.modules.sh.service.*;
 import com.oying.utils.*;
 import com.oying.utils.enums.GenerateEnum;
 import com.oying.utils.enums.OrderStatusEnum;
@@ -29,7 +25,6 @@
 import lombok.RequiredArgsConstructor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.oying.modules.sh.service.OrderService;
 import com.oying.modules.sh.domain.dto.OrderQueryCriteria;
 import com.oying.modules.sh.mapper.OrderMapper;
 import org.springframework.stereotype.Service;
@@ -59,19 +54,20 @@
     private final OrderAddressSnapshotService addressSnapshotService;
     private final RedisUtils redisUtils;
     private final StoreService storeService;
+    private final OrderOperationLogService operationLogService;
     private final static String DESCRIBE = "哦应:";
 
     @Override
     public PageResult<Order> queryAll(OrderQueryCriteria criteria, Page<Object> page) {
         criteria.setOffset(page.offset());
-        List<Order> list = orderMapper.findAll(criteria);
-        Long total = orderMapper.countAll(criteria);
+        List<Order> list = orderMapper.findAll(criteria, criteria.getBlurry());
+        Long total = orderMapper.countAll(criteria, criteria.getBlurry());
         return PageUtil.toPage(list, total);
     }
 
     @Override
     public List<Order> queryAll(OrderQueryCriteria criteria) {
-        return orderMapper.findAll(criteria);
+        return orderMapper.findAll(criteria, criteria.getBlurry());
     }
 
     @Override
@@ -122,19 +118,26 @@
         if (openid == null || openid.isEmpty()) {
             throw new BadRequestException("OPENID错误");
         }
+
+        // 门店信息
+        Store store = storeService.getById(submit.getStoreId());
+        if (amount.compareTo(store.getDeliveryMinimum()) >= 0) {
+            throw new BadRequestException("起送金额:" + store.getDeliveryMinimum());
+        }
         // 订单信息
         Order order = new Order();
         order.setOrderNum(orderNum);
+        order.setOrderStoreNum(redisUtils.generateOrderSn(Math.toIntExact(submit.getStoreId())).substring(orderNum.length() - 4));
         order.setOrderStatus(OrderStatusEnum.ZERO.getKey());
         order.setOrderStatusDescribe(OrderStatusEnum.ZERO.getValue());
         order.setOrderRemark(submit.getRemark() != null ? submit.getRemark() : "");
         order.setOrderTime(submit.getDateTime());
         order.setUserId(SecurityUtils.getCurrentUserId());
         order.setUsername(SecurityUtils.getCurrentUsername());
-        Store store = storeService.getById(submit.getStoreId());
         order.setStoreId(submit.getStoreId());
         order.setStoreName(store.getStoreName());
         order.setStoreLogo(store.getLogoImageUrl());
+        order.setSendPrice(store.getDeliveryFee());
         order.setOrderDescribe(DESCRIBE + submit.getStoreId());
         order.setOriginalPrice(amount);
         order.setPaidPrice(amount);
@@ -163,10 +166,14 @@
             order.setPayTime(DateUtil.localDateTimeFormat(now.toLocalDateTime(), DateUtil.SDF_YMDHMS));
         }
         UserAddress address = userAddressService.getById(submit.getAddressId());
-        OrderAddressSnapshot snapshot = getOrderAddressSnapshot(orderNum, address);
-        addressSnapshotService.save(snapshot);
+        OrderAddressSnapshot addressSnapshot = getOrderAddressSnapshot(orderNum, address);
+
+        addressSnapshotService.save(addressSnapshot);
         orderMapper.insert(order);
         productSnapshotService.saveBatch(snapshots);
+
+        order.setProductSnapshots(new HashSet<>(snapshots));
+        operationLogService.create(order, addressSnapshot);
         return order;
     }
 
@@ -228,13 +235,18 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Order getByOrderNum(String orderNum) {
-        return orderMapper.getByOrderNum(orderNum);
+    public OrderResponse getByOrderNum(String orderNum) {
+        OrderResponse response = new OrderResponse();
+        response.setOrder(orderMapper.getByOrderNum(orderNum));
+        response.setAddress(addressSnapshotService.queryByOrderNum(orderNum));
+        response.setOperation(operationLogService.getByOrderNum(orderNum));
+        return response;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void paySuccess(Order order) {
+    public void paySuccess(OrderResponse order) {
+        orderMapper.updateOrderStatus(order.getOrder().getOrderNum(), OrderStatusEnum.TWO.getKey(), OrderStatusEnum.TWO.getValue());
     }
 
     @Override
@@ -246,7 +258,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void closeOrder(String orderNum) {
-        Order order = getByOrderNum(orderNum);
+        Order order = orderMapper.getByOrderNum(orderNum);
         if (order == null) {
             throw new BadRequestException("订单不存在");
         }
@@ -271,6 +283,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void create(Order resources) {
         orderMapper.insert(resources);
+        throw new BadRequestException("未开放");
     }
 
     @Override
diff --git a/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java
index 2d6f04b..294e728 100644
--- a/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java
+++ b/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java
@@ -24,6 +24,9 @@
     private String blurry;
 
     @ApiModelProperty(value = "状态")
+    private String merchantType;
+
+    @ApiModelProperty(value = "状态")
     private String enabled;
     private List<Timestamp> createTime;
 }
diff --git a/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java
index fc2cc34..5e17186 100644
--- a/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java
@@ -15,19 +15,21 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.oying.utils.PageUtil;
+
 import java.util.List;
 import java.util.Map;
 import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
+
 import com.oying.utils.PageResult;
 
 /**
-* @description 服务实现
-* @author lixin
-* @date 2025-05-29
-**/
+ * @author lixin
+ * @description 服务实现
+ * @date 2025-05-29
+ **/
 @Service
 @RequiredArgsConstructor
 public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> implements MerchantService {
@@ -36,12 +38,12 @@
     private final UserMerchantService userMerchantService;
 
     @Override
-    public PageResult<Merchant> queryAll(MerchantsQueryCriteria criteria, Page<Object> page){
+    public PageResult<Merchant> queryAll(MerchantsQueryCriteria criteria, Page<Object> page) {
         return PageUtil.toPage(merchantMapper.findAll(criteria, page));
     }
 
     @Override
-    public List<Merchant> queryAll(MerchantsQueryCriteria criteria){
+    public List<Merchant> queryAll(MerchantsQueryCriteria criteria) {
         return merchantMapper.findAll(criteria);
     }
 
@@ -76,6 +78,7 @@
         List<Map<String, Object>> list = new ArrayList<>();
         for (Merchant merchant : all) {
             Map<String, Object> map = new LinkedHashMap<>();
+            map.put("商户类型", merchant.getMerchantType());
             map.put("名称", merchant.getMerchantName());
             map.put("商户编码", merchant.getMerchantCode());
             map.put("营业执照号", merchant.getBusinessLicense());
diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
index 5af3eb5..03ca27b 100644
--- a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
+++ b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
@@ -65,4 +65,4 @@
     </update>
 
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml
index c7d07c8..5301d9e 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml
@@ -18,7 +18,8 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        snapshot_id, order_num, receiver_name, receiver_phone, province, city, district, street, short_address, detail, longitude, latitude, tag
+        snapshot_id, order_num, receiver_name, receiver_phone, province, city, district, street, short_address,
+        detail, longitude, latitude, tag
     </sql>
 
     <select id="findAll" resultMap="BaseResultMap">
diff --git a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
index bd2fb2c..61211e2 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
@@ -4,20 +4,23 @@
     <resultMap id="BaseResultMap" type="com.oying.modules.sh.domain.Order">
         <id column="order_id" property="orderId"/>
         <result column="order_num" property="orderNum"/>
+        <result column="order_store_num" property="orderStoreNum"/>
         <result column="order_status" property="orderStatus"/>
         <result column="order_status_describe" property="orderStatusDescribe"/>
         <result column="order_remark" property="orderRemark"/>
         <result column="order_time" property="orderTime"/>
+        <result column="send_price" property="sendPrice"/>
+        <result column="send_type" property="sendType"/>
         <result column="user_id" property="userId"/>
         <result column="username" property="username"/>
         <result column="store_id" property="storeId"/>
         <result column="store_name" property="storeName"/>
         <result column="store_logo" property="storeLogo"/>
         <result column="order_describe" property="orderDescribe"/>
-        <result column="original_price" property="originalPrice"/>
-        <result column="paid_price" property="paidPrice"/>
-        <result column="actually_pay_price" property="actuallyPayPrice"/>
-        <result column="pay_state" property="payState"/>
+        <result column="order_original_price" property="originalPrice"/>
+        <result column="order_paid_price" property="paidPrice"/>
+        <result column="order_actually_pay_price" property="actuallyPayPrice"/>
+        <result column="order_pay_state" property="payState"/>
         <result column="pay_message" property="payMessage"/>
         <result column="pay_type" property="payType"/>
         <result column="pay_time" property="payTime"/>
@@ -33,6 +36,9 @@
         <result column="create_time" property="createTime"/>
         <result column="update_by" property="updateBy"/>
         <result column="update_time" property="updateTime"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_phone" property="riderPhone"/>
+        <result column="rider_name" property="riderName"/>
         <collection property="productSnapshots" ofType="com.oying.modules.sh.domain.OrderProductSnapshot">
             <id column="snapshot_id" property="snapshotId"/>
             <result column="product_id" property="productId"/>
@@ -53,16 +59,71 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        o.order_id, o.order_num, o.order_status, o.order_status_describe, o.order_remark, o.order_time, o.user_id, o.username, o.store_id,
-        o.store_name, o.store_logo, o.order_describe, o.original_price, o.paid_price, o.actually_pay_price, o.pay_state, o.pay_message,
-        o.pay_type, o.pay_time, o.expire_time, o.openid, o.app_id, o.timestamp, o.nonce_str, o.package_val, o.sign_type, o.pay_sign,
-        o.create_by, o.create_time, o.update_by, o.update_time
+        o.order_id, o.order_num, o.order_store_num, o.order_status, o.order_status_describe,
+        o.order_remark, o.order_time, o.send_time, o.send_type, o.user_id, o.username, o.store_id,
+        o.store_name, o.store_logo, o.order_describe, o.original_price order_original_price, o.paid_price order_paid_price,
+        o.actually_pay_price order_actually_pay_price, o.pay_state order_pay_state, o.pay_message, o.pay_type, o.pay_time, o.expire_time,
+        o.openid, o.app_id, o.timestamp, o.nonce_str, o.package_val, o.sign_type, o.pay_sign,
+        o.create_by, o.create_time, o.update_by, o.update_time, o.rider_id, o.rider_phone, o.rider_name
     </sql>
 
     <sql id="product_Column_List">
         p.snapshot_id, p.product_id, p.product_code, p.product_barcode, p.product_name, p.product_title,
         p.product_main_image, p.product_description, p.param_data, p.unit_price, p.detail_count, p.original_price, p.paid_price,
         p.actually_pay_price, p.pay_state
+    </sql>
+
+    <sql id="Where_Sql">
+        <where>
+            <if test="criteria.orderNum != null and criteria.orderNum != ''">
+                and o.order_num like concat('%',#{criteria.orderNum},'%')
+            </if>
+            <if test="criteria.orderStatus != null and criteria.orderStatus.size() > 0">
+                and o.order_status IN
+                <foreach collection="criteria.orderStatus" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="criteria.userId != null and criteria.userId != ''">
+                and o.user_id = #{criteria.userId}
+            </if>
+            <if test="criteria.username != null and criteria.username != ''">
+                and o.username like concat('%',#{criteria.username},'%')
+            </if>
+            <if test="criteria.storeId != null and criteria.storeId != ''">
+                and o.store_id = #{criteria.storeId}
+            </if>
+            <if test="criteria.orderDescribe != null and criteria.orderDescribe != ''">
+                and o.order_describe like concat('%',#{criteria.orderDescribe},'%')
+            </if>
+            <if test="criteria.payState != null and criteria.payState != ''">
+                and o.pay_state = #{criteria.payState}
+            </if>
+            <if test="criteria.payType != null and criteria.payType != ''">
+                and o.pay_type = #{criteria.payType}
+            </if>
+            <if test="criteria.payTime != null and criteria.payTime.size() > 0">
+                AND o.pay_time BETWEEN #{criteria.payTime[0]} AND #{criteria.payTime[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+    </sql>
+
+    <sql id="Where_Sql_Product">
+        <where>
+            <if test="blurry != null and blurry != ''">
+                and (p.product_code like concat('%',#{blurry},'%')
+                or p.product_barcode like concat('%',#{blurry},'%')
+                or p.product_name like concat('%',#{blurry},'%')
+                or p.product_title like concat('%',#{blurry},'%')
+                or p.product_description like concat('%',#{blurry},'%')
+                or o.orderNum like concat('%',#{blurry},'%')
+                or o.order_describe like concat('%',#{blurry},'%')
+                or o.username like concat('%',#{blurry},'%'))
+            </if>
+        </where>
     </sql>
 
     <update id="updatePayStatus">
@@ -79,6 +140,13 @@
         where order_num = #{orderNum}
     </update>
 
+    <update id="updateOrderStatus">
+        update sh_order
+        set order_status = #{key},
+            order_status_describe = #{value}
+        where order_num = #{orderNum}
+    </update>
+
     <select id="findAll" resultMap="BaseResultMap">
         select o.*,
         <include refid="product_Column_List"/>
@@ -86,59 +154,27 @@
         select
         <include refid="Base_Column_List"/>
         from sh_order as o
-        <where>
-            <if test="criteria.orderNum != null and criteria.orderNum != ''">
-                and o.order_num like concat('%',#{criteria.orderNum},'%')
-            </if>
-            <if test="criteria.orderStatus != null and criteria.orderStatus != ''">
-                and o.order_status = #{criteria.orderStatus}
-            </if>
-            <if test="criteria.userId != null and criteria.userId != ''">
-                and o.user_id = #{criteria.userId}
-            </if>
-            <if test="criteria.username != null and criteria.username != ''">
-                and o.username like concat('%',#{criteria.username},'%')
-            </if>
-            <if test="criteria.storeId != null and criteria.storeId != ''">
-                and o.store_id = #{criteria.storeId}
-            </if>
-            <if test="criteria.orderDescribe != null and criteria.orderDescribe != ''">
-                and o.order_describe like concat('%',#{criteria.orderDescribe},'%')
-            </if>
-            <if test="criteria.payState != null and criteria.payState != ''">
-                and o.pay_state = #{criteria.payState}
-            </if>
-            <if test="criteria.payType != null and criteria.payType != ''">
-                and o.pay_type = #{criteria.payType}
-            </if>
-            <if test="criteria.payTime != null and criteria.payTime.size() > 0">
-                AND o.pay_time BETWEEN #{criteria.payTime[0]} AND #{criteria.payTime[1]}
-            </if>
-            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
-                AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
-            </if>
-        </where>
+        <include refid="Where_Sql"/>
         order by o.order_id desc
         <if test="criteria.offset != null">
             limit #{criteria.offset}, #{criteria.size}
         </if>
         ) o
         left join sh_order_product_snapshot as p on p.order_num = o.order_num
-        where 1=1
-        <if test="criteria.blurry != null and criteria.blurry != ''">
-            and (o.product_code like concat('%',#{criteria.blurry},'%')
-            or o.product_barcode like concat('%',#{criteria.blurry},'%')
-            or o.product_name like concat('%',#{criteria.blurry},'%')
-            or o.product_title like concat('%',#{criteria.blurry},'%')
-            or o.product_description like concat('%',#{criteria.blurry},'%'))
-        </if>
+        <include refid="Where_Sql_Product"/>
         order by o.order_id desc
     </select>
     <select id="getByOrderNum" resultMap="BaseResultMap">
+        select o.*,
+        <include refid="product_Column_List"/>
+        from (
         select
         <include refid="Base_Column_List"/>
         from sh_order as o
+        ) o
+        left join sh_order_product_snapshot as p on p.order_num = o.order_num
         where o.order_num = #{orderNum}
+        order by o.order_id desc
     </select>
     <select id="countAll" resultType="java.lang.Long">
         select count(1)
@@ -152,47 +188,10 @@
         select
         <include refid="Base_Column_List"/>
         from sh_order as o
-        <where>
-            <if test="criteria.orderNum != null and criteria.orderNum != ''">
-                and o.order_num like concat('%',#{criteria.orderNum},'%')
-            </if>
-            <if test="criteria.orderStatus != null and criteria.orderStatus != ''">
-                and o.order_status = #{criteria.orderStatus}
-            </if>
-            <if test="criteria.userId != null and criteria.userId != ''">
-                and o.user_id = #{criteria.userId}
-            </if>
-            <if test="criteria.username != null and criteria.username != ''">
-                and o.username like concat('%',#{criteria.username},'%')
-            </if>
-            <if test="criteria.storeId != null and criteria.storeId != ''">
-                and o.store_id = #{criteria.storeId}
-            </if>
-            <if test="criteria.orderDescribe != null and criteria.orderDescribe != ''">
-                and o.order_describe like concat('%',#{criteria.orderDescribe},'%')
-            </if>
-            <if test="criteria.payState != null and criteria.payState != ''">
-                and o.pay_state = #{criteria.payState}
-            </if>
-            <if test="criteria.payType != null and criteria.payType != ''">
-                and o.pay_type = #{criteria.payType}
-            </if>
-            <if test="criteria.payTime != null and criteria.payTime.size() > 0">
-                AND o.pay_time BETWEEN #{criteria.payTime[0]} AND #{criteria.payTime[1]}
-            </if>
-            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
-                AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
-            </if>
-        </where>
+        <include refid="Where_Sql"/>
         ) o
         left join sh_order_product_snapshot as p on p.order_num = o.order_num
-        where 1=1
-        <if test="criteria.blurry != null and criteria.blurry != ''">
-            and (p.product_code like concat('%',#{criteria.blurry},'%')
-            or p.product_barcode like concat('%',#{criteria.blurry},'%')
-            or p.product_name like concat('%',#{criteria.blurry},'%')
-            or p.product_title like concat('%',#{criteria.blurry},'%')
-            or p.product_description like concat('%',#{criteria.blurry},'%'))
-        </if>) t
+        <include refid="Where_Sql_Product"/>
+        ) t
     </select>
 </mapper>
diff --git a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
index c975d0e..86f4724 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml
@@ -35,12 +35,12 @@
                 AND operation_time BETWEEN #{criteria.operationTime[0]} AND #{criteria.operationTime[1]}
             </if>
         </where>
-        order by log_id desc
+        order by log_id
     </select>
     <select id="getByOrderNum" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"/>
         from sh_order_operation_log
-        where order_num = #{orderNum} order by log_id desc
+        where order_num = #{orderNum} order by log_id
     </select>
 </mapper>
diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
index 4b091cd..de091c0 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
@@ -7,15 +7,19 @@
         <result column="return_status" property="returnStatus"/>
         <result column="return_status_describe" property="returnStatusDescribe"/>
         <result column="order_num" property="orderNum"/>
+        <result column="order_store_num" property="orderStoreNum"/>
+        <result column="order_time" property="orderTime"/>
+        <result column="send_price" property="sendPrice"/>
+        <result column="send_type" property="sendType"/>
         <result column="pay_type" property="payType"/>
         <result column="user_id" property="userId"/>
         <result column="username" property="username"/>
         <result column="store_id" property="storeId"/>
         <result column="store_name" property="storeName"/>
         <result column="store_logo" property="storeLogo"/>
-        <result column="original_price" property="originalPrice"/>
-        <result column="paid_price" property="paidPrice"/>
-        <result column="actually_pay_price" property="actuallyPayPrice"/>
+        <result column="order_original_price" property="originalPrice"/>
+        <result column="order_paid_price" property="paidPrice"/>
+        <result column="order_actually_pay_price" property="actuallyPayPrice"/>
         <result column="refund_price" property="refundPrice"/>
         <result column="refund_status" property="refundStatus"/>
         <result column="success_time" property="successTime"/>
@@ -31,63 +35,137 @@
         <result column="create_time" property="createTime"/>
         <result column="update_by" property="updateBy"/>
         <result column="update_time" property="updateTime"/>
+        <result column="rider_id" property="riderId"/>
+        <result column="rider_phone" property="riderPhone"/>
+        <result column="rider_name" property="riderName"/>
+        <collection property="productSnapshots" ofType="com.oying.modules.sh.domain.OrderReturnProductSnapshot">
+            <id column="snapshot_id" property="snapshotId"/>
+            <result column="product_id" property="productId"/>
+            <result column="product_code" property="productCode"/>
+            <result column="product_barcode" property="productBarcode"/>
+            <result column="product_name" property="productName"/>
+            <result column="product_title" property="productTitle"/>
+            <result column="product_main_image" property="productMainImage"/>
+            <result column="product_description" property="productDescription"/>
+            <result column="param_data" property="paramData"/>
+            <result column="unit_price" property="unitPrice"/>
+            <result column="detail_count" property="detailCount"/>
+            <result column="original_price" property="originalPrice"/>
+            <result column="paid_price" property="paidPrice"/>
+            <result column="actually_pay_price" property="actuallyPayPrice"/>
+        </collection>
     </resultMap>
 
     <sql id="Base_Column_List">
-        return_id, return_num, return_status, return_status_describe, order_num, pay_type, user_id, username, store_id, store_name, store_logo, original_price, paid_price, actually_pay_price, refund_price, refund_status, success_time, channel, reason, remark, photos, audit_status, audit_user, audit_time, audit_message, create_by, create_time, update_by, update_time
+        o.return_id, o.return_num, o.return_status, o.return_status_describe, o.order_num, o.order_store_num,
+        o.order_time, o.send_time, o.send_type, o.pay_type, o.user_id, o.username, o.store_id, o.store_name, o.store_logo,
+        o.original_price order_original_price, o.paid_price order_paid_price, o.actually_pay_price order_actually_pay_price,
+        o.refund_price, o.refund_status, o.success_time, o.channel, o.reason, o.remark, o.photos, o.audit_status,
+        o.audit_user, o.audit_time, o.audit_message, o.rider_id, o.rider_phone, o.rider_name,
+        o.create_by, o.create_time, o.update_by, o.update_time
     </sql>
+
+    <sql id="Product_Column_List">
+        p.snapshot_id, p.product_id, p.product_code, p.product_barcode, p.product_name, p.product_title, p.product_main_image,
+        p.product_description, p.param_data, p.unit_price, p.detail_count, p.original_price, p.paid_price, p.actually_pay_price
+    </sql>
+    <sql id="Where_sql">
+        <where>
+            <if test="criteria.returnNum != null">
+                and o.return_num like concat('%',#{criteria.returnNum},'%')
+            </if>
+            <if test="criteria.returnStatus != null and criteria.returnStatus.size() > 0">
+                and o.return_status IN
+                <foreach collection="criteria.returnStatus" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="criteria.orderNum != null">
+                and o.order_num like concat('%',#{criteria.orderNum},'%')
+            </if>
+            <if test="criteria.payType != null">
+                and o.pay_type = #{criteria.payType}
+            </if>
+            <if test="criteria.userId != null">
+                and o.user_id = #{criteria.userId}
+            </if>
+            <if test="criteria.username != null">
+                and o.username like concat('%',#{criteria.username},'%')
+            </if>
+            <if test="criteria.storeId != null">
+                and o.store_id = #{criteria.storeId}
+            </if>
+            <if test="criteria.refundStatus != null">
+                and o.refund_status = #{criteria.refundStatus}
+            </if>
+            <if test="criteria.auditUser != null">
+                and o.audit_user like concat('%',#{criteria.auditUser},'%')
+            </if>
+            <if test="criteria.successTime != null and criteria.successTime.size() > 0">
+                AND o.success_time BETWEEN #{criteria.successTime[0]} AND #{criteria.successTime[1]}
+            </if>
+            <if test="criteria.auditTime != null and criteria.auditTime.size() > 0">
+                AND o.audit_time BETWEEN #{criteria.auditTime[0]} AND #{criteria.auditTime[1]}
+            </if>
+            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
+                AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
+            </if>
+        </where>
+    </sql>
+
+    <sql id="Where_Sql_Product">
+        <where>
+            <if test="blurry != null and blurry != ''">
+                and (p.product_code like concat('%',#{blurry},'%')
+                or p.product_barcode like concat('%',#{blurry},'%')
+                or p.product_name like concat('%',#{blurry},'%')
+                or p.product_title like concat('%',#{blurry},'%')
+                or p.product_description like concat('%',#{blurry},'%')
+                or o.orderNum like concat('%',#{blurry},'%')
+                or o.order_describe like concat('%',#{blurry},'%')
+                or o.username like concat('%',#{blurry},'%')
+                or o.order_num like concat('%',#{blurry},'%'))
+            </if>
+        </where>
+    </sql>
+
     <update id="updatePayStatus">
-        update sh_order_return set return_status = #{payState}, success_time = #{payTime}
-                               where order_num = #{orderNum}
+        update sh_order_return
+        set return_status = #{payState},
+            success_time  = #{payTime}
+        where order_num = #{orderNum}
     </update>
 
     <select id="findAll" resultMap="BaseResultMap">
-        select
+        select o.* ,
+        <include refid="Product_Column_List"/>
+        from ( select
         <include refid="Base_Column_List"/>
-        from sh_order_return
-        <where>
-            <if test="criteria.returnNum != null">
-                and return_num like concat('%',#{criteria.returnNum},'%')
-            </if>
-            <if test="criteria.returnStatus != null">
-                and return_status = #{criteria.returnStatus}
-            </if>
-            <if test="criteria.orderNum != null">
-                and order_num like concat('%',#{criteria.orderNum},'%')
-            </if>
-            <if test="criteria.payType != null">
-                and pay_type = #{criteria.payType}
-            </if>
-            <if test="criteria.userId != null">
-                and user_id = #{criteria.userId}
-            </if>
-            <if test="criteria.username != null">
-                and username like concat('%',#{criteria.username},'%')
-            </if>
-            <if test="criteria.storeId != null">
-                and store_id = #{criteria.storeId}
-            </if>
-            <if test="criteria.refundStatus != null">
-                and refund_status = #{criteria.refundStatus}
-            </if>
-            <if test="criteria.auditUser != null">
-                and audit_user like concat('%',#{criteria.auditUser},'%')
-            </if>
-            <if test="criteria.successTime != null and criteria.successTime.size() > 0">
-                AND success_time BETWEEN #{criteria.successTime[0]} AND #{criteria.successTime[1]}
-            </if>
-            <if test="criteria.auditTime != null and criteria.auditTime.size() > 0">
-                AND audit_time BETWEEN #{criteria.auditTime[0]} AND #{criteria.auditTime[1]}
-            </if>
-            <if test="criteria.createTime != null and criteria.createTime.size() > 0">
-                AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]}
-            </if>
-        </where>
-        order by return_id desc
+        from sh_order_return as o
+        <include refid="Where_sql"/>
+        order by o.return_id desc ) o
+        left join sh_order_return_product_snapshot as p on p.return_num = o.return_num
+        <include refid="Where_Sql_Product"/>
+        order by o.order_id desc
     </select>
     <select id="getByReturnNum" resultMap="BaseResultMap">
-        select
+        select o.* from ( select
         <include refid="Base_Column_List"/>
-        from sh_order_return where return_num = #{returnNum}
+        from sh_order_return as o ) o
+        left join sh_order_return_product_snapshot as p on p.return_num = o.return_num
+        from sh_order_return as o where o.return_num = #{returnNum}
+    </select>
+    <select id="countAll" resultType="java.lang.Long">
+        select count(1) from (
+        select distinct o.*
+        p.product_code, p.product_barcode, p.product_name, p.product_title, p.product_description
+        from ( select
+        <include refid="Base_Column_List"/>
+        from sh_order_return as o
+        <include refid="Where_sql"/>
+        ) o
+        left join sh_order_return_product_snapshot as p on p.return_num = o.return_num
+        <include refid="Where_Sql_Product"/>
+        ) t
     </select>
 </mapper>
diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
index 8b47565..34006bf 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml
@@ -42,6 +42,6 @@
         <include refid="Base_Column_List"/>
         from sh_order_return_operation_log
         where return_num = #{returnNum}
-        order by log_id desc
+        order by log_id
     </select>
 </mapper>
diff --git a/oying-system/src/main/resources/mapper/system/MerchantMapper.xml b/oying-system/src/main/resources/mapper/system/MerchantMapper.xml
index 1c9d082..d0e02ff 100644
--- a/oying-system/src/main/resources/mapper/system/MerchantMapper.xml
+++ b/oying-system/src/main/resources/mapper/system/MerchantMapper.xml
@@ -3,6 +3,7 @@
 <mapper namespace="com.oying.modules.system.mapper.MerchantMapper">
     <resultMap id="BaseResultMap" type="com.oying.modules.system.domain.Merchant">
         <id column="merchant_id" property="merchantId"/>
+        <result column="merchant_type" property="merchantType"/>
         <result column="merchant_name" property="merchantName"/>
         <result column="merchant_code" property="merchantCode"/>
         <result column="business_license" property="businessLicense"/>
@@ -20,7 +21,7 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        merchant_id, merchant_name, merchant_code, business_license, business_license_path, contact_mobile, merchant_sort, enabled, create_by, update_by, create_time, update_time, audit_user, audit_time, audit_message
+        merchant_id, merchant_type, merchant_name, merchant_code, business_license, business_license_path, contact_mobile, merchant_sort, enabled, create_by, update_by, create_time, update_time, audit_user, audit_time, audit_message
     </sql>
 
     <select id="findAll" resultMap="BaseResultMap">
@@ -36,6 +37,9 @@
                 or contact_mobile like concat('%', #{criteria.blurry}, '%')
                 )
             </if>
+            <if test="criteria.merchantType != null and criteria.merchantType != ''">
+                and merchant_type = #{criteria.merchantType}
+            </if>
             <if test="criteria.enabled != null">
                 and enabled = #{criteria.enabled}
             </if>

--
Gitblit v1.9.3