fix(api): 强制要求计划ID过滤并调整分销商查询逻辑

- 在导出接口增加 plan_id_eq 作为必填过滤字段验证
- 修改分销商列表接口,取消按 creator 过滤,返回所有分销商
- 优化分销商查询语句,支持关键字搜索 ID 和名称
- 在前端状态管理中,为计划选择字段添加必填校验规则
This commit is contained in:
zhouyonggao 2025-12-22 17:12:03 +08:00
parent 993d91849c
commit 55058abf0d
3 changed files with 10 additions and 24 deletions

View File

@ -216,6 +216,11 @@ func (a *ExportsAPI) create(w http.ResponseWriter, r *http.Request) {
fail(w, r, http.StatusBadRequest, "缺少时间过滤:必须提供 create_time_between") fail(w, r, http.StatusBadRequest, "缺少时间过滤:必须提供 create_time_between")
return return
} }
// 验证 plan_id_eq 为必选字段
if v, ok := p.Filters["plan_id_eq"]; !ok || v == nil || v == "" || v == 0 {
fail(w, r, http.StatusBadRequest, "plan_id_eq 为必选字段")
return
}
} }
filtered := make([]string, 0, len(fs)) filtered := make([]string, 0, len(fs))
tv := 0 tv := 0

View File

@ -24,7 +24,6 @@ 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
@ -33,30 +32,11 @@ func (a *ResellersAPI) list(w http.ResponseWriter, r *http.Request) {
limit = n limit = n
} }
} }
creators := []string{} // 不再过滤 creator返回所有分销商
for _, s := range strings.Split(creatorsParam, ",") { sql1 := "SELECT id, COALESCE(name,'') AS name FROM reseller"
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 + ") OR salesman_id IN (" + ph + "))"
args := []interface{}{} args := []interface{}{}
for _, c := range creators {
args = append(args, c)
}
// salesman_id IN 需要再传一次参数
for _, c := range creators {
args = append(args, c)
}
if q != "" { if q != "" {
sql1 += " AND (CAST(id AS CHAR) LIKE ? OR name LIKE ?)" sql1 += " WHERE CAST(id AS CHAR) LIKE ? OR name LIKE ?"
like := "%" + q + "%" like := "%" + q + "%"
args = append(args, like, like) args = append(args, like, like)
} }

View File

@ -245,7 +245,8 @@ const ValidationRules = {
} }
}, },
trigger: 'change' trigger: 'change'
}] }],
planId: [{ required: true, message: '请选择计划', trigger: 'change' }]
}; };
} }
}; };