Browse Source

代码风格优化(阿里代码规约)

master
xie.bx 2 years ago
parent
commit
3b1d16e2d2
  1. 3
      im-client/src/main/java/com/bx/imclient/IMClient.java
  2. 3
      im-client/src/main/java/com/bx/imclient/sender/IMSender.java
  3. 2
      im-client/src/main/java/com/bx/imclient/task/AbstractMessageResultTask.java
  4. 9
      im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java
  5. 9
      im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java
  6. 4
      im-platform/src/main/java/com/bx/implatform/controller/FileController.java
  7. 3
      im-platform/src/main/java/com/bx/implatform/controller/FriendController.java
  8. 3
      im-platform/src/main/java/com/bx/implatform/controller/GroupController.java
  9. 3
      im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java
  10. 3
      im-platform/src/main/java/com/bx/implatform/controller/LoginController.java
  11. 5
      im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java
  12. 3
      im-platform/src/main/java/com/bx/implatform/controller/UserController.java
  13. 3
      im-platform/src/main/java/com/bx/implatform/controller/WebrtcController.java
  14. 1
      im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java
  15. 5
      im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java
  16. 4
      im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java
  17. 35
      im-platform/src/main/java/com/bx/implatform/service/IFriendService.java
  18. 44
      im-platform/src/main/java/com/bx/implatform/service/IGroupMemberService.java
  19. 39
      im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java
  20. 57
      im-platform/src/main/java/com/bx/implatform/service/IGroupService.java
  21. 38
      im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java
  22. 51
      im-platform/src/main/java/com/bx/implatform/service/IUserService.java
  23. 38
      im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java
  24. 56
      im-platform/src/main/java/com/bx/implatform/service/impl/GroupMemberServiceImpl.java
  25. 37
      im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java
  26. 59
      im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java
  27. 40
      im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java
  28. 57
      im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java
  29. 2
      im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java
  30. 2
      im-platform/src/main/resources/application.yml
  31. 4
      im-server/src/main/java/com/bx/imserver/config/RedisConfig.java
  32. 4
      im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java
  33. 5
      im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java
  34. 7
      im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java
  35. 6
      im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java
  36. 3
      im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java
  37. 2
      im-server/src/main/java/com/bx/imserver/task/PullGroupMessageTask.java
  38. 2
      im-server/src/main/java/com/bx/imserver/task/PullPrivateMessageTask.java

3
im-client/src/main/java/com/bx/imclient/IMClient.java

