@@ -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/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; | 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); | ||||