From c6804eb566b8735c4d6110f36472c5a4d4ee77e3 Mon Sep 17 00:00:00 2001 From: xuqm Date: Wed, 31 May 2023 19:13:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../trust/java/imserver/common/RequestManager.java | 16 +++++++ .../controller/user/v1/UserV1Controller.java | 11 +++-- .../entitys/AbstractBaseTimeEntityNoKey.java | 30 ++++++++++++ .../bjca/trust/java/imserver/entitys/UserInfo.java | 22 +++++++-- .../bjca/trust/java/imserver/enums/PacketType.java | 2 - .../org/bjca/trust/java/imserver/im/ImManager.java | 9 ++-- .../trust/java/imserver/im/bean/PacketMessage.java | 53 +++------------------- .../trust/java/imserver/im/msg/ConnectMessage.java | 1 + .../trust/java/imserver/im/msg/RequestMessage.java | 18 ++++++++ .../java/imserver/im/msg/msg/SZYXMessage.java | 9 ++-- .../java/imserver/repository/UserRepository.java | 2 +- 11 files changed, 108 insertions(+), 65 deletions(-) create mode 100644 src/main/java/cn/org/bjca/trust/java/imserver/common/RequestManager.java create mode 100644 src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntityNoKey.java create mode 100644 src/main/java/cn/org/bjca/trust/java/imserver/im/msg/RequestMessage.java diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/common/RequestManager.java b/src/main/java/cn/org/bjca/trust/java/imserver/common/RequestManager.java new file mode 100644 index 0000000..1592ab1 --- /dev/null +++ b/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){ + + } + +} diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java index 961ed08..a2b2ef7 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java +++ b/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\":\".*\"}"); } diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntityNoKey.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntityNoKey.java new file mode 100644 index 0000000..36a732e --- /dev/null +++ b/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; +} diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java index 63a8930..7499d4e 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java +++ b/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; + } } diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/enums/PacketType.java b/src/main/java/cn/org/bjca/trust/java/imserver/enums/PacketType.java index 5450e3c..5f4459f 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/enums/PacketType.java +++ b/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), diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/im/ImManager.java b/src/main/java/cn/org/bjca/trust/java/imserver/im/ImManager.java index 72d2b9e..58ae137 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/im/ImManager.java +++ b/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 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); diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/im/bean/PacketMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/im/bean/PacketMessage.java index 495954b..980919a 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/im/bean/PacketMessage.java +++ b/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; - } } diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/ConnectMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/ConnectMessage.java index 040e1e8..d831814 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/ConnectMessage.java +++ b/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()); diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/RequestMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/RequestMessage.java new file mode 100644 index 0000000..db5ddcd --- /dev/null +++ b/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; + +} diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/SZYXMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/SZYXMessage.java index ff054e8..eaf2cfe 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/SZYXMessage.java +++ b/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()); diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java b/src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java index 029090e..a12afa0 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java +++ b/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 { +public interface UserRepository extends JpaRepository { UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId);