21 changed files with 265 additions and 122 deletions
@ -0,0 +1,78 @@ |
|||
package com.bx.implatform.task; |
|||
|
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.bx.imclient.IMClient; |
|||
import com.bx.imcommon.enums.IMTerminalType; |
|||
import com.bx.imcommon.model.IMGroupMessage; |
|||
import com.bx.imcommon.model.IMSystemMessage; |
|||
import com.bx.imcommon.model.IMUserInfo; |
|||
import com.bx.imcommon.mq.RedisMQConsumer; |
|||
import com.bx.imcommon.mq.RedisMQListener; |
|||
import com.bx.implatform.contant.Constant; |
|||
import com.bx.implatform.contant.RedisKey; |
|||
import com.bx.implatform.dto.GroupBanDTO; |
|||
import com.bx.implatform.dto.UserBanDTO; |
|||
import com.bx.implatform.entity.Group; |
|||
import com.bx.implatform.entity.GroupMessage; |
|||
import com.bx.implatform.enums.MessageStatus; |
|||
import com.bx.implatform.enums.MessageType; |
|||
import com.bx.implatform.service.IGroupMemberService; |
|||
import com.bx.implatform.service.IGroupMessageService; |
|||
import com.bx.implatform.service.IGroupService; |
|||
import com.bx.implatform.util.BeanUtils; |
|||
import com.bx.implatform.vo.GroupMessageVO; |
|||
import com.bx.implatform.vo.SystemMessageVO; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.apache.logging.log4j.util.Strings; |
|||
import org.springframework.boot.context.properties.source.ConfigurationPropertyState; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.Collections; |
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author: 谢绍许 |
|||
* @date: 2024-07-15 |
|||
* @version: 1.0 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@RedisMQListener(queue = RedisKey.IM_QUEUE_GROUP_BANNED) |
|||
public class GroupBannedConsumerTask extends RedisMQConsumer<GroupBanDTO> { |
|||
|
|||
private final IMClient imClient; |
|||
|
|||
private final IGroupMessageService groupMessageService; |
|||
|
|||
private final IGroupMemberService groupMemberService; |
|||
|
|||
@Override |
|||
public void onMessage(GroupBanDTO dto) { |
|||
log.info("群聊被封禁处理,群id:{},原因:{}", dto.getId(), dto.getReason()); |
|||
// 群聊成员列表
|
|||
List<Long> userIds = groupMemberService.findUserIdsByGroupId(dto.getId()); |
|||
// 保存消息
|
|||
GroupMessage msg = new GroupMessage(); |
|||
msg.setGroupId(dto.getId()); |
|||
String tip = "本群聊已被管理员封禁,原因:" + dto.getReason(); |
|||
msg.setContent(tip); |
|||
msg.setSendId(Constant.SYS_USER_ID); |
|||
msg.setSendTime(new Date()); |
|||
msg.setStatus(MessageStatus.UNSEND.code()); |
|||
msg.setSendNickName("系统管理员"); |
|||
msg.setType(MessageType.TIP_TEXT.code()); |
|||
groupMessageService.save(msg); |
|||
// 推送提示语到群聊中
|
|||
GroupMessageVO msgInfo = BeanUtils.copyProperties(msg, GroupMessageVO.class); |
|||
IMGroupMessage<GroupMessageVO> sendMessage = new IMGroupMessage<>(); |
|||
sendMessage.setSender(new IMUserInfo(Constant.SYS_USER_ID, IMTerminalType.PC.code())); |
|||
sendMessage.setRecvIds(userIds); |
|||
sendMessage.setSendResult(true); |
|||
sendMessage.setSendToSelf(false); |
|||
sendMessage.setData(msgInfo); |
|||
imClient.sendGroupMessage(sendMessage); |
|||
} |
|||
} |
|||
@ -0,0 +1,70 @@ |
|||
package com.bx.implatform.task; |
|||
|
|||
import cn.hutool.core.util.StrUtil; |
|||
import com.bx.imclient.IMClient; |
|||
import com.bx.imcommon.enums.IMTerminalType; |
|||
import com.bx.imcommon.model.IMGroupMessage; |
|||
import com.bx.imcommon.model.IMUserInfo; |
|||
import com.bx.imcommon.mq.RedisMQConsumer; |
|||
import com.bx.imcommon.mq.RedisMQListener; |
|||
import com.bx.implatform.contant.Constant; |
|||
import com.bx.implatform.contant.RedisKey; |
|||
import com.bx.implatform.dto.GroupBanDTO; |
|||
import com.bx.implatform.dto.GroupUnbanDTO; |
|||
import com.bx.implatform.entity.GroupMessage; |
|||
import com.bx.implatform.enums.MessageStatus; |
|||
import com.bx.implatform.enums.MessageType; |
|||
import com.bx.implatform.service.IGroupMemberService; |
|||
import com.bx.implatform.service.IGroupMessageService; |
|||
import com.bx.implatform.util.BeanUtils; |
|||
import com.bx.implatform.vo.GroupMessageVO; |
|||
import lombok.RequiredArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import java.util.Date; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author: 谢绍许 |
|||
* @date: 2024-07-15 |
|||
* @version: 1.0 |
|||
*/ |
|||
@Slf4j |
|||
@Component |
|||
@RequiredArgsConstructor |
|||
@RedisMQListener(queue = RedisKey.IM_QUEUE_GROUP_UNBAN) |
|||
public class GroupUnbanConsumerTask extends RedisMQConsumer<GroupUnbanDTO> { |
|||
|
|||
private final IMClient imClient; |
|||
|
|||
private final IGroupMessageService groupMessageService; |
|||
|
|||
private final IGroupMemberService groupMemberService; |
|||
|
|||
@Override |
|||
public void onMessage(GroupUnbanDTO dto) { |
|||
log.info("群聊解除封禁处理,群id:{}",dto.getId()); |
|||
// 群聊成员列表
|
|||
List<Long> userIds = groupMemberService.findUserIdsByGroupId(dto.getId()); |
|||
// 保存消息
|
|||
GroupMessage msg = new GroupMessage(); |
|||
msg.setGroupId(dto.getId()); |
|||
msg.setContent("已解除封禁"); |
|||
msg.setSendId(Constant.SYS_USER_ID); |
|||
msg.setSendTime(new Date()); |
|||
msg.setStatus(MessageStatus.UNSEND.code()); |
|||
msg.setSendNickName("系统管理员"); |
|||
msg.setType(MessageType.TIP_TEXT.code()); |
|||
groupMessageService.save(msg); |
|||
// 推送提示语到群聊中
|
|||
GroupMessageVO msgInfo = BeanUtils.copyProperties(msg, GroupMessageVO.class); |
|||
IMGroupMessage<GroupMessageVO> sendMessage = new IMGroupMessage<>(); |
|||
sendMessage.setSender(new IMUserInfo(Constant.SYS_USER_ID, IMTerminalType.PC.code())); |
|||
sendMessage.setRecvIds(userIds); |
|||
sendMessage.setSendResult(true); |
|||
sendMessage.setSendToSelf(false); |
|||
sendMessage.setData(msgInfo); |
|||
imClient.sendGroupMessage(sendMessage); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue