diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/common/json/GsonImplHelp.java b/src/main/java/cn/org/bjca/trust/java/imserver/common/json/GsonImplHelp.java index 8ca5f7d..104b877 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/common/json/GsonImplHelp.java +++ b/src/main/java/cn/org/bjca/trust/java/imserver/common/json/GsonImplHelp.java @@ -1,10 +1,8 @@ package cn.org.bjca.trust.java.imserver.common.json; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; +import com.google.gson.*; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -13,7 +11,9 @@ import java.util.List; * Created by xuqm on 2016/6/3. */ public class GsonImplHelp extends Json { - private final Gson gson = new Gson(); + private final Gson gson = new GsonBuilder() + .setPrettyPrinting() + .registerTypeAdapter(LocalDateTime.class, new LocalDateAdapter()).create(); @Override public String toJson(Object src) { diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/common/json/LocalDateAdapter.java b/src/main/java/cn/org/bjca/trust/java/imserver/common/json/LocalDateAdapter.java new file mode 100644 index 0000000..1ac5972 --- /dev/null +++ b/src/main/java/cn/org/bjca/trust/java/imserver/common/json/LocalDateAdapter.java @@ -0,0 +1,18 @@ +package cn.org.bjca.trust.java.imserver.common.json; + +import com.google.gson.JsonElement; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; + +import java.lang.reflect.Type; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateAdapter implements JsonSerializer { + @Override + public JsonElement serialize(LocalDateTime localDateTime, Type type, JsonSerializationContext jsonSerializationContext) { + return new JsonPrimitive(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } +} + diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java index 90d5b5d..39673e3 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java +++ b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java @@ -14,7 +14,6 @@ import java.time.LocalDateTime; * 自动更新创建时间和更新时间 * * @author peter - * **/ @MappedSuperclass @EntityListeners(value = AuditingEntityListener.class) @@ -27,8 +26,8 @@ public abstract class AbstractBaseTimeEntity { @CreatedDate @Column(nullable = false, updatable = false) - private transient LocalDateTime createTime; + private LocalDateTime createTime; @LastModifiedDate @Column() - private transient LocalDateTime updateTime; + private LocalDateTime updateTime; } diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java deleted file mode 100644 index bcb4a8d..0000000 --- a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java +++ /dev/null @@ -1,17 +0,0 @@ -package cn.org.bjca.trust.java.imserver.entitys; - -import cn.org.bjca.trust.java.imserver.entitys.message.TextMessage; -import jakarta.persistence.Entity; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.OneToOne; -import jakarta.persistence.Table; -import lombok.Data; - -@Entity -@Data -public class Message extends AbstractBaseTimeEntity{ - private String type; - @OneToOne - @JoinColumn(name="text_id",referencedColumnName="_id") - private TextMessage textMessage; -} diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java deleted file mode 100644 index 94031ac..0000000 --- a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.org.bjca.trust.java.imserver.entitys.message; - -import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity; -import cn.org.bjca.trust.java.imserver.entitys.Message; -import jakarta.persistence.Entity; -import jakarta.persistence.OneToOne; -import lombok.Data; - -@Entity -@Data -public class TextMessage extends AbstractBaseTimeEntity { - private String text; - @OneToOne(mappedBy="textMessage") - private Message message; -} 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 159feff..9a6d926 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 @@ -9,6 +9,7 @@ import cn.org.bjca.trust.java.imserver.im.msg.ConnectMessage; import cn.org.bjca.trust.java.imserver.im.msg.ConnectedMessage; import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage; import cn.org.bjca.trust.java.imserver.im.msg.msg.SendAckMessage; +import cn.org.bjca.trust.java.imserver.repository.MessageRepository; import cn.org.bjca.trust.java.imserver.repository.UserRepository; import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; @@ -18,6 +19,7 @@ import java.nio.charset.StandardCharsets; public class ImManager { private final UserRepository userRepository = SpringUtilsAuTo.getBean(UserRepository.class); + private final MessageRepository messageRepository = SpringUtilsAuTo.getBean(MessageRepository.class); public static ImManager getInstance() { return ImManagerHolder.instance; @@ -70,6 +72,13 @@ public class ImManager { } else if (topic.equals("server" + PacketType.SEND)) { SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class); + szyxMessage.setFromClientId(szyxMessage.getFromClient().getUserId()); + try { + messageRepository.save(szyxMessage.copy()); + } catch (Exception e) { + System.out.println("--------------" + e.getMessage()); + } + if (!szyxMessage.isGroup()) { // List userInfoList = userRepository.findAllByUserIdAndAppId(szyxMessage.getToClientId(), szyxMessage.getAppId()); 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 39f5ba3..495954b 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 @@ -1,11 +1,16 @@ 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 java.util.UUID; - -public abstract class PacketMessage { +@MappedSuperclass +public abstract class PacketMessage extends AbstractBaseTimeEntity { /** * 消息id */ @@ -19,6 +24,10 @@ public abstract class PacketMessage { this.packetType = packetType; } + public PacketMessage() { + + } + public String getMsgId() { return msgId; } 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 c676b5d..ff054e8 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 @@ -6,8 +6,17 @@ import cn.org.bjca.trust.java.imserver.enums.MsgType; import cn.org.bjca.trust.java.imserver.enums.PacketType; import cn.org.bjca.trust.java.imserver.im.bean.PacketMessage; import cn.org.bjca.trust.java.imserver.im.msg.msg.message.SZYXTextMessage; +import jakarta.persistence.*; +import lombok.Data; +@Entity +@Data public class SZYXMessage extends PacketMessage { + + public SZYXMessage() { + super(PacketType.SEND); + } + public SZYXMessage(MsgType msgType) { super(PacketType.SEND); this.msgType = msgType; @@ -16,7 +25,9 @@ public class SZYXMessage extends PacketMessage { /** * 发送者信息 */ + @Transient private UserInfo fromClient; + private String fromClientId; /** * 接收者信息 */ @@ -28,6 +39,7 @@ public class SZYXMessage extends PacketMessage { /** * 自定义信息(备注信息,描述信息) */ + @Column(name = "des") private String describe; /** * 是不是群消息 @@ -45,81 +57,12 @@ public class SZYXMessage extends PacketMessage { * 消息类型 */ private MsgType msgType; - private SZYXTextMessage textMessage; - - public UserInfo getFromClient() { - return fromClient; - } - - public void setFromClient(UserInfo fromClient) { - this.fromClient = fromClient; - } - - public String getToClientId() { - return toClientId; - } - - public void setToClientId(String toClientId) { - this.toClientId = toClientId; - } - - public String getGroupID() { - return groupID; - } - - public void setGroupID(String groupID) { - this.groupID = groupID; - } - - public String getDescribe() { - return describe; - } - - public void setDescribe(String describe) { - this.describe = describe; - } - - public boolean isGroup() { - return isGroup; - } - - public void setGroup(boolean group) { - isGroup = group; - } - - public boolean isArrive() { - return isArrive; - } - - public void setArrive(boolean arrive) { - isArrive = arrive; - } - - public int getStatus() { - return status; - } - - public void setStatus(int status) { - this.status = status; - } - public MsgType getMsgType() { - return msgType; - } - - public void setMsgType(MsgType msgType) { - this.msgType = msgType; - } - - public SZYXTextMessage getTextMessage() { - return textMessage; - } - - public void setTextMessage(SZYXTextMessage textMessage) { - this.textMessage = textMessage; - } + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "text_id", referencedColumnName = "_id") + private SZYXTextMessage textMessage; - public SZYXMessage copy(){ + public SZYXMessage copy() { SZYXMessage szyxMessage = new SZYXMessage(this.msgType); szyxMessage.setMsgId(this.getMsgId()); szyxMessage.setPacketType(this.getPacketType()); @@ -135,6 +78,12 @@ public class SZYXMessage extends PacketMessage { szyxMessage.setGroup(this.isGroup()); szyxMessage.setStatus(this.getStatus()); szyxMessage.setGroupID(this.getGroupID()); + szyxMessage.setFromClientId(this.getFromClient().getUserId()); + + SZYXTextMessage tm = new SZYXTextMessage(); + tm.setText(this.getTextMessage().getText()); + + szyxMessage.setTextMessage(tm); return szyxMessage; } diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/message/SZYXTextMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/message/SZYXTextMessage.java index db79e16..2b0aa8d 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/message/SZYXTextMessage.java +++ b/src/main/java/cn/org/bjca/trust/java/imserver/im/msg/msg/message/SZYXTextMessage.java @@ -1,17 +1,11 @@ package cn.org.bjca.trust.java.imserver.im.msg.msg.message; -public class SZYXTextMessage { - private String text; - - public SZYXTextMessage(String text) { - this.text = text; - } +import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity; +import jakarta.persistence.Entity; +import lombok.Data; - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } +@Entity +@Data +public class SZYXTextMessage extends AbstractBaseTimeEntity { + private String text; } diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java b/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java index 50c1364..7d17fa3 100644 --- a/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java +++ b/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java @@ -1,11 +1,10 @@ package cn.org.bjca.trust.java.imserver.repository; -import cn.org.bjca.trust.java.imserver.entitys.Message; -import cn.org.bjca.trust.java.imserver.entitys.UserInfo; +import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface MessageRepository extends JpaRepository { +public interface MessageRepository extends JpaRepository { }