调整操作日志查询条件,优化登录日志采集逻辑
This commit is contained in:
+26
-12
@@ -40,6 +40,7 @@ import java.util.HashSet;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static xtools.base.config.Constants.CP_LINE;
|
||||||
import static xtools.base.config.Constants.CP_NUM1;
|
import static xtools.base.config.Constants.CP_NUM1;
|
||||||
import static xtools.base.config.Constants.CP_NUM200;
|
import static xtools.base.config.Constants.CP_NUM200;
|
||||||
|
|
||||||
@@ -193,18 +194,8 @@ public class AuthFilter extends BaseFilter implements Ordered, BootCommonConstan
|
|||||||
// 校验登录白名单
|
// 校验登录白名单
|
||||||
if (checkLoginWhiteList(uri)) {
|
if (checkLoginWhiteList(uri)) {
|
||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
// 记录登录日志
|
// 保存登录日志
|
||||||
if (LOGIN_URI.contains(uri)) {
|
saveLoginLog(uri, log);
|
||||||
LoginUserDto loginUser = AuthUtils.getDefNull();
|
|
||||||
if (loginUser == null) {
|
|
||||||
log.setTitle("系统登录-密码登录失败");
|
|
||||||
} else {
|
|
||||||
log.setAccountId(loginUser.getId());
|
|
||||||
log.setAccount(loginUser.getAccount());
|
|
||||||
log.setTitle("系统登录-密码登录成功");
|
|
||||||
}
|
|
||||||
saveOptLog(log);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,6 +235,29 @@ public class AuthFilter extends BaseFilter implements Ordered, BootCommonConstan
|
|||||||
saveOptLog(log);
|
saveOptLog(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存登录日志
|
||||||
|
*
|
||||||
|
* @param uri 访问uri
|
||||||
|
* @param log 日志
|
||||||
|
*/
|
||||||
|
private void saveLoginLog(String uri, OptLogDto log) {
|
||||||
|
if (!LOGIN_URI.contains(uri)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LoginUserDto loginUser = AuthUtils.getDefNull();
|
||||||
|
if (loginUser == null) {
|
||||||
|
log.setAccountId(0L);
|
||||||
|
log.setAccount(CP_LINE);
|
||||||
|
log.setTitle("系统登录-登录失败");
|
||||||
|
} else {
|
||||||
|
log.setAccountId(loginUser.getId());
|
||||||
|
log.setAccount(loginUser.getAccount());
|
||||||
|
log.setTitle("系统登录-登录成功");
|
||||||
|
}
|
||||||
|
saveOptLog(log);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存操作日志
|
* 保存操作日志
|
||||||
*
|
*
|
||||||
|
|||||||
+2
-2
@@ -37,13 +37,13 @@ public interface SysOptLogMapper extends BaseMapper<SysOptLog> {
|
|||||||
/**
|
/**
|
||||||
* 获取该账号的操作日志
|
* 获取该账号的操作日志
|
||||||
*
|
*
|
||||||
* @param accountId 账号ID
|
* @param account 账号
|
||||||
* @param startTime 开始时间(包含)
|
* @param startTime 开始时间(包含)
|
||||||
* @param endTime 结束时间(包含)
|
* @param endTime 结束时间(包含)
|
||||||
* @return 操作日志
|
* @return 操作日志
|
||||||
*/
|
*/
|
||||||
List<SysOptLogTitleCountResp> getOptCount(
|
List<SysOptLogTitleCountResp> getOptCount(
|
||||||
@Param("accountId") Long accountId,
|
@Param("account") String account,
|
||||||
@Param("startTime") Instant startTime,
|
@Param("startTime") Instant startTime,
|
||||||
@Param("endTime") Instant endTime
|
@Param("endTime") Instant endTime
|
||||||
);
|
);
|
||||||
|
|||||||
+3
-3
@@ -24,10 +24,10 @@ import java.time.Instant;
|
|||||||
public class SysOptLogAccountReq implements Serializable {
|
public class SysOptLogAccountReq implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 账号ID
|
* 账号
|
||||||
*/
|
*/
|
||||||
@Schema(description = "账号ID")
|
@Schema(description = "账号")
|
||||||
private Long accountId;
|
private String account;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间范围[开始时间(包含),结束时间(包含)],不能为空且需同时包含开始,结束时间
|
* 创建时间范围[开始时间(包含),结束时间(包含)],不能为空且需同时包含开始,结束时间
|
||||||
|
|||||||
+4
-19
@@ -247,32 +247,17 @@ public class SysOptLogServiceImpl implements SysOptLogService {
|
|||||||
if (startTime.isAfter(endTime)) {
|
if (startTime.isAfter(endTime)) {
|
||||||
throw new BizWarning("开始时间不能大于结束时间");
|
throw new BizWarning("开始时间不能大于结束时间");
|
||||||
}
|
}
|
||||||
Long accountId = req.getAccountId();
|
String account = req.getAccount();
|
||||||
if (Objects.isNull(accountId)) {
|
if (StringUtils.isBlank(account)) {
|
||||||
throw new BizWarning("账号ID不能为空");
|
throw new BizWarning("账号ID不能为空");
|
||||||
}
|
}
|
||||||
// 获取该账号的操作日志
|
// 获取该账号的操作日志
|
||||||
List<SysOptLogTitleCountResp> list = sysOptLogBaseService.getBaseMapper().getOptCount(accountId, startTime, endTime);
|
List<SysOptLogTitleCountResp> list = sysOptLogBaseService.getBaseMapper().getOptCount(account, startTime, endTime);
|
||||||
SysOptLogTitleTreeResp root = buildOptTree(list);
|
SysOptLogTitleTreeResp root = buildOptTree(list);
|
||||||
root.setTitle(getAccount(accountId));
|
root.setTitle(account);
|
||||||
return Result.ok(root);
|
return Result.ok(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询账号名称
|
|
||||||
*
|
|
||||||
* @param accountId 账号ID
|
|
||||||
* @return 账号名称
|
|
||||||
*/
|
|
||||||
private String getAccount(Long accountId) {
|
|
||||||
LambdaQueryWrapper<SysOptLog> query = new LambdaQueryWrapper<>();
|
|
||||||
query.select(SysOptLog::getAccount);
|
|
||||||
query.eq(SysOptLog::getAccountId, accountId);
|
|
||||||
query.last("LIMIT 1");
|
|
||||||
SysOptLog data = sysOptLogBaseService.getOne(query);
|
|
||||||
return Objects.isNull(data) ? null : data.getAccount();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建操作统计树
|
* 构建操作统计树
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
<!-- 获取操作账号列表 -->
|
<!-- 获取操作账号列表 -->
|
||||||
<select id="getOptAccountList" resultType="xtools.app.sys.model.dto.resp.SysOptLogAccountResp">
|
<select id="getOptAccountList" resultType="xtools.app.sys.model.dto.resp.SysOptLogAccountResp">
|
||||||
SELECT account_id AS accountId,
|
SELECT MAX(account_id) AS accountId,
|
||||||
MAX(account) AS account,
|
account AS account,
|
||||||
COUNT(*) AS `count`
|
COUNT(*) AS `count`
|
||||||
FROM sys_opt_log
|
FROM sys_opt_log
|
||||||
WHERE gmt_create BETWEEN #{startTime} AND #{endTime}
|
WHERE gmt_create BETWEEN #{startTime} AND #{endTime}
|
||||||
GROUP BY account_id
|
GROUP BY account
|
||||||
ORDER BY COUNT(*) DESC
|
ORDER BY COUNT(*) DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
SELECT title,
|
SELECT title,
|
||||||
COUNT(*) AS `count`
|
COUNT(*) AS `count`
|
||||||
FROM sys_opt_log
|
FROM sys_opt_log
|
||||||
WHERE account_id = #{accountId}
|
WHERE account = #{account}
|
||||||
AND gmt_create BETWEEN #{startTime} AND #{endTime}
|
AND gmt_create BETWEEN #{startTime} AND #{endTime}
|
||||||
GROUP BY title
|
GROUP BY title
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Reference in New Issue
Block a user