From 6d3f43aceecf5cb35c8440e8593263b0ca1bdcd6 Mon Sep 17 00:00:00 2001
From: xin <1099200748@qq.com>
Date: Mon, 14 Jul 2025 21:56:02 +0800
Subject: [PATCH] 订单流程

---
 oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java                   |    2 +
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java |   45 ++++++++++++++--------
 oying-system/src/main/resources/mapper/sh/OrderMapper.xml                                      |    5 +-
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java             |   25 +++++++-----
 oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java                      |    3 +
 oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java          |   12 +----
 oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java         |    3 +
 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java                        |    2 
 oying-system/src/main/resources/config/application.yml                                         |    2 
 oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java                          |    1 
 10 files changed, 58 insertions(+), 42 deletions(-)

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 f7e4a21..b5e7f14 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
@@ -16,6 +16,7 @@
     SIX(6, "骑手已取货,正在送货"),
     SEVEN(7, "商品已送达"),
     EIGHT(8, "订单已完成"),
+    NINE(9, "用户取消订单"),
     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 da47970..6915ba3 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
@@ -9,6 +9,7 @@
 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.OrderStatusEnum;
 import com.oying.utils.enums.PayStateEnum;
 import com.oying.utils.enums.PayTypeEnum;
 import lombok.RequiredArgsConstructor;
@@ -61,7 +62,7 @@
                                     PayStateEnum stateEnum = PayStateEnum.NOTPAY;
                                     if ("0".equals(map.get("pay_result"))) {
                                         stateEnum = PayStateEnum.SUCCESS;
-                                        orderService.operationLog(order);
+                                        orderService.operationLog(order, OrderStatusEnum.TWO);
                                     }
                                     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/vo/OrderResponse.java b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java
index 37d2760..b6fe370 100644
--- 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
@@ -3,6 +3,7 @@
 import com.oying.modules.sh.domain.Order;
 import com.oying.modules.sh.domain.OrderAddressSnapshot;
 import com.oying.modules.sh.domain.OrderOperationLog;
+import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -15,6 +16,7 @@
  */
 @Getter
 @Setter
+@AllArgsConstructor
 public class OrderResponse {
 
     private Order order;
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 8172479..ffd2df6 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
@@ -28,7 +28,7 @@
 
     void updatePayStatus(String orderNum, String payState, String payMessage, String payTime);
 
-    void updateCloseStatus(String orderNum, String payState);
+    void updateCloseStatus(String orderNum, String payState, String payMessage);
 
     void updateOrderStatus(String orderNum, Integer key, String value);
 }
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 482091c..c24638b 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,7 +1,5 @@
 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;
@@ -9,7 +7,9 @@
 import javax.servlet.http.HttpServletResponse;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.utils.PageResult;
+import com.oying.utils.enums.OrderStatusEnum;
 
 /**
 * @description 服务接口
@@ -34,15 +34,9 @@
     List<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria);
 
     /**
-    * 创建
-    * @param resources /
-    */
-    void create(OrderOperationLog resources);
-
-    /**
      * 创建
      */
