Skip to content

Commit

Permalink
YEL-173 [deploy] v1.200
Browse files Browse the repository at this point in the history
YEL-173 [deploy] v1.200
  • Loading branch information
hyeonjeongs authored Oct 6, 2023
2 parents cbe2123 + 6ea6880 commit 508a8e9
Show file tree
Hide file tree
Showing 21 changed files with 258 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class UserGroupData extends AuditingTimeEntity {
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_name", referencedColumnName = "groupName")
@JoinColumn(name = "groupName", referencedColumnName = "groupName")
private UserGroup group;

@Convert(converter = UserGroupDataTagConterver.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.yello.server.domain.question.entity;


import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.group.entity.UserGroupTypeConverter;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.ColumnDefault;

@Getter
@Builder
@Entity
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class QuestionGroupType {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false)
@Convert(converter = UserGroupTypeConverter.class)
@ColumnDefault("\"UNIVERSITY\"")
private UserGroupType userGroupType;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "questionId")
private Question question;

public static QuestionGroupType of(UserGroupType userGroupType, Question question) {
return QuestionGroupType.builder()
.userGroupType(userGroupType)
.question(question)
.build();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.yello.server.domain.question.repository;

import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.entity.Question;
import com.yello.server.domain.question.entity.QuestionGroupType;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface QuestionGroupTypeJpaRepository extends JpaRepository<QuestionGroupType, Long> {

@Query("select q from Question q "
+ "join QuestionGroupType qgy on q.id=qgy.question.id "
+ "where qgy.userGroupType = :userGroupType")
List<Question> findQuestionByGroupType(@Param("userGroupType") UserGroupType userGroupType);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.yello.server.domain.question.repository;

import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.entity.Question;
import com.yello.server.domain.question.entity.QuestionGroupType;
import java.util.List;

public interface QuestionGroupTypeRepository {

List<Question> findQuestionByGroupType(UserGroupType userGroupType);

QuestionGroupType save(QuestionGroupType questionGroupType);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.yello.server.domain.question.repository;

import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.entity.Question;
import com.yello.server.domain.question.entity.QuestionGroupType;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

@Repository
@RequiredArgsConstructor
public class QuestionGroupTypeRepositoryImpl implements QuestionGroupTypeRepository {

private final QuestionGroupTypeJpaRepository questionGroupTypeJpaRepository;

@Override
public List<Question> findQuestionByGroupType(UserGroupType userGroupType) {
return questionGroupTypeJpaRepository.findQuestionByGroupType(userGroupType);
}

@Override
public QuestionGroupType save(QuestionGroupType questionGroupType) {
return questionGroupTypeJpaRepository.save(questionGroupType);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public interface QuestionJpaRepository extends JpaRepository<Question, Long> {
+ "and (COALESCE(:nameFoot, '') = '' OR q.nameFoot is null OR q.nameFoot = :nameFoot) "
+ "and (COALESCE(:keywordHead, '') = '' OR q.keywordHead is null OR q.keywordHead = :keywordHead) "
+ "and (COALESCE(:keywordFoot, '') = '' OR q.keywordFoot is null OR q.keywordFoot = :keywordFoot)")
Optional<Question> findByQuestionContent(@Param("nameHead") String nameHead, @Param("nameFoot") String nameFoot,
Optional<Question> findByQuestionContent(@Param("nameHead") String nameHead,
@Param("nameFoot") String nameFoot,
@Param("keywordHead") String keywordHead, @Param("keywordFoot") String keywordFoot);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ public interface QuestionRepository {

Question save(Question question);

Optional<Question> findByQuestionContent(String nameHead, String nameFoot, String keywordHead, String keywordFoot);
Optional<Question> findByQuestionContent(String nameHead, String nameFoot, String keywordHead,
String keywordFoot);

void delete(Question question);

}
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,16 @@ public Question save(Question question) {
}

@Override
public Optional<Question> findByQuestionContent(String nameHead, String nameFoot, String keywordHead,
public Optional<Question> findByQuestionContent(String nameHead, String nameFoot,
String keywordHead,
String keywordFoot) {
return questionJpaRepository.findByQuestionContent(nameHead, nameFoot, keywordHead, keywordFoot);
return questionJpaRepository.findByQuestionContent(nameHead, nameFoot, keywordHead,
keywordFoot);
}

@Override
public void delete(Question question) {
questionJpaRepository.delete(question);
}

}
28 changes: 16 additions & 12 deletions src/main/java/com/yello/server/domain/vote/service/VoteService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import com.yello.server.domain.keyword.repository.KeywordRepository;
import com.yello.server.domain.question.dto.response.QuestionForVoteResponse;
import com.yello.server.domain.question.entity.Question;
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
import com.yello.server.domain.question.repository.QuestionRepository;
import com.yello.server.domain.user.entity.User;
import com.yello.server.domain.user.repository.UserRepository;
Expand Down Expand Up @@ -63,6 +64,7 @@ public class VoteService {
private final CooldownRepository cooldownRepository;
private final VoteRepository voteRepository;
private final KeywordRepository keywordRepository;
private final QuestionGroupTypeRepository questionGroupTypeRepository;

private final VoteManager voteManager;
private final ProducerService producerService;
Expand Down Expand Up @@ -105,7 +107,7 @@ public VoteFriendResponse findAllFriendVotes(Long userId, Pageable pageable) {
final Integer totalCount = voteRepository.countAllReceivedByFriends(userId);
final List<VoteFriendVO> list = voteRepository.findAllReceivedByFriends(userId, pageable)
.stream()
.filter(vote -> vote.getNameHint() != -3)
.filter(vote -> vote.getNameHint()!=-3)
.map(VoteFriendVO::of)
.toList();
return VoteFriendResponse.of(totalCount, list);
Expand All @@ -123,21 +125,23 @@ public List<QuestionForVoteResponse> findVoteQuestionList(Long userId) {
final User user = userRepository.getById(userId);

final List<Friend> friends = friendRepository.findAllByUserId(user.getId());
if (friends.size() == NO_FRIEND_COUNT) {
if (friends.size()==NO_FRIEND_COUNT) {
throw new FriendException(LACK_USER_EXCEPTION);
}

final Optional<Question> greetingQuestion = questionRepository.findByQuestionContent(
null, GREETING_NAME_FOOT, null, GREETING_KEYWORD_FOOT);
final List<Question> questions = questionRepository.findAll().stream()
.filter(question -> {
if (greetingQuestion.isPresent()) {
return !question.equals(greetingQuestion.get());
}
return true;
})
.filter(question -> !question.getId().equals(102L))
.toList();
final List<Question> questions =
questionGroupTypeRepository.findQuestionByGroupType(user.getGroup().getUserGroupType())
.stream()
.filter(question -> {
if (greetingQuestion.isPresent()) {
return !question.equals(greetingQuestion.get());
}
return true;
})
.filter(question -> !question.getId().equals(102L))
.toList();
return voteManager.generateVoteQuestion(user, questions);
}

Expand All @@ -146,7 +150,7 @@ public VoteAvailableResponse checkVoteAvailable(Long userId) {
final String messageId = UUID.randomUUID().toString();
final List<Friend> friends = friendRepository.findAllByUserId(user.getId());

if (friends.size() == NO_FRIEND_COUNT) {
if (friends.size()==NO_FRIEND_COUNT) {
throw new FriendException(LACK_USER_EXCEPTION);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
import com.yello.server.domain.friend.FakeFriendRepository;
import com.yello.server.domain.friend.repository.FriendRepository;
import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.FakeQuestionGroupTypeRepository;
import com.yello.server.domain.question.FakeQuestionRepository;
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
import com.yello.server.domain.question.repository.QuestionRepository;
import com.yello.server.domain.user.FakeUserRepository;
import com.yello.server.domain.user.entity.User;
Expand Down Expand Up @@ -45,11 +47,13 @@ public class AuthManagerTest {
private final TokenRepository tokenRepository = new FakeTokenRepository();
private final UserRepository userRepository = new FakeUserRepository(friendRepository);
private final VoteRepository voteRepository = new FakeVoteRepository();
private final QuestionGroupTypeRepository questionGroupTypeRepository = new FakeQuestionGroupTypeRepository(questionRepository);
private final TestDataRepositoryUtil testDataUtil = new TestDataRepositoryUtil(
userRepository,
voteRepository,
questionRepository,
friendRepository
friendRepository,
questionGroupTypeRepository
);
private AuthManager authManager;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@
import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.group.exception.GroupNotFoundException;
import com.yello.server.domain.group.repository.UserGroupRepository;
import com.yello.server.domain.question.FakeQuestionGroupTypeRepository;
import com.yello.server.domain.question.FakeQuestionRepository;
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
import com.yello.server.domain.question.repository.QuestionRepository;
import com.yello.server.domain.user.FakeUserManager;
import com.yello.server.domain.user.FakeUserRepository;
Expand Down Expand Up @@ -85,6 +87,8 @@ public class AuthServiceTest {
private final UserRepository userRepository = new FakeUserRepository(friendRepository);
private final UserManager userManager = new FakeUserManager(userRepository);
private final FriendManager friendManager = new FakeFriendManager(userRepository);
private final QuestionGroupTypeRepository
questionGroupTypeRepository = new FakeQuestionGroupTypeRepository(questionRepository);
private final NotificationService notificationService = NotificationFcmService.builder()
.userRepository(userRepository)
.tokenRepository(tokenRepository)
Expand All @@ -98,7 +102,8 @@ public class AuthServiceTest {
userRepository,
voteRepository,
questionRepository,
friendRepository
friendRepository,
questionGroupTypeRepository
);
private final VoteManager voteManager = new FakeVoteManager(
userRepository, questionRepository, voteRepository, friendRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
import com.yello.server.domain.friend.repository.FriendRepository;
import com.yello.server.domain.friend.service.FriendService;
import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.FakeQuestionGroupTypeRepository;
import com.yello.server.domain.question.FakeQuestionRepository;
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
import com.yello.server.domain.question.repository.QuestionRepository;
import com.yello.server.domain.user.FakeUserManager;
import com.yello.server.domain.user.FakeUserRepository;
Expand Down Expand Up @@ -48,14 +50,17 @@ class FriendServiceTest {
private final UserRepository userRepository = new FakeUserRepository(friendRepository);
private final UserManager userManager = new FakeUserManager(userRepository);
private final VoteRepository voteRepository = new FakeVoteRepository();
private final QuestionGroupTypeRepository
questionGroupTypeRepository = new FakeQuestionGroupTypeRepository(questionRepository);
private final VoteManager voteManager =
new FakeVoteManager(userRepository, questionRepository, voteRepository, friendRepository,
userManager);
private final TestDataRepositoryUtil testDataUtil = new TestDataRepositoryUtil(
userRepository,
voteRepository,
questionRepository,
friendRepository
friendRepository,
questionGroupTypeRepository
);
private FriendService friendService;
private User user1;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.yello.server.domain.question;

import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.entity.Question;
import com.yello.server.domain.question.entity.QuestionGroupType;
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
import com.yello.server.domain.question.repository.QuestionRepository;
import java.util.ArrayList;
import java.util.List;

public class FakeQuestionGroupTypeRepository implements QuestionGroupTypeRepository {
private final List<QuestionGroupType> data = new ArrayList<>();
private Long id = 0L;
private final QuestionRepository questionRepository;

public FakeQuestionGroupTypeRepository(QuestionRepository questionRepository) {
this.questionRepository = questionRepository;
}

@Override
public List<Question> findQuestionByGroupType(UserGroupType userGroupType) {
List<Question> userGroupQuestion = new ArrayList<>();

for (QuestionGroupType questionGroupType : data) {
if (questionGroupType.getUserGroupType().equals(userGroupType)) {
Long questionId = questionGroupType.getQuestion().getId();
questionRepository.findById(questionId).ifPresent(it -> userGroupQuestion.add(it));
}
}
return userGroupQuestion;
}

@Override
public QuestionGroupType save(QuestionGroupType questionGroupType) {
QuestionGroupType newQuestionGroupType = QuestionGroupType.builder()
.id(questionGroupType.getId()==null ? id++ : questionGroupType.getId())
.userGroupType(UserGroupType.UNIVERSITY)
.question(questionGroupType.getQuestion())
.build();

data.add(newQuestionGroupType);
return newQuestionGroupType;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
import com.yello.server.domain.friend.FakeFriendRepository;
import com.yello.server.domain.friend.repository.FriendRepository;
import com.yello.server.domain.group.entity.UserGroupType;
import com.yello.server.domain.question.FakeQuestionGroupTypeRepository;
import com.yello.server.domain.question.FakeQuestionRepository;
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
import com.yello.server.domain.question.repository.QuestionRepository;
import com.yello.server.domain.user.FakeUserRepository;
import com.yello.server.domain.user.dto.response.UserDetailResponse;
Expand Down Expand Up @@ -39,11 +41,14 @@ class UserServiceTest {
private final TokenRepository tokenRepository = new FakeTokenRepository();
private final UserRepository userRepository = new FakeUserRepository(friendRepository);
private final VoteRepository voteRepository = new FakeVoteRepository();
private final QuestionGroupTypeRepository
questionGroupTypeRepository = new FakeQuestionGroupTypeRepository(questionRepository);
private final TestDataRepositoryUtil testDataUtil = new TestDataRepositoryUtil(
userRepository,
voteRepository,
questionRepository,
friendRepository
friendRepository,
questionGroupTypeRepository
);
private UserService userService;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ public class FakeVoteManager implements VoteManager {
private final FriendRepository friendRepository;
private final UserManager userManager;

public FakeVoteManager(UserRepository userRepository, QuestionRepository questionRepository,
public
FakeVoteManager(UserRepository userRepository, QuestionRepository questionRepository,
VoteRepository voteRepository, FriendRepository friendRepository, UserManager userManager) {
this.userRepository = userRepository;
this.questionRepository = questionRepository;
Expand Down
Loading

0 comments on commit 508a8e9

Please sign in to comment.