[DDORI'S HOUSE] 사용자 입양신청 상세페이지, 신청서 확인 및 신청 취소 구현하기

다람쥐·2022년 1월 7일
0

MyLifeFirstProject

목록 보기
4/5
post-thumbnail

일시

2022.01.06 ~ 2022.01.07



프로젝트 개요

  • 주제 : 유기견 입양 및 후원 사이트

  • 프로젝트명(사이트명) & 팀명 : DDORI'S HOUSE

  • 구현 내용(목표) : 로그인/회원가입, 마이페이지(사용자), 마이페이지(관리자), 각종 게시판(공지사항, 강아지 리스트, 자유게시판, 입양후기 등), 쇼핑몰(물건 판매, 결제 시스템), 매칭 시스템(질문에 대한 답변을 통해 적절한 유형 매칭)

  • 네비게이션 구성 : about(각종 소개 및 공지사항), adopt(강아지 리스트, 강아지 매칭), donation(후원 안내, 물건 판매), volunteer(봉사 안내 게시판), community(입양후기, 자유게시판), contact(오시는길, 연락 등), login/join(로그인, 회원가입, 마이페이지 등)

  • 맡은 역할 : DB 관리(모델링 및 테이블, 컬럼 등), 네비게이션바, login/join, Mypage



람쥐의 진행현황 4탄 !!!!!!

★ Mypage (USER)
1) 사용자 입양신청 상세페이지 jsp 만들기 (adopting.jsp -> adptingView.jsp)
2) 강아지 세부내역 기존 DB값 불러오고, 신청서 확인 버튼 만들기
3) 입양신청시 작성한 DB값 값 불러오기
4) 입양취소 구현하기



구현화면

1) 사용자 입양신청 상세페이지 jsp 만들기 (adopting.jsp -> adoptingView.jsp)

2) 강아지 세부내역 기존 DB값 불러오고, 신청서 확인 버튼 만들기

강아지 세부내역 조회될 xml 작성

<select id="adoptCancelSelect" parameterType="long" resultMap="adoptNowResultMap">
SELECT
    ADT_SEQ AS ADT_SEQ,
    NVL(A.ADT_STATUS, '') AS ADT_STATUS,
    NVL(A.ADT_PERIOD, '') AS ADT_PERIOD,
    NVL(A.ADT_REASON, '') AS ADT_REASON,
    NVL(A.ADT_HOME, '') AS ADT_HOME,
    NVL(A.ADT_AGREE, '') AS ADT_AGREE,
    NVL(A.ADT_PET, '') AS ADT_PET,
    NVL(B.DOG_SEQ, '') AS DOG_SEQ,
    NVL(B.DOG_NAME, '') AS DOG_NAME,
    NVL(B.DOG_GENDER, '') AS DOG_GENDER,
    NVL(TO_CHAR(B.ENT_DATE, 'YYYY.MM.DD'),'') AS ENT_DATE,
    NVL(B.DOG_SIG, '') AS DOG_SIG,
    NVL(B.DOG_MAIN_IMG, '') AS DOG_MAIN_IMG,
    NVL(B.DOG_SUB_IMG1, '') AS DOG_SUB_IMG1,
    NVL(B.DOG_SUB_IMG2, '') AS DOG_SUB_IMG2,
    NVL(B.DOG_SUB_IMG3, '') AS DOG_SUB_IMG3,
    NVL(B.NEUTERING, '') AS NEUTERING,
    NVL(C.DOG_SPECIES, '') AS DOG_SPECIES,
    NVL(C.DOG_CONTENT, '') AS DOG_CONTENT  
FROM
    TBL_ADOPT A, TBL_DOG B, TBL_DOG_CODE C
WHERE  
    ADT_SEQ = #{value}
AND
    A.DOG_SEQ = B.DOG_SEQ
AND
    B.DOG_MBTI = C.DOG_MBTI 
</select>


강아지 세부내역 조회될 dao 작성

	//★★ 취소하기전에 입양폼 상세조회 시작
	public Adopt adoptCancelSelect(long adtSeq);


강아지 세부내역 조회될 service 작성

   //★★취소하기전에 입양폼 상세조회 시작
   public Adopt adoptCancelSelect(long adtSeq)
   {
      Adopt adopt = null;
      
      try
      {
         adopt = adoptDao.adoptCancelSelect(adtSeq);
      }
      catch(Exception e)
      {
         logger.error("[AdoptService] adoptCancelSelect Exception", e);
      }
      
      return adopt;
   }


