From 73195f372cdb8d59b74ee86b76fbf4c9595caea1 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 27 十月 2025 19:01:41 +0800
Subject: [PATCH] 虚拟号修改

---
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java |  115 ++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 81 insertions(+), 34 deletions(-)

diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
index 2d5a75d..eae3271 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
@@ -15,10 +15,7 @@
 import com.ruoyi.admin.utils.DescribeInstances;
 import com.ruoyi.admin.utils.HttpUtil;
 import com.ruoyi.admin.utils.PrivateNumberUtil;
-import com.ruoyi.admin.vo.OrderByServeRecordVO;
-import com.ruoyi.admin.vo.OrderDetailVO;
-import com.ruoyi.admin.vo.OrderReasinDto;
-import com.ruoyi.admin.vo.ReassinDto;
+import com.ruoyi.admin.vo.*;
 import com.ruoyi.admin.voice.util.AXBUtil;
 import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.domain.BaseEntity;
@@ -113,6 +110,8 @@
     private PrivateNumberUtil privateNumberUtil;
     @Autowired
     private IamConfigService iamConfigService;
+    @Autowired
+    private OrderRecordingService orderRecordingService;
     /**
      * 雪花算法类
      */
@@ -357,9 +356,10 @@
         }else {
             order.setOrderMoney(one.getRecoveryPrice());
         }
-        Boolean data = orderClient.save(order).getData();
-        if (null == data) {
-            return R.fail(orderClient.save(order).getMsg());
+        R<String> saveResult = orderClient.save(order);
+        String orderId = saveResult.getData();
+        if (!StringUtils.hasLength(orderId)) {
+            return R.fail(saveResult.getMsg());
         }
         System.out.println("服务人员id:" + order.getServerId());
         ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(order.getServerId()));
@@ -368,7 +368,31 @@
             System.out.println("服务端发送消息到: " + order.getServerId());
             NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
         }
-        return data ? R.ok() : R.fail();
+
+        if (null != order.getServerId()) {
+            MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+                    .eq(MasterWorker::getId, order.getServerId())
+                    .eq(MasterWorker::getIsDelete, 0).one();
+            // 虚拟号码配置
+            IamConfig iamConfig = iamConfigService.getById(1);
+            if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){
+                try{
+                    // 虚拟号码  师傅号码备案
+                    String fileName = privateNumberUtil.uploadNumberFile(masterWorker.getProfilePicture()).getData();
+                    R r = privateNumberUtil.addANumber(masterWorker.getPhone(), masterWorker.getRealName(), masterWorker.getIdNumber(), fileName);
+                }catch (Exception e){
+                    throw new GlobalException("虚拟号码绑定异常!");
+                }
+                // 虚拟号码绑定
+                String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone());
+                // 存储绑定后的唯一标识
+                JSONObject jsonObject = JSONObject.parseObject(result);
+                String subscriptionId = jsonObject.getString("subscriptionId");
+                orderClient.updateSubscriptionId(orderId, subscriptionId,iamConfig.getVirtualNumber());
+            }
+        }
+
+        return StringUtils.hasLength(orderId) ? R.ok() : R.fail();
     }
 
 
@@ -401,6 +425,17 @@
                     .eq(MasterWorker::getIsDelete, 0).one();
             order.setServerName(masterWorker.getRealName());
             order.setServerPhone(masterWorker.getPhone());
