Browse Source

생활치료센터 수정, 정보 기능 추가

junekeunsong 4 years ago
parent
commit
44793705bf

+ 70 - 6
src/main/java/com/lemon/lifecenter/controller/CenterController.java

@@ -48,9 +48,9 @@ public class CenterController extends LifeCenterController {
         return mv;
     }
     
-    @RequestMapping("/newProc")
+    @RequestMapping("/newRegist")
     @Transactional(propagation=Propagation.REQUIRED)
-    public String centerNewProc(
+    public String centerNewRegist(
             @ModelAttribute("dto") final CenterInfoDTO dto,
             @RequestParam(value="detailAddr", required=true) String detailAddr,
             @RequestParam(value="staffId", required=true) String staffId,
@@ -58,7 +58,7 @@ public class CenterController extends LifeCenterController {
             @RequestParam(value="staffName", required=true) String staffName,
             @RequestParam(value="staffPhoneNumber", required=true) String staffPhoneNumber) throws Exception {
 
-        String centerAddress = dto.getCenterAddress() + detailAddr;
+        String centerAddress = dto.getCenterAddress() + "|" + detailAddr;
         dto.setCenterAddress(centerAddress);
         MemberDTO mDto = new MemberDTO();
         
@@ -71,7 +71,7 @@ public class CenterController extends LifeCenterController {
         mDto.setGroupIdx("2");
         memberService.inserMember(mDto);
         
-        return "redirect:./info?centerCode=" + dto.getCenterCode() + "&staffId=" + staffId;
+        return "redirect:./info?centerCode=" + dto.getCenterCode();
     }
     
     @RequestMapping("/info")
@@ -82,13 +82,77 @@ public class CenterController extends LifeCenterController {
         dto = centerService.selectCenterInfo(dto);
         ModelAndView mv = setMV("center/info");
         mv.addObject("centerInfo", dto);
+        mv.addObject("centerCode", centerCode);
         return mv;
     }
 
+    @RequestMapping("/editProc")
+    @Transactional(propagation=Propagation.REQUIRED)
+    public String centerEditProc(
+            @ModelAttribute("dto") final CenterInfoDTO dto,
+            @RequestParam(value="detailAddr", required=true) String detailAddr,
+            @RequestParam(value="staffId", required=true) String staffId,
+            @RequestParam(value="staffPw", required=true) String staffPw,
+            @RequestParam(value="staffNewPw", required=false, defaultValue="") String staffNewPw,
+            @RequestParam(value="staffName", required=true) String staffName,
+            @RequestParam(value="staffPhoneNumber", required=true) String staffPhoneNumber) throws Exception {
+        
+        MemberDTO mDto = new MemberDTO();
+        mDto.setId(staffId);
+        mDto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, staffPw));
+        int mCnt = memberService.selectMemberCount(mDto);
+        
+        if (mCnt > 0) {
+            String address = dto.getCenterAddress() + "|" + detailAddr;
+            dto.setCenterAddress(address);
+            int result = centerService.updateCenterInfo(dto);
+            
+            if (result > 0) {
+                mDto.setName(staffName);
+                mDto.setPhoneNumber(staffPhoneNumber);
+                mDto.setPassword("");
+                if (!staffNewPw.equals("")) {
+                    mDto.setPassword(LifeCenterFunction.aesEncrypt(config.aesKey, config.IV, staffNewPw));
+                }
+                
+                int mUpCnt = memberService.updateMember(mDto);
+                if (mUpCnt < 0) {
+                    
+                }
+                return "redirect:./info?centerCode=" + dto.getCenterCode();
+            }
+        }
+        
+        return "redirect:./edit?centerCode=" + dto.getCenterCode();
+    }
+    
     @RequestMapping("/edit")
-    public ModelAndView centerEdit() {
+    public ModelAndView centerEdit(
+            @RequestParam(value="centerCode", required=true) int centerCode) {
+        
+        List<LocationDTO> list = centerService.selectLocation();
+        
+        CenterInfoDTO dto = new CenterInfoDTO();
+        dto.setCenterCode(centerCode);
+        dto = centerService.selectCenterInfo(dto);
+        
+        String address = dto.getCenterAddress();
+        String mainAddr = "";
+        String detailAddr = "";
+        if (address.contains("|") == true) {
+            String[] strAr = dto.getCenterAddress().split("[|]");
+            mainAddr = strAr[0];
+            detailAddr = strAr[1];
+        } else {
+            mainAddr = address;
+        }
+        
         ModelAndView mv = setMV("center/edit");
-
+        mv.addObject("locationList", list);
+        mv.addObject("centerInfo", dto);
+        mv.addObject("mainAddr", mainAddr);
+        mv.addObject("detailAddr", detailAddr);
+        
         return mv;
     }
 

+ 1 - 0
src/main/java/com/lemon/lifecenter/mapper/CenterMapper.java

@@ -17,4 +17,5 @@ public interface CenterMapper {
     public CenterInfoDTO selectCenterInfo(CenterInfoDTO dto);
     public int selectCenterCount(CenterInfoDTO dto);
     public List<CenterInfoDTO> selectCenterList(CenterInfoDTO dto);
+    public Integer updateCenterInfo(CenterInfoDTO dto);
 }

+ 2 - 0
src/main/java/com/lemon/lifecenter/mapper/MemberMapper.java

@@ -8,5 +8,7 @@ import com.lemon.lifecenter.dto.MemberDTO;
 @Repository
 @Mapper
 public interface MemberMapper {
+    public int selectMemberCount(MemberDTO dto);
     public void insertMember(MemberDTO dto);
+    public Integer updateMember(MemberDTO dto);
 }

+ 4 - 0
src/main/java/com/lemon/lifecenter/service/CenterService.java

@@ -35,4 +35,8 @@ public class CenterService {
     public List<CenterInfoDTO> selectCenterList(CenterInfoDTO dto) {
         return mapper.selectCenterList(dto);
     }
+    
+    public Integer updateCenterInfo(CenterInfoDTO dto) {
+        return mapper.updateCenterInfo(dto);
+    }
 }

+ 8 - 0
src/main/java/com/lemon/lifecenter/service/MemberService.java

@@ -11,7 +11,15 @@ public class MemberService {
     @Autowired
     private MemberMapper mapper;
     
+    public int selectMemberCount(MemberDTO dto) {
+        return mapper.selectMemberCount(dto);
+    }
+    
     public void inserMember(MemberDTO dto) {
         mapper.insertMember(dto);
     }
+    
+    public Integer updateMember(MemberDTO dto) {
+        return mapper.updateMember(dto);
+    }
 }

+ 13 - 0
src/main/resources/mybatis/mapper/center/center.xml

@@ -114,4 +114,17 @@
              LIMIT ${limit}, ${limitMax}
         ]]>
     </select>
