Skip to content

Commit 78047d0

Browse files
authored
deploy 1.16
배포 1.16
2 parents 4f660e0 + 70e4d6d commit 78047d0

File tree

9 files changed

+80
-25
lines changed

9 files changed

+80
-25
lines changed

src/main/java/com/day_walk/backend/domain/course/bean/GetSearchCourseEntityBean.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ public class GetSearchCourseEntityBean {
1515
public List<CourseEntity> exec(String searchStr, String sortStr) {
1616

1717
if (sortStr.equals("latest")) {
18-
return courseRepository.findByTitleContainingOrderByCreateAtDesc(searchStr);
18+
return courseRepository.searchByTitleOrUserName(searchStr);
1919
} else if (sortStr.equals("like")) {
20-
return courseRepository.findByTitleOrderByLikeCount(searchStr);
20+
return courseRepository.findByTitleOrUserNameOrderByLikeCount(searchStr);
2121
}
22-
return courseRepository.findByTitleContaining(searchStr);
22+
return courseRepository.findByTitleOrUserName(searchStr);
2323
}
2424
}

src/main/java/com/day_walk/backend/domain/course/data/out/GetCourseDto.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Data;
66
import lombok.RequiredArgsConstructor;
77

8+
import java.time.LocalDateTime;
89
import java.util.List;
910