@ -4,6 +4,7 @@ import com.bx.imclient.sender.IMSender;
import com.bx.imcommon.enums.IMTerminalType;
import com.bx.imcommon.model.IMGroupMessage;
import com.bx.imcommon.model.IMPrivateMessage;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
@ -11,9 +12,9 @@ import java.util.List;
import java.util.Map;
@Configuration
@AllArgsConstructor
public class IMClient {
@Autowired
private IMSender imSender;
/**

3
im-client/src/main/java/com/bx/imclient/sender/IMSender.java

@ -8,6 +8,7 @@ import com.bx.imcommon.enums.IMListenerType;
import com.bx.imcommon.enums.IMSendCode;
import com.bx.imcommon.enums.IMTerminalType;
import com.bx.imcommon.model.*;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
@ -16,13 +17,13 @@ import org.springframework.stereotype.Service;
import java.util.*;
@Service
@AllArgsConstructor
public class IMSender {
@Autowired
@Qualifier("IMRedisTemplate")
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private MessageListenerMulticaster listenerMulticaster;
public<T> void sendPrivateMessage(IMPrivateMessage<T> message) {

2
im-client/src/main/java/com/bx/imclient/task/AbstractPullMessageTask.java → im-client/src/main/java/com/bx/imclient/task/AbstractMessageResultTask.java

@ -8,7 +8,7 @@ import javax.annotation.PreDestroy;
import java.util.concurrent.*;
@Slf4j
public abstract class AbstractPullMessageTask implements CommandLineRunner {
public abstract class AbstractMessageResultTask implements CommandLineRunner {
private int threadNum = 8;

9
im-client/src/main/java/com/bx/imclient/task/PullSendResultGroupMessageTask.java → im-client/src/main/java/com/bx/imclient/task/GroupMessageResultResultTask.java

@ -5,21 +5,22 @@ import com.bx.imclient.listener.MessageListenerMulticaster;
import com.bx.imcommon.contant.IMRedisKey;
import com.bx.imcommon.enums.IMListenerType;
import com.bx.imcommon.model.IMSendResult;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Component
public class PullSendResultGroupMessageTask extends AbstractPullMessageTask{
@AllArgsConstructor
public class GroupMessageResultResultTask extends AbstractMessageResultTask {
@Qualifier("IMRedisTemplate")
@Autowired
@Resource(name = "IMRedisTemplate")
private RedisTemplate<String,Object> redisTemplate;
@Autowired
private MessageListenerMulticaster listenerMulticaster;
@Override

9
im-client/src/main/java/com/bx/imclient/task/PullSendResultPrivateMessageTask.java → im-client/src/main/java/com/bx/imclient/task/PrivateMessageResultResultTask.java

@ -5,26 +5,27 @@ import com.bx.imclient.listener.MessageListenerMulticaster;
import com.bx.imcommon.contant.IMRedisKey;
import com.bx.imcommon.enums.IMListenerType;
import com.bx.imcommon.model.IMSendResult;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
;
@Slf4j
@Component
public class PullSendResultPrivateMessageTask extends AbstractPullMessageTask{
@AllArgsConstructor
public class PrivateMessageResultResultTask extends AbstractMessageResultTask {
@Qualifier("IMRedisTemplate")
@Autowired
@Resource(name = "IMRedisTemplate")
private RedisTemplate<String,Object> redisTemplate;
@Autowired
private MessageListenerMulticaster listenerMulticaster;
@Override

4
im-platform/src/main/java/com/bx/implatform/controller/FileController.java

@ -6,6 +6,7 @@ import com.bx.implatform.service.thirdparty.FileService;
import com.bx.implatform.vo.UploadImageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@ -16,10 +17,9 @@ import org.springframework.web.multipart.MultipartFile;
@Slf4j
@RestController
@Api(tags = "文件上传")
@AllArgsConstructor
public class FileController {
@Autowired
private FileService fileService;
@ApiOperation(value = "上传图片",notes="上传图片,上传后返回原图和缩略图的url")

3
im-platform/src/main/java/com/bx/implatform/controller/FriendController.java

@ -8,6 +8,7 @@ import com.bx.implatform.session.SessionContext;
import com.bx.implatform.vo.FriendVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -19,9 +20,9 @@ import java.util.stream.Collectors;
@Api(tags = "好友")
@RestController
@RequestMapping("/friend")
@AllArgsConstructor
public class FriendController {
@Autowired
private IFriendService friendService;
@GetMapping("/list")

3
im-platform/src/main/java/com/bx/implatform/controller/GroupController.java

@ -9,6 +9,7 @@ import com.bx.implatform.vo.GroupMemberVO;
import com.bx.implatform.vo.GroupVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -21,9 +22,9 @@ import java.util.List;
@Api(tags = "群聊")
@RestController
@RequestMapping("/group")
@AllArgsConstructor
public class GroupController {
@Autowired
private IGroupService groupService;
@ApiOperation(value = "创建群聊",notes="创建群聊")

3
im-platform/src/main/java/com/bx/implatform/controller/GroupMessageController.java

@ -9,6 +9,7 @@ import com.bx.implatform.dto.GroupMessageDTO;
import com.bx.implatform.vo.PrivateMessageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -20,9 +21,9 @@ import java.util.List;
@Api(tags = "群聊消息")
@RestController
@RequestMapping("/message/group")
@AllArgsConstructor
public class GroupMessageController {
@Autowired
private IGroupMessageService groupMessageService;

3
im-platform/src/main/java/com/bx/implatform/controller/LoginController.java

@ -10,6 +10,7 @@ import com.bx.implatform.dto.RegisterDTO;
import com.bx.implatform.vo.LoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -19,9 +20,9 @@ import javax.validation.Valid;
@Api(tags = "用户登录和注册")
@RestController
@AllArgsConstructor
public class LoginController {
@Autowired
private IUserService userService;
@PostMapping("/login")

5
im-platform/src/main/java/com/bx/implatform/controller/PrivateMessageController.java

@ -8,6 +8,7 @@ import com.bx.implatform.service.IPrivateMessageService;
import com.bx.implatform.dto.PrivateMessageDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -18,9 +19,9 @@ import java.util.List;
@Api(tags = "私聊消息")
@RestController
@RequestMapping("/message/private")
@AllArgsConstructor
public class PrivateMessageController {
@Autowired
private IPrivateMessageService privateMessageService;
@PostMapping("/send")

3
im-platform/src/main/java/com/bx/implatform/controller/UserController.java

@ -11,6 +11,7 @@ import com.bx.implatform.vo.OnlineTerminalVO;
import com.bx.implatform.vo.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -22,9 +23,9 @@ import java.util.List;
@Api(tags = "用户")
@RestController
@RequestMapping("/user")
@AllArgsConstructor
public class UserController {
@Autowired
private IUserService userService;

3
im-platform/src/main/java/com/bx/implatform/controller/WebrtcController.java

@ -6,6 +6,7 @@ import com.bx.implatform.result.ResultUtils;
import com.bx.implatform.service.IWebrtcService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -14,9 +15,9 @@ import java.util.List;
@Api(tags = "webrtc视频单人通话")
@RestController
@RequestMapping("/webrtc/private")
@AllArgsConstructor
public class WebrtcController {
@Autowired
private IWebrtcService webrtcService;
@ApiOperation(httpMethod = "POST", value = "呼叫视频通话")

1
im-platform/src/main/java/com/bx/implatform/interceptor/AuthInterceptor.java

@ -8,6 +8,7 @@ import com.bx.implatform.enums.ResultCode;
import com.bx.implatform.exception.GlobalException;
import com.bx.implatform.session.UserSession;
import com.bx.imcommon.util.JwtUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod;

5
im-platform/src/main/java/com/bx/implatform/listener/GroupMessageListener.java

@ -7,6 +7,7 @@ import com.bx.imcommon.enums.IMSendCode;
import com.bx.implatform.vo.GroupMessageVO;
import com.bx.imcommon.model.IMSendResult;
import com.bx.implatform.contant.RedisKey;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@ -14,9 +15,9 @@ import org.springframework.data.redis.core.RedisTemplate;
@Slf4j
@IMListener(type = IMListenerType.GROUP_MESSAGE)
@AllArgsConstructor
public class GroupMessageListener implements MessageListener<GroupMessageVO> {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Override

4
im-platform/src/main/java/com/bx/implatform/listener/PrivateMessageListener.java

@ -10,18 +10,20 @@ import com.bx.imcommon.model.IMSendResult;
import com.bx.implatform.entity.PrivateMessage;
import com.bx.implatform.enums.MessageStatus;
import com.bx.implatform.service.IPrivateMessageService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@Slf4j
@IMListener(type = IMListenerType.PRIVATE_MESSAGE)
public class PrivateMessageListener implements MessageListener<PrivateMessageVO> {
@Lazy
@Autowired
private IPrivateMessageService privateMessageService;
@Override
public void process(IMSendResult<PrivateMessageVO> result){
PrivateMessageVO messageInfo = result.getData();

35
im-platform/src/main/java/com/bx/implatform/service/IFriendService.java

@ -9,15 +9,50 @@ import java.util.List;
public interface IFriendService extends IService<Friend> {
/**
* 判断用户2是否用户1的好友
*
* @param userId1 用户1的id
* @param userId2 用户2的id
* @return true/false
*/
Boolean isFriend(Long userId1, Long userId2);
/**
* 查询用户的所有好友
*
* @param userId 用户id
* @return 好友列表
*/
List<Friend> findFriendByUserId(Long userId);
/**
* 添加好友互相建立好友关系
*
* @param friendId 好友的用户id
*/
void addFriend(Long friendId);
/**
* 删除好友双方都会解除好友关系
*
* @param friendId 好友的用户id
*/
void delFriend(Long friendId);
/**
* 更新好友信息主要是头像和昵称
*
* @param vo 好友vo
*/
void update(FriendVO vo);
/**
* 查询指定的某个好友信息
*
* @param friendId 好友的用户id
* @return 好友信息
*/
FriendVO findFriend(Long friendId);
}

