Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
d903815
Feat: 편의시설 전체 조회 시 음식점 리뷰 관련 내용 추가
dlwls423 Jan 12, 2026
828b876
Update cd-dev.yml
dlwls423 Jan 15, 2026
ae12717
Update cd-dev.yml
dlwls423 Jan 15, 2026
8ae5243
Update cd.yml
dlwls423 Jan 15, 2026
1aac47f
Fix: 썸네일 업로드 파일명 수정
dlwls423 Jan 23, 2026
e58a5cc
Feat: 장소 리뷰 상세조회
dlwls423 Jan 23, 2026
16efdc1
Fix: 건물, 장소의 대표 이미지 썸네일 -> 원본 수정
dlwls423 Jan 23, 2026
56b4aa0
Feat: 리뷰 사진 추가 조회 api
dlwls423 Jan 23, 2026
04b41cb
Feat: 리뷰 작성 api
dlwls423 Jan 24, 2026
d66af74
Feat: 리뷰 수정 api
dlwls423 Jan 25, 2026
198e336
Feat: 리뷰 삭제 api
dlwls423 Jan 25, 2026
57b1777
Feat: 리뷰 단일 조회 api
dlwls423 Jan 25, 2026
2786959
Feat: 리뷰 태그 목록 조회 api
dlwls423 Jan 25, 2026
95915e0
Fix: 음식점 종류를 enum에서 String으로 수정
dlwls423 Jan 26, 2026
3e53aaa
Merge pull request #260 from DevKor-github/feat/review
dlwls423 Jan 26, 2026
8f3a2b4
ble imageurl 추가 및 place 이미지 추가 기능
danbaram0420 Feb 3, 2026
68bd357
Feat: 장소 사진 여러 장 수정 추가
dlwls423 Feb 4, 2026
3e36a55
Merge pull request #261 from DevKor-github/feat/ble3
dlwls423 Feb 4, 2026
530e43c
Fix: 평일을 요일(월-금)으로 변경
dlwls423 Feb 9, 2026
09281d9
Feat: 장소 운영시간 수정
dlwls423 Feb 9, 2026
7a71c1a
Feat: 장소의 조건별 운영시간 저장
dlwls423 Feb 9, 2026
e6c61d9
Feat: 신고 엔티티 추가
dlwls423 Feb 9, 2026
65ff60c
Feat: 신고 생성
dlwls423 Feb 10, 2026
212f334
Feat: 사용자 리뷰 신고된 여부, 내역 조회
dlwls423 Feb 10, 2026
2a1a45a
Feat: 관리자 신고 내역 조회
dlwls423 Feb 10, 2026
aefe1b1
Feat: 관리자 신고 상태 수정
dlwls423 Feb 10, 2026
f7c09be
Feat: 신고 유효일 검사 스케줄러 추가
dlwls423 Feb 10, 2026
d884a2a
levelup 및 point 리턴 구조 수정
danbaram0420 Feb 11, 2026
943cf54
점수 획득 여부 리턴하도록 수정
danbaram0420 Feb 11, 2026
041b0d6
노션에 맞게 수정: bookmark 포인트 삭제, suggestion 포인트횟수 제한
danbaram0420 Feb 11, 2026
37eb51f
Merge pull request #262 from DevKor-github/feat/operating-time
dlwls423 Feb 21, 2026
ec6ead8
Merge pull request #263 from DevKor-github/feat/report
dlwls423 Feb 21, 2026
a45467b
review 점수로직 반영 및 중복리뷰 반영
danbaram0420 Feb 25, 2026
1618a63
Merge branch 'develop' into feat/points
danbaram0420 Feb 25, 2026
f0518ce
Update Review.java
danbaram0420 Feb 25, 2026
a6c8b2d
Merge pull request #264 from DevKor-github/feat/points
dlwls423 Feb 25, 2026
91c7d46
Fix: 임시 음식점, 카페, 편의점도 리뷰 조회 가능하도록 수정
dlwls423 Feb 25, 2026
023f049
Merge pull request #265 from DevKor-github/fix/review
dlwls423 Feb 25, 2026
6200abe
Fix: 리뷰 작성 제한 수정
dlwls423 Feb 25, 2026
0103d28
Merge pull request #266 from DevKor-github/fix/review
dlwls423 Feb 25, 2026
6df4281
Fix: 리뷰, 신고 오류 수정
dlwls423 Feb 26, 2026
169c3b9
Merge pull request #267 from DevKor-github/fix/review
dlwls423 Feb 26, 2026
774cea8
Fix: 신고 이유 label로 반환하도록 수정
dlwls423 Feb 26, 2026
4c77e87
Merge pull request #268 from DevKor-github/fix/review
dlwls423 Feb 26, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/cd-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
with:
host: ${{ secrets.HOST_NAME }}
username: ${{ secrets.USER_NAME }}
password: ${{ secrets.USER_PASSWORD }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.PORT }}
script: |
docker pull ${{ secrets.DOCKER_USER }}/kodaero:latest
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
with:
host: ${{ secrets.HOST_NAME }}
username: ${{ secrets.USER_NAME }}
password: ${{ secrets.USER_PASSWORD }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.PORT }}
script: |
docker pull ${{ secrets.DOCKER_USER }}/kodaero:latest
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,7 @@ out/

