ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day68 - 스프링 팀 프로젝트 관리자 페이지 구현
    KIC/Spring 2021. 9. 27. 23:39
    반응형

     

     

    [userController.java]

    package com.kic.shopPro.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    import com.kic.shopPro.domain.TopItemVO;
    import com.kic.shopPro.domain.VisitorGraphVO;
    import com.kic.shopPro.domain.VisitorVO;
    import com.kic.shopPro.service.VisitorService;
    
    @Controller
    public class UserController {
    	
    	@Autowired
    	private VisitorService visitorService;
    
    	@RequestMapping(value="/admin/adminPage", method=RequestMethod.GET)
    	public String adminPageGetMethod(Model model) {
    		
    		visitorService.addVisitor();
    		
    		List<VisitorVO> visitors = visitorService.readVisitorList(); // 오늘 방문자, 어제 방문자, 누적 방문자 수 출력 기능
    		List<VisitorGraphVO> visitorGraph = visitorService.readVisitorGraphList(); // 방문자 그래프 출력 기능
    		
    		//String text = "결제 완료";
    		double reachedCost = ((double)visitorService.reachedTotalCost()/500000) * 100; // 50만원을 목표 금액으로한 퍼센트값 저장
    		
    		List<TopItemVO> topItemList = visitorService.readTopItemList();
    		
    		//오늘,어제 누적 방문자수 출력
    		model.addAttribute("visitors", visitors);
    		
    		System.out.println("===========================" + visitorGraph.size());
    		System.out.println("===========================" +visitorGraph.toString());
    		System.out.println("===========================" + visitorService.reachedTotalCost());
    		System.out.println("===========================" +reachedCost);
    		
    		// 방문자 그래프 출력
    		model.addAttribute("visitorGraph", visitorGraph);
    		
    		// 목표 도달 수익률 추이 출력
    		model.addAttribute("reachedCost", reachedCost);
    		
    		// 인기 품목 리스트
    		model.addAttribute("topItemList", topItemList);
    		
    		
    		return "admin/adminPage";
    	}
    
    	
    	
    	
    	@RequestMapping(value="/MyPage", method=RequestMethod.GET)
    	public String myPageGetMethod() {
    		return "MyPage";
    	}
    }

     

    [userMapper.xml]

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.kic.mapper.userMapper">
    
    	
    	
    	<select id="readVisit" resultType="com.kic.shopPro.domain.VisitorVO">
    		<![CDATA[ (select count(*) visitor from visitor group by visitdate order by visitdate desc limit 0, 2)
    					UNION
    					(select count(*) visitor from visitor) ]]>
    	</select>
    	
    	<select id="readVisitGraph" resultType="com.kic.shopPro.domain.VisitorGraphVO">
    		<![CDATA[ select visitdate, count(*) visitor from visitor group by visitdate order by visitdate limit 0, 5]]>
    	</select>
    	
    	<insert id="addVisit">
    	 	<![CDATA[ insert into visitor(visitdate) values(NOW())  ]]>
        </insert>
        
        <select id="reachedCost" resultType="int">
    		<![CDATA[   select sum(price) reachCost from orderlist where pay= "결제 완료"]]>
    	</select>
    	
    	<select id="readTopItem" resultType="com.kic.shopPro.domain.TopItemVO">
    		<![CDATA[ 	select i.itemname
    					from orderlist o, item i
    					where o.orderid = i.itemid
    					and pay= "결제 완료" order by count desc  ]]>
    	</select>
    
    </mapper>

     

    [adminPage.jsp]

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <title>W3.CSS Template</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
    <!-- 수정  -->
    <!-- 차트 부분-->
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    
    
    
    <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    
    
    
    <!-- 차트 링크 --> 
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> 
    <script src="https://cdn.jsdelivr.net/npm/chart.js@2.8.0"></script>
    
    
    
    <style>
    body,h1,h2,h3,h4,h5,h6 {font-family: "Raleway", sans-serif}
    hr {
      height: 0.5px;
      background-color: gray;
    }
    </style>
    <body class="w3-light-grey w3-content" style="max-width:1600px">
    
    <!-- Sidebar/menu -->
    <nav class="w3-sidebar w3-collapse w3-white w3-animate-left" style="z-index:3;width:300px;" id="mySidebar"><br>
      <div class="w3-container">
        <a href="#" onclick="w3_close()" class="w3-hide-large w3-right w3-jumbo w3-padding w3-hover-grey" title="close menu">
          <i class="fa fa-remove"></i>
        </a>
        <h2 onclick="location.href ='/shopPro/main'"><b>쇼핑몰 사이트</b></h2>
        <p class="w3-text-grey">Market Info</p>
      </div>
      <div class="w3-bar-block">
        <a href="#portfolio" onclick="w3_close()" class="w3-bar-item w3-button w3-padding w3-text-teal"><i class="fa fa-th-large fa-fw w3-margin-right"></i>admin Info</a> 
        <a href="#about" onclick="w3_close()" class="w3-bar-item w3-button w3-padding"><i class="fa fa-user fa-fw w3-margin-right"></i>ABOUT</a> 
        <a href="#contact" onclick="w3_close()" class="w3-bar-item w3-button w3-padding"><i class="fa fa-envelope fa-fw w3-margin-right"></i>CONTACT</a>
      </div>
    
    </nav>
    
    
    
    <!-- Overlay effect when opening sidebar on small screens -->
    <div class="w3-overlay w3-hide-large w3-animate-opacity" onclick="w3_close()" style="cursor:pointer" title="close side menu" id="myOverlay"></div>
    
    <!-- !PAGE CONTENT! -->
    <div class="w3-main" style="margin-left:300px">
    
      <!-- Header -->
      <!-- 
      <header id="portfolio">
        <a href="#"><img src="/w3images/avatar_g2.jpg" style="width:65px;" class="w3-circle w3-right w3-margin w3-hide-large w3-hover-opacity"></a>
        <span class="w3-button w3-hide-large w3-xxlarge w3-hover-text-grey" onclick="w3_open()"><i class="fa fa-bars"></i></span>
        <div class="w3-container">
        
        <h1><b>관리자 페이지</b></h1>
    	<br>
        </div>
        
      </header>
       -->
       
       <!-- 관리자 페이지 헤더 -->
      <jsp:include page="/WEB-INF/views/sideView/adminHeader.jsp"></jsp:include>
    
      <div class="w3-container w3-padding-large" style="margin-bottom:32px;">
    
        
        <h4><b>방문자 수</b></h4>
        <br>
        <!-- Progress bars / Skills -->
        <table style="width:500px">
        <tr>
        <td><b>오늘 방문수</b></td>
        <td><b>어제 방문수</b></td>
        <td><b>누적 방문수</b></td>
        </tr>
        
        <tr>
        <c:forEach var="member" items="${visitors}">
           <td> ${member.visitor}</td>
           
        </c:forEach>
        </tr>
    
        </table>
    
    
    
        <br><br><br><br>
        
        
        
    	<h4><b>방문자 수 그래프</b></h4>
        <div class="container" style="width:70%; float:left;"> 
        	<canvas id="myChart"></canvas> 
        </div>
        
        
        
        <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
        
        <!-- 부트스트랩 --> 
        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" 				
        		integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" 
        		crossorigin="anonymous">
        </script> 
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" 
        		integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" 
        		crossorigin="anonymous">
        </script> 
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" 
        		integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" 
        		crossorigin="anonymous">
        </script>
        
        
        <!-- 차트 --> 
        <script> 
        	var ctx = document.getElementById('myChart').getContext('2d');
        	
        	var date = new Array();
        	var visitdata = new Array();
        	<c:forEach var="member" items="${visitorGraph}">date.push("${member.visitdate}");visitdata.push("${member.visitor}"); </c:forEach>
            var chart = new Chart(ctx, 
            	{ // 챠트 종류를 선택 
                	type: 'line', // 챠트를 그릴 데이타 
                	data: { 
                    	labels: date, 						
                    	
                    	
                    	datasets: [{ 
                        	label: '방문자 수 차트', 
                            backgroundColor: 'transparent', 
                            borderColor: 'red', 
                            data: visitdata
                         }] 
                        }, 
                        // 옵션 
                        options: {} 
                      }); 
        </script>
    
    
        <h4><b>수익 목표 달성률</b></h4>
        <br>
        <div class="w3-grey" style="width:70%;">
          <div class="w3-container w3-dark-grey w3-padding w3-center" style="width:${reachedCost}%">${reachedCost}%</div>
        </div>
        <br><br>
        <hr>
        <br><br>
        
        
          <div>
              <h4>How much I charge</h4>
        <!-- Pricing Tables -->
    
          
          <div class="w3-third w3-margin-bottom">
            <ul class="w3-ul w3-border w3-white ">
              <li class="w3-black w3-center w3-xlarge w3-padding-32">인기 상품 품목</li>
    
    	   	 <table>
    	   	    
       			 <c:forEach end="4" varStatus="i" var="member" items="${topItemList}">
       			  <tr>
         		  <td> <li class="w3-padding-16"><b> ${i.index + 1}. &nbsp;</b><td>${member.itemName}</li></td>
           		  </tr>
        		</c:forEach>
        		
    
        	</table>
            </ul>
          </div>
          
          
    
        </div>
    
          
    
       <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br>
        <hr>
        <br><br>
      
    
    
      <!-- Footer -->
      <footer class="w3-container w3-padding-32 w3-dark-grey">
      <div class="w3-row-padding">
        <div class="w3-third">
          <h3>FOOTER</h3>
          <p>Praesent tincidunt sed tellus ut rutrum. Sed vitae justo condimentum, porta lectus vitae, ultricies congue gravida diam non fringilla.</p>
          <p>Powered by <a href="https://www.w3schools.com/w3css/default.asp" target="_blank">w3.css</a></p>
        </div>
      
        <div class="w3-third">
          <h3>BLOG POSTS</h3>
          <ul class="w3-ul w3-hoverable">
            <li class="w3-padding-16">
              <img src="/w3images/workshop.jpg" class="w3-left w3-margin-right" style="width:50px">
              <span class="w3-large">Lorem</span><br>
              <span>Sed mattis nunc</span>
            </li>
            <li class="w3-padding-16">
              <img src="/w3images/gondol.jpg" class="w3-left w3-margin-right" style="width:50px">
              <span class="w3-large">Ipsum</span><br>
              <span>Praes tinci sed</span>
            </li> 
          </ul>
        </div>
    
        <div class="w3-third">
          <h3>POPULAR TAGS</h3>
          <p>
            <span class="w3-tag w3-black w3-margin-bottom">Travel</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">New York</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">London</span>
            <span class="w3-tag w3-grey w3-small w3-margin-bottom">IKEA</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">NORWAY</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">DIY</span>
            <span class="w3-tag w3-grey w3-small w3-margin-bottom">Ideas</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">Baby</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">Family</span>
            <span class="w3-tag w3-grey w3-small w3-margin-bottom">News</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">Clothing</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">Shopping</span>
            <span class="w3-tag w3-grey w3-small w3-margin-bottom">Sports</span> <span class="w3-tag w3-grey w3-small w3-margin-bottom">Games</span>
          </p>
        </div>
    
      </div>
      </footer>
      
      <div class="w3-black w3-center w3-padding-24">Powered by <a href="https://www.w3schools.com/w3css/default.asp" title="W3.CSS" target="_blank" class="w3-hover-opacity">w3.css</a></div>
    
    <!-- End page content -->
    </div>
    
    <script>
    // Script to open and close sidebar
    function w3_open() {
        document.getElementById("mySidebar").style.display = "block";
        document.getElementById("myOverlay").style.display = "block";
    }
     
    function w3_close() {
        document.getElementById("mySidebar").style.display = "none";
        document.getElementById("myOverlay").style.display = "none";
    }
    </script>
    
    </body>
    </html>
    300x250

    댓글

Designed by Tistory.