修改:代码优化

This commit is contained in:
安浩浩 2024-06-02 17:01:28 +08:00
parent 651619d5ef
commit bada82f8cc
21 changed files with 106 additions and 98 deletions

View File

@ -1,7 +1,7 @@
{
"local": {
"baseUrl": "http://127.0.0.1:48080/admin-api",
"token": "test1",
"token": "test100",
"adminTenentId": "1",
"appApi": "http://127.0.0.1:48080/app-api",

View File

@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversatio
import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationRespVO;
import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationUpdatePinnedReqVO;
import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
import cn.iocoder.yudao.module.im.service.conversation.ConversationService;
import cn.iocoder.yudao.module.im.service.conversation.ImConversationService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
@ -26,26 +26,26 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
public class ImConversationController {
@Resource
private ConversationService conversationService;
private ImConversationService imConversationService;
@GetMapping("/list")
@Operation(summary = "获得用户的会话列表")
public CommonResult<List<ImConversationRespVO>> getConversationList() {
List<ImConversationDO> conversationList = conversationService.getConversationList();
List<ImConversationDO> conversationList = imConversationService.getConversationList();
return success(BeanUtils.toBean(conversationList, ImConversationRespVO.class));
}
@PostMapping("/update-pinned")
@Operation(summary = "置顶会话")
public CommonResult<Boolean> updatePinned(@Valid @RequestBody ImConversationUpdatePinnedReqVO updateReqVO) {
conversationService.updatePinned(getLoginUserId(),updateReqVO);
imConversationService.updatePinned(getLoginUserId(),updateReqVO);
return success(true);
}
@PostMapping("/update-last-read-time")
@Operation(summary = "更新最后已读时间")
public CommonResult<Boolean> updateLastReadTime(@Valid @RequestBody ImConversationUpdateLastReadTimeReqVO updateReqVO) {
conversationService.updateLastReadTime(getLoginUserId(),updateReqVO);
imConversationService.updateLastReadTime(getLoginUserId(),updateReqVO);
return success(true);
}

View File

@ -9,24 +9,15 @@ import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.im.controller.admin.group.vo.*;
import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupDO;
import cn.iocoder.yudao.module.im.service.group.GroupService;
import cn.iocoder.yudao.module.im.service.group.ImGroupService;
// TODO @芋艿得看看 createupdatedeletegetpage 这几个接口要保留哪些
@Tag(name = "管理后台 - 群")
@ -36,20 +27,20 @@ import cn.iocoder.yudao.module.im.service.group.GroupService;
public class ImGroupController {
@Resource
private GroupService groupService;
private ImGroupService imGroupService;
@PostMapping("/create")
@Operation(summary = "创建群")
@PreAuthorize("@ss.hasPermission('im:group:create')")
public CommonResult<Long> createGroup(@Valid @RequestBody ImGroupSaveReqVO createReqVO) {
return success(groupService.createGroup(createReqVO));
return success(imGroupService.createGroup(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新群")
@PreAuthorize("@ss.hasPermission('im:group:update')")
public CommonResult<Boolean> updateGroup(@Valid @RequestBody ImGroupSaveReqVO updateReqVO) {
groupService.updateGroup(updateReqVO);
imGroupService.updateGroup(updateReqVO);
return success(true);
}
@ -58,7 +49,7 @@ public class ImGroupController {
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('im:group:delete')")
public CommonResult<Boolean> deleteGroup(@RequestParam("id") Long id) {
groupService.deleteGroup(id);
imGroupService.deleteGroup(id);
return success(true);
}
@ -67,7 +58,7 @@ public class ImGroupController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('im:group:query')")
public CommonResult<ImGroupRespVO> getGroup(@RequestParam("id") Long id) {
ImGroupDO group = groupService.getGroup(id);
ImGroupDO group = imGroupService.getGroup(id);
return success(BeanUtils.toBean(group, ImGroupRespVO.class));
}
@ -75,7 +66,7 @@ public class ImGroupController {
@Operation(summary = "获得群分页")
@PreAuthorize("@ss.hasPermission('im:group:query')")
public CommonResult<PageResult<ImGroupRespVO>> getGroupPage(@Valid ImGroupPageReqVO pageReqVO) {
PageResult<ImGroupDO> pageResult = groupService.getGroupPage(pageReqVO);
PageResult<ImGroupDO> pageResult = imGroupService.getGroupPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ImGroupRespVO.class));
}

View File

@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.im.controller.admin.groupmember.vo.ImGroupMemberP
import cn.iocoder.yudao.module.im.controller.admin.groupmember.vo.ImGroupMemberRespVO;
import cn.iocoder.yudao.module.im.controller.admin.groupmember.vo.ImGroupMemberSaveReqVO;
import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
import cn.iocoder.yudao.module.im.service.groupmember.GroupMemberService;
import cn.iocoder.yudao.module.im.service.groupmember.ImGroupMemberService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -35,20 +35,20 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E
public class ImGroupMemberController {
@Resource
private GroupMemberService groupMemberService;
private ImGroupMemberService imGroupMemberService;
@PostMapping("/create")
@Operation(summary = "创建群成员")
@PreAuthorize("@ss.hasPermission('im:group-member:create')")
public CommonResult<Long> createGroupMember(@Valid @RequestBody ImGroupMemberSaveReqVO createReqVO) {
return success(groupMemberService.createGroupMember(createReqVO));
return success(imGroupMemberService.createGroupMember(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新群成员")
@PreAuthorize("@ss.hasPermission('im:group-member:update')")
public CommonResult<Boolean> updateGroupMember(@Valid @RequestBody ImGroupMemberSaveReqVO updateReqVO) {
groupMemberService.updateGroupMember(updateReqVO);
imGroupMemberService.updateGroupMember(updateReqVO);
return success(true);
}
@ -57,7 +57,7 @@ public class ImGroupMemberController {
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('im:group-member:delete')")
public CommonResult<Boolean> deleteGroupMember(@RequestParam("id") Long id) {
groupMemberService.deleteGroupMember(id);
imGroupMemberService.deleteGroupMember(id);
return success(true);
}
@ -66,7 +66,7 @@ public class ImGroupMemberController {
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('im:group-member:query')")
public CommonResult<ImGroupMemberRespVO> getGroupMember(@RequestParam("id") Long id) {
ImGroupMemberDO groupMember = groupMemberService.getGroupMember(id);
ImGroupMemberDO groupMember = imGroupMemberService.getGroupMember(id);
return success(BeanUtils.toBean(groupMember, ImGroupMemberRespVO.class));
}
@ -74,7 +74,7 @@ public class ImGroupMemberController {
@Operation(summary = "获得群成员分页")
@PreAuthorize("@ss.hasPermission('im:group-member:query')")
public CommonResult<PageResult<ImGroupMemberRespVO>> getGroupMemberPage(@Valid ImGroupMemberPageReqVO pageReqVO) {
PageResult<ImGroupMemberDO> pageResult = groupMemberService.getGroupMemberPage(pageReqVO);
PageResult<ImGroupMemberDO> pageResult = imGroupMemberService.getGroupMemberPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ImGroupMemberRespVO.class));
}
@ -85,7 +85,7 @@ public class ImGroupMemberController {
public void exportGroupMemberExcel(@Valid ImGroupMemberPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ImGroupMemberDO> list = groupMemberService.getGroupMemberPage(pageReqVO).getList();
List<ImGroupMemberDO> list = imGroupMemberService.getGroupMemberPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "群成员.xls", "数据", ImGroupMemberRespVO.class,
BeanUtils.toBean(list, ImGroupMemberRespVO.class));

View File

@ -0,0 +1,18 @@
### 请求 /send 接口 => 成功
POST {{baseUrl}}/im/message/send
Authorization: Bearer {{token}}
Content-Type: application/json
tenant-id: {{adminTenentId}}
{
"clientMessageId": "123",
"receiverId": 1,
"conversationType": 1,
"contentType": 101,
"content": "你好1"
}
### 请求 /pull 接口 => 成功
GET {{baseUrl}}/im/message/pull?sequence=0&size=2
Authorization: Bearer {{token}}
tenant-id: {{adminTenentId}}

View File

@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageRespVO;
import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSendReqVO;
import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSendRespVO;
import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
import cn.iocoder.yudao.module.im.service.message.MessageService;
import cn.iocoder.yudao.module.im.service.message.ImMessageService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -28,12 +28,12 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
public class ImMessageController {
@Resource
private MessageService messageService;
private ImMessageService imMessageService;
@PostMapping("/send")
@Operation(summary = "发送消息")
public CommonResult<ImMessageSendRespVO> sendMessage(@Valid @RequestBody ImMessageSendReqVO imMessageSendReqVO) {
ImMessageDO message = messageService.sendMessage(getLoginUserId(), imMessageSendReqVO);
ImMessageDO message = imMessageService.sendMessage(getLoginUserId(), imMessageSendReqVO);
return success(BeanUtils.toBean(message, ImMessageSendRespVO.class));
}
@ -43,14 +43,14 @@ public class ImMessageController {
@Parameter(name = "size", description = "条数", required = true, example = "10")
public CommonResult<List<ImMessageRespVO>> pullMessageList(@RequestParam("sequence") Long sequence,
@RequestParam("size") Integer size) {
List<ImMessageDO> messages = messageService.pullMessageList(getLoginUserId(), sequence, size);
List<ImMessageDO> messages = imMessageService.pullMessageList(getLoginUserId(), sequence, size);
return success(BeanUtils.toBean(messages, ImMessageRespVO.class));
}
@GetMapping("/list")
@Operation(summary = "消息列表-根据接收人和发送时间进行分页查询")
public CommonResult<List<ImMessageRespVO>> getMessageList(@Valid ImMessageListReqVO listReqVO) {
List<ImMessageDO> messagePage = messageService.getMessageList(getLoginUserId(), listReqVO);
List<ImMessageDO> messagePage = imMessageService.getMessageList(getLoginUserId(), listReqVO);
return success(BeanUtils.toBean(messagePage, ImMessageRespVO.class));
}

View File

@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Mapper;
* @author 芋道源码
*/
@Mapper
public interface ConversationMapper extends BaseMapperX<ImConversationDO> {
public interface ImConversationMapper extends BaseMapperX<ImConversationDO> {
default ImConversationDO selectByNo(String no){
return selectOne(ImConversationDO::getNo, no);

View File

@ -14,7 +14,7 @@ import cn.iocoder.yudao.module.im.controller.admin.group.vo.*;
* @author 芋道源码
*/
@Mapper
public interface GroupMapper extends BaseMapperX<ImGroupDO> {
public interface ImGroupMapper extends BaseMapperX<ImGroupDO> {
default PageResult<ImGroupDO> selectPage(ImGroupPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ImGroupDO>()

View File

@ -15,7 +15,7 @@ import java.util.List;
* @author 芋道源码
*/
@Mapper
public interface GroupMemberMapper extends BaseMapperX<ImGroupMemberDO> {
public interface ImGroupMemberMapper extends BaseMapperX<ImGroupMemberDO> {
default PageResult<ImGroupMemberDO> selectPage(ImGroupMemberPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ImGroupMemberDO>()

View File

@ -7,20 +7,19 @@ import org.apache.ibatis.annotations.Mapper;
import java.util.List;
// TODO @haoIM 前缀
/**
* IM 收件箱 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface InboxMapper extends BaseMapperX<ImInboxDO> {
public interface ImInboxMapper extends BaseMapperX<ImInboxDO> {
default List<ImInboxDO> selectListByUserIdAndSequence(Long userId, Long sequence, Integer size) {
return selectList(new LambdaQueryWrapperX<ImInboxDO>()
.gt(ImInboxDO::getUserId, userId)
.gt(ImInboxDO::getSequence, sequence)
.orderByAsc(ImInboxDO::getSequence)
.eq(ImInboxDO::getUserId, userId)
.gt(sequence != null, ImInboxDO::getSequence, sequence)
.orderByDesc(ImInboxDO::getSequence)
.last("LIMIT " + size));
}

View File

@ -14,7 +14,7 @@ import java.util.List;
* @author 芋道源码
*/
@Mapper
public interface MessageMapper extends BaseMapperX<ImMessageDO> {
public interface ImMessageMapper extends BaseMapperX<ImMessageDO> {
default List<ImMessageDO> selectMessageList(ImMessageDO message) {
return selectList(new LambdaQueryWrapperX<ImMessageDO>()

View File

@ -12,7 +12,7 @@ import java.util.List;
*
* @author 芋道源码
*/
public interface ConversationService {
public interface ImConversationService {
/**
* 获得用户的会话列表

View File

@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.im.service.conversation;
import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationUpdateLastReadTimeReqVO;
import cn.iocoder.yudao.module.im.controller.admin.conversation.vo.ImConversationUpdatePinnedReqVO;
import cn.iocoder.yudao.module.im.dal.dataobject.conversation.ImConversationDO;
import cn.iocoder.yudao.module.im.dal.mysql.conversation.ConversationMapper;
import cn.iocoder.yudao.module.im.dal.mysql.conversation.ImConversationMapper;
import cn.iocoder.yudao.module.im.enums.conversation.ImConversationTypeEnum;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@ -19,14 +19,14 @@ import java.util.List;
*/
@Service
@Validated
public class ConversationServiceImpl implements ConversationService {
public class ImConversationServiceImpl implements ImConversationService {
@Resource
private ConversationMapper conversationMapper;
private ImConversationMapper imConversationMapper;
@Override
public List<ImConversationDO> getConversationList() {
return conversationMapper.selectList();
return imConversationMapper.selectList();
}
@Override
@ -34,14 +34,14 @@ public class ConversationServiceImpl implements ConversationService {
// 1. 获得会话编号
String no = ImConversationTypeEnum.generateConversationNo(loginUserId, updateReqVO.getTargetId(), updateReqVO.getType());
// 2. 查询会话
ImConversationDO conversation = conversationMapper.selectByNo(no);
ImConversationDO conversation = imConversationMapper.selectByNo(no);
if (conversation == null) {
// 2.1. 不存在则插入
conversation = insertConversation(no, loginUserId, updateReqVO.getTargetId(), updateReqVO.getType());
}
// 3. 更新会话
conversation.setPinned(updateReqVO.getPinned());
conversationMapper.updateById(conversation);
imConversationMapper.updateById(conversation);
// 4. 做对应更新的 notify 推送
}
@ -51,7 +51,7 @@ public class ConversationServiceImpl implements ConversationService {
imConversationDO.setUserId(userId);
imConversationDO.setTargetId(targetId);
imConversationDO.setType(type);
conversationMapper.insert(imConversationDO);
imConversationMapper.insert(imConversationDO);
return imConversationDO;
}
@ -60,14 +60,14 @@ public class ConversationServiceImpl implements ConversationService {
// 1. 获得会话编号
String no = ImConversationTypeEnum.generateConversationNo(loginUserId, updateReqVO.getTargetId(), updateReqVO.getType());
// 2. 查询会话
ImConversationDO conversation = conversationMapper.selectByNo(no);
ImConversationDO conversation = imConversationMapper.selectByNo(no);
if (conversation == null) {
// 2.1. 不存在则插入
conversation = insertConversation(no, loginUserId, updateReqVO.getTargetId(), updateReqVO.getType());
}
// 3. 更新会话
conversation.setLastReadTime(updateReqVO.getLastReadTime());
conversationMapper.updateById(conversation);
imConversationMapper.updateById(conversation);
// 4. 做对应更新的 notify 推送
}

View File

@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
*
* @author 芋道源码
*/
public interface GroupService {
public interface ImGroupService {
/**
* 创建群

View File

@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.im.dal.mysql.group.GroupMapper;
import cn.iocoder.yudao.module.im.dal.mysql.group.ImGroupMapper;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
@ -22,16 +22,16 @@ import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
*/
@Service
@Validated
public class GroupServiceImpl implements GroupService {
public class ImGroupServiceImpl implements ImGroupService {
@Resource
private GroupMapper groupMapper;
private ImGroupMapper imGroupMapper;
@Override
public Long createGroup(ImGroupSaveReqVO createReqVO) {
// 插入
ImGroupDO group = BeanUtils.toBean(createReqVO, ImGroupDO.class);
groupMapper.insert(group);
imGroupMapper.insert(group);
// 返回
return group.getId();
}
@ -42,7 +42,7 @@ public class GroupServiceImpl implements GroupService {
validateGroupExists(updateReqVO.getId());
// 更新
ImGroupDO updateObj = BeanUtils.toBean(updateReqVO, ImGroupDO.class);
groupMapper.updateById(updateObj);
imGroupMapper.updateById(updateObj);
}
@Override
@ -50,23 +50,23 @@ public class GroupServiceImpl implements GroupService {
// 校验存在
validateGroupExists(id);
// 删除
groupMapper.deleteById(id);
imGroupMapper.deleteById(id);
}
private void validateGroupExists(Long id) {
if (groupMapper.selectById(id) == null) {
if (imGroupMapper.selectById(id) == null) {
throw exception(GROUP_NOT_EXISTS);
}
}
@Override
public ImGroupDO getGroup(Long id) {
return groupMapper.selectById(id);
return imGroupMapper.selectById(id);
}
@Override
public PageResult<ImGroupDO> getGroupPage(ImGroupPageReqVO pageReqVO) {
return groupMapper.selectPage(pageReqVO);
return imGroupMapper.selectPage(pageReqVO);
}
}

View File

@ -13,7 +13,7 @@ import java.util.List;
*
* @author 芋道源码
*/
public interface GroupMemberService {
public interface ImGroupMemberService {
/**
* 创建群成员

View File

@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.im.dal.mysql.groupmember.GroupMemberMapper;
import cn.iocoder.yudao.module.im.dal.mysql.groupmember.ImGroupMemberMapper;
import java.util.List;
@ -23,16 +23,16 @@ import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
*/
@Service
@Validated
public class GroupMemberServiceImpl implements GroupMemberService {
public class ImGroupMemberServiceImpl implements ImGroupMemberService {
@Resource
private GroupMemberMapper groupMemberMapper;
private ImGroupMemberMapper imGroupMemberMapper;
@Override
public Long createGroupMember(ImGroupMemberSaveReqVO createReqVO) {
// 插入
ImGroupMemberDO groupMember = BeanUtils.toBean(createReqVO, ImGroupMemberDO.class);
groupMemberMapper.insert(groupMember);
imGroupMemberMapper.insert(groupMember);
// 返回
return groupMember.getId();
}
@ -43,7 +43,7 @@ public class GroupMemberServiceImpl implements GroupMemberService {
validateGroupMemberExists(updateReqVO.getId());
// 更新
ImGroupMemberDO updateObj = BeanUtils.toBean(updateReqVO, ImGroupMemberDO.class);
groupMemberMapper.updateById(updateObj);
imGroupMemberMapper.updateById(updateObj);
}
@Override
@ -51,28 +51,28 @@ public class GroupMemberServiceImpl implements GroupMemberService {
// 校验存在
validateGroupMemberExists(id);
// 删除
groupMemberMapper.deleteById(id);
imGroupMemberMapper.deleteById(id);
}
private void validateGroupMemberExists(Long id) {
if (groupMemberMapper.selectById(id) == null) {
if (imGroupMemberMapper.selectById(id) == null) {
throw exception(GROUP_MEMBER_NOT_EXISTS);
}
}
@Override
public ImGroupMemberDO getGroupMember(Long id) {
return groupMemberMapper.selectById(id);
return imGroupMemberMapper.selectById(id);
}
@Override
public PageResult<ImGroupMemberDO> getGroupMemberPage(ImGroupMemberPageReqVO pageReqVO) {
return groupMemberMapper.selectPage(pageReqVO);
return imGroupMemberMapper.selectPage(pageReqVO);
}
@Override
public List<ImGroupMemberDO> selectByGroupId(Long groupId) {
return groupMemberMapper.selectListByGroupId(groupId);
return imGroupMemberMapper.selectListByGroupId(groupId);
}
}

View File

@ -10,7 +10,7 @@ import java.util.List;
*
* @author 芋道源码
*/
public interface InboxService {
public interface ImInboxService {
/**
* 保存收件箱和发送消息

View File

@ -6,11 +6,11 @@ import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageRespVO;
import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
import cn.iocoder.yudao.module.im.dal.dataobject.inbox.ImInboxDO;
import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
import cn.iocoder.yudao.module.im.dal.mysql.inbox.InboxMapper;
import cn.iocoder.yudao.module.im.dal.mysql.inbox.ImInboxMapper;
import cn.iocoder.yudao.module.im.dal.redis.inbox.InboxLockRedisDAO;
import cn.iocoder.yudao.module.im.dal.redis.inbox.SequenceRedisDAO;
import cn.iocoder.yudao.module.im.enums.conversation.ImConversationTypeEnum;
import cn.iocoder.yudao.module.im.service.groupmember.GroupMemberService;
import cn.iocoder.yudao.module.im.service.groupmember.ImGroupMemberService;
import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi;
import jakarta.annotation.Resource;
import org.dromara.hutool.core.date.DateUnit;
@ -27,13 +27,13 @@ import java.util.List;
*/
@Service
@Validated
public class InboxServiceImpl implements InboxService {
public class ImInboxServiceImpl implements ImInboxService {
private static final Long INBOX_LOCK_TIMEOUT = 120 * DateUnit.SECOND.getMillis();
private static final String IM_MESSAGE_RECEIVE = "im-message-receive";
@Resource
private InboxMapper inboxMapper;
private ImInboxMapper imInboxMapper;
@Resource
private SequenceRedisDAO sequenceRedisDAO;
@ -43,7 +43,7 @@ public class InboxServiceImpl implements InboxService {
@Resource
private WebSocketSenderApi webSocketSenderApi;
@Resource
private GroupMemberService groupMemberService;
private ImGroupMemberService imGroupMemberService;
@Override
public void saveInboxAndSendMessage(ImMessageDO message) {
@ -55,14 +55,14 @@ public class InboxServiceImpl implements InboxService {
saveInboxAndSendMessageForUser(message.getReceiverId(), message);
} else if (message.getConversationType().equals(ImConversationTypeEnum.GROUP.getType())) {
// 2.2 如果是群聊发送给群聊的所有人
List<ImGroupMemberDO> groupMembers = groupMemberService.selectByGroupId(message.getReceiverId());
List<ImGroupMemberDO> groupMembers = imGroupMemberService.selectByGroupId(message.getReceiverId());
groupMembers.forEach(groupMemberDO -> saveInboxAndSendMessageForUser(groupMemberDO.getUserId(), message));
}
}
@Override
public List<Long> selectMessageIdsByUserIdAndSequence(Long userId, Long sequence, Integer size) {
List<ImInboxDO> imInboxDOS = inboxMapper.selectListByUserIdAndSequence(userId, sequence, size);
List<ImInboxDO> imInboxDOS = imInboxMapper.selectListByUserIdAndSequence(userId, sequence, size);
return imInboxDOS.stream().map(ImInboxDO::getMessageId).toList();
}
@ -77,7 +77,7 @@ public class InboxServiceImpl implements InboxService {
.setUserId(userId)
.setMessageId(message.getId())
.setSequence(userSequence);
inboxMapper.insert(inbox);
imInboxMapper.insert(inbox);
// 3. 发送消息
sendAsyncMessage(userId, message, userSequence);
});

View File

@ -12,7 +12,7 @@ import java.util.List;
*
* @author 芋道源码
*/
public interface MessageService {
public interface ImMessageService {
/**
* 获得历史消息

View File

@ -5,12 +5,12 @@ import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageListReqVO
import cn.iocoder.yudao.module.im.controller.admin.message.vo.ImMessageSendReqVO;
import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
import cn.iocoder.yudao.module.im.dal.dataobject.message.ImMessageDO;
import cn.iocoder.yudao.module.im.dal.mysql.message.MessageMapper;
import cn.iocoder.yudao.module.im.dal.mysql.message.ImMessageMapper;
import cn.iocoder.yudao.module.im.enums.conversation.ImConversationTypeEnum;
import cn.iocoder.yudao.module.im.enums.message.ImMessageSourceEnum;
import cn.iocoder.yudao.module.im.enums.message.ImMessageStatusEnum;
import cn.iocoder.yudao.module.im.service.groupmember.GroupMemberService;
import cn.iocoder.yudao.module.im.service.inbox.InboxService;
import cn.iocoder.yudao.module.im.service.groupmember.ImGroupMemberService;
import cn.iocoder.yudao.module.im.service.inbox.ImInboxService;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import jakarta.annotation.Resource;
@ -33,16 +33,16 @@ import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.MESSAGE_RECEIV
@Service
@Validated
@Slf4j
public class MessageServiceImpl implements MessageService {
public class ImMessageServiceImpl implements ImMessageService {
@Resource
private MessageMapper messageMapper;
private ImMessageMapper imMessageMapper;
@Resource
private AdminUserApi adminUserApi;
@Resource
private InboxService inboxService;
private ImInboxService imInboxService;
@Resource
private GroupMemberService groupMemberService;
private ImGroupMemberService imGroupMemberService;
@Override
public List<ImMessageDO> getMessageList(Long loginUserId, ImMessageListReqVO listReqVO) {
@ -52,13 +52,13 @@ public class MessageServiceImpl implements MessageService {
ImMessageDO message = new ImMessageDO()
.setSendTime(listReqVO.getSendTime())
.setConversationNo(no);
return messageMapper.selectMessageList(message);
return imMessageMapper.selectMessageList(message);
}
@Override
public List<ImMessageDO> pullMessageList(Long userId, Long sequence, Integer size) {
List<Long> messageIds = inboxService.selectMessageIdsByUserIdAndSequence(userId, sequence, size);
return messageMapper.selectBatchIds(messageIds);
List<Long> messageIds = imInboxService.selectMessageIdsByUserIdAndSequence(userId, sequence, size);
return imMessageMapper.selectBatchIds(messageIds);
}
@Override
@ -66,7 +66,7 @@ public class MessageServiceImpl implements MessageService {
// 1. 保存消息
ImMessageDO message = saveMessage(fromUserId, imMessageSendReqVO);
// 2. 保存到收件箱并发送消息
inboxService.saveInboxAndSendMessage(message);
imInboxService.saveInboxAndSendMessage(message);
return message;
}
@ -83,7 +83,7 @@ public class MessageServiceImpl implements MessageService {
.setSendFrom(ImMessageSourceEnum.USER_SEND.getSource())
.setMessageStatus(ImMessageStatusEnum.SENDING.getStatus())
.setSendTime(TimeUtil.now());
messageMapper.insert(imMessageDO);
imMessageMapper.insert(imMessageDO);
return imMessageDO;
}
@ -96,7 +96,7 @@ public class MessageServiceImpl implements MessageService {
}
} else if (message.getConversationType().equals(ImConversationTypeEnum.GROUP.getType())) {
// 校验群聊是否存在
List<ImGroupMemberDO> imGroupMemberDOS = groupMemberService.selectByGroupId(message.getReceiverId());
List<ImGroupMemberDO> imGroupMemberDOS = imGroupMemberService.selectByGroupId(message.getReceiverId());
if (imGroupMemberDOS.isEmpty()) {
throw exception(MESSAGE_RECEIVER_NOT_EXISTS);
}