Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,15 @@ public ResponseEntity<ResultResponse> getMyInfo(

return ResponseEntity.ok(ResultResponse.of(ResponseCode.USER_INFO_GET_SUCCESS, myInfo));
}

@DeleteMapping("/withdrawal")
@PreAuthorize("hasAnyRole('USER', 'ADMIN')")
@Operation(summary = "회원 탈퇴", description = "회원탈퇴를 진행한다")
public ResponseEntity<ResultResponse> Withdrawal(
@LoginUser User loginUser
) {
userService.deleteUser(loginUser.getId());

return ResponseEntity.ok(ResultResponse.of(ResponseCode.USER_DELETE_SUCCESS));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
@DynamicInsert
@Where(clause = "deleted_at IS NULL")
@SQLDelete(sql = "UPDATE users SET deleted_at = CURRENT_TIMESTAMP WHERE id = ?")

@Table(name = "users")
public class User extends BaseEntity {

Expand All @@ -48,6 +49,9 @@ public class User extends BaseEntity {
@Column(length = 100)
private String address;

@Column(length = 30, columnDefinition = "boolean default false")
private Boolean isDeleted;

@Enumerated(EnumType.STRING)
@ColumnDefault("USER")
@NotNull
Expand All @@ -69,4 +73,5 @@ public class User extends BaseEntity {
public void setUserRole(ROLE role) {
this.role = role;
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.techeer.fashioncloud.domain.user.repository;

import com.techeer.fashioncloud.domain.user.dto.response.FollowInfoResponseDto;
import com.techeer.fashioncloud.domain.user.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.List;
import java.util.Optional;

public interface UserRepository extends JpaRepository<User, Long> {
Expand All @@ -11,4 +16,10 @@ public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByEmail(String email);

boolean existsByEmail(String email);

@Modifying(clearAutomatically = true)
@Query("update User u set u.isDeleted=true where u.id=:id")
void deleteUser(@Param("id") Long id);


}
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,17 @@ public UserInfoResponse getUserInfo(Long userId) {
.createdAt(user.getCreatedAt())
.updatedAt(user.getUpdatedAt())
.build();
}
@Transactional
public void deleteUser(Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));

userRepository.deleteUser(user.getId());
userRepository.delete(user);



}

private boolean checkFollowed(User fromUser, User toUser) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public enum ResponseCode {
USER_UNFOLLOW_SUCCESS(201, "유저 언팔로우 성공"),
USER_FOLLOW_LIST_GET_SUCCESS(200, "유저 팔로우 리스트 조회 성공"),
USER_INFO_GET_SUCCESS(200, "유저 정보 조회 성공"),
USER_DELETE_SUCCESS(200,"회원 탈퇴 성공"),

ADDRESS_GET_SUCCESS(200, "주소 조회 성공"),

Expand Down