44
im-platform/src/main/java/com/bx/implatform/service/IGroupMemberService.java

@ -9,18 +9,60 @@ import java.util.List;
public interface IGroupMemberService extends IService<GroupMember> {
/**
* 根据群聊id和用户id查询群聊成员
*
* @param groupId 群聊id
* @param userId 用户id
* @return 群聊成员信息
*/
GroupMember findByGroupAndUserId(Long groupId,Long userId);
/**
* 根据用户id查询群聊成员
*
* @param userId 用户id
* @return 成员列表
*/
List<GroupMember> findByUserId(Long userId);
/**
* 根据群聊id查询群聊成员包括已退出
*
* @param groupId 群聊id
* @return 群聊成员列表
*/
List<GroupMember> findByGroupId(Long groupId);
/**
* 根据群聊id查询没有退出的群聊成员id
*
* @param groupId 群聊id
* @return 群聊成员id列表
*/
List<Long> findUserIdsByGroupId(Long groupId);
/**
* 批量添加成员
*
* @param groupId 群聊id
* @param members 成员列表
* @return 成功或失败
*/
boolean saveOrUpdateBatch(Long groupId,List<GroupMember> members);
/**
* 根据群聊id删除移除成员
*
* @param groupId 群聊id
*/
void removeByGroupId(Long groupId);
/**
*根据群聊id和用户id移除成员
*
* @param groupId 群聊id
* @param userId 用户id
*/
void removeByGroupAndUserId(Long groupId,Long userId);
}

