@@ -58,6 +58,7 @@ public class BookInfo extends JFrame {
5858 long diffDays = 0 ; // 연체일을 나타내는 변수
5959 ReviewPanel [] review ;
6060 JLabel bookGradeLabel ;
61+ Date susDate = null ;
6162
6263 /**
6364 * Launch the application.
@@ -99,13 +100,14 @@ public BookInfo(String book_ISBN, String user_phone) {
99100 @ Override
100101 public void mouseClicked (MouseEvent e ) {
101102
103+ if (isSuspension ()) { // 만약 연체 유저라면
104+ userSus = true ;
105+ } else { // 만약 연체 유저가 아니거나 정지일이 지난 유저라면
106+ updateUserSuspension (0 );
107+ }
108+
102109 if (bookBorrowButton .getText ().equals ("대출하기" )) // 대출하기 버튼 상태일 때
103110 {
104- if (isSuspension ()) { // 만약 연체 유저라면
105- userSus = true ;
106- } else { // 만약 연체 유저가 아니거나 정지일이 지난 유저라면
107- updateUserSuspension (0 );
108- }
109111
110112 if ((userPoint < 50 && bookBorrowCnt < 3 || userPoint >= 50 && bookBorrowCnt < 5 ) && !userSus ) // 대출성공했을때
111113
@@ -408,7 +410,7 @@ public void updateUserSuspension(int day) {
408410 // 업데이트
409411 } else {
410412 Date now = new Date ();
411-
413+
412414 Calendar cal = Calendar .getInstance ();
413415 cal .setTime (now ); // 현재 유저가 접속한 날짜를 기준으로 정지일을 추가시킴.
414416 cal .add (Calendar .DATE , day );
@@ -419,12 +421,10 @@ public void updateUserSuspension(int day) {
419421 sql = "update USER\r \n " + "SET USER_POINT = USER_POINT-5, USER_SUSPENSION = '" + diffTime + "'\r \n "
420422 + "WHERE USER_PHONE = '" + user_phone + "';" ; // 해당 유저의 정지일을 업데이트시키고 포인트 5점을 깎음.
421423
422- sql = "update USER SET USER_POINT = USER_POINT + 5\r \n " + "WHERE USER_PHONE = '" + user_phone + "';" ;
423424
424425 }
425426 try { // DB 접근
426427 PreparedStatement ps = dbConn .conn .prepareStatement (sql );
427- ps .executeUpdate ();
428428
429429 } catch (SQLException e ) {
430430 e .printStackTrace ();
@@ -436,7 +436,6 @@ public void updateUserSuspension(int day) {
436436 public boolean isSuspension () {
437437 SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd" );
438438 Date returnDate ;
439- Date susDate ;
440439 Date nowDate ;
441440 try {
442441 nowDate = dateFormat .parse (LocalDate .now ().toString ());
@@ -452,7 +451,8 @@ public boolean isSuspension() {
452451
453452 int compare = nowDate .compareTo (susDate ); // 현재 날짜와 정지 날짜를 비교하면 compare가 0보다 크다면 정지
454453
455- if (compare > 0 ) { // 만약 정지 날짜가 현재 날짜보다 뒤에있다면
454+ if (compare < 0 ) { // 만약 정지 날짜가 현재 날짜보다 뒤에있다면
455+ System .out .println (nowDate + " " + susDate );
456456 return true ;
457457 }
458458 }
@@ -467,20 +467,27 @@ public boolean isSuspension() {
467467 returnDate = dateFormat .parse (s );
468468
469469 int compare = nowDate .compareTo (returnDate ); // 현재 날짜와 반납 날짜를 비교하면 compare가 0보다 크다면 반납 기한을 지남
470-
470+ boolean r = false ;
471+ int max = 0 ;
471472 if (compare > 0 ) { // 만약 반납 날짜가 현재 날짜를 지났다면
473+
472474 Calendar nowCal = Calendar .getInstance ();
473475 nowCal .setTime (nowDate );
474476 Calendar returnCal = Calendar .getInstance ();
475477 returnCal .setTime (returnDate );
476478
477479 long diffSec = (nowCal .getTimeInMillis () - returnCal .getTimeInMillis ()) / 1000 ;
478480 diffDays = diffSec / (24 * 60 * 60 ); // 현재 날짜와 반납 일자수 차이
479-
480- updateUserSuspension ((int ) diffDays ); // 해당 유저의 정지일을 업데이트하기 위해 정지 업뎃함수를 호출함.
481-
481+ if (max < (int )diffDays ) max = (int )diffDays ;
482+ r = true ;
483+
484+ }
485+
486+ if (r && max != 0 ) {
487+ updateUserSuspension (max ); // 해당 유저의 정지일을 업데이트하기 위해 정지 업뎃함수를 호출함.
482488 return true ;
483489 }
490+
484491 }
485492 } catch (SQLException e ) {
486493 e .printStackTrace ();
@@ -491,6 +498,15 @@ public boolean isSuspension() {
491498 }
492499 return false ;
493500 }
501+
502+ //정지 여부를 확인해주는 함수
503+
504+
505+ //정지일을 부여하는 함수
506+
507+ //연체된책이 있는지 확인해주는 함수
508+
509+
494510
495511 // 해당 도서 대여시 Rent테이블 업뎃함수
496512 public int BookRent () {
0 commit comments