+
+            IamConfig iamConfig = iamConfigService.getById(1);
+            if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){
+                // 虚拟号码绑定
+                String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone());
+                // 存储绑定后的唯一标识
+                JSONObject jsonObject = JSONObject.parseObject(result);
+                String subscriptionId = jsonObject.getString("subscriptionId");
+                orderClient.updateSubscriptionId(orderData.getId(), subscriptionId,iamConfig.getVirtualNumber());
+            }
+
         } else {
             // 待派单状态
             order.setState(Constants.ZERO);
@@ -442,15 +477,21 @@
             MasterWorker masterWorker = masterWorkerService.lambdaQuery()
                     .eq(MasterWorker::getId, orderReasinDto.getWorkerId())
                     .eq(MasterWorker::getIsDelete, 0).one();
+            Order order1 = orderClient.detail(orderId.getOrderId()).getData();
+            if(Objects.nonNull(order1.getIsOpenVirtualNumber()) && order1.getIsOpenVirtualNumber() == 1){
+                try{
+                    // 虚拟号码  师傅号码备案
+                    String fileName = privateNumberUtil.uploadNumberFile(masterWorker.getProfilePicture()).getData();
+                    R r = privateNumberUtil.addANumber(masterWorker.getPhone(), masterWorker.getRealName(), masterWorker.getIdNumber(), fileName);
+                    if(r.getCode() == 500){
+                        throw new GlobalException(r.getMsg());
+                    }
+                }catch (Exception e){
+                    throw new GlobalException("虚拟号码绑定异常!");
+                }
+            }
             Order order = orderClient.exchangeOrder(orderId.getType(), orderId.getOrderId(), orderReasinDto.getWorkerId(),
                     masterWorker.getRealName(), masterWorker.getPhone()).getData();
-            try{
-                // 虚拟号码  师傅号码备案
-                String fileName = privateNumberUtil.uploadNumberFile(masterWorker.getProfilePicture()).getData();
-                R r = privateNumberUtil.addANumber(masterWorker.getPhone(), masterWorker.getRealName(), masterWorker.getIdNumber(), fileName);
-            }catch (Exception e){
-                throw new GlobalException("虚拟号码绑定异常!");
-            }
             // 虚拟号码配置
             IamConfig iamConfig = iamConfigService.getById(1);
             // 订单派单
@@ -467,28 +508,33 @@
                 if (order.getState().equals(Constants.TWO)) {
                     orderClient.updateStateAndArrivalTime(orderId.getOrderId(), Constants.ONE);
                 }
-                if(StringUtils.hasLength(order.getSubscriptionId())){
-                    // 虚拟号码更换
-                    AXBUtil.axbModifyNumber(iamConfig.getAppKey(),iamConfig.getAppSecret(),order.getSubscriptionId(), order.getReservationPhone(), masterWorker.getPhone());
-                }else {
+
+                if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){
+                    if(StringUtils.hasLength(order.getSubscriptionId())){
+                        // 虚拟号码更换
+                        AXBUtil.axbModifyNumber(iamConfig.getAppKey(),iamConfig.getAppSecret(),order.getSubscriptionId(), order.getReservationPhone(), masterWorker.getPhone());
+                    }else {
+                        // 虚拟号码绑定
+                        String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone());
+                        // 存储绑定后的唯一标识
+                        JSONObject jsonObject = JSONObject.parseObject(result);
+                        String subscriptionId = jsonObject.getString("subscriptionId");
+                        orderClient.updateSubscriptionId(order.getId(), subscriptionId,iamConfig.getVirtualNumber());
+                    }
+                }
+
+
+            }else {
+                orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime());
+                orderClient.updateState(order.getId(), 7);
+                if(Objects.nonNull(order.getIsOpenVirtualNumber()) && order.getIsOpenVirtualNumber() == 1){
                     // 虚拟号码绑定
-                    String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), order.getOrderNumber(), order.getReservationPhone(), masterWorker.getPhone());
+                    String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), iamConfig.getVirtualNumber(), order.getReservationPhone(), masterWorker.getPhone());
                     // 存储绑定后的唯一标识
                     JSONObject jsonObject = JSONObject.parseObject(result);
                     String subscriptionId = jsonObject.getString("subscriptionId");
                     orderClient.updateSubscriptionId(order.getId(), subscriptionId,iamConfig.getVirtualNumber());
                 }
-
-            }else {
-                orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime());
-                orderClient.updateState(order.getId(), 7);
-                // 虚拟号码绑定
-                String result = AXBUtil.axbBindNumber(iamConfig.getAppKey(), iamConfig.getAppSecret(), order.getOrderNumber(), order.getReservationPhone(), masterWorker.getPhone());
-                // 存储绑定后的唯一标识
-                JSONObject jsonObject = JSONObject.parseObject(result);
-                String subscriptionId = jsonObject.getString("subscriptionId");
-                orderClient.updateSubscriptionId(order.getId(), subscriptionId,iamConfig.getVirtualNumber());
-
             }
             ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(orderReasinDto.getWorkerId()));
             if (null != context) {
@@ -996,9 +1042,10 @@
             }else {
                 order.setOrderMoney(one.getRecoveryPrice());
             }
-            Boolean data = orderClient.save(order).getData();
-            if (null == data) {
-                return R.fail(orderClient.save(order).getMsg());
+            R<String> saveResult = orderClient.save(order);
+            String orderId = saveResult.getData();
+            if (!StringUtils.hasLength(orderId)) {
+                return R.fail(saveResult.getMsg());
             }
             System.out.println("服务人员id:" + order.getServerId());
             ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(order.getServerId()));

--
Gitblit v1.7.1