+    
+    <update id="updateCenterInfo" parameterType="CenterInfoDTO">
+        <![CDATA[
+            UPDATE CENTER_INFO
+               SET LOCATION_CODE = #{locationCode},
+                   CENTER_ADDRESS = #{centerAddress},
+                   CENTER_NUMBER = #{centerNumber},
+                   TOTAL_CAPACITY = #{totalCapacity},
+                   TOTAL_STAFF = #{totalStaff}
+             WHERE CENTER_CODE = ${centerCode}
+        ]]>
+    </update>
+    
 </mapper>

+ 26 - 0
src/main/resources/mybatis/mapper/member/member.xml

@@ -3,6 +3,16 @@
 
 <mapper namespace="com.lemon.lifecenter.mapper.MemberMapper">
     
+    <select id="selectMemberCount" parameterType="MemberDTO" resultType="int">
+        <![CDATA[
+            SELECT COUNT(*) AS cnt
+              FROM MEMBER
+             WHERE 1 = 1
+               AND id = #{id}
+               AND password = #{password}
+        ]]>
+    </select>
+    
     <insert id="insertMember" parameterType="MemberDTO" useGeneratedKeys="true">
         <![CDATA[
             INSERT INTO MEMBER
@@ -10,4 +20,20 @@
                   VALUE (#{id}, #{password}, NOW(),       #{name}, #{phoneNumber}, #{groupIdx}, #{centerCode})
         ]]>
     </insert>
+    
+    <update id="updateMember" parameterType="MemberDTO">
+        <![CDATA[
+            UPDATE MEMBER
+               SET NAME = #{name},
+        ]]>
+        <if test='password != null and password != ""'>
+        <![CDATA[
+                   PASSWORD = #{password}
+        ]]>
+        </if>
+        <![CDATA[
+                   PHONE_NUMBER = #{phoneNumber}
+             WHERE id = #{id}
+        ]]>
+    </update>
 </mapper>

+ 164 - 68
src/main/webapp/WEB-INF/jsp/center/edit.jsp

@@ -4,6 +4,75 @@
 <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
 <jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+<script src="https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js"></script>
+<script>
+
+function juso() {
+    new daum.Postcode({
+        oncomplete: function(data) {
+            // 팝업에서 검색결과 항목을 클릭했을때 실행할 코드를 작성하는 부분.
+
+            // 각 주소의 노출 규칙에 따라 주소를 조합한다.
+            // 내려오는 변수가 값이 없는 경우엔 공백('')값을 가지므로, 이를 참고하여 분기 한다.
+            var addr = ''; // 주소 변수
+            var extraAddr = ''; // 참고항목 변수
+
+            //사용자가 선택한 주소 타입에 따라 해당 주소 값을 가져온다.
+            if (data.userSelectedType === 'R') { // 사용자가 도로명 주소를 선택했을 경우
+                addr = data.roadAddress;
+            } else { // 사용자가 지번 주소를 선택했을 경우(J)
+                addr = data.jibunAddress;
+            }
+
+            // 사용자가 선택한 주소가 도로명 타입일때 참고항목을 조합한다.
+            if(data.userSelectedType === 'R'){
+                // 법정동명이 있을 경우 추가한다. (법정리는 제외)
+                // 법정동의 경우 마지막 문자가 "동/로/가"로 끝난다.
+                if(data.bname !== '' && /[동|로|가]$/g.test(data.bname)){
+                    extraAddr += data.bname;
+                }
+                // 건물명이 있고, 공동주택일 경우 추가한다.
+                if(data.buildingName !== '' && data.apartment === 'Y'){
+                    extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName);
+                }
+                // 표시할 참고항목이 있을 경우, 괄호까지 추가한 최종 문자열을 만든다.
+                if(extraAddr !== ''){
+                    extraAddr = ' (' + extraAddr + ')';
+                }
+                // 조합된 참고항목을 해당 필드에 넣는다.
+                //document.getElementById("detailAddr").value = extraAddr;
+            
+            } else {
+                //document.getElementById("detailAddr").value = '';
+            }
+
+            // 우편번호와 주소 정보를 해당 필드에 넣는다.
+            /* document.getElementById('sample6_postcode').value = data.zonecode; */
+            
+            document.getElementById("mainAddr").value = addr + " " + extraAddr;
+            // 커서를 상세주소 필드로 이동한다.
+            document.getElementById("detailAddr").focus();
+            
+        }
+    }).open();
+}
+
+function onlyNumber(){
+    if((event.keyCode<48)||(event.keyCode>57)) {
+        event.returnValue=false;
+    }
+}
+
+$( function(){
+    $( "#newForm" ).validate({
+        submitHandler: function(form) {
+            $("#mainAddr").removeAttr("disabled");
+            form.submit();
+        }
+    });
+})
+</script>
+
 </head>
 <body>
     <div class="wrapper">