1011
@Data
@@ -16,11 +17,13 @@ public class GetCourseDto {
1617
private List<GetPlaceWithStarDto> placeList;
1718
private boolean like;
1819
private int courseLike;
20+
private LocalDateTime createAt;
1921

2022
@Builder
21-
public GetCourseDto(String userName, String title, List<GetPlaceWithStarDto> placeList, boolean like, int courseLike) {
23+
public GetCourseDto(String userName, String title, LocalDateTime createAt, List<GetPlaceWithStarDto> placeList, boolean like, int courseLike) {
2224
this.userName = userName;
2325
this.title = title;
26+
this.createAt = createAt;
2427
this.placeList = placeList;
2528
this.like = like;
2629
this.courseLike = courseLike;

src/main/java/com/day_walk/backend/domain/course/data/out/GetSearchCourseDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.Builder;
55
import lombok.Data;
66

7+
import java.time.LocalDateTime;
78
import java.util.List;
89
import java.util.UUID;
910

@@ -16,5 +17,6 @@ public class GetSearchCourseDto {
1617
private List<GetPlaceByCourseDto> placeList;
1718
private int courseLike;
1819
private boolean like;
20+
private LocalDateTime createAt;
1921

2022
}

src/main/java/com/day_walk/backend/domain/course/data/out/GetUsersAllCourseDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.Builder;
55
import lombok.Data;
66

7+
import java.time.LocalDateTime;
78
import java.util.List;
89
import java.util.UUID;
910

@@ -14,4 +15,5 @@ public class GetUsersAllCourseDto {
1415
private String title;
1516
private boolean visible;
1617
private List<GetPlaceByCourseDto> placeList;
18+
private LocalDateTime createAt;
1719
}

src/main/java/com/day_walk/backend/domain/course/repository/CourseRepository.java

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,40 @@
1212
@Repository
1313
public interface CourseRepository extends JpaRepository<CourseEntity, UUID> {
1414

15-
List<CourseEntity> findAllByUserId(UUID userId);
16-
17-
List<CourseEntity> findByTitleContaining(String searchStr);
18-
19-
List<CourseEntity> findByTitleContainingOrderByCreateAtDesc(String searchStr);
15+
// 특정 유저의 코스를 최신순으로 정렬
16+
List<CourseEntity> findAllByUserIdOrderByCreateAtDesc(UUID userId);
2017

18+
// Native: 제목 또는 사용자 이름에 키워드 포함 검색
2119
@Query(value = """
22-
SELECT c.*
23-
FROM course c
24-
LEFT JOIN course_like cl ON c.id = cl.course_id
25-
WHERE c.title LIKE %:searchStr%
26-
GROUP BY c.id
27-
ORDER BY COUNT(cl.id) DESC
28-
""", nativeQuery = true)
29-
List<CourseEntity> findByTitleOrderByLikeCount(@Param("searchStr") String searchStr);
30-
31-
List<CourseEntity> findAllByOrderByCreateAtDesc();
32-
20+
SELECT c.*
21+
FROM course c
22+
LEFT JOIN user u ON c.user_id = u.id
23+
WHERE c.title LIKE %:searchStr%
24+
OR u.name LIKE %:searchStr%
25+
""", nativeQuery = true)
26+
List<CourseEntity> findByTitleOrUserName(@Param("searchStr") String searchStr);
27+
28+
// Native: 제목 또는 사용자 이름 포함 + 최신순 정렬
29+
@Query(value = """
30+
SELECT c.*
31+
FROM course c
32+
LEFT JOIN user u ON c.user_id = u.id
33+
WHERE c.title LIKE %:searchStr%
34+
OR u.name LIKE %:searchStr%
35+
ORDER BY c.create_at DESC
36+
""", nativeQuery = true)
37+
List<CourseEntity> searchByTitleOrUserName(@Param("searchStr") String searchStr);
38+
39+
// Native: 제목 또는 사용자 이름 포함 + 좋아요 수 기준 정렬
3340
@Query(value = """
3441
SELECT c.*
3542
FROM course c
3643
LEFT JOIN course_like cl ON c.id = cl.course_id
44+
LEFT JOIN user u ON c.user_id = u.id
45+
WHERE c.title LIKE %:searchStr%
46+
OR u.name LIKE %:searchStr%
3747
GROUP BY c.id
3848
ORDER BY COUNT(cl.id) DESC
3949
""", nativeQuery = true)
40-
List<CourseEntity> findAllOrderByLikeCount();
41-
42-
List<CourseEntity> findAllByUserIdOrderByCreateAtDesc(UUID userId);
43-
50+
List<CourseEntity> findByTitleOrUserNameOrderByLikeCount(@Param("searchStr") String searchStr);
4451
}

src/main/java/com/day_walk/backend/domain/course/service/CourseService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ public GetCourseDto getCourse(UUID courseId, UUID userId) {
166166
return GetCourseDto.builder()
167167
.userName(getUserEntityBean.exec(courseEntity.getUserId()).getName())
168168
.title(courseEntity.getTitle())
169+
.createAt(courseEntity.getCreateAt())
169170
.placeList(getPlaceDtoList)
170171
.like(like)
171172
.courseLike(getCourseLikeEntityBean.exec(courseEntity))
@@ -257,6 +258,7 @@ public List<PageDto<GetUsersAllCourseDto>> getUsersAllCourse(UUID userId) {
257258
.title(courseEntity.getTitle())
258259
.visible(courseEntity.isVisible())
259260
.placeList(placeList)
261+
.createAt(courseEntity.getCreateAt())
260262
.build();
261263
})
262264
.filter(Objects::nonNull)
@@ -302,6 +304,7 @@ public List<PageDto<GetSearchCourseDto>> getSearchCourse(String searchStr, Strin
302304
return GetSearchCourseDto.builder()
303305
.courseId(courseEntity.getId())
304306
.title(courseEntity.getTitle())
307+
.createAt(courseEntity.getCreateAt())
305308
.userName(getUserEntityBean.exec(courseEntity.getUserId()).getName())
306309
.placeList(placeList)
307310
.like(liked)

src/main/java/com/day_walk/backend/domain/user/controller/UserController.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,30 @@ public ResponseEntity<Map<String, Object>> signIn(@RequestBody SignInUserDto sig
9595

9696
return ResponseEntity.status(HttpStatus.OK).body(response);
9797
}
98+
99+
@Operation(summary = "로그아웃", description = "유저가 서비스를 로그아웃합니다.")
100+
@PostMapping("/logout")
101+
public ResponseEntity<Map<String, Object>> logout(HttpServletResponse httpResponse) {
102+
ResponseCookie accessCookie = generateCookie.exec("accessToken");
103+
ResponseCookie refreshCookie = generateCookie.exec("refreshToken");
104+
105+
httpResponse.addHeader("Set-Cookie", accessCookie.toString());
106+
httpResponse.addHeader("Set-Cookie", refreshCookie.toString());
107+
108+
Map<String, Object> response = new HashMap<>();
109+
response.put("success", true);
110+
response.put("message", "로그아웃 성공!");
111+
112+
return ResponseEntity.status(HttpStatus.OK).body(response);
113+
}
114+
115+
@Operation(summary = "권한 확인", description = "유저의 권한을 확인합니다.")
116+
@PostMapping("/auth")
117+
public ResponseEntity<Map<String, Object>> auth() {
118+
Map<String, Object> response = new HashMap<>();
119+
response.put("success", true);
120+
response.put("message", "권한이 있습니다!");
121+
122+
return ResponseEntity.status(HttpStatus.OK).body(response);
123+
}
98124
}

src/main/java/com/day_walk/backend/global/token/GenerateCookie.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,17 @@ public ResponseCookie exec(String tokenName, String token) {
1919

2020
return cookie;
2121
}
22+
23+
public ResponseCookie exec(String tokenName) {
24+
ResponseCookie cookie = ResponseCookie
25+
.from(tokenName, "")
26+
.httpOnly(true)
27+
.secure(true)
28+
.sameSite("None")
29+
.path("/")
30+
.maxAge(0) // 즉시 만료
31+
.build();
32+
33+
return cookie;
34+
}
2235
}

src/main/java/com/day_walk/backend/global/token/JwtAuthenticationFilter.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.springframework.web.filter.OncePerRequestFilter;
2323

2424
import java.io.IOException;
25-
import java.util.ArrayList;
2625
import java.util.List;
2726
import java.util.UUID;
2827

0 commit comments

Comments
 (0)