본문 바로가기

개발일기/프로젝트 일기

HealthDuo - 중복회원 검사 기능 추가(jpa,fetch)

<script>
    // 중복회원 검사 0이면 중복회원 또는 무확인 1이면 중복회원검사 완료
    let checkDuplicatedMember = 0
    /**
     * 중복회원 검사
     * @returns {Promise<void>}
     */
    async function duplicatedMember() {
        let memberId = document.getElementById("memberId").value;
        let checkWords = document.getElementById("duplicatedMember");

        let URL = "http://localhost:8080/duplicatedMember"
        let options = {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: new URLSearchParams({
                memberId: memberId
            })
        }
        let response = await fetch(URL, options)
        let text = await response.text()
        if (text == 0) {
            checkDuplicatedMember = 1;
            checkWords.innerText =  "사용가능한 회원 아이디 입니다.";
        } else {
            checkDuplicatedMember = 0;
            checkWords.innerText =  "다른 아이디를 사용해 주세요.";
        }


    }

    /**
     * 비밀번호 일치 확인
     * @returns {boolean}
     */
    function check() {
        let password1 = document.getElementById("password1").value;
        let password2 = document.getElementById("password2").value;
        if(checkDuplicatedMember == 1){
            if (password1 === "" || password2 === "") {
                alert("비밀번호를 입력해주세요.");
            } else {
                if (password1 === password2) {
                    return true;
                } else
                    alert("일치하는 비밀번호를 입력해주세요.");
                return false;
            }
        }else {
            alert("회원 중복 확인해주세요.")
            return  false

        }
    }
</script>

 

 

중복확인을 클릭하게 되면function duplicatedMember()에서

memberId가 fetch  api를 통해 DB에서 아이디 중복을 확인하고

아이디가 중복일 경우 0을 반환 중복이 아닐경우 1을 반환한다.

if문을 써서 중복을 구분하고 document를 이용해 중복 메시지를 표시한다.

 

function check() 에서는 가입을 누를시 checkDuplicatedMember변수를 통하여

중복확인이 안되었을 경우 가입이 안되도록 제한을 걸어두었다.

 

ort Healthduo.demo.service.MemberService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
@Slf4j
public class memberRestController {
    private final MemberService memberService;

    /**
     * 중복회원 검사
     * @param memberId
     * @return
     * 중복회원이 아니면 0 중복회원이면 1
     */
    @PostMapping("duplicatedMember")
    public int duplicatedMember(@RequestParam("memberId") String memberId) {
        log.info("duplicatedMember(controller start)");
       int checkIdNumber =  memberService.duplicatedMember(memberId);
        log.info("checkIdNumber = " + checkIdNumber);

        return checkIdNumber;
    }
}

controller

 

    @Override
    public int duplicatedMember(String memberId) {
        log.info("duplicatedMember(Service start)");
        int checkIdNumber;
        Member findId = memberRepository.findById(memberId).orElse(null);

        if (findId == null) {
            checkIdNumber = 0;
        } else {
            checkIdNumber = 1;
        }

        return checkIdNumber;
    }
}

service

 

 

Member findId = memberRepository.findById(memberId).orElse(null);

->SpringData jpa 를 사용했다.