新增通知

This commit is contained in:
2025-11-02 11:44:23 +08:00
parent f79d1423ca
commit 5e80cb9f6b
4 changed files with 85 additions and 30 deletions

View File

@@ -1,26 +0,0 @@
//package com.vetti.hotake.domain.dto;
//
//import com.vetti.common.utils.bean.BeanUtils;
//import com.vetti.hotake.domain.HotakeSysNoticeType;
//import lombok.Data;
//
//import java.util.List;
//
///**
// * @author ID
// * @date 2025/11/1 11:54
// */
//@Data
//public class HotakeSysNoticeTypeDto extends HotakeSysNoticeType {
//
// private List<String> imgs;
//
//
// public static HotakeSysNoticeTypeDto build(List<String> urls, HotakeSysNoticeType data) {
// HotakeSysNoticeTypeDto dto = new HotakeSysNoticeTypeDto();
// BeanUtils.copyBeanProp(dto, data);
// dto.setImgs(urls);
// return dto;
// }
//
//}

View File

@@ -0,0 +1,72 @@
package com.vetti.hotake.domain.dto;
import com.vetti.common.utils.bean.BeanUtils;
import com.vetti.hotake.domain.HotakeSysNotice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author ID
* @date 2025/11/1 16:50
*/
@Data
public class HotakeSysNoticeTypeNameDto {
@ApiModelProperty("通知类型名称")
private String noticeTypeName;
@ApiModelProperty("数量")
private Integer num;
@ApiModelProperty("通知")
private List<HotakeSysNoticeDto> list;
// public static List<HotakeSysNoticeTypeNameDto> build(List<HotakeSysNoticeDto> list) {
// List<HotakeSysNoticeTypeNameDto> reList = new ArrayList<>();
// Map<String, List<HotakeSysNoticeDto>> map = new HashMap<>();
// list.forEach(e -> {
// String typeName = e.getNoticeTypeName();
// if (!map.containsKey(typeName)) {
// map.put(typeName, new ArrayList<>());
// }
// map.get(typeName).add(e);
// });
// map.forEach((k, v) -> {
// HotakeSysNoticeTypeNameDto dto = new HotakeSysNoticeTypeNameDto();
// dto.setNoticeTypeName(k);
// dto.setList(v);
// reList.add(dto);
// });
// return reList;
// }
// 优化后的分组转换方法
public static List<HotakeSysNoticeTypeNameDto> build(List<HotakeSysNoticeDto> list) {
// 处理空集合避免NPE
if (list == null) {
return new ArrayList<>();
}
// 1. 分组:按 noticeTypeName 分组,自动处理键不存在的情况
// 2. 转换:将分组结果映射为 HotakeSysNoticeTypeNameDto 列表
return list.stream()
// 分组key为noticeTypeNamevalue为对应的HotakeSysNoticeDto列表
.collect(Collectors.groupingBy(HotakeSysNoticeDto::getNoticeTypeName))
// 遍历分组后的Map转换为目标DTO
.entrySet().stream()
.map(entry -> {
HotakeSysNoticeTypeNameDto dto = new HotakeSysNoticeTypeNameDto();
dto.setNoticeTypeName(entry.getKey());
dto.setList(entry.getValue());
dto.setNum(entry.getValue().size());
return dto;
})
// 收集为List返回
.collect(Collectors.toList());
}
}

View File

@@ -14,9 +14,15 @@ import java.util.List;
public class HotakeSysNoticeViewDto { public class HotakeSysNoticeViewDto {
@ApiModelProperty("未查看") @ApiModelProperty("未查看")
private List<HotakeSysNoticeDto> unreadList; private List<HotakeSysNoticeTypeNameDto> unreadList;
@ApiModelProperty("归档") @ApiModelProperty("归档")
private List<HotakeSysNoticeDto> archiveList; private List<HotakeSysNoticeTypeNameDto> archiveList;
@ApiModelProperty("未查看数量")
private Integer unreadNum;
@ApiModelProperty("归档数量")
private Integer archiveNum;
} }

View File

@@ -10,6 +10,7 @@ import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.enums.FillTypeEnum; import com.vetti.common.enums.FillTypeEnum;
import com.vetti.common.utils.DateUtils; import com.vetti.common.utils.DateUtils;
import com.vetti.hotake.domain.dto.HotakeSysNoticeDto; import com.vetti.hotake.domain.dto.HotakeSysNoticeDto;
import com.vetti.hotake.domain.dto.HotakeSysNoticeTypeNameDto;
import com.vetti.hotake.domain.dto.HotakeSysNoticeViewDto; import com.vetti.hotake.domain.dto.HotakeSysNoticeViewDto;
import com.vetti.hotake.service.IHotakeSysFileService; import com.vetti.hotake.service.IHotakeSysFileService;
import com.vetti.system.service.ISysDictDataService; import com.vetti.system.service.ISysDictDataService;
@@ -149,8 +150,10 @@ public class HotakeSysNoticeServiceImpl extends BaseServiceImpl implements IHota
archiveList.add(HotakeSysNoticeDto.build(e, typeNameMap, url(e))); archiveList.add(HotakeSysNoticeDto.build(e, typeNameMap, url(e)));
} }
}); });
data.setUnreadList(unreadList); data.setUnreadList(HotakeSysNoticeTypeNameDto.build(unreadList));
data.setArchiveList(archiveList); data.setArchiveList(HotakeSysNoticeTypeNameDto.build(archiveList));
data.setUnreadNum(unreadList.size());
data.setArchiveNum(archiveList.size());
return data; return data;
} }