xuqm hace 1 año
padre
commit
0e0fcfb527

+ 5 - 5
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) {

+ 18 - 0
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<LocalDateTime> {
+    @Override
+    public JsonElement serialize(LocalDateTime localDateTime, Type type, JsonSerializationContext jsonSerializationContext) {
+        return new JsonPrimitive(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+    }
+}
+

+ 2 - 3
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;
 }

+ 0 - 17
src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java

@@ -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;
-}

+ 0 - 15
src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java

@@ -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;
-}

+ 9 - 0
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<UserInfo> userInfoList = userRepository.findAllByUserIdAndAppId(szyxMessage.getToClientId(), szyxMessage.getAppId());
 

+ 11 - 2
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;
     }

+ 22 - 73
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;
     }
 

+ 7 - 13
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;
 }

+ 2 - 3
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<Message,Long> {
+public interface MessageRepository extends JpaRepository<SZYXMessage, Long> {
 
 }