Skip to content
Merged
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
@@ -0,0 +1,30 @@
package com.gltkorea.icebang.domain.user.controller;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.gltkorea.icebang.common.dto.ApiResponse;
import com.gltkorea.icebang.domain.user.dto.CheckEmailRequest;
import com.gltkorea.icebang.domain.user.dto.CheckEmailResponse;
import com.gltkorea.icebang.domain.user.service.UserService;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

@RestController
@RequestMapping("/v0/users")
@RequiredArgsConstructor
public class UserController {
private final UserService userService;

@PostMapping("/check-email")
public ApiResponse<CheckEmailResponse> checkEmailAvailable(
@Valid @RequestBody CheckEmailRequest request) {
Boolean available = !userService.isExistEmail(request);
String message = available.equals(Boolean.TRUE) ? "사용 가능한 이메일입니다." : "이미 가입된 이메일입니다.";

return ApiResponse.success(CheckEmailResponse.builder().available(available).build(), message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.gltkorea.icebang.domain.user.dto;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class CheckEmailRequest {
@NotBlank(message = "이메일은 필수입니다")
@Email(message = "올바른 이메일 형식이 아닙니다")
private String email;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.gltkorea.icebang.domain.user.dto;

import lombok.Builder;
import lombok.Data;

@Data
@Builder
public class CheckEmailResponse {
private Boolean available;
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
package com.gltkorea.icebang.domain.user.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.gltkorea.icebang.domain.auth.dto.RegisterDto;
import com.gltkorea.icebang.domain.user.dto.CheckEmailRequest;
import com.gltkorea.icebang.entity.Users;
import com.gltkorea.icebang.mapper.UserMapper;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class UserService {
// private final UserMapper userMapper;
private final UserMapper userMapper;

public void registerUser(RegisterDto registerDto) {
Users user =
Expand All @@ -21,4 +25,9 @@ public void registerUser(RegisterDto registerDto) {
.status("PENDING")
.build();
}

@Transactional(readOnly = true)
public Boolean isExistEmail(@Valid CheckEmailRequest request) {
return userMapper.existsByEmail(request.getEmail());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.gltkorea.icebang.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
@Select("SELECT COUNT(1) > 0 FROM users WHERE email = #{email}")
boolean existsByEmail(@Param("email") String email);
}
Loading