From a8b7c77e032213068b055bc52b1719fa9f99c0f6 Mon Sep 17 00:00:00 2001 From: zhouyonggao <1971162852@qq.com> Date: Thu, 18 Dec 2025 21:38:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(api):=20=E6=94=AF=E6=8C=81=E6=8C=89creator?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=BF=87=E6=BB=A4=E7=BB=8F=E9=94=80=E5=95=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增creator参数解析,支持按多个creator过滤 - 根据传入creator构建SQL查询条件及参数绑定 - 当creator参数为空时,返回空列表避免无效查询 - 保持原有按q参数模糊搜索功能不变 - 限制默认返回记录数为2000,增强接口性能 --- server/internal/api/resellers.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/server/internal/api/resellers.go b/server/internal/api/resellers.go index 0dd807a..b08e320 100644 --- a/server/internal/api/resellers.go +++ b/server/internal/api/resellers.go @@ -24,6 +24,7 @@ func ResellersHandler(resellerDB *sql.DB) http.Handler { } func (a *ResellersAPI) list(w http.ResponseWriter, r *http.Request) { + creatorsParam := r.URL.Query().Get("creator") q := r.URL.Query().Get("q") limitStr := r.URL.Query().Get("limit") limit := 2000 @@ -32,9 +33,24 @@ func (a *ResellersAPI) list(w http.ResponseWriter, r *http.Request) { limit = n } } - - sql1 := "SELECT id, COALESCE(name,'') AS name FROM reseller WHERE 1=1" + creators := []string{} + for _, s := range strings.Split(creatorsParam, ",") { + s = strings.TrimSpace(s) + if s != "" { + creators = append(creators, s) + } + } + if len(creators) == 0 { + ok(w, r, []map[string]interface{}{}) + return + } + ph := strings.Repeat("?,", len(creators)) + ph = strings.TrimSuffix(ph, ",") + sql1 := "SELECT id, COALESCE(name,'') AS name FROM reseller WHERE creator IN (" + ph + ")" args := []interface{}{} + for _, c := range creators { + args = append(args, c) + } if q != "" { sql1 += " AND (CAST(id AS CHAR) LIKE ? OR name LIKE ?)" like := "%" + q + "%"