@@ -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) { | |||
@@ -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"))); | |||
} | |||
} | |||
@@ -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; | |||
} |
@@ -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; | |||
} |
@@ -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,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()); | |||
@@ -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; | |||
} | |||
@@ -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; | |||
} | |||
@@ -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; | |||
} |
@@ -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> { | |||
} |