Commit 31427855 by Future

已读接口、读者接口新增

parent 4df4aa53
...@@ -61,8 +61,6 @@ public class NormalChatAction { ...@@ -61,8 +61,6 @@ public class NormalChatAction {
@Autowired @Autowired
private ImConversationService imConversationService; private ImConversationService imConversationService;
@Autowired @Autowired
private AsyncPush systemPush;
@Autowired
private ImConversationMembersService imConversationMembersService; private ImConversationMembersService imConversationMembersService;
@Autowired @Autowired
private ImMessageService imMessageService; private ImMessageService imMessageService;
......
...@@ -2,6 +2,8 @@ package com.wecloud.im.controller; ...@@ -2,6 +2,8 @@ package com.wecloud.im.controller;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.friend.param.ImFriendApplyDto;
import com.wecloud.im.param.ClientInfoParam;
import com.wecloud.im.param.GetClientInfoParam; import com.wecloud.im.param.GetClientInfoParam;
import com.wecloud.im.param.GetOnlineStatusParam; import com.wecloud.im.param.GetOnlineStatusParam;
import com.wecloud.im.param.add.ImClientDeviceInfoAdd; import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
...@@ -10,9 +12,12 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate; ...@@ -10,9 +12,12 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
import com.wecloud.im.param.add.ImClientNicknameAdd; import com.wecloud.im.param.add.ImClientNicknameAdd;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.vo.ClientInfoVo;
import com.wecloud.im.vo.GetInfoListVo; import com.wecloud.im.vo.GetInfoListVo;
import com.wecloud.im.vo.ImOnlineStatusVo; import com.wecloud.im.vo.ImOnlineStatusVo;
import com.wecloud.im.vo.MyInfoVo;
import com.wecloud.im.ws.cache.UserStateCacheManager; import com.wecloud.im.ws.cache.UserStateCacheManager;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.validator.groups.Add; import io.geekidea.springbootplus.framework.core.validator.groups.Add;
...@@ -52,6 +57,16 @@ public class ImClientController extends BaseController { ...@@ -52,6 +57,16 @@ public class ImClientController extends BaseController {
@Autowired @Autowired
private ImApplicationService imApplicationService; private ImApplicationService imApplicationService;
/**
* 查询我的信息
*/
@PostMapping("/myInfo")
@ApiOperation(value = "查询我的信息")
public ApiResult<MyInfoVo> myInfo() {
MyInfoVo myInfo = imClientService.getMyInfo();
return ApiResult.ok(myInfo);
}
@PostMapping("/infoList") @PostMapping("/infoList")
@ApiOperation(value = "根据id获取Client的头像昵称") @ApiOperation(value = "根据id获取Client的头像昵称")
...@@ -59,6 +74,19 @@ public class ImClientController extends BaseController { ...@@ -59,6 +74,19 @@ public class ImClientController extends BaseController {
return imClientService.getInfoList(getClientInfoParam); return imClientService.getInfoList(getClientInfoParam);
} }
/**
* 查询用户信息 用户可能是好友、陌生人、被拉黑名单的人
*/
@PostMapping("/clientInfo")
@ApiOperation(value = "查询用户信息 用户可能是好友、陌生人、被拉黑名单的人")
public ApiResult<ClientInfoVo> getClientInfo(@RequestBody ClientInfoParam param) {
if(param == null) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION, null);
}
ClientInfoVo clientInfoVo = imClientService.getClientInfo(param);
return ApiResult.ok(clientInfoVo);
}
/** /**
* 添加或修改推送设备信息 * 添加或修改推送设备信息
......
package com.wecloud.im.controller; package com.wecloud.im.controller;
import com.wecloud.im.param.ImMsgReadStatusUpdate; import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.service.ImInboxService; import com.wecloud.im.service.ImInboxService;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -44,8 +44,17 @@ public class ImInboxController extends BaseController { ...@@ -44,8 +44,17 @@ public class ImInboxController extends BaseController {
*/ */
@PostMapping("/msgReadUpdate") @PostMapping("/msgReadUpdate")
@ApiOperation(value = "消息修改为已读状态") @ApiOperation(value = "消息修改为已读状态")
public ApiResult<Boolean> updateInMsgReadUpdate(@RequestBody ImMsgReadStatusUpdate imMsgReadStatusUpdate) throws Exception { public ApiResult<Boolean> updateInMsgReadUpdate(@RequestBody MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws Exception {
return imInboxService.updateImMsgRead(imMsgReadStatusUpdate); return imInboxService.updateImMsgRead(msgReadStatusUpdateParam);
}
/**
* 整个会话消息修改为已读状态
*/
@PostMapping("/updateMsgReadStatusByConversation")
@ApiOperation(value = "整个会话消息修改为已读状态")
public ApiResult<Boolean> updateMsgReadStatusByConversation(@RequestBody MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws Exception {
return ApiResult.ok(imInboxService.updateMsgReadStatusByConversation(msgReadStatusUpdateParam));
} }
// //
......
package com.wecloud.im.controller; package com.wecloud.im.controller;
import com.wecloud.im.param.GetReadersParam;
import com.wecloud.im.param.ImHistoryMessagePageParam; import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.add.ImMsgRecall; import com.wecloud.im.param.add.ImMsgRecall;
import com.wecloud.im.param.add.ImMsgUpdate; import com.wecloud.im.param.add.ImMsgUpdate;
import com.wecloud.im.service.ImMessageService; import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.vo.ImMessageOfflineListVo; import com.wecloud.im.vo.ImMessageOfflineListVo;
import com.wecloud.im.vo.OfflineMsgDto; import com.wecloud.im.vo.OfflineMsgDto;
import com.wecloud.im.vo.ReaderList;
import com.wecloud.im.vo.ReaderVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -77,6 +80,16 @@ public class ImMessageController extends BaseController { ...@@ -77,6 +80,16 @@ public class ImMessageController extends BaseController {
return ApiResult.ok(paging); return ApiResult.ok(paging);
} }
/**
* 查询某个消息已读client列表和未读client
*/
@PostMapping("/getReaders")
@ApiOperation(value = "查询某个消息已读client列表和未读client")
public ApiResult<ReaderList> getReaders(@Validated @RequestBody GetReadersParam param) {
ReaderList readerList = imMessageService.getReaders(param);
return ApiResult.ok(readerList);
}
// //
// /** // /**
// * 添加消息存储表 // * 添加消息存储表
......
package com.wecloud.im.enums;
import io.geekidea.springbootplus.framework.common.enums.BaseEnum;
/**
* @Author wenzhida
* @Date 2022/2/15 13:57
* @Description 与client关系枚举
*/
public enum RelationEnum implements BaseEnum {
/**
* 1-陌生人
*/
STRANGER(1, "陌生人"),
/**
* 2-好友
*/
FRIEND(2, "好友"),
/**
* 3-被我拉黑
*/
BE_BLACK(3, "被我拉黑");
RelationEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
private final Integer code;
private final String desc;
@Override
public Integer getCode() {
return this.code;
}
@Override
public String getDesc() {
return this.desc;
}
}
...@@ -46,6 +46,10 @@ public class ImFriend extends BaseEntity { ...@@ -46,6 +46,10 @@ public class ImFriend extends BaseEntity {
@ApiModelProperty("好友请求说明") @ApiModelProperty("好友请求说明")
private String requestRemark; private String requestRemark;
/**
* 好友关系状态
* @see com.wecloud.im.enums.FriendStateEnum
*/
@ApiModelProperty("好友关系状态") @ApiModelProperty("好友关系状态")
private Integer state; private Integer state;
......
...@@ -10,7 +10,6 @@ import com.wecloud.im.service.ImApplicationService; ...@@ -10,7 +10,6 @@ import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.ws.enums.WsResponseCmdEnum; import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.model.request.PushVO; import com.wecloud.im.ws.model.request.PushVO;
import com.wecloud.im.ws.sender.AsyncPush;
import com.wecloud.im.ws.sender.ChannelSender; import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.pushserver.client.model.constant.MqConstant; import com.wecloud.pushserver.client.model.constant.MqConstant;
import com.wecloud.pushserver.client.model.dto.PushDTO; import com.wecloud.pushserver.client.model.dto.PushDTO;
...@@ -31,9 +30,6 @@ public class FriendEventSender { ...@@ -31,9 +30,6 @@ public class FriendEventSender {
private ChannelSender channelSender; private ChannelSender channelSender;
@Autowired @Autowired
private AsyncPush systemPush;
@Autowired
private ImApplicationService imApplicationService; private ImApplicationService imApplicationService;
@Autowired @Autowired
...@@ -96,7 +92,7 @@ public class FriendEventSender { ...@@ -96,7 +92,7 @@ public class FriendEventSender {
PushVO pushVO = new PushVO(); PushVO pushVO = new PushVO();
pushVO.setTitle(FRIEND_APPROVE_TITLE); pushVO.setTitle(FRIEND_APPROVE_TITLE);
pushVO.setSubTitle(isAgree? FRIEND_APPROVE_TITLE_AGREE : FRIEND_APPROVE_TITLE_REJECT); pushVO.setSubTitle(isAgree ? FRIEND_APPROVE_TITLE_AGREE : FRIEND_APPROVE_TITLE_REJECT);
PushDTO pushDTO = mqSender.buildPushDto(pushVO, receiveClient, app); PushDTO pushDTO = mqSender.buildPushDto(pushVO, receiveClient, app);
mqSender.sendAsync(MqConstant.Topic.IM_MSG_TOPIC, MqConstant.Tag.IM_MSG_TAG, pushDTO); mqSender.sendAsync(MqConstant.Topic.IM_MSG_TOPIC, MqConstant.Tag.IM_MSG_TAG, pushDTO);
} }
......
...@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.entity.ImMessage; import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.param.GetReadersParam;
import com.wecloud.im.param.ImHistoryMessagePageParam; import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.ImMessagePageParam; import com.wecloud.im.param.ImMessagePageParam;
import com.wecloud.im.param.ImMessageQueryVo; import com.wecloud.im.param.ImMessageQueryVo;
import com.wecloud.im.vo.OfflineMsgDto; import com.wecloud.im.vo.OfflineMsgDto;
import com.wecloud.im.vo.ReaderVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -75,4 +77,13 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> { ...@@ -75,4 +77,13 @@ public interface ImMessageMapper extends BaseMapper<ImMessage> {
* @return * @return
*/ */
OfflineMsgDto getLastMsgByConversationId(@Param("conversationId") Long conversationId); OfflineMsgDto getLastMsgByConversationId(@Param("conversationId") Long conversationId);
/**
* 获取一条消息已读人员和未读人员
* @param currentClientId
* @param param
* @return
*/
List<ReaderVo> getReaders(@Param("currentClientId") Long currentClientId, @Param("param") GetReadersParam param);
} }
package com.wecloud.im.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/2/15 11:14
* @Description 获取client信息入参
*/
@Data
public class ClientInfoParam implements Serializable {
private static final long serialVersionUID = 4061204250751318983L;
@ApiModelProperty("会话id")
private Long conversationId;
@ApiModelProperty("clientId")
private String clientId;
}
package com.wecloud.im.param;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @Author wenzhida
* @Date 2022/2/15 20:45
* @Description 获取某条消息已读人员入参
*/
@Getter
@Setter
@ApiModel(value = "获取某条消息已读人员入参")
public class GetReadersParam extends BaseEntity {
private static final long serialVersionUID = -2415497107453497807L;
@ApiModelProperty("会话id")
private Long conversationId;
@ApiModelProperty("消息id")
private Long msgId;
}
...@@ -19,9 +19,12 @@ import java.util.List; ...@@ -19,9 +19,12 @@ import java.util.List;
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMsgReadStatusUpdate") @ApiModel(value = "ImMsgReadStatusUpdate")
public class ImMsgReadStatusUpdate extends BaseEntity { public class MsgReadStatusUpdateParam extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id")
private Long conversationId;
@ApiModelProperty("消息id数组,可以传入单个或多个, 如接收离线消息列表时可以批量修改 则传入多个") @ApiModelProperty("消息id数组,可以传入单个或多个, 如接收离线消息列表时可以批量修改 则传入多个")
private List<Long> msgIds; private List<Long> msgIds;
......
package com.wecloud.im.service; package com.wecloud.im.service;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.param.ClientInfoParam;
import com.wecloud.im.param.GetClientInfoParam; import com.wecloud.im.param.GetClientInfoParam;
import com.wecloud.im.param.ImClientPageParam; import com.wecloud.im.param.ImClientPageParam;
import com.wecloud.im.param.ImClientQueryVo; import com.wecloud.im.param.ImClientQueryVo;
...@@ -9,10 +10,13 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd; ...@@ -9,10 +10,13 @@ import com.wecloud.im.param.add.ImClientDeviceInfoAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAdd; import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate; import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
import com.wecloud.im.param.add.ImClientNicknameAdd; import com.wecloud.im.param.add.ImClientNicknameAdd;
import com.wecloud.im.vo.ClientInfoVo;
import com.wecloud.im.vo.GetInfoListVo; import com.wecloud.im.vo.GetInfoListVo;
import com.wecloud.im.vo.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
...@@ -24,6 +28,12 @@ import java.util.List; ...@@ -24,6 +28,12 @@ import java.util.List;
*/ */
public interface ImClientService extends BaseService<ImClient> { public interface ImClientService extends BaseService<ImClient> {
/**
* 查询我的信息
* @return
*/
MyInfoVo getMyInfo();
boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) throws Exception; boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd) throws Exception;
boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate); boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate);
...@@ -38,6 +48,13 @@ public interface ImClientService extends BaseService<ImClient> { ...@@ -38,6 +48,13 @@ public interface ImClientService extends BaseService<ImClient> {
*/ */
ApiResult<List<GetInfoListVo>> getInfoList(GetClientInfoParam getClientInfoParam) throws Exception; ApiResult<List<GetInfoListVo>> getInfoList(GetClientInfoParam getClientInfoParam) throws Exception;
/**
* 获取群里成员信息
* @param param
* @return
*/
ClientInfoVo getClientInfo(ClientInfoParam param);
boolean updateNickname(ImClientNicknameAdd imClientNicknameAdd) throws Exception; boolean updateNickname(ImClientNicknameAdd imClientNicknameAdd) throws Exception;
......
...@@ -2,7 +2,7 @@ package com.wecloud.im.service; ...@@ -2,7 +2,7 @@ package com.wecloud.im.service;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImInbox; import com.wecloud.im.entity.ImInbox;
import com.wecloud.im.param.ImMsgReadStatusUpdate; import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService; import io.geekidea.springbootplus.framework.common.service.BaseService;
...@@ -82,6 +82,13 @@ public interface ImInboxService extends BaseService<ImInbox> { ...@@ -82,6 +82,13 @@ public interface ImInboxService extends BaseService<ImInbox> {
* *
* @return * @return
*/ */
ApiResult<Boolean> updateImMsgRead(ImMsgReadStatusUpdate imMsgReadStatusUpdate) throws JsonProcessingException; ApiResult<Boolean> updateImMsgRead(MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws JsonProcessingException;
/**
* 整个会话消息修改为已读状态
* @param msgReadStatusUpdateParam
* @return
*/
Boolean updateMsgReadStatusByConversation(MsgReadStatusUpdateParam msgReadStatusUpdateParam);
} }
...@@ -4,6 +4,7 @@ import com.wecloud.im.entity.ImApplication; ...@@ -4,6 +4,7 @@ import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImMessage; import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.param.ChatContentVo; import com.wecloud.im.param.ChatContentVo;
import com.wecloud.im.param.GetReadersParam;
import com.wecloud.im.param.ImClientSimpleDto; import com.wecloud.im.param.ImClientSimpleDto;
import com.wecloud.im.param.ImHistoryMessagePageParam; import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.add.ImMsgRecall; import com.wecloud.im.param.add.ImMsgRecall;
...@@ -11,6 +12,7 @@ import com.wecloud.im.param.add.ImMsgSendToOnlineClient; ...@@ -11,6 +12,7 @@ import com.wecloud.im.param.add.ImMsgSendToOnlineClient;
import com.wecloud.im.param.add.ImMsgUpdate; import com.wecloud.im.param.add.ImMsgUpdate;
import com.wecloud.im.vo.ImMessageOfflineListVo; import com.wecloud.im.vo.ImMessageOfflineListVo;
import com.wecloud.im.vo.OfflineMsgDto; import com.wecloud.im.vo.OfflineMsgDto;
import com.wecloud.im.vo.ReaderList;
import com.wecloud.im.ws.model.request.ReceiveDataVO; import com.wecloud.im.ws.model.request.ReceiveDataVO;
import com.wecloud.im.ws.model.request.ReceiveVO; import com.wecloud.im.ws.model.request.ReceiveVO;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -112,39 +114,11 @@ public interface ImMessageService extends BaseService<ImMessage> { ...@@ -112,39 +114,11 @@ public interface ImMessageService extends BaseService<ImMessage> {
*/ */
boolean saveImMessage(ImMessage imMessage) throws Exception; boolean saveImMessage(ImMessage imMessage) throws Exception;
// /** /**
// * 修改 * 获取读取人员
// * * @param param
// * @param imMessage * @return
// * @return */
// * @throws Exception ReaderList getReaders(GetReadersParam param);
// */
// boolean updateImMessage(ImMessage imMessage) throws Exception;
//
// /**
// * 删除
// *
// * @param id
// * @return
// * @throws Exception
// */
// boolean deleteImMessage(Long id) throws Exception;
//
// /**
// * 根据ID获取查询对象
// *
// * @param id
// * @return
// * @throws Exception
// */
// ImMessageQueryVo getImMessageById(Long id) throws Exception;
//
// /**
// * 获取分页对象
// *
// * @param imMessagePageParam
// * @return
// * @throws Exception
// */
// Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception;
} }
...@@ -13,6 +13,7 @@ import com.wecloud.im.param.add.ImClientBlacklistUpdate; ...@@ -13,6 +13,7 @@ import com.wecloud.im.param.add.ImClientBlacklistUpdate;
import com.wecloud.im.service.ImClientBlacklistService; import com.wecloud.im.service.ImClientBlacklistService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -53,19 +54,22 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl ...@@ -53,19 +54,22 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ApiResult<Boolean> addImClientBlacklist(ImClientBlacklistUpdate imClientBlacklistUpdate) throws Exception { public ApiResult<Boolean> addImClientBlacklist(ImClientBlacklistUpdate imClientBlacklistUpdate) throws Exception {
ImClient client = imClientService.getCurentClient(); ImClient client = imClientService.getCurentClient();
if (client == null) {
ImClient client1 = imClientService.getOne(new QueryWrapper<ImClient>().lambda() throw new BusinessException("当前用户登录信息失效");
}
ImClient beBlacker = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, client.getFkAppid()) .eq(ImClient::getFkAppid, client.getFkAppid())
.eq(ImClient::getClientId, imClientBlacklistUpdate.getClientIdBePrevent())); .eq(ImClient::getClientId, imClientBlacklistUpdate.getClientIdBePrevent()));
if (beBlacker == null) {
throw new BusinessException("查无用户信息");
}
ImClientBlacklist imClientBlacklist = new ImClientBlacklist(); ImClientBlacklist imClientBlacklist = new ImClientBlacklist();
imClientBlacklist.setId(SnowflakeUtil.getId()); imClientBlacklist.setId(SnowflakeUtil.getId());
imClientBlacklist.setCreateTime(new Date()); imClientBlacklist.setCreateTime(new Date());
imClientBlacklist.setFkAppid(client.getFkAppid()); imClientBlacklist.setFkAppid(client.getFkAppid());
imClientBlacklist.setFkClientIdPrevent(client.getId()); imClientBlacklist.setFkClientIdPrevent(client.getId());
imClientBlacklist.setFkClientIdBePrevent(client1.getId()); imClientBlacklist.setFkClientIdBePrevent(beBlacker.getId());
this.save(imClientBlacklist);
boolean save = this.save(imClientBlacklist);
return ApiResult.ok(); return ApiResult.ok();
} }
...@@ -75,17 +79,20 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl ...@@ -75,17 +79,20 @@ public class ImClientBlacklistServiceImpl extends BaseServiceImpl<ImClientBlackl
public ApiResult<Boolean> removeImClientBlacklist(ImClientBlacklistUpdate imClientBlacklistUpdate) throws Exception { public ApiResult<Boolean> removeImClientBlacklist(ImClientBlacklistUpdate imClientBlacklistUpdate) throws Exception {
// 操作者 // 操作者
ImClient client = imClientService.getCurentClient(); ImClient client = imClientService.getCurentClient();
if (client == null) {
throw new BusinessException("当前用户登录信息失效");
}
// 被拉黑者 // 被拉黑者
ImClient client1 = imClientService.getOne(new QueryWrapper<ImClient>().lambda() ImClient beBlacker = imClientService.getOne(new QueryWrapper<ImClient>().lambda()
.eq(ImClient::getFkAppid, client.getFkAppid()) .eq(ImClient::getFkAppid, client.getFkAppid())
.eq(ImClient::getClientId, imClientBlacklistUpdate.getClientIdBePrevent())); .eq(ImClient::getClientId, imClientBlacklistUpdate.getClientIdBePrevent()));
if (beBlacker == null) {
throw new BusinessException("查无用户信息");
}
// 删除 // 删除
boolean remove = this.remove(new QueryWrapper<ImClientBlacklist>().lambda() this.remove(new QueryWrapper<ImClientBlacklist>().lambda()
.eq(ImClientBlacklist::getFkClientIdPrevent, client.getId()) .eq(ImClientBlacklist::getFkClientIdPrevent, client.getId())
.eq(ImClientBlacklist::getFkClientIdBePrevent, client1.getId())); .eq(ImClientBlacklist::getFkClientIdBePrevent, beBlacker.getId()));
return ApiResult.ok(); return ApiResult.ok();
} }
......
...@@ -5,9 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; ...@@ -5,9 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImClientBlacklist;
import com.wecloud.im.enums.FriendStateEnum;
import com.wecloud.im.enums.RelationEnum;
import com.wecloud.im.friend.entity.ImFriend;
import com.wecloud.im.friend.service.ImFriendService;
import com.wecloud.im.mapper.ImClientMapper; import com.wecloud.im.mapper.ImClientMapper;
import com.wecloud.im.param.ClientInfoParam;
import com.wecloud.im.param.GetClientInfoParam; import com.wecloud.im.param.GetClientInfoParam;
import com.wecloud.im.param.ImClientPageParam; import com.wecloud.im.param.ImClientPageParam;
import com.wecloud.im.param.ImClientQueryVo; import com.wecloud.im.param.ImClientQueryVo;
...@@ -17,8 +24,11 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAdd; ...@@ -17,8 +24,11 @@ import com.wecloud.im.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate; import com.wecloud.im.param.add.ImClientHeadPortraitAndNicknameUpdate;
import com.wecloud.im.param.add.ImClientNicknameAdd; import com.wecloud.im.param.add.ImClientNicknameAdd;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientBlacklistService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.vo.ClientInfoVo;
import com.wecloud.im.vo.GetInfoListVo; import com.wecloud.im.vo.GetInfoListVo;
import com.wecloud.im.vo.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException; import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
...@@ -27,6 +37,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging; ...@@ -27,6 +37,7 @@ import io.geekidea.springbootplus.framework.core.pagination.Paging;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken; import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import io.geekidea.springbootplus.framework.shiro.util.JwtUtil; import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
...@@ -35,6 +46,7 @@ import org.springframework.cache.annotation.Cacheable; ...@@ -35,6 +46,7 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List; import java.util.List;
/** /**
...@@ -53,6 +65,23 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien ...@@ -53,6 +65,23 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
@Autowired @Autowired
private ImApplicationService imApplicationService; private ImApplicationService imApplicationService;
@Autowired
private ImFriendService imFriendService;
@Autowired
private ImClientBlacklistService imClientBlacklistService;
@Override
public MyInfoVo getMyInfo() {
ImClient currentClient = this.getCurentClient();
if (currentClient == null) {
throw new BusinessException("当前用户登录信息失效");
}
MyInfoVo myInfoVo = new MyInfoVo();
BeanUtils.copyProperties(currentClient, myInfoVo);
return myInfoVo;
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -124,6 +153,32 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien ...@@ -124,6 +153,32 @@ public class ImClientServiceImpl extends BaseServiceImpl<ImClientMapper, ImClien
} }
@Override @Override
public ClientInfoVo getClientInfo(ClientInfoParam param) {
ImClient currentClient = this.getCurentClient();
if (currentClient == null) {
throw new BusinessException("当前用户登录信息失效");
}
List<GetInfoListVo> infoList = imClientMapper.getInfoList(currentClient.getFkAppid(), param.getConversationId(),
Lists.newArrayList(param.getClientId()));
if (CollectionUtils.isEmpty(infoList)) {
throw new BusinessException("群内未查询到该用户信息");
}
ClientInfoVo clientInfoVo = new ClientInfoVo();
BeanUtils.copyProperties(infoList.get(0), clientInfoVo);
clientInfoVo.setRelation(RelationEnum.STRANGER.getCode());
// 查询该好友与自己关系: 陌生人、好友、被拉黑名单
ImFriend imFriend = imFriendService.getByKey(currentClient.getId(), clientInfoVo.getId());
if (imFriend != null && FriendStateEnum.CONFORM.getCode().equals(imFriend.getState())) {
clientInfoVo.setRelation(RelationEnum.FRIEND.getCode());
}
// 查询是否被拉黑
if (imClientBlacklistService.isBeBlack(currentClient.getId(), clientInfoVo.getId())) {
clientInfoVo.setRelation(RelationEnum.BE_BLACK.getCode());
}
return clientInfoVo;
}
@Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean updateNickname(ImClientNicknameAdd imClientNicknameAdd) throws Exception { public boolean updateNickname(ImClientNicknameAdd imClientNicknameAdd) throws Exception {
ImClient curentClient = getCurentClient(); ImClient curentClient = getCurentClient();
......
package com.wecloud.im.service.impl; package com.wecloud.im.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Maps;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
import com.wecloud.im.entity.ImConversationMembers; import com.wecloud.im.entity.ImConversationMembers;
...@@ -8,8 +9,8 @@ import com.wecloud.im.entity.ImInbox; ...@@ -8,8 +9,8 @@ import com.wecloud.im.entity.ImInbox;
import com.wecloud.im.entity.ImMessage; import com.wecloud.im.entity.ImMessage;
import com.wecloud.im.entity.ImMessageOnlineSend; import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.mapper.ImInboxMapper; import com.wecloud.im.mapper.ImInboxMapper;
import com.wecloud.im.param.ImMsgReadStatusUpdate;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.service.ImApplicationService; import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService; import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationMembersService; import com.wecloud.im.service.ImConversationMembersService;
...@@ -23,6 +24,7 @@ import io.geekidea.springbootplus.framework.common.api.ApiCode; ...@@ -23,6 +24,7 @@ import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 消息收件箱表 服务实现类 * 消息收件箱表 服务实现类
...@@ -109,9 +112,9 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox> ...@@ -109,9 +112,9 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 是否同时修改为已读状态 // 是否同时修改为已读状态
if (imMsgReceivedUpdate.getReadStatus()) { if (imMsgReceivedUpdate.getReadStatus()) {
ImMsgReadStatusUpdate imMsgReadStatusUpdate = new ImMsgReadStatusUpdate(); MsgReadStatusUpdateParam msgReadStatusUpdateParam = new MsgReadStatusUpdateParam();
imMsgReadStatusUpdate.setMsgIds(imMsgReceivedUpdate.getMsgIds()); msgReadStatusUpdateParam.setMsgIds(imMsgReceivedUpdate.getMsgIds());
this.updateImMsgRead(imMsgReadStatusUpdate); this.updateImMsgRead(msgReadStatusUpdateParam);
} }
return ApiResult.ok(); return ApiResult.ok();
...@@ -132,11 +135,11 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox> ...@@ -132,11 +135,11 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public ApiResult<Boolean> updateImMsgRead(ImMsgReadStatusUpdate imMsgReadStatusUpdate) { public ApiResult<Boolean> updateImMsgRead(MsgReadStatusUpdateParam msgReadStatusUpdateParam) {
ImClient curentClient = imClientService.getCurentClient(); ImClient curentClient = imClientService.getCurentClient();
// 修改已读状态 // 修改已读状态
Long aLong = imInboxMapper.updateImMsgReadByIds(curentClient.getId(), imMsgReadStatusUpdate.getMsgIds()); Long aLong = imInboxMapper.updateImMsgReadByIds(curentClient.getId(), msgReadStatusUpdateParam.getMsgIds());
// 根据appKey查询appid // 根据appKey查询appid
ImApplication application = imApplicationService.getCacheById(curentClient.getFkAppid()); ImApplication application = imApplicationService.getCacheById(curentClient.getFkAppid());
...@@ -144,12 +147,34 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox> ...@@ -144,12 +147,34 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
// 内容 // 内容
HashMap<String, String> contentMap = new HashMap<>(); HashMap<String, String> contentMap = new HashMap<>();
contentMap.put("receiverId", curentClient.getClientId()); contentMap.put("receiverId", curentClient.getClientId());
sendMsgStatus(curentClient, MsgTypeEnum.CLIENT_READ_MSG, contentMap, imMsgReadStatusUpdate.getMsgIds()); sendMsgStatus(curentClient, MsgTypeEnum.CLIENT_READ_MSG, contentMap, msgReadStatusUpdateParam.getMsgIds());
return ApiResult.ok(); return ApiResult.ok();
} }
@Override
public Boolean updateMsgReadStatusByConversation(MsgReadStatusUpdateParam msgReadStatusUpdateParam) {
ImClient currentClient = imClientService.getCurentClient();
// 获取该用户该会话所有未读消息 msgId 列表
List<ImInbox> imInboxList = this.list(new QueryWrapper<ImInbox>().lambda()
.eq(ImInbox::getFkConversationId, msgReadStatusUpdateParam.getConversationId())
.notIn(ImInbox::getReceiver, currentClient.getId()));
if (CollectionUtils.isEmpty(imInboxList)) {
return true;
}
List<Long> msgIds = imInboxList.stream().map(i -> i.getFkMsgId()).collect(Collectors.toList());
// 修改已读状态
imInboxMapper.updateImMsgReadByIds(currentClient.getId(), msgIds);
// 内容
HashMap<String, String> contentMap = Maps.newHashMap();
contentMap.put("receiverId", currentClient.getClientId());
sendMsgStatus(currentClient, MsgTypeEnum.CLIENT_READ_MSG, contentMap, msgIds);
return null;
}
/** /**
* 下发状态类型消息 * 下发状态类型消息
* *
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.wecloud.im.entity.ImApiMessageOnlineSend; import com.wecloud.im.entity.ImApiMessageOnlineSend;
import com.wecloud.im.entity.ImApplication; import com.wecloud.im.entity.ImApplication;
import com.wecloud.im.entity.ImClient; import com.wecloud.im.entity.ImClient;
...@@ -14,6 +15,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend; ...@@ -14,6 +15,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.enums.ChatTypeEnum; import com.wecloud.im.enums.ChatTypeEnum;
import com.wecloud.im.mapper.ImMessageMapper; import com.wecloud.im.mapper.ImMessageMapper;
import com.wecloud.im.param.ChatContentVo; import com.wecloud.im.param.ChatContentVo;
import com.wecloud.im.param.GetReadersParam;
import com.wecloud.im.param.ImClientSimpleDto; import com.wecloud.im.param.ImClientSimpleDto;
import com.wecloud.im.param.ImHistoryMessagePageParam; import com.wecloud.im.param.ImHistoryMessagePageParam;
import com.wecloud.im.param.add.ImMsgRecall; import com.wecloud.im.param.add.ImMsgRecall;
...@@ -27,6 +29,8 @@ import com.wecloud.im.service.ImMessageService; ...@@ -27,6 +29,8 @@ import com.wecloud.im.service.ImMessageService;
import com.wecloud.im.thousandchat.service.ThousandChatService; import com.wecloud.im.thousandchat.service.ThousandChatService;
import com.wecloud.im.vo.ImMessageOfflineListVo; import com.wecloud.im.vo.ImMessageOfflineListVo;
import com.wecloud.im.vo.OfflineMsgDto; import com.wecloud.im.vo.OfflineMsgDto;
import com.wecloud.im.vo.ReaderList;
import com.wecloud.im.vo.ReaderVo;
import com.wecloud.im.ws.enums.WsResponseCmdEnum; import com.wecloud.im.ws.enums.WsResponseCmdEnum;
import com.wecloud.im.ws.model.WsResponse; import com.wecloud.im.ws.model.WsResponse;
import com.wecloud.im.ws.model.request.PushVO; import com.wecloud.im.ws.model.request.PushVO;
...@@ -37,6 +41,7 @@ import com.wecloud.im.ws.sender.ChannelSender; ...@@ -37,6 +41,7 @@ import com.wecloud.im.ws.sender.ChannelSender;
import com.wecloud.utils.JsonUtils; import com.wecloud.utils.JsonUtils;
import io.geekidea.springbootplus.framework.common.api.ApiCode; import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.exception.BusinessException;
import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl; import io.geekidea.springbootplus.framework.common.service.impl.BaseServiceImpl;
import io.geekidea.springbootplus.framework.core.pagination.PageInfo; import io.geekidea.springbootplus.framework.core.pagination.PageInfo;
import io.geekidea.springbootplus.framework.core.pagination.Paging; import io.geekidea.springbootplus.framework.core.pagination.Paging;
...@@ -319,30 +324,37 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -319,30 +324,37 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
public boolean saveImMessage(ImMessage imMessage) throws Exception { public boolean saveImMessage(ImMessage imMessage) throws Exception {
return super.save(imMessage); return super.save(imMessage);
} }
//
// @Transactional(rollbackFor = Exception.class) /**
// @Override * 获取读取人员
// public boolean updateImMessage(ImMessage imMessage) throws Exception { *
// return super.updateById(imMessage); * @param param
// } * @return
// */
// @Transactional(rollbackFor = Exception.class) @Override
// @Override public ReaderList getReaders(GetReadersParam param) {
// public boolean deleteImMessage(Long id) throws Exception { ImClient currentClient = imClientService.getCurentClient();
// return super.removeById(id); if (currentClient == null) {
// } throw new BusinessException("当前用户登录信息失效");
// }
// @Override List<ReaderVo> readerVos = imMessageMapper.getReaders(currentClient.getId(), param);
// public ImMessageQueryVo getImMessageById(Long id) throws Exception { if (CollectionUtils.isEmpty(readerVos)) {
// return imMessageMapper.getImMessageById(id); return null;
// } }
// List<ReaderVo> readList = Lists.newArrayList();
// @Override List<ReaderVo> unReadList = Lists.newArrayList();
// public Paging<ImMessageQueryVo> getImMessagePageList(ImMessagePageParam imMessagePageParam) throws Exception { for (ReaderVo readerVo : readerVos) {
// Page<ImMessageQueryVo> page = new PageInfo<>(imMessagePageParam, OrderItem.desc(getLambdaColumn(ImMessage::getCreateTime))); if (readerVo.getReadMsgStatus() == 0) {
// IPage<ImMessageQueryVo> iPage = imMessageMapper.getImMessagePageList(page, imMessagePageParam); unReadList.add(readerVo);
// return new Paging<ImMessageQueryVo>(iPage); } else {
// } readList.add(readerVo);
}
}
ReaderList readerList = new ReaderList();
readerList.setReadList(readList);
readerList.setUnReadList(unReadList);
return readerList;
}
@Override @Override
public Paging<OfflineMsgDto> getHistoryMsgConversationId(ImHistoryMessagePageParam imHistoryMessagePageParam) throws Exception { public Paging<OfflineMsgDto> getHistoryMsgConversationId(ImHistoryMessagePageParam imHistoryMessagePageParam) throws Exception {
...@@ -376,7 +388,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -376,7 +388,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
for (ImConversation imConversation : myImConversationList) { for (ImConversation imConversation : myImConversationList) {
//万人群 暂时跳过,后面统一处理 //万人群 暂时跳过,后面统一处理
if(ChatTypeEnum.THOUSAND_GROUP.getCode().equals(imConversation.getChatType())) { if (ChatTypeEnum.THOUSAND_GROUP.getCode().equals(imConversation.getChatType())) {
thousandConversations.add(imConversation); thousandConversations.add(imConversation);
continue; continue;
} }
...@@ -394,7 +406,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes ...@@ -394,7 +406,7 @@ public class ImMessageServiceImpl extends BaseServiceImpl<ImMessageMapper, ImMes
imMessageOfflineListVoList.add(imMessageOfflineListVo); imMessageOfflineListVoList.add(imMessageOfflineListVo);
} }
// 万人群的部分 // 万人群的部分
if(CollectionUtils.isNotEmpty(thousandConversations)) { if (CollectionUtils.isNotEmpty(thousandConversations)) {
List<ImMessageOfflineListVo> offlineMsgs = thousandChatService.findOfflineMsgs(thousandConversations); List<ImMessageOfflineListVo> offlineMsgs = thousandChatService.findOfflineMsgs(thousandConversations);
imMessageOfflineListVoList.addAll(offlineMsgs); imMessageOfflineListVoList.addAll(offlineMsgs);
} }
......
package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/2/15 11:29
* @Description
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ClientInfoVo")
public class ClientInfoVo implements Serializable {
private static final long serialVersionUID = 1474979499551389791L;
@ApiModelProperty("client主键id")
private Long id;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("client自己的自定义扩展属性")
private String clientAttributes;
@ApiModelProperty("会话成员列表的自定义扩展属性")
private String memberAttributes;
/**
* 与我关系
* @see com.wecloud.im.enums.RelationEnum
*/
@ApiModelProperty("与我关系 1-陌生人 2-好友 3-被我拉黑")
private Integer relation;
}
...@@ -11,6 +11,8 @@ import java.io.Serializable; ...@@ -11,6 +11,8 @@ import java.io.Serializable;
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value = "GetInfoListVo") @ApiModel(value = "GetInfoListVo")
public class GetInfoListVo implements Serializable { public class GetInfoListVo implements Serializable {
@ApiModelProperty("client主键id")
private Long id;
@ApiModelProperty("会话中client的备注名") @ApiModelProperty("会话中client的备注名")
private String clientRemarkName; private String clientRemarkName;
@ApiModelProperty("头像") @ApiModelProperty("头像")
......
package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* @Author wenzhida
* @Date 2022/2/15 16:22
* @Description 我的信息
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "我的信息")
public class MyInfoVo implements Serializable {
private static final long serialVersionUID = -5423843620435586377L;
@ApiModelProperty("主键id")
private Long id;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("最后离线时间")
private Date lastOfflineTime;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
}
package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/2/15 20:54
* @Description 已读client展示VO
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "已读client展示VO")
public class ReaderList implements Serializable {
private static final long serialVersionUID = 4658402570720540541L;
@ApiModelProperty("已读人员列表")
private List<ReaderVo> readList;
@ApiModelProperty("未读人员列表")
private List<ReaderVo> unReadList;
}
package com.wecloud.im.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/2/15 20:54
* @Description 读者VO
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "读者VO")
public class ReaderVo implements Serializable {
private static final long serialVersionUID = 4390952170006190474L;
@ApiModelProperty("client主键id")
private Long id;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("是否已读 0-否 1-是")
private Integer readMsgStatus;
}
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
<select id="getInfoList" resultType="com.wecloud.im.vo.GetInfoListVo"> <select id="getInfoList" resultType="com.wecloud.im.vo.GetInfoListVo">
SELECT SELECT
im_client.id AS id,
im_client.client_id AS clientId, im_client.client_id AS clientId,
im_client.head_portrait AS headPortrait, im_client.head_portrait AS headPortrait,
im_client.nickname, im_client.nickname,
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
UPDATE im_inbox UPDATE im_inbox
SET `im_inbox`.`update_time` = NOW(), SET `im_inbox`.`update_time` = NOW(),
`im_inbox`.`read_msg_status` = 1, `im_inbox`.`read_msg_status` = 1,
`im_inbox`.`receiver_time` = NOW(),
`im_inbox`.`read_time` = NOW() `im_inbox`.`read_time` = NOW()
WHERE WHERE
im_inbox.receiver = #{clientId} im_inbox.receiver = #{clientId}
......
...@@ -119,4 +119,16 @@ ...@@ -119,4 +119,16 @@
ORDER BY create_time DESC LIMIT 1 ORDER BY create_time DESC LIMIT 1
</select> </select>
<select id="getReaders" resultType="com.wecloud.im.vo.ReaderVo">
SELECT client.id as id,
client.head_portrait as headPortrait,
client.nickname as nickname,
client.client_id as clientId,
inbox.read_msg_status as readMsgStatus
FROM `im_inbox` inbox LEFT JOIN im_client client on inbox.receiver = client.id
WHERE inbox.fk_conversation_id = #{param.conversationId}
and inbox.fk_msg_id = #{param.msgId}
and inbox.receiver != #{currentClientId}
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment