feat(api): 支持按creator参数过滤经销商列表

- 新增creator参数解析,支持按多个creator过滤
- 根据传入creator构建SQL查询条件及参数绑定
- 当creator参数为空时,返回空列表避免无效查询
- 保持原有按q参数模糊搜索功能不变
- 限制默认返回记录数为2000,增强接口性能
This commit is contained in:
zhouyonggao 2025-12-18 21:38:28 +08:00
parent 11a93996e5
commit a8b7c77e03
1 changed files with 18 additions and 2 deletions

View File

@ -24,6 +24,7 @@ func ResellersHandler(resellerDB *sql.DB) http.Handler {
} }
func (a *ResellersAPI) list(w http.ResponseWriter, r *http.Request) { func (a *ResellersAPI) list(w http.ResponseWriter, r *http.Request) {
creatorsParam := r.URL.Query().Get("creator")
q := r.URL.Query().Get("q") q := r.URL.Query().Get("q")
limitStr := r.URL.Query().Get("limit") limitStr := r.URL.Query().Get("limit")
limit := 2000 limit := 2000
@ -32,9 +33,24 @@ func (a *ResellersAPI) list(w http.ResponseWriter, r *http.Request) {
limit = n limit = n
} }
} }
creators := []string{}
sql1 := "SELECT id, COALESCE(name,'') AS name FROM reseller WHERE 1=1" 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{}{} args := []interface{}{}
for _, c := range creators {
args = append(args, c)
}
if q != "" { if q != "" {
sql1 += " AND (CAST(id AS CHAR) LIKE ? OR name LIKE ?)" sql1 += " AND (CAST(id AS CHAR) LIKE ? OR name LIKE ?)"
like := "%" + q + "%" like := "%" + q + "%"