diff --git a/src/com/zchd/zim/ImChatService.java b/src/com/zchd/zim/ImChatService.java index 92ac412..4cf9c9e 100644 --- a/src/com/zchd/zim/ImChatService.java +++ b/src/com/zchd/zim/ImChatService.java @@ -102,7 +102,8 @@ public class ImChatService extends BaseService { // intCache.incrHm("im:heartbeat:" + uid, "messagecount", -1); // 更新状态失败, 200ms 后重试(当数据未写入的时候,更新失败) 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)); return updateColumn != 0; @@ -139,7 +140,8 @@ public class ImChatService extends BaseService { .and("senduserid", NOTEQUAL, userid) .and("createtime", GREATERTHAN, lastAcceptTime) .and("createtime", LESSTHAN, System.currentTimeMillis()) - .and("status", NOTEQUAL, 80); + .and("status", NOTEQUAL, 80) + .and("status", NOTEQUAL, 21); try { List 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) { + if (userid == 0) { + return "0"; + } ImUser user = zimSource.find(ImUser.class, userid); return user.getGuserid(); } diff --git a/src/com/zchd/zim/bean/MessageBean.java b/src/com/zchd/zim/bean/MessageBean.java index 9b1749c..b8d0532 100644 --- a/src/com/zchd/zim/bean/MessageBean.java +++ b/src/com/zchd/zim/bean/MessageBean.java @@ -29,6 +29,9 @@ public class MessageBean { @Comment("[接收群组]{channeltype, channelvalue}") private SubscribeBean receivechannel; + @Column(comment = "[仅在线接收]0否、1是") + private short onlinereceive = 0; + public FriendMessage buildFriendMessage(int senduserid, int userid) { FriendMessage message = new FriendMessage(); message.setContent(content); @@ -36,7 +39,7 @@ public class MessageBean { message.setSenduserid(senduserid); message.setReceiveuserid(userid); message.setCreatetime(System.currentTimeMillis()); - message.setStatus((short) 20); + message.setStatus(onlinereceive == 1 ? (short) 21 : 20); message.setMessageid(Utils.fmt36(senduserid) + "-" + Utils.fmt36(message.getCreatetime())); return message; @@ -50,7 +53,7 @@ public class MessageBean { message.setChanneltype(receivechannel.getChanneltype()); message.setChannelvalue(receivechannel.getChannelvalue()); 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())); return message; } diff --git a/src/com/zchd/zim/entity/FriendMessage.java b/src/com/zchd/zim/entity/FriendMessage.java index bd40741..daef138 100644 --- a/src/com/zchd/zim/entity/FriendMessage.java +++ b/src/com/zchd/zim/entity/FriendMessage.java @@ -32,7 +32,7 @@ public class FriendMessage { @Column(comment = "[创建时间]") private long createtime; - @Column(comment = "[状态]10已发送,20未发送") + @Column(comment = "[状态]10已发送,20未发送,21仅在线发送") private short status; public static FriendMessage buildFriendMessage(String content, int senduserid, int receiveuserid) {