智慧保安后台管理-外网
1.登录记录新增修改,页面刷新token 不能算入
2.登录统计接口新增,统计明细查询接口新增
7 files modified
236 ■■■■■ changed files
src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java 8 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml 122 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java 40 ●●●●● patch | view | raw | blame | history
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);
    }
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));
    }
}
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);
}
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>
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);
}
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));
    }
}
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;
}