用户登录记录功能完成

yun-zuoyi
wei.peng 6 years ago
parent e77af7ef7b
commit 6e0347a873

@ -5,6 +5,8 @@ import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.*;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authc.AuthenticationException;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
@ -77,6 +79,14 @@ public interface ISysUserService {
SysUser insertSysUser(SysUser sysUser)throws Exception;
/**
*
* @param sysLogUserLogin
* @return
*/
@ApiOperation(value = "新增登录日志",notes = "新增登录日志信息")
SysLogUserLogin insertSysLogUserLogin(SysLogUserLogin sysLogUserLogin);
/**
*
* @param sysUser
* @param roleIds

@ -5,11 +5,15 @@ import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService;
import cn.estsh.i3plus.core.apiservice.controller.DemoAuthController;
import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysLocaleLanguageService;
import cn.estsh.i3plus.platform.common.tool.ServletRequestTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage;
import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
@ -77,6 +81,9 @@ public class AuthController extends CoreBaseController {
AuthUtil.setSessionObject("languageCode",languageCode);
result = new ResultBean(true, AuthUtil.getSession().getId().toString(), AuthUtil.getSessionUser());
result.setUrl("/");
// 记录登录记录
recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), request);
} catch (IncorrectCredentialsException e) {
// 密码错误
Integer num = systemLoginService.doLoginPasswordError(loginName);
@ -87,24 +94,45 @@ public class AuthController extends CoreBaseController {
}else {
result.setErrorMsg("密码输入错误。再输入错误"+ num +"次,用户将被锁定。");
}
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_PASSWORD.getValue(), request);
} catch (CredentialsException e) {
// 用户名或密码错误
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_NAME);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.WRONG_USERNAME_OR_PASSWORD.getValue(), request);
} catch (LockedAccountException e) {
// 账号已锁定
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_LOCKING);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_LOGIN_LOCKING.getValue(), request);
} catch (UnknownAccountException e) {
// 用户信息不存在
result = ResultBean.fail(ImppExceptionEnum.LOGIN_EXCEPTION_USER_INFO_NULL);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.USER_INFO_NULL.getValue(), request);
} catch (AuthenticationException e) {
// 系统异常
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode());
result.setErrorMsg(e.getMessage());
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
} catch (ImppBusiException e) {
result = ResultBean.fail(e);
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
} catch (Exception e) {
result = ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode())
.setErrorMsg(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription());
// 记录登录记录
recordSysUserLog(null, loginName,CommonEnumUtil.USER_LOGIN_STATUS.SYSTEM_ERROR.getValue(), request);
}
return result;
}
@ -197,4 +225,19 @@ public class AuthController extends CoreBaseController {
}
}
private void recordSysUserLog(Long userId, String username,Integer userLoginStatus,HttpServletRequest request){
SysLogUserLogin log = new SysLogUserLogin();
log.setUserId(userId);
log.setLogLoginName(username);
log.setLogLoginStatus(userLoginStatus);
log.setLogLoginBrowser(ServletRequestTool.getRequestBrowser(request));
log.setLogLoginHost(ServletRequestTool.getRequestHost(request));
log.setLogLoginPlatform(CommonEnumUtil.LOG_LOGIN_PLATFORM.descOf(ServletRequestTool.getRequestOs(request)));
log.setLogLoginDateTime(TimeTool.getNowTime(true));
userService.insertSysLogUserLogin(log);
}
}

@ -72,6 +72,8 @@ public class SysUserInfoController extends CoreBaseController{
userInfo.setUserInfoStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue());
userInfo.setUserLoginNum(0);
sysUserInfoService.checkSysUserInfoOnly(userInfo);
SysUserInfo info = sysUserInfoService.insertSysUserInfo(userInfo);
sysUserInfoService.refreshRefUserDepartment(info.getId(),
@ -105,6 +107,7 @@ public class SysUserInfoController extends CoreBaseController{
//修改初始化
ConvertBean.modelUpdate(userInfo,user);
sysUserInfoService.checkSysUserInfoOnly(userInfo);
sysUserInfoService.updateSysUserInfo(userInfo);

@ -18,6 +18,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
@ -110,7 +111,7 @@ public class SysToolService implements ISysToolService {
@Override
@ApiOperation(value = "删除硬件信息",notes = "根据 ID 批量删除硬件信息")
public void deleteSysToolByIds(Long[] ids) {
LOGGER.info("消息 SYS_MESSAGE ids:{}", ids.toString());
LOGGER.info("消息 SYS_MESSAGE ids:{}", Arrays.toString(ids));
toolRDao.deleteByIds(ids);
}

@ -17,6 +17,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/**
@ -99,7 +100,7 @@ public class SysToolTypeService implements ISysToolTypeService {
@Override
@ApiOperation(value = "删除硬件类型",notes = "根据 ID 批量删除硬件类型信息")
public void deleteSysToolTypeByIds(Long[] ids) {
LOGGER.info("硬件类型 TOOL_TYPE ids:{}", ids.toString());
LOGGER.info("硬件类型 TOOL_TYPE ids:{}", Arrays.toString(ids));
long count = toolRDao.findByHqlWhereCount(CoreHqlPack.packHqlIds("toolTypeId",ids));
if(count >= 1){
throw ImppExceptionBuilder.newInstance()

@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
@ -80,6 +81,9 @@ public class SysUserService implements ISysUserService {
@Autowired
private ISysUserInfoService sysUserInfoService;
@Autowired
private SysLogUserLoginRepository logUserLoginRDao;
@Override
@ApiOperation(value = "用户登录", notes = "用户登录功能实现")
public SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException {
@ -198,6 +202,13 @@ public class SysUserService implements ISysUserService {
}
@Override
@ApiOperation(value = "新增登录日志",notes = "新增登录日志信息")
public SysLogUserLogin insertSysLogUserLogin(SysLogUserLogin sysLogUserLogin) {
LOGGER.debug("平台用户登录记录 SysLogUserLogin sysLogUserLogin:{}", sysLogUserLogin);
return logUserLoginRDao.insert(sysLogUserLogin);
}
@Override
@ApiOperation(value = "新增账号", notes = "新增账号信息")
public void refreshSysRefUserRole(SysUser sysUser, Long[] roleIds, String userName) {
LOGGER.debug("平台用户 SYS_USER SysUser:{}", sysUser);

Loading…
Cancel
Save