Kaynağa Gözat

添加登录日志

gaoxiong 2 yıl önce
ebeveyn
işleme
09e9a74c7d

+ 15 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysLogininfor.java

@@ -7,7 +7,7 @@ import java.util.Date;
 
 /**
  * 系统访问记录表 sys_logininfor
- * 
+ *
  * @author xunmei
  */
 public class SysLogininfor extends BaseEntity
@@ -26,6 +26,11 @@ public class SysLogininfor extends BaseEntity
     /** 地址 */
     private String ipaddr;
 
+    /**
+     * 登录平台
+     */
+    private String platformType;
+
     /** 描述 */
     private String msg;
 
@@ -92,4 +97,12 @@ public class SysLogininfor extends BaseEntity
     {
         this.accessTime = accessTime;
     }
-}
+
+    public String getPlatformType() {
+        return platformType;
+    }
+
+    public void setPlatformType(String platformType) {
+        this.platformType = platformType;
+    }
+}

+ 2 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -19,6 +19,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import com.xunmei.common.core.web.domain.BaseEntity;
+import org.bouncycastle.util.Fingerprint;
 
 /**
  * 【请填写功能名称】对象 sys_user
@@ -111,7 +112,7 @@ public class SysUser extends BaseEntity {
      * 删除
      */
     @ApiModelProperty(value = "删除")
-    private Long deleted;
+    private Integer deleted;
 
     /**
      * 登录IP

+ 2 - 1
soc-auth/src/main/java/com/xunmei/auth/controller/TokenController.java

@@ -72,12 +72,13 @@ public class TokenController {
     @DeleteMapping("logout")
     public R<?> logout(HttpServletRequest request) {
         String token = SecurityUtils.getToken(request);
+        LoginUser loginUser = SecurityUtils.getLoginUser();
         if (StringUtils.isNotEmpty(token)) {
             String username = JwtUtils.getUserName(token);
             // 删除用户缓存记录
             AuthUtil.logoutByToken(token);
             // 记录用户退出日志
-            sysLoginService.logout(username);
+            sysLoginService.logout(username,loginUser.getPlatformType());
         }
         return R.ok();
     }

+ 12 - 12
soc-auth/src/main/java/com/xunmei/auth/service/SysLoginService.java

@@ -54,28 +54,28 @@ public class SysLoginService
         // 用户名或密码为空 错误
         if (StringUtils.isAnyBlank(username, password))
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写",platformType);
             throw new ServiceException("用户/密码必须填写");
         }
         // 密码如果不在指定范围内 错误
         if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
                 || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围",platformType);
             throw new ServiceException("用户密码不在指定范围");
         }
         // 用户名不在指定范围内 错误
         if (username.length() < UserConstants.USERNAME_MIN_LENGTH
                 || username.length() > UserConstants.USERNAME_MAX_LENGTH)
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围",platformType);
             throw new ServiceException("用户名不在指定范围");
         }
         // IP黑名单校验
         String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
         if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单",platformType);
             throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
         }
         // 查询用户信息
@@ -83,7 +83,7 @@ public class SysLoginService
 
         if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在",platformType);
             throw new ServiceException("登录用户:" + username + " 不存在");
         }
 
@@ -97,22 +97,22 @@ public class SysLoginService
         SysUser user = userResult.getData().getSysUser();
         if (UserStatus.DELETED.getCode().equals(user.getDeleted()))
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除",platformType);
             throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
         }
-        if (UserStatus.DISABLE.getCode().equals(user.getIsLock()))
+        if (UserStatus.DISABLE.getCode().equals(Integer.parseInt(user.getIsLock())))
         {
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员",platformType);
             throw new ServiceException("对不起,您的账号:" + username + " 已停用");
         }
-        passwordService.validate(user, password);
-        recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
+        passwordService.validate(user, password,platformType);
+        recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功",platformType);
         return userInfo;
     }
 
-    public void logout(String loginName)
+    public void logout(String loginName,String platformType)
     {
-        recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功");
+        recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功",platformType);
     }
 
     public void checkLogin(String authCode) {

+ 5 - 5
soc-auth/src/main/java/com/xunmei/auth/service/SysPasswordService.java

@@ -14,7 +14,7 @@ import java.util.concurrent.TimeUnit;
 
 /**
  * 登录密码方法
- * 
+ *
  * @author xunmei
  */
 @Component
@@ -32,7 +32,7 @@ public class SysPasswordService
 
     /**
      * 登录账户密码错误次数缓存键名
-     * 
+     *
      * @param username 用户名
      * @return 缓存键key
      */
@@ -41,7 +41,7 @@ public class SysPasswordService
         return CacheConstants.PWD_ERR_CNT_KEY + username;
     }
 
-    public void validate(SysUser user, String password)
+    public void validate(SysUser user, String password,String platformType)
     {
         String username = user.getUsername();
 
@@ -55,14 +55,14 @@ public class SysPasswordService
         if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
         {
             String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime);
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg);
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg,platformType);
             throw new ServiceException(errMsg);
         }
 
         if (!matches(user, password))
         {
             retryCount = retryCount + 1;
-            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
+            recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount),platformType);
             redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
             throw new ServiceException("用户不存在/密码错误");
         }

+ 5 - 3
soc-auth/src/main/java/com/xunmei/auth/service/SysRecordLogService.java

@@ -11,7 +11,7 @@ import org.springframework.stereotype.Component;
 
 /**
  * 记录日志方法
- * 
+ *
  * @author xunmei
  */
 @Component
@@ -22,16 +22,18 @@ public class SysRecordLogService
 
     /**
      * 记录登录信息
-     * 
+     *
      * @param username 用户名
      * @param status 状态
      * @param message 消息内容
+     * @param platformType 登录平台
      * @return
      */
-    public void recordLogininfor(String username, String status, String message)
+    public void recordLogininfor(String username, String status, String message,String platformType)
     {
         SysLogininfor logininfor = new SysLogininfor();
         logininfor.setUserName(username);
+        logininfor.setPlatformType(platformType);
         logininfor.setIpaddr(IpUtils.getIpAddr());
         logininfor.setMsg(message);
         // 日志状态

+ 1 - 1
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXSyncServiceImpl.java

@@ -121,7 +121,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 
         // 人员在本系统中存在 但是在统一运营门户中不存在
         deleteList = existUserList.stream().filter(entity -> !fjnxUserCodeList.contains(entity.getCode())&& entity.getSource()==1).collect(Collectors.toList());
-        deleteList.forEach(x -> x.setDeleted(1L));
+        deleteList.forEach(x -> x.setDeleted(1));
         existUserList.addAll(addList);
 
         final R<Boolean> booleanR = remoteUserService.batchSaveSyncUser(existUserList, SecurityConstants.INNER);

+ 1 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -10,7 +10,6 @@ import com.xunmei.common.core.utils.bean.BeanValidators;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.datascope.annotation.DataScope;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.system.api.domain.SysArea;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.SysPost;
@@ -77,7 +76,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @DataScope(deptAlias = "d", userAlias = "u")
     public TableDataInfo selectUserList(SysUser user) {
         //未删除
-        user.setDeleted(0L);
+        user.setDeleted(0);
         Page<SysUser> page;
         //分页
         if (user.getPageNum() != null && user.getPageSize() != null) {