anderx 1 год назад
Родитель
Сommit
6600e37539

+ 2 - 2
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -428,9 +428,9 @@ public class WebpageController extends BaseController {
 		return modelview;
 	}
 
-	@RequestMapping(value = "/portal/webSocket", method = RequestMethod.GET)
+	@RequestMapping(value = "/portal/websocket", method = RequestMethod.GET)
 	public ModelAndView webSocket(HttpServletRequest request, ModelAndView modelview) {
-		modelview.setViewName("/portal/webSocket");
+		modelview.setViewName("/portal/websocket");
 		return modelview;
 	}
 

+ 1 - 0
src/main/java/com/goafanti/core/websocket/SystemWebSocketHandler.java

@@ -88,4 +88,5 @@ public class SystemWebSocketHandler implements WebSocketHandler {
 			}
 		}
 	}
+
 }

+ 4 - 3
src/main/java/com/goafanti/core/websocket/WebSocketConfig.java

@@ -21,9 +21,10 @@ public class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocke
 
 	@Override
 	public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
-		registry.addHandler(systemWebSocketHandler, "/webSocketServer").addInterceptors(new WebSocketHandshakeInterceptor()).setAllowedOrigins("*");
-//		registry.addHandler(systemWebSocketHandler, "/sockjs/webSocketServer").setAllowedOrigins("*")
-//				.addInterceptors(new WebSocketHandshakeInterceptor()).withSockJS();
+		registry.addHandler(systemWebSocketHandler, "/webSocketServer").setAllowedOrigins("*")
+				.addInterceptors(new WebSocketHandshakeInterceptor());
+		registry.addHandler(systemWebSocketHandler, "/sockjs/webSocketServer").setAllowedOrigins("*")
+				.addInterceptors(new WebSocketHandshakeInterceptor()).withSockJS();
 	}
 
 }

+ 8 - 0
src/main/java/com/goafanti/customer/bo/InputCallNumber.java

@@ -3,8 +3,16 @@ package com.goafanti.customer.bo;
 public class InputCallNumber {
 
     private String agent;
+    private String transAgent;
     private String callee;
 
+    public String getTransAgent() {
+        return transAgent;
+    }
+
+    public void setTransAgent(String transAgent) {
+        this.transAgent = transAgent;
+    }
 
     public String getAgent() {
         return agent;

+ 32 - 0
src/main/java/com/goafanti/customer/controller/UserOutboundApiController.java

@@ -43,4 +43,36 @@ public class UserOutboundApiController  extends BaseApiController {
         }
         return new Result<>().data(this.userOutboundService.callNumber(in));
     }
+
+    /**
+     * 坐席呼叫转移
+     *
+     */
+    @PostMapping("/blindTransferByAgent")
+    public Result blindTransferByAgent(InputCallNumber in) {
+        Result res =new Result();
+        if (in.getAgent()==null){
+            return res.error(new Error("坐席号不能为空"));
+        }
+        if (in.getTransAgent()==null){
+            return res.error(new Error("转移坐席号不能为空"));
+        }
+        return new Result<>().data(this.userOutboundService.blindTransferByAgent(in));
+    }
+
+    /**
+     * 呼叫完成回调
+     *
+     */
+    @PostMapping("/callCompleted")
+    public Result callCompleted(InputCallNumber in) {
+        Result res =new Result();
+        if (in.getAgent()==null){
+            return res.error(new Error("坐席号不能为空"));
+        }
+        if (in.getTransAgent()==null){
+            return res.error(new Error("转移坐席号不能为空"));
+        }
+        return new Result<>().data(this.userOutboundService.callCompleted(in));
+    }
 }

+ 4 - 0
src/main/java/com/goafanti/customer/service/UserOutboundService.java

@@ -6,4 +6,8 @@ public interface UserOutboundService {
     Object checkUser(Integer type);
 
     Object callNumber(InputCallNumber in);
+
+    Object blindTransferByAgent(InputCallNumber in);
+
+    Object callCompleted(InputCallNumber in);
 }

+ 35 - 1
src/main/java/com/goafanti/customer/service/impl/UserOutboundServiceImpl.java

@@ -1,13 +1,19 @@
 package com.goafanti.customer.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.goafanti.common.dao.UserArchivesMapper;
 import com.goafanti.common.utils.HttpUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
+import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.core.websocket.SystemWebSocketHandler;
 import com.goafanti.customer.bo.InputCallNumber;
 import com.goafanti.customer.service.UserOutboundService;
 import org.apache.shiro.crypto.hash.SimpleHash;
 import org.springframework.stereotype.Service;
+import org.springframework.web.socket.TextMessage;
 
+import javax.annotation.Resource;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -19,6 +25,9 @@ public class UserOutboundServiceImpl extends BaseMybatisDao<UserArchivesMapper>
     static final String version= "2.0.6";
     static final String default_url ="https://webmc.zb-sx.cn:1443";
 
+    @Resource
+    private SystemWebSocketHandler systemWebSocketHandler;
+
     @Override
     public Object checkUser(Integer type) {
         String url= default_url +"/openapi/"+version+"/getClientInfo";
@@ -61,6 +70,31 @@ public class UserOutboundServiceImpl extends BaseMybatisDao<UserArchivesMapper>
         System.out.println("url="+url);
         System.out.println("param="+param);
         System.out.println(s);
-        return null;
+//        {"result":{"error":"0xF1000022","msg":"分机号未注册"},"data":{"seq":"20241101","response":{"seq":null,"userData":null,"result":{"error":4043309090},"data":null}}}
+        JSONObject jsonObject = JSON.parseObject(s);
+        JSONObject result = jsonObject.getJSONObject("result");
+        String msg = result.getString("msg");
+        if (msg!=null)return s;
+        return s;
+    }
+
+    @Override
+    public Object blindTransferByAgent(InputCallNumber in) {
+        String url= default_url +"/openapi/"+version+"/blindTransferByAgent";
+        Map<String,Object> param=new HashMap<>();
+        param.put("authentication",getAuthentication());
+        Map<String,Object> request=new HashMap<>();
+        request.put("agent",in.getAgent());
+        request.put("transAgent",in.getTransAgent());
+        param.put("request",request);
+        HttpUtils httpUtils=new HttpUtils();
+        String s = httpUtils.sendHttpsRequest(url, "POST", param);
+        return 1;
+    }
+
+    @Override
+    public Object callCompleted(InputCallNumber in) {
+        systemWebSocketHandler.sendMessageToUser(TokenManager.getAdminId(), new TextMessage("callCompleted"));
+        return 1;
     }
 }

+ 1 - 1
src/main/webapp/WEB-INF/views/portal/websocket.html

@@ -13,7 +13,7 @@
 	window.onload=function unit(){
 		if ("WebSocket" in window){
 			// 打开一个 web socket
-			connect = new WebSocket("ws://localhost:8080/webSocketServer");
+			connect = new WebSocket("ws://172.16.1.199:8080/webSocketServer");
 			connect.onopen = function(){
 				// Web Socket 已连接上
 				alert("已连接");