From f28edc2cbe546c58e60065bd3cbb04125e346077 Mon Sep 17 00:00:00 2001
From: leomonM <2233021400@qq.com>
Date: Mon, 25 Aug 2025 21:28:15 +0800
Subject: [PATCH] 消息通知

---
 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java |  104 +++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 87 insertions(+), 17 deletions(-)

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 efd75ab..02eb802 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,27 +1,31 @@
 package com.oying.modules.sh.service.impl;
 
 import com.alibaba.fastjson2.JSON;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.exception.BadRequestException;
+import com.oying.modules.message.common.MesTypeEnum;
+import com.oying.modules.message.common.MsgStatusEnum;
+import com.oying.modules.message.service.MesMsgRecordService;
 import com.oying.modules.sh.domain.OrderOperationLog;
+import com.oying.modules.sh.domain.dto.OrderOperationLogQueryCriteria;
 import com.oying.modules.sh.domain.vo.OrderResponse;
 import com.oying.modules.sh.mapper.OrderMapper;
+import com.oying.modules.sh.mapper.OrderOperationLogMapper;
+import com.oying.modules.sh.service.OrderOperationLogService;
 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;
-import com.oying.modules.sh.service.OrderOperationLogService;
-import com.oying.modules.sh.domain.dto.OrderOperationLogQueryCriteria;
-import com.oying.modules.sh.mapper.OrderOperationLogMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.sql.Timestamp;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author lixin
@@ -34,6 +38,7 @@
 
     private final OrderOperationLogMapper orderOperationLogMapper;
     private final OrderMapper orderMapper;
+    private final MesMsgRecordService mesMsgRecordService;
 
     @Override
     public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page) {
@@ -46,50 +51,115 @@
     }
 
     @Override
-    public List<OrderOperationLog> getByOrderNum(String orderNum) {
-        return orderOperationLogMapper.getByOrderNum(orderNum);
+    public List<OrderOperationLog> getByOrderNum(String orderNum, String type) {
+        return orderOperationLogMapper.getByOrderNum(orderNum, type);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void create(OrderResponse response, OrderStatusEnum statusEnum, String cardName) {
+    public synchronized void create(OrderResponse response, OrderStatusEnum statusEnum, String cardName) {
         String userType = ConstantsKey.BUYER;
         String username = null;
+        Timestamp time = new Timestamp(System.currentTimeMillis());
         switch (statusEnum) {
+            case NINE:
+                if (response.getOrder().getOrderStatus().equals(OrderStatusEnum.NINE.getKey())) {
+                    throw new BadRequestException("订单已取消");
+                }
+                if (response.getOrder().getOrderStatus() > OrderStatusEnum.TWO.getKey()) {
+                    throw new BadRequestException(OrderStatusEnum.getValue(response.getOrder().getOrderStatus()));
+                }
             case ZERO:
             case ONE:
             case EIGHT:
-            case NINE:
                 userType = ConstantsKey.BUYER;
                 break;
             case TWO:
                 username = response.getOrder().getUsername();
-            case FOUR:
+                OrderOperationLog log1 = new OrderOperationLog();
+                log1.setOrderNum(response.getOrder().getOrderNum());
+                log1.setUsername(username);
+                log1.setUserType(userType);
+                log1.setOperation(OrderStatusEnum.ONE.getKey());
+                log1.setOperationType(OrderStatusEnum.ONE.getCode());
+                log1.setOperationDescribe(OrderStatusEnum.ONE.getValue());
+                log1.setRemark(username + ":" + time + ">" + OrderStatusEnum.ONE.getValue() + ":" + response.getOrder().getOrderNum());
+                Map<String, Object> map1 = new LinkedHashMap<>();
+                response.getOrder().setOrderStatus(OrderStatusEnum.ONE.getKey());
+                response.getOrder().setOrderStatusDescribe(OrderStatusEnum.ONE.getValue());
+                map1.put("order", response.getOrder());
+                map1.put("address", response.getAddress());
+                log1.setSnapshotData(JSON.toJSONString(map1));
+                log1.setOperationTime(time);
+                orderOperationLogMapper.insert(log1);
+                response.getOrder().setOrderStatus(OrderStatusEnum.TWO.getKey());
+                response.getOrder().setOrderStatusDescribe(OrderStatusEnum.TWO.getValue());
+            case THREE:
                 userType = ConstantsKey.MERCHANT;
                 break;
-            case THREE:
+            case FOUR:
                 orderMapper.updateRider(response.getOrder().getOrderNum(), SecurityUtils.getCurrentUserId(), SecurityUtils.getCurrentUsername(), cardName);
             case FIVE:
             case SIX:
             case SEVEN:
                 userType = ConstantsKey.RIDER;
+                username = SecurityUtils.getCurrentUsername();
+                OrderOperationLog log2 = new OrderOperationLog();
+                log2.setOrderNum(response.getOrder().getOrderNum());
+                log2.setUsername(username);
+                log2.setUserType(userType);
+                log2.setOperation(statusEnum.getKey());
+                log2.setOperationType(statusEnum.getCode());
+                log2.setOperationDescribe(statusEnum.getValue());
+                log2.setRemark(username + ":" + time + ">" + statusEnum.getValue() + ":" + response.getOrder().getOrderNum());
+                Map<String, Object> map2 = new LinkedHashMap<>();
+                map2.put("order", response.getOrder());
+                map2.put("address", response.getAddress());
+                log2.setSnapshotData(JSON.toJSONString(map2));
+                log2.setOperationTime(time);
+                orderOperationLogMapper.insert(log2);
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                statusEnum = OrderStatusEnum.EIGHT;
+                break;
+            case TEN:
+            case TWELVE:
+                userType = ConstantsKey.BUYER;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
+                break;
+            case FIFTEEN:
+                userType = ConstantsKey.BUYER;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue());
+                break;
+            case ELEVEN:
+                userType = ConstantsKey.MERCHANT;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue());
+                break;
+            case THIRTEEN:
+            case FOURTEEN:
+                userType = ConstantsKey.MERCHANT;
+                orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
                 break;
             default:
+                throw new BadRequestException("状态错误");
         }
         if (username == null) {
             username = SecurityUtils.getCurrentUsername();
         }
-        Timestamp time = new Timestamp(System.currentTimeMillis());
         OrderOperationLog resources = new OrderOperationLog();
         resources.setOrderNum(response.getOrder().getOrderNum());
         resources.setUsername(username);
         resources.setUserType(userType);
         resources.setOperation(statusEnum.getKey());
+        resources.setOperationType(statusEnum.getCode());
         resources.setOperationDescribe(statusEnum.getValue());
         resources.setRemark(username + ":" + time + ">" + statusEnum.getValue() + ":" + response.getOrder().getOrderNum());
-        resources.setSnapshotData(JSON.toJSONString(response));
+        Map<String, Object> map = new LinkedHashMap<>();
+        map.put("order", response.getOrder());
+        map.put("address", response.getAddress());
+        resources.setSnapshotData(JSON.toJSONString(map));
         resources.setOperationTime(time);
         orderOperationLogMapper.insert(resources);
+        mesMsgRecordService.insertOrderMsg(response.getOrder(), MsgStatusEnum.MERCHANT_ACCEPTED, MesTypeEnum.ORDER);
         orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue());
     }
 

--
Gitblit v1.9.3