update 优化 将logininfor规范化为loginInfo

This commit is contained in:
疯狂的狮子Li
2026-03-13 14:28:54 +08:00
parent 771494d0a4
commit 40ea2e55bb
20 changed files with 213 additions and 213 deletions

View File

@@ -13,7 +13,7 @@ import org.dromara.common.core.utils.MessageUtils;
import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.ip.AddressUtils; import org.dromara.common.core.utils.ip.AddressUtils;
import org.dromara.common.log.event.LogininforEvent; import org.dromara.common.log.event.LoginInfoEvent;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.web.service.SysLoginService; import org.dromara.web.service.SysLoginService;
@@ -59,12 +59,12 @@ public class UserActionListener implements SaTokenListener {
} }
// 记录登录日志 // 记录登录日志
LogininforEvent logininforEvent = new LogininforEvent(); LoginInfoEvent loginInfoEvent = new LoginInfoEvent();
logininforEvent.setUsername(username); loginInfoEvent.setUsername(username);
logininforEvent.setStatus(Constants.LOGIN_SUCCESS); loginInfoEvent.setStatus(Constants.LOGIN_SUCCESS);
logininforEvent.setMessage(MessageUtils.message("user.login.success")); loginInfoEvent.setMessage(MessageUtils.message("user.login.success"));
logininforEvent.setRequest(ServletUtils.getRequest()); loginInfoEvent.setRequest(ServletUtils.getRequest());
SpringUtils.context().publishEvent(logininforEvent); SpringUtils.context().publishEvent(loginInfoEvent);
// 更新登录信息 // 更新登录信息
loginService.recordLoginInfo((Long) loginParameter.getExtra(LoginHelper.USER_KEY), ip); loginService.recordLoginInfo((Long) loginParameter.getExtra(LoginHelper.USER_KEY), ip);
log.info("user doLogin, userId:{}, token:{}", loginId, tokenValue); log.info("user doLogin, userId:{}, token:{}", loginId, tokenValue);

View File

