Skip to content

Commit 3e36a55

Browse files
authored
Merge pull request #261 from DevKor-github/feat/ble3
ble imageurl 추가 및 place 이미지 추가 기능
2 parents 3e53aaa + 68bd357 commit 3e36a55

14 files changed

Lines changed: 372 additions & 64 deletions

File tree

src/main/java/devkor/com/teamcback/domain/ble/dto/response/BLEDeviceListRes.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package devkor.com.teamcback.domain.ble.dto.response;
22

3+
import devkor.com.teamcback.domain.place.entity.Place;
34
import lombok.Getter;
45
import lombok.Setter;
56

@@ -11,11 +12,13 @@ public class BLEDeviceListRes {
1112
private String deviceName;
1213
private Long placeId;
1314
private Integer capacity;
15+
private String imageUrl;
1416

15-
public BLEDeviceListRes(Long id, String deviceName, Long placeId, int capacity) {
17+
public BLEDeviceListRes(Long id, String deviceName, Long placeId, int capacity, String imageUrl) {
1618
this.id = id;
1719
this.deviceName = deviceName;
1820
this.placeId = placeId;
1921
this.capacity = capacity;
22+
this.imageUrl = imageUrl;
2023
}
2124
}

src/main/java/devkor/com/teamcback/domain/ble/service/BLEService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,13 @@ public List<BLEDeviceListRes> getBLEDeviceList() {
175175

176176
for (BLEDevice device : devices) {
177177
Long placeId = null;
178+
String imageUrl = null;
178179
if (device.getPlace() != null) {
179180
placeId = device.getPlace().getId();
181+
imageUrl = device.getPlace().getImageUrl();
180182
}
181183

182-
BLEDeviceListRes dto = new BLEDeviceListRes(device.getId(), device.getDeviceName(), placeId, device.getCapacity());
184+
BLEDeviceListRes dto = new BLEDeviceListRes(device.getId(), device.getDeviceName(), placeId, device.getCapacity(), imageUrl);
183185

184186
result.add(dto);
185187
}

src/main/java/devkor/com/teamcback/domain/place/controller/AdminPlaceController.java

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,8 @@
22

33
import devkor.com.teamcback.domain.place.dto.request.CreatePlaceReq;
44
import devkor.com.teamcback.domain.place.dto.request.ModifyPlaceReq;
5-
import devkor.com.teamcback.domain.place.dto.response.CreatePlaceRes;
6-
import devkor.com.teamcback.domain.place.dto.response.DeletePlaceRes;
7-
import devkor.com.teamcback.domain.place.dto.response.GetPlaceListRes;
8-
import devkor.com.teamcback.domain.place.dto.response.ModifyPlaceRes;
5+
import devkor.com.teamcback.domain.place.dto.response.*;
96
import devkor.com.teamcback.domain.place.service.AdminPlaceService;
10-
import devkor.com.teamcback.domain.suggestion.dto.response.SavePlaceImageRes;
117
import devkor.com.teamcback.global.response.CommonResponse;
128
import io.swagger.v3.oas.annotations.Operation;
139
import io.swagger.v3.oas.annotations.Parameter;
@@ -18,9 +14,6 @@
1814
import jakarta.validation.Valid;
1915
import lombok.RequiredArgsConstructor;
2016
import org.springframework.web.bind.annotation.*;
21-
import org.springframework.web.multipart.MultipartFile;
22-
23-
import java.util.List;
2417

2518
@RestController
2619
@RequiredArgsConstructor
@@ -89,25 +82,4 @@ public CommonResponse<DeletePlaceRes> deletePlace(
8982
@Parameter(description = "삭제할 편의시설 ID") @PathVariable Long placeId) {
9083
return CommonResponse.success(adminPlaceService.deletePlace(placeId));
9184
}
92-
93-
// @PostMapping(value = "/{placeId}/image", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
94-
@Operation(summary = "장소 사진 저장", description = "장소 사진 저장(첫 사진이 대표 사진)")
95-
@ApiResponses(value = {
96-
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
97-
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
98-
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
99-
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
100-
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
101-
@ApiResponse(responseCode = "403", description = "잘못된 입력입니다.",
102-
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
103-
})
104-
public CommonResponse<SavePlaceImageRes> savePlaceImages(
105-
@Parameter(name = "placeId", description = "장소 ID")
106-
@PathVariable Long placeId,
107-
@Parameter(description = "저장할 사진 파일")
108-
@RequestPart("images") List<MultipartFile> images
109-
) {
110-
return CommonResponse.success(
111-
adminPlaceService.savePlaceImage(placeId, images));
112-
}
11385
}
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package devkor.com.teamcback.domain.place.controller;
2+
3+
import devkor.com.teamcback.domain.place.dto.response.*;
4+
import devkor.com.teamcback.domain.place.service.AdminPlaceImageService;
5+
import devkor.com.teamcback.global.response.CommonResponse;
6+
import io.swagger.v3.oas.annotations.Operation;
7+
import io.swagger.v3.oas.annotations.Parameter;
8+
import io.swagger.v3.oas.annotations.media.Content;
9+
import io.swagger.v3.oas.annotations.media.Schema;
10+
import io.swagger.v3.oas.annotations.responses.ApiResponse;
11+
import io.swagger.v3.oas.annotations.responses.ApiResponses;
12+
import lombok.RequiredArgsConstructor;
13+
import org.springframework.http.MediaType;
14+
import org.springframework.web.bind.annotation.DeleteMapping;
15+
import org.springframework.web.bind.annotation.GetMapping;
16+
import org.springframework.web.bind.annotation.PathVariable;
17+
import org.springframework.web.bind.annotation.PostMapping;
18+
import org.springframework.web.bind.annotation.RequestMapping;
19+
import org.springframework.web.bind.annotation.RequestPart;
20+
import org.springframework.web.bind.annotation.RestController;
21+
import org.springframework.web.multipart.MultipartFile;
22+
23+
import java.util.List;
24+
25+
@RestController
26+
@RequiredArgsConstructor
27+
@RequestMapping("/api/admin/places")
28+
public class AdminPlaceImageController {
29+
private final AdminPlaceImageService adminPlaceImageService;
30+
31+
@PostMapping(value = "/{placeId}/image", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
32+
@Operation(summary = "장소 사진 1장 추가",
33+
description = "장소 사진 1장 추가 저장")
34+
@ApiResponses(value = {
35+
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
36+
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
37+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
38+
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
39+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
40+
})
41+
public CommonResponse<SavePlaceImageRes> savePlaceImage(
42+
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId,
43+
@Parameter(description = "저장할 사진 파일") @RequestPart("image") MultipartFile image
44+
) {
45+
return CommonResponse.success(adminPlaceImageService.savePlaceImage(placeId, image));
46+
}
47+
48+
@PostMapping(value = "/{placeId}/images", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
49+
@Operation(summary = "장소 사진 여러장 새로 저장",
50+
description = "기존 장소 사진 전체 삭제 후 사진 여러장 새로 저장")
51+
@ApiResponses(value = {
52+
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
53+
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
54+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
55+
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
56+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
57+
})
58+
public CommonResponse<SavePlaceImageRes> savePlaceImageList(
59+
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId,
60+
@Parameter(description = "저장할 사진 파일 목록") @RequestPart("image") List<MultipartFile> images
61+
) {
62+
return CommonResponse.success(adminPlaceImageService.savePlaceImageList(placeId, images));
63+
}
64+
65+
@DeleteMapping(value = "/{placeId}/images")
66+
@Operation(summary = "장소 사진 전체 삭제",
67+
description = "장소 사진 전체 삭제")
68+
@ApiResponses(value = {
69+
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
70+
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
71+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
72+
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
73+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
74+
})
75+
public CommonResponse<DeletePlaceImageRes> deletePlaceImage(
76+
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId
77+
) {
78+
return CommonResponse.success(adminPlaceImageService.deletePlaceImage(placeId));
79+
}
80+
81+
@GetMapping("/{placeId}/image")
82+
@Operation(summary = "장소 사진 1장 검색",
83+
description = "장소 사진 1장 검색")
84+
@ApiResponses(value = {
85+
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
86+
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
87+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
88+
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
89+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
90+
})
91+
public CommonResponse<GetPlaceImageRes> getPlaceImage(
92+
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId
93+
) {
94+
return CommonResponse.success(adminPlaceImageService.searchPlaceImage(placeId));
95+
}
96+
97+
@GetMapping("/{placeId}/images")
98+
@Operation(summary = "장소 사진 여러 장 검색",
99+
description = "장소 사진 여러 장 검색")
100+
@ApiResponses(value = {
101+
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
102+
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
103+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
104+
@ApiResponse(responseCode = "401", description = "권한이 없습니다.",
105+
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
106+
})
107+
public CommonResponse<SearchPlaceImageListRes> getPlaceImageList(
108+
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId
109+
) {
110+
return CommonResponse.success(adminPlaceImageService.searchPlaceImageList(placeId));
111+
}
112+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package devkor.com.teamcback.domain.place.dto.response;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
6+
@Schema(description = "장소 사진 삭제 응답 dto")
7+
@JsonIgnoreProperties
8+
public class DeletePlaceImageRes {
9+
10+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package devkor.com.teamcback.domain.place.dto.response;
2+
3+
import devkor.com.teamcback.domain.place.entity.Place;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Getter;
6+
7+
@Schema(description = "장소 사진 검색 응답 dto")
8+
@Getter
9+
public class GetPlaceImageRes {
10+
private Long placeId;
11+
private String placeName;
12+
private String image;
13+
14+
public GetPlaceImageRes(Place place) {
15+
this.placeId = place.getId();
16+
this.placeName = place.getName();
17+
this.image = place.getImageUrl();
18+
}
19+
20+
public GetPlaceImageRes(Place place, String image) {
21+
this.placeId = place.getId();
22+
this.placeName = place.getName();
23+
this.image = image;
24+
}
25+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package devkor.com.teamcback.domain.place.dto.response;
2+
3+
import devkor.com.teamcback.domain.place.entity.Place;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Getter;
6+
7+
@Schema(description = "장소 사진 수정 완료")
8+
@Getter
9+
public class ModifyPlaceImageRes {
10+
private Long placeId;
11+
private String imageUrl;
12+
13+
public ModifyPlaceImageRes(Place place, String imageUrl) {
14+
this.placeId = place.getId();
15+
this.imageUrl = imageUrl;
16+
}
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package devkor.com.teamcback.domain.place.dto.response;
2+
3+
import devkor.com.teamcback.domain.place.entity.Place;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Getter;
6+
7+
@Schema(description = "장소 사진 저장 완료")
8+
@Getter
9+
public class SavePlaceImageRes {
10+
private Long placeId;
11+
private String imageUrl;
12+
13+
public SavePlaceImageRes(Place place, String imageUrl) {
14+
this.placeId = place.getId();
15+
this.imageUrl = imageUrl;
16+
}
17+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package devkor.com.teamcback.domain.place.dto.response;
2+
3+
import devkor.com.teamcback.domain.place.entity.Place;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Getter;
6+
7+
import java.util.List;
8+
9+
@Schema(description = "장소 사진 리스트 응답 dto")
10+
@Getter
11+
public class SearchPlaceImageListRes {
12+
private Long placeId;
13+
private String placeName;
14+
private List<SearchPlaceImageRes> imageList;
15+
16+
public SearchPlaceImageListRes(Place place, List<SearchPlaceImageRes> imageList) {
17+
this.placeId = place.getId();
18+
this.placeName = place.getName();
19+
this.imageList = imageList;
20+
}
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package devkor.com.teamcback.domain.place.dto.response;
2+
3+
import devkor.com.teamcback.domain.place.entity.Place;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.Getter;
6+
7+
@Schema(description = "장소 사진 검색 응답 dto")
8+
@Getter
9+
public class SearchPlaceImageRes {
10+
private String image;
11+
private Long sortNum;
12+
13+
public SearchPlaceImageRes(Place place) {
14+
this.image = place.getImageUrl();
15+
this.sortNum = 1L;
16+
}
17+
18+
public SearchPlaceImageRes(String image, Long sortNum) {
19+
this.image = image;
20+
this.sortNum = sortNum;
21+
}
22+
}

0 commit comments

Comments
 (0)