스타벅스를 벤치마킹한 음식 배달 서비스 입니다.
GPS를 통해 근처의 매장을 검색할 수 있습니다.
매장을 선택해서 음료와 음식을 주문합니다.
멤버십 카드를 통해 결제할 수 있습니다.
sutabucks.mp4
- 2022/12/28 ~ 2023/02/06
- 참여인원 7명(프론트 3명, 백엔드 4명)
- 회원가입
▶ 코드 보러가기- 정규식을 사용해서 사용자의 입력값을 체크합니다.
- AES 암호키로 사용자의 pwd를 암호화 합니다.
- 로그인
▶ 코드 보러가기 - id/pwd 찾기
▶ 코드 보러가기- 문자와 이메일 발송 api를 이용해서 구현해보았습니다
- 관리자 페이지
▶ 코드 보러가기- axios 를 사용해서 비동기 방식으로 구현했습니다.
Back-end
open-api
형상관리
public Map<String, Object> IdAuthNumByPhone(PostFindIdDTO data, HttpSession session) {
MemberEntity user = null;
Map<String, Object> resultMap = new HashMap<String, Object>();
String name = data.getMiName();
String phoneNum = data.getMiPhoneNum();
try {
user = mRepo.findByMiNameAndMiPhoneNum(data.getMiName(), data.getMiPhoneNum());
} catch (Exception e) {
e.printStackTrace();
}
// 회원정보가 없을때(탈퇴회원도 동일)
if(name == null){
resultMap.put("status", false);
resultMap.put("message", "이름을 입력해주세요.");
resultMap.put("code", HttpStatus.BAD_REQUEST);
}
else if(phoneNum == null){
resultMap.put("status", false);
resultMap.put("message", "전화번호를 입력해 주세요.");
resultMap.put("code", HttpStatus.BAD_REQUEST);
}
else if (user == null || user.getMiStatus() == 3) {
resultMap.put("status", false);
resultMap.put("message", "등록된 회원정보와 일치하지 않습니다");
resultMap.put("code", HttpStatus.BAD_REQUEST);
}
else{
// 인증번호 생성
Integer certificationNum = GetAuthNum.getAuthNum();
// 인증번호 메시지로 발송
sendMessage.sendAuthNumbyPhone(data.getMiPhoneNum(), certificationNum);
// 입력받은 이름, 전화번호와 일치하는 사용자 정보 seesion에 저장
// 생성한 인증번호 session 에 저장
// session에 저장된 정보는 3분후 삭제
session.setAttribute("authNum", certificationNum);
session.setAttribute("user", user);
session.setMaxInactiveInterval(60*3);
resultMap.put("status", true);
resultMap.put("message", "인증번호가 발송되었습니다. 3분안에 입력해 주세요");
resultMap.put("code", HttpStatus.OK);
resultMap.put("authNum", certificationNum);
}
return resultMap;
}
입력받은 이름과 전화번호로 회원가입된 사용자인지 조회합니다.
user객체가 null이면 회원가입되지 않은 사용자로 판단하고 오류메세지를 출력합니다.
유효성 검사를 통과했을 시 getAuthNum 메서드를 통해 4자리 숫자로된 인증번호를 생성합니다.
외부api를 사용한 sendMessage 메서드를 통해 입력한 전화번호로 인증번호가 전송됩니다.