하석형 하석형 05-29
250529 하석형 접속 통계 조회 SQL 관리자/사용자/비로그인 사용자로 설정
@c0546974f091b6837e6859de1cabf3bb7d2e3eab
src/main/java/com/takensoft/cms/cntnStats/service/Impl/CntnStatsServiceImpl.java
--- src/main/java/com/takensoft/cms/cntnStats/service/Impl/CntnStatsServiceImpl.java
+++ src/main/java/com/takensoft/cms/cntnStats/service/Impl/CntnStatsServiceImpl.java
@@ -56,6 +56,7 @@
     @Transactional(rollbackFor = Exception.class)
     public int cntnStatsSave(CntnStatsDTO cntnStatsDTO){
         try {
+
             LocalDate date = LocalDate.now(); // 오늘 금일 날짜 출력
             CntnStatsVO vo = new CntnStatsVO(); // 접속 통계 객체 생성
 
@@ -68,13 +69,13 @@
             // 사용자 접속 통계 생성
             if (cntnStatsDTO.getTypeId() == null || cntnStatsDTO.getTypeId().equals("")) {
                 result = userCntnStatsSave(vo, cntnStatsDTO);
-                // 메뉴 접속 통계 생성
+            // 메뉴 접속 통계 생성
             } else if (cntnStatsDTO.getTypeId().contains("MENU")) {
                 result = menuCntnStatsSave(vo, cntnStatsDTO);
-                // 게시판 접속 통계 생성
+            // 게시판 접속 통계 생성
             } else if (cntnStatsDTO.getTypeId().contains("BBS")) {
                 result = bbsCntnStatsSave(vo, cntnStatsDTO);
-                // 콘텐츠 접속 통게 생성
+            // 콘텐츠 접속 통게 생성
             } else if (cntnStatsDTO.getTypeId().contains("CONTS")) {
                 result = contsCntnStatsSave(vo, cntnStatsDTO);
             }
src/main/java/com/takensoft/cms/cntnStats/web/CntnStatsController.java
--- src/main/java/com/takensoft/cms/cntnStats/web/CntnStatsController.java
+++ src/main/java/com/takensoft/cms/cntnStats/web/CntnStatsController.java
@@ -44,7 +44,7 @@
      * @param cntnStatsDTO - 접속 통계 DTO
      * @return ResponseEntity - 접속 통계 등록 응답 결과
      *
-     * 접속 통게 등록
+     * 접속 통계 등록
      */
     @PostMapping("/saveProc.json")
     public ResponseEntity<?> saveProc(@RequestBody CntnStatsDTO cntnStatsDTO){
src/main/resources/mybatis/mapper/cntnStats/cntnStats-SQL.xml
--- src/main/resources/mybatis/mapper/cntnStats/cntnStats-SQL.xml
+++ src/main/resources/mybatis/mapper/cntnStats/cntnStats-SQL.xml
@@ -237,7 +237,14 @@
         SELECT ai.dates
              , array_agg(authrt_nm) AS authrt_nm
              , array_agg(COALESCE(ucs.cntn_nope, 0)) AS cntn_nope
-        FROM (SELECT generate_series(to_date(#{startDt}, 'YYYY-MM-DD'), to_date(#{endDt}, 'YYYY-MM-DD'), '1 day'::interval)::date AS dates , authrt_cd , authrt_nm FROM authrt_info WHERE use_yn = 'Y') AS ai
+        FROM (
+            SELECT generate_series(to_date(#{startDt}, 'YYYY-MM-DD')
+                   , to_date(#{endDt}, 'YYYY-MM-DD'), '1 day'::interval)::date AS dates
+                   , authrt_cd , authrt_nm
+            FROM authrt_info
+            WHERE use_yn = 'Y'
+              AND authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */
+            ORDER BY reg_dt) AS ai
         LEFT JOIN (SELECT authrt_cd, to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') AS cntn_date, cntn_nope FROM user_cntn_stats) AS ucs
         ON dates = ucs.cntn_date
         AND ai.authrt_cd = ucs.authrt_cd
@@ -255,6 +262,7 @@
           FROM user_cntn_stats
          WHERE to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= to_date(#{startDt}, 'YYYY-MM-DD')
            AND to_date(#{endDt}, 'YYYY-MM-DD') >= to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD')
+           AND authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */
     </select>
 
     <!--
@@ -279,25 +287,59 @@
              WHERE mi.use_yn = 'Y'
                AND mi.menu_nm != '메인'
         )
-        select (SELECT menu_name FROM menu_tree WHERE menu_tree.menu_id = menus.menu_id) AS menu_name
-             , array_agg((SELECT authrt_nm FROM authrt_info WHERE authrt_info.authrt_cd = menus.authrt_cd AND authrt_info.use_yn = 'Y')) AS authrt_nm
-             , array_agg(cntn_nope) AS cntn_nope
-          from (select mt.menu_id, mai.authrt_cd, SUM(COALESCE(mcs.cntn_nope, 0)) AS cntn_nope
+        SELECT (SELECT menu_name FROM menu_tree WHERE menu_tree.menu_id = menus.menu_id) AS menu_name
+             , array_agg(menus.authrt_nm ORDER BY sort_order) AS authrt_nm
+             , array_agg(menus.cntn_nope ORDER BY sort_order) AS cntn_nope
+          FROM (SELECT mt.menu_id, mai.authrt_cd, ai.authrt_nm, ai.sort_order, SUM(COALESCE(mcs.cntn_nope, 0)) AS cntn_nope
                   from menu_tree AS mt
-             LEFT JOIN menu_authrt_info AS mai
+             LEFT JOIN (SELECT menu_id, authrt_cd FROM menu_authrt_info WHERE authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE')) AS mai /* 커스텀 권한 조회 필요 시 WHERE 조건 주석처리 */
                     ON mt.menu_id = mai.menu_id
-             LEFT JOIN authrt_info AS ai
+             LEFT JOIN (
+                      SELECT authrt_cd, authrt_nm, reg_dt,
+                             ROW_NUMBER() OVER (ORDER BY reg_dt) AS sort_order
+                      FROM authrt_info
+                      WHERE use_yn = 'Y'
+                  ) AS ai
                     ON mai.authrt_cd = ai.authrt_cd
              LEFT JOIN menu_cntn_stats AS mcs
                     ON mt.menu_id = mcs.menu_id
                    AND mai.authrt_cd = mcs.authrt_cd
                    AND TO_DATE(CONCAT(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= TO_DATE(#{startDt}, 'YYYY-MM-DD')
                    AND TO_DATE(#{endDt}, 'YYYY-MM-DD') >= TO_DATE(CONCAT(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD')
-                 WHERE ai.use_yn='Y'
-              group by mt.menu_id, mai.authrt_cd) as menus
-      group by menu_id
-      order by menu_name
+            GROUP BY mt.menu_id, mai.authrt_cd, ai.authrt_nm, ai.sort_order) as menus
+        GROUP BY menu_id
+        ORDER BY menu_name
     </select>
+
+<!--    authrt_ordered AS (-->
+<!--    SELECT authrt_cd, authrt_nm, reg_dt,-->
+<!--    ROW_NUMBER() OVER (ORDER BY reg_dt) AS sort_order-->
+<!--    FROM authrt_info-->
+<!--    WHERE use_yn = 'Y'-->
+<!--    AND authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE')-->
+<!--    ),-->
+<!--    menus AS (-->
+<!--    SELECT-->
+<!--    mt.menu_id,-->
+<!--    ao.authrt_cd,-->
+<!--    ao.authrt_nm,-->
+<!--    ao.sort_order,-->
+<!--    SUM(COALESCE(mcs.cntn_nope, 0)) AS cntn_nope-->
+<!--    FROM menu_tree mt-->
+<!--    LEFT JOIN (SELECT menu_id, authrt_cd FROM menu_authrt_info WHERE authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE')) mai ON mt.menu_id = mai.menu_id-->
+<!--    LEFT JOIN authrt_ordered ao ON mai.authrt_cd = ao.authrt_cd-->
+<!--    LEFT JOIN menu_cntn_stats mcs ON mt.menu_id = mcs.menu_id-->
+<!--    AND mai.authrt_cd = mcs.authrt_cd-->
+<!--    AND TO_DATE(CONCAT(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') BETWEEN TO_DATE(#{startDt}, 'YYYY-MM-DD') AND TO_DATE(#{endDt}, 'YYYY-MM-DD')-->
+<!--    GROUP BY mt.menu_id, ao.authrt_cd, ao.authrt_nm, ao.sort_order-->
+<!--    )-->
+<!--    SELECT-->
+<!--    (SELECT menu_name FROM menu_tree WHERE menu_tree.menu_id = menus.menu_id) AS menu_name,-->
+<!--    array_agg(menus.authrt_nm ORDER BY menus.sort_order) AS authrt_nm,-->
+<!--    array_agg(menus.cntn_nope ORDER BY menus.sort_order) AS cntn_nope-->
+<!--    FROM menus-->
+<!--    GROUP BY menu_id-->
+<!--    ORDER BY menu_name-->
 
     <!--
         작 성 자 : 박정하
@@ -324,6 +366,7 @@
               FROM menu_cntn_stats
              WHERE to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD') >= to_date(#{startDt}, 'YYYY-MM-DD')
                AND to_date(#{endDt}, 'YYYY-MM-DD') >= to_date(concat(cntn_yr, cntn_mm, cntn_day), 'YYYYMMDD')
+               AND authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */
         ) as menu
             on menu_tree.menu_id = menu.menu_id
          WHERE menu_tree.use_yn = 'Y'
@@ -338,15 +381,19 @@
     -->
     <select id="selectBbsCntnStats" parameterType="HashMap" resultType="HashMap">
         SELECT (SELECT bbs_nm from bbs_mng where bbs_mng_id = bbs.bbs_mng_id) AS bbs_nm
-             , array_agg((SELECT authrt_nm FROM authrt_info WHERE authrt_info.authrt_cd = bbs.authrt_cd AND authrt_info.use_yn = 'Y')) AS authrt_nm
-             , array_agg(coalesce(cntn_nope, 0)) AS cntn_nope
+             , array_agg(bbs.authrt_nm ORDER BY bbs.sort_order) AS authrt_nm
+             , array_agg(coalesce(cntn_nope, 0) ORDER BY bbs.sort_order) AS cntn_nope
         from (
             SELECT bm.bbs_mng_id
                  , ad.authrt_cd
+                 , ad.authrt_nm
+                 , ad.sort_order
               from bbs_mng as bm
             left join (
                 SELECT mai.authrt_cd
+                     , ai.authrt_nm
                      , menu_type_ctgry
+                     , ROW_NUMBER() OVER (ORDER BY ai.reg_dt) AS sort_order
                   from menu_info as mi
              LEFT JOIN menu_authrt_info as mai
                     on mi.menu_id = mai.menu_id
@@ -354,6 +401,7 @@
                     ON mai.authrt_cd = ai.authrt_cd
                  WHERE mi.use_yn = 'Y'
                    AND ai.use_yn='Y'
+                   AND mai.authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */
               order by mi.menu_id
             ) as ad
               on bm.bbs_mng_id = ad.menu_type_ctgry
@@ -394,6 +442,7 @@
                     ON mai.authrt_cd = ai.authrt_cd
                  WHERE mi.use_yn = 'Y'
                    AND ai.use_yn='Y'
+                   AND mai.authrt_cd IN ('ROLE_ADMIN', 'ROLE_USER', 'ROLE_NONE') /* 커스텀 권한 조회 필요 시 주석처리 */
               ORDER BY mi.menu_id
             ) AS ad
                 ON bm.bbs_mng_id = ad.menu_type_ctgry
Add a comment
List