39
im-platform/src/main/java/com/bx/implatform/service/IGroupMessageService.java

@ -10,16 +10,49 @@ import java.util.List;
public interface IGroupMessageService extends IService<GroupMessage> {
Long sendMessage(GroupMessageDTO vo);
/**
* 发送群聊消息(高并发接口查询mysql接口都要进行缓存)
*
* @param dto 群聊消息
* @return 群聊id
*/
Long sendMessage(GroupMessageDTO dto);
/**
* 撤回消息
*
* @param id 消息id
*/
void recallMessage(Long id);
/**
*
* 异步拉取群聊消息通过websocket异步推送
*/
void pullUnreadMessage();
/**
* 拉取消息只能拉取最近1个月的消息一次拉取100条
*
* @param minId 消息起始id
* @return 聊天消息列表
*/
List<GroupMessageVO> loadMessage(Long minId);
/**
* 消息已读,同步其他终端清空未读数量
*
* @param groupId 群聊
*/
void readedMessage(Long groupId);
/**
* 拉取历史聊天记录
*
* @param groupId 群聊id
* @param page 页码
* @param size 页码大小
* @return 聊天记录列表
*/
List<GroupMessageVO> findHistoryMessage(Long groupId, Long page, Long size);
}

57
im-platform/src/main/java/com/bx/implatform/service/IGroupService.java

@ -11,24 +11,79 @@ import java.util.List;
public interface IGroupService extends IService<Group> {
/**
* 创建新群聊
*
* @param vo 群聊信息
* @return 群聊信息
**/
GroupVO createGroup(GroupVO vo);
/**
* 修改群聊信息
*
* @param vo 群聊信息
* @return 群聊信息
**/
GroupVO modifyGroup(GroupVO vo);
/**
* 删除群聊
*
* @param groupId 群聊id
**/
void deleteGroup(Long groupId);
/**
* 退出群聊
*
* @param groupId 群聊id
*/
void quitGroup(Long groupId);
/**
* 将用户踢出群聊
*
* @param groupId 群聊id
* @param userId 用户id
*/
void kickGroup(Long groupId,Long userId);
/**
* 查询当前用户的所有群聊
*
* @return 群聊信息列表
**/
List<GroupVO> findGroups();
/**
* 邀请好友进群
*
* @param vo 群id好友id列表
**/
void invite(GroupInviteVO vo);
/**
* 根据id查找群聊并进行缓存
*
* @param groupId 群聊id
* @return 群聊实体
*/
Group getById(Long groupId);
/**
* 根据id查找群聊
*
* @param groupId 群聊id
* @return 群聊vo
*/
GroupVO findById(Long groupId);
/**
* 查询群成员
*
* @param groupId 群聊id
* @return List<GroupMemberVO>
**/
List<GroupMemberVO> findGroupMembers(Long groupId);
}

38
im-platform/src/main/java/com/bx/implatform/service/IPrivateMessageService.java

@ -10,15 +10,49 @@ import java.util.List;
public interface IPrivateMessageService extends IService<PrivateMessage> {
Long sendMessage(PrivateMessageDTO vo);
/**
* 发送私聊消息(高并发接口查询mysql接口都要进行缓存)
*
* @param dto 私聊消息
* @return 消息id
*/
Long sendMessage(PrivateMessageDTO dto);
/**
* 撤回消息
*
* @param id 消息id
*/
void recallMessage(Long id);
/**
* 拉取历史聊天记录
*
* @param friendId 好友id
* @param page 页码
* @param size 页码大小
* @return 聊天记录列表
*/
List<PrivateMessageVO> findHistoryMessage(Long friendId, Long page,Long size);
/**
* 异步拉取私聊消息通过websocket异步推送
*/
void pullUnreadMessage();
/**
* 拉取消息只能拉取最近1个月的消息一次拉取100条
*
* @param minId 消息起始id
* @return 聊天消息列表
*/
List<PrivateMessageVO> loadMessage(Long minId);
/**
* 消息已读,将整个会话的消息都置为已读状态
*
* @param friendId 好友id
*/
void readedMessage(Long friendId);
}

51
im-platform/src/main/java/com/bx/implatform/service/IUserService.java

