Преглед на файлове

팝업 기능 추가 작업중 2

huiwonseo преди 4 години
родител
ревизия
5e4d1dd4cb

+ 46 - 2
src/main/java/com/lemon/lifecenter/controller/PopupController.java

@@ -1,19 +1,63 @@
 package com.lemon.lifecenter.controller;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import com.lemon.lifecenter.common.LifeCenterController;
+import com.lemon.lifecenter.common.LifeCenterSessionController;
+import com.lemon.lifecenter.dto.PopupDTO;
+import com.lemon.lifecenter.service.PopupService;
 
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.ModelAttribute;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.servlet.ModelAndView;
 
 @Controller
 @RequestMapping("/popup")
 public class PopupController extends LifeCenterController {
+  @Autowired
+  private PopupService popupService;
 
   @RequestMapping("/new")
-  public ModelAndView list() {
+  public ModelAndView newPopup() {
 
     ModelAndView mv = setMV("popup/new");
     return mv;
-  }  
+  }
+
+  @RequestMapping("/list")
+  public ModelAndView listPopup() {
+    PopupDTO dto = new PopupDTO();
+    int total = popupService.selectPopupCount(dto);
+    List<PopupDTO> popupList = new ArrayList<PopupDTO>();
+
+    if( total > 0 ) {
+      popupList = popupService.selectPopupList(dto);
+    }
+
+    ModelAndView mv = setMV("popup/list");
+    mv.addObject( "total", total );
+    mv.addObject( "popupList", popupList );
+    
+    return mv;
+  }
+
+
+  @RequestMapping(value = "/new/insert", method = RequestMethod.POST)
+  public String insertPopupData(@ModelAttribute("dto") final PopupDTO dto,
+      HttpServletRequest request, HttpServletResponse response) {
+    String sesId = LifeCenterSessionController.getSession(request, "sesId");
+    
+    dto.setCreatedBy( sesId );
+    popupService.insertPopupData( dto );
+
+    return "redirect:/popup/list";
+  }
+
 }

+ 36 - 0
src/main/java/com/lemon/lifecenter/dto/PopupDTO.java

@@ -5,6 +5,42 @@ public class PopupDTO {
   private String content;
   private String startDate;
   private String endDate;
+  private String createDate;
+  private String createdBy;
+  private String updateDate;
+  private String updatedBy;
+
+	public String getCreateDate() {
+		return this.createDate;
+	}
+
+	public void setCreateDate(String createDate) {
+		this.createDate = createDate;
+	}
+
+	public String getCreatedBy() {
+		return this.createdBy;
+	}
+
+	public void setCreatedBy(String createdBy) {
+		this.createdBy = createdBy;
+	}
+
+	public String getUpdateDate() {
+		return this.updateDate;
+	}
+
+	public void setUpdateDate(String updateDate) {
+		this.updateDate = updateDate;
+	}
+
+	public String getUpdatedBy() {
+		return this.updatedBy;
+	}
+
+	public void setUpdatedBy(String updatedBy) {
+		this.updatedBy = updatedBy;
+	}
 
   public String getTitle() {
     return this.title;

+ 10 - 1
src/main/java/com/lemon/lifecenter/mapper/PopupMapper.java

@@ -1,10 +1,19 @@
 package com.lemon.lifecenter.mapper;
 
+import java.util.List;
+
+import com.lemon.lifecenter.dto.PopupDTO;
+
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
 @Repository
 @Mapper
 public interface PopupMapper {
-  
+  public int selectPopupCount( PopupDTO dto );
+  public List<PopupDTO> selectPopupList( PopupDTO dto );
+  public PopupDTO selectPopupData( PopupDTO dto );
+  public void insertPopupData( PopupDTO dto );
+  public void updatePopupData( PopupDTO dto );
+  public void deletePopupData( PopupDTO dto );
 }

+ 39 - 0
src/main/java/com/lemon/lifecenter/service/PopupService.java

@@ -0,0 +1,39 @@
+package com.lemon.lifecenter.service;
+
+import java.util.List;
+
+import com.lemon.lifecenter.dto.PopupDTO;
+import com.lemon.lifecenter.mapper.PopupMapper;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PopupService {
+  @Autowired
+  private PopupMapper popupMapper;
+
+  public int selectPopupCount(PopupDTO dto){
+    return popupMapper.selectPopupCount( dto );
+  }
+
+  public List<PopupDTO> selectPopupList(PopupDTO dto) {
+    return popupMapper.selectPopupList( dto );
+  }
+
+  public PopupDTO selectPopupData(PopupDTO dto){
+    return popupMapper.selectPopupData(dto);
+  }
+
+  public void insertPopupData(PopupDTO dto) {
+    popupMapper.insertPopupData(dto);
+  }  
+
+  public void updatePopupData(PopupDTO dto){
+    popupMapper.updatePopupData(dto);
+  }
+
+  public void deletePopupData(PopupDTO dto){
+    popupMapper.deletePopupData(dto);
+  }
+}

+ 35 - 3
src/main/resources/mybatis/mapper/popup/popup.xml

@@ -14,13 +14,15 @@
             SELECT idx,
                    title,
                    content,
-                   start_date AS startDate,
-                   end_date AS endDate
+                   DATE_FORMAT( start_date, '%Y-%m-%d' ) AS startDate,
+                   DATE_FORMAT( end_date, '%Y-%m-%d' ) AS endDate,
+                   DATE_FORMAT( create_date, '%Y-%m-%d' ) AS createDate,
+                   created_by AS createdBy
               FROM popup_list
         ]]>
     </select>
 
