Open chessta0126 opened 1 year ago
aws로 하면 공연 시간 설정 오류 있음 (시작 시간 < 마치는 시간 인데도 넘어간다고 나옴) -> 10시 이상으로 설정하면 그러는데, compareTo로 비교해서 앞자리가 1이라서 그런 것 같다.
ex ) 3시가 11시보다 크다고 나와서 에러 메시지가 이상하게 적용되었다.
앞에 있는 숫자부터 단순 비교하기 때문에 3>1로 계산된 것. -> 한 자리 수일 경우에 앞에 0을 추가하여 해결했다.
if(startTimeHour.length == 1){
startTimeHour = "0" + startTimeHour;
}
0시 ~ 23시까지, 0분~59분까지로 제한
if(startTimeHour < 0 || startTimeMinute < 0
|| startTimeHour > 23 || startTimeMinute > 59 ){
alert("공연 시작 시간이 잘못 입력되었습니다.");
return false;
}
->비회원 예매 / 예매 확인 시, 아예 3가지 파트로 나누어 나중에 합치기로 했다.
비회원 예매 시
const { value: phoneNumber } = await Swal.fire({
title: '연락처를 입력하세요.',
html:
'<div class="d-flex align-items-center bold">'+
'<input id="phoneNumberHead" class="swal2-input mr-2">' + "-" +
'<input id="phoneNumberMiddle" class="swal2-input ml-2 mr-2">' + "-" +
'<input id="phoneNumberEnd" class="swal2-input ml-2">' +
'</div>',
focusConfirm: false,
preConfirm: () => {
let phoneNumber =
document.getElementById('phoneNumberHead').value + "-" +
document.getElementById('phoneNumberMiddle').value + "-" +
document.getElementById('phoneNumberEnd').value;
return [
phoneNumber
]
}
})
예매 확인 시
<div class="d-flex align-items-center mb-4">
<label for="phoneNumber" class="ml-3 col-3">전화번호</label>
<div class="d-flex justify-content-between">
<input type="text" id="phoneNumberHead" name="phoneNumberHead" class="form-control mr-2">
-
<input type="text" id="phoneNumberMiddle" name="phoneNumberMiddle" class="form-control ml-2 mr-2">
-
<input type="text" id="phoneNumberEnd" name="phoneNumberEnd" class="form-control ml-2">
</div>
</div>
BookController에도 3가지 변수를 받을 수 있도록 추가해준다. 비회원 예매의 경우에는 phoneNumber로 묶어서 한번에 보내주지만, 예매 확인은 form 태그로 바로 보내기 때문에 변수 정의를 나중에 Controller에서 묶는 게 편하다. phoneNumberHead, phoneNumberMiddle, phoneNumberEnd 파라미터를 따로 받을 수 있게 해야 한다.
,@RequestParam(value="phoneNumberHead",required = false) String phoneNumberHead
,@RequestParam(value="phoneNumberMiddle",required = false) String phoneNumberMiddle
,@RequestParam(value="phoneNumberEnd",required = false) String phoneNumberEnd
전화번호 파라미터가 바로 들어왔을 경우에는 그대로 쓰되, 각자 분리되어 들어왔을 경우에는 조합해서 전화번호로 만들어준다.
if(ObjectUtils.isEmpty(phoneNumber)) {
phoneNumber = phoneNumberHead+ "-" + phoneNumberMiddle+ "-" + phoneNumberEnd;
}
클릭한 페이지에 접근 권한이 없을 경우 로그인 화면으로 이동하게 해놓았는데 로그인 후 클릭했던 페이지로 이동하게 하기 위해 referrer를 사용했다. -> 그런데 회원가입 후 다시 회원가입 페이지가 나오면 이상하므로 예외적 통제
-> 그러나 전체 주소를 비교하기엔 포트 번호나 IP 주소가 변경될 수 있다.
-> /를 기준으로 split하여 user 관련된 페이지(로그인, 회원가입, 로그아웃)일 경우 메인으로 이동
ex) http://localhost:8080/user/sign_in_view
if(referrer.split("/")[3] == "user"){
location.href = "/main/main_view";
return;
}
location.href = referrer;
<c:if test="${currentPage +1 < needPage}">
<a href="/post/postList?postType=${postType}&page=${maxPage + 1}">>></a>
</c:if>
-> 이렇게 조건을 걸었더니, 3페이지씩 보인다고 가정했을 때 4페이지가 없는 경우 2페이지에서 다음(>>)을 누르면 4페이지로 이동, 없는 것이 사용자에게 보여져버린다.
<c:if test="${maxPage < needPage}">
<a href="/post/postList?postType=${postType}&page=${maxPage + 1}">>></a>
</c:if>
-> 보여지고 있는 페이지의 최대페이지(maxPage)가 전체 필요한 페이지 수(needPage)보다 크거나 같으면 다음으로 넘어갈 필요가 없으므로, 조건을 변경한다.
공연 날짜 입력 시 datepicker에서 지정한 형식으로 통일하기 위해, 입력의 자유도를 제한하고 input창을 비활성화 하기로 했다.
로그인
공연 등록 관련
공연 예매 관련
예매 확인 관련
Community 관련
관리자
추가 서비스
부실한 기능