瀏覽代碼

发送消息绑定用户信息

xuqm 1 年之前
父節點
當前提交
c6804eb566

+ 16 - 0
src/main/java/cn/org/bjca/trust/java/imserver/common/RequestManager.java

@@ -0,0 +1,16 @@
+package cn.org.bjca.trust.java.imserver.common;
+
+public class RequestManager {
+    private static final class RequestManagerHolder {
+        static final RequestManager instance = new RequestManager();
+    }
+
+    public static RequestManager getInstance() {
+        return RequestManagerHolder.instance;
+    }
+
+    public void getHistoryForMsg(String appId, String userId, int pageSize, long timestamp){
+
+    }
+
+}

+ 6 - 5
src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java

@@ -29,6 +29,7 @@ public class UserV1Controller {
         String appid = headers.getFirst("appid");
         String userid = headers.getFirst("userid");
         String ostype = headers.getFirst("ostype");
+        String token = headers.getFirst("token");
         if (null != appid && null != userid && null != ostype) {
 
             ApplicationEntity app = applicationRepository.findFirstByAppId(appid);
@@ -40,16 +41,16 @@ public class UserV1Controller {
                 userInfo = new UserInfo();
                 userInfo.setUserId(userid);
                 userInfo.setNickName(userid);
-                userInfo.setUserName(UUID.randomUUID().toString());
+                userInfo.setToken(UUID.randomUUID().toString());
                 userInfo.setAppId(appid);
                 userInfo.setOsType(ostype);
                 userInfo.setPassword(UUID.randomUUID().toString());
                 userRepository.save(userInfo);
 
-                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/users/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"password\":\"" + userInfo.getPassword() + "\",\"tags\":\"\"}");
-                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/permissions/%2F/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}");
-                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/permissions/" + appid + "/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}");
-                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/topic-permissions/" + appid + "/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}");
+                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/users/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"password\":\"" + userInfo.getPassword() + "\",\"tags\":\"\"}");
+                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/permissions/%2F/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"vhost\":\"" + appid + "\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}");
+                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/permissions/" + appid + "/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"vhost\":\"" + appid + "\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}");
+                RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/topic-permissions/" + appid + "/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"vhost\":\"" + appid + "\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}");
 
             }
 

+ 30 - 0
src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntityNoKey.java

@@ -0,0 +1,30 @@
+package cn.org.bjca.trust.java.imserver.entitys;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import java.time.LocalDateTime;
+
+/**
+ * 所有类的超类
+ * 自动更新创建时间和更新时间
+ *
+ * @author peter
+ **/
+@MappedSuperclass
+@EntityListeners(value = AuditingEntityListener.class)
+@Getter
+@Setter
+public abstract class AbstractBaseTimeEntityNoKey {
+
+    @CreatedDate
+    @Column(nullable = false, updatable = false)
+    private LocalDateTime createTime;
+    @LastModifiedDate
+    @Column()
+    private LocalDateTime updateTime;
+}

+ 18 - 4
src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java

@@ -5,11 +5,12 @@ import jakarta.persistence.*;
 import lombok.Data;
 
 @Entity
-@Table(name = "user")
 @Data
