feat(api): 支持按creator参数过滤经销商列表
- 新增creator参数解析,支持按多个creator过滤 - 根据传入creator构建SQL查询条件及参数绑定 - 当creator参数为空时,返回空列表避免无效查询 - 保持原有按q参数模糊搜索功能不变 - 限制默认返回记录数为2000,增强接口性能
This commit is contained in:
parent
11a93996e5
commit
a8b7c77e03
|
|
@ -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 + "%"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue