修改:代码优化
This commit is contained in:
parent
651619d5ef
commit
bada82f8cc
|
@ -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",
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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 @芋艿:得看看 create、update、delete、get、page 这几个接口,要保留哪些
|
||||
@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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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}}
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
|
@ -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>()
|
|
@ -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>()
|
|
@ -7,20 +7,19 @@ import org.apache.ibatis.annotations.Mapper;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
// TODO @hao:IM 前缀
|
||||
/**
|
||||
* 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));
|
||||
}
|
||||
|
|
@ -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>()
|
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public interface ConversationService {
|
||||
public interface ImConversationService {
|
||||
|
||||
/**
|
||||
* 获得用户的会话列表
|
|
@ -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 推送
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public interface GroupService {
|
||||
public interface ImGroupService {
|
||||
|
||||
/**
|
||||
* 创建群
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -13,7 +13,7 @@ import java.util.List;
|
|||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public interface GroupMemberService {
|
||||
public interface ImGroupMemberService {
|
||||
|
||||
/**
|
||||
* 创建群成员
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -10,7 +10,7 @@ import java.util.List;
|
|||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public interface InboxService {
|
||||
public interface ImInboxService {
|
||||
|
||||
/**
|
||||
* 保存收件箱和发送消息
|
|
@ -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);
|
||||
});
|
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||
*
|
||||
* @author 芋道源码
|
||||
*/
|
||||
public interface MessageService {
|
||||
public interface ImMessageService {
|
||||
|
||||
/**
|
||||
* 获得历史消息
|
|
@ -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);
|
||||
}
|
Loading…
Reference in New Issue