fix: test commit

This commit is contained in:
Tim
2025-09-18 14:31:22 +08:00
parent 2b2deb8f66
commit 70f7442f0c
2 changed files with 133 additions and 93 deletions

View File

@@ -1,30 +1,29 @@
package com.openisle.mapper; package com.openisle.mapper;
import com.openisle.dto.AuthorDto;
import com.openisle.dto.CommentDto; import com.openisle.dto.CommentDto;
import com.openisle.dto.LotteryDto;
import com.openisle.dto.PollDto;
import com.openisle.dto.PostDetailDto; import com.openisle.dto.PostDetailDto;
import com.openisle.dto.PostSummaryDto; import com.openisle.dto.PostSummaryDto;
import com.openisle.dto.ReactionDto; import com.openisle.dto.ReactionDto;
import com.openisle.dto.LotteryDto;
import com.openisle.dto.PollDto;
import com.openisle.dto.AuthorDto;
import com.openisle.model.CommentSort; import com.openisle.model.CommentSort;
import com.openisle.model.Post;
import com.openisle.model.LotteryPost; import com.openisle.model.LotteryPost;
import com.openisle.model.PollPost; import com.openisle.model.PollPost;
import com.openisle.model.User;
import com.openisle.model.PollVote; import com.openisle.model.PollVote;
import com.openisle.model.Post;
import com.openisle.model.User;
import com.openisle.repository.PollVoteRepository;
import com.openisle.service.CommentService; import com.openisle.service.CommentService;
import com.openisle.service.ReactionService; import com.openisle.service.ReactionService;
import com.openisle.service.SubscriptionService; import com.openisle.service.SubscriptionService;
import com.openisle.repository.PollVoteRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
/** Mapper responsible for converting posts into DTOs. */ /** Mapper responsible for converting posts into DTOs. */
@Component @Component
@@ -50,12 +49,16 @@ public class PostMapper {
public PostDetailDto toDetailDto(Post post, String viewer) { public PostDetailDto toDetailDto(Post post, String viewer) {
PostDetailDto dto = new PostDetailDto(); PostDetailDto dto = new PostDetailDto();
applyCommon(post, dto); applyCommon(post, dto);
List<CommentDto> comments = commentService.getCommentsForPost(post.getId(), CommentSort.OLDEST) List<CommentDto> comments = commentService
.getCommentsForPost(post.getId(), CommentSort.OLDEST)
.stream() .stream()
.map(commentMapper::toDtoWithReplies) .map(commentMapper::toDtoWithReplies)
.collect(Collectors.toList()); .collect(Collectors.toList());
dto.setComments(comments); dto.setComments(comments);
dto.setSubscribed(viewer != null && subscriptionService.isPostSubscribed(viewer, post.getId())); dto.setSubscribed(
viewer != null &&
subscriptionService.isPostSubscribed(viewer, post.getId())
);
return dto; return dto;
} }
@@ -63,24 +66,33 @@ public class PostMapper {
dto.setId(post.getId()); dto.setId(post.getId());
dto.setTitle(post.getTitle()); dto.setTitle(post.getTitle());
dto.setContent(post.getContent()); dto.setContent(post.getContent());
dto.setCreatedAt(post.getCreatedAt()); dto.setCreatedAt(post.getCreatedAt());
dto.setAuthor(userMapper.toAuthorDto(post.getAuthor())); dto.setAuthor(userMapper.toAuthorDto(post.getAuthor()));
dto.setCategory(categoryMapper.toDto(post.getCategory())); dto.setCategory(categoryMapper.toDto(post.getCategory()));
dto.setTags(post.getTags().stream().map(tagMapper::toDto).collect(Collectors.toList())); dto.setTags(
post.getTags().stream().map(tagMapper::toDto).collect(Collectors.toList())
);
dto.setViews(post.getViews()); dto.setViews(post.getViews());
dto.setStatus(post.getStatus()); dto.setStatus(post.getStatus());
dto.setPinnedAt(post.getPinnedAt()); dto.setPinnedAt(post.getPinnedAt());
dto.setRssExcluded(post.getRssExcluded() == null || post.getRssExcluded()); dto.setRssExcluded(post.getRssExcluded() == null || post.getRssExcluded());
dto.setClosed(post.isClosed()); dto.setClosed(post.isClosed());
List<ReactionDto> reactions = reactionService.getReactionsForPost(post.getId()) List<ReactionDto> reactions = reactionService
.getReactionsForPost(post.getId())
.stream() .stream()
.map(reactionMapper::toDto) .map(reactionMapper::toDto)
.collect(Collectors.toList()); .collect(Collectors.toList());
dto.setReactions(reactions); dto.setReactions(reactions);
List<User> participants = commentService.getParticipants(post.getId(), 5); List<User> participants = commentService.getParticipants(post.getId(), 5);
dto.setParticipants(participants.stream().map(userMapper::toAuthorDto).collect(Collectors.toList())); dto.setParticipants(
participants
.stream()
.map(userMapper::toAuthorDto)
.collect(Collectors.toList())
);
LocalDateTime last = post.getLastReplyAt(); LocalDateTime last = post.getLastReplyAt();
if (last == null) { if (last == null) {
@@ -100,8 +112,20 @@ public class PostMapper {
l.setPointCost(lp.getPointCost()); l.setPointCost(lp.getPointCost());
l.setStartTime(lp.getStartTime()); l.setStartTime(lp.getStartTime());
l.setEndTime(lp.getEndTime()); l.setEndTime(lp.getEndTime());
l.setParticipants(lp.getParticipants().stream().map(userMapper::toAuthorDto).collect(Collectors.toList())); l.setParticipants(
l.setWinners(lp.getWinners().stream().map(userMapper::toAuthorDto).collect(Collectors.toList())); lp
.getParticipants()
.stream()
.map(userMapper::toAuthorDto)
.collect(Collectors.toList())
);
l.setWinners(
lp
.getWinners()
.stream()
.map(userMapper::toAuthorDto)
.collect(Collectors.toList())
);
dto.setLottery(l); dto.setLottery(l);
} }
@@ -110,10 +134,25 @@ public class PostMapper {
p.setOptions(pp.getOptions()); p.setOptions(pp.getOptions());
p.setVotes(pp.getVotes()); p.setVotes(pp.getVotes());
p.setEndTime(pp.getEndTime()); p.setEndTime(pp.getEndTime());
p.setParticipants(pp.getParticipants().stream().map(userMapper::toAuthorDto).collect(Collectors.toList())); p.setParticipants(
Map<Integer, List<AuthorDto>> optionParticipants = pollVoteRepository.findByPostId(pp.getId()).stream() pp
.collect(Collectors.groupingBy(PollVote::getOptionIndex, .getParticipants()
Collectors.mapping(v -> userMapper.toAuthorDto(v.getUser()), Collectors.toList()))); .stream()
.map(userMapper::toAuthorDto)
.collect(Collectors.toList())
);
Map<Integer, List<AuthorDto>> optionParticipants = pollVoteRepository
.findByPostId(pp.getId())
.stream()
.collect(
Collectors.groupingBy(
PollVote::getOptionIndex,
Collectors.mapping(
v -> userMapper.toAuthorDto(v.getUser()),
Collectors.toList()
)
)
);
p.setOptionParticipants(optionParticipants); p.setOptionParticipants(optionParticipants);
p.setMultiple(Boolean.TRUE.equals(pp.getMultiple())); p.setMultiple(Boolean.TRUE.equals(pp.getMultiple()));
dto.setPoll(p); dto.setPoll(p);

View File

@@ -10,6 +10,7 @@
--header-border-color: lightgray; --header-border-color: lightgray;
--header-text-color: black; --header-text-color: black;
--blur-1: blur(1px); --blur-1: blur(1px);
--blur-2: blur(2px); --blur-2: blur(2px);
--blur-4: blur(4px); --blur-4: blur(4px);
--blur-5: blur(5px); --blur-5: blur(5px);