Commit e1990c69 by Future

会话消息设置已读逻辑调整

parent 633f3901
...@@ -2,6 +2,7 @@ package com.wecloud.im.controller; ...@@ -2,6 +2,7 @@ package com.wecloud.im.controller;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam; import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.service.ImInboxService; import com.wecloud.im.service.ImInboxService;
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;
...@@ -54,15 +55,15 @@ public class ImInboxController extends BaseController { ...@@ -54,15 +55,15 @@ public class ImInboxController extends BaseController {
} }
/** /**
* 整个会话消息修改为已读状态 * 会话消息修改为已读状态
*/ */
@PostMapping("/updateMsgReadStatusByConversation") @PostMapping("/updateMsgReadStatusByConversation")
@ApiOperation(value = "整个会话消息修改为已读状态") @ApiOperation(value = "会话消息修改为已读状态")
public ApiResult<Boolean> updateMsgReadStatusByConversation(@RequestBody MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws Exception { public ApiResult<Boolean> updateMsgReadStatusByConversation(@RequestBody UpdateMsgReadStatusByConversationParam param) throws Exception {
if (msgReadStatusUpdateParam.getConversationId() == null) { if (param.getConversationId() == null) {
return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION); return ApiResult.fail(ApiCode.PARAMETER_EXCEPTION);
} }
return ApiResult.ok(imInboxService.updateMsgReadStatusByConversation(msgReadStatusUpdateParam)); return ApiResult.ok(imInboxService.updateMsgReadStatusByConversation(param));
} }
} }
......
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.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/3/8 11:11
* @Description 给会话消息设置已读入参
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "给会话消息设置已读入参")
public class UpdateMsgReadStatusByConversationParam extends BaseEntity {
private static final long serialVersionUID = 4378221788952403799L;
@ApiModelProperty("会话id")
@NotNull(message = "会话id不能为空")
private Long conversationId;
@ApiModelProperty("最新一条消息id 将这条消息及之前的消息全部设置为已读")
@NotNull(message = "最新一条消息id不能为空")
private Long msgIdEnd;
}
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.im.entity.ImInbox; import com.wecloud.im.entity.ImInbox;
import com.wecloud.im.param.MsgReadStatusUpdateParam; import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
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;
...@@ -86,9 +87,9 @@ public interface ImInboxService extends BaseService<ImInbox> { ...@@ -86,9 +87,9 @@ public interface ImInboxService extends BaseService<ImInbox> {
/** /**
* 整个会话消息修改为已读状态 * 整个会话消息修改为已读状态
* @param msgReadStatusUpdateParam * @param param
* @return * @return
*/ */
Boolean updateMsgReadStatusByConversation(MsgReadStatusUpdateParam msgReadStatusUpdateParam); Boolean updateMsgReadStatusByConversation(UpdateMsgReadStatusByConversationParam param);
} }
...@@ -11,6 +11,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend; ...@@ -11,6 +11,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.mapper.ImInboxMapper; import com.wecloud.im.mapper.ImInboxMapper;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate; import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam; import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
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;
...@@ -154,12 +155,13 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox> ...@@ -154,12 +155,13 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
} }
@Override @Override
public Boolean updateMsgReadStatusByConversation(MsgReadStatusUpdateParam msgReadStatusUpdateParam) { public Boolean updateMsgReadStatusByConversation(UpdateMsgReadStatusByConversationParam param) {
ImClient currentClient = imClientService.getCurrentClient(); ImClient currentClient = imClientService.getCurrentClient();
// 获取该用户该会话所有未读消息 msgId 列表 // 获取该用户该会话所有未读消息 msgId 列表
List<ImInbox> imInboxList = this.list(new QueryWrapper<ImInbox>().lambda() List<ImInbox> imInboxList = this.list(new QueryWrapper<ImInbox>().lambda()
.eq(ImInbox::getFkConversationId, msgReadStatusUpdateParam.getConversationId()) .eq(ImInbox::getFkConversationId, param.getConversationId())
.notIn(ImInbox::getReceiver, currentClient.getId())); .le(ImInbox::getFkMsgId, param.getMsgIdEnd())
.notIn(ImInbox::getReceiver, currentClient.getId()));
if (CollectionUtils.isEmpty(imInboxList)) { if (CollectionUtils.isEmpty(imInboxList)) {
return true; return true;
} }
......
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