diff --git a/src/main/java/com/hobak/happinessql/domain/activity/api/ActivityController.java b/src/main/java/com/hobak/happinessql/domain/activity/api/ActivityController.java index fba02c0..4c039ca 100644 --- a/src/main/java/com/hobak/happinessql/domain/activity/api/ActivityController.java +++ b/src/main/java/com/hobak/happinessql/domain/activity/api/ActivityController.java @@ -2,9 +2,8 @@ import com.hobak.happinessql.domain.activity.application.ActivityCreateService; import com.hobak.happinessql.domain.activity.application.ActivityDeleteService; -import com.hobak.happinessql.domain.activity.dto.ActivityCreateRequestDto; -import com.hobak.happinessql.domain.activity.dto.ActivityCreateResponseDto; -import com.hobak.happinessql.domain.activity.dto.ActivityListResponseDto; +import com.hobak.happinessql.domain.activity.application.ActivityUpdateService; +import com.hobak.happinessql.domain.activity.dto.*; import com.hobak.happinessql.domain.activity.application.ActivityListService; import com.hobak.happinessql.global.response.DataResponseDto; import lombok.RequiredArgsConstructor; @@ -18,7 +17,7 @@ public class ActivityController { private final ActivityListService activityListService; private final ActivityCreateService activityCreateService; private final ActivityDeleteService activityDeleteService; - + private final ActivityUpdateService activityUpdateService; @GetMapping public DataResponseDto getActivitiesByUserId(@RequestParam Long userId) { ActivityListResponseDto response = activityListService.getActivitiesByUserId(userId); @@ -34,4 +33,9 @@ public Long deleteActivity(@PathVariable Long activityId){ activityDeleteService.deleteActivity(activityId); return activityId; } + @PutMapping("/{activityId}") + public DataResponseDto updateActicity(@PathVariable Long activityId, @RequestBody ActivityUpdateRequestDto requestDto){ + ActivityUpdateResponseDto responseDto = activityUpdateService.updateActivity(activityId,requestDto); + return DataResponseDto.of(responseDto,"활동을 성공적으로 수정했습니다."); + } } \ No newline at end of file diff --git a/src/main/java/com/hobak/happinessql/domain/activity/application/ActivityUpdateService.java b/src/main/java/com/hobak/happinessql/domain/activity/application/ActivityUpdateService.java new file mode 100644 index 0000000..a7e2592 --- /dev/null +++ b/src/main/java/com/hobak/happinessql/domain/activity/application/ActivityUpdateService.java @@ -0,0 +1,26 @@ +package com.hobak.happinessql.domain.activity.application; + +import com.hobak.happinessql.domain.activity.converter.ActivityConverter; +import com.hobak.happinessql.domain.activity.domain.Activity; +import com.hobak.happinessql.domain.activity.dto.ActivityUpdateRequestDto; +import com.hobak.happinessql.domain.activity.dto.ActivityUpdateResponseDto; +import com.hobak.happinessql.domain.activity.exception.ActivityNotFoundException; +import com.hobak.happinessql.domain.activity.repository.ActivityRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@Transactional +@RequiredArgsConstructor +public class ActivityUpdateService { + private final ActivityRepository activityRepository; + + public ActivityUpdateResponseDto updateActivity(Long activityId, ActivityUpdateRequestDto requestDto){ + Activity activity = activityRepository.findById(activityId) + .orElseThrow(()-> new ActivityNotFoundException("Activity with id " + activityId)); + activity.updateName(requestDto.getName()); + return ActivityConverter.toActivityUpdateResponseDto(activity); + } + +} diff --git a/src/main/java/com/hobak/happinessql/domain/activity/converter/ActivityConverter.java b/src/main/java/com/hobak/happinessql/domain/activity/converter/ActivityConverter.java index 6c42350..d9ca745 100644 --- a/src/main/java/com/hobak/happinessql/domain/activity/converter/ActivityConverter.java +++ b/src/main/java/com/hobak/happinessql/domain/activity/converter/ActivityConverter.java @@ -4,6 +4,7 @@ import com.hobak.happinessql.domain.activity.domain.Category; import com.hobak.happinessql.domain.activity.dto.ActivityCreateResponseDto; import com.hobak.happinessql.domain.activity.dto.ActivityDto; +import com.hobak.happinessql.domain.activity.dto.ActivityUpdateResponseDto; import com.hobak.happinessql.domain.activity.dto.CategoryDto; import java.util.List; @@ -38,4 +39,12 @@ public static ActivityCreateResponseDto toActivityCreateResponseDto(Long activit .activityId(activityId) .build(); } + public static ActivityUpdateResponseDto toActivityUpdateResponseDto(Activity activity){ + return ActivityUpdateResponseDto.builder() + .categoryId(activity.getCategory().getCategoryId()) + .categoryName(activity.getCategory().getName()) + .activityId(activity.getActivityId()) + .activityName(activity.getName()) + .build(); + } } \ No newline at end of file diff --git a/src/main/java/com/hobak/happinessql/domain/activity/domain/Activity.java b/src/main/java/com/hobak/happinessql/domain/activity/domain/Activity.java index 3560dc7..c592166 100644 --- a/src/main/java/com/hobak/happinessql/domain/activity/domain/Activity.java +++ b/src/main/java/com/hobak/happinessql/domain/activity/domain/Activity.java @@ -40,5 +40,8 @@ public Activity(Long activityId, String name, Category category) { this.name = name; this.category = category; } + public void updateName(String name){ + this.name = name; + } } diff --git a/src/main/java/com/hobak/happinessql/domain/activity/dto/ActivityUpdateRequestDto.java b/src/main/java/com/hobak/happinessql/domain/activity/dto/ActivityUpdateRequestDto.java new file mode 100644 index 0000000..4636ed5 --- /dev/null +++ b/src/main/java/com/hobak/happinessql/domain/activity/dto/ActivityUpdateRequestDto.java @@ -0,0 +1,16 @@ +package com.hobak.happinessql.domain.activity.dto; + +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class ActivityUpdateRequestDto { + String name; + @Builder + ActivityUpdateRequestDto(String name){ + this.name = name; + } +} diff --git a/src/main/java/com/hobak/happinessql/domain/activity/dto/ActivityUpdateResponseDto.java b/src/main/java/com/hobak/happinessql/domain/activity/dto/ActivityUpdateResponseDto.java new file mode 100644 index 0000000..a7a8386 --- /dev/null +++ b/src/main/java/com/hobak/happinessql/domain/activity/dto/ActivityUpdateResponseDto.java @@ -0,0 +1,22 @@ +package com.hobak.happinessql.domain.activity.dto; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) + +public class ActivityUpdateResponseDto { + private Long categoryId; + private String categoryName; + private Long activityId; + private String activityName; + @Builder + ActivityUpdateResponseDto(Long categoryId, String categoryName, Long activityId, String activityName){ + this.categoryId = categoryId; + this.categoryName = categoryName; + this.activityId = activityId; + this.activityName = activityName; + } +}