Skip to content

Commit

Permalink
Merge pull request #20 from 9oormthon-univ/feature/deploy/#3
Browse files Browse the repository at this point in the history
API 수정
  • Loading branch information
BinarySstar authored Nov 23, 2024
2 parents 4c1c7b1 + d8ac369 commit 102b4a3
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
Expand All @@ -17,7 +16,6 @@
import univ.goormthon.kongju.domain.parking.dto.response.ParkingRegisterResponse;
import univ.goormthon.kongju.domain.parking.entity.Parking;
import univ.goormthon.kongju.domain.parking.service.ParkingService;
import univ.goormthon.kongju.global.exception.NotFoundException;
import univ.goormthon.kongju.global.exception.dto.ErrorResponse;

import java.util.List;
Expand All @@ -44,8 +42,22 @@ public ResponseEntity<List<Parking>> getNearbyParkings(@RequestParam Double lati
return ResponseEntity.ok(parkingService.getNearbyParkings(latitude, longitude, radius));
}

@Operation(summary = "내 주차장 조회", description = "내가 등록한 주차장을 조회합니다.")
@Parameters(value = {
@Parameter(name = "memberId", description = "회원 ID")
})
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "주차장 조회 성공", content = @Content(schema = @Schema(implementation = Parking.class))),
@ApiResponse(responseCode = "404", description = "주차장을 찾을 수 없음", content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
})
@GetMapping("/my")
public ResponseEntity<List<Parking>> getMyParkings(@RequestParam String memberId) {
return ResponseEntity.ok(parkingService.getMyParkings(memberId));
}

@Operation(summary = "주차장 등록", description = "주차장을 등록합니다.")
@Parameters(value = {
@Parameter(name = "memberId", description = "회원 ID"),
@Parameter(name = "request", description = "주차장 등록 요청 JSON 형식의 데이터"),
@Parameter(name = "images", description = "주차장 이미지 파일")
})
Expand All @@ -56,16 +68,17 @@ public ResponseEntity<List<Parking>> getNearbyParkings(@RequestParam Double lati
})
@PostMapping("/register")
public ResponseEntity<ParkingRegisterResponse> registerParking(
HttpSession session,
@RequestParam String memberId,
@RequestPart("request") ParkingRegisterRequest request,
@RequestPart("images") List<MultipartFile> images) {
request.setImages(images);
Parking parking = parkingService.registerParking(session, request);
Parking parking = parkingService.registerParking(memberId, request);
return ResponseEntity.ok(parkingService.EntitytoDto(parking));
}

