1.优化群解散

2.发布公告时同时发送群消息
This commit is contained in:
乾乾
2025-04-25 18:15:47 +08:00
parent 9084da442f
commit e185d31cf2
7 changed files with 38 additions and 25 deletions

View File

@@ -105,13 +105,11 @@ public class ContactDao extends ServiceImpl<ContactMapper, Contact> {
* @return 是否删除成功
*/
public Boolean removeByRoomId(Long roomId, List<Long> uidList) {
LambdaQueryWrapper<Contact> wrapper = new QueryWrapper<Contact>().lambda().eq(Contact::getRoomId, roomId);
if (CollectionUtil.isNotEmpty(uidList)) {
LambdaQueryWrapper<Contact> wrapper = new QueryWrapper<Contact>().lambda()
.eq(Contact::getRoomId, roomId)
.in(Contact::getUid, uidList);
return this.remove(wrapper);
wrapper.in(Contact::getUid, uidList);
}
return false;
return this.remove(wrapper);
}
/**

View File

@@ -212,14 +212,11 @@ public class GroupMemberDao extends ServiceImpl<GroupMemberMapper, GroupMember>
* @return 是否删除成功
*/
public Boolean removeByGroupId(Long groupId, List<Long> uidList) {
LambdaQueryWrapper<GroupMember> wrapper = new QueryWrapper<GroupMember>().lambda().eq(GroupMember::getGroupId, groupId);
if (CollectionUtil.isNotEmpty(uidList)) {
LambdaQueryWrapper<GroupMember> wrapper = new QueryWrapper<GroupMember>()
.lambda()
.eq(GroupMember::getGroupId, groupId)
.in(GroupMember::getUid, uidList);
return this.remove(wrapper);
wrapper.in(GroupMember::getUid, uidList);
}
return false;
return this.remove(wrapper);
}
/**

View File

@@ -75,13 +75,13 @@ public class MessageDao extends ServiceImpl<MessageMapper, Message> {
* @return 是否删除成功
*/
public Boolean removeByRoomId(Long roomId, List<Long> uidList) {
LambdaUpdateWrapper<Message> wrapper = new UpdateWrapper<Message>().lambda()
.eq(Message::getRoomId, roomId)
.set(Message::getStatus, MessageStatusEnum.DELETE.getStatus());
if (CollectionUtil.isNotEmpty(uidList)) {
LambdaUpdateWrapper<Message> wrapper = new UpdateWrapper<Message>().lambda()
.eq(Message::getRoomId, roomId)
.in(Message::getFromUid, uidList)
.set(Message::getStatus, MessageStatusEnum.DELETE.getStatus());
return this.update(wrapper);
wrapper.in(Message::getFromUid, uidList);
}
return false;
return this.update(wrapper);
}
}

View File

@@ -23,6 +23,8 @@ public enum MessageTypeEnum {
VIDEO(6, "视频"),
EMOJI(7, "表情"),
SYSTEM(8, "系统消息"),
MERGE(9, "合并消息"),
NOTICE(10, "公告消息"),
;
private final Integer type;

View File

@@ -89,6 +89,17 @@ public class MessageAdapter {
return chatMessageReq;
}
/**
* 群公告消息
*/
public static ChatMessageReq buildAnnouncementsMsg(Long roomId, Announcements announcements) {
ChatMessageReq chatMessageReq = new ChatMessageReq();
chatMessageReq.setRoomId(roomId);
chatMessageReq.setMsgType(MessageTypeEnum.NOTICE.getType());
chatMessageReq.setBody(announcements);
return chatMessageReq;
}
/**
* 群通知
*/
@@ -102,10 +113,10 @@ public class MessageAdapter {
/**
* 群公告
*/
public static WsBaseResp<String> buildRoomGroupAnnouncement(String msg) {
WsBaseResp<String> wsBaseResp = new WsBaseResp<>();
public static WsBaseResp<Announcements> buildRoomGroupAnnouncement(Announcements announcements) {
WsBaseResp<Announcements> wsBaseResp = new WsBaseResp<>();
wsBaseResp.setType(WSRespTypeEnum.ROOM_GROUP_NOTICE_MSG.getType());
wsBaseResp.setData(msg);
wsBaseResp.setData(announcements);
return wsBaseResp;
}

View File

@@ -281,8 +281,6 @@ public class RoomAppServiceImpl implements RoomAppService {
List<Long> uids = roomService.getGroupUsers(roomGroup.getId(), false);
if(CollUtil.isNotEmpty(uids)){
LocalDateTime now = LocalDateTime.now();
pushService.sendPushMsg(MessageAdapter.buildRoomGroupAnnouncement(param.getContent()), uids, uid);
Announcements announcements = new Announcements();
announcements.setContent(param.getContent());
announcements.setRoomId(param.getRoomId());
@@ -301,7 +299,13 @@ public class RoomAppServiceImpl implements RoomAppService {
announcementsReadRecordList.add(readRecord);
});
// 批量添加未读消息
return roomService.saveBatchAnnouncementsRecord(announcementsReadRecordList);
Boolean saved = roomService.saveBatchAnnouncementsRecord(announcementsReadRecordList);
if(saved){
// 发送公告消息、推送群成员公告内容
chatService.sendMsg(MessageAdapter.buildAnnouncementsMsg(param.getRoomId(), announcements), uid);
pushService.sendPushMsg(MessageAdapter.buildRoomGroupAnnouncement(announcements), uids, uid);
}
return saved;
}
return false;
}
@@ -321,6 +325,7 @@ public class RoomAppServiceImpl implements RoomAppService {
announcements.setTop(param.getTop());
Boolean edit = roomService.updateAnnouncement(announcements);
if(edit){
chatService.sendMsg(MessageAdapter.buildAnnouncementsMsg(param.getRoomId(), announcements), uid);
pushService.sendPushMsg(MessageAdapter.buildEditRoomGroupAnnouncement(announcements), uids, uid);
}
return edit;

View File

@@ -157,7 +157,7 @@ public class RoomServiceImpl implements RoomService {
@Override
public Boolean saveAnnouncements(Announcements announcements) {
if(announcements.getTop()){
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true));
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true).eq("room_id", announcements.getRoomId()));
}
return announcementsDao.save(announcements);
}
@@ -215,7 +215,7 @@ public class RoomServiceImpl implements RoomService {
@Override
public Boolean updateAnnouncement(Announcements announcement) {
if(announcement.getTop()){
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true));
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true).eq("room_id", announcement.getRoomId()));
}
return announcementsDao.updateById(announcement);
}