From bd905ff1a947e0469932bf8a8912a2bfd8bc85d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Fri, 22 Oct 2021 12:18:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=9C=A8IP=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E4=B8=AD=E6=90=9C=E7=B4=A2IP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/ip_item_dao.go | 23 ++++++++++++++++------- internal/db/models/server_dao_test.go | 2 +- internal/rpc/services/service_ip_item.go | 4 ++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/internal/db/models/ip_item_dao.go b/internal/db/models/ip_item_dao.go index 603b2a5c..093ee902 100644 --- a/internal/db/models/ip_item_dao.go +++ b/internal/db/models/ip_item_dao.go @@ -177,18 +177,27 @@ func (this *IPItemDAO) UpdateIPItem(tx *dbs.Tx, itemId int64, ipFrom string, ipT } // CountIPItemsWithListId 计算IP数量 -func (this *IPItemDAO) CountIPItemsWithListId(tx *dbs.Tx, listId int64) (int64, error) { - return this.Query(tx). +func (this *IPItemDAO) CountIPItemsWithListId(tx *dbs.Tx, listId int64, keyword string) (int64, error) { + var query = this.Query(tx). State(IPItemStateEnabled). - Attr("listId", listId). - Count() + Attr("listId", listId) + if len(keyword) > 0 { + query.Where("(ipFrom LIKE :keyword OR ipTo LIKE :keyword)"). + Param("keyword", "%"+keyword+"%") + } + return query.Count() } // ListIPItemsWithListId 查找IP列表 -func (this *IPItemDAO) ListIPItemsWithListId(tx *dbs.Tx, listId int64, offset int64, size int64) (result []*IPItem, err error) { - _, err = this.Query(tx). +func (this *IPItemDAO) ListIPItemsWithListId(tx *dbs.Tx, listId int64, keyword string, offset int64, size int64) (result []*IPItem, err error) { + var query = this.Query(tx). State(IPItemStateEnabled). - Attr("listId", listId). + Attr("listId", listId) + if len(keyword) > 0 { + query.Where("(ipFrom LIKE :keyword OR ipTo LIKE :keyword)"). + Param("keyword", "%"+keyword+"%") + } + _, err = query. DescPk(). Slice(&result). Offset(offset). diff --git a/internal/db/models/server_dao_test.go b/internal/db/models/server_dao_test.go index 46c619f5..f031abe6 100644 --- a/internal/db/models/server_dao_test.go +++ b/internal/db/models/server_dao_test.go @@ -178,7 +178,7 @@ func TestServerDAO_UpdateServerBandwidthLimitStatus(t *testing.T) { MonthlySize: &shared.SizeCapacity{Count: 10, Unit: "mb"}, TotalSize: nil, NoticePageBody: "", - }, 23) + }, 23, false) if err != nil { t.Fatal(err) } diff --git a/internal/rpc/services/service_ip_item.go b/internal/rpc/services/service_ip_item.go index b3fc1043..7c7af16a 100644 --- a/internal/rpc/services/service_ip_item.go +++ b/internal/rpc/services/service_ip_item.go @@ -151,7 +151,7 @@ func (this *IPItemService) CountIPItemsWithListId(ctx context.Context, req *pb.C } } - count, err := models.SharedIPItemDAO.CountIPItemsWithListId(tx, req.IpListId) + count, err := models.SharedIPItemDAO.CountIPItemsWithListId(tx, req.IpListId, req.Keyword) if err != nil { return nil, err } @@ -175,7 +175,7 @@ func (this *IPItemService) ListIPItemsWithListId(ctx context.Context, req *pb.Li } } - items, err := models.SharedIPItemDAO.ListIPItemsWithListId(tx, req.IpListId, req.Offset, req.Size) + items, err := models.SharedIPItemDAO.ListIPItemsWithListId(tx, req.IpListId, req.Keyword, req.Offset, req.Size) if err != nil { return nil, err }