강아지 세부내역 조회될 model 작성 (선언, 초기화, get+set 추가)



강아지 세부내역 조회될 controller 작성

    //★★마이페이지 -> 입양신청현황 -> 해당 강아지 상세조회 창 띄우기
   @RequestMapping(value="/user/adoptIngView")
   public String adoptIngView(ModelMap model, HttpServletRequest request, HttpServletResponse response)
   {
      //String cookieUserId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
      long dogSeq = HttpUtil.get(request, "dogSeq", (long)0);
      long adtSeq = HttpUtil.get(request, "adtSeq", (long)0);
      
      Adopt adopt = null;
      
      //실제 존재하는 게시글일 경우(hiBbsSeq는 시퀀스를 통해 인서트할때 넣어줬기 때문에 0보다 작을 수 없다)
      if(adtSeq > 0)
      {
         //해당 Seq값으로 게시글 조회
         adopt = adoptService.adoptCancelSelect(adtSeq);
      }

      
      model.addAttribute("Adopt", adopt);
      //model.addAttribute("boardMe", boardMe);
      
      return "/user/adoptIngView";
   }




3) 입양신청시 작성한 DB값 불러오기

입양신청 확인 및 취소 jsp 작성하기

입양신청 확인 및 취소 창 띄우기 controller

   //★★마이페이지 -> 입양신청현황  -> 해당강아지 상세조회 -> 입양신청서 확인 및 취소 창 띄우기
   @RequestMapping(value="/user/adoptCancel", method=RequestMethod.POST)
   public String updateDogAdopt(ModelMap model, HttpServletRequest request, HttpServletResponse response)
   {
      String cookieUserId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
      long adtSeq = HttpUtil.get(request, "adtSeq", (long)0);
      
      User user = userService.userSelect(cookieUserId); //기존 사용하던 userSelect 재활용
      
      Adopt adopt = null;
      
      if(adtSeq > 0)
      {
         adopt = adoptService.adoptCancelSelect(adtSeq); //기존 사용하던 adoptCancelSelect 재화용
      }
      
      model.addAttribute("user", user);
      model.addAttribute("Adopt", adopt);
      
      return "/user/adoptCancel";
   }


입양신청시 입력했던 값들 jsp에 맵핑 (adopt객체사용)

<section class="hero-wrap hero-wrap-2" style="background-color:;" data-stellar-background-ratio="0.2">
   <div class="container">
   <br><br><br><br>
         <p class="minifont1">we are family</p>
          <p class="breadcrumbs">
          <span class="mr-2"><a href="/index">Home&nbsp;<i class="ion-ios-arrow-forward"></i></a></span>
	    <span><a href="/user/myPage">Mypage&nbsp;<i class="ion-ios-arrow-forward"></i></a></span>
	    <span class="fontssss"><a href="/user/adoptIng">입양신청 현황&nbsp;<i class="ion-ios-arrow-forward"></i></a></span>
	    <span class="fontssss"><a href="javascript:void(0)" onclick="fn_view(${Adopt.adtSeq})">${Adopt.dogName}&nbsp;<i class="ion-ios-arrow-forward"></i></a></span>
	    <span class="fontssss">입양신청서 확인 및 취소</span>
	    </p>
       </div>
 </section>