### 환경 변수 ###
.env

###claude###
.claude
.serena
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
@@ -1,9 +1,6 @@
package devkor.com.teamcback.domain.bookmark.dto.response;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import devkor.com.teamcback.domain.bookmark.entity.Bookmark;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;

@JsonIgnoreProperties
public class CreateBookmarkRes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ public class BookmarkService {
* 즐겨찾기 업데이트
*/
@Transactional
@UpdateScore(addScore = 1)
public CreateBookmarkRes createBookmark(Long userId, CreateBookmarkReq req) {
User user = findUser(userId);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
package devkor.com.teamcback.domain.common.repository;

import devkor.com.teamcback.domain.common.entity.File;
import devkor.com.teamcback.domain.review.repository.CustomFileRepository;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface FileRepository extends JpaRepository<File, Long> {
public interface FileRepository extends JpaRepository<File, Long>, CustomFileRepository {
List<File> findAllByFileUuid(String fileUuid);

List<File> findTop10AllByFileUuidOrderBySortNumAsc(String fileUuid);

List<File> findTop5AllByFileUuidOrderBySortNumAsc(String fileUuid);

List<File> findTop3AllByFileUuidOrderBySortNumAsc(String fileUuid);

File findByFileUuidAndSortNum(String fileUuid, Long sortNum);

boolean existsByFileUuid(String fileUuid);
}
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public void uploadThumb(File savedFile, MultipartFile file, Integer width, Integ
InputStream inputStream = new ByteArrayInputStream(os.toByteArray());

// 저장
String thumbSavedName = s3Util.uploadFile(inputStream, savedFile.getFileUuid(), filePath, file.getContentType());
String thumbSavedName = s3Util.uploadFile(inputStream, savedFile.getFileOriginalName(), filePath, file.getContentType());
savedFile.setThumbSavedName(thumbSavedName);
}

Expand Down Expand Up @@ -167,6 +167,22 @@ public void deleteFile(String fileUuid) {
fileRepository.deleteAll(savedFileList);
}

public List<File> getFiles(String fileUuid) {
return fileRepository.findAllByFileUuid(fileUuid);
}

public List<File> getTop10Files(String fileUuid) {
return fileRepository.findTop10AllByFileUuidOrderBySortNumAsc(fileUuid);
}

public List<File> getTop5Files(String fileUuid) {
return fileRepository.findTop5AllByFileUuidOrderBySortNumAsc(fileUuid);
}

public List<File> getTop3Files(String fileUuid) {
return fileRepository.findTop3AllByFileUuidOrderBySortNumAsc(fileUuid);
}

public List<String> getOriginalFiles(String fileUuid) {
List<String> fileList = fileRepository.findAllByFileUuid(fileUuid).stream().map(File::getFileSavedName).toList();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package devkor.com.teamcback.domain.operatingtime.controller;

import devkor.com.teamcback.domain.operatingtime.dto.request.SavePlaceOperatingTimeConditionReq;
import devkor.com.teamcback.domain.operatingtime.dto.request.SavePlaceOperatingTimeReq;
import devkor.com.teamcback.domain.operatingtime.dto.response.GetPlaceOperatingTimeRes;
import devkor.com.teamcback.domain.operatingtime.dto.response.SavePlaceOperatingTimeConditionRes;
import devkor.com.teamcback.domain.operatingtime.dto.response.SavePlaceOperatingTimeRes;
import devkor.com.teamcback.domain.operatingtime.service.AdminOperatingTimeService;
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 jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/admin/operating-time")
public class AdminOperatingTimeController {
private final AdminOperatingTimeService adminOperatingTimeService;

@GetMapping("/places/{placeId}")
@Operation(summary = "장소의 운영시간 검색",
description = "장소 id로 운영시간 검색")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<GetPlaceOperatingTimeRes> getPlaceOperatingTime(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId) {
return CommonResponse.success(adminOperatingTimeService.getPlaceOperatingTime(placeId));
}

@PutMapping("/places/{placeId}")
@Operation(summary = "장소의 운영시간 저장",
description = "장소가 각 요일별로 고정된 운영시간을 가지는 경우(00:00-00:00 형식 포함)")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<SavePlaceOperatingTimeRes> savePlaceOperatingTime(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId,
@Parameter(description = "요일별 운영 시간") @RequestBody SavePlaceOperatingTimeReq req) {
return CommonResponse.success(adminOperatingTimeService.savePlaceOperatingTime(placeId, req));
}

@PostMapping("/places/{placeId}")
@Operation(summary = "장소의 조건 및 운영시간 저장(별도로 요일별 대표 운영 시간도 저장해야 함)",
description = "장소가 조건에 따라 유동적인 운영시간을 가지는 경우")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "정상 처리 되었습니다."),
@ApiResponse(responseCode = "404", description = "장소를 찾을 수 없습니다.",
content = @Content(schema = @Schema(implementation = CommonResponse.class))),
})
public CommonResponse<SavePlaceOperatingTimeConditionRes> savePlaceOperatingTimeCondition(
@Parameter(name = "placeId", description = "장소 ID") @PathVariable Long placeId,
@Parameter(description = "조건 및 운영 시간") @RequestBody @Valid SavePlaceOperatingTimeConditionReq req) {
return CommonResponse.success(adminOperatingTimeService.savePlaceOperatingTimeCondition(placeId, req));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package devkor.com.teamcback.domain.operatingtime.dto.request;

import devkor.com.teamcback.domain.operatingtime.entity.DayOfWeek;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Getter;
import lombok.Setter;

import java.util.List;

@Schema(description = "저장할 운영시간 정보(상관없는 조건은 null로 표시)")
@Getter
@Setter
public class SavePlaceOperatingTimeConditionReq {
@Schema(description = "요일", example = "WEEKDAY")
private DayOfWeek dayOfWeek;
@Schema(description = "짝수주 여부", example = "null")
private Boolean isEvenWeek;
@Schema(description = "공휴일 여부", example = "false")
private Boolean isHoliday;
@Schema(description = "방학 여부", example = "null")
private Boolean isVacation;
@Schema(description = "조건에 해당하는 운영시간 목록")
@NotEmpty(message = "최소 1개의 운영시간이 있어야 합니다.")
private List<SavePlaceOperatingTimeConditionTimeReq> timeList;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package devkor.com.teamcback.domain.operatingtime.dto.request;

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class SavePlaceOperatingTimeConditionTimeReq {
@Min(value = 0)
@Max(value = 23)
private int StartHour;
@Min(value = 0)
@Max(value = 59)
private int StartMinute;
@Min(value = 0)
@Max(value = 23)
private int endHour;
@Min(value = 0)
@Max(value = 59)
private int endMinute;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package devkor.com.teamcback.domain.operatingtime.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

@Schema(description = "저장할 운영시간 정보")
@Getter
@Setter
public class SavePlaceOperatingTimeReq {
@Schema(description = "평일 운영시간", example = "09:00-21:00")
private String weekDayOperatingTime;
@Schema(description = "월요일 운영시간(평일 모두 같다면 없어도 됨)", example = "09:00-21:00")
private String mondayOperatingTime;
@Schema(description = "화요일 운영시간(평일 모두 같다면 없어도 됨)", example = "09:00-21:00")
private String tuesdayOperatingTime;
@Schema(description = "수요일 운영시간(평일 모두 같다면 없어도 됨)", example = "09:00-21:00")
private String wednesdayOperatingTime;
@Schema(description = "목요일 운영시간(평일 모두 같다면 없어도 됨)", example = "09:00-21:00")
private String thursdayOperatingTime;
@Schema(description = "금요일 운영시간(평일 모두 같다면 없어도 됨)", example = "09:00-21:00")
private String fridayOperatingTime;
@Schema(description = "토요일 운영시간", example = "09:00-20:00")
private String saturdayOperatingTime;
@Schema(description = "일요일 운영시간", example = "휴무")
private String sundayOperatingTime;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package devkor.com.teamcback.domain.operatingtime.dto.response;

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

@Getter
public class GetPlaceOperatingTimeRes {
private Long placeId;
private String placeName;
private String todayOperatingTime;
private String weekDayOperatingTime;
private String mondayOperatingTime;
private String tuesdayOperatingTime;
private String wednesdayOperatingTime;
private String thursdayOperatingTime;
private String fridayOperatingTime;
private String saturdayOperatingTime;
private String sundayOperatingTime;


public GetPlaceOperatingTimeRes(Place place) {
this.placeId = place.getId();
this.placeName = place.getName();
this.todayOperatingTime = place.getOperatingTime();
this.weekDayOperatingTime = place.getWeekdayOperatingTime();
this.mondayOperatingTime = place.getMondayOperatingTime();
this.tuesdayOperatingTime = place.getTuesdayOperatingTime();
this.wednesdayOperatingTime = place.getWednesdayOperatingTime();
this.thursdayOperatingTime = place.getThursdayOperatingTime();
this.fridayOperatingTime = place.getFridayOperatingTime();
this.saturdayOperatingTime = place.getSaturdayOperatingTime();
this.sundayOperatingTime = place.getSundayOperatingTime();
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package devkor.com.teamcback.domain.operatingtime.dto;
package devkor.com.teamcback.domain.operatingtime.dto.response;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
Expand All @@ -16,7 +16,7 @@ public class HolidayResDto {
public HolidayResDto(JSONObject itemJson) {
this.name = itemJson.getString("dateName");
String holidayOrNot = itemJson.getString("isHoliday");
this.isHoliday = holidayOrNot.equals("Y") ? true : false;
this.isHoliday = holidayOrNot.equals("Y");
String dateString = itemJson.getBigInteger("locdate").toString();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
this.date = LocalDate.parse(dateString, formatter);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package devkor.com.teamcback.domain.operatingtime.dto.response;

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

@Schema(description = "장소 운영시간 저장 완료")
@JsonIgnoreProperties
public class SavePlaceOperatingTimeConditionRes {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package devkor.com.teamcback.domain.operatingtime.dto.response;

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

@Schema(description = "장소 운영시간 저장 완료")
@JsonIgnoreProperties
public class SavePlaceOperatingTimeRes {
}
Loading
Loading