Browse Source

发送消息绑定用户信息

master
徐勤民 1 year ago
parent
commit
c6804eb566
11 changed files with 108 additions and 65 deletions
  1. +16
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/common/RequestManager.java
  2. +6
    -5
      src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java
  3. +30
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntityNoKey.java
  4. +18
    -4
      src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java
  5. +0
    -2
      src/main/java/cn/org/bjca/trust/java/imserver/enums/PacketType.java
  6. +6
    -3
      src/main/java/cn/org/bjca/trust/java/imserver/im/ImManager.java
  7. +7
    -46
      src/main/java/cn/org/bjca/trust/java/imserver/im/bean/PacketMessage.java
  8. +1
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/im/msg/ConnectMessage.java
  9. +18
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/im/msg/RequestMessage.java
  10. +5
    -4
      src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/SZYXMessage.java
  11. +1
    -1
      src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java

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

@@ -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 View File

@@ -29,6 +29,7 @@ public class UserV1Controller {
String appid = headers.getFirst("appid"); String appid = headers.getFirst("appid");
String userid = headers.getFirst("userid"); String userid = headers.getFirst("userid");
String ostype = headers.getFirst("ostype"); String ostype = headers.getFirst("ostype");
String token = headers.getFirst("token");
if (null != appid && null != userid && null != ostype) { if (null != appid && null != userid && null != ostype) {


ApplicationEntity app = applicationRepository.findFirstByAppId(appid); ApplicationEntity app = applicationRepository.findFirstByAppId(appid);
@@ -40,16 +41,16 @@ public class UserV1Controller {
userInfo = new UserInfo(); userInfo = new UserInfo();
userInfo.setUserId(userid); userInfo.setUserId(userid);
userInfo.setNickName(userid); userInfo.setNickName(userid);
userInfo.setUserName(UUID.randomUUID().toString());
userInfo.setToken(UUID.randomUUID().toString());
userInfo.setAppId(appid); userInfo.setAppId(appid);
userInfo.setOsType(ostype); userInfo.setOsType(ostype);
userInfo.setPassword(UUID.randomUUID().toString()); userInfo.setPassword(UUID.randomUUID().toString());
userRepository.save(userInfo); 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 View File

@@ -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 View File

@@ -5,11 +5,12 @@ import jakarta.persistence.*;
import lombok.Data; import lombok.Data;


@Entity @Entity
@Table(name = "user")
@Data @Data
public class UserInfo extends AbstractBaseTimeEntity {
public class UserInfo extends AbstractBaseTimeEntityNoKey {
private String userId; private String userId;
private String userName;
@Id
@Column(unique = true)
private String token;
private String password; private String password;
private String appId; private String appId;
private String osType; private String osType;
@@ -17,5 +18,18 @@ public class UserInfo extends AbstractBaseTimeEntity {
private String faceUrl; private String faceUrl;
private String gender; 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 View File

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


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

@@ -74,9 +74,9 @@ public class ImManager {
} else if (topic.equals("server" + PacketType.SEND)) { } else if (topic.equals("server" + PacketType.SEND)) {
SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class); SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class);


szyxMessage.setFromClientId(szyxMessage.getFromClient().getUserId());
SZYXMessage message1 = szyxMessage.copy();
try { try {
messageRepository.save(szyxMessage.copy());
messageRepository.save(message1);
} catch (Exception e) { } catch (Exception e) {
System.out.println("--------------" + e.getMessage()); System.out.println("--------------" + e.getMessage());
} }
@@ -85,7 +85,7 @@ public class ImManager {
// List<UserInfo> userInfoList = userRepository.findAllByUserIdAndAppId(szyxMessage.getToClientId(), szyxMessage.getAppId()); // List<UserInfo> userInfoList = userRepository.findAllByUserIdAndAppId(szyxMessage.getToClientId(), szyxMessage.getAppId());


// for (UserInfo userInfo : userInfoList) { // for (UserInfo userInfo : userInfoList) {
SZYXMessage message1 = szyxMessage.copy();
message1.setUserName(szyxMessage.getToClientId()); message1.setUserName(szyxMessage.getToClientId());
message1.setArrive(true); message1.setArrive(true);
message1.setStatus(0); message1.setStatus(0);
@@ -96,6 +96,9 @@ public class ImManager {
// TODO: 这里应该有计时器,判断转发消息是否送达,如果没送达则ack返回失败状态 // TODO: 这里应该有计时器,判断转发消息是否送达,如果没送达则ack返回失败状态
sendAckMsg(szyxMessage); sendAckMsg(szyxMessage);


}// 数据请求
else if (topic.equals("server" + PacketType.REQUEST)) {

} else } else
System.out.println("======>messageArrived:\n" + topic + "::" + msg); System.out.println("======>messageArrived:\n" + topic + "::" + msg);




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

@@ -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.entitys.AbstractBaseTimeEntity;
import cn.org.bjca.trust.java.imserver.enums.PacketType; import cn.org.bjca.trust.java.imserver.enums.PacketType;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.MappedSuperclass; import jakarta.persistence.MappedSuperclass;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import lombok.Data;


import java.util.UUID; import java.util.UUID;

@MappedSuperclass @MappedSuperclass
@Data
public abstract class PacketMessage extends AbstractBaseTimeEntity { public abstract class PacketMessage extends AbstractBaseTimeEntity {
public PacketMessage() {

}
/** /**
* 消息id * 消息id
*/ */
@@ -19,52 +22,10 @@ public abstract class PacketMessage extends AbstractBaseTimeEntity {
private long timestamp = System.currentTimeMillis(); private long timestamp = System.currentTimeMillis();
private String appId; private String appId;
private String userName; private String userName;
private String token;


public PacketMessage(PacketType packetType) { public PacketMessage(PacketType packetType) {
this.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 View File

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


deviceEntity.setDeviceId(this.getDevice().getDeviceId()); deviceEntity.setDeviceId(this.getDevice().getDeviceId());


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

@@ -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 View File

@@ -25,9 +25,9 @@ public class SZYXMessage extends PacketMessage {
/** /**
* 发送者信息 * 发送者信息
*/ */
@Transient
@OneToOne
@JoinColumn(referencedColumnName = "token")
private UserInfo fromClient; private UserInfo fromClient;
private String fromClientId;
/** /**
* 接收者信息 * 接收者信息
*/ */
@@ -69,16 +69,17 @@ public class SZYXMessage extends PacketMessage {
szyxMessage.setTimestamp(this.getTimestamp()); szyxMessage.setTimestamp(this.getTimestamp());
szyxMessage.setUserName(this.getUserName()); szyxMessage.setUserName(this.getUserName());
szyxMessage.setAppId(this.getAppId()); szyxMessage.setAppId(this.getAppId());
szyxMessage.setToken(this.getToken());


szyxMessage.setArrive(this.isArrive()); szyxMessage.setArrive(this.isArrive());
szyxMessage.setDescribe(this.getDescribe()); szyxMessage.setDescribe(this.getDescribe());
szyxMessage.setMsgType(this.getMsgType()); szyxMessage.setMsgType(this.getMsgType());
szyxMessage.setToClientId(this.getToClientId()); szyxMessage.setToClientId(this.getToClientId());
szyxMessage.setFromClient(this.getFromClient());
szyxMessage.setGroup(this.isGroup()); szyxMessage.setGroup(this.isGroup());
szyxMessage.setStatus(this.getStatus()); szyxMessage.setStatus(this.getStatus());
szyxMessage.setGroupID(this.getGroupID()); szyxMessage.setGroupID(this.getGroupID());
szyxMessage.setFromClientId(this.getFromClient().getUserId());

szyxMessage.setFromClient(this.getFromClient().copy());


SZYXTextMessage tm = new SZYXTextMessage(); SZYXTextMessage tm = new SZYXTextMessage();
tm.setText(this.getTextMessage().getText()); tm.setText(this.getTextMessage().getText());


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

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;


@Repository @Repository
public interface UserRepository extends JpaRepository<UserInfo, Long> {
public interface UserRepository extends JpaRepository<UserInfo, String> {


UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId); UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId);




Loading…
Cancel
Save