-    void create(Order order, OrderAddressSnapshot addressSnapshot);
+    void create(OrderResponse response, OrderStatusEnum statusEnum);
 
     /**
     * 编辑
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 4ac0a58..c6c1da5 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
@@ -15,6 +15,7 @@
 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.OrderStatusEnum;
 import com.oying.utils.enums.PayStateEnum;
 
 /**
@@ -47,7 +48,7 @@
 
     OrderResponse getByOrderNum(String orderNum);
 
-    void operationLog(OrderResponse order);
+    void operationLog(OrderResponse order, OrderStatusEnum stateEnum);
 
     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 a35bddc..3a1afcf 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,8 +1,6 @@
 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.modules.sh.domain.vo.OrderResponse;
 import com.oying.modules.sh.mapper.OrderMapper;
@@ -54,27 +52,40 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void create(OrderOperationLog resources) {
-        orderOperationLogMapper.insert(resources);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void create(Order order, OrderAddressSnapshot addressSnapshot) {
-        OrderResponse response = new OrderResponse();
-        response.setOrder(order);
-        response.setAddress(addressSnapshot);
+    public void create(OrderResponse response, OrderStatusEnum statusEnum) {
+        String userType = ConstantsKey.BUYER;
+        switch (statusEnum) {
+            case ZERO:
+            case ONE:
+            case EIGHT:
+            case NINE:
+                userType = ConstantsKey.BUYER;
+                break;
+            case TWO:
+            case FOUR:
+                userType = ConstantsKey.MERCHANT;
+                break;
+            case THREE:
+            case FIVE:
+            case SIX:
+            case SEVEN:
+                userType = ConstantsKey.RIDER;
+                break;
+            default:
+        }
         String username = SecurityUtils.getCurrentUsername();
         Timestamp time = new Timestamp(System.currentTimeMillis());
         OrderOperationLog resources = new OrderOperationLog();
-        resources.setOrderNum(order.getOrderNum());
+        resources.setOrderNum(response.getOrder().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.setUserType(userType);
+        resources.setOperation(statusEnum.getKey());
+        resources.setOperationDescribe(statusEnum.getValue());
+        resources.setRemark(username + ":" + time + ">" + statusEnum.getValue() + ":" + response.getOrder().getOrderNum());
         resources.setSnapshotData(JSON.toJSONString(response));
         resources.setOperationTime(time);
+        orderOperationLogMapper.insert(resources);
+        orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
     }
 
     @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 f7e251a..d4a1f7f 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
@@ -173,7 +173,9 @@
         productSnapshotService.saveBatch(snapshots);
 
         order.setProductSnapshots(new HashSet<>(snapshots));
-        operationLogService.create(order, addressSnapshot);
+        OrderResponse response = new OrderResponse(order, addressSnapshot, null);
+
+        operationLogService.create(response, OrderStatusEnum.ZERO);
         return order;
     }
 
@@ -236,17 +238,15 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     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;
+        return new OrderResponse(orderMapper.getByOrderNum(orderNum),
+                addressSnapshotService.queryByOrderNum(orderNum),
+                operationLogService.getByOrderNum(orderNum));
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void operationLog(OrderResponse order) {
-        orderMapper.updateOrderStatus(order.getOrder().getOrderNum(), OrderStatusEnum.TWO.getKey(), OrderStatusEnum.TWO.getValue());
+    public void operationLog(OrderResponse order, OrderStatusEnum stateEnum) {
+        operationLogService.create(order, stateEnum);
     }
 
     @Override
@@ -258,9 +258,13 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void closeOrder(String orderNum) {
-        Order order = orderMapper.getByOrderNum(orderNum);
+        OrderResponse response = getByOrderNum(orderNum);
+        Order order = response.getOrder();
         if (order == null) {
             throw new BadRequestException("订单不存在");
+        }
+        if (!SecurityUtils.getCurrentUserId().equals(order.getUserId())) {
+            throw new BadRequestException("不能修改他人订单");
         }
         if (!order.getPayState().equals(PayStateEnum.NOTPAY.getKey())) {
             throw new BadRequestException(PayStateEnum.getValue(order.getPayState()));
@@ -276,7 +280,8 @@
                 swiftPassService.closeOrder(orderNum, anEnum);
                 break;
         }
-        orderMapper.updateCloseStatus(orderNum, PayStateEnum.CLOSED.getKey());
+        operationLogService.create(response, OrderStatusEnum.NINE);
+        orderMapper.updateCloseStatus(orderNum, PayStateEnum.CLOSED.getKey(), PayStateEnum.CLOSED.getValue());
     }
 
     @Override
diff --git a/oying-system/src/main/resources/config/application.yml b/oying-system/src/main/resources/config/application.yml
index 85e4332..b916632 100644
--- a/oying-system/src/main/resources/config/application.yml
+++ b/oying-system/src/main/resources/config/application.yml
@@ -34,7 +34,7 @@
   redis:
     #数据库索引
     database: 0
-    host: 192.168.18.13
+    host: 127.0.0.1
     port: 6379
     password:
     #连接超时时间
diff --git a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
index 61211e2..1f46c1c 100644
--- a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
+++ b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml
@@ -136,13 +136,14 @@
 
     <update id="updateCloseStatus">
         update sh_order
-        set pay_state = #{payState}
+        set pay_state   = #{payState},
+            pay_message = #{payMessage}
         where order_num = #{orderNum}
     </update>
 
     <update id="updateOrderStatus">
         update sh_order
-        set order_status = #{key},
+        set order_status          = #{key},
             order_status_describe = #{value}
         where order_num = #{orderNum}
     </update>

--
Gitblit v1.9.3