Skip to content

Commit a9ceae3

Browse files
authored
[Release] v2.0.2 릴리즈 (#217)
* feat: 마이페이지 API 개발 (#211) * feat: /user/v2/my api추가 * feat: 단과대, 학과 조회 API추가 * feat: 유저 탈퇴 로직 -> 닉네임 파라미터 받게 변경 * refactor: gemini 리뷰에 맞춰 변경 * [FEATURE] 250818 수정사항 중, 제휴지도 관련 건 수정 (#213) * feat: 학과 등록시 학과 id 파라미터로 전달하게끔 변경 * refactor: /users/department 학과, 단과대 추가 * feat: /user/mypage 단과대, 학과정보 추가 * refactor: 현재 날짜에 해당하는 제휴들만 조회되게 변경 * refactor: 유저의 학과별, 단과대별 제휴 로직 변경 * refactor: gemini 코드리뷰 바탕으로 수정
1 parent fb34bbc commit a9ceae3

16 files changed

Lines changed: 188 additions & 35 deletions

src/main/java/ssu/eatssu/domain/partnership/entity/Partnership.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
@NoArgsConstructor(access = AccessLevel.PROTECTED)
2727
@Builder
2828
@AllArgsConstructor
29-
@Where(clause = "end_date >= CURRENT_DATE")
29+
@Where(clause = "start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE")
3030
public class Partnership {
3131
@Id
3232
@GeneratedValue(strategy = GenerationType.IDENTITY)

src/main/java/ssu/eatssu/domain/partnership/persistence/PartnershipRepository.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,29 @@
44
import org.springframework.data.jpa.repository.Query;
55
import org.springframework.data.repository.query.Param;
66
import ssu.eatssu.domain.partnership.entity.Partnership;
7+
import ssu.eatssu.domain.partnership.entity.PartnershipRestaurant;
78
import ssu.eatssu.domain.user.department.entity.College;
89
import ssu.eatssu.domain.user.department.entity.Department;
910

1011
import java.util.List;
1112

1213
public interface PartnershipRepository extends JpaRepository<Partnership, Long> {
13-
@Query("SELECT DISTINCT p FROM Partnership p " +
14-
"LEFT JOIN p.partnershipCollege pc " +
15-
"LEFT JOIN p.partnershipDepartment pd " +
16-
"WHERE (pc = :college OR pd = :department OR (pc IS NOT NULL AND pc.name = '총학'))")
17-
List<Partnership> findRelevantPartnerships(@Param("college") College college,
18-
@Param("department") Department department);
14+
@Query("""
15+
select distinct pr
16+
from PartnershipRestaurant pr
17+
join fetch pr.partnerships p
18+
left join fetch p.partnershipCollege pc
19+
left join fetch p.partnershipDepartment pd
20+
where
21+
(pc = :college
22+
or pd = :department
23+
or (pc is not null and pc.name = '총학'))
24+
and p.startDate <= current_date
25+
and (p.endDate is null or p.endDate >= current_date)
26+
""")
27+
List<PartnershipRestaurant> findRestaurantsWithMyPartnerships(
28+
@Param("college") College college,
29+
@Param("department") Department department
30+
);
31+
1932
}

src/main/java/ssu/eatssu/domain/partnership/persistence/PartnershipRestaurantRepository.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import java.util.List;
88

99
public interface PartnershipRestaurantRepository extends JpaRepository<PartnershipRestaurant, Long> {
10-
@Query("SELECT DISTINCT pr FROM PartnershipRestaurant pr " +
11-
"LEFT JOIN FETCH pr.partnerships p " +
12-
"LEFT JOIN FETCH p.partnershipCollege " +
13-
"LEFT JOIN FETCH p.partnershipDepartment ")
10+
@Query("""
11+
SELECT DISTINCT pr FROM PartnershipRestaurant pr
12+
LEFT JOIN FETCH pr.partnerships p
13+
LEFT JOIN FETCH p.partnershipCollege
14+
LEFT JOIN FETCH p.partnershipDepartment
15+
WHERE p.startDate <= CURRENT_DATE and (p.endDate is null or p.endDate >= CURRENT_DATE)""")
1416
List<PartnershipRestaurant> findAllWithDetails();
1517
}

src/main/java/ssu/eatssu/domain/partnership/service/PartnershipService.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,10 @@ public List<PartnershipResponse> getUserDepartmentPartnerships(CustomUserDetails
115115
College college = department.getCollege();
116116

117117
return partnershipRepository
118-
.findRelevantPartnerships(college, department)
118+
.findRestaurantsWithMyPartnerships(college, department)
119119
.stream()
120-
.map(partnership -> {
121-
PartnershipRestaurant partnershipRestaurant = partnership.getPartnershipRestaurant();
122-
123-
return PartnershipResponse.fromEntity(partnershipRestaurant,
124-
customUserDetails.getId());
125-
})
120+
.map(partnershipRestaurant -> PartnershipResponse.fromEntity(partnershipRestaurant,
121+
customUserDetails.getId()))
126122
.collect(Collectors.toList());
127123
}
128124
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package ssu.eatssu.domain.user.department.persistence;
22

33
import org.springframework.data.jpa.repository.JpaRepository;
4+
import ssu.eatssu.domain.user.department.entity.College;
45
import ssu.eatssu.domain.user.department.entity.Department;
56

7+
import java.util.List;
68
import java.util.Optional;
79

810
public interface DepartmentRepository extends JpaRepository<Department, Long> {
911
Optional<Department> findByName(String name);
12+
13+
List<Department> findByCollege(College college);
1014
}
Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,24 @@
11
package ssu.eatssu.domain.user.dto;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Getter;
3+
import lombok.Builder;
4+
import ssu.eatssu.domain.user.department.entity.College;
5+
import ssu.eatssu.domain.user.department.entity.Department;
56

6-
@Getter
7-
@AllArgsConstructor
8-
public class DepartmentResponse {
9-
private String departmentName;
7+
@Builder
8+
public record DepartmentResponse(
9+
Long departmentId, String departmentName, Long collegeId, String collegeName
10+
) {
11+
public static DepartmentResponse from(Department department) {
12+
if (department == null) {
13+
return new DepartmentResponse(null, null, null, null);
14+
}
15+
final College college = department.getCollege();
16+
return DepartmentResponse.builder()
17+
.departmentId(department.getId())
18+
.departmentName(department.getName())
19+
.collegeId(college != null ? college.getId() : null)
20+
.collegeName(college != null ? college.getName() : null)
21+
.build();
22+
}
1023
}
24+
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package ssu.eatssu.domain.user.dto;
2+
3+
import lombok.Builder;
4+
5+
@Builder
6+
public record GetCollegeResponse(
7+
Long id,
8+
String name
9+
) {
10+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package ssu.eatssu.domain.user.dto;
2+
3+
import lombok.Builder;
4+
5+
@Builder
6+
public record GetDepartmentResponse(Long id,
7+
String name) {
8+
}

src/main/java/ssu/eatssu/domain/user/dto/MyPageResponse.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,49 @@
55
import lombok.Builder;
66
import lombok.Getter;
77
import ssu.eatssu.domain.auth.entity.OAuthProvider;
8+
import ssu.eatssu.domain.user.department.entity.College;
9+
import ssu.eatssu.domain.user.department.entity.Department;
10+
import ssu.eatssu.domain.user.entity.User;
811

912
@AllArgsConstructor
1013
@Builder
1114
@Schema(title = "마이페이지 정보")
1215
@Getter
1316
public class MyPageResponse {
17+
1418
@Schema(description = "닉네임", example = "피치푸치")
1519
private String nickname;
1620

17-
@Schema(description = "연결 계정 정보", example = "피치푸치")
21+
@Schema(description = "연결 계정 정보", example = "GOOGLE")
1822
private OAuthProvider provider;
23+
24+
@Schema(description = "학과 id", example = "1")
25+
private Long departmentId;
26+
27+
@Schema(description = "학과 이름", example = "컴퓨터학부")
28+
private String departmentName;
29+
30+
@Schema(description = "단과대 id", example = "1")
31+
private Long collegeId;
32+
33+
@Schema(description = "단과대 이름", example = "IT 대학")
34+
private String collegeName;
35+
36+
public static MyPageResponse from(User user) {
37+
if (user == null) {
38+
return MyPageResponse.builder().build();
39+
}
40+
41+
Department department = user.getDepartment();
42+
College college = department != null ? department.getCollege() : null;
43+
44+
return MyPageResponse.builder()
45+
.nickname(user.getNickname())
46+
.provider(user.getProvider())
47+
.departmentId(department != null ? department.getId() : null)
48+
.departmentName(department != null ? department.getName() : null)
49+
.collegeId(college != null ? college.getId() : null)
50+
.collegeName(college != null ? college.getName() : null)
51+
.build();
52+
}
1953
}

src/main/java/ssu/eatssu/domain/user/dto/UpdateDepartmentRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
@AllArgsConstructor
1111
@NoArgsConstructor
1212
public class UpdateDepartmentRequest {
13-
@Schema(description = "학과 이름", example = "소프트")
14-
private String departmentName;
13+
@Schema(description = "학과 id", example = "1")
14+
private Long departmentId;
1515
}

0 commit comments

Comments
 (0)