新增:消息仅发送在线用户支持,消息状态status=21

This commit is contained in:
绝尘 2024-07-25 15:32:31 +08:00
parent 621c205b6c
commit 39db13d8de
3 changed files with 13 additions and 5 deletions

View File

@ -102,7 +102,8 @@ public class ImChatService extends BaseService {
// intCache.incrHm("im:heartbeat:" + uid, "messagecount", -1); // intCache.incrHm("im:heartbeat:" + uid, "messagecount", -1);
// 更新状态失败 200ms 后重试当数据未写入的时候更新失败 // 更新状态失败 200ms 后重试当数据未写入的时候更新失败
Timers.tryDelay(() -> { Timers.tryDelay(() -> {
FilterNode node = FilterNode.create("senduserid", bean.getSenduserid()).and("receiveuserid", uid); // FilterNode node = FilterNode.create("senduserid", bean.getSenduserid()).and("receiveuserid", uid);
FilterNode node = FilterNode.create("messageid", bean.getMessageid());
int updateColumn = zimSource.updateColumn(FriendMessage.class, node, ColumnValue.create("status", 10)); int updateColumn = zimSource.updateColumn(FriendMessage.class, node, ColumnValue.create("status", 10));
return updateColumn != 0; return updateColumn != 0;
@ -139,7 +140,8 @@ public class ImChatService extends BaseService {
.and("senduserid", NOTEQUAL, userid) .and("senduserid", NOTEQUAL, userid)
.and("createtime", GREATERTHAN, lastAcceptTime) .and("createtime", GREATERTHAN, lastAcceptTime)
.and("createtime", LESSTHAN, System.currentTimeMillis()) .and("createtime", LESSTHAN, System.currentTimeMillis())
.and("status", NOTEQUAL, 80); .and("status", NOTEQUAL, 80)
.and("status", NOTEQUAL, 21);
try { try {
List<ChannelMessage> messages = zimSource.queryList(ChannelMessage.class, new Flipper(50, "createtime desc"), node1); List<ChannelMessage> messages = zimSource.queryList(ChannelMessage.class, new Flipper(50, "createtime desc"), node1);
@ -200,6 +202,9 @@ public class ImChatService extends BaseService {
} }
private String getGuserid(int userid) { private String getGuserid(int userid) {
if (userid == 0) {
return "0";
}
ImUser user = zimSource.find(ImUser.class, userid); ImUser user = zimSource.find(ImUser.class, userid);
return user.getGuserid(); return user.getGuserid();
} }

View File

@ -29,6 +29,9 @@ public class MessageBean {
@Comment("[接收群组]{channeltype, channelvalue}") @Comment("[接收群组]{channeltype, channelvalue}")
private SubscribeBean receivechannel; private SubscribeBean receivechannel;
@Column(comment = "[仅在线接收]0否、1是")
private short onlinereceive = 0;
public FriendMessage buildFriendMessage(int senduserid, int userid) { public FriendMessage buildFriendMessage(int senduserid, int userid) {
FriendMessage message = new FriendMessage(); FriendMessage message = new FriendMessage();
message.setContent(content); message.setContent(content);
@ -36,7 +39,7 @@ public class MessageBean {
message.setSenduserid(senduserid); message.setSenduserid(senduserid);
message.setReceiveuserid(userid); message.setReceiveuserid(userid);
message.setCreatetime(System.currentTimeMillis()); message.setCreatetime(System.currentTimeMillis());
message.setStatus((short) 20); message.setStatus(onlinereceive == 1 ? (short) 21 : 20);
message.setMessageid(Utils.fmt36(senduserid) + "-" + Utils.fmt36(message.getCreatetime())); message.setMessageid(Utils.fmt36(senduserid) + "-" + Utils.fmt36(message.getCreatetime()));
return message; return message;
@ -50,7 +53,7 @@ public class MessageBean {
message.setChanneltype(receivechannel.getChanneltype()); message.setChanneltype(receivechannel.getChanneltype());
message.setChannelvalue(receivechannel.getChannelvalue()); message.setChannelvalue(receivechannel.getChannelvalue());
message.setCreatetime(System.currentTimeMillis()); message.setCreatetime(System.currentTimeMillis());
message.setStatus((short) 20); message.setStatus(onlinereceive == 1 ? (short) 21 : 20);
message.setMessageid(Utils.fmt36(message.getSenduserid()) + "-" + Utils.fmt36(message.getCreatetime())); message.setMessageid(Utils.fmt36(message.getSenduserid()) + "-" + Utils.fmt36(message.getCreatetime()));
return message; return message;
} }

View File

@ -32,7 +32,7 @@ public class FriendMessage {
@Column(comment = "[创建时间]") @Column(comment = "[创建时间]")
private long createtime; private long createtime;
@Column(comment = "[状态]10已发送20未发送") @Column(comment = "[状态]10已发送20未发送21仅在线发送")
private short status; private short status;
public static FriendMessage buildFriendMessage(String content, int senduserid, int receiveuserid) { public static FriendMessage buildFriendMessage(String content, int senduserid, int receiveuserid) {