From aeb0696f457ca85b62d15ab6586c5779cf5cd97b Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 31 Jul 2026 16:56:21 +0800
Subject: [PATCH] feat(firewall): 添加访问日志功能

---
 src/main/java/cc/mrbird/febs/firewall/service/impl/FirewallRuleServiceImpl.java |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/firewall/service/impl/FirewallRuleServiceImpl.java b/src/main/java/cc/mrbird/febs/firewall/service/impl/FirewallRuleServiceImpl.java
index bfddd0e..af37bcf 100644
--- a/src/main/java/cc/mrbird/febs/firewall/service/impl/FirewallRuleServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/firewall/service/impl/FirewallRuleServiceImpl.java
@@ -4,9 +4,11 @@
 import cc.mrbird.febs.common.entity.QueryRequest;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.firewall.dto.CountryVo;
+import cc.mrbird.febs.firewall.entity.FirewallAccessLog;
 import cc.mrbird.febs.firewall.entity.FirewallCountryRule;
 import cc.mrbird.febs.firewall.entity.FirewallIpWhite;
 import cc.mrbird.febs.firewall.entity.FirewallSite;
+import cc.mrbird.febs.firewall.mapper.FirewallAccessLogMapper;
 import cc.mrbird.febs.firewall.mapper.FirewallCountryRuleMapper;
 import cc.mrbird.febs.firewall.mapper.FirewallIpWhiteMapper;
 import cc.mrbird.febs.firewall.mapper.FirewallSiteMapper;
@@ -38,6 +40,7 @@
 
     private final FirewallCountryRuleMapper countryRuleMapper;
     private final FirewallIpWhiteMapper ipWhiteMapper;
+    private final FirewallAccessLogMapper accessLogMapper;
     private final FirewallSiteMapper siteMapper;
     private final NginxConfigGenerator generator;
     private final IpWhitelistNginxConfigGenerator ipWhitelistGenerator;
@@ -298,4 +301,23 @@
         redisUtils.lSet(NGINX_RELOAD_QUEUE_KEY, String.valueOf(siteId));
         return new FebsResponse().success().message("删除成功,Nginx 配置已更新");
     }
+
+    // ==================== 访问日志 ====================
+
+    @Override
+    public void recordAccess(FirewallAccessLog accessLog) {
+        accessLogMapper.insert(accessLog);
+    }
+
+    @Override
+    public IPage<FirewallAccessLog> accessLogList(FirewallAccessLog log, QueryRequest request) {
+        Page<FirewallAccessLog> page = new Page<>(request.getPageNum(), request.getPageSize());
+        LambdaQueryWrapper<FirewallAccessLog> wrapper = new LambdaQueryWrapper<FirewallAccessLog>()
+                .eq(log.getSiteId() != null, FirewallAccessLog::getSiteId, log.getSiteId())
+                .eq(log.getIsBlocked() != null, FirewallAccessLog::getIsBlocked, log.getIsBlocked())
+                .eq(StrUtil.isNotBlank(log.getCountryCode()), FirewallAccessLog::getCountryCode, log.getCountryCode())
+                .like(StrUtil.isNotBlank(log.getIp()), FirewallAccessLog::getIp, log.getIp())
+                .orderByDesc(FirewallAccessLog::getCreatedTime);
+        return accessLogMapper.selectPage(page, wrapper);
+    }
 }

--
Gitblit v1.9.1