-public class UserInfo extends AbstractBaseTimeEntity {
+public class UserInfo extends AbstractBaseTimeEntityNoKey {
     private String userId;
-    private String userName;
+    @Id
+    @Column(unique = true)
+    private String token;
     private String password;
     private String appId;
     private String osType;
@@ -17,5 +18,18 @@ public class UserInfo extends AbstractBaseTimeEntity {
     private String faceUrl;
     private String gender;
 
-
+    public UserInfo copy(){
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(this.getUserId());
+        userInfo.setToken(this.getToken());
+        userInfo.setNickName(this.getNickName());
+        userInfo.setPassword(this.getPassword());
+        userInfo.setFaceUrl(this.getFaceUrl());
+        userInfo.setOsType(this.getOsType());
+        userInfo.setGender(this.getGender());
+        userInfo.setAppId(this.getAppId());
+        userInfo.setUpdateTime(this.getUpdateTime());
+        userInfo.setCreateTime(this.getCreateTime());
+        return userInfo;
+    }
 }

+ 0 - 2
src/main/java/cn/org/bjca/trust/java/imserver/enums/PacketType.java

@@ -7,8 +7,6 @@ public enum PacketType {
     //发送消息
     SEND(20),
     SEND_ACK(21),
-    ARRIVE(30),
-    ARRIVE_ACK(31),
     //心跳包
     PING(40),
     PANG(41),

+ 6 - 3
src/main/java/cn/org/bjca/trust/java/imserver/im/ImManager.java

@@ -74,9 +74,9 @@ public class ImManager {
                     } else if (topic.equals("server" + PacketType.SEND)) {
                         SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class);
 
-                        szyxMessage.setFromClientId(szyxMessage.getFromClient().getUserId());
+                        SZYXMessage message1 = szyxMessage.copy();
                         try {
-                            messageRepository.save(szyxMessage.copy());
+                            messageRepository.save(message1);
                         } catch (Exception e) {
                             System.out.println("--------------" + e.getMessage());
                         }
@@ -85,7 +85,7 @@ public class ImManager {
 //                            List<UserInfo> userInfoList = userRepository.findAllByUserIdAndAppId(szyxMessage.getToClientId(), szyxMessage.getAppId());
 
 //                            for (UserInfo userInfo : userInfoList) {
-                            SZYXMessage message1 = szyxMessage.copy();
+
                             message1.setUserName(szyxMessage.getToClientId());
                             message1.setArrive(true);
                             message1.setStatus(0);
@@ -96,6 +96,9 @@ public class ImManager {
                         // TODO: 这里应该有计时器,判断转发消息是否送达,如果没送达则ack返回失败状态
                         sendAckMsg(szyxMessage);
 
+                    }// 数据请求
+                    else if (topic.equals("server" + PacketType.REQUEST)) {
+
                     } else
                         System.out.println("======>messageArrived:\n" + topic + "::" + msg);
 

+ 7 - 46
src/main/java/cn/org/bjca/trust/java/imserver/im/bean/PacketMessage.java

@@ -3,14 +3,17 @@ package cn.org.bjca.trust.java.imserver.im.bean;
 
 import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity;
 import cn.org.bjca.trust.java.imserver.enums.PacketType;
-import jakarta.persistence.Entity;
-import jakarta.persistence.EntityListeners;
 import jakarta.persistence.MappedSuperclass;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+import lombok.Data;
 
 import java.util.UUID;
+
 @MappedSuperclass
+@Data
 public abstract class PacketMessage extends AbstractBaseTimeEntity {
+    public PacketMessage() {
+
+    }
     /**
      * 消息id
      */
@@ -19,52 +22,10 @@ public abstract class PacketMessage extends AbstractBaseTimeEntity {
     private long timestamp = System.currentTimeMillis();
     private String appId;
     private String userName;
+    private String token;
 
     public PacketMessage(PacketType packetType) {
         this.packetType = packetType;
     }
 
-    public PacketMessage() {
-
-    }
-
-    public String getMsgId() {
-        return msgId;
-    }
-
-    public void setMsgId(String msgId) {
-        this.msgId = msgId;
-    }
-
-    public PacketType getPacketType() {
-        return packetType;
-    }
-
-    public void setPacketType(PacketType packetType) {
-        this.packetType = packetType;
-    }
-
-    public long getTimestamp() {
-        return timestamp;
-    }
-
-    public void setTimestamp(long timestamp) {
-        this.timestamp = timestamp;
-    }
-
-    public String getAppId() {
-        return appId;
-    }
-
-    public void setAppId(String appId) {
-        this.appId = appId;
-    }
-
-    public String getUserName() {
-        return userName;
-    }
-
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
 }

+ 1 - 0
src/main/java/cn/org/bjca/trust/java/imserver/im/msg/ConnectMessage.java

@@ -33,6 +33,7 @@ public class ConnectMessage extends PacketMessage {
         connectMessage.setTimestamp(this.getTimestamp());
         connectMessage.setUserName(this.getUserName());
         connectMessage.setAppId(this.getAppId());
+        connectMessage.setToken(this.getToken());
         DeviceEntity deviceEntity = new DeviceEntity();
 
         deviceEntity.setDeviceId(this.getDevice().getDeviceId());

+ 18 - 0
src/main/java/cn/org/bjca/trust/java/imserver/im/msg/RequestMessage.java

@@ -0,0 +1,18 @@
+package cn.org.bjca.trust.java.imserver.im.msg;
+
+
+import cn.org.bjca.trust.java.imserver.enums.PacketType;
+import cn.org.bjca.trust.java.imserver.im.bean.PacketMessage;
+import jakarta.persistence.Entity;
+import lombok.Data;
+
+@Data
+public class RequestMessage extends PacketMessage {
+    public RequestMessage() {
+        super(PacketType.REQUEST);
+    }
+
+    private String path;
+    private Object requestBody;
+
+}

+ 5 - 4
src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/SZYXMessage.java

@@ -25,9 +25,9 @@ public class SZYXMessage extends PacketMessage {
     /**
      * 发送者信息
      */
-    @Transient
+    @OneToOne
+    @JoinColumn(referencedColumnName = "token")
     private UserInfo fromClient;
-    private String fromClientId;
     /**
      * 接收者信息
      */
@@ -69,16 +69,17 @@ public class SZYXMessage extends PacketMessage {
         szyxMessage.setTimestamp(this.getTimestamp());
         szyxMessage.setUserName(this.getUserName());
         szyxMessage.setAppId(this.getAppId());
+        szyxMessage.setToken(this.getToken());
 
         szyxMessage.setArrive(this.isArrive());
         szyxMessage.setDescribe(this.getDescribe());
         szyxMessage.setMsgType(this.getMsgType());
         szyxMessage.setToClientId(this.getToClientId());
-        szyxMessage.setFromClient(this.getFromClient());
         szyxMessage.setGroup(this.isGroup());
         szyxMessage.setStatus(this.getStatus());
         szyxMessage.setGroupID(this.getGroupID());
-        szyxMessage.setFromClientId(this.getFromClient().getUserId());
+
+        szyxMessage.setFromClient(this.getFromClient().copy());
 
         SZYXTextMessage tm = new SZYXTextMessage();
         tm.setText(this.getTextMessage().getText());

+ 1 - 1
src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Repository;
 import java.util.List;
 
 @Repository
-public interface UserRepository extends JpaRepository<UserInfo, Long> {
+public interface UserRepository extends JpaRepository<UserInfo, String> {
 
     UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId);