Skip to content

Commit 094f79b

Browse files
authored
Merge pull request #40 from studio-recoding/feat-main-api
[🚀feat][🔧fix] 스케쥴 시간대 변경 API 개발, 반환하는 DTO의 스펙 수정
2 parents cfd6808 + d71d99a commit 094f79b

File tree

7 files changed

+61
-9
lines changed

7 files changed

+61
-9
lines changed

src/main/java/Ness/Backend/domain/schedule/ScheduleController.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import Ness.Backend.domain.member.entity.Member;
44
import Ness.Backend.domain.schedule.dto.request.PostScheduleDto;
5+
import Ness.Backend.domain.schedule.dto.request.PostScheduleTimeDto;
56
import Ness.Backend.domain.schedule.dto.response.GetOneMonthSchedulesDto;
67
import Ness.Backend.global.auth.AuthUser;
78
import io.swagger.v3.oas.annotations.Operation;
@@ -39,6 +40,13 @@ public ResponseEntity<GetOneMonthSchedulesDto> getUserSchedule(@AuthUser Member
3940
return new ResponseEntity<>(oneUserMonthSchedules, HttpStatusCode.valueOf(200));
4041
}
4142

43+
@PostMapping("/time")
44+
@Operation(summary = "특정 스케쥴의 시간을 바꾸는 API입니다.", description = "&month=2024-01 와 같은 형식으로 데이터가 전달됩니다.")
45+
public ResponseEntity<?> postUserScheduleTime(@AuthUser Member member, @RequestBody PostScheduleTimeDto postScheduleTimeDto){
46+
scheduleService.changeScheduleTime(member.getId(), postScheduleTimeDto);
47+
return new ResponseEntity<>(HttpStatusCode.valueOf(200));
48+
}
49+
4250
@PostMapping("/new")
4351
@Operation(summary = "새로운 스케쥴 내역", description = "새로운 스케쥴 내역 저장하는 API 입니다.")
4452
public ResponseEntity<Long> postUserSchedule(@AuthUser Member member, @RequestBody PostScheduleDto postScheduleDto){

src/main/java/Ness/Backend/domain/schedule/ScheduleRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@ List<Schedule> findOneMonthSchedulesByMember_Id(
2222
@Param("memberId") Long memberId,
2323
@Param("year") int year,
2424
@Param("month") int month);
25+
26+
//스케쥴 ID로 특정 스케쥴 찾아주기
27+
Schedule findScheduleById(Long scheduleId);
2528
}

src/main/java/Ness/Backend/domain/schedule/ScheduleService.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import Ness.Backend.domain.member.entity.Member;
55
import Ness.Backend.domain.schedule.dto.request.PostFastApiScheduleDto;
66
import Ness.Backend.domain.schedule.dto.request.PostScheduleDto;
7+
import Ness.Backend.domain.schedule.dto.request.PostScheduleTimeDto;
78
import Ness.Backend.domain.schedule.dto.response.GetOneMonthSchedulesDto;
89
import Ness.Backend.domain.schedule.dto.response.GetScheduleDetailDto;
910
import Ness.Backend.domain.schedule.dto.response.GetScheduleDto;
@@ -24,12 +25,13 @@
2425
@Service
2526
@RequiredArgsConstructor
2627
@Slf4j
27-
@Transactional(readOnly = true)
28+
@Transactional
2829
public class ScheduleService {
2930
private final ScheduleRepository scheduleRepository;
3031
private final MemberRepository memberRepository;
3132
private final FastApiScheduleApi fastApiScheduleApi;
3233

34+
@Transactional(readOnly = true)
3335
public GetOneMonthSchedulesDto getOneMonthUserSchedule(Long id, String date){
3436
log.info("getOneMonthUserSchedule called by "+ id);
3537
// 년도, 월, 일 추출
@@ -42,13 +44,13 @@ public GetOneMonthSchedulesDto getOneMonthUserSchedule(Long id, String date){
4244
// ScheduleListResponseDto에 매핑
4345
List<GetScheduleDto> getScheduleDtos = scheduleList.stream()
4446
.map(schedule -> GetScheduleDto.builder()
47+
.id(schedule.getId())
4548
.category(schedule.getCategory().getName())
4649
.categoryNum(schedule.getCategory().getId())
4750
.info(schedule.getInfo())
4851
.startTime(schedule.getStartTime())
4952
.endTime(schedule.getEndTime())
5053
.details(GetScheduleDetailDto.builder()
51-
.id(schedule.getId())
5254
.person(schedule.getPerson())
5355
.location(schedule.getLocation())
5456
.build())
@@ -57,7 +59,11 @@ public GetOneMonthSchedulesDto getOneMonthUserSchedule(Long id, String date){
5759
return new GetOneMonthSchedulesDto(getScheduleDtos);
5860
}
5961

60-
@Transactional
62+
public void changeScheduleTime(Long id, PostScheduleTimeDto postScheduleTimeDto){
63+
Schedule schedule = scheduleRepository.findScheduleById(postScheduleTimeDto.getId());
64+
schedule.changeTime(postScheduleTimeDto.getStartTime(), postScheduleTimeDto.getEndTime());
65+
}
66+
6167
public Long postNewUserSchedule(Long id, PostScheduleDto postScheduleDto){
6268
log.info("postNewUserSchedule called by "+ id);
6369
Member memberEntity = memberRepository.findMemberById(id);
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package Ness.Backend.domain.schedule.dto.request;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import io.swagger.v3.oas.annotations.media.Schema;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.NoArgsConstructor;
9+
10+
import java.time.ZonedDateTime;
11+
12+
@Data
13+
@NoArgsConstructor
14+
@AllArgsConstructor
15+
@Builder
16+
public class PostScheduleTimeDto {
17+
@Schema(description = "스케쥴의 DB 기본키", example = "1")
18+
@JsonProperty("id")
19+
private Long id;
20+
21+
@Schema(description = "스케쥴 시작 시간", example = "2024-03-08T15:07:27.056103+09:00")
22+
@JsonProperty("start")
23+
private ZonedDateTime startTime;
24+
25+
@Schema(description = "스케쥴 끝 시간", example = "2024-03-08T15:07:27.056103+09:00")
26+
@JsonProperty("end")
27+
private ZonedDateTime endTime;
28+
}

src/main/java/Ness/Backend/domain/schedule/dto/response/GetScheduleDetailDto.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,14 @@
99
@Data
1010
@NoArgsConstructor
1111
public class GetScheduleDetailDto {
12-
@Schema(description = "스케쥴 고유 인식 넘버", example = "0")
13-
private Long id;
14-
1512
@Schema(description = "스케쥴 위치", example = "이화여대 ECC")
1613
private String location;
1714

1815
@Schema(description = "스케쥴 사람", example = "홍길동")
1916
private String person;
2017

2118
@Builder
22-
public GetScheduleDetailDto(Long id, String location, String person){
23-
this.id = id;
19+
public GetScheduleDetailDto(String location, String person){
2420
this.location = location;
2521
this.person = person;
2622
}

src/main/java/Ness/Backend/domain/schedule/dto/response/GetScheduleDto.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
@Data
1212
@NoArgsConstructor
1313
public class GetScheduleDto {
14+
@Schema(description = "스케쥴 고유 인식 넘버", example = "0")
15+
private Long id;
16+
1417
@Schema(description = "스케쥴 텍스트 내용", example = "AI 공부")
1518
@JsonProperty("title")
1619
private String info;
@@ -36,7 +39,10 @@ public class GetScheduleDto {
3639
private GetScheduleDetailDto details;
3740

3841
@Builder
39-
public GetScheduleDto(String category, Long categoryNum, String info, ZonedDateTime startTime, ZonedDateTime endTime, GetScheduleDetailDto details){
42+
public GetScheduleDto(Long id, String category, Long categoryNum,
43+
String info, ZonedDateTime startTime, ZonedDateTime endTime,
44+
GetScheduleDetailDto details){
45+
this.id = id;
4046
this.category = category;
4147
this.categoryNum = categoryNum;
4248
this.info = info;

src/main/java/Ness/Backend/domain/schedule/entity/Schedule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,9 @@ public Schedule(Long id, String info, String location, String person, ZonedDateT
5454
this.chat = chat;
5555
}
5656

57+
public void changeTime(ZonedDateTime startTime, ZonedDateTime endTime){
58+
this.startTime = startTime;
59+
this.endTime = endTime;
60+
}
61+
5762
}

0 commit comments

Comments
 (0)