消息记录
这个提交包含在:
父节点
c1a3551c7f
当前提交
1cae280c4d
@ -0,0 +1,12 @@
|
|||||||
|
package cn.org.bjca.trust.java.imserver.bean.group;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class MsgHistoryForCountData {
|
||||||
|
private String userId;
|
||||||
|
private long timestamp;
|
||||||
|
private int size;
|
||||||
|
}
|
||||||
@ -2,21 +2,20 @@ package cn.org.bjca.trust.java.imserver.controller.message.v1;
|
|||||||
|
|
||||||
import cn.org.bjca.trust.java.imserver.HttpResult;
|
import cn.org.bjca.trust.java.imserver.HttpResult;
|
||||||
import cn.org.bjca.trust.java.imserver.bean.group.GroupCreateData;
|
import cn.org.bjca.trust.java.imserver.bean.group.GroupCreateData;
|
||||||
import cn.org.bjca.trust.java.imserver.common.json.GsonImplHelp;
|
import cn.org.bjca.trust.java.imserver.bean.group.MsgHistoryForCountData;
|
||||||
import cn.org.bjca.trust.java.imserver.request.RequestManager;
|
import cn.org.bjca.trust.java.imserver.request.RequestManager;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.Group_create_v1;
|
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.MsgHistoryForCount;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("message/v1")
|
@RequestMapping("message/v1")
|
||||||
public class MessageV1Controller {
|
public class MessageV1Controller {
|
||||||
|
|
||||||
@PostMapping("/getHistory")
|
@PostMapping("/getHistoryForCount")
|
||||||
public HttpResult<String> create(@RequestBody GroupCreateData groupCreateData, @RequestHeader HttpHeaders headers) throws Exception {
|
public HttpResult<String> getHistoryForCount(@RequestBody MsgHistoryForCountData groupCreateData, @RequestHeader HttpHeaders headers) throws Exception {
|
||||||
System.out.println(GsonImplHelp.get().toJson(groupCreateData));
|
return RequestManager.getInstance().request(MsgHistoryForCount, groupCreateData, headers);
|
||||||
return RequestManager.getInstance().request(Group_create_v1, groupCreateData, headers);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,17 +50,17 @@ public class ImManager {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
mqttClient = new MqttClient("tcp://114.115.203.60:18883",
|
mqttClient = new MqttClient("tcp://114.115.203.60:18883",
|
||||||
"server" + System.currentTimeMillis(), new MemoryPersistence());
|
"server1" + System.currentTimeMillis(), new MemoryPersistence());
|
||||||
mqttClient.setCallback(new MqttCallbackExtended() {
|
mqttClient.setCallback(new MqttCallbackExtended() {
|
||||||
@Override
|
@Override
|
||||||
public void connectComplete(boolean reconnect, String serverURI) {
|
public void connectComplete(boolean reconnect, String serverURI) {
|
||||||
System.out.println("======>connectComplete:reconnect?" + reconnect + "::" + serverURI);
|
System.out.println("======>connectComplete:reconnect?" + reconnect + "::" + serverURI);
|
||||||
if (reconnect) return;
|
if (reconnect) return;
|
||||||
try {
|
try {
|
||||||
mqttClient.subscribe("server" + PacketType.CONNECT, 2);
|
mqttClient.subscribe("server1" + PacketType.CONNECT, 2);
|
||||||
mqttClient.subscribe("server" + PacketType.SEND, 2);
|
mqttClient.subscribe("server1" + PacketType.SEND, 2);
|
||||||
mqttClient.subscribe("server" + PacketType.PING, 2);
|
mqttClient.subscribe("server1" + PacketType.PING, 2);
|
||||||
mqttClient.subscribe("server" + PacketType.REQUEST, 2);
|
mqttClient.subscribe("server1" + PacketType.REQUEST, 2);
|
||||||
} catch (MqttException ignored) {
|
} catch (MqttException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,9 +74,9 @@ public class ImManager {
|
|||||||
public void messageArrived(String topic, MqttMessage message) throws Exception {
|
public void messageArrived(String topic, MqttMessage message) throws Exception {
|
||||||
String msg = new String(message.getPayload());
|
String msg = new String(message.getPayload());
|
||||||
System.out.println("======>messageArrived:\n" + topic + "::" + msg);
|
System.out.println("======>messageArrived:\n" + topic + "::" + msg);
|
||||||
if (topic.equals("server" + PacketType.CONNECT)) {
|
if (topic.equals("server1" + PacketType.CONNECT)) {
|
||||||
sendConnectedMsg(GsonImplHelp.get().toObject(msg, ConnectMessage.class));
|
sendConnectedMsg(GsonImplHelp.get().toObject(msg, ConnectMessage.class));
|
||||||
} else if (topic.equals("server" + PacketType.SEND)) {
|
} else if (topic.equals("server1" + PacketType.SEND)) {
|
||||||
SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class);
|
SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class);
|
||||||
szyxMessage.setStatus(0);
|
szyxMessage.setStatus(0);
|
||||||
szyxMessage.setFromClientId(szyxMessage.getFromClient().getUserId());
|
szyxMessage.setFromClientId(szyxMessage.getFromClient().getUserId());
|
||||||
@ -101,7 +101,7 @@ public class ImManager {
|
|||||||
sendAckMsg(szyxMessage);
|
sendAckMsg(szyxMessage);
|
||||||
|
|
||||||
}// 数据请求
|
}// 数据请求
|
||||||
else if (topic.equals("server" + PacketType.REQUEST)) {
|
else if (topic.equals("server1" + PacketType.REQUEST)) {
|
||||||
sendPacketMessage(PacketType.RESULT, RequestManager.getInstance().request(msg));
|
sendPacketMessage(PacketType.RESULT, RequestManager.getInstance().request(msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
package cn.org.bjca.trust.java.imserver.repository;
|
package cn.org.bjca.trust.java.imserver.repository;
|
||||||
|
|
||||||
import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage;
|
import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -9,5 +11,10 @@ import java.util.List;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface MessageRepository extends JpaRepository<SZYXMessage, Long> {
|
public interface MessageRepository extends JpaRepository<SZYXMessage, Long> {
|
||||||
|
|
||||||
List<SZYXMessage> getAllByAppIdAndUserName(String appId, String userName);
|
|
||||||
|
@Query("select msg from SZYXMessage as msg " +
|
||||||
|
"where msg.appId = ?1 and msg.userName = ?2 and (msg.fromClientId=?3 or msg.groupID=?3 or msg.toClientId=?3)" +
|
||||||
|
"and msg.timestamp<?4 order by msg._id desc ")
|
||||||
|
List<SZYXMessage> getHistoryForCount(String appId, String userName, String userId, long timestamp, Pageable pageable);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,4 +2,10 @@ package cn.org.bjca.trust.java.imserver.request;
|
|||||||
|
|
||||||
public class RequestConstant {
|
public class RequestConstant {
|
||||||
public static final String Group_create_v1 = "/group/v1/create";
|
public static final String Group_create_v1 = "/group/v1/create";
|
||||||
|
|
||||||
|
|
||||||
|
public static final String MsgHistoryForTime = "/msg/v1/getHistoryForTime";
|
||||||
|
public static final String MsgHistoryForCount = "/message/v1/getHistoryForCount";
|
||||||
|
public static final String MsgListForTime = "/message/v1/getListForTime";
|
||||||
|
public static final String MsgListForCount = "/message/v1/getListForCount";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,21 +2,29 @@ package cn.org.bjca.trust.java.imserver.request;
|
|||||||
|
|
||||||
import cn.org.bjca.trust.java.imserver.HttpResult;
|
import cn.org.bjca.trust.java.imserver.HttpResult;
|
||||||
import cn.org.bjca.trust.java.imserver.bean.group.GroupCreateData;
|
import cn.org.bjca.trust.java.imserver.bean.group.GroupCreateData;
|
||||||
|
import cn.org.bjca.trust.java.imserver.bean.group.MsgHistoryForCountData;
|
||||||
import cn.org.bjca.trust.java.imserver.common.SpringUtilsAuTo;
|
import cn.org.bjca.trust.java.imserver.common.SpringUtilsAuTo;
|
||||||
import cn.org.bjca.trust.java.imserver.common.TimeHelper;
|
import cn.org.bjca.trust.java.imserver.common.TimeHelper;
|
||||||
import cn.org.bjca.trust.java.imserver.common.json.GsonImplHelp;
|
import cn.org.bjca.trust.java.imserver.common.json.GsonImplHelp;
|
||||||
import cn.org.bjca.trust.java.imserver.entitys.GroupEntity;
|
import cn.org.bjca.trust.java.imserver.entitys.GroupEntity;
|
||||||
import cn.org.bjca.trust.java.imserver.im.msg.RequestMessage;
|
import cn.org.bjca.trust.java.imserver.im.msg.RequestMessage;
|
||||||
import cn.org.bjca.trust.java.imserver.im.msg.ResultMessage;
|
import cn.org.bjca.trust.java.imserver.im.msg.ResultMessage;
|
||||||
|
import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage;
|
||||||
import cn.org.bjca.trust.java.imserver.repository.GroupRepository;
|
import cn.org.bjca.trust.java.imserver.repository.GroupRepository;
|
||||||
import cn.org.bjca.trust.java.imserver.repository.MessageRepository;
|
import cn.org.bjca.trust.java.imserver.repository.MessageRepository;
|
||||||
import cn.org.bjca.trust.java.imserver.repository.UserRepository;
|
import cn.org.bjca.trust.java.imserver.repository.UserRepository;
|
||||||
import cn.org.bjca.trust.java.imserver.repository.tenant.ApplicationRepository;
|
import cn.org.bjca.trust.java.imserver.repository.tenant.ApplicationRepository;
|
||||||
|
import org.springframework.data.domain.PageRequest;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.Group_create_v1;
|
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.Group_create_v1;
|
||||||
|
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.MsgHistoryForCount;
|
||||||
|
|
||||||
public class RequestManager {
|
public class RequestManager {
|
||||||
|
|
||||||
@ -70,8 +78,12 @@ public class RequestManager {
|
|||||||
return (HttpResult<T>) this.groupCreate(data instanceof String ?
|
return (HttpResult<T>) this.groupCreate(data instanceof String ?
|
||||||
GsonImplHelp.get().toObject((String) data, GroupCreateData.class)
|
GsonImplHelp.get().toObject((String) data, GroupCreateData.class)
|
||||||
: (GroupCreateData) data, appId, userId);
|
: (GroupCreateData) data, appId, userId);
|
||||||
|
case MsgHistoryForCount:
|
||||||
|
return (HttpResult<T>) this.getHistoryForCount(data instanceof String ?
|
||||||
|
GsonImplHelp.get().toObject((String) data, MsgHistoryForCountData.class)
|
||||||
|
: (MsgHistoryForCountData) data, appId, userId);
|
||||||
default:
|
default:
|
||||||
return new HttpResult<>(201, "路径错误", null);
|
return new HttpResult<>(201, "路径错误" + path, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else return new HttpResult<>(201, "参数错误", null);
|
} else return new HttpResult<>(201, "参数错误", null);
|
||||||
@ -79,6 +91,17 @@ public class RequestManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private HttpResult<List<SZYXMessage>> getHistoryForCount(MsgHistoryForCountData data, String appid, String userid) {
|
||||||
|
|
||||||
|
Pageable pageable = PageRequest.of(0, 10, Sort.by("_id").descending());
|
||||||
|
|
||||||
|
List<SZYXMessage> l = messageRepository.getHistoryForCount(appid, userid, data.getUserId(), data.getTimestamp(), pageable);
|
||||||
|
l.sort((o1, o2) -> (int) (o1.get_id() - o2.get_id()));
|
||||||
|
|
||||||
|
|
||||||
|
return new HttpResult<>(200, "查询成功", l);
|
||||||
|
}
|
||||||
|
|
||||||
private HttpResult<String> groupCreate(GroupCreateData data, String appid, String userid) {
|
private HttpResult<String> groupCreate(GroupCreateData data, String appid, String userid) {
|
||||||
if (null == data.getUserIdList() || data.getUserIdList().isEmpty() || data.getUserIdList().size() < 2) {
|
if (null == data.getUserIdList() || data.getUserIdList().isEmpty() || data.getUserIdList().size() < 2) {
|
||||||
return new HttpResult<>(201, "群组成员需要大于一", "");
|
return new HttpResult<>(201, "群组成员需要大于一", "");
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户