@ -14,22 +14,73 @@ import java.util.List;
public interface IUserService extends IService<User> {
/**
* 用户登录
*
* @param dto 登录dto
* @return 登录token
*/
LoginVO login(LoginDTO dto);
/**
* 修改用户密码
*
* @param dto 修改密码dto
*/
void modifyPassword(ModifyPwdDTO dto);
/**
* 用refreshToken换取新 token
*
* @param refreshToken 刷新token
* @return 登录token
*/
LoginVO refreshToken(String refreshToken);
/**
* 用户注册
*
* @param dto 注册dto
*/
void register(RegisterDTO dto);
/**
* 根据用户名查询用户
*
* @param username 用户名
* @return 用户信息
*/
User findUserByUserName(String username);
/**
* 更新用户信息好友昵称和群聊昵称等冗余信息也会更新
*
* @param vo 用户信息vo
*/
void update(UserVO vo);
/**
* 根据用户昵id查询用户以及在线状态
*
* @param id 用户id
* @return 用户信息
*/
UserVO findUserById(Long id);
/**
* 根据用户昵称查询用户最多返回20条数据
*
* @param name 用户名或昵称
* @return 用户列表
*/
List<UserVO> findUserByName(String name);
/**
* 获取用户在线的终端类型
*
* @param userIds 用户id多个用,分割
* @return 在线用户终端
*/
List<OnlineTerminalVO> getOnlineTerminals(String userIds);

38
im-platform/src/main/java/com/bx/implatform/service/impl/FriendServiceImpl.java

@ -35,12 +35,6 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
private final UserMapper userMapper;
/**
* 查询用户的所有好友
*
* @param userId 用户id
* @return 好友列表
*/
@Override
public List<Friend> findFriendByUserId(Long userId) {
LambdaQueryWrapper<Friend> queryWrapper = Wrappers.lambdaQuery();
@ -49,11 +43,7 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
}
/**
* 添加好友互相建立好友关系
*
* @param friendId 好友的用户id
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void addFriend(Long friendId) {
@ -69,11 +59,7 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
}
/**
* 删除好友双方都会解除好友关系
*
* @param friendId 好友的用户id
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void delFriend(Long friendId) {
@ -86,12 +72,7 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
}
/**
* 判断用户2是否用户1的好友
*
* @param userId1 用户1的id
* @param userId2 用户2的id
*/
@Cacheable(key="#userId1+':'+#userId2")
@Override
public Boolean isFriend(Long userId1, Long userId2) {
@ -103,11 +84,7 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
}
/**
* 更新好友信息主要是头像和昵称
*
* @param vo 好友vo
*/
@Override
public void update(FriendVO vo) {
long userId = SessionContext.getSession().getUserId();
@ -168,12 +145,7 @@ public class FriendServiceImpl extends ServiceImpl<FriendMapper, Friend> impleme
}
/**
* 查询指定的某个好友信息
*
* @param friendId 好友的用户id
* @return 好友信息
*/
@Override
public FriendVO findFriend(Long friendId) {
UserSession session = SessionContext.getSession();

56
im-platform/src/main/java/com/bx/implatform/service/impl/GroupMemberServiceImpl.java

@ -23,12 +23,7 @@ import java.util.stream.Collectors;
public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, GroupMember> implements IGroupMemberService {
/**
* 添加群聊成员
*
* @param member 成员
* @return 成功或失败
*/
@CacheEvict(key="#member.getGroupId()")
@Override
public boolean save(GroupMember member) {
@ -36,26 +31,14 @@ public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, Group
}
/**
* 批量添加成员
*
* @param groupId 群聊id
* @param members 成员列表
* @return 成功或失败
*/
@CacheEvict(key="#groupId")
@Override
public boolean saveOrUpdateBatch(Long groupId,List<GroupMember> members) {
return super.saveOrUpdateBatch(members);
}
/**
* 根据群聊id和用户id查询群聊成员
*
* @param groupId 群聊id
* @param userId 用户id
* @return 群聊成员信息
*/
@Override
public GroupMember findByGroupAndUserId(Long groupId, Long userId) {
QueryWrapper<GroupMember> wrapper = new QueryWrapper<>();
@ -64,13 +47,6 @@ public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, Group
return this.getOne(wrapper);
}
/**
* 根据用户id查询群聊成员
*
* @param userId 用户id
* @return 成员列表
*/
@Override
public List<GroupMember> findByUserId(Long userId) {
LambdaQueryWrapper<GroupMember> memberWrapper = Wrappers.lambdaQuery();
@ -79,13 +55,6 @@ public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, Group
return this.list(memberWrapper);
}
/**
* 根据群聊id查询群聊成员包括已退出
*
* @param groupId 群聊id
* @return 群聊成员列表
*/
@Override
public List<GroupMember> findByGroupId(Long groupId) {
LambdaQueryWrapper<GroupMember> memberWrapper = Wrappers.lambdaQuery();
@ -93,13 +62,6 @@ public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, Group
return this.list(memberWrapper);
}
/**
* 根据群聊id查询没有退出的群聊成员id
*
* @param groupId 群聊id
* @return 群聊成员id列表
*/
@Cacheable(key="#groupId")
@Override
public List<Long> findUserIdsByGroupId(Long groupId) {
@ -110,12 +72,6 @@ public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, Group
return members.stream().map(GroupMember::getUserId).collect(Collectors.toList());
}
/**
* 根据群聊id删除移除成员
*
* @param groupId 群聊id
*/
@CacheEvict(key = "#groupId")
@Override
public void removeByGroupId(Long groupId) {
@ -125,12 +81,6 @@ public class GroupMemberServiceImpl extends ServiceImpl<GroupMemberMapper, Group
this.update(wrapper);
}
/**
*根据群聊id和用户id移除成员
*
* @param groupId 群聊id
* @param userId 用户id
*/
@CacheEvict(key = "#groupId")
@Override
public void removeByGroupAndUserId(Long groupId, Long userId) {

37
im-platform/src/main/java/com/bx/implatform/service/impl/GroupMessageServiceImpl.java

@ -45,12 +45,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
private RedisTemplate<String, Object> redisTemplate;
private IMClient imClient;
/**
* 发送群聊消息(高并发接口查询mysql接口都要进行缓存)
*
* @param dto 群聊消息
* @return 群聊id
*/
@Override
public Long sendMessage(GroupMessageDTO dto) {
UserSession session = SessionContext.getSession();
@ -92,11 +87,6 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
}
/**
* 撤回消息
*
* @param id 消息id
*/
@Override
public void recallMessage(Long id) {
UserSession session = SessionContext.getSession();
@ -146,9 +136,6 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
}
/**
* 异步拉取群聊消息通过websocket异步推送
*/
@Override
public void pullUnreadMessage() {
UserSession session = SessionContext.getSession();
@ -187,12 +174,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
}
/**
* 拉取消息只能拉取最近1个月的消息一次拉取100条
*
* @param minId 消息起始id
* @return 聊天消息列表
*/
@Override
public List<GroupMessageVO> loadMessage(Long minId) {
UserSession session = SessionContext.getSession();
@ -243,11 +225,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
return vos;
}
/**
* 消息已读,同步其他终端清空未读数量
*
* @param groupId 群聊
*/
@Override
public void readedMessage(Long groupId) {
UserSession session = SessionContext.getSession();
@ -279,14 +257,7 @@ public class GroupMessageServiceImpl extends ServiceImpl<GroupMessageMapper, Gro
}
/**
* 拉取历史聊天记录
*
* @param groupId 群聊id
* @param page 页码
* @param size 页码大小
* @return 聊天记录列表
*/
@Override
public List<GroupMessageVO> findHistoryMessage(Long groupId, Long page, Long size) {
page = page > 0 ? page : 1;

59
im-platform/src/main/java/com/bx/implatform/service/impl/GroupServiceImpl.java

@ -49,12 +49,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
private IFriendService friendsService;
private IMClient imClient;
/**
* 创建新群聊
*
* @param vo 群聊信息
* @return 群聊信息
**/
@Override
public GroupVO createGroup(GroupVO vo) {
UserSession session = SessionContext.getSession();
@ -79,12 +74,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
return vo;
}
/**
* 修改群聊信息
*
* @param vo 群聊信息
* @return 群聊信息
**/
@CacheEvict(value = "#vo.getId()")
@Transactional(rollbackFor = Exception.class)
@Override
@ -110,11 +100,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
}
/**
* 删除群聊
*
* @param groupId 群聊id
**/
@Transactional(rollbackFor = Exception.class)
@CacheEvict(value = "#groupId")
@Override
@ -133,11 +119,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
}
/**
* 退出群聊
*
* @param groupId 群聊id
*/
@Override
public void quitGroup(Long groupId) {
Long userId = SessionContext.getSession().getUserId();
@ -151,12 +133,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
}
/**
* 将用户踢出群聊
*
* @param groupId 群聊id
* @param userId 用户id
*/
@Override
public void kickGroup(Long groupId, Long userId) {
UserSession session = SessionContext.getSession();
@ -186,12 +163,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
return vo;
}
/**
* 根据id查找群聊并进行缓存
*
* @param groupId 群聊id
* @return 群聊实体
*/
@Cacheable(value = "#groupId")
@Override
public Group getById(Long groupId){
@ -207,11 +179,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
/**
* 查询当前用户的所有群聊
*
* @return 群聊信息列表
**/
@Override
public List<GroupVO> findGroups() {
UserSession session = SessionContext.getSession();
@ -235,11 +203,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
}).collect(Collectors.toList());
}
/**
* 邀请好友进群
*
* @Param GroupInviteVO 群id好友id列表
**/
@Override
public void invite(GroupInviteVO vo) {
UserSession session = SessionContext.getSession();
@ -280,12 +244,7 @@ public class GroupServiceImpl extends ServiceImpl<GroupMapper, Group> implements
log.info("邀请进入群聊,群聊id:{},群聊名称:{},被邀请用户id:{}",group.getId(),group.getName(),vo.getFriendIds());
}
/**
* 查询群成员
*
* @Param groupId 群聊id
* @return List<GroupMemberVO>
**/
@Override
public List<GroupMemberVO> findGroupMembers(Long groupId) {
List<GroupMember> members = groupMemberService.findByGroupId(groupId);

40
im-platform/src/main/java/com/bx/implatform/service/impl/PrivateMessageServiceImpl.java

@ -44,12 +44,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
private IMClient imClient;
/**
* 发送私聊消息(高并发接口查询mysql接口都要进行缓存)
*
* @param dto 私聊消息
* @return 消息id
*/
@Override
public Long sendMessage(PrivateMessageDTO dto) {
UserSession session = SessionContext.getSession();
@ -75,11 +70,6 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
return msg.getId();
}
/**
* 撤回消息
*
* @param id 消息id
*/
@Override
public void recallMessage(Long id) {
UserSession session = SessionContext.getSession();
@ -119,14 +109,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
}
/**
* 拉取历史聊天记录
*
* @param friendId 好友id
* @param page 页码
* @param size 页码大小
* @return 聊天记录列表
*/
@Override
public List<PrivateMessageVO> findHistoryMessage(Long friendId, Long page, Long size) {
page = page > 0 ? page : 1;
@ -149,9 +132,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
return messageInfos;
}
/**
* 异步拉取私聊消息通过websocket异步推送
*/
@Override
public void pullUnreadMessage() {
UserSession session = SessionContext.getSession();
@ -188,12 +169,7 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
}
/**
* 拉取消息只能拉取最近1个月的消息一次拉取100条
*
* @param minId 消息起始id
* @return 聊天消息列表
*/
@Override
public List<PrivateMessageVO> loadMessage(Long minId) {
UserSession session = SessionContext.getSession();
@ -234,12 +210,8 @@ public class PrivateMessageServiceImpl extends ServiceImpl<PrivateMessageMapper,
}
/**
* 消息已读,将整个会话的消息都置为已读状态
*
* @param friendId 好友id
*/
@Transactional
@Transactional(rollbackFor = Exception.class)
@Override
public void readedMessage(Long friendId) {
UserSession session = SessionContext.getSession();

57
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@ -50,12 +50,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
private JwtProperties jwtProperties;
private IMClient imClient;
/**
* 用户登录
*
* @param dto 登录dto
* @return 登录token
*/
@Override
public LoginVO login(LoginDTO dto) {
@ -81,15 +75,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
return vo;
}
/**
* 用refreshToken换取新 token
*
* @param refreshToken 刷新token
* @return 登录token
*/
@Override
public LoginVO refreshToken(String refreshToken) {
//验证 token
@ -108,11 +93,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
return vo;
}
/**
* 用户注册
*
* @param dto 注册dto
*/
@Override
public void register(RegisterDTO dto) {
User user = this.findUserByUserName(dto.getUserName());
@ -138,12 +119,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
log.info("用户修改密码,用户id:{},用户名:{},昵称:{}",user.getId(),user.getUserName(),user.getNickName());
}
/**
* 根据用户名查询用户
*
* @param username 用户名
* @return 用户信息
*/
@Override
public User findUserByUserName(String username) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
@ -152,12 +128,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
}
/**
* 更新用户信息好友昵称和群聊昵称等冗余信息也会更新
*
* @param vo 用户信息vo
*/
@Transactional
@Transactional(rollbackFor = Exception.class)
@Override
public void update(UserVO vo) {
UserSession session = SessionContext.getSession();
@ -197,12 +169,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
log.info("用户信息更新,用户:{}}", user);
}
/**
* 根据用户昵id查询用户以及在线状态
*
* @param id 用户id
* @return 用户信息
*/
@Override
public UserVO findUserById(Long id) {
User user = this.getById(id);
@ -211,12 +178,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
return vo;
}
/**
* 根据用户昵称查询用户最多返回20条数据
*
* @param name 用户名或昵称
* @return 用户列表
*/
@Override
public List<UserVO> findUserByName(String name) {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
@ -235,13 +197,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
}
/**
* 获取用户在线的终端类型
*
* @param userIds 用户id多个用,分割
* @return 在线用户终端
*/
@Override
public List<OnlineTerminalVO> getOnlineTerminals(String userIds) {
List<Long> userIdList = Arrays.stream(userIds.split(","))

2
im-platform/src/main/java/com/bx/implatform/vo/PrivateMessageVO.java

@ -13,7 +13,7 @@ import java.util.Date;
public class PrivateMessageVO {
@ApiModelProperty(value = " 消息id")
private long id;
private Long id;
@ApiModelProperty(value = " 发送者id")
private Long sendId;

2
im-platform/src/main/resources/application.yml

@ -3,8 +3,6 @@ server:
port: 8888
#配置项目的数据源
spring:
main:
allow-circular-references: true
mvc:
pathmatch:
matching-strategy: ant_path_matcher

4
im-server/src/main/java/com/bx/imserver/config/RedisConfig.java

@ -19,10 +19,6 @@ import javax.annotation.Resource;
@Configuration
public class RedisConfig {
@Resource
private RedisConnectionFactory factory;
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate();

4
im-server/src/main/java/com/bx/imserver/netty/IMServerGroup.java

@ -1,6 +1,7 @@
package com.bx.imserver.netty;
import com.bx.imcommon.contant.IMRedisKey;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
@ -12,14 +13,13 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
public class IMServerGroup implements CommandLineRunner {
public static volatile long serverId = 0;
@Autowired
RedisTemplate<String,Object> redisTemplate;
@Autowired
private List<IMServer> imServers;
/***

5
im-server/src/main/java/com/bx/imserver/netty/processor/GroupMessageProcessor.java

@ -9,6 +9,7 @@ import com.bx.imcommon.model.IMUserInfo;
import com.bx.imcommon.model.IMSendResult;
import com.bx.imserver.netty.UserChannelCtxMap;
import io.netty.channel.ChannelHandlerContext;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@ -19,9 +20,9 @@ import java.util.List;
@Slf4j
@Component
@AllArgsConstructor
public class GroupMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Async

7
im-server/src/main/java/com/bx/imserver/netty/processor/HeartbeatProcessor.java

@ -10,6 +10,7 @@ import com.bx.imserver.constant.ChannelAttrKey;
import com.bx.imserver.netty.ws.WebSocketServer;
import io.netty.channel.ChannelHandlerContext;
import io.netty.util.AttributeKey;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@ -20,13 +21,9 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Component
@AllArgsConstructor
public class HeartbeatProcessor extends AbstractMessageProcessor<IMHeartbeatInfo> {
@Autowired
private WebSocketServer wsServer;
@Autowired
RedisTemplate<String,Object> redisTemplate;
@Override

6
im-server/src/main/java/com/bx/imserver/netty/processor/LoginProcessor.java

@ -14,6 +14,8 @@ import com.bx.imserver.netty.IMServerGroup;
import com.bx.imserver.netty.UserChannelCtxMap;
import io.netty.channel.ChannelHandlerContext;
import io.netty.util.AttributeKey;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -25,10 +27,10 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Component
@RequiredArgsConstructor
public class LoginProcessor extends AbstractMessageProcessor<IMLoginInfo> {
@Autowired
RedisTemplate<String,Object> redisTemplate;
private final RedisTemplate<String,Object> redisTemplate;
@Value("${jwt.accessToken.secret}")
private String accessTokenSecret;

3
im-server/src/main/java/com/bx/imserver/netty/processor/PrivateMessageProcessor.java

@ -9,6 +9,7 @@ import com.bx.imcommon.model.IMUserInfo;
import com.bx.imcommon.model.IMSendResult;
import com.bx.imserver.netty.UserChannelCtxMap;
import io.netty.channel.ChannelHandlerContext;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@ -16,9 +17,9 @@ import org.springframework.stereotype.Component;
@Slf4j
@Component
@AllArgsConstructor
public class PrivateMessageProcessor extends AbstractMessageProcessor<IMRecvInfo> {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Override

2
im-server/src/main/java/com/bx/imserver/task/PullUnreadGroupMessageTask.java → im-server/src/main/java/com/bx/imserver/task/PullGroupMessageTask.java

@ -15,7 +15,7 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class PullUnreadGroupMessageTask extends AbstractPullMessageTask {
public class PullGroupMessageTask extends AbstractPullMessageTask {
@Autowired
private RedisTemplate<String,Object> redisTemplate;

2
im-server/src/main/java/com/bx/imserver/task/PullUnreadPrivateMessageTask.java → im-server/src/main/java/com/bx/imserver/task/PullPrivateMessageTask.java

@ -16,7 +16,7 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class PullUnreadPrivateMessageTask extends AbstractPullMessageTask {
public class PullPrivateMessageTask extends AbstractPullMessageTask {
@Autowired
Loading…
Cancel
Save