From 2fe81eab1b653ffd19da3c1876e201d9a10ed6f7 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Sat, 08 Jan 2022 16:33:09 +0800
Subject: [PATCH] 1.登录记录新增修改,页面刷新token 不能算入 2.登录统计接口新增,统计明细查询接口新增

---
 src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java                |    8 +
 src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java          |   14 +++
 src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml             |  122 ++++++++++++++++++++++++++++++
 src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java    |   21 +++++
 src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java            |   10 ++
 src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java                    |   40 ++++++++++
 src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java |   21 +++++
 7 files changed, 233 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java b/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
index c7c8957..1dba304 100644
--- a/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
+++ b/src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
@@ -143,8 +143,12 @@
 				}
 			}
 		}else {
-			//新增登录记录
-			this.saveLoginRecord(userInfo);
+			System.out.println("grantType = " + grantType);
+			//刷新 token 不新增登录记录
+			if (!grantType.equals("refresh_token")){
+				//新增登录记录
+				this.saveLoginRecord(userInfo);
+			}
 		}
 		return TokenUtil.createAuthInfo(userInfo);
 	}
diff --git a/src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java b/src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java
index 1510359..3761f43 100644
--- a/src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java
+++ b/src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java
@@ -38,6 +38,17 @@
 	}
 
 	/**
+	 * 自定义分页(企业登录分页记录)
+	 * @param query page,size
+	 * @param loginRecord 登录记录信息对象
+	 */
+	@GetMapping("/getInformationLoginPage")
+	public R<IPage<LoginRecordVo>> getInformationLoginPage(LoginRecordVo loginRecord, Query query) {
+		IPage<LoginRecordVo> pages = loginRecordService.getInformationLoginPage(Condition.getPage(query), loginRecord);
+		return R.data(pages);
+	}
+
+	/**
 	 * 新增
 	 * @param loginRecord 登录记录信息对象
 	 */
@@ -91,4 +102,14 @@
 		return R.data(detail);
 	}
 
+	/**
+	 * 登录情况统计
+	 * @param loginRecord 登录记录信息对象
+	 */
+	@GetMapping("/getLoginDataStatistics")
+	public R getLoginDataStatistics(LoginRecordVo loginRecord) {
+		return R.data(loginRecordService.getLoginDataStatistics(loginRecord));
+	}
+
+
 }
diff --git a/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java b/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java
index 540c48f..4974c4a 100644
--- a/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java
+++ b/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java
@@ -22,4 +22,14 @@
      * @return
      */
 	List<LoginRecordVo> selectSecurityPaperPage(@Param("page") IPage<LoginRecordVo> page,@Param("loginRecord") LoginRecordVo loginRecord);
+
+    List<Integer> getLoginDataStatistics(@Param("loginRecord") LoginRecordVo loginRecord);
+
+	/**
+	 * 自定义分页(企业登录分页记录)
+	 * @param page
+	 * @param loginRecord
+	 * @return
+	 */
+	List<LoginRecordVo> getInformationLoginPage(@Param("page") IPage<LoginRecordVo> page,@Param("loginRecord") LoginRecordVo loginRecord);
 }
diff --git a/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml b/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml
index ed3f548..3a8bf07 100644
--- a/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml
+++ b/src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml
@@ -9,7 +9,7 @@
             bd.dept_name deptName
         from
             sys_login_record slr