@Operation(summary = "주차장 수정", description = "주차장 정보를 수정합니다.")
@Parameters(value = {
@Parameter(name = "memberId", description = "회원 ID"),
@Parameter(name = "parkingId", description = "주차장 ID"),
@Parameter(name = "request", description = "주차장 수정 요청 JSON 형식의 데이터"),
@Parameter(name = "images", description = "주차장 이미지 파일")
Expand All @@ -77,16 +90,18 @@ public ResponseEntity<ParkingRegisterResponse> registerParking(
@ApiResponse(responseCode = "404", description = "주차장을 찾을 수 없음", content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
})
@PutMapping("/update")
public ResponseEntity<ParkingRegisterResponse> updateParking(HttpSession session, @RequestParam Long parkingId,
public ResponseEntity<ParkingRegisterResponse> updateParking(@RequestParam String memberId,
@RequestParam Long parkingId,
@RequestPart("request") ParkingRegisterRequest request,
@RequestPart("images") List<MultipartFile> images) {
request.setImages(images);
Parking updatedParking = parkingService.updateParking(session, parkingId, request);
Parking updatedParking = parkingService.updateParking(memberId, parkingId, request);
return ResponseEntity.ok(parkingService.EntitytoDto(updatedParking));
}

@Operation(summary = "주차장 삭제", description = "주차장을 삭제합니다.")
@Parameters(value = {
@Parameter(name = "memberId", description = "회원 ID"),
@Parameter(name = "parkingId", description = "주차장 ID")
})
@ApiResponses(value = {
Expand All @@ -95,8 +110,9 @@ public ResponseEntity<ParkingRegisterResponse> updateParking(HttpSession session
@ApiResponse(responseCode = "404", description = "주차장을 찾을 수 없음", content = @Content(schema = @Schema(implementation = ErrorResponse.class)))
})
@DeleteMapping("/delete")
public ResponseEntity<Void> deleteParking(HttpSession session, @RequestParam Long parkingId) {
parkingService.deleteParking(session, parkingId);
public ResponseEntity<Void> deleteParking(@RequestParam String memberId,
@RequestParam Long parkingId) {
parkingService.deleteParking(memberId, parkingId);
return ResponseEntity.noContent().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,6 @@ public interface ParkingRepository extends JpaRepository<Parking, Long> {
List<Parking> findAllWithinRadius(@Param("lat") double latitude,
@Param("lng") double longitude,
@Param("radius") double radius);

List<Parking> findAllByMemberId(long memberId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import univ.goormthon.kongju.domain.member.entity.Member;
import univ.goormthon.kongju.domain.member.repository.MemberRepository;
import univ.goormthon.kongju.domain.parking.dto.request.ParkingAvailabilityRequest;
import univ.goormthon.kongju.domain.parking.dto.request.ParkingRegisterRequest;
import univ.goormthon.kongju.domain.parking.dto.response.ParkingRegisterResponse;
Expand All @@ -31,6 +32,7 @@
@RequiredArgsConstructor
public class ParkingService {

private final MemberRepository memberRepository;
private final ParkingRepository parkingRepository;
private final ParkingImageRepository parkingImageRepository;
private final ParkingAvailabilityRepository parkingAvailabilityRepository;
Expand All @@ -41,9 +43,14 @@ public List<Parking> getNearbyParkings(Double latitude, Double longitude, Double
return parkingRepository.findAllWithinRadius(latitude, longitude, radius);
}

@Transactional(readOnly = true)
public List<Parking> getMyParkings(String memberId) {
return parkingRepository.findAllByMemberId(Long.parseLong(memberId));
}

@Transactional
public Parking registerParking(HttpSession session, ParkingRegisterRequest request) {
Member member = validateMemberSession(session);
public Parking registerParking(String memberId, ParkingRegisterRequest request) {
Member member = validateMember(memberId);

Parking parking = Parking.builder()
.member(member)
Expand All @@ -66,8 +73,8 @@ public Parking registerParking(HttpSession session, ParkingRegisterRequest reque
}

@Transactional
public Parking updateParking(HttpSession session, Long parkingId, ParkingRegisterRequest request) {
Member member = validateMemberSession(session);
public Parking updateParking(String memberId, Long parkingId, ParkingRegisterRequest request) {
Member member = validateMember(memberId);
Parking parking = validateParkingOwnership(parkingId, member);

parking.update(request);
Expand All @@ -82,21 +89,18 @@ public Parking updateParking(HttpSession session, Long parkingId, ParkingRegiste
}

@Transactional
public void deleteParking(HttpSession session, Long parkingId) {
Member member = validateMemberSession(session);
public void deleteParking(String memberId, Long parkingId) {
Member member = validateMember(memberId);
Parking parking = validateParkingOwnership(parkingId, member);

parkingImageRepository.deleteByParkingId(parkingId);
parkingAvailabilityRepository.deleteByParkingId(parkingId);
parkingRepository.delete(parking);
}

private Member validateMemberSession(HttpSession session) {
Member member = (Member) session.getAttribute("member");
if (member == null) {
throw new NotFoundException(ErrorCode.MEMBER_NOT_FOUND);
}
return member;
private Member validateMember(String memberId) {
return memberRepository.findById(Long.parseLong(memberId))
.orElseThrow(() -> new NotFoundException(ErrorCode.MEMBER_NOT_FOUND));
}

private Parking validateParkingOwnership(Long parkingId, Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,4 @@ public ResponseEntity<?> kakaoCallback(@RequestParam String code, HttpSession se

return ResponseEntity.status(HttpStatus.FOUND).location(URI.create(frontendDomain + "?id=" + member.getId())).build();
}

// 로그아웃
@Operation(summary = "카카오 로그아웃", description = "카카오 로그아웃")
@ApiResponses(value = {
@ApiResponse(responseCode = "302", description = "카카오 로그아웃창으로 리다이렉트")
})
@GetMapping("/logout")
public ResponseEntity<?> kakaoLogout() {
String kakaoLogoutUrl = "https://kauth.kakao.com/oauth/logout"
+ "?client_id=" + kakaoAuthService.getClientId()
+ "&logout_redirect_uri=" + kakaoAuthService.getLogoutRedirectUri();

HttpHeaders headers = new HttpHeaders();
headers.setLocation(URI.create(kakaoLogoutUrl));
return ResponseEntity.status(HttpStatus.FOUND).headers(headers).build();
}
}

0 comments on commit 102b4a3

Please sign in to comment.