mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-06-09 03:27:32 +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 UserVisitService userVisitService;
|
||||||
private final PostReadService postReadService;
|
private final PostReadService postReadService;
|
||||||
private final LevelService levelService;
|
private final LevelService levelService;
|
||||||
|
private final MedalService medalService;
|
||||||
|
|
||||||
@Value("${app.snippet-length:50}")
|
@Value("${app.snippet-length:50}")
|
||||||
private int snippetLength;
|
private int snippetLength;
|
||||||
|
|
||||||
public AuthorDto toAuthorDto(User user) {
|
public AuthorDto toAuthorDto(User user) {
|
||||||
|
medalService.ensureDisplayMedal(user);
|
||||||
AuthorDto dto = new AuthorDto();
|
AuthorDto dto = new AuthorDto();
|
||||||
dto.setId(user.getId());
|
dto.setId(user.getId());
|
||||||
dto.setUsername(user.getUsername());
|
dto.setUsername(user.getUsername());
|
||||||
@@ -36,6 +38,7 @@ public class UserMapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public UserDto toDto(User user, Authentication viewer) {
|
public UserDto toDto(User user, Authentication viewer) {
|
||||||
|
medalService.ensureDisplayMedal(user);
|
||||||
UserDto dto = new UserDto();
|
UserDto dto = new UserDto();
|
||||||
dto.setId(user.getId());
|
dto.setId(user.getId());
|
||||||
dto.setUsername(user.getUsername());
|
dto.setUsername(user.getUsername());
|
||||||
|
|||||||
@@ -96,6 +96,22 @@ public class MedalService {
|
|||||||
return medals;
|
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) {
|
public void selectMedal(String username, MedalType type) {
|
||||||
User user = userRepository.findByUsername(username).orElseThrow();
|
User user = userRepository.findByUsername(username).orElseThrow();
|
||||||
boolean completed = getMedals(user.getId()).stream()
|
boolean completed = getMedals(user.getId()).stream()
|
||||||
|
|||||||
Reference in New Issue
Block a user