接入搜索功能

This commit is contained in:
2021-06-13 09:53:37 +08:00
parent 8b6dd5fdad
commit 9e595ab6e8
3 changed files with 122 additions and 30 deletions
+38 -6
View File
@@ -522,7 +522,7 @@ func (that *MakeCode) Edit(table string, req *http.Request) Map {
return data
}
func (that *MakeCode) Search(table string, req *http.Request) (string, Map) {
func (that *MakeCode) Search(table string, req *http.Request, db *db.HoTimeDB) (string, Map, Map) {
reStr := ""
for _, v := range that.TableColumns[table] {
//不可使用,未在前端展示,但在内存中保持有
@@ -530,13 +530,13 @@ func (that *MakeCode) Search(table string, req *http.Request) (string, Map) {
continue
}
if v.Get("list") == nil || v.GetBool("list") {
reStr += v.GetString("name") + ","
reStr += table + "." + v.GetString("name") + ","
}
}
if len(reStr) != 0 {
reStr = reStr[:len(reStr)-1]
}
leftJoin := Map{}
data := Map{}
keyword := Map{}
daterange := Map{}
@@ -555,14 +555,46 @@ func (that *MakeCode) Search(table string, req *http.Request) (string, Map) {
columns := that.TableConfig.GetMap(table).GetSlice("columns")
if searchItem.GetString("type") == "search" {
for columnKey, _ := range columns {
if columns.GetMap(columnKey)["list"] == false {
continue
}
if searchItemName == "keyword" &&
columns.GetMap(columnKey).GetString("type") == "text" {
keyword[columns.GetMap(columnKey).GetString("name")+"[~]"] = reqValue
keyword[table+"."+columns.GetMap(columnKey).GetString("name")+"[~]"] = reqValue
}
if searchItemName == "keyword" &&
columns.GetMap(columnKey).GetString("name") == "id" {
keyword[table+"."+columns.GetMap(columnKey).GetString("name")] = reqValue
}
if searchItemName == "keyword" &&
columns.GetMap(columnKey).GetString("link") != "" &&
columns.GetMap(columnKey).GetString("name") != "parent_id" {
for columnChildKey, _ := range columns {
if columns.GetMap(columnChildKey).GetString("link") != "" &&
columns.GetMap(columnChildKey).GetString("name") != "parent_id" {
childs := db.Select(columns.GetMap(columnChildKey).GetString("link"), "id", Map{columns.GetMap(columnChildKey).GetString("value") + "[~]": reqValue})
childIds := Slice{}
for _, v := range childs {
childIds = append(childIds, v.GetString("id"))
}
if len(childIds) != 0 {
keyword[columns.GetMap(columnChildKey).GetString("link")+".id"] = childIds
leftJoin["[>]"+columns.GetMap(columnChildKey).GetString("link")] =
columns.GetMap(columnChildKey).GetString("name") + "=" +
columns.GetMap(columnChildKey).GetString("link") + ".id"
}
}
}
}
//日期类型
if searchItemName == "daterange" && columns.GetMap(columnKey).GetString("type") == "time" {
fmt.Println(req.Form["daterange"])
daterange[columns.GetMap(columnKey).GetString("name")+"[<>]"] = ObjToSlice(req.Form["daterange"])
daterange[table+"."+columns.GetMap(columnKey).GetString("name")+"[<>]"] = ObjToSlice(req.Form["daterange"])
}
}
@@ -611,5 +643,5 @@ func (that *MakeCode) Search(table string, req *http.Request) (string, Map) {
}
}
return reStr, where
return reStr, leftJoin, where
}