From 640d93c464c65a0ef128f7f357a3e9abe44fbd2c Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 21 十月 2025 15:10:12 +0800
Subject: [PATCH] 虚拟号码通话
---
ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java | 126 +++++++++++++++++++++---------------------
1 files changed, 63 insertions(+), 63 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 24c280a..2d5a75d 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
@@ -14,13 +14,16 @@
import com.ruoyi.admin.service.*;
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.voice.util.AXBUtil;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.GaoDeMapUtil;
@@ -61,6 +64,7 @@
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
@@ -100,7 +104,15 @@
private ExchangeDispatchClient dispatchClient;
@Resource
private TokenService tokenService;
+ @Resource
+ private RecoveryClassifyService recoveryClassifyService;
+ @Resource
+ private FranchiseeService franchiseeService;
+ @Resource
+ private PrivateNumberUtil privateNumberUtil;
+ @Autowired
+ private IamConfigService iamConfigService;
/**
* 雪花算法类
*/
@@ -144,11 +156,6 @@
}
return R.ok(orderDetailVO);
}
- @Resource
- private RecoveryClassifyService recoveryClassifyService;
-
- @Resource
- private FranchiseeService franchiseeService;
/**
* 订单列表
*
@@ -429,70 +436,65 @@
@RequiresPermissions("order_reassignment")
@ApiOperation(value = "订单列表-订单派单/改派", tags = {"后台-订单管理"})
@PostMapping(value = "/reassignment")
-
@Transactional(rollbackFor = Exception.class)
public R<String> reassignment(@RequestBody OrderReasinDto orderReasinDto) {
-// String[] split = orderIds.split(",");
for (ReassinDto orderId : orderReasinDto.getReassinDtos()) {
-
- MasterWorker masterWorker = masterWorkerService.lambdaQuery()
- .eq(MasterWorker::getId, orderReasinDto.getWorkerId())
- .eq(MasterWorker::getIsDelete, 0).one();
- Order item = orderClient.detail(orderId.getOrderId()).getData();
- Order order = orderClient.exchangeOrder(orderId.getType(), orderId.getOrderId(), orderReasinDto.getWorkerId(),
- masterWorker.getRealName(), masterWorker.getPhone()).getData();
- // 订单派单
- boolean result = true;
- if (Constants.TWO.equals(orderId.getType())) {
- orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime());
-
- if (order.getState().equals(Constants.SIX) || order.getState().equals(Constants.THREE)) {
- orderClient.updateState(order.getId(), 7);
-
- //如果是待改派,将上门时间设置为最新的,并且更新再投原因
- if (order.getState().equals(Constants.SIX)){
- dispatchClient.changeReason(order.getId(), "");
+ MasterWorker masterWorker = masterWorkerService.lambdaQuery()
+ .eq(MasterWorker::getId, orderReasinDto.getWorkerId())
+ .eq(MasterWorker::getIsDelete, 0).one();
+ 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);
+ // 订单派单
+ if (Constants.TWO.equals(orderId.getType())) {
+ orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime());
+ if (order.getState().equals(Constants.SIX) || order.getState().equals(Constants.THREE)) {
+ orderClient.updateState(order.getId(), 7);
+ //如果是待改派,将上门时间设置为最新的,并且更新再投原因
+ if (order.getState().equals(Constants.SIX)){
+ dispatchClient.changeReason(order.getId(), "");
+ }
+ }
+ // 订单状态为 待完工时,需要更改状态 待上门且清空师傅到达预约点时间
+ 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 {
+ // 虚拟号码绑定
+ 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());
}
+ }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());
+
}
- // 订单状态为 待完工时,需要更改状态 待上门且清空师傅到达预约点时间
- if (order.getState().equals(Constants.TWO)) {
- orderClient.updateStateAndArrivalTime(orderId.getOrderId(), Constants.ONE);
+ ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(orderReasinDto.getWorkerId()));
+ if (null != context) {
+ NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
}
-
-
-
-
- // 生成改派信息
-// ChangeDispatch changeDispatch = new ChangeDispatch();
-// changeDispatch.setWorkerId(item.getServerId());
-// changeDispatch.setWorkerName(item.getServerName());
-// changeDispatch.setApplyReason(orderReasinDto.getApplyReason());
-// changeDispatch.setApplyTime(new Date());
-// changeDispatch.setState(Constants.ONE);
-// changeDispatch.setOrderId(orderId.getOrderId());
-// changeDispatch.setOrderNumber(item.getOrderNumber());
-// if (null != item.getUserId()) {
-// changeDispatch.setUserId(item.getUserId());
-// }
-// changeDispatch.setUserName(item.getReservationName());
-// changeDispatch.setIsDelete(Constants.ZERO);
-// result = dispatchClient.saveRecord(changeDispatch).getData();
- }else {
- orderClient.updateArrivalTime(order.getId(),orderReasinDto.getArriveTime());
- orderClient.updateState(order.getId(), 7);
}
- ChannelHandlerContext context = NettyChannelMap.getData(String.valueOf(orderReasinDto.getWorkerId()));
- if (null != context) {
- NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
- }
-// try {
-// WebSocketServer.sendInfo("您有一条新的订单,请注意查收!", String.valueOf(workerId));
-// } catch (IOException e) {
-// return R.fail("订单推送失败!");
-// }
- }
-
return R.ok() ;
}
@@ -623,8 +625,6 @@
/**
* 订单列表-excel导出
*
- * @param name 师傅姓名
- * @param phone 师傅电话
*/
@RequiresPermissions("order_count")
@ApiOperation(value = "订单统计", tags = {"后台-订单管理"})
--
Gitblit v1.7.1