mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-02-20 05:50:53 +08:00
feat: auto select medal for user in mappers
This commit is contained in:
@@ -22,11 +22,13 @@ public class UserMapper {
|
||||
private final UserVisitService userVisitService;
|
||||
private final PostReadService postReadService;
|
||||
private final LevelService levelService;
|
||||
private final MedalService medalService;
|
||||
|
||||
@Value("${app.snippet-length:50}")
|
||||
private int snippetLength;
|
||||
|
||||
public AuthorDto toAuthorDto(User user) {
|
||||
medalService.ensureDisplayMedal(user);
|
||||
AuthorDto dto = new AuthorDto();
|
||||
dto.setId(user.getId());
|
||||
dto.setUsername(user.getUsername());
|
||||
@@ -36,6 +38,7 @@ public class UserMapper {
|
||||
}
|
||||
|
||||
public UserDto toDto(User user, Authentication viewer) {
|
||||
medalService.ensureDisplayMedal(user);
|
||||
UserDto dto = new UserDto();
|
||||
dto.setId(user.getId());
|
||||
dto.setUsername(user.getUsername());
|
||||
|
||||
@@ -96,6 +96,22 @@ public class MedalService {
|
||||
return medals;
|
||||
}
|
||||
|
||||
public void ensureDisplayMedal(User user) {
|
||||
if (user == null || user.getDisplayMedal() != null) {
|
||||
return;
|
||||
}
|
||||
if (commentRepository.countByAuthor_Id(user.getId()) >= COMMENT_TARGET) {
|
||||
user.setDisplayMedal(MedalType.COMMENT);
|
||||
} else if (postRepository.countByAuthor_Id(user.getId()) >= POST_TARGET) {
|
||||
user.setDisplayMedal(MedalType.POST);
|
||||
} else if (user.getCreatedAt().isBefore(SEED_USER_DEADLINE)) {
|
||||
user.setDisplayMedal(MedalType.SEED);
|
||||
}
|
||||
if (user.getDisplayMedal() != null) {
|
||||
userRepository.save(user);
|
||||
}
|
||||
}
|
||||
|
||||
public void selectMedal(String username, MedalType type) {
|
||||
User user = userRepository.findByUsername(username).orElseThrow();
|
||||
boolean completed = getMedals(user.getId()).stream()
|
||||
|
||||
Reference in New Issue
Block a user