<!-- ##### Login Area Start ##### -->
    <section class="login-area section-padding-50">
        <div class="container">
            <div class="row justify-content-center">
                <div class="col-12 col-lg-12">
                    <div class="login-content">
                        <h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</h3>
                        <!-- Login Form -->
                        <div class="login-form">
                            <form action="#" method="post">
                                <div class="form-group">
                                    <label for="q1"><b>1. 입양을 결정하시기 까지 얼마나 오랜 시간을 고민하셨나요?</b></label>
                                    <input type="text" class="form-control" id="q1" value="${Adopt.adtPeriod}">
                                </div>
                                <div class="form-group">
                                    <label for="q2"><b>2. 입양을 원하시는 가장 큰 이유는 무엇인가요?</b></label>
                                    <input type="text" class="form-control" id="q2" value="${Adopt.adtReason}">
                                </div>
                                <div class="form-group">
                                    <label for="living"><b>3. 주거의 형태는?</b></label>
                                    <br/>
                                    <label>

                                             <c:choose>
                                             <c:when test="${Adopt.adtHome eq '1'}"> 단독주택 </c:when>
                                             <c:when test="${Adopt.adtHome eq '2'}"> 공동주택 </c:when>
                                             <c:when test="${Adopt.adtHome eq '3'}"> 아파트 </c:when>
                                             </c:choose>
                                    </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

                                </div>
                                <div class="form-group">
                                    <label for="living2"><b>4. 임대한 주택의 경우 집주인의 동의를 얻으셨나요?</b></label>
                                    <br/>
                                    <label>
                                             <c:choose>
                                             <c:when test="${Adopt.adtAgree eq '1'}"></c:when>
                                             <c:when test="${Adopt.adtAgree eq '2'}"> 아니오 </c:when>
                                             <c:when test="${Adopt.adtAgree eq '3'}"> 해당없음 </c:when>
                                             </c:choose>
                                    </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                </div>
                                <div class="form-group">
                                    <label for="q5"><b>5. 키우고 계신 반려동물이 있나요? 있다면 소개해주세요.</b></label>
                                    <input type="text" class="form-control" id="q5" value="${Adopt.adtPet}">
                                </div>
                                <div class="form-group">
                                    <label for="chkBox"><b>6. 입양동의</b></label>
                                    <table style="background-size:1000px; width:100%;, id="chkBox" ">
                                    
                                       <tr>
                                          <td>1) 본인(이하 '입양인'이라 합니다.)은 'DDORI'S HOUSE' (이하 '단체'라 합니다.)를 통하여 반려동물(이하 '입양동물'이라 합니다.)을 입양함에 있어 입양동물이 자연사하는 시점까지 책임 있는 보호자로서 입양동물에게 최적의 환경과 보살핌을 제공할 것이며 최선을 다하여 입양동물을 보호할 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>2) 입양인은 입양인이나 혹은 가족을 포함한 제 3자의 고의 또는 과실로 인하여 입양동물에 대한 학대행위가 발생하거나 입양동물이 양도, 매매, 유기, 유실된 경우에는 단체로부터의 어떠한 민, 형사상의 처벌에도 이의를 제기하지 않고 따르는데 동의합니다. 입양인은 입양동물이 양도, 매매, 유기, 유실된 경우에 그 즉시로 단체에 통지할 의무를 지니며 입양동물을 되찾기 위한 노력에 최선을 다하여 협조할 의무가 있습니다.</td>
                                       </tr> 
 
                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>3) 입양인은 입양동물에게 양질의 사료와 깨끗한 물을 공급하고, 적합하고 적절한 운동, 질병에 대한 예방접종, 정기 건강검진을 시행하는 등, 꼭 필요한 복지를 제공할 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>4) 만일 입양동물이 질병에 걸렸을 때 입양인은 신속하게 필요한 수의학적 치료를 받게 하고 성실하게 그 치료에 임할 것이며 만일 입양동물의 완치가 불가능하고 그 고통이 극심한 경우에는 이를 단체에 통지하고 단체와의 협의 하에 대안을 강구하여야 하며 임의로 처리해서는 안 됩니다. 입양인은 입양동물이 자연사한 경우에도 즉시 이 사실을 단체에 통지할 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>5) 입양인은 상시 입양동물에게 입양인의 연락처가 기재된 이름표를 반드시 착용시켜야 하며 만일 입양인의 연락처가 변경되거나 주거지의 변동사항이 있을 시에는 즉시 단체에 이에 대한 정보를 통지할 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>6) 입양인은 입양 후 단체에서 시행하는 입양동물의 모니터링을 위한 전화 또는 방문에 응할 것이며 단체가 입양동물의 면회나 사진을 요구할 시 언제든지 이에 협조할 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>7) 입양인은 단체의 입양동물 중성화수술 방침에 동의하며, 입양 전에 미리 중성화수술이 시행될 수 없는 경우에는 입양동물의 건강상태가 양호하고 그 연령이 수술하기에 적합한 조건이 갖추어지는 즉시로 중성화수술을 시행하고 이에 대한 사실을 즉시 단체에 통지하며 중성화수술 전이라 할지라도 그 어떠한 경우에도 입양동물을 교배하지 않을 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>8) 입양인은 개인적인 사유로 파양을 하는 경우에는, 반드시 단체에게 통보해야 하며 임의대로 재입양할 수 없습니다. 또한, 단체에게 입양비 반환을 청구할 수 없습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>9) 입양인은 입양 후에도, 만일 단체에서 입양인이 입양동물을 돌볼 여건과 환경이 적합하지 않다고 판단하여 입양동물의 반환을 요구하는 경우에는 이에 이의를 제기하지 않고 적극 협조할 의무가 있습니다.</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>10) 입양인은 입양 시에, 유기동물의 구조와 치료, 보호비로 사용되는 일정금액의 맞음비 7만원을 납부해주셔야 합니다. (최종 입양 시 납부 방법 안내)</td>
                                       </tr> 

                                       <tr>
                                       <td><br /></td>
                                       </tr>
                                       
                                       <tr>
                                          <td>11) 입양인은 입양 후 일정 기간 모니터링을 위한 전화연락이나 방문이 필요할 수 있습니다.</td>
                                       </tr> 

                                    </table>
                                <label><input type="checkbox" name="agreeBox" id="checkAll" checked="checked">전체 동의</label><br /><br />
                                <b>입양인은 이하에 신청함으로써 상기의 조항에 동의하며, 입양인이 상기의 조항을 위반 시에는 단체의 어떠한 처벌조치에도 이의를 제기함이 없이 따를 것을 서약합니다. </b>
                                </div>
                                
                                <c:if test="${Adopt.adtStatus eq 'B'}">
                                <button type="button" id="adoptCancel" class="btn oneMusic-btn mt-30">입양신청 취소하기</button>
                                </c:if>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>




