Skip to content

Commit 508a8e9

Browse files
authored
YEL-173 [deploy] v1.200
YEL-173 [deploy] v1.200
2 parents cbe2123 + 6ea6880 commit 508a8e9

21 files changed

+258
-28
lines changed

src/main/java/com/yello/server/domain/group/entity/UserGroupData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public class UserGroupData extends AuditingTimeEntity {
2727
private Long id;
2828

2929
@ManyToOne(fetch = FetchType.LAZY)
30-
@JoinColumn(name = "group_name", referencedColumnName = "groupName")
30+
@JoinColumn(name = "groupName", referencedColumnName = "groupName")
3131
private UserGroup group;
3232

3333
@Convert(converter = UserGroupDataTagConterver.class)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.yello.server.domain.question.entity;
2+
3+
4+
import com.yello.server.domain.group.entity.UserGroupType;
5+
import com.yello.server.domain.group.entity.UserGroupTypeConverter;
6+
import javax.persistence.Column;
7+
import javax.persistence.Convert;
8+
import javax.persistence.Entity;
9+
import javax.persistence.FetchType;
10+
import javax.persistence.GeneratedValue;
11+
import javax.persistence.GenerationType;
12+
import javax.persistence.Id;
13+
import javax.persistence.JoinColumn;
14+
import javax.persistence.ManyToOne;
15+
import lombok.AccessLevel;
16+
import lombok.AllArgsConstructor;
17+
import lombok.Builder;
18+
import lombok.Getter;
19+
import lombok.NoArgsConstructor;
20+
import org.hibernate.annotations.ColumnDefault;
21+
22+
@Getter
23+
@Builder
24+
@Entity
25+
@AllArgsConstructor
26+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
27+
public class QuestionGroupType {
28+
29+
@Id
30+
@GeneratedValue(strategy = GenerationType.IDENTITY)
31+
private Long id;
32+
33+
@Column(nullable = false)
34+
@Convert(converter = UserGroupTypeConverter.class)
35+
@ColumnDefault("\"UNIVERSITY\"")
36+
private UserGroupType userGroupType;
37+
38+
@ManyToOne(fetch = FetchType.LAZY)
39+
@JoinColumn(name = "questionId")
40+
private Question question;
41+
42+
public static QuestionGroupType of(UserGroupType userGroupType, Question question) {
43+
return QuestionGroupType.builder()
44+
.userGroupType(userGroupType)
45+
.question(question)
46+
.build();
47+
}
48+
49+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.yello.server.domain.question.repository;
2+
3+
import com.yello.server.domain.group.entity.UserGroupType;
4+
import com.yello.server.domain.question.entity.Question;
5+
import com.yello.server.domain.question.entity.QuestionGroupType;
6+
import java.util.List;
7+
import org.springframework.data.jpa.repository.JpaRepository;
8+
import org.springframework.data.jpa.repository.Query;
9+
import org.springframework.data.repository.query.Param;
10+
11+
public interface QuestionGroupTypeJpaRepository extends JpaRepository<QuestionGroupType, Long> {
12+
13+
@Query("select q from Question q "
14+
+ "join QuestionGroupType qgy on q.id=qgy.question.id "
15+
+ "where qgy.userGroupType = :userGroupType")
16+
List<Question> findQuestionByGroupType(@Param("userGroupType") UserGroupType userGroupType);
17+
18+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.yello.server.domain.question.repository;
2+
3+
import com.yello.server.domain.group.entity.UserGroupType;
4+
import com.yello.server.domain.question.entity.Question;
5+
import com.yello.server.domain.question.entity.QuestionGroupType;
6+
import java.util.List;
7+
8+
public interface QuestionGroupTypeRepository {
9+
10+
List<Question> findQuestionByGroupType(UserGroupType userGroupType);
11+
12+
QuestionGroupType save(QuestionGroupType questionGroupType);
13+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.yello.server.domain.question.repository;
2+
3+
import com.yello.server.domain.group.entity.UserGroupType;
4+
import com.yello.server.domain.question.entity.Question;
5+
import com.yello.server.domain.question.entity.QuestionGroupType;
6+
import java.util.List;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.stereotype.Repository;
9+
10+
@Repository
11+
@RequiredArgsConstructor
12+
public class QuestionGroupTypeRepositoryImpl implements QuestionGroupTypeRepository {
13+
14+
private final QuestionGroupTypeJpaRepository questionGroupTypeJpaRepository;
15+
16+
@Override
17+
public List<Question> findQuestionByGroupType(UserGroupType userGroupType) {
18+
return questionGroupTypeJpaRepository.findQuestionByGroupType(userGroupType);
19+
}
20+
21+
@Override
22+
public QuestionGroupType save(QuestionGroupType questionGroupType) {
23+
return questionGroupTypeJpaRepository.save(questionGroupType);
24+
}
25+
}

src/main/java/com/yello/server/domain/question/repository/QuestionJpaRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public interface QuestionJpaRepository extends JpaRepository<Question, Long> {
1313
+ "and (COALESCE(:nameFoot, '') = '' OR q.nameFoot is null OR q.nameFoot = :nameFoot) "
1414
+ "and (COALESCE(:keywordHead, '') = '' OR q.keywordHead is null OR q.keywordHead = :keywordHead) "
1515
+ "and (COALESCE(:keywordFoot, '') = '' OR q.keywordFoot is null OR q.keywordFoot = :keywordFoot)")
16-
Optional<Question> findByQuestionContent(@Param("nameHead") String nameHead, @Param("nameFoot") String nameFoot,
16+
Optional<Question> findByQuestionContent(@Param("nameHead") String nameHead,
17+
@Param("nameFoot") String nameFoot,
1718
@Param("keywordHead") String keywordHead, @Param("keywordFoot") String keywordFoot);
1819
}

src/main/java/com/yello/server/domain/question/repository/QuestionRepository.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ public interface QuestionRepository {
2020

2121
Question save(Question question);
2222

23-
Optional<Question> findByQuestionContent(String nameHead, String nameFoot, String keywordHead, String keywordFoot);
23+
Optional<Question> findByQuestionContent(String nameHead, String nameFoot, String keywordHead,
24+
String keywordFoot);
2425

2526
void delete(Question question);
27+
2628
}

src/main/java/com/yello/server/domain/question/repository/QuestionRepositoryImpl.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,16 @@ public Question save(Question question) {
5353
}
5454

5555
@Override
56-
public Optional<Question> findByQuestionContent(String nameHead, String nameFoot, String keywordHead,
56+
public Optional<Question> findByQuestionContent(String nameHead, String nameFoot,
57+
String keywordHead,
5758
String keywordFoot) {
58-
return questionJpaRepository.findByQuestionContent(nameHead, nameFoot, keywordHead, keywordFoot);
59+
return questionJpaRepository.findByQuestionContent(nameHead, nameFoot, keywordHead,
60+
keywordFoot);
5961
}
6062

6163
@Override
6264
public void delete(Question question) {
6365
questionJpaRepository.delete(question);
6466
}
67+
6568
}

src/main/java/com/yello/server/domain/vote/service/VoteService.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.yello.server.domain.keyword.repository.KeywordRepository;
2222
import com.yello.server.domain.question.dto.response.QuestionForVoteResponse;
2323
import com.yello.server.domain.question.entity.Question;
24+
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
2425
import com.yello.server.domain.question.repository.QuestionRepository;
2526
import com.yello.server.domain.user.entity.User;
2627
import com.yello.server.domain.user.repository.UserRepository;
@@ -63,6 +64,7 @@ public class VoteService {
6364
private final CooldownRepository cooldownRepository;
6465
private final VoteRepository voteRepository;
6566
private final KeywordRepository keywordRepository;
67+
private final QuestionGroupTypeRepository questionGroupTypeRepository;
6668

6769
private final VoteManager voteManager;
6870
private final ProducerService producerService;
@@ -105,7 +107,7 @@ public VoteFriendResponse findAllFriendVotes(Long userId, Pageable pageable) {
105107
final Integer totalCount = voteRepository.countAllReceivedByFriends(userId);
106108
final List<VoteFriendVO> list = voteRepository.findAllReceivedByFriends(userId, pageable)
107109
.stream()
108-
.filter(vote -> vote.getNameHint() != -3)
110+
.filter(vote -> vote.getNameHint()!=-3)
109111
.map(VoteFriendVO::of)
110112
.toList();
111113
return VoteFriendResponse.of(totalCount, list);
@@ -123,21 +125,23 @@ public List<QuestionForVoteResponse> findVoteQuestionList(Long userId) {
123125
final User user = userRepository.getById(userId);
124126

125127
final List<Friend> friends = friendRepository.findAllByUserId(user.getId());
126-
if (friends.size() == NO_FRIEND_COUNT) {
128+
if (friends.size()==NO_FRIEND_COUNT) {
127129
throw new FriendException(LACK_USER_EXCEPTION);
128130
}
129131

130132
final Optional<Question> greetingQuestion = questionRepository.findByQuestionContent(
131133
null, GREETING_NAME_FOOT, null, GREETING_KEYWORD_FOOT);
132-
final List<Question> questions = questionRepository.findAll().stream()
133-
.filter(question -> {
134-
if (greetingQuestion.isPresent()) {
135-
return !question.equals(greetingQuestion.get());
136-
}
137-
return true;
138-
})
139-
.filter(question -> !question.getId().equals(102L))
140-
.toList();
134+
final List<Question> questions =
135+
questionGroupTypeRepository.findQuestionByGroupType(user.getGroup().getUserGroupType())
136+
.stream()
137+
.filter(question -> {
138+
if (greetingQuestion.isPresent()) {
139+
return !question.equals(greetingQuestion.get());
140+
}
141+
return true;
142+
})
143+
.filter(question -> !question.getId().equals(102L))
144+
.toList();
141145
return voteManager.generateVoteQuestion(user, questions);
142146
}
143147

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

149-
if (friends.size() == NO_FRIEND_COUNT) {
153+
if (friends.size()==NO_FRIEND_COUNT) {
150154
throw new FriendException(LACK_USER_EXCEPTION);
151155
}
152156

src/test/java/com/yello/server/domain/authorization/small/AuthManagerTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import com.yello.server.domain.friend.FakeFriendRepository;
1616
import com.yello.server.domain.friend.repository.FriendRepository;
1717
import com.yello.server.domain.group.entity.UserGroupType;
18+
import com.yello.server.domain.question.FakeQuestionGroupTypeRepository;
1819
import com.yello.server.domain.question.FakeQuestionRepository;
20+
import com.yello.server.domain.question.repository.QuestionGroupTypeRepository;
1921
import com.yello.server.domain.question.repository.QuestionRepository;
2022
import com.yello.server.domain.user.FakeUserRepository;
2123
import com.yello.server.domain.user.entity.User;
@@ -45,11 +47,13 @@ public class AuthManagerTest {
4547
private final TokenRepository tokenRepository = new FakeTokenRepository();
4648
private final UserRepository userRepository = new FakeUserRepository(friendRepository);
4749
private final VoteRepository voteRepository = new FakeVoteRepository();
50+
private final QuestionGroupTypeRepository questionGroupTypeRepository = new FakeQuestionGroupTypeRepository(questionRepository);
4851
private final TestDataRepositoryUtil testDataUtil = new TestDataRepositoryUtil(
4952
userRepository,
5053
voteRepository,
5154
questionRepository,
52-
friendRepository
55+
friendRepository,
56+
questionGroupTypeRepository
5357
);
5458
private AuthManager authManager;
5559

0 commit comments

Comments
 (0)