πΎ Service : Register
β«οΈ AccountService.java
- νμμ λ³΄κ° μμ λ νμκ°μ
κ°λ₯ν¨.
public interface AccountService {
public boolean checkDuplicateEmail(String email);
public boolean register(RegisterReqDto registerReqDto) throws Exception;
}
β«οΈ AccountRepository.java
@Mapper
public interface AccountRepository {
public int save(User user);
public User findUserByEmail(String Email);
}
β«οΈ account.xml β AccountRepository.java ꡬν
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.stussy.stussy.projectname.repository.AccountRepository">
<insert id="save" parameterType="com.stussy.stussy.projectname.domain.User">
insert into
user_mst
values(
0, <!-- auto increment -->
#{username},
#{oauth_username},
#{password},
#{name},
#{email},
#{provider},
#{role_id},
now(),
now()
)
</insert>
<resultMap id="role" type="com.stussy.stussy.projectname.domain.Role">
<result property="id" column="id"></result>
<result property="role" column="role"></result>
<result property="role_name" column="role_name"></result>
</resultMap>
<resultMap id="user" type="com.stussy.stussy.projectname.domain.User">
<result property="id" column="id"></result>
<result property="username" column="username"></result>
<result property="oauth_username" column="oauth_username"></result>
<result property="password" column="password"></result>
<result property="name" column="name"></result>
<result property="email" column="email"></result>
<result property="provider" column="provider"></result>
<result property="role_id" column="role_id"></result>
<result property="create_date" column="create_date"></result>
<result property="update_date" column="update_date"></result>
βοΈ<collection property="role" column="role"></collection>
</resultMap>
<select id="findUserByEmail" parameterType="String" resultMap="user">
select
um.id,
um.username,
um.oauth_username,
um.password,
um.name,
um.email,
um.provider,
um.role_id,
rm.role,
rm.role_name,
um.create_date,
um.update_date
from
user_mst um
left outer join role_mst rm on (rm.id = um.role_id)
where
email = #{email}
</select>
</mapper>
resultMap μ¬μ΄μμ μ°κ΄ κ΄κ³κ° μλ κ²½μ° Collection μΌλ‘ μ¬λ¬ κ°μ κ°μ΄ κ°μ Έμ resultMapμ μ€μ²©νμ¬ μ¬μ©ν μ μλ€. (β μλΈμΏΌλ¦¬ μ²λΌ μ¬μ©κ°λ₯ν κ²μ)
β‘οΈ User ν΄λμ€μ role μ κ°μΌλ‘ Role ν΄λμ€μ role κ°μ κ°μ Έμ¨λ€.
β«οΈ AccountServiceImpl.java
@Service
@RequiredArgsConstructor
public class AccountServiceImpl implements AccountService{
private final AccountRepository accountRepository;
@Override
public boolean checkDuplicateEmail(String email) {
User user = accountRepository.findUserByEmail(email);
// β‘οΈ κ²°κ³Όκ° Null μ΄μ΄μΌ μ κ· λ±λ‘ κ°λ₯
if(user != null) {
Map<String, String> errorMap = new HashMap<String, String>();
errorMap.put("duplicateFlag", "μ΄λ―Έ κ°μ
λ μ΄λ©μΌμ
λλ€");
throw new CustomValidationException("DuplicateEmail Error", errorMap);
}
// λλ¨Έμ§ -> Null μΈ κ²½μ° : trueλ‘ λ¦¬ν΄
return true;
}
@Override
public boolean register(RegisterReqDto registerReqDto) throws Exception {
// β DTOλ‘ λ°μ μ μ μ 보λ₯Ό User κ°μ²΄λ‘ λ°κΎΈμ΄μ λ±λ‘ν¨.
User userEntity = registerReqDto.toUserEntity();
int result = accountRepository.save(userEntity);
return result != 0;
}
}
β«οΈ AccountApi.java
β‘οΈ ajax λ‘ λ°μ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ API
@Slf4j
@RequestMapping("/api/account")
@RestController
@RequiredArgsConstructor
public class AccountApi {
private final AccountService accountService;
@LogAspect
@ValidAspect
@PostMapping("/register")
public ResponseEntity<?> register(@Validated(ValidationSequence.class) @RequestBody RegisterReqDto registerReqDto, BindingResult bindingResult) throws Exception {
accountService.checkDuplicateEmail(registerReqDto.getEmail());
accountService.register(registerReqDto);
return ResponseEntity.ok().body(new CMRespDto<>(1, "Successfully registered", registerReqDto));
}
}
π’ μκ° πΏ
μ΄λ²μ μλ‘ λμ¨ μ§±κ΅¬λ₯Ό λ
λ° λ³΄λ¬ κ°λ€ μλ€ ν λ무λ무 κ·μ½κ³ μ¬λ°λ .
κ·Όλ° μ¬μ€ λ€μ μμ μ κΈ°λ μμ μμ λ¨κ³ λ© λλ
μμ΄ λ무 λ λ€μ΄μ μ‘°κΈ νλ¬μ λλ€ μλ°©μ΄ μλλΌκ΅¬μ (β―β΅β‘β²)β―οΈ΅β»ββ»
κ°μ²μ μ μ‘°μ‘°λ μ§μ₯μ΄μλ κ²μ΄λ€
κ·Έλλ λΉ‘μ§μ€ν΄μ μ΄μ¬ν λ³΄κ³ νΉμ λ§μ°μ€ν¨λλ μμ΄μλ€
λ λ λ΄μ£Όμ μΉκ΅¬λ λ ν λ² λ³΄λ¬κ°λ― π₯° γ
γ
γ
γ