@@ -56,78 +125,105 @@
                     <div class="row">
                         <div class="col-12">
                             <div class="card">
-                                <div class="card-body">
-                                    <table class="table mobile-table">
-                                        <colgroup>
-                                            <col style="width:15%">
-                                            <col style="width:35%">
-                                            <col style="width:15%">
-                                            <col style="width:35%">
-                                        </colgroup>
-                                        <tr>
-                                            <th>생활치료센터명</th>
-                                            <td>
-                                                레몬종합병원
-                                            </td>
-                                            <th>지역</th>
-                                            <td>
-                                                <select class="custom-select">
-                                                              <option selected="">지역</option>
-                                                              <option>1</option>
-                                                              <option>2</option>
-                                                              <option>3</option>
-                                                              <option>4</option>
-                                                              <option>5</option>
-                                                              <option>6</option>
-                                                              <option>7</option>
-                                                </select>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>주소</th>
-                                            <td colspan="3">
-                                                <div class="form-row">
-                                                    <div class="col-lg-10"><input type="text" class="form-control"></div>
-                                                    <div class="col-lg-2"><button class="btn btn-primary w100">주소찾기</button></div>
+                                <form action="./editProc" method="post" id="newForm">
+                                    <div class="card-body">
+                                        <table class="table mobile-table">
+                                            <colgroup>
+                                                <col style="width:15%">
+                                                <col style="width:35%">
+                                                <col style="width:15%">
+                                                <col style="width:35%">
+                                            </colgroup>
+                                            <tr>
+                                                <th>생활치료센터명</th>
+                                                <td>
+                                                    <c:out value="${centerInfo.centerName}" />
+                                                    <input type="hidden" name="centerName" value="${centerInfo.centerName}">
+                                                    <input type="hidden" name="centerCode" value="${centerInfo.centerCode}">
+                                                </td>
+                                                <th>지역</th>
+                                                <td>
+                                                    <select class="custom-select" name="locationCode">
+                                                        <option>지역</option>
+                                                        <c:forEach var="i" items="${locationList}">
+                                                            <option value="${i.locationCode}" <c:if test="${i.locationCode eq centerInfo.locationCode}"> selected="selected"</c:if>><c:out value="${i.locationName}"/></option>
+                                                        </c:forEach>
+                                                    </select>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th><span class="fix">*</span>주소</th>
+                                                <td colspan="3">
+                                                    <div class="form-row">
+                                                        <div class="col-lg-10"><input type="text" class="form-control" disabled id="mainAddr" name="centerAddress" value="${mainAddr}" /></div>
+    <!--                                                     <div class="col-lg-2"><button class="btn btn-primary w100">주소찾기</button></div> -->
+                                                        <div class="col-lg-2"><span class="btn btn-primary w100" onclick="juso();">주소찾기</span></div>
+                                                        <div class="col-lg-10"><input type="text" class="form-control mt8" id="detailAddr" name="detailAddr" placeholder="상세주소" value="${detailAddr}" required></div>
+                                                    </div>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th><span class="fix">*</span>전화번호</th>
+                                                <td colspan="3">
+                                                    <input type="text" class="form-control" name="centerNumber" placeholder="010-1234-1234" value="${centerInfo.centerNumber}" required onkeypress="onlyNumber();">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th><span class="fix">*</span>수용인원(명)</th>
+                                                <td>
+                                                    <input type="text" class="form-control" name="totalCapacity" value="${centerInfo.totalCapacity}" required onkeypress="onlyNumber();">
+                                                </td>
+                                                <th><span class="fix">*</span>의료진수 (명)</th>
+                                                <td>
+                                                    <input type="text" class="form-control" name="totalStaff" value="${centerInfo.totalStaff}" required onkeypress="onlyNumber();">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th>아이디</th>
+                                                <td>
+                                                    <c:out value="${centerInfo.staffId}" />
+                                                    <input type="hidden" name="staffId" value="${centerInfo.staffId}">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                               <th><span class="fix">*</span>현재 비밀번호</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" name="staffPw" required>
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                               <th>신규 비밀번호</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" name="staffNewPw" placeholder="비밀번호 변경시에만 입력해주세요. (숫자, 영문, 특수문자 조합 8자리 이상)">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                               <th>비밀번호 확인</th>
+                                                <td colspan="3">
+                                                    <input type="password" class="form-control" name="staffNewPwCofirm" placeholder="신규 비밀번호 확인">
+                                                </td>
+                                            </tr>
+                                            <tr>
+                                                <th><span class="fix">*</span>담당자</th>
+                                                <td>
+                                                    <input type="text" class="form-control" name="staffName" value="${centerInfo.staffName}" required>
+                                                </td>
+                                                <th><span class="fix">*</span>담당자 휴대전화번호</th>
+                                                <td>
+                                                    <input type="text" class="form-control" name="staffPhoneNumber" value="${centerInfo.staffPhoneNumber}" placeholder="010-1234-1234" required onkeypress="onlyNumber();">
+                                                </td>
+                                            </tr>
+                                        </table>
+                                        <div class="row mt-3">
+                                            <div class="col-12">
+                                                <div class="text-right">
+                                                    <button type="button" class="btn btn-outline-primary w100" onclick="location.href='./list';">취소</button>
+                                                    <button type="submit" class="btn btn-primary w100">수정</button>
                                                 </div>
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>전화번호</th>
-                                            <td colspan="3">
-                                                <input type="text" class="form-control" placeholder="예)1234-1234-1234">
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>수용인원(명)</th>
-                                            <td>
-                                                <input type="text" class="form-control" placeholder="100">
-                                            </td>
-                                            <th>의료진수 (명)</th>
-                                            <td>
-                                                <input type="text" class="form-control" placeholder="30">
-                                            </td>
-                                        </tr>
-                                        <tr>
-                                            <th>담당자</th>
-                                            <td>
-                                                <input type="text" class="form-control" placeholder="홍길동">
-                                            </td>
-                                            <th>담당자 휴대전화번호</th>
-                                            <td>
-                                                <input type="text" class="form-control" placeholder="010-1234-1234">
-                                            </td>
-                                        </tr>
-                                    </table>
-                                    <div class="row mt-3">
-                                        <div class="col-12">
-                                            <div class="text-right">
-                                                <button class="btn btn-outline-primary w100">취소</button>
-                                                <button class="btn btn-primary w100">등록</button>
                                             </div>
                                         </div>
                                     </div>
