Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package devkor.com.teamcback.domain.ble.dto.response;

import devkor.com.teamcback.domain.place.entity.Place;
import lombok.Getter;
import lombok.Setter;

Expand All @@ -11,11 +12,13 @@ public class BLEDeviceListRes {
private String deviceName;
private Long placeId;
private Integer capacity;
private String imageUrl;

public BLEDeviceListRes(Long id, String deviceName, Long placeId, int capacity) {
public BLEDeviceListRes(Long id, String deviceName, Long placeId, int capacity, String imageUrl) {
this.id = id;
this.deviceName = deviceName;
this.placeId = placeId;
this.capacity = capacity;
this.imageUrl = imageUrl;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -175,11 +175,13 @@ public List<BLEDeviceListRes> getBLEDeviceList() {

for (BLEDevice device : devices) {
Long placeId = null;
String imageUrl = null;
if (device.getPlace() != null) {
placeId = device.getPlace().getId();
imageUrl = device.getPlace().getImageUrl();
}

BLEDeviceListRes dto = new BLEDeviceListRes(device.getId(), device.getDeviceName(), placeId, device.getCapacity());
BLEDeviceListRes dto = new BLEDeviceListRes(device.getId(), device.getDeviceName(), placeId, device.getCapacity(), imageUrl);

result.add(dto);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,8 @@

import devkor.com.teamcback.domain.place.dto.request.CreatePlaceReq;
import devkor.com.teamcback.domain.place.dto.request.ModifyPlaceReq;
import devkor.com.teamcback.domain.place.dto.response.CreatePlaceRes;
import devkor.com.teamcback.domain.place.dto.response.DeletePlaceRes;
import devkor.com.teamcback.domain.place.dto.response.GetPlaceListRes;
import devkor.com.teamcback.domain.place.dto.response.ModifyPlaceRes;
import devkor.com.teamcback.domain.place.dto.response.*;
import devkor.com.teamcback.domain.place.service.AdminPlaceService;
import devkor.com.teamcback.domain.suggestion.dto.response.SavePlaceImageRes;
import devkor.com.teamcback.global.response.CommonResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand All @@ -18,9 +14,6 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController
@RequiredArgsConstructor
Expand Down Expand Up @@ -89,25 +82,4 @@ public CommonResponse<DeletePlaceRes> deletePlace(
@Parameter(description = "삭제할 편의시설 ID") @PathVariable Long placeId) {
return CommonResponse.success(adminPlaceService.deletePlace(placeId));
}

// @PostMapping(value = "/{placeId}/image", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "장소 사진 저장", description = "장소 사진 저장(첫 사진이 대표 사진)")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "403", description = "잘못된 입력입니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<SavePlaceImageRes> savePlaceImages(
@Parameter(name = "placeId", description = "장소 ID")
@PathVariable Long placeId,
@Parameter(description = "저장할 사진 파일")
@RequestPart("images") List<MultipartFile> images
) {
return CommonResponse.success(
adminPlaceService.savePlaceImage(placeId, images));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package devkor.com.teamcback.domain.place.controller;

import devkor.com.teamcback.domain.place.dto.response.*;
import devkor.com.teamcback.domain.place.service.AdminPlaceImageService;
import devkor.com.teamcback.global.response.CommonResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import lombok.RequiredArgsConstructor;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/admin/places")
public class AdminPlaceImageController {
private final AdminPlaceImageService adminPlaceImageService;

@PostMapping(value = "/{placeId}/image", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "장소 사진 1장 추가",
description = "장소 사진 1장 추가 저장")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<SavePlaceImageRes> savePlaceImage(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId,
@Parameter(description = "저장할 사진 파일") @RequestPart("image") MultipartFile image
) {
return CommonResponse.success(adminPlaceImageService.savePlaceImage(placeId, image));
}

@PostMapping(value = "/{placeId}/images", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "장소 사진 여러장 새로 저장",
description = "기존 장소 사진 전체 삭제 후 사진 여러장 새로 저장")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<SavePlaceImageRes> savePlaceImageList(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId,
@Parameter(description = "저장할 사진 파일 목록") @RequestPart("image") List<MultipartFile> images
) {
return CommonResponse.success(adminPlaceImageService.savePlaceImageList(placeId, images));
}

@DeleteMapping(value = "/{placeId}/images")
@Operation(summary = "장소 사진 전체 삭제",
description = "장소 사진 전체 삭제")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<DeletePlaceImageRes> deletePlaceImage(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId
) {
return CommonResponse.success(adminPlaceImageService.deletePlaceImage(placeId));
}

@GetMapping("/{placeId}/image")
@Operation(summary = "장소 사진 1장 검색",
description = "장소 사진 1장 검색")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<GetPlaceImageRes> getPlaceImage(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId
) {
return CommonResponse.success(adminPlaceImageService.searchPlaceImage(placeId));
}

@GetMapping("/{placeId}/images")
@Operation(summary = "장소 사진 여러 장 검색",
description = "장소 사진 여러 장 검색")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<SearchPlaceImageListRes> getPlaceImageList(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId
) {
return CommonResponse.success(adminPlaceImageService.searchPlaceImageList(placeId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package devkor.com.teamcback.domain.place.dto.response;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "장소 사진 삭제 응답 dto")
@JsonIgnoreProperties
public class DeletePlaceImageRes {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package devkor.com.teamcback.domain.place.dto.response;

import devkor.com.teamcback.domain.place.entity.Place;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@Schema(description = "장소 사진 검색 응답 dto")
@Getter
public class GetPlaceImageRes {
private Long placeId;
private String placeName;
private String image;

public GetPlaceImageRes(Place place) {
this.placeId = place.getId();
this.placeName = place.getName();
this.image = place.getImageUrl();
}

public GetPlaceImageRes(Place place, String image) {
this.placeId = place.getId();
this.placeName = place.getName();
this.image = image;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package devkor.com.teamcback.domain.place.dto.response;

import devkor.com.teamcback.domain.place.entity.Place;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@Schema(description = "장소 사진 수정 완료")
@Getter
public class ModifyPlaceImageRes {
private Long placeId;
private String imageUrl;

public ModifyPlaceImageRes(Place place, String imageUrl) {
this.placeId = place.getId();
this.imageUrl = imageUrl;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package devkor.com.teamcback.domain.place.dto.response;

import devkor.com.teamcback.domain.place.entity.Place;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@Schema(description = "장소 사진 저장 완료")
@Getter
public class SavePlaceImageRes {
private Long placeId;
private String imageUrl;

public SavePlaceImageRes(Place place, String imageUrl) {
this.placeId = place.getId();
this.imageUrl = imageUrl;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package devkor.com.teamcback.domain.place.dto.response;

import devkor.com.teamcback.domain.place.entity.Place;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

import java.util.List;

@Schema(description = "장소 사진 리스트 응답 dto")
@Getter
public class SearchPlaceImageListRes {
private Long placeId;
private String placeName;
private List<SearchPlaceImageRes> imageList;

public SearchPlaceImageListRes(Place place, List<SearchPlaceImageRes> imageList) {
this.placeId = place.getId();
this.placeName = place.getName();
this.imageList = imageList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package devkor.com.teamcback.domain.place.dto.response;

import devkor.com.teamcback.domain.place.entity.Place;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@Schema(description = "장소 사진 검색 응답 dto")
@Getter
public class SearchPlaceImageRes {
private String image;
private Long sortNum;

public SearchPlaceImageRes(Place place) {
this.image = place.getImageUrl();
this.sortNum = 1L;
}

public SearchPlaceImageRes(String image, Long sortNum) {
this.image = image;
this.sortNum = sortNum;
}
}
Loading