diff --git a/internal/db/models/ip_item_dao.go b/internal/db/models/ip_item_dao.go index 1ba0ef35..66a412a5 100644 --- a/internal/db/models/ip_item_dao.go +++ b/internal/db/models/ip_item_dao.go @@ -514,13 +514,17 @@ func (this *IPItemDAO) CountAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, ke } if len(keyword) > 0 { if net.ParseIP(keyword) != nil { // 是一个IP地址 - query.Attr("ipFrom", keyword) + // TODO 支持IPv6 + query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ipKeyword", keyword) } else { query.Like("ipFrom", dbutils.QuoteLike(keyword)) } } if len(ip) > 0 { - query.Attr("ipFrom", ip) + // TODO 支持IPv6 + query.Where("(ipFrom =:ip OR INET_ATON(:ip) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ip", ip) } if listId > 0 { query.Attr("listId", listId) @@ -560,13 +564,17 @@ func (this *IPItemDAO) ListAllEnabledIPItems(tx *dbs.Tx, sourceUserId int64, key } if len(keyword) > 0 { if net.ParseIP(keyword) != nil { // 是一个IP地址 - query.Attr("ipFrom", keyword) + // TODO 支持IPv6 + query.Where("(ipFrom =:ipKeyword OR INET_ATON(:ipKeyword) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ipKeyword", keyword) } else { query.Like("ipFrom", dbutils.QuoteLike(keyword)) } } if len(ip) > 0 { - query.Attr("ipFrom", ip) + // TODO 支持IPv6 + query.Where("(ipFrom =:ip OR INET_ATON(:ip) BETWEEN INET_ATON(ipFrom) AND INET_ATON(ipTo))"). + Param("ip", ip) } if listId > 0 { query.Attr("listId", listId)