@@ -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 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\":\".*\"}"); | |||
} | |||
@@ -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; | |||
@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; | |||
} | |||
} |
@@ -7,8 +7,6 @@ public enum PacketType { | |||
//发送消息 | |||
SEND(20), | |||
SEND_ACK(21), | |||
ARRIVE(30), | |||
ARRIVE_ACK(31), | |||
//心跳包 | |||
PING(40), | |||
PANG(41), | |||
@@ -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); | |||
@@ -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; | |||
} | |||
} |
@@ -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()); | |||
@@ -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 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()); | |||
@@ -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); | |||