Skip to content

Commit

Permalink
Merge pull request #249 from haedoang/feature/report
Browse files Browse the repository at this point in the history
feat: 내 게시글 보기
  • Loading branch information
haedoang authored Dec 6, 2023
2 parents 2d31386 + 7960e94 commit cdc6a61
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 9 deletions.
26 changes: 25 additions & 1 deletion src/main/java/com/koliving/api/my/ui/MyController.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,37 @@ public ResponseEntity<UserResponse> myProfile(@AuthenticationPrincipal User user
),
})
@GetMapping("/rooms/like")
public ResponseEntity<Page<RoomResponse>> getLikedRooms(Pageable pageable, @AuthenticationPrincipal User user) {
public ResponseEntity<Page<RoomResponse>> getLikeRooms(Pageable pageable, @AuthenticationPrincipal User user) {
final Page<RoomResponse> responses = roomService.findLikeRoomByUser(pageable, user);

return ResponseEntity.ok()
.body(responses);
}


@Operation(
summary = "내 게시글 조회",
description = "내 게시글 리스트를 조회합니다",
responses = {
@ApiResponse(
responseCode = "200",
description = "내 게시글 리스트 조회 성공",
content = @Content(schema = @Schema(implementation = RoomResponse.class))
),
@ApiResponse(
responseCode = "400",
description = "내 게시글 리스트 조회 실패",
content = @Content(schema = @Schema(implementation = ErrorResponse.class))
),
})
@GetMapping("/rooms")
public ResponseEntity<Page<RoomResponse>> getMyRooms(Pageable pageable, @AuthenticationPrincipal User user) {
final Page<RoomResponse> responses = roomService.findRoomByUser(pageable, user);

return ResponseEntity.ok()
.body(responses);
}

@Operation(
summary = "알림 조회",
description = "알림 리스트 조회합니다",
Expand Down
12 changes: 7 additions & 5 deletions src/main/java/com/koliving/api/room/application/RoomService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import static com.koliving.api.base.ServiceError.FORBIDDEN;
import static com.koliving.api.base.ServiceError.RECORD_NOT_EXIST;
import static com.koliving.api.base.ServiceError.UNAUTHORIZED;

import com.google.common.collect.Sets;
import com.koliving.api.base.ServiceError;
Expand All @@ -20,19 +19,16 @@
import com.koliving.api.room.domain.Furnishing;
import com.koliving.api.room.domain.Like;
import com.koliving.api.room.domain.Room;
import com.koliving.api.room.infra.RoomContactEvent;
import com.koliving.api.room.infra.FurnishingRepository;
import com.koliving.api.room.infra.LikeRepository;
import com.koliving.api.room.infra.RoomRepository;
import com.koliving.api.user.domain.Notification;
import com.koliving.api.user.domain.User;
import com.koliving.api.user.infra.UserRepository;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -145,6 +141,10 @@ public void likeRoom(Long roomId, User user) {
;
}

public Page<RoomResponse> findRoomByUser(Pageable pageable, User user) {
return roomRepository.roomsByUser(pageable, user.getId());
}

public Page<RoomResponse> findLikeRoomByUser(Pageable pageable, User user) {
return roomRepository.likedRooms(pageable, user.getId());
}
Expand All @@ -159,10 +159,12 @@ public void contact(RoomContactRequest request, User user) {
final Room room = getRoom(request.roomId());
final Notification notification = Notification.of(user, room.getUser());
room.getUser().addReceivedNotification(notification);
emailService.sendRoomContact(room.getUser().getEmail(), request.contactInfo(), request.message(), user, getRoomDetailUrl(room.getId()));
emailService.sendRoomContact(room.getUser().getEmail(), request.contactInfo(), request.message(), user,
getRoomDetailUrl(room.getId()));
}

public String getRoomDetailUrl(Long roomId) {
return String.format("%s/room/%d", frontProperties.getOrigin(), roomId);
}

}
8 changes: 5 additions & 3 deletions src/main/java/com/koliving/api/room/infra/RoomRepository.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.koliving.api.room.infra;

import com.koliving.api.room.domain.Room;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface RoomRepository extends JpaRepository<Room, Long>, RoomRepositoryQueryDsl {
Expand All @@ -16,4 +16,6 @@ public interface RoomRepository extends JpaRepository<Room, Long>, RoomRepositor
@Query("select r from TB_ROOM r join fetch r.user u where r.id=:id")
Optional<Room> findByIdWithUser(@Param("id") Long id);

@Query("select r from TB_ROOM r join fetch r.user u where u.id = : id")
List<Room> findAllByUserIdOrderByIdDesc(Pageable pageable, Long userId);
}
17 changes: 17 additions & 0 deletions src/main/java/com/koliving/api/room/infra/RoomRepositoryImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public Page<RoomResponse> search(Pageable pageable, RoomSearchCondition conditio
)
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.orderBy(room.id.desc())
.fetch();

long count = queryFactory.selectFrom(room)
Expand Down Expand Up @@ -130,6 +131,7 @@ public Page<RoomResponse> likedRooms(Pageable pageable, Long userId) {
.where(like.user.id.eq(userId))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.orderBy(room.id.desc())
.fetch();

long count = queryFactory.select(like.room)
Expand All @@ -140,4 +142,19 @@ public Page<RoomResponse> likedRooms(Pageable pageable, Long userId) {

return getRoomResponses(pageable, rooms, count);
}

@Override
public Page<RoomResponse> roomsByUser(Pageable pageable, Long userId) {
final List<Room> rooms = queryFactory.selectFrom(room)
.where(room.user.id.eq(userId))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();

final int count = queryFactory.selectFrom(room)
.where(room.user.id.eq(userId))
.fetch().size();

return getRoomResponses(pageable, rooms, count);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,6 @@ public interface RoomRepositoryQueryDsl {
Page<RoomResponse> search(Pageable pageable, RoomSearchCondition condition);

Page<RoomResponse> likedRooms(Pageable pageable, Long userId);

Page<RoomResponse> roomsByUser(Pageable pageable, Long userId);
}

0 comments on commit cdc6a61

Please sign in to comment.