From 6cf012bde2a41f57d763c78a0014c1f84b1cd236 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Tue, 25 Apr 2023 11:18:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E6=9F=A5=E7=9C=8BIP=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/ip_item_dao.go | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/internal/db/models/ip_item_dao.go b/internal/db/models/ip_item_dao.go index e2047e45..e5948314 100644 --- a/internal/db/models/ip_item_dao.go +++ b/internal/db/models/ip_item_dao.go @@ -365,7 +365,9 @@ func (this *IPItemDAO) CountIPItemsWithListId(tx *dbs.Tx, listId int64, sourceUs State(IPItemStateEnabled). Attr("listId", listId) if sourceUserId > 0 { - query.Attr("sourceUserId", sourceUserId) + if listId <= 0 || listId == firewallconfigs.GlobalListId { + query.Attr("sourceUserId", sourceUserId) + } } if len(keyword) > 0 { query.Where("(ipFrom LIKE :keyword OR ipTo LIKE :keyword)"). @@ -389,7 +391,9 @@ func (this *IPItemDAO) ListIPItemsWithListId(tx *dbs.Tx, listId int64, sourceUse State(IPItemStateEnabled). Attr("listId", listId) if sourceUserId > 0 { - query.Attr("sourceUserId", sourceUserId) + if listId <= 0 || listId == firewallconfigs.GlobalListId { + query.Attr("sourceUserId", sourceUserId) + } } if len(keyword) > 0 { query.Where("(ipFrom LIKE :keyword OR ipTo LIKE :keyword)"). @@ -481,9 +485,14 @@ func (this *IPItemDAO) ExistsEnabledItem(tx *dbs.Tx, itemId int64) (bool, error) // CountAllEnabledIPItems 计算数量 func (this *IPItemDAO) CountAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, keyword string, ip string, listId int64, unread bool, eventLevel string, listType string) (int64, error) { var query = this.Query(tx) - if sourceUserId > 0 { - query.Attr("sourceUserId", sourceUserId) - query.UseIndex("sourceUserId") + if sourceUserId > 0 { + if listId <= 0 { + query.Where("((listId=" +types.String(firewallconfigs.GlobalListId)+ " AND sourceUserId=:sourceUserId) OR listId IN (SELECT id FROM " + SharedIPListDAO.Table + " WHERE userId=:sourceUserId AND state=1))") + query.Param("sourceUserId", sourceUserId) + } else if listId == firewallconfigs.GlobalListId { + query.Attr("sourceUserId", sourceUserId) + query.UseIndex("sourceUserId") + } } if len(keyword) > 0 { query.Like("ipFrom", dbutils.QuoteLike(keyword)) @@ -518,9 +527,14 @@ func (this *IPItemDAO) CountAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, ke // ListAllEnabledIPItems 搜索所有IP func (this *IPItemDAO) ListAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, keyword string, ip string, listId int64, unread bool, eventLevel string, listType string, offset int64, size int64) (result []*IPItem, err error) { var query = this.Query(tx) - if sourceUserId > 0 { - query.Attr("sourceUserId", sourceUserId) - query.UseIndex("sourceUserId") + if sourceUserId > 0 { + if listId <= 0 { + query.Where("((listId=" +types.String(firewallconfigs.GlobalListId)+ " AND sourceUserId=:sourceUserId) OR listId IN (SELECT id FROM " + SharedIPListDAO.Table + " WHERE userId=:sourceUserId AND state=1))") + query.Param("sourceUserId", sourceUserId) + } else if listId == firewallconfigs.GlobalListId { + query.Attr("sourceUserId", sourceUserId) + query.UseIndex("sourceUserId") + } } if len(keyword) > 0 { query.Like("ipFrom", dbutils.QuoteLike(keyword))