-        left join blade_dept bd on bd.id = slr.dept_id
+            left join blade_dept bd on bd.id = slr.dept_id
         <if test="loginRecord.deptName!=null and loginRecord.deptName!=''">
             bd.dept_name like concat('%',#{loginRecord.deptName},'%')
         </if>
@@ -19,4 +19,124 @@
         order by slr.id desc
     </select>
 
+    <!--登录记录统计-->
+    <select id="getLoginDataStatistics" resultType="java.lang.Integer">
+        SELECT
+            count( * )
+        FROM
+            (
+            SELECT
+                a.*,
+                ifnull( b.c, 0 ) num
+            FROM
+                (
+                SELECT
+                    si.*
+                FROM
+                    sys_information si
+                    LEFT JOIN blade_dept bd ON si.departmentid = bd.id
+                    left join sys_jurisdiction sj on sj.id = si.jurisdiction
+                WHERE
+                    bd.is_deleted = 0
+                    AND bd.dept_category = 1
+                    <if test="loginRecord.jurisdiction!=null and loginRecord.jurisdiction!='' and loginRecord.jurisdiction!='1372091709474910209'">
+                        and (sj.id = #{loginRecord.jurisdiction} or sj.parent_id = #{loginRecord.jurisdiction})
+                    </if>
+                ) a
+                LEFT JOIN
+                (
+                    SELECT count( * ) c, dept_id FROM `sys_login_record`
+                    where DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(create_time)
+                    GROUP BY dept_id
+                ) b ON a.departmentid = b.dept_id
+            ) c
+        WHERE
+            num > 0 UNION ALL
+            (
+            SELECT
+                count( * )
+            FROM
+                (
+                SELECT
+                    a.*,
+                    ifnull( b.c, 0 ) num
+                FROM
+                    (
+                    SELECT
+                        si.*
+                    FROM
+                        sys_information si
+                        LEFT JOIN blade_dept bd ON si.departmentid = bd.id
+                        left join sys_jurisdiction sj on sj.id = si.jurisdiction
+                    WHERE
+                        bd.is_deleted = 0
+                        AND bd.dept_category = 1
+                        <if test="loginRecord.jurisdiction!=null and loginRecord.jurisdiction!='' and loginRecord.jurisdiction!='1372091709474910209'">
+                            and (sj.id = #{loginRecord.jurisdiction} or sj.parent_id = #{loginRecord.jurisdiction})
+                        </if>
+                    ) a
+                    LEFT JOIN
+                    (
+                    SELECT count( * ) c, dept_id FROM `sys_login_record`
+                    where DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(create_time)
+                    GROUP BY dept_id
+                    ) b ON a.departmentid = b.dept_id
+                ) c
+            WHERE
+            num = 0
+            )
+    </select>
+
+    <!--自定义分页(企业登录分页记录)-->
+    <select id="getInformationLoginPage" resultType="org.springblade.modules.loginrecord.vo.LoginRecordVo">
+        select * from (
+            SELECT
+            a.enterpriseName deptName,
+            a.stats,
+            sj.dept_name jurisdictionName,
+            ifnull( b.c, 0 ) num,
+            c.create_time createTime
+            FROM
+            (
+            SELECT
+            si.*
+            FROM
+            sys_information si
+            LEFT JOIN blade_dept bd ON si.departmentid = bd.id
+            WHERE
+            bd.is_deleted = 0
+            AND bd.dept_category = 1
+            ) a
+            left join
+             (
+             SELECT count( * ) c, dept_id FROM `sys_login_record`
+             where 1=1
+             <if test="loginRecord.startTime!=null and loginRecord.startTime!=''">
+                 and date(create_time) &gt;= #{loginRecord.startTime}
+             </if>
+             <if test="loginRecord.endTime!=null and loginRecord.endTime!=''">
+                 and date(create_time) &lt;= #{loginRecord.endTime}
+             </if>
+            GROUP BY dept_id
+             ) b ON a.departmentid = b.dept_id
+            left join
+             (
+             select dept_id,max(create_time) create_time from sys_login_record GROUP BY dept_id
+             ) c on a.departmentid = c.dept_id
+             left join sys_jurisdiction sj on a.jurisdiction = sj.id
+             where 1=1
+            <if test="loginRecord.jurisdiction!=null and loginRecord.jurisdiction!='' and loginRecord.jurisdiction!='1372091709474910209'">
+                and (sj.id = #{loginRecord.jurisdiction} or sj.parent_id = #{loginRecord.jurisdiction})
+            </if>
+            <if test="loginRecord.deptName!=null and loginRecord.deptName!=''">
+                and a.enterpriseName like concat('%',#{loginRecord.deptName},'%')
+            </if>
+        ) r where 1=1
+        <if test="loginRecord.types ==1">
+            and r.num = 0
+        </if>
+        <if test="loginRecord.types ==2">
+            and r.num > 0
+        </if>
+    </select>
 </mapper>
diff --git a/src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java b/src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java
index 8eedbba..c13a8b4 100644
--- a/src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java
+++ b/src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java
@@ -17,4 +17,18 @@
 	 * @param loginRecord 登录记录信息对象
 	 */
 	IPage<LoginRecordVo> selectSecurityPaperPage(IPage<LoginRecordVo> page, LoginRecordVo loginRecord);
+
+	/**
+	 * 登录情况统计
+	 * @param loginRecord 登录记录信息对象
+	 */
+    Object getLoginDataStatistics(LoginRecordVo loginRecord);
+
+	/**
+	 * 自定义分页(企业登录分页记录)
+	 * @param page
+	 * @param loginRecord
+	 * @return
+	 */
+	IPage<LoginRecordVo> getInformationLoginPage(IPage<LoginRecordVo> page, LoginRecordVo loginRecord);
 }
diff --git a/src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java b/src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java
index bc6fa2b..fe67b12 100644
--- a/src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java
+++ b/src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java
@@ -29,4 +29,25 @@
 	public IPage<LoginRecordVo> selectSecurityPaperPage(IPage<LoginRecordVo> page, LoginRecordVo loginRecord) {
 		return page.setRecords(baseMapper.selectSecurityPaperPage(page,loginRecord));
 	}
+
+	/**
+	 * 登录情况统计
+	 * @param loginRecord 登录记录信息对象
+	 */
+	@Override
+	public Object getLoginDataStatistics(LoginRecordVo loginRecord) {
+		//统计企业未登录与已登录情况统计对比
+		return baseMapper.getLoginDataStatistics(loginRecord);
+	}
+
+	/**
+	 * 自定义分页(企业登录分页记录)
+	 * @param page
+	 * @param loginRecord
+	 * @return
+	 */
+	@Override
+	public IPage<LoginRecordVo> getInformationLoginPage(IPage<LoginRecordVo> page, LoginRecordVo loginRecord) {
+		return page.setRecords(baseMapper.getInformationLoginPage(page,loginRecord));
+	}
 }
diff --git a/src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java b/src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java
index 60624bd..4b203c4 100644
--- a/src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java
+++ b/src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java
@@ -13,5 +13,45 @@
 @Data
 public class LoginRecordVo extends LoginRecord implements Serializable {
 
+	/**
+	 * 公司名称
+	 */
 	private String deptName;
+
+	/**
+	 * 辖区
+	 */
+	private String jurisdiction;
+
+	/**
+	 * 开始时间
+	 */
+	private String startTime;
+
+	/**
+	 * 截止时间
+	 */
+	private String endTime;
+
+	/**
+	 * 企业属性
+	 */
+	private String stats;
+
+	/**
+	 * 辖区名称
+	 */
+	private String jurisdictionName;
+
+	/**
+	 * 数量
+	 */
+	private Integer num;
+
+	/**
+	 * 是否无登录记录 1:无登录记录  2:有登录记录
+	 */
+	private Integer types;
+
+
 }

--
Gitblit v1.9.3