fix: 修复IM新用户与自己对话问题
This commit is contained in:
parent
d48e5a05a6
commit
c2abc4e2e4
@ -21,6 +21,13 @@ public interface ImTalkService extends IService<ImTalk> {
|
|||||||
*/
|
*/
|
||||||
ImTalk getTalkByUser(String userId1);
|
ImTalk getTalkByUser(String userId1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取与某人的聊天
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
ImTalkVO getTalkByUserId(String userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 置顶消息
|
* 置顶消息
|
||||||
*
|
*
|
||||||
|
@ -88,6 +88,50 @@ public class ImTalkServiceImpl extends ServiceImpl<ImTalkMapper, ImTalk> impleme
|
|||||||
return imTalk;
|
return imTalk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ImTalkVO getTalkByUserId(String userId) {
|
||||||
|
LambdaQueryWrapper<ImTalk> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||||
|
//登录用户的Id
|
||||||
|
String selfId = "";
|
||||||
|
//查看当前用户角色对Id进行赋值
|
||||||
|
if(UserEnums.STORE.equals(currentUser.getRole())){
|
||||||
|
selfId = currentUser.getStoreId();
|
||||||
|
}else if(UserEnums.MEMBER.equals(currentUser.getRole())){
|
||||||
|
selfId = currentUser.getId();
|
||||||
|
}
|
||||||
|
//小数在前保证永远是同一个对话
|
||||||
|
String finalSelfId = selfId;
|
||||||
|
queryWrapper.and(wq-> wq.eq(ImTalk::getUserId2, userId).eq(ImTalk::getUserId1, finalSelfId).or().eq(ImTalk::getUserId2, finalSelfId).eq(ImTalk::getUserId1, userId));
|
||||||
|
ImTalk imTalk = this.getOne(queryWrapper);
|
||||||
|
//如果没有聊天,则创建聊天
|
||||||
|
if (imTalk == null) {
|
||||||
|
//当自己为店铺时
|
||||||
|
if(UserEnums.STORE.equals(currentUser.getRole())){
|
||||||
|
Store selfStore = storeService.getById(selfId);
|
||||||
|
//没有这个用户信息
|
||||||
|
Member other = memberService.getById(userId);
|
||||||
|
if(other == null){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
//自己为店铺其他人必定为用户
|
||||||
|
imTalk = new ImTalk(other,selfStore);
|
||||||
|
}else if(UserEnums.MEMBER.equals(currentUser.getRole())){
|
||||||
|
//没有这个店铺信息
|
||||||
|
Member self = memberService.getById(selfId);
|
||||||
|
Member otherMember = memberService.getById(userId);
|
||||||
|
Store otherStore = storeService.getById(userId);
|
||||||
|
if(otherStore != null){
|
||||||
|
imTalk = new ImTalk(self, otherStore);
|
||||||
|
}else if (otherMember != null){
|
||||||
|
imTalk = new ImTalk(self, otherMember);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.save(imTalk);
|
||||||
|
}
|
||||||
|
return new ImTalkVO(imTalk,currentUser.getId());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发起聊天后,如果聊天不可见为true,则需要修正
|
* 发起聊天后,如果聊天不可见为true,则需要修正
|
||||||
*
|
*
|
||||||
|
@ -46,7 +46,7 @@ public class ImTalkController {
|
|||||||
@GetMapping(value = "/by/user/{userId}")
|
@GetMapping(value = "/by/user/{userId}")
|
||||||
@ApiOperation(value = "查看与某人聊天详情")
|
@ApiOperation(value = "查看与某人聊天详情")
|
||||||
public ResultMessage<ImTalkVO> getByUser(@PathVariable String userId) {
|
public ResultMessage<ImTalkVO> getByUser(@PathVariable String userId) {
|
||||||
return ResultUtil.data(new ImTalkVO(imTalkService.getTalkByUser(userId),userId));
|
return ResultUtil.data(imTalkService.getTalkByUserId(userId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping(value = "/top")
|
@GetMapping(value = "/top")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user