@@ -19,7 +19,7 @@ import org.dromara.common.core.enums.LoginType;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.exception.user.UserException; import org.dromara.common.core.exception.user.UserException;
import org.dromara.common.core.utils.*; import org.dromara.common.core.utils.*;
import org.dromara.common.log.event.LogininforEvent; import org.dromara.common.log.event.LoginInfoEvent;
import org.dromara.common.mybatis.helper.DataPermissionHelper; import org.dromara.common.mybatis.helper.DataPermissionHelper;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
@@ -109,7 +109,7 @@ public class SysLoginService {
if (ObjectUtil.isNull(loginUser)) { if (ObjectUtil.isNull(loginUser)) {
return; return;
} }
recordLogininfor(loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success")); recordLoginInfo(loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
} catch (NotLoginException ignored) { } catch (NotLoginException ignored) {
} finally { } finally {
try { try {
@@ -126,13 +126,13 @@ public class SysLoginService {
* @param status 状态 * @param status 状态
* @param message 消息内容 * @param message 消息内容
*/ */
public void recordLogininfor(String username, String status, String message) { public void recordLoginInfo(String username, String status, String message) {
LogininforEvent logininforEvent = new LogininforEvent(); LoginInfoEvent loginInfoEvent = new LoginInfoEvent();
logininforEvent.setUsername(username); loginInfoEvent.setUsername(username);
logininforEvent.setStatus(status); loginInfoEvent.setStatus(status);
logininforEvent.setMessage(message); loginInfoEvent.setMessage(message);
logininforEvent.setRequest(ServletUtils.getRequest()); loginInfoEvent.setRequest(ServletUtils.getRequest());
SpringUtils.context().publishEvent(logininforEvent); SpringUtils.context().publishEvent(loginInfoEvent);
} }
/** /**
@@ -192,7 +192,7 @@ public class SysLoginService {
int errorNumber = ObjectUtil.defaultIfNull(RedisUtils.getCacheObject(errorKey), 0); int errorNumber = ObjectUtil.defaultIfNull(RedisUtils.getCacheObject(errorKey), 0);
// 锁定时间内登录 则踢出 // 锁定时间内登录 则踢出
if (errorNumber >= maxRetryCount) { if (errorNumber >= maxRetryCount) {
recordLogininfor(username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime)); recordLoginInfo(username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime); throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
} }
@@ -202,11 +202,11 @@ public class SysLoginService {
RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime)); RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime));
// 达到规定错误次数 则锁定登录 // 达到规定错误次数 则锁定登录
if (errorNumber >= maxRetryCount) { if (errorNumber >= maxRetryCount) {
recordLogininfor(username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime)); recordLoginInfo(username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime); throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
} else { } else {
// 未达到规定错误次数 // 未达到规定错误次数
recordLogininfor(username, loginFail, MessageUtils.message(loginType.getRetryLimitCount(), errorNumber)); recordLoginInfo(username, loginFail, MessageUtils.message(loginType.getRetryLimitCount(), errorNumber));
throw new UserException(loginType.getRetryLimitCount(), errorNumber); throw new UserException(loginType.getRetryLimitCount(), errorNumber);
} }
} }

View File

@@ -14,7 +14,7 @@ import org.dromara.common.core.utils.MessageUtils;
import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.SpringUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.log.event.LogininforEvent; import org.dromara.common.log.event.LoginInfoEvent;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.web.config.properties.CaptchaProperties; import org.dromara.common.web.config.properties.CaptchaProperties;
import org.dromara.system.domain.SysUser; import org.dromara.system.domain.SysUser;
@@ -65,7 +65,7 @@ public class SysRegisterService {
if (!regFlag) { if (!regFlag) {
throw new UserException("user.register.error"); throw new UserException("user.register.error");
} }
recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success")); recordLoginInfo(username, Constants.REGISTER, MessageUtils.message("user.register.success"));
} }
/** /**
@@ -80,11 +80,11 @@ public class SysRegisterService {
String captcha = RedisUtils.getCacheObject(verifyKey); String captcha = RedisUtils.getCacheObject(verifyKey);
RedisUtils.deleteObject(verifyKey); RedisUtils.deleteObject(verifyKey);
if (captcha == null) { if (captcha == null) {
recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); recordLoginInfo(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
throw new CaptchaExpireException(); throw new CaptchaExpireException();
} }
if (!StringUtils.equalsIgnoreCase(code, captcha)) { if (!StringUtils.equalsIgnoreCase(code, captcha)) {
recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); recordLoginInfo(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"));
throw new CaptchaException(); throw new CaptchaException();
} }
} }
@@ -97,13 +97,13 @@ public class SysRegisterService {
* @param message 消息内容 * @param message 消息内容
* @return * @return
*/ */
private void recordLogininfor(String username, String status, String message) { private void recordLoginInfo(String username, String status, String message) {
LogininforEvent logininforEvent = new LogininforEvent(); LoginInfoEvent loginInfoEvent = new LoginInfoEvent();
logininforEvent.setUsername(username); loginInfoEvent.setUsername(username);
logininforEvent.setStatus(status); loginInfoEvent.setStatus(status);
logininforEvent.setMessage(message); loginInfoEvent.setMessage(message);
logininforEvent.setRequest(ServletUtils.getRequest()); loginInfoEvent.setRequest(ServletUtils.getRequest());
SpringUtils.context().publishEvent(logininforEvent); SpringUtils.context().publishEvent(loginInfoEvent);
} }
} }

View File

@@ -77,7 +77,7 @@ public class EmailAuthStrategy implements IAuthStrategy {
private boolean validateEmailCode(String email, String emailCode) { private boolean validateEmailCode(String email, String emailCode) {
String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + email); String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + email);
if (StringUtils.isBlank(code)) { if (StringUtils.isBlank(code)) {
loginService.recordLogininfor(email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); loginService.recordLoginInfo(email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
throw new CaptchaExpireException(); throw new CaptchaExpireException();
} }
return code.equals(emailCode); return code.equals(emailCode);

View File

@@ -95,11 +95,11 @@ public class PasswordAuthStrategy implements IAuthStrategy {
String captcha = RedisUtils.getCacheObject(verifyKey); String captcha = RedisUtils.getCacheObject(verifyKey);
RedisUtils.deleteObject(verifyKey); RedisUtils.deleteObject(verifyKey);
if (captcha == null) { if (captcha == null) {
loginService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); loginService.recordLoginInfo(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
throw new CaptchaExpireException(); throw new CaptchaExpireException();
} }
if (!StringUtils.equalsIgnoreCase(code, captcha)) { if (!StringUtils.equalsIgnoreCase(code, captcha)) {
loginService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); loginService.recordLoginInfo(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"));
throw new CaptchaException(); throw new CaptchaException();
} }
} }

View File

@@ -77,7 +77,7 @@ public class SmsAuthStrategy implements IAuthStrategy {
private boolean validateSmsCode(String phonenumber, String smsCode) { private boolean validateSmsCode(String phonenumber, String smsCode) {
String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber); String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber);
if (StringUtils.isBlank(code)) { if (StringUtils.isBlank(code)) {
loginService.recordLogininfor(phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); loginService.recordLoginInfo(phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
throw new CaptchaExpireException(); throw new CaptchaExpireException();
} }
return code.equals(smsCode); return code.equals(smsCode);

View File

@@ -14,7 +14,7 @@ import java.io.Serializable;
*/ */
@Data @Data
public class LogininforEvent implements Serializable { public class LoginInfoEvent implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@@ -14,9 +14,9 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysLogininforBo; import org.dromara.system.domain.bo.SysLoginInfoBo;
import org.dromara.system.domain.vo.SysLogininforVo; import org.dromara.system.domain.vo.SysLoginInfoVo;
import org.dromara.system.service.ISysLogininforService; import org.dromara.system.service.ISysLoginInfoService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -30,55 +30,55 @@ import java.util.List;
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@RestController @RestController
@RequestMapping("/monitor/logininfor") @RequestMapping("/monitor/loginInfo")
public class SysLogininforController extends BaseController { public class SysLoginInfoController extends BaseController {
private final ISysLogininforService logininforService; private final ISysLoginInfoService loginInfoService;
/** /**
* 获取系统访问记录列表 * 获取系统访问记录列表
*/ */
@SaCheckPermission("monitor:logininfor:list") @SaCheckPermission("monitor:logininfo:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo<SysLogininforVo> list(SysLogininforBo logininfor, PageQuery pageQuery) { public TableDataInfo<SysLoginInfoVo> list(SysLoginInfoBo loginInfo, PageQuery pageQuery) {
return logininforService.selectPageLogininforList(logininfor, pageQuery); return loginInfoService.selectPageLoginInfoList(loginInfo, pageQuery);
} }
/** /**
* 导出系统访问记录列表 * 导出系统访问记录列表
*/ */
@Log(title = "登录日志", businessType = BusinessType.EXPORT) @Log(title = "登录日志", businessType = BusinessType.EXPORT)
@SaCheckPermission("monitor:logininfor:export") @SaCheckPermission("monitor:logininfo:export")
@PostMapping("/export") @PostMapping("/export")
public void export(SysLogininforBo logininfor, HttpServletResponse response) { public void export(SysLoginInfoBo loginInfo, HttpServletResponse response) {
List<SysLogininforVo> list = logininforService.selectLogininforList(logininfor); List<SysLoginInfoVo> list = loginInfoService.selectLoginInfoList(loginInfo);
ExcelUtil.exportExcel(list, "登录日志", SysLogininforVo.class, response); ExcelUtil.exportExcel(list, "登录日志", SysLoginInfoVo.class, response);
} }
/** /**
* 批量删除登录日志 * 批量删除登录日志
* @param infoIds 日志ids * @param infoIds 日志ids
*/ */
@SaCheckPermission("monitor:logininfor:remove") @SaCheckPermission("monitor:logininfo:remove")
@Log(title = "登录日志", businessType = BusinessType.DELETE) @Log(title = "登录日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{infoIds}") @DeleteMapping("/{infoIds}")
public R<Void> remove(@PathVariable Long[] infoIds) { public R<Void> remove(@PathVariable Long[] infoIds) {
return toAjax(logininforService.deleteLogininforByIds(infoIds)); return toAjax(loginInfoService.deleteLoginInfoByIds(infoIds));
} }
/** /**
* 清理系统访问记录 * 清理系统访问记录
*/ */
@SaCheckPermission("monitor:logininfor:remove") @SaCheckPermission("monitor:logininfo:remove")
@Log(title = "登录日志", businessType = BusinessType.CLEAN) @Log(title = "登录日志", businessType = BusinessType.CLEAN)
@Lock4j @Lock4j
@DeleteMapping("/clean") @DeleteMapping("/clean")
public R<Void> clean() { public R<Void> clean() {
logininforService.cleanLogininfor(); loginInfoService.cleanLoginInfo();
return R.ok(); return R.ok();
} }
@SaCheckPermission("monitor:logininfor:unlock") @SaCheckPermission("monitor:logininfo:unlock")
@Log(title = "账户解锁", businessType = BusinessType.OTHER) @Log(title = "账户解锁", businessType = BusinessType.OTHER)
@RepeatSubmit() @RepeatSubmit()
@GetMapping("/unlock/{userName}") @GetMapping("/unlock/{userName}")

View File

@@ -9,14 +9,14 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
* 系统访问记录表 sys_logininfor * 系统访问记录表 sys_login_info
* *
* @author Lion Li * @author Lion Li
*/ */
@Data @Data
@TableName("sys_logininfor") @TableName("sys_login_info")
public class SysLogininfor implements Serializable { public class SysLoginInfo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@@ -1,6 +1,6 @@
package org.dromara.system.domain.bo; package org.dromara.system.domain.bo;
import org.dromara.system.domain.SysLogininfor; import org.dromara.system.domain.SysLoginInfo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
@@ -9,14 +9,14 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
* 系统访问记录业务对象 sys_logininfor * 系统访问记录业务对象 sys_login_info
* *
* @author Michelle.Chung * @author Michelle.Chung
*/ */
@Data @Data
@AutoMapper(target = SysLogininfor.class, reverseConvertGenerate = false) @AutoMapper(target = SysLoginInfo.class, reverseConvertGenerate = false)
public class SysLogininforBo { public class SysLoginInfoBo {
/** /**
* 访问ID * 访问ID

View File

@@ -5,7 +5,7 @@ import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty; import org.apache.fesod.sheet.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.system.domain.SysLogininfor; import org.dromara.system.domain.SysLoginInfo;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
@@ -15,15 +15,15 @@ import java.io.Serializable;
/** /**
* 系统访问记录视图对象 sys_logininfor * 系统访问记录视图对象 sys_login_info
* *
* @author Michelle.Chung * @author Michelle.Chung
* @date 2023-02-07 * @date 2023-02-07
*/ */
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@AutoMapper(target = SysLogininfor.class) @AutoMapper(target = SysLoginInfo.class)
public class SysLogininforVo implements Serializable { public class SysLoginInfoVo implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@@ -0,0 +1,14 @@
package org.dromara.system.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.system.domain.SysLoginInfo;
import org.dromara.system.domain.vo.SysLoginInfoVo;
/**
* 系统访问日志情况信息 数据层
*
* @author Lion Li
*/
public interface SysLoginInfoMapper extends BaseMapperPlus<SysLoginInfo, SysLoginInfoVo> {
}

View File

@@ -1,14 +0,0 @@
package org.dromara.system.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.system.domain.SysLogininfor;
import org.dromara.system.domain.vo.SysLogininforVo;
/**
* 系统访问日志情况信息 数据层
*
* @author Lion Li
*/
public interface SysLogininforMapper extends BaseMapperPlus<SysLogininfor, SysLogininforVo> {
}

View File

@@ -2,8 +2,8 @@ package org.dromara.system.service;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.bo.SysLogininforBo; import org.dromara.system.domain.bo.SysLoginInfoBo;
import org.dromara.system.domain.vo.SysLogininforVo; import org.dromara.system.domain.vo.SysLoginInfoVo;
import java.util.List; import java.util.List;
@@ -12,31 +12,31 @@ import java.util.List;
* *
* @author Lion Li * @author Lion Li
*/ */
public interface ISysLogininforService { public interface ISysLoginInfoService {
/** /**
* 分页查询登录日志列表 * 分页查询登录日志列表
* *
* @param logininfor 查询条件 * @param loginInfo 查询条件
* @param pageQuery 分页参数 * @param pageQuery 分页参数
* @return 登录日志分页列表 * @return 登录日志分页列表
*/ */
TableDataInfo<SysLogininforVo> selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery); TableDataInfo<SysLoginInfoVo> selectPageLoginInfoList(SysLoginInfoBo loginInfo, PageQuery pageQuery);
/** /**
* 新增系统登录日志 * 新增系统登录日志
* *
* @param bo 访问日志对象 * @param bo 访问日志对象
*/ */
void insertLogininfor(SysLogininforBo bo); void insertLoginInfo(SysLoginInfoBo bo);
/** /**
* 查询系统登录日志集合 * 查询系统登录日志集合
* *
* @param logininfor 访问日志对象 * @param loginInfo 访问日志对象
* @return 登录记录集合 * @return 登录记录集合
*/ */
List<SysLogininforVo> selectLogininforList(SysLogininforBo logininfor); List<SysLoginInfoVo> selectLoginInfoList(SysLoginInfoBo loginInfo);
/** /**
* 批量删除系统登录日志 * 批量删除系统登录日志
@@ -44,10 +44,10 @@ public interface ISysLogininforService {
* @param infoIds 需要删除的登录日志ID * @param infoIds 需要删除的登录日志ID
* @return 结果 * @return 结果
*/ */
int deleteLogininforByIds(Long[] infoIds); int deleteLoginInfoByIds(Long[] infoIds);
/** /**
* 清空系统登录日志 * 清空系统登录日志
*/ */
void cleanLogininfor(); void cleanLoginInfo();
} }

View File

@@ -13,17 +13,17 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.ServletUtils; import org.dromara.common.core.utils.ServletUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ip.AddressUtils; import org.dromara.common.core.utils.ip.AddressUtils;
import org.dromara.common.log.event.LogininforEvent; import org.dromara.common.log.event.LoginInfoEvent;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.SysLogininfor; import org.dromara.system.domain.SysLoginInfo;
import org.dromara.system.domain.bo.SysLogininforBo; import org.dromara.system.domain.bo.SysLoginInfoBo;
import org.dromara.system.domain.vo.SysClientVo; import org.dromara.system.domain.vo.SysClientVo;
import org.dromara.system.domain.vo.SysLogininforVo; import org.dromara.system.domain.vo.SysLoginInfoVo;
import org.dromara.system.mapper.SysLogininforMapper; import org.dromara.system.mapper.SysLoginInfoMapper;
import org.dromara.system.service.ISysClientService; import org.dromara.system.service.ISysClientService;
import org.dromara.system.service.ISysLogininforService; import org.dromara.system.service.ISysLoginInfoService;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -41,21 +41,21 @@ import java.util.Map;
@RequiredArgsConstructor @RequiredArgsConstructor
@Slf4j @Slf4j
@Service @Service
public class SysLogininforServiceImpl implements ISysLogininforService { public class SysLoginInfoServiceImpl implements ISysLoginInfoService {
private final SysLogininforMapper baseMapper; private final SysLoginInfoMapper baseMapper;
private final ISysClientService clientService; private final ISysClientService clientService;
/** /**
* 记录登录信息 * 记录登录信息
* *
* @param logininforEvent 登录事件 * @param loginInfoEvent 登录事件
*/ */
@Async @Async
@EventListener @EventListener
public void recordLogininfor(LogininforEvent logininforEvent) { public void recordLoginInfo(LoginInfoEvent loginInfoEvent) {
HttpServletRequest request = logininforEvent.getRequest(); HttpServletRequest request = loginInfoEvent.getRequest();
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
final String ip = ServletUtils.getClientIP(request); final String ip = ServletUtils.getClientIP(request);
// 客户端信息 // 客户端信息
@@ -69,35 +69,35 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
s.append(getBlock(ip)); s.append(getBlock(ip));
s.append(address); s.append(address);
s.append(getBlock(logininforEvent.getUsername())); s.append(getBlock(loginInfoEvent.getUsername()));
s.append(getBlock(logininforEvent.getStatus())); s.append(getBlock(loginInfoEvent.getStatus()));
s.append(getBlock(logininforEvent.getMessage())); s.append(getBlock(loginInfoEvent.getMessage()));
// 打印信息到日志 // 打印信息到日志
log.info(s.toString(), logininforEvent.getArgs()); log.info(s.toString(), loginInfoEvent.getArgs());
// 获取客户端操作系统 // 获取客户端操作系统
String os = userAgent.getOs().getName(); String os = userAgent.getOs().getName();
// 获取客户端浏览器 // 获取客户端浏览器
String browser = userAgent.getBrowser().getName(); String browser = userAgent.getBrowser().getName();
// 封装对象 // 封装对象
SysLogininforBo logininfor = new SysLogininforBo(); SysLoginInfoBo loginInfo = new SysLoginInfoBo();
logininfor.setUserName(logininforEvent.getUsername()); loginInfo.setUserName(loginInfoEvent.getUsername());
if (ObjectUtil.isNotNull(client)) { if (ObjectUtil.isNotNull(client)) {
logininfor.setClientKey(client.getClientKey()); loginInfo.setClientKey(client.getClientKey());
logininfor.setDeviceType(client.getDeviceType()); loginInfo.setDeviceType(client.getDeviceType());
} }
logininfor.setIpaddr(ip); loginInfo.setIpaddr(ip);
logininfor.setLoginLocation(address); loginInfo.setLoginLocation(address);
logininfor.setBrowser(browser); loginInfo.setBrowser(browser);
logininfor.setOs(os); loginInfo.setOs(os);
logininfor.setMsg(logininforEvent.getMessage()); loginInfo.setMsg(loginInfoEvent.getMessage());
// 日志状态 // 日志状态
if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { if (StringUtils.equalsAny(loginInfoEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
logininfor.setStatus(Constants.SUCCESS); loginInfo.setStatus(Constants.SUCCESS);
} else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) { } else if (Constants.LOGIN_FAIL.equals(loginInfoEvent.getStatus())) {
logininfor.setStatus(Constants.FAIL); loginInfo.setStatus(Constants.FAIL);
} }
// 插入数据 // 插入数据
insertLogininfor(logininfor); insertLoginInfo(loginInfo);
} }
private String getBlock(Object msg) { private String getBlock(Object msg) {
@@ -110,23 +110,23 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
/** /**
* 分页查询登录日志列表 * 分页查询登录日志列表
* *
* @param logininfor 查询条件 * @param loginInfo 查询条件
* @param pageQuery 分页参数 * @param pageQuery 分页参数
* @return 登录日志分页列表 * @return 登录日志分页列表
*/ */
@Override @Override
public TableDataInfo<SysLogininforVo> selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery) { public TableDataInfo<SysLoginInfoVo> selectPageLoginInfoList(SysLoginInfoBo loginInfo, PageQuery pageQuery) {
Map<String, Object> params = logininfor.getParams(); Map<String, Object> params = loginInfo.getParams();
LambdaQueryWrapper<SysLogininfor> lqw = new LambdaQueryWrapper<SysLogininfor>() LambdaQueryWrapper<SysLoginInfo> lqw = new LambdaQueryWrapper<SysLoginInfo>()
.like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr()) .like(StringUtils.isNotBlank(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr())
.eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus()) .eq(StringUtils.isNotBlank(loginInfo.getStatus()), SysLoginInfo::getStatus, loginInfo.getStatus())
.like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName()) .like(StringUtils.isNotBlank(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName())
.between(params.get("beginTime") != null && params.get("endTime") != null, .between(params.get("beginTime") != null && params.get("endTime") != null,
SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime")); SysLoginInfo::getLoginTime, params.get("beginTime"), params.get("endTime"));
if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { if (StringUtils.isBlank(pageQuery.getOrderByColumn())) {
lqw.orderByDesc(SysLogininfor::getInfoId); lqw.orderByDesc(SysLoginInfo::getInfoId);
} }
Page<SysLogininforVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<SysLoginInfoVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@@ -136,28 +136,28 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
* @param bo 访问日志对象 * @param bo 访问日志对象
*/ */
@Override @Override
public void insertLogininfor(SysLogininforBo bo) { public void insertLoginInfo(SysLoginInfoBo bo) {
SysLogininfor logininfor = MapstructUtils.convert(bo, SysLogininfor.class); SysLoginInfo loginInfo = MapstructUtils.convert(bo, SysLoginInfo.class);
logininfor.setLoginTime(new Date()); loginInfo.setLoginTime(new Date());
baseMapper.insert(logininfor); baseMapper.insert(loginInfo);
} }
/** /**
* 查询系统登录日志集合 * 查询系统登录日志集合
* *
* @param logininfor 访问日志对象 * @param loginInfo 访问日志对象
* @return 登录记录集合 * @return 登录记录集合
*/ */
@Override @Override
public List<SysLogininforVo> selectLogininforList(SysLogininforBo logininfor) { public List<SysLoginInfoVo> selectLoginInfoList(SysLoginInfoBo loginInfo) {
Map<String, Object> params = logininfor.getParams(); Map<String, Object> params = loginInfo.getParams();
return baseMapper.selectVoList(new LambdaQueryWrapper<SysLogininfor>() return baseMapper.selectVoList(new LambdaQueryWrapper<SysLoginInfo>()
.like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr()) .like(StringUtils.isNotBlank(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr())
.eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus()) .eq(StringUtils.isNotBlank(loginInfo.getStatus()), SysLoginInfo::getStatus, loginInfo.getStatus())
.like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName()) .like(StringUtils.isNotBlank(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName())
.between(params.get("beginTime") != null && params.get("endTime") != null, .between(params.get("beginTime") != null && params.get("endTime") != null,
SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime")) SysLoginInfo::getLoginTime, params.get("beginTime"), params.get("endTime"))
.orderByDesc(SysLogininfor::getInfoId)); .orderByDesc(SysLoginInfo::getInfoId));
} }
/** /**
@@ -167,7 +167,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteLogininforByIds(Long[] infoIds) { public int deleteLoginInfoByIds(Long[] infoIds) {
return baseMapper.deleteByIds(Arrays.asList(infoIds)); return baseMapper.deleteByIds(Arrays.asList(infoIds));
} }
@@ -175,7 +175,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
* 清空系统登录日志 * 清空系统登录日志
*/ */
@Override @Override
public void cleanLogininfor() { public void cleanLoginInfo() {
baseMapper.delete(new LambdaQueryWrapper<>()); baseMapper.delete(new LambdaQueryWrapper<>());
} }
} }

View File

@@ -2,6 +2,6 @@
<!DOCTYPE mapper <!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.system.mapper.SysLogininforMapper"> <mapper namespace="org.dromara.system.mapper.SysLoginInfoMapper">
</mapper> </mapper>

View File

@@ -360,7 +360,7 @@ insert into sys_menu values('120', '任务调度中心', '2', '5', 'snailjo
-- 三级菜单 -- 三级菜单
insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate, null, null, '操作日志菜单'); insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate, null, null, '操作日志菜单');
insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 103, 1, sysdate, null, null, '登录日志菜单'); insert into sys_menu values('501', '登录日志', '108', '2', 'loginInfo', 'monitor/logininfo/index', '', 1, 0, 'C', '0', '0', 'monitor:loginInfo:list', 'loginInfo', 103, 1, sysdate, null, null, '登录日志菜单');
-- 用户管理按钮 -- 用户管理按钮
insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, sysdate, null, null, '');
insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, sysdate, null, null, '');
@@ -413,10 +413,10 @@ insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', '', 1,
insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, sysdate, null, null, '');
insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, sysdate, null, null, '');
-- 登录日志按钮 -- 登录日志按钮
insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfo:query', '#', 103, 1, sysdate, null, null, '');
insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfo:remove', '#', 103, 1, sysdate, null, null, '');
insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfo:export', '#', 103, 1, sysdate, null, null, '');
insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:unlock', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfo:unlock', '#', 103, 1, sysdate, null, null, '');
-- 在线用户按钮 -- 在线用户按钮
insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 103, 1, sysdate, null, null, '');
insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, sysdate, null, null, ''); insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, sysdate, null, null, '');
@@ -853,7 +853,7 @@ insert into sys_config values(11, 'OSS预览列表资源开关', 'sys.o
-- ---------------------------- -- ----------------------------
-- 14、系统访问记录 -- 14、系统访问记录
-- ---------------------------- -- ----------------------------
create table sys_logininfor ( create table sys_login_info (
info_id number(20) not null, info_id number(20) not null,
user_name varchar2(50) default '', user_name varchar2(50) default '',
client_key varchar2(32) default '', client_key varchar2(32) default '',
@@ -867,22 +867,22 @@ create table sys_logininfor (
login_time date login_time date
); );
alter table sys_logininfor add constraint pk_sys_logininfor primary key (info_id); alter table sys_login_info add constraint pk_sys_login_info primary key (info_id);
create index idx_sys_logininfor_s on sys_logininfor (status); create index idx_sys_login_info_s on sys_login_info (status);
create index idx_sys_logininfor_lt on sys_logininfor (login_time); create index idx_sys_login_info_lt on sys_login_info (login_time);
comment on table sys_logininfor is '系统访问记录'; comment on table sys_login_info is '系统访问记录';
comment on column sys_logininfor.info_id is '访问ID'; comment on column sys_login_info.info_id is '访问ID';
comment on column sys_logininfor.user_name is '登录账号'; comment on column sys_login_info.user_name is '登录账号';
comment on column sys_logininfor.client_key is '客户端'; comment on column sys_login_info.client_key is '客户端';
comment on column sys_logininfor.device_type is '设备类型'; comment on column sys_login_info.device_type is '设备类型';
comment on column sys_logininfor.ipaddr is '登录IP地址'; comment on column sys_login_info.ipaddr is '登录IP地址';
comment on column sys_logininfor.login_location is '登录地点'; comment on column sys_login_info.login_location is '登录地点';
comment on column sys_logininfor.browser is '浏览器类型'; comment on column sys_login_info.browser is '浏览器类型';
comment on column sys_logininfor.os is '操作系统'; comment on column sys_login_info.os is '操作系统';
comment on column sys_logininfor.status is '登录状态0成功 1失败'; comment on column sys_login_info.status is '登录状态0成功 1失败';
comment on column sys_logininfor.msg is '提示消息'; comment on column sys_login_info.msg is '提示消息';
comment on column sys_logininfor.login_time is '访问时间'; comment on column sys_login_info.login_time is '访问时间';
-- ---------------------------- -- ----------------------------

View File

@@ -357,7 +357,7 @@ insert into sys_menu values('120', '任务调度中心', '2', '6', 'snailjo
-- 三级菜单 -- 三级菜单
insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', '1', '0', 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, now(), null, null, '操作日志菜单'); insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', '1', '0', 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, now(), null, null, '操作日志菜单');
insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', '1', '0', 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 103, 1, now(), null, null, '登录日志菜单'); insert into sys_menu values('501', '登录日志', '108', '2', 'loginInfo', 'monitor/loginInfo/index', '', '1', '0', 'C', '0', '0', 'monitor:loginInfo:list', 'loginInfo', 103, 1, now(), null, null, '登录日志菜单');
-- 用户管理按钮 -- 用户管理按钮
insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', '1', '0', 'F', '0', '0', 'system:user:query', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', '1', '0', 'F', '0', '0', 'system:user:query', '#', 103, 1, now(), null, null, '');
insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', '1', '0', 'F', '0', '0', 'system:user:add', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', '1', '0', 'F', '0', '0', 'system:user:add', '#', 103, 1, now(), null, null, '');
@@ -410,10 +410,10 @@ insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', '', '1'
insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, now(), null, null, '');
insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, now(), null, null, '');
-- 登录日志按钮 -- 登录日志按钮
insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:logininfor:query', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:loginInfo:query', '#', 103, 1, now(), null, null, '');
insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:logininfor:remove', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:loginInfo:remove', '#', 103, 1, now(), null, null, '');
insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:logininfor:export', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:loginInfo:export', '#', 103, 1, now(), null, null, '');
insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:logininfor:unlock', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:loginInfo:unlock', '#', 103, 1, now(), null, null, '');
-- 在线用户按钮 -- 在线用户按钮
insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:online:query', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:online:query', '#', 103, 1, now(), null, null, '');
insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, now(), null, null, ''); insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', '1', '0', 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, now(), null, null, '');
@@ -851,7 +851,7 @@ insert into sys_config values(11, 'OSS预览列表资源开关', 'sys.o
-- ---------------------------- -- ----------------------------
-- 14、系统访问记录 -- 14、系统访问记录
-- ---------------------------- -- ----------------------------
create table if not exists sys_logininfor create table if not exists sys_login_info
( (
info_id int8, info_id int8,
user_name varchar(50) default ''::varchar, user_name varchar(50) default ''::varchar,
@@ -864,24 +864,24 @@ create table if not exists sys_logininfor
status char default '0'::bpchar, status char default '0'::bpchar,
msg varchar(255) default ''::varchar, msg varchar(255) default ''::varchar,
login_time timestamp, login_time timestamp,
constraint sys_logininfor_pk primary key (info_id) constraint sys_login_info_pk primary key (info_id)
); );
create index idx_sys_logininfor_s ON sys_logininfor (status); create index idx_sys_login_info_s ON sys_login_info (status);
create index idx_sys_logininfor_lt ON sys_logininfor (login_time); create index idx_sys_login_info_lt ON sys_login_info (login_time);
comment on table sys_logininfor is '系统访问记录'; comment on table sys_login_info is '系统访问记录';
comment on column sys_logininfor.info_id is '访问ID'; comment on column sys_login_info.info_id is '访问ID';
comment on column sys_logininfor.user_name is '用户账号'; comment on column sys_login_info.user_name is '用户账号';
comment on column sys_logininfor.client_key is '客户端'; comment on column sys_login_info.client_key is '客户端';
comment on column sys_logininfor.device_type is '设备类型'; comment on column sys_login_info.device_type is '设备类型';
comment on column sys_logininfor.ipaddr is '登录IP地址'; comment on column sys_login_info.ipaddr is '登录IP地址';
comment on column sys_logininfor.login_location is '登录地点'; comment on column sys_login_info.login_location is '登录地点';
comment on column sys_logininfor.browser is '浏览器类型'; comment on column sys_login_info.browser is '浏览器类型';
comment on column sys_logininfor.os is '操作系统'; comment on column sys_login_info.os is '操作系统';
comment on column sys_logininfor.status is '登录状态0成功 1失败'; comment on column sys_login_info.status is '登录状态0成功 1失败';
comment on column sys_logininfor.msg is '提示消息'; comment on column sys_login_info.msg is '提示消息';
comment on column sys_logininfor.login_time is '访问时间'; comment on column sys_login_info.login_time is '访问时间';
-- ---------------------------- -- ----------------------------
-- 17、通知公告表 -- 17、通知公告表

View File

@@ -232,7 +232,7 @@ insert into sys_menu values('120', '任务调度中心', '2', '6', 'snailjo
-- 三级菜单 -- 三级菜单
insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, '操作日志菜单'); insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'monitor/operlog/index', '', 1, 0, 'C', '0', '0', 'monitor:operlog:list', 'form', 103, 1, sysdate(), null, null, '操作日志菜单');
insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'monitor/logininfor/index', '', 1, 0, 'C', '0', '0', 'monitor:logininfor:list', 'logininfor', 103, 1, sysdate(), null, null, '登录日志菜单'); insert into sys_menu values('501', '登录日志', '108', '2', 'loginInfo', 'monitor/loginInfo/index', '', 1, 0, 'C', '0', '0', 'monitor:loginInfo:list', 'loginInfo', 103, 1, sysdate(), null, null, '登录日志菜单');
-- 用户管理按钮 -- 用户管理按钮
insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 103, 1, sysdate(), null, null, '');
@@ -285,10 +285,10 @@ insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', '', 1,
insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:operlog:export', '#', 103, 1, sysdate(), null, null, '');
-- 登录日志按钮 -- 登录日志按钮
insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:query', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:loginInfo:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:remove', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:loginInfo:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:export', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:loginInfo:export', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:logininfor:unlock', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1050', '账户解锁', '501', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:loginInfo:unlock', '#', 103, 1, sysdate(), null, null, '');
-- 在线用户按钮 -- 在线用户按钮
insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, sysdate(), null, null, ''); insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 103, 1, sysdate(), null, null, '');
@@ -645,7 +645,7 @@ insert into sys_config values(11, 'OSS预览列表资源开关', 'sys.os
-- ---------------------------- -- ----------------------------
-- 14、系统访问记录 -- 14、系统访问记录
-- ---------------------------- -- ----------------------------
create table sys_logininfor ( create table sys_login_info (
info_id bigint(20) not null comment '访问ID', info_id bigint(20) not null comment '访问ID',
user_name varchar(50) default '' comment '用户账号', user_name varchar(50) default '' comment '用户账号',
client_key varchar(32) default '' comment '客户端', client_key varchar(32) default '' comment '客户端',
@@ -658,8 +658,8 @@ create table sys_logininfor (
msg varchar(255) default '' comment '提示消息', msg varchar(255) default '' comment '提示消息',
login_time datetime comment '访问时间', login_time datetime comment '访问时间',
primary key (info_id), primary key (info_id),
key idx_sys_logininfor_s (status), key idx_sys_login_info_s (status),
key idx_sys_logininfor_lt (login_time) key idx_sys_login_info_lt (login_time)
) engine=innodb comment = '系统访问记录'; ) engine=innodb comment = '系统访问记录';

View File

@@ -1102,7 +1102,7 @@ GO
INSERT sys_dict_type VALUES (12, N'设备类型', N'sys_device_type', 103, 1, getdate(), NULL, NULL, N'客户端设备类型') INSERT sys_dict_type VALUES (12, N'设备类型', N'sys_device_type', 103, 1, getdate(), NULL, NULL, N'客户端设备类型')
GO GO
CREATE TABLE sys_logininfor CREATE TABLE sys_login_info
( (
info_id bigint NOT NULL, info_id bigint NOT NULL,
user_name nvarchar(50) DEFAULT '' NULL, user_name nvarchar(50) DEFAULT '' NULL,
@@ -1122,81 +1122,81 @@ CREATE TABLE sys_logininfor
ON [PRIMARY] ON [PRIMARY]
GO GO
CREATE NONCLUSTERED INDEX idx_sys_logininfor_s ON sys_logininfor (status) CREATE NONCLUSTERED INDEX idx_sys_login_info_s ON sys_login_info (status)
GO GO
CREATE NONCLUSTERED INDEX idx_sys_logininfor_lt ON sys_logininfor (login_time) CREATE NONCLUSTERED INDEX idx_sys_login_info_lt ON sys_login_info (login_time)
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'访问ID' , 'MS_Description', N'访问ID' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'info_id' 'COLUMN', N'info_id'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'用户账号' , 'MS_Description', N'用户账号' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'user_name' 'COLUMN', N'user_name'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'客户端' , 'MS_Description', N'客户端' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'client_key' 'COLUMN', N'client_key'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'设备类型' , 'MS_Description', N'设备类型' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'device_type' 'COLUMN', N'device_type'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'登录IP地址' , 'MS_Description', N'登录IP地址' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'ipaddr' 'COLUMN', N'ipaddr'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'登录地点' , 'MS_Description', N'登录地点' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'login_location' 'COLUMN', N'login_location'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'浏览器类型' , 'MS_Description', N'浏览器类型' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'browser' 'COLUMN', N'browser'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'操作系统' , 'MS_Description', N'操作系统' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'os' 'COLUMN', N'os'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'登录状态0成功 1失败' , 'MS_Description', N'登录状态0成功 1失败' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'status' 'COLUMN', N'status'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'提示消息' , 'MS_Description', N'提示消息' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'msg' 'COLUMN', N'msg'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'访问时间' , 'MS_Description', N'访问时间' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor', 'TABLE', N'sys_login_info',
'COLUMN', N'login_time' 'COLUMN', N'login_time'
GO GO
EXEC sys.sp_addextendedproperty EXEC sys.sp_addextendedproperty
'MS_Description', N'系统访问记录' , 'MS_Description', N'系统访问记录' ,
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
'TABLE', N'sys_logininfor' 'TABLE', N'sys_login_info'
GO GO
CREATE TABLE sys_menu CREATE TABLE sys_menu
@@ -1409,7 +1409,7 @@ INSERT sys_menu VALUES (120, N'任务调度中心', 2, 5, N'snailjob', N'monitor
GO GO
INSERT sys_menu VALUES (500, N'操作日志', 108, 1, N'operlog', N'monitor/operlog/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:operlog:list', N'form', 103, 1, getdate(), NULL, NULL, N'操作日志菜单') INSERT sys_menu VALUES (500, N'操作日志', 108, 1, N'operlog', N'monitor/operlog/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:operlog:list', N'form', 103, 1, getdate(), NULL, NULL, N'操作日志菜单')
GO GO
INSERT sys_menu VALUES (501, N'登录日志', 108, 2, N'logininfor', N'monitor/logininfor/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:logininfor:list', N'logininfor', 103, 1, getdate(), NULL, NULL, N'登录日志菜单') INSERT sys_menu VALUES (501, N'登录日志', 108, 2, N'loginInfo', N'monitor/loginInfo/index', N'', 1, 0, N'C', N'0', N'0', N'monitor:loginInfo:list', N'loginInfo', 103, 1, getdate(), NULL, NULL, N'登录日志菜单')
GO GO
INSERT sys_menu VALUES (1001, N'用户查询', 100, 1, N'', N'', N'', 1, 0, N'F', N'0', N'0', N'system:user:query', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1001, N'用户查询', 100, 1, N'', N'', N'', 1, 0, N'F', N'0', N'0', N'system:user:query', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO
@@ -1495,13 +1495,13 @@ INSERT sys_menu VALUES (1041, N'操作删除', 500, 2, N'#', N'', N'', 1, 0, N'F
GO GO
INSERT sys_menu VALUES (1042, N'日志导出', 500, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:operlog:export', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1042, N'日志导出', 500, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:operlog:export', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO
INSERT sys_menu VALUES (1043, N'登录查询', 501, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:logininfor:query', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1043, N'登录查询', 501, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:loginInfo:query', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO
INSERT sys_menu VALUES (1044, N'登录删除', 501, 2, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:logininfor:remove', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1044, N'登录删除', 501, 2, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:loginInfo:remove', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO
INSERT sys_menu VALUES (1045, N'日志导出', 501, 3, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:logininfor:export', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1045, N'日志导出', 501, 3, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:loginInfo:export', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO
INSERT sys_menu VALUES (1050, N'账户解锁', 501, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:logininfor:unlock', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1050, N'账户解锁', 501, 4, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:loginInfo:unlock', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO
INSERT sys_menu VALUES (1046, N'在线查询', 109, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:online:query', N'#', 103, 1, getdate(), NULL, NULL, N'') INSERT sys_menu VALUES (1046, N'在线查询', 109, 1, N'#', N'', N'', 1, 0, N'F', N'0', N'0', N'monitor:online:query', N'#', 103, 1, getdate(), NULL, NULL, N'')
GO GO