添加ws已读接口

This commit is contained in:
easonzhu 2025-02-14 17:20:09 +08:00
parent 1752e67b28
commit 35a6dfa7e9
2 changed files with 39 additions and 0 deletions

View File

@ -14,6 +14,8 @@ import com.upchina.group.vo.message.GroupMessageVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestAttribute;
@ -68,4 +70,10 @@ public class AppGroupMessageController {
return CommonResult.success(count); return CommonResult.success(count);
} }
@ApiOperation("WebSocket保存消息已读")
@MessageMapping("/chat/group/readMessage")
public void readMessage(SimpMessageHeaderAccessor accessor) {
appGroupMessageService.readMessage(accessor);
}
} }

View File

@ -1,5 +1,6 @@
package com.upchina.group.service.app; package com.upchina.group.service.app;
import cn.hutool.core.util.StrUtil;
import com.upchina.advisor.service.AdvisorInfoService; import com.upchina.advisor.service.AdvisorInfoService;
import com.upchina.advisor.vo.AdvisorBasicVO; import com.upchina.advisor.vo.AdvisorBasicVO;
import com.upchina.common.constant.IsOrNot; import com.upchina.common.constant.IsOrNot;
@ -11,6 +12,7 @@ import com.upchina.common.result.ResponseStatus;
import com.upchina.common.service.CommentBlackService; import com.upchina.common.service.CommentBlackService;
import com.upchina.common.service.SensitiveWordService; import com.upchina.common.service.SensitiveWordService;
import com.upchina.common.util.TextUtil; import com.upchina.common.util.TextUtil;
import com.upchina.common.util.logger.LoggerUtil;
import com.upchina.common.vo.FrontUserVO; import com.upchina.common.vo.FrontUserVO;
import com.upchina.group.constant.GroupInteractiveType; import com.upchina.group.constant.GroupInteractiveType;
import com.upchina.group.constant.GroupMessageStatus; import com.upchina.group.constant.GroupMessageStatus;
@ -28,6 +30,7 @@ import com.upchina.group.service.common.GroupMessageService;
import com.upchina.group.vo.GroupVO; import com.upchina.group.vo.GroupVO;
import com.upchina.group.vo.message.GroupMessageReadVO; import com.upchina.group.vo.message.GroupMessageReadVO;
import com.upchina.group.vo.message.GroupMessageVO; import com.upchina.group.vo.message.GroupMessageVO;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -135,6 +138,33 @@ public class AppGroupMessageService {
groupCacheService.readMessage(vo); groupCacheService.readMessage(vo);
} }
public void readMessage(SimpMessageHeaderAccessor accessor) {
Map<String, Object> attributes = accessor.getSessionAttributes();
if (attributes == null) {
LoggerUtil.error("readMessage用户未登录");
throw new BizException(ResponseStatus.SESSION_EXPIRY, "readMessage用户未登录");
}
String userId = (String) attributes.get("userId");
if (StrUtil.isEmpty(userId)) {
throw new BizException(ResponseStatus.PARM_ERROR, "用户ID错误:" + userId);
}
String messageIds = (String) attributes.get("messageIds");
if (StrUtil.isEmpty(messageIds)) {
throw new BizException(ResponseStatus.PARM_ERROR, "消息ID错误:" + messageIds);
}
String[] ids = messageIds.split(",");
List<Integer> list = new ArrayList<>(ids.length);
for (String id : ids) {
try {
list.add(Integer.parseInt(id));
} catch (NumberFormatException e) {
throw new BizException(ResponseStatus.PARM_ERROR, "消息ID错误:" + messageIds);
}
}
GroupMessageReadVO vo = new GroupMessageReadVO(userId, list);
groupCacheService.readMessage(vo);
}
public Integer queryUnreadCount(QueryUnreadCountAppQuery query, FrontUserVO frontUser) { public Integer queryUnreadCount(QueryUnreadCountAppQuery query, FrontUserVO frontUser) {
Integer groupId = query.getGroupId(); Integer groupId = query.getGroupId();
Integer lastId = query.getLastId(); Integer lastId = query.getLastId();
@ -147,4 +177,5 @@ public class AppGroupMessageService {
} }
return sortedSet.size(); return sortedSet.size();
} }
} }