This commit is contained in:
2025-11-02 20:49:04 +08:00
8 changed files with 130 additions and 46 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 {
@ApiModelProperty("未查看")
private List<HotakeSysNoticeDto> unreadList;
private List<HotakeSysNoticeTypeNameDto> unreadList;
@ApiModelProperty("归档")
private List<HotakeSysNoticeDto> archiveList;
private List<HotakeSysNoticeTypeNameDto> archiveList;
@ApiModelProperty("未查看数量")
private Integer unreadNum;
@ApiModelProperty("归档数量")
private Integer archiveNum;
}