Skip to content

Commit

Permalink
[휴면 상태 변경] 휴면 지칭 용어 inactive로 일괄 수정(#57) (#82)
Browse files Browse the repository at this point in the history
* feat: 휴면 해제 비즈니스 로직 추가(#57)

* feat: 휴면 해제 API 추가(#57)

* refactor: 코드 정렬(#57)

* feat: 휴면 상태가 아닌 사용자 예외 추가(#57)

* feat: 휴면 해제 비즈니스 로직 수정(#57)

휴면 상태가 아닌 사용자에 대해서는 업데이트하지 않고 예외 처리토록
구성

* feat: 사용자 연관 API, 정상 처리시 응답 코드 200으로 일괄 변경(#57)

* feat: 요청 DTO 이름 적절히 변경(#57)

- 기존 이름은 휴면 해제도 가능하다는 의미를 포함하지 못한다고 판단
- 해당 DTO를 통해 휴면, 휴면 해제 요청이 모두 가능하다는 의미를 표현하기 위해 변경

* feat: 불필요하게 추가되었던 휴면 해제 관련 로직 삭제(#57)

* feat: 휴면 상태 변경 연관 로직 수정(#57)

dormant와 inactive로 휴면 상태를 다르게 지칭한 부분, inactive로 일괄 수정

* feat: 사용하지 않는 예외 삭제(#57)

* docs: 휴면 상태 변경 API, 명세 내용 수정(#57)
  • Loading branch information
Minjae-An authored May 14, 2024
1 parent 4dfda2d commit 159fb06
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 114 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import yeonba.be.mypage.dto.request.UserAllowNotificationsRequest;
import yeonba.be.mypage.dto.request.UserDormantRequest;
import yeonba.be.mypage.dto.request.UserChangeInactiveStatusRequest;
import yeonba.be.mypage.dto.request.UserUpdateProfileRequest;
import yeonba.be.mypage.dto.request.UserUpdateUnwantedAcquaintancesRequest;
import yeonba.be.mypage.dto.response.BlockedUsersResponse;
Expand Down Expand Up @@ -148,14 +148,14 @@ public ResponseEntity<CustomResponse<Void>> unblockUser(
.body(new CustomResponse<>());
}

@Operation(summary = "휴면 계정 전환", description = "계정의 휴면 상태를 전환할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "휴면 상태 전환 요청 정상 처리")
@PatchMapping("/users/dormant")
public ResponseEntity<CustomResponse<Void>> dormantUser(
@Operation(summary = "휴면 상태 변경", description = "회원의 휴면 상태를 변경할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "휴면 상태 변경 요청 정상 처리")
@PatchMapping("/users/inactive")
public ResponseEntity<CustomResponse<Void>> changeUserInactiveStatus(
@RequestAttribute("userId") long userId,
@Valid @RequestBody UserDormantRequest request) {
@Valid @RequestBody UserChangeInactiveStatusRequest request) {

myPageService.changeDormantStatus(userId, request);
myPageService.changeInactiveStatus(userId, request);

return ResponseEntity
.ok()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class UserDormantRequest {
public class UserChangeInactiveStatusRequest {

@Schema(description = "휴면 계정 상태", example = "true")
@NotNull(message = "휴면 계정 상태는 필수 입력 값입니다.")
private boolean status;
private boolean inactive;
}
6 changes: 3 additions & 3 deletions be/src/main/java/yeonba/be/mypage/service/MyPageService.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import yeonba.be.exception.GeneralException;
import yeonba.be.exception.UserException;
import yeonba.be.mypage.dto.request.UserDormantRequest;
import yeonba.be.mypage.dto.request.UserChangeInactiveStatusRequest;
import yeonba.be.mypage.dto.request.UserUpdateProfileRequest;
import yeonba.be.mypage.dto.response.BlockedUserResponse;
import yeonba.be.mypage.dto.response.BlockedUsersResponse;
Expand Down Expand Up @@ -210,10 +210,10 @@ public void unblockUser(long userId, long blockedUserId) {
}

@Transactional
public void changeDormantStatus(long userId, UserDormantRequest request) {
public void changeInactiveStatus(long userId, UserChangeInactiveStatusRequest request) {

User user = userQuery.findById(userId);
user.changeInactiveStatus(request.isStatus());
user.changeInactiveStatus(request.isInactive());
}

@Transactional
Expand Down
204 changes: 102 additions & 102 deletions be/src/main/java/yeonba/be/user/controller/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,106 +29,106 @@
@RequiredArgsConstructor
public class UserController {

private final BlockService blockService;
private final FavoriteService favoriteService;
private final ReportService reportService;
private final UserService userService;

@Operation(
summary = "이성(다른 사용자) 목록 조회",
description = "조건에 따라 다른 사용자 프로필 목록을 조회할 수 있습니다."
)
@ApiResponse(
responseCode = "200",
description = "이성 목록 정상 조회"
)
@GetMapping("/users")
public ResponseEntity<CustomResponse<UserQueryPageResponse>> users(
@ParameterObject UserQueryRequest request) {

return ResponseEntity
.ok()
.body(new CustomResponse<>());
}


@Operation(summary = "다른 사용자 프로필 조회", description = "다른 사용자의 프로필을 조회할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "사용자 프로필 정상 조회")
@GetMapping("/users/{userId}")
public ResponseEntity<CustomResponse<UserProfileResponse>> profile(
@RequestAttribute("userId") long userId,
@Parameter(description = "조회대상 사용자 ID", example = "1")
@PathVariable("userId") long targetUserId) {

UserProfileResponse response = userService.getTargetUserProfile(userId, targetUserId);

return ResponseEntity
.ok()
.body(new CustomResponse<>(response));
}

@Operation(summary = "즐겨찾기 등록", description = "다른 사용자를 자신의 즐겨찾기에 등록할 수 있습니다.")
@ApiResponse(responseCode = "202", description = "즐겨찾기 등록 정상 처리")
@PostMapping("/favorites/{userId}")
public ResponseEntity<CustomResponse<Void>> registerFavorite(
@RequestAttribute("userId") long userId,
@Parameter(description = "즐겨찾기에 등록될 사용자 ID", example = "1")
@PathVariable("userId") long favoriteUserId) {

favoriteService.addFavorite(userId, favoriteUserId);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}

@Operation(summary = "즐겨찾기 삭제", description = "즐겨찾기에 등록한 사용자를 삭제합니다.")
@ApiResponse(responseCode = "202", description = "즐겨찾기 삭제 정상 처리")
@DeleteMapping("/favorites/{userId}")
public ResponseEntity<CustomResponse<Void>> deleteFavorite(
@RequestAttribute("userId") long userId,
@Parameter(description = "즐겨찾기에서 삭제할 사용자 ID", example = "1")
@PathVariable("userId") long favoriteUserId) {

favoriteService.deleteFavorite(userId, favoriteUserId);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}


@Operation(summary = "사용자 신고", description = "다른 사용자를 신고할 수 있습니다.")
@ApiResponse(responseCode = "202", description = "신고 정상 처리")
@PostMapping("/users/{userId}/report")
public ResponseEntity<CustomResponse<Void>> report(
@RequestAttribute("userId") long userId,
@Parameter(description = "신고 대상 사용자 ID", example = "1")
@PathVariable("userId") long reportedUserId,
@RequestBody UserReportRequest request) {

reportService.makeReport(
userId,
reportedUserId,
request);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}

@Operation(summary = "차단하기", description = "다른 사용자를 차단할 수 있습니다.")
@ApiResponse(responseCode = "202", description = "차단 요청 정상 처리")
@PostMapping("/users/{userId}/block")
public ResponseEntity<CustomResponse<Void>> block(
@RequestAttribute("userId") long userId,
@Parameter(description = "차단하는 사용자 ID", example = "1")
@PathVariable("userId") long blockedUserId) {

blockService.block(userId, blockedUserId);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}
private final BlockService blockService;
private final FavoriteService favoriteService;
private final ReportService reportService;
private final UserService userService;

@Operation(
summary = "이성(다른 사용자) 목록 조회",
description = "조건에 따라 다른 사용자 프로필 목록을 조회할 수 있습니다."
)
@ApiResponse(
responseCode = "200",
description = "이성 목록 정상 조회"
)
@GetMapping("/users")
public ResponseEntity<CustomResponse<UserQueryPageResponse>> users(
@ParameterObject UserQueryRequest request) {

return ResponseEntity
.ok()
.body(new CustomResponse<>());
}


@Operation(summary = "다른 사용자 프로필 조회", description = "다른 사용자의 프로필을 조회할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "사용자 프로필 정상 조회")
@GetMapping("/users/{userId}")
public ResponseEntity<CustomResponse<UserProfileResponse>> profile(
@RequestAttribute("userId") long userId,
@Parameter(description = "조회대상 사용자 ID", example = "1")
@PathVariable("userId") long targetUserId) {

UserProfileResponse response = userService.getTargetUserProfile(userId, targetUserId);

return ResponseEntity
.ok()
.body(new CustomResponse<>(response));
}

@Operation(summary = "즐겨찾기 등록", description = "다른 사용자를 자신의 즐겨찾기에 등록할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "즐겨찾기 등록 정상 처리")
@PostMapping("/favorites/{userId}")
public ResponseEntity<CustomResponse<Void>> registerFavorite(
@RequestAttribute("userId") long userId,
@Parameter(description = "즐겨찾기에 등록될 사용자 ID", example = "1")
@PathVariable("userId") long favoriteUserId) {

favoriteService.addFavorite(userId, favoriteUserId);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}

@Operation(summary = "즐겨찾기 삭제", description = "즐겨찾기에 등록한 사용자를 삭제합니다.")
@ApiResponse(responseCode = "200", description = "즐겨찾기 삭제 정상 처리")
@DeleteMapping("/favorites/{userId}")
public ResponseEntity<CustomResponse<Void>> deleteFavorite(
@RequestAttribute("userId") long userId,
@Parameter(description = "즐겨찾기에서 삭제할 사용자 ID", example = "1")
@PathVariable("userId") long favoriteUserId) {

favoriteService.deleteFavorite(userId, favoriteUserId);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}


@Operation(summary = "사용자 신고", description = "다른 사용자를 신고할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "신고 정상 처리")
@PostMapping("/users/{userId}/report")
public ResponseEntity<CustomResponse<Void>> report(
@RequestAttribute("userId") long userId,
@Parameter(description = "신고 대상 사용자 ID", example = "1")
@PathVariable("userId") long reportedUserId,
@RequestBody UserReportRequest request) {

reportService.makeReport(
userId,
reportedUserId,
request);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}

@Operation(summary = "차단하기", description = "다른 사용자를 차단할 수 있습니다.")
@ApiResponse(responseCode = "200", description = "차단 요청 정상 처리")
@PostMapping("/users/{userId}/block")
public ResponseEntity<CustomResponse<Void>> block(
@RequestAttribute("userId") long userId,
@Parameter(description = "차단하는 사용자 ID", example = "1")
@PathVariable("userId") long blockedUserId) {

blockService.block(userId, blockedUserId);

return ResponseEntity
.accepted()
.body(new CustomResponse<>());
}
}

0 comments on commit 159fb06

Please sign in to comment.