发送消息绑定用户信息
这个提交包含在:
父节点
e6f0bbc4d0
当前提交
c6804eb566
@ -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){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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/users/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"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/%2F/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"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/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.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}");
|
RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/topic-permissions/" + appid + "/" + userInfo.getToken(), "{\"username\":\"" + userInfo.getToken() + "\",\"vhost\":\"" + appid + "\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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),
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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());
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@ -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());
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户