Commit e1990c69 by Future

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

parent 633f3901
......@@ -2,6 +2,7 @@ package com.wecloud.im.controller;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.service.ImInboxService;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
......@@ -54,15 +55,15 @@ public class ImInboxController extends BaseController {
}
/**
* 整个会话消息修改为已读状态
* 会话消息修改为已读状态
*/
@PostMapping("/updateMsgReadStatusByConversation")
@ApiOperation(value = "整个会话消息修改为已读状态")
public ApiResult<Boolean> updateMsgReadStatusByConversation(@RequestBody MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws Exception {
if (msgReadStatusUpdateParam.getConversationId() == null) {
@ApiOperation(value = "会话消息修改为已读状态")
public ApiResult<Boolean> updateMsgReadStatusByConversation(@RequestBody UpdateMsgReadStatusByConversationParam param) throws Exception {
if (param.getConversationId() == null) {
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;
import com.wecloud.im.entity.ImInbox;
import com.wecloud.im.param.MsgReadStatusUpdateParam;
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.service.BaseService;
......@@ -86,9 +87,9 @@ public interface ImInboxService extends BaseService<ImInbox> {
/**
* 整个会话消息修改为已读状态
* @param msgReadStatusUpdateParam
* @param param
* @return
*/
Boolean updateMsgReadStatusByConversation(MsgReadStatusUpdateParam msgReadStatusUpdateParam);
Boolean updateMsgReadStatusByConversation(UpdateMsgReadStatusByConversationParam param);
}
......@@ -11,6 +11,7 @@ import com.wecloud.im.entity.ImMessageOnlineSend;
import com.wecloud.im.mapper.ImInboxMapper;
import com.wecloud.im.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.param.MsgReadStatusUpdateParam;
import com.wecloud.im.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.service.ImApplicationService;
import com.wecloud.im.service.ImClientService;
import com.wecloud.im.service.ImConversationMembersService;
......@@ -154,11 +155,12 @@ public class ImInboxServiceImpl extends BaseServiceImpl<ImInboxMapper, ImInbox>
}
@Override
public Boolean updateMsgReadStatusByConversation(MsgReadStatusUpdateParam msgReadStatusUpdateParam) {
public Boolean updateMsgReadStatusByConversation(UpdateMsgReadStatusByConversationParam param) {
ImClient currentClient = imClientService.getCurrentClient();
// 获取该用户该会话所有未读消息 msgId 列表
List<ImInbox> imInboxList = this.list(new QueryWrapper<ImInbox>().lambda()
.eq(ImInbox::getFkConversationId, msgReadStatusUpdateParam.getConversationId())
.eq(ImInbox::getFkConversationId, param.getConversationId())
.le(ImInbox::getFkMsgId, param.getMsgIdEnd())
.notIn(ImInbox::getReceiver, currentClient.getId()));
if (CollectionUtils.isEmpty(imInboxList)) {
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