|
|
@@ -10,6 +10,7 @@ import com.storlead.message.enums.MessageTypeEnum;
|
|
|
import com.storlead.message.pojo.dto.MessageDTO;
|
|
|
import com.storlead.message.pojo.dto.MessageTestDTO;
|
|
|
import com.storlead.message.pojo.entity.InsideMessageSendLogEntity;
|
|
|
+import com.storlead.message.pojo.vo.MessageAppNoReadVO;
|
|
|
import com.storlead.message.pojo.vo.MessageDetailVO;
|
|
|
import com.storlead.message.pojo.vo.MessageNoReadTotalVO;
|
|
|
import com.storlead.message.pojo.vo.MessageTypeReadStateVO;
|
|
|
@@ -97,37 +98,60 @@ public class MessageApiController {
|
|
|
@PostMapping(value = "/getMessageCount")
|
|
|
@ApiOperation(value = "获取未读消息数" )
|
|
|
public Result<?> getMessageCount(MessageDTO dto) {
|
|
|
- QueryWrapper<InsideMessageSendLogEntity> queryWrapper = new QueryWrapper();
|
|
|
- queryWrapper.eq("mlog.receiver_user_id", LoginUserUtil.getCurrentUserId());
|
|
|
- queryWrapper.eq("mlog.is_read",0);
|
|
|
- if (Objects.nonNull(dto.getMessageType())) {
|
|
|
- queryWrapper.eq("mr.message_type",dto.getMessageType());
|
|
|
- }
|
|
|
- queryWrapper.eq("mlog.is_delete",Integer.valueOf(0));
|
|
|
- MessageNoReadTotalVO countMap = messageSendLogService.countNoReadtotal(queryWrapper);
|
|
|
+ MessageNoReadTotalVO countMap = messageSendLogService.countNoReadtotal(buildUnreadQueryWrapper(dto));
|
|
|
return Result.ok(countMap);
|
|
|
}
|
|
|
|
|
|
@PostMapping(value = "/getNoReadCount")
|
|
|
- @ApiOperation(value = "获取未读消息数" )
|
|
|
+ @ApiOperation(value = "按消息类型统计未读数(可按应用过滤)")
|
|
|
public Result<?> getNoReadCount(MessageDTO dto) {
|
|
|
- QueryWrapper<InsideMessageSendLogEntity> queryWrapper = new QueryWrapper();
|
|
|
- queryWrapper.eq("mlog.receiver_user_id", LoginUserUtil.getCurrentUserId());
|
|
|
- queryWrapper.eq("mlog.is_read",0);
|
|
|
+ if (dto == null) {
|
|
|
+ dto = new MessageDTO();
|
|
|
+ }
|
|
|
List<String> types = new ArrayList<>();
|
|
|
if (Objects.nonNull(dto.getMessageType())) {
|
|
|
- queryWrapper.eq("mlog.message_type",dto.getMessageType());
|
|
|
types.add(dto.getMessageType());
|
|
|
}
|
|
|
- queryWrapper.eq("mlog.is_delete",Integer.valueOf(0));
|
|
|
- List<MessageTypeReadStateVO> statuVOS = messageSendLogService.getCountNoReadCount(queryWrapper);
|
|
|
+ List<MessageTypeReadStateVO> statuVOS = messageSendLogService.getCountNoReadCount(buildUnreadQueryWrapper(dto));
|
|
|
|
|
|
List<MessageTypeReadStateVO> readStatels = MessageTypeEnum.getMessageTypeReadStatels(types);
|
|
|
Map<Integer, Integer> statuMap = statuVOS.stream()
|
|
|
.collect(Collectors.toMap(MessageTypeReadStateVO::getMessageType, MessageTypeReadStateVO::getStateNumber));
|
|
|
for (MessageTypeReadStateVO readState : readStatels) {
|
|
|
- readState.setStateNumber(statuMap.getOrDefault(readState.getMessageType(),0));
|
|
|
+ readState.setStateNumber(statuMap.getOrDefault(readState.getMessageType(), 0));
|
|
|
+ readState.setAppId(dto.getAppId());
|
|
|
}
|
|
|
return Result.ok(readStatels);
|
|
|
}
|
|
|
+
|
|
|
+ @PostMapping(value = "/getNoReadCountByApp")
|
|
|
+ @ApiOperation(value = "按应用统计未读消息数")
|
|
|
+ public Result<?> getNoReadCountByApp(MessageDTO dto) {
|
|
|
+ if (dto == null) {
|
|
|
+ dto = new MessageDTO();
|
|
|
+ }
|
|
|
+ QueryWrapper<InsideMessageSendLogEntity> queryWrapper = buildUnreadQueryWrapper(dto);
|
|
|
+ queryWrapper.isNotNull("mr.app_id");
|
|
|
+ List<MessageAppNoReadVO> list = messageSendLogService.getCountNoReadCountByApp(queryWrapper);
|
|
|
+ return Result.ok(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 未读统计通用条件:当前用户、未读、未删除;可选 messageType / appId(关联 inside_message_record)。
|
|
|
+ */
|
|
|
+ private QueryWrapper<InsideMessageSendLogEntity> buildUnreadQueryWrapper(MessageDTO dto) {
|
|
|
+ QueryWrapper<InsideMessageSendLogEntity> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("mlog.receiver_user_id", LoginUserUtil.getCurrentUserId());
|
|
|
+ queryWrapper.eq("mlog.is_read", 0);
|
|
|
+ queryWrapper.eq("mlog.is_delete", 0);
|
|
|
+ if (dto != null) {
|
|
|
+ if (Objects.nonNull(dto.getMessageType())) {
|
|
|
+ queryWrapper.eq("mr.message_type", dto.getMessageType());
|
|
|
+ }
|
|
|
+ if (Objects.nonNull(dto.getAppId())) {
|
|
|
+ queryWrapper.eq("mr.app_id", dto.getAppId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return queryWrapper;
|
|
|
+ }
|
|
|
}
|