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

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

View File

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

View File

@@ -1,6 +1,6 @@
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 lombok.Data;
@@ -9,14 +9,14 @@ import java.util.HashMap;
import java.util.Map;
/**
* 系统访问记录业务对象 sys_logininfor
* 系统访问记录业务对象 sys_login_info
*
* @author Michelle.Chung
*/
@Data
@AutoMapper(target = SysLogininfor.class, reverseConvertGenerate = false)
public class SysLogininforBo {
@AutoMapper(target = SysLoginInfo.class, reverseConvertGenerate = false)
public class SysLoginInfoBo {
/**
* 访问ID

View File

@@ -5,7 +5,7 @@ import org.apache.fesod.sheet.annotation.ExcelIgnoreUnannotated;
import org.apache.fesod.sheet.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
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 lombok.Data;
@@ -15,15 +15,15 @@ import java.io.Serializable;
/**
* 系统访问记录视图对象 sys_logininfor
* 系统访问记录视图对象 sys_login_info
*
* @author Michelle.Chung
* @date 2023-02-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = SysLogininfor.class)
public class SysLogininforVo implements Serializable {
@AutoMapper(target = SysLoginInfo.class)
public class SysLoginInfoVo implements Serializable {
@Serial
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.TableDataInfo;
import org.dromara.system.domain.bo.SysLogininforBo;
import org.dromara.system.domain.vo.SysLogininforVo;
import org.dromara.system.domain.bo.SysLoginInfoBo;
import org.dromara.system.domain.vo.SysLoginInfoVo;
import java.util.List;
@@ -12,31 +12,31 @@ import java.util.List;
*
* @author Lion Li
*/
public interface ISysLogininforService {
public interface ISysLoginInfoService {
/**
* 分页查询登录日志列表
*
* @param logininfor 查询条件
* @param loginInfo 查询条件
* @param pageQuery 分页参数
* @return 登录日志分页列表
*/
TableDataInfo<SysLogininforVo> selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery);
TableDataInfo<SysLoginInfoVo> selectPageLoginInfoList(SysLoginInfoBo loginInfo, PageQuery pageQuery);
/**
* 新增系统登录日志
*
* @param bo 访问日志对象
*/
void insertLogininfor(SysLogininforBo bo);
void insertLoginInfo(SysLoginInfoBo bo);
/**
* 查询系统登录日志集合
*
* @param logininfor 访问日志对象
* @param loginInfo 访问日志对象
* @return 登录记录集合
*/
List<SysLogininforVo> selectLogininforList(SysLogininforBo logininfor);
List<SysLoginInfoVo> selectLoginInfoList(SysLoginInfoBo loginInfo);
/**
* 批量删除系统登录日志
@@ -44,10 +44,10 @@ public interface ISysLogininforService {
* @param infoIds 需要删除的登录日志ID
* @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.StringUtils;
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.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.SysLogininfor;
import org.dromara.system.domain.bo.SysLogininforBo;
import org.dromara.system.domain.SysLoginInfo;
import org.dromara.system.domain.bo.SysLoginInfoBo;
import org.dromara.system.domain.vo.SysClientVo;
import org.dromara.system.domain.vo.SysLogininforVo;
import org.dromara.system.mapper.SysLogininforMapper;
import org.dromara.system.domain.vo.SysLoginInfoVo;
import org.dromara.system.mapper.SysLoginInfoMapper;
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.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
@@ -41,21 +41,21 @@ import java.util.Map;
@RequiredArgsConstructor
@Slf4j
@Service
public class SysLogininforServiceImpl implements ISysLogininforService {
public class SysLoginInfoServiceImpl implements ISysLoginInfoService {
private final SysLogininforMapper baseMapper;
private final SysLoginInfoMapper baseMapper;
private final ISysClientService clientService;
/**
* 记录登录信息
*
* @param logininforEvent 登录事件
* @param loginInfoEvent 登录事件
*/
@Async
@EventListener
public void recordLogininfor(LogininforEvent logininforEvent) {
HttpServletRequest request = logininforEvent.getRequest();
public void recordLoginInfo(LoginInfoEvent loginInfoEvent) {
HttpServletRequest request = loginInfoEvent.getRequest();
final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
final String ip = ServletUtils.getClientIP(request);
// 客户端信息
@@ -69,35 +69,35 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
StringBuilder s = new StringBuilder();
s.append(getBlock(ip));
s.append(address);
s.append(getBlock(logininforEvent.getUsername()));
s.append(getBlock(logininforEvent.getStatus()));
s.append(getBlock(logininforEvent.getMessage()));
s.append(getBlock(loginInfoEvent.getUsername()));
s.append(getBlock(loginInfoEvent.getStatus()));
s.append(getBlock(loginInfoEvent.getMessage()));
// 打印信息到日志
log.info(s.toString(), logininforEvent.getArgs());
log.info(s.toString(), loginInfoEvent.getArgs());
// 获取客户端操作系统
String os = userAgent.getOs().getName();
// 获取客户端浏览器
String browser = userAgent.getBrowser().getName();
// 封装对象
SysLogininforBo logininfor = new SysLogininforBo();
logininfor.setUserName(logininforEvent.getUsername());
SysLoginInfoBo loginInfo = new SysLoginInfoBo();
loginInfo.setUserName(loginInfoEvent.getUsername());
if (ObjectUtil.isNotNull(client)) {
logininfor.setClientKey(client.getClientKey());
logininfor.setDeviceType(client.getDeviceType());
loginInfo.setClientKey(client.getClientKey());
loginInfo.setDeviceType(client.getDeviceType());
}
logininfor.setIpaddr(ip);
logininfor.setLoginLocation(address);
logininfor.setBrowser(browser);
logininfor.setOs(os);
logininfor.setMsg(logininforEvent.getMessage());
loginInfo.setIpaddr(ip);
loginInfo.setLoginLocation(address);
loginInfo.setBrowser(browser);
loginInfo.setOs(os);
loginInfo.setMsg(loginInfoEvent.getMessage());
// 日志状态
if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
logininfor.setStatus(Constants.SUCCESS);
} else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) {
logininfor.setStatus(Constants.FAIL);
if (StringUtils.equalsAny(loginInfoEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) {
loginInfo.setStatus(Constants.SUCCESS);
} else if (Constants.LOGIN_FAIL.equals(loginInfoEvent.getStatus())) {
loginInfo.setStatus(Constants.FAIL);
}
// 插入数据
insertLogininfor(logininfor);
insertLoginInfo(loginInfo);
}
private String getBlock(Object msg) {
@@ -110,23 +110,23 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
/**
* 分页查询登录日志列表
*
* @param logininfor 查询条件
* @param loginInfo 查询条件
* @param pageQuery 分页参数
* @return 登录日志分页列表
*/
@Override
public TableDataInfo<SysLogininforVo> selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery) {
Map<String, Object> params = logininfor.getParams();
LambdaQueryWrapper<SysLogininfor> lqw = new LambdaQueryWrapper<SysLogininfor>()
.like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr())
.eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus())
.like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName())
public TableDataInfo<SysLoginInfoVo> selectPageLoginInfoList(SysLoginInfoBo loginInfo, PageQuery pageQuery) {
Map<String, Object> params = loginInfo.getParams();
LambdaQueryWrapper<SysLoginInfo> lqw = new LambdaQueryWrapper<SysLoginInfo>()
.like(StringUtils.isNotBlank(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr())
.eq(StringUtils.isNotBlank(loginInfo.getStatus()), SysLoginInfo::getStatus, loginInfo.getStatus())
.like(StringUtils.isNotBlank(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName())
.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())) {
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);
}
@@ -136,28 +136,28 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
* @param bo 访问日志对象
*/
@Override
public void insertLogininfor(SysLogininforBo bo) {
SysLogininfor logininfor = MapstructUtils.convert(bo, SysLogininfor.class);
logininfor.setLoginTime(new Date());
baseMapper.insert(logininfor);
public void insertLoginInfo(SysLoginInfoBo bo) {
SysLoginInfo loginInfo = MapstructUtils.convert(bo, SysLoginInfo.class);
loginInfo.setLoginTime(new Date());
baseMapper.insert(loginInfo);
}
/**
* 查询系统登录日志集合
*
* @param logininfor 访问日志对象
* @param loginInfo 访问日志对象
* @return 登录记录集合
*/
@Override
public List<SysLogininforVo> selectLogininforList(SysLogininforBo logininfor) {
Map<String, Object> params = logininfor.getParams();
return baseMapper.selectVoList(new LambdaQueryWrapper<SysLogininfor>()
.like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr())
.eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus())
.like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName())
public List<SysLoginInfoVo> selectLoginInfoList(SysLoginInfoBo loginInfo) {
Map<String, Object> params = loginInfo.getParams();
return baseMapper.selectVoList(new LambdaQueryWrapper<SysLoginInfo>()
.like(StringUtils.isNotBlank(loginInfo.getIpaddr()), SysLoginInfo::getIpaddr, loginInfo.getIpaddr())
.eq(StringUtils.isNotBlank(loginInfo.getStatus()), SysLoginInfo::getStatus, loginInfo.getStatus())
.like(StringUtils.isNotBlank(loginInfo.getUserName()), SysLoginInfo::getUserName, loginInfo.getUserName())
.between(params.get("beginTime") != null && params.get("endTime") != null,
SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime"))
.orderByDesc(SysLogininfor::getInfoId));
SysLoginInfo::getLoginTime, params.get("beginTime"), params.get("endTime"))
.orderByDesc(SysLoginInfo::getInfoId));
}
/**
@@ -167,7 +167,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
* @return 结果
*/
@Override
public int deleteLogininforByIds(Long[] infoIds) {
public int deleteLoginInfoByIds(Long[] infoIds) {
return baseMapper.deleteByIds(Arrays.asList(infoIds));
}
@@ -175,7 +175,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
* 清空系统登录日志
*/
@Override
public void cleanLogininfor() {
public void cleanLoginInfo() {
baseMapper.delete(new LambdaQueryWrapper<>());
}
}

View File

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