Browse Source

解决校验表数据缺失问题

fuyuhchuan 1 year ago
parent
commit
aead103214

+ 2 - 1
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/controller/web/SysLogininforController.java

@@ -47,7 +47,6 @@ public class SysLogininforController extends BaseController {
                         .eq(SysCheckCode::getPlaintext, list.get(i).getInfoId())
                         .eq(SysCheckCode::getCheckCodeType, 3);
                 SysCheckCode sysCheckCode = sysCheckCodeMapper.selectOne(query);
-
                 if (sysCheckCode == null) {
                     throw new BusinessException("日志数据异常!");//登录日志记录有数据,而校验码表中没有数据
                 }
@@ -65,6 +64,8 @@ public class SysLogininforController extends BaseController {
                         String checkCode = operation.CBCMAC((list.get(i).getUserName() + list.get(i).getIpaddr() + list.get(i).getStatus() +
                                 list.get(i).getMsg() + list.get(i).getAccessTime().toString() + list.get(i).getTenantId().toString()).getBytes("UTF-8"));
                         if (!checkCode.equals(checkCode1)) {
+                            System.out.println("计算校验:"+checkCode);
+                            System.out.println("校验表中:"+checkCode1);
                             throw new BusinessException("【完整性】校验失败,日志数据是被破坏或者篡改的");
                         }
                     }else {

+ 15 - 7
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/impl/SysLogininforServiceImpl.java

@@ -49,30 +49,38 @@ public class SysLogininforServiceImpl extends AbstractCrudService<SysLogininforM
     @Override
     public void insertLogininfor(SysLogininfor logininfor) {
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
-        wrapper.select(SysUser::getUserId, SysUser::getTenantId)
-                .eq(SysUser::getUserName,logininfor.getUserName());
+        wrapper.select(SysUser::getUserId, SysUser::getTenantId, SysUser::getDeptId)
+                .eq(SysUser::getUserName, logininfor.getUserName());
         SysUser sysUser = sysUserMapper.selectOne(wrapper);
         SysCheckCode sysCheckCode = new SysCheckCode();
         Date now = new Date();
         logininfor.setAccessTime(now);
         logininfor.setTenantId(sysUser.getTenantId());
+        if (sysUser.getDeptId() != null) {
+            if (sysUser.getDeptId() >= Integer.MIN_VALUE && sysUser.getDeptId() <= Integer.MAX_VALUE) {
+                logininfor.setDeptId(Math.toIntExact(sysUser.getDeptId()));
+            }else {
+                throw new BusinessException("部门ID超出Integer的最大值!");
+            }
+        } else {
+            logininfor.setDeptId(null);
+        }
         logininforMapper.insertLogininfor(logininfor);
         System.out.println(logininfor.getUserName());
         System.out.println(logininfor.getIpaddr());
         System.out.println(logininfor.getStatus());
         System.out.println(logininfor.getMsg());
         System.out.println(logininfor.getAccessTime());
-        System.out.println(logininfor.getTenantId());
         System.out.println(logininfor.getDeptId());
         System.out.println(logininfor.getTenantId());
-        System.out.println("sysUser---dept_id"+sysUser.getDeptId());
-        System.out.println("sysUser---tenant_id"+sysUser.getTenantId());
+        System.out.println("sysUser---dept_id:" + sysUser.getDeptId());
+        System.out.println("sysUser---tenant_id:" + sysUser.getTenantId());
 
         sysCheckCode.setPlaintext(logininfor.getInfoId().toString());
         sysCheckCode.setUserName(logininfor.getUserName());
-        sysCheckCode.setDeptId(sysUser.getDeptId() != null ? sysUser.getDeptId() : null);
+        sysCheckCode.setTenantId(logininfor.getTenantId());
         sysCheckCode.setUserId(sysUser.getUserId());
-        sysCheckCode.setTenantId(sysUser.getTenantId());
+        sysCheckCode.setDeptId(sysUser.getDeptId() != null ? sysUser.getDeptId() : null);
         sysCheckCode.setCheckCodeType(3);
         try {
             if (logininfor.getDeptId() == null) {

+ 99 - 96
base-modules/service-system/service-system-biz/src/main/resources/mapper/system/SysLogininforMapper.xml

@@ -1,108 +1,111 @@
 <?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">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.usky.system.mapper.SysLogininforMapper">
 
-	<resultMap type="com.usky.system.domain.SysLogininfor" id="SysLogininforResult">
-		<id     property="infoId"        column="info_id"           />
-		<result property="userName"      column="user_name"         />
-		<result property="status"        column="status"            />
-		<result property="ipaddr"        column="ipaddr"            />
-		<result property="msg"           column="msg"               />
-		<result property="accessTime"    column="access_time"       />
-		<result property="deptId"        column="dept_id"           />
-		<result property="tenantId"      column="tenant_id"         />
-		<result property="createBy"      column="create_by"         />
-	</resultMap>
+    <resultMap type="com.usky.system.domain.SysLogininfor" id="SysLogininforResult">
+        <id property="infoId" column="info_id"/>
+        <result property="userName" column="user_name"/>
+        <result property="status" column="status"/>
+        <result property="ipaddr" column="ipaddr"/>
+        <result property="msg" column="msg"/>
+        <result property="accessTime" column="access_time"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="createBy" column="create_by"/>
+    </resultMap>
 
-	<insert id="insertLogininfor" parameterType="com.usky.system.domain.SysLogininfor"
-			useGeneratedKeys="true" keyProperty="infoId">
-		insert into sys_logininfor
-		<trim prefix="(" suffix=")" suffixOverrides=",">
-			<if test="userName != null"> user_name, </if>
-			<if test="status != null"> status, </if>
-			<if test="ipaddr != null"> ipaddr, </if>
-			<if test="msg != null"> msg, </if>
-			<if test="accessTime != null"> access_time, </if>
-			<if test="deptId != null"> dept_id, </if>
-			<if test="tenantId != null"> tenant_id, </if>
-			<if test="createBy != null"> create_by, </if>
-		</trim>
-		values
-		<trim prefix="(" suffix=")" suffixOverrides=",">
-			<if test="userName != null"> #{userName},</if>
-			<if test="status != null"> #{status},</if>
-			<if test="ipaddr != null"> #{ipaddr},</if>
-			<if test="msg != null"> #{msg},</if>
-			<if test="accessTime != null"> #{accessTime},</if>
-			<if test="deptId != null"> #{deptId},</if>
-			<if test="tenantId != null"> #{tenantId},</if>
-			<if test="createBy != null"> #{createBy},</if>
-		</trim>
-	</insert>
+    <insert id="insertLogininfor" parameterType="com.usky.system.domain.SysLogininfor"
+            useGeneratedKeys="true" keyProperty="infoId">
+        insert into sys_logininfor
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userName != null">user_name,</if>
+            <if test="status != null">status,</if>
+            <if test="ipaddr != null">ipaddr,</if>
+            <if test="msg != null">msg,</if>
+            <if test="accessTime != null">access_time,</if>
+            <if test="deptId != null">dept_id,</if>
+            <if test="tenantId != null">tenant_id,</if>
+            <if test="createBy != null">create_by,</if>
+        </trim>
+        values
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="userName != null">#{userName},</if>
+            <if test="status != null">#{status},</if>
+            <if test="ipaddr != null">#{ipaddr},</if>
+            <if test="msg != null">#{msg},</if>
+            <if test="accessTime != null">#{accessTime},</if>
+            <if test="deptId != null">#{deptId},</if>
+            <if test="tenantId != null">#{tenantId},</if>
+            <if test="createBy != null">#{createBy},</if>
+        </trim>
+    </insert>
 
-	<select id="selectLogininforList" parameterType="com.usky.system.domain.SysLogininfor" resultMap="SysLogininforResult">
-		select info_id, user_name, ipaddr, status, msg, access_time, tenant_id from sys_logininfor d
-		<where>
-			<if test="ipaddr != null and ipaddr != ''">
-				AND ipaddr like concat('%', #{ipaddr}, '%')
-			</if>
-			<if test="status != null and status != ''">
-				AND status = #{status}
-			</if>
-			<if test="userName != null and userName != ''">
-				AND user_name like concat('%', #{userName}, '%')
-			</if>
-			<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
-				and date_format(access_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
-			</if>
-			<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
-				and date_format(access_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
-			</if>
-			<if test="1 == 1">
-				and tenant_id = #{tenantId}
-			</if>
-			<!-- 数据范围过滤 -->
-			${params.dataScope}
-		</where>
-		order by info_id desc
-	</select>
+    <select id="selectLogininforList" parameterType="com.usky.system.domain.SysLogininfor"
+            resultMap="SysLogininforResult">
+        select info_id, user_name, ipaddr, status, msg, access_time, tenant_id, dept_id from sys_logininfor d
+        <where>
+            <if test="ipaddr != null and ipaddr != ''">
+                AND ipaddr like concat('%', #{ipaddr}, '%')
+            </if>
+            <if test="status != null and status != ''">
+                AND status = #{status}
+            </if>
+            <if test="userName != null and userName != ''">
+                AND user_name like concat('%', #{userName}, '%')
+            </if>
+            <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+                and date_format(access_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+            </if>
+            <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+                and date_format(access_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+            </if>
+            <if test="1 == 1">
+                and tenant_id = #{tenantId}
+            </if>
+            <!-- 数据范围过滤 -->
+            ${params.dataScope}
+        </where>
+        order by info_id desc
+    </select>
 
-	<select id="selectLogininforListExport" parameterType="com.usky.system.domain.SysLogininfor" resultType="com.usky.system.service.vo.SysLoginExportVO">
-		select info_id, ipaddr, user_name, (case status when '0' then '成功' else '失败' end) as status, msg, access_time from sys_logininfor d
-		<where>
-			<if test="ipaddr != null and ipaddr != ''">
-				AND ipaddr like concat('%', #{ipaddr}, '%')
-			</if>
-			<if test="status != null and status != ''">
-				AND status = #{status}
-			</if>
-			<if test="userName != null and userName != ''">
-				AND user_name like concat('%', #{userName}, '%')
-			</if>
-			<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
-				and date_format(access_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
-			</if>
-			<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
-				and date_format(access_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
-			</if>
-			<if test="1 == 1">
-				and tenant_id = #{tenantId}
-			</if>
-			${params.dataScope}
-		</where>
-		order by info_id desc
-	</select>
+    <select id="selectLogininforListExport" parameterType="com.usky.system.domain.SysLogininfor"
+            resultType="com.usky.system.service.vo.SysLoginExportVO">
+        select info_id, ipaddr, user_name, (case status when '0' then '成功' else '失败' end) as status, msg, access_time
+        from sys_logininfor d
+        <where>
+            <if test="ipaddr != null and ipaddr != ''">
+                AND ipaddr like concat('%', #{ipaddr}, '%')
+            </if>
+            <if test="status != null and status != ''">
+                AND status = #{status}
+            </if>
+            <if test="userName != null and userName != ''">
+                AND user_name like concat('%', #{userName}, '%')
+            </if>
+            <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+                and date_format(access_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+            </if>
+            <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+                and date_format(access_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+            </if>
+            <if test="1 == 1">
+                and tenant_id = #{tenantId}
+            </if>
+            ${params.dataScope}
+        </where>
+        order by info_id desc
+    </select>
 
-	<delete id="deleteLogininforByIds" parameterType="Long">
-		delete from sys_logininfor where info_id in
-		<foreach collection="array" item="infoId" open="(" separator="," close=")">
-			#{infoId}
-		</foreach>
-	</delete>
+    <delete id="deleteLogininforByIds" parameterType="Long">
+        delete from sys_logininfor where info_id in
+        <foreach collection="array" item="infoId" open="(" separator="," close=")">
+            #{infoId}
+        </foreach>
+    </delete>
 
-	<update id="cleanLogininfor">
+    <update id="cleanLogininfor">
         truncate table sys_logininfor
     </update>