-    <update id="updatePopupData" parameterType="PopupDTO" resultType="PopupDTO">
+    <select id="selectPopupData" parameterType="PopupDTO" resultType="PopupDTO">
         <![CDATA[
             SELECT idx,
                    title,
@@ -28,6 +30,36 @@
                    start_date AS startDate,
                    end_date AS endDate
               FROM popup_list
+             WHERE idx = #{idx}
+        ]]>
+    </select>
+
+    <insert id="insertPopupData" parameterType="PopupDTO">
+        <![CDATA[
+            INSERT 
+              INTO popup_list
+                   ( title,    content,    start_date,   end_date,   create_date, created_by )
+            VALUES ( #{title}, #{content}, #{startDate}, #{endDate}, NOW(),       #{createdBy} )
+        ]]>
+    </insert>
+    
+
+    <update id="updatePopupData" parameterType="PopupDTO">
+        <![CDATA[
+            UPDATE popup_list
+               SET title = #{title},
+                   content = #{content},
+                   start_date = #{startDate},
+                   end_date = #{endDate}
+             WHERE idx = #{idx}
         ]]>
     </update>
+
+    <delete id="deletePopupData" parameterType="PopupDTO">
+        <![CDATA[
+            DELETE
+              FROM popup_list
+             WHERE idx = #{idx}
+        ]]>
+    </delete>
 </mapper>

+ 209 - 0
src/main/webapp/WEB-INF/jsp/popup/list.jsp

@@ -0,0 +1,209 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+    pageEncoding="UTF-8"%>
+<jsp:include page="${data._INCLUDE}/header.jsp"></jsp:include>
+<script>
+var startDate = "<c:out value='${startDate}'/>";
+var endDate   = "<c:out value='${endDate}'/>";
+
+    $(function() {
+        $("input[name=\"startDate\"]").daterangepicker({
+            singleDatePicker : true,
+            showDropdowns : true,
+            locale : {
+                format : "YYYY-MM-DD"
+            }
+        });
+//         $("input[name=\"endDate\"]").daterangepicker({
+//             singleDatePicker : true,
+//             showDropdowns : true,
+//             locale : {
+//                 //format : "M/DD hh:mm A"
+//                 format : "YYYY-MM-DD"
+//             }
+//         });
+        
+        $("input[name=\"startDate\"]").val( startDate );
+//         $("input[name=\"endDate\"]").val( endDate );
+    });
+
+function getExcel(){
+	if( $.trim( $( "#downMemo" ).val() ) == "" ){
+        alertBox({ txt : "사유를 입력해주세요" });
+        $( ".modal-header>.modal-title h3" ).remove();
+        return false;
+    }
+    var newForm = $( "#searchForm" ).clone();
+    
+    newForm.attr( "id", "excelForm" );
+    newForm.attr( "method", "post" );
+    newForm.attr( "action", "./excel" );
+    newForm.attr( "target", "_blank" );
+    newForm.hide();
+    
+    $( document.body ).append( newForm );
+    newForm.append( $("#downMemo").clone() );
+    newForm.submit();
+    $( "button.close" ).click();
+    $( "#downMemo" ).val( "" );
+    $( "#excelForm" ).remove();
+    
+}
+</script>
+<style>
+table { 
+		border-collapse: collapse; 
+		border-spacing: 0;		
+		width: 100%; 
+		table-layout: fixed;
+	}
+	td.ellipsis { 
+		vertical-align: middle; 
+		padding:5px;
+		overflow:hidden;
+		white-space : nowrap;
+		text-overflow: ellipsis;
+	 }
+
+	td.textOverDefault {
+		white-space : normal; /*기본값*/
+		text-overflow: clip; /*기본값*/
+	}
+</style>
+</head>
+<body>
+    <div class="modal fade" id="excelDownMemo" tabindex="-1" role="dialog" aria-hidden="true" data-memoid="">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">생활치료센터 리스트 Excel 다운로드</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
+                            aria-hidden="true">&times;</span> </button>
+                </div>
+                <div class="modal-body m-3">
+                    <table class="table mobile-table">
+                        <colgroup>
+                            <col style="width: 20%">
+                            <col style="width: 80%">
+                        </colgroup>
+                        <tr>
+                            <th><span class="fix">*</span>다운로드 사유</th>
+                            <td>
+                                <div class="form-row">
+                                    <textarea id="downMemo" name="downMemo" class="form-control" rows="6" placeholder="" maxlength="200"></textarea>
+                                </div>
+                            </td>
+                        </tr>
+                    </table>
+                </div>
+                <div class="addMemoTools modal-footer">
+                    <button type="button" class="btn btn-outline-primary" data-dismiss="modal">취소</button>
+                    <button type="button" class="btn btn-primary" onclick="getExcel();">제출 후 다운로드</button>
+                </div>
+            </div>
+        </div>
+    </div>
+    
+    <div class="wrapper">
+        <jsp:include page="${data._INCLUDE}/sidebar.jsp"></jsp:include>
+        
+        <div class="main">
+            <jsp:include page="${data._INCLUDE}/top.jsp"></jsp:include>
+
+            <main class="content">
+                <div class="container-fluid p-0">
+                    <!-- 환지관리 START -->
+                    <div class="row">
+                        <div class="col-12 col-lg-6">
+                            <h1 class="h3 mb-3">팝업 관리</h1>
+                        </div>
+                        <div class="col-12 col-lg-6  text-right">
+                            <nav aria-label="breadcrumb">
+                                <ol class="breadcrumb">
+                                    <li class="breadcrumb-item"><a href="javscript:;">Home</a></li>
+                                    <li class="breadcrumb-item active">팝업 관리</li>
+                                </ol>
+                            </nav>
+                        </div>
+                    </div>
+                    <div class="row">
+                        <div class="col-12">
+                            <div class="card">
+                                <div class="card-body">
+                                    <div class="row mb-3">
+                                        <div class="col-5">전체 :
+                                            <fmt:formatNumber value="${total}" pattern="#,###" />
+                                        </div>
+                                        <div class="col-7 text-right">
+                                            <button class="btn btn-secondary  mb-1" data-toggle="modal" data-target="#excelDownMemo">팝업 전체 미리보기</button>
+                                            <c:if test="${role._CREATE eq 'Y'}">
+                                                <button class="btn btn-primary mb-1" onclick="location.href='./new';">생활치료센터 신규 등록</button>
+                                            </c:if>
+                                        </div>
+                                    </div>
+                                    <div class="table-responsive">
+                                        <table class="table table-striped text-center">
+                                            <colgroup>
+                                                <col style=" width: 5%; ">
+                                                <col style=" width: 10%; ">
+                                                <col style=" width: 20%; ">
+                                                <col style=" width: 10%; ">
+                                                <col style=" width: 10%; ">
+                                                <col style=" width: 10%; ">
+                                                <col style=" width: 10%; ">
+                                                <col style=" width: 5%; ">
+                                            </colgroup>
+                                            <thead>
+                                                <tr>
+                                                    <th>번호</th>
+                                                    <th>팝업 제목</th>
+                                                    <th>팝업 내용</th>
+                                                    <th>팝업 시작일</th>
+                                                    <th>팝업 종료일</th>
+                                                    <th>등록자</th>
+                                                    <th>등록일</th>
+                                                    <th>수정</th>
+                                                </tr>
+                                            </thead>
+                                            <tbody>
+                                                <c:choose>
+                                                    <c:when test="${total > 0}">
+                                                        <c:forEach var="pl" items="${popupList}" varStatus="lStatus">
+                                                            <c:set var="pageNum" value="${ ( total - lStatus.index ) - ( (page - 1) * pageSize ) }" />
+                                                            
+                                                            <tr>
+                                                                <td><fmt:formatNumber value="${pageNum}" pattern="#,###" /></td>
+                                                                <td class="ellipsis"><div style="vertical-align: middle;"></div><c:out value="${pl.title}" /></div></td>
+                                                                <td class="ellipsis"><div style="text-align:left;height:100px;overflow: hidden;"><c:out value="${pl.content}" escapeXml="false" /></div></td>
+                                                                <td><c:out value="${pl.startDate}" /></td>
+                                                                <td><c:out value="${pl.endDate}" /></td>
+                                                                <td><c:out value="${pl.createdBy}" /></td>
+                                                                <td><c:out value="${pl.createDate}" /></td>
+                                                                <td><a href="#" id="memoLink" class="memo h3"><i id="memoLinkIcon" class="align-middle ml-2 fas fa-fw fa-edit"></i></a></td>
+                                                            </tr>
+                                                        </c:forEach>
+                                                    </c:when>
+                                                    <c:otherwise>
+                                                        <tr>
+                                                            <td colspan="8">등록된 팝업이 없습니다.</td>
+                                                        </tr>
+                                                    </c:otherwise>
+                                                </c:choose>
+                                            </tbody>
+                                        </table>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!-- 환자관리 END -->
+                </div>
+            </main>
+
+            <jsp:include page="${data._INCLUDE}/footer.jsp"></jsp:include>
+        </div>
+    </div>
+</body>
+</html>

Файловите разлики са ограничени, защото са твърде много
+ 65 - 82
src/main/webapp/WEB-INF/jsp/popup/new.jsp