Browse Source

socket接口修改

yingp 7 years ago
parent
commit
b23c808093

+ 3 - 2
base-servers/auth/auth-server/src/main/java/com/usoftchina/saas/auth/controller/AuthController.java

@@ -25,6 +25,7 @@ import com.usoftchina.saas.page.PageDefault;
 import com.usoftchina.saas.page.PageRequest;
 import com.usoftchina.saas.server.web.ServletUtils;
 import com.usoftchina.saas.socket.api.SocketMessageApi;
+import com.usoftchina.saas.socket.dto.ClientMessage;
 import com.usoftchina.saas.utils.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -261,8 +262,8 @@ public class AuthController {
                 JwtInfo jwtInfo = new JwtInfo(appId, companyId, accountDTO.getId(), accountDTO.getUsername(), accountDTO.getRealname());
                 JwtToken jwtToken = JwtHelper.generateToken(jwtInfo, privateKeyPath, expire);
                 TokenDTO tokenDTO = BeanMapper.map(jwtToken, TokenDTO.class);
-                socketMessageApi.sendToClient(clientId, "/sso/callback",
-                        JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO)));
+                socketMessageApi.sendToClient(new ClientMessage(clientId, "/sso/callback",
+                        JsonUtils.toJsonString(new AuthDTO(tokenDTO, accountDTO))));
             }
             ServletUtils.writeJsonPMessage(response, callback, true);
         }

+ 4 - 9
base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/api/SocketMessageApi.java

@@ -1,9 +1,10 @@
 package com.usoftchina.saas.socket.api;
 
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.socket.dto.ClientMessage;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * @author yingp
@@ -14,24 +15,18 @@ public interface SocketMessageApi {
     /**
      * 发送信息给指定用户
      *
-     * @param clientId
-     * @param dest
      * @param message
      * @return
      */
     @PostMapping("/message/clients")
-    Result sendToClient(@RequestParam("clientId") String clientId,
-                        @RequestParam(value = "dest", required = false) String dest,
-                        @RequestParam("message") String message);
+    Result sendToClient(@RequestBody ClientMessage message);
 
     /**
      * 广播信息
      *
-     * @param dest
      * @param message
      * @return
      */
     @PostMapping("/message/clients/all")
-    Result sendToAllClients(@RequestParam(value = "dest", required = false) String dest,
-                            @RequestParam("message") String message);
+    Result sendToAllClients(@RequestBody ClientMessage message);
 }

+ 60 - 0
base-servers/socket/socket-api/src/main/java/com/usoftchina/saas/socket/dto/ClientMessage.java

@@ -0,0 +1,60 @@
+package com.usoftchina.saas.socket.dto;
+
+import java.io.Serializable;
+
+/**
+ * @author yingp
+ * @date 2018/12/12
+ */
+public class ClientMessage implements Serializable{
+    /**
+     * 客户端ID
+     */
+    private String clientId;
+    /**
+     * destination
+     */
+    private String dest;
+    /**
+     * 消息内容
+     */
+    private String message;
+
+    public ClientMessage() {
+    }
+
+    public ClientMessage(String dest, String message) {
+        this.dest = dest;
+        this.message = message;
+    }
+
+    public ClientMessage(String clientId, String dest, String message) {
+        this.clientId = clientId;
+        this.dest = dest;
+        this.message = message;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getDest() {
+        return dest;
+    }
+
+    public void setDest(String dest) {
+        this.dest = dest;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+}

+ 4 - 0
base-servers/socket/socket-server/pom.xml

@@ -35,6 +35,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.usoftchina.saas</groupId>
+            <artifactId>socket-api</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 14 - 8
base-servers/socket/socket-server/src/main/java/com/usoftchina/saas/socket/controller/MessageController.java

@@ -1,6 +1,10 @@
 package com.usoftchina.saas.socket.controller;
 
 import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.exception.ExceptionCode;
+import com.usoftchina.saas.socket.api.SocketMessageApi;
+import com.usoftchina.saas.socket.dto.ClientMessage;
+import com.usoftchina.saas.utils.BizAssert;
 import org.springframework.messaging.simp.SimpMessagingTemplate;
 import org.springframework.web.bind.annotation.*;
 
@@ -12,7 +16,7 @@ import javax.annotation.Resource;
  */
 @RestController
 @RequestMapping("/message")
-public class MessageController {
+public class MessageController implements SocketMessageApi{
 
     @Resource
     private SimpMessagingTemplate simpMessagingTemplate;
@@ -20,39 +24,41 @@ public class MessageController {
     /**
      * 发送信息给指定用户
      *
-     * @param clientId
-     * @param dest
      * @param message
      * @return
      */
+    @Override
     @PostMapping("/clients")
-    public Result sendToClient(@RequestParam String clientId, String dest, @RequestParam String message) {
+    public Result sendToClient(@RequestBody ClientMessage message) {
+        BizAssert.hasText(message.getClientId(), ExceptionCode.ILLEGAL_ARGUMENTS);
+        BizAssert.hasText(message.getDest(), ExceptionCode.ILLEGAL_ARGUMENTS);
         /**
          * 前端使用
          * <pre>
          *     stomp.subscribe('/clients/{clientId}/{dest}', function(message){});
          * </pre>
          */
-        simpMessagingTemplate.convertAndSendToUser(clientId, dest, message);
+        simpMessagingTemplate.convertAndSendToUser(message.getClientId(), message.getDest(), message.getMessage());
         return Result.success();
     }
 
     /**
      * 广播信息
      *
-     * @param dest
      * @param message
      * @return
      */
+    @Override
     @PostMapping("/clients/all")
-    public Result sendToAllClients(String dest, @RequestParam String message) {
+    public Result sendToAllClients(@RequestBody ClientMessage message) {
+        BizAssert.hasText(message.getDest(), ExceptionCode.ILLEGAL_ARGUMENTS);
         /**
          * 前端使用
          * <pre>
          *     stomp.subscribe('/clients/{dest}', function(message){});
          * </pre>
          */
-        simpMessagingTemplate.convertAndSend(dest, message);
+        simpMessagingTemplate.convertAndSend(message.getDest(), message.getMessage());
         return Result.success();
     }
 }

+ 1 - 0
framework/core/src/main/java/com/usoftchina/saas/exception/ExceptionCode.java

@@ -10,6 +10,7 @@ public enum ExceptionCode implements BaseExceptionCode {
     SYSTEM_TIMEOUT(-2, "系统超时,请稍候再试"),
 
     INVALID_DEFAULT_PAGE(10001, "无效默认分页参数"),
+    ILLEGAL_ARGUMENTS(20001, "参数错误"),
     // jwt token 相关 start
     // 过期
     JWT_TOKEN_EXPIRED(40001, "token超时,请检查 token 的有效期"),