diff --git a/src/main/java/com/bit/lotte/flower/user/admin/http/feign/GetUserApplicationsByStatusFeignRequest.java b/src/main/java/com/bit/lotte/flower/user/admin/http/feign/GetUserApplicationsByStatusFeignRequest.java index 524de8a..d5642fc 100644 --- a/src/main/java/com/bit/lotte/flower/user/admin/http/feign/GetUserApplicationsByStatusFeignRequest.java +++ b/src/main/java/com/bit/lotte/flower/user/admin/http/feign/GetUserApplicationsByStatusFeignRequest.java @@ -1,5 +1,6 @@ package com.bit.lotte.flower.user.admin.http.feign; +import bloomingblooms.response.CommonResponse; import com.bit.lotte.flower.user.common.valueobject.StoreManagerStatus; import java.util.List; import org.springframework.cloud.openfeign.FeignClient; @@ -8,8 +9,7 @@ @FeignClient(name = "get-store-manager-applications", url = "${service.auth.domain}") public interface GetUserApplicationsByStatusFeignRequest { - @GetMapping("/store-manager/{status}") - public List getStoreManagerApplications(@PathVariable StoreManagerStatus status); + public CommonResponse> getStoreManagerApplications(@PathVariable StoreManagerStatus status); } diff --git a/src/main/java/com/bit/lotte/flower/user/admin/http/message/GetUserApplicationByIdRequestImpl.java b/src/main/java/com/bit/lotte/flower/user/admin/http/message/GetUserApplicationByIdRequestImpl.java index af4843d..a0fec9f 100644 --- a/src/main/java/com/bit/lotte/flower/user/admin/http/message/GetUserApplicationByIdRequestImpl.java +++ b/src/main/java/com/bit/lotte/flower/user/admin/http/message/GetUserApplicationByIdRequestImpl.java @@ -16,6 +16,6 @@ public class GetUserApplicationByIdRequestImpl implements @Override public List request(StoreManagerStatus storeManagerStatus) { - return feignRequest.getStoreManagerApplications(storeManagerStatus); + return feignRequest.getStoreManagerApplications(storeManagerStatus).getData(); } } diff --git a/src/main/java/com/bit/lotte/flower/user/common/entity/BaseEntity.java b/src/main/java/com/bit/lotte/flower/user/common/entity/BaseEntity.java index 0da46ab..df3b4a7 100644 --- a/src/main/java/com/bit/lotte/flower/user/common/entity/BaseEntity.java +++ b/src/main/java/com/bit/lotte/flower/user/common/entity/BaseEntity.java @@ -4,6 +4,7 @@ import javax.persistence.Column; import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; +import javax.persistence.PrePersist; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; @@ -14,15 +15,22 @@ @EntityListeners(AuditingEntityListener.class) public class BaseEntity { - @CreatedDate - @Column(name = "created_at") - private LocalDateTime createdAt; + @CreatedDate + @Column(name = "created_at") + private LocalDateTime createdAt; - @LastModifiedDate - @Column(name = "updated_at") - private LocalDateTime updatedAt; + @LastModifiedDate + @Column(name = "updated_at") + private LocalDateTime updatedAt; - @Column(name = "is_deleted") - private Boolean isDeleted; -} + @Column(name = "is_deleted") + private Boolean isDeleted; + @PrePersist + public void prePersist() { + this.createdAt = LocalDateTime.now(); + this.updatedAt = LocalDateTime.now(); + this.isDeleted = false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/bit/lotte/flower/user/social/entity/SocialUser.java b/src/main/java/com/bit/lotte/flower/user/social/entity/SocialUser.java index f7c0ef9..333b5b6 100644 --- a/src/main/java/com/bit/lotte/flower/user/social/entity/SocialUser.java +++ b/src/main/java/com/bit/lotte/flower/user/social/entity/SocialUser.java @@ -20,6 +20,7 @@ public class SocialUser extends BaseEntity{ @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Long oauthId; private String email; diff --git a/src/main/java/com/bit/lotte/flower/user/social/http/controller/SocialUserRestController.java b/src/main/java/com/bit/lotte/flower/user/social/http/controller/SocialUserRestController.java index 1c752f5..0d85604 100644 --- a/src/main/java/com/bit/lotte/flower/user/social/http/controller/SocialUserRestController.java +++ b/src/main/java/com/bit/lotte/flower/user/social/http/controller/SocialUserRestController.java @@ -30,15 +30,8 @@ public class SocialUserRestController { private final GetUserLikesCntRequest getUserLikesCntRequest; private final GetUserCouponCntRequest getUserCouponCntRequest; private final GetUserInfoServiceImpl getUserInfoServiceImpl; - private final SocialUserLoginManager socialUserLoginManager; private final SocialUpdateUserService socialUserService; - @PostMapping("/social") - public ResponseEntity userLogin( - @RequestBody UserLoginCommand userLoginCommand) { - UserLoginDataResponse response = socialUserLoginManager.process(userLoginCommand); - return ResponseEntity.ok(response); - } @PutMapping("/social/phone-number") public CommonResponse userPhoneNumberUpdate( @@ -61,7 +54,6 @@ public CommonResponse updateUserData(@RequestHeader Long userId, socialUserService.updateUserInfo(userId, command.getNickname(), command.getEmail(), command.getPhoneNumber()); return CommonResponse.success("업데이트 성공"); - } private UserMypageResponse getUserMypageResponse(UserDataDto userDataDto, Long likesCnt, diff --git a/src/main/java/com/bit/lotte/flower/user/social/http/feign/UserFeignController.java b/src/main/java/com/bit/lotte/flower/user/social/http/feign/UserFeignController.java new file mode 100644 index 0000000..81c3110 --- /dev/null +++ b/src/main/java/com/bit/lotte/flower/user/social/http/feign/UserFeignController.java @@ -0,0 +1,39 @@ +package com.bit.lotte.flower.user.social.http.feign; + +import bloomingblooms.response.CommonResponse; +import com.bit.lotte.flower.user.common.valueobject.UserId; +import com.bit.lotte.flower.user.social.dto.command.UserLoginCommand; +import com.bit.lotte.flower.user.social.dto.response.UserLoginDataResponse; +import com.bit.lotte.flower.user.social.service.SocialUserLoginManager; +import com.bit.lotte.flower.user.social.service.SoftDeleteStrategyService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +@RequiredArgsConstructor +@RestController +public class UserFeignController { + + private final SoftDeleteStrategyService softDeleteStrategyService; + private final SocialUserLoginManager socialUserLoginManager; + + + @PostMapping("/client/social") + public CommonResponse userLogin( + @RequestBody UserLoginCommand userLoginCommand) { + UserLoginDataResponse response = socialUserLoginManager.process(userLoginCommand); + return CommonResponse.success(response); + } + + + @PutMapping("/client/users/{userId}") + CommonResponse delete(@PathVariable Long userId) { + softDeleteStrategyService.userWithdrawal(new UserId(userId)); + return CommonResponse.success(Boolean.TRUE); + } + +} diff --git a/src/main/java/com/bit/lotte/flower/user/social/mapper/SocialUserMapper.java b/src/main/java/com/bit/lotte/flower/user/social/mapper/SocialUserMapper.java index c3b0508..722c6cc 100644 --- a/src/main/java/com/bit/lotte/flower/user/social/mapper/SocialUserMapper.java +++ b/src/main/java/com/bit/lotte/flower/user/social/mapper/SocialUserMapper.java @@ -57,6 +57,13 @@ public static SocialUser updateUserInfo(SocialUser socialUser, String nickname, String phoneNumber) { return SocialUser.builder().id(socialUser.getId()).oauthId(socialUser.getOauthId()) .profileImage(socialUser.getProfileImage()).phoneNumber(phoneNumber).email(email) - .nickname(email).isDeleted(socialUser.getIsDeleted()).build(); + .nickname(nickname).isDeleted(socialUser.getIsDeleted()).build(); + } + + public static SocialUser changeUserStatus(SocialUser socialUser, Boolean status) { + return SocialUser.builder().id(socialUser.getId()).oauthId(socialUser.getOauthId()) + .profileImage(socialUser.getProfileImage()).phoneNumber(socialUser.getPhoneNumber()) + .email(socialUser.getEmail()) + .nickname(socialUser.getNickname()).isDeleted(status).build(); } } diff --git a/src/main/java/com/bit/lotte/flower/user/social/repository/FindSocialUserByLongIdService.java b/src/main/java/com/bit/lotte/flower/user/social/repository/FindSocialUserByLongIdService.java index e372fe8..8c67c00 100644 --- a/src/main/java/com/bit/lotte/flower/user/social/repository/FindSocialUserByLongIdService.java +++ b/src/main/java/com/bit/lotte/flower/user/social/repository/FindSocialUserByLongIdService.java @@ -17,4 +17,5 @@ public SocialUser findUserElseThrowError(Long id) { throw new SocialUserDomainException("존재하지 않는 회원입니다."); }); } + } diff --git a/src/main/java/com/bit/lotte/flower/user/social/service/SoftDeleteStrategyService.java b/src/main/java/com/bit/lotte/flower/user/social/service/SoftDeleteStrategyService.java new file mode 100644 index 0000000..adcc4ec --- /dev/null +++ b/src/main/java/com/bit/lotte/flower/user/social/service/SoftDeleteStrategyService.java @@ -0,0 +1,40 @@ +package com.bit.lotte.flower.user.social.service; + +import com.bit.lotte.flower.user.common.valueobject.UserId; +import com.bit.lotte.flower.user.social.entity.SocialUser; +import com.bit.lotte.flower.user.social.mapper.SocialUserMapper; +import com.bit.lotte.flower.user.social.repository.FindSocialUserByLongIdService; +import com.bit.lotte.flower.user.social.repository.SocialUserJpaRepository; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@RequiredArgsConstructor +@Service +public class SoftDeleteStrategyService implements UserWithdrawalService { + + private final FindSocialUserByLongIdService findSocialUserByLongIdService; + private final SocialUserJpaRepository repository; + + @Override + public void userWithdrawal(UserId userId) { + SocialUser socialUser = findSocialUserByLongIdService.findUserElseThrowError(userId.getValue()); + + SocialUser notSoftDeletedUser = getNotSoftDeletedUser(repository + .findAllByOauthId(socialUser.getOauthId())); + + SocialUser updatedToDeleted = SocialUserMapper.changeUserStatus(notSoftDeletedUser, + Boolean.TRUE); + repository.save(updatedToDeleted); + } + + + private SocialUser getNotSoftDeletedUser(List allSocialUserByOauthId) { + + return allSocialUserByOauthId.stream() + .filter(user -> !user.getIsDeleted()) + .findFirst() + .orElse(null); + } + +} diff --git a/src/main/java/com/bit/lotte/flower/user/social/service/UserWithdrawalService.java b/src/main/java/com/bit/lotte/flower/user/social/service/UserWithdrawalService.java new file mode 100644 index 0000000..ab23eee --- /dev/null +++ b/src/main/java/com/bit/lotte/flower/user/social/service/UserWithdrawalService.java @@ -0,0 +1,9 @@ +package com.bit.lotte.flower.user.social.service; + +import com.bit.lotte.flower.user.common.valueobject.UserId; +import org.springframework.stereotype.Service; + +@Service +public interface UserWithdrawalService { + public void userWithdrawal(ID userId); +} diff --git a/src/main/java/com/bit/lotte/flower/user/store/http/feign/InitStoreManagerStatusPendingFeignRequest.java b/src/main/java/com/bit/lotte/flower/user/store/http/feign/InitStoreManagerStatusPendingFeignRequest.java index c49c772..5072488 100644 --- a/src/main/java/com/bit/lotte/flower/user/store/http/feign/InitStoreManagerStatusPendingFeignRequest.java +++ b/src/main/java/com/bit/lotte/flower/user/store/http/feign/InitStoreManagerStatusPendingFeignRequest.java @@ -5,8 +5,8 @@ import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.RequestBody; -@FeignClient(name = "init-storemanager-status",url = "${service.auth.domain}") +@FeignClient(name = "init-store-manager-status",url = "${service.auth.domain}") public interface InitStoreManagerStatusPendingFeignRequest { - @PatchMapping("/admin/store-manager") + @PatchMapping("/client/admin/store-manager") public void publish(@RequestBody UpdateStoreManagerPendingStausDto dto); }