-                                </div>
+                                </form>
                             </div>
                         </div>
                     </div>

+ 2 - 2
src/main/webapp/WEB-INF/jsp/center/info.jsp

@@ -60,7 +60,7 @@
                                     <div class="row mb-3">
                                         <div class="col-12">
                                             <div class="text-right">
-                                                <button class="btn btn-primary w100">정보수정</button>
+                                                <button class="btn btn-primary w100" onclick="location.href='./edit?centerCode=${centerCode}';">정보수정</button>
                                             </div>
                                         </div>
                                     </div>
@@ -125,7 +125,7 @@
                                     <div class="row mt-3">
                                         <div class="col-12">
                                             <div class="text-right">
-                                                <button class="btn btn-primary w100" onclick="location.href='./list';">확인</button>
+                                                <button type="button" class="btn btn-primary w100" onclick="location.href='./list';">확인</button>
                                             </div>
                                         </div>
                                     </div>

+ 4 - 4
src/main/webapp/WEB-INF/jsp/center/new.jsp

@@ -125,7 +125,7 @@ $( function(){
                     <div class="row">
                         <div class="col-12">
                             <div class="card">
-                                <form action="./newProc" method="post" id="newForm">
+                                <form action="./newRegist" method="post" id="newForm">
                                     <div class="card-body">
                                         <table class="table mobile-table">
                                             <colgroup>
@@ -169,7 +169,7 @@ $( function(){
                                             <tr>
                                                 <th><span class="fix">*</span>전화번호</th>
                                                 <td colspan="3">
-                                                    <input type="text" class="form-control" name="centerNumber" placeholder="예)1234-1234-1234" required onkeypress="onlyNumber()">
+                                                    <input type="text" class="form-control" name="centerNumber" placeholder="010-1234-1234" required onkeypress="onlyNumber()">
                                                 </td>
                                             </tr>
                                             <tr>
@@ -189,7 +189,7 @@ $( function(){
                                                 </td>
                                                 <th><span class="fix">*</span>비밀번호</th>
                                                 <td>
-                                                    <input type="text" class="form-control" name="staffPw" required>
+                                                    <input type="password" class="form-control" name="staffPw" placeholder="숫자, 영문, 특수문자 조합 8자리 이상" required>
                                                 </td>
                                             </tr>
                                             <tr>
@@ -199,7 +199,7 @@ $( function(){
                                                 </td>
                                                 <th><span class="fix">*</span>담당자 휴대전화번호</th>
                                                 <td>
-                                                    <input type="text" class="form-control" name="staffPhoneNumber" required>
+                                                    <input type="text" class="form-control" name="staffPhoneNumber" placeholder="010-1234-1234" required onkeypress="onlyNumber();">
                                                 </td>
                                             </tr>
                                         </table>