4) 입양취소 구현하기

입양신청 취소 xml 쿼리 추가

<delete id = "adoptCancel" parameterType="long">
DELETE FROM TBL_ADOPT
WHERE
        ADT_SEQ = #{value}
</delete>


입양신청 취소 dao 추가

	//★★입양신청 취소
	public long adoptCancel(long adtSeq);


입양신청 취소 service 추가

 //★★입양신청 삭제
   public long adoptCancel(long adtSeq)
   {
      long count = 0;
      Adopt adopt = adoptDao.adoptSelect(adtSeq); //입양신청서 썼는지 먼저 확인하고
      
       if(adtSeq != 0)
       {//널이 아니면 값이 있는거니까
           count = adoptDao.adoptCancel(adtSeq);
       }
         
      return count;
   }


입양신청 취소 model 추가 (할 거 없음)





입양신청 취소 ajax 통신 연결

         $.ajax({
            type : "POST",
            url : "/adopt/adoptCancel",
            data : {
               adtSeq:<c:out value="${Adopt.adtSeq}" />
            },
            datatype : "JSON",
            beforeSend : function(xhr){
                  xhr.setRequestHeader("AJAX", "true");
              },
              success:function(response)
            {
               if(response.code == 0)
               {
                  alert("입양취소 신청이 완료되었습니다.");
                  location.href = "/user/adoptIng";
               }
               else if(response.code == 400)
               {
                  alert("입력 값이 올바르지 않습니다.");
                  $("#adoptCancel").prop("disabled", false);      //입양취소 버튼 활성화
               }
               else
               {
                  alert("입양취소 신청 중 오류가 발생했습니다.");
                  $("#adoptCancel").prop("disabled", false);
               }
            },
            error:function(error)
            {
               icia.common.error(error);
               alert("입양취소 신청중 오류가 발생하였습니다.");
               $("#adoptCancel").prop("disabled", false);
            }
         });


입양신청 취소 controller 추가

     //★★ 입양신청 취소
     @RequestMapping(value="/adopt/adoptCancel", method=RequestMethod.POST)
     @ResponseBody
     public Response<Object> adoptCancel(HttpServletRequest request, HttpServletResponse response)
     {
         Response<Object> ajaxResponse = new Response<Object>();
         
         String cookieUserId = CookieUtil.getHexValue(request, AUTH_COOKIE_NAME);
         long adtSeq = HttpUtil.get(request, "adtSeq", (long)0);
         
         if(adtSeq > 0 )
         {
            Adopt adopt = adoptService.adoptSelect(adtSeq);
            
            if(adopt != null)
            {
                if(adoptService.adoptCancel(adopt.getAdtSeq()) >0)
                {//정상적으로 삭제됨
                   ajaxResponse.setResponse(0, "Success");   
                }
                else
                {
                   ajaxResponse.setResponse(500, "Internal Server Error");  
                
                }
            }
              else
              {
                 ajaxResponse.setResponse(404, "Not Found");
              }  
         }
           else
           {
              ajaxResponse.setResponse(400, "Bad Request");
           }
       return ajaxResponse;
     }


profile
도토리 수집 일기

0개의 댓글

관련 채용 정보