KunWeb/web/admin/rigger/cataindex.go
2025-05-16 01:00:48 +08:00

178 lines
4.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package rigger
import (
"fmt"
"net/http"
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
)
func Cataindex_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
if userid == 0 {
return false
}
csql := NewCiySQL("zc_cata")
csql.Where("cbid=0")
csql.Order("csort,id")
rows, _, err := CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["list"] = rows
if post.Getbool("field") {
field := map[string]map[string]any{}
fshow := ""
FieldAdd(&field, &fshow, -1, "_btn", "操作")
FieldAdd(&field, &fshow, -1, "id", "|库索引|")
FieldAdd(&field, &fshow, -1, "name", "库名称")
FieldAdd(&field, &fshow, -1, "codeid", "库代码")
FieldAdd(&field, &fshow, -1, "csort", "排序|")
FieldAdd(&field, &fshow, -1, "extdata", "引用表")
field["name"]["thwidth"] = "20em"
field["extdata"]["thwidth"] = "20em"
ret["fshow"] = strings.TrimLeft(fshow, ",")
ret["field"] = field
}
if post.Getbool("once") {
once := map[string]any{}
input := make([]map[string]string, 0)
input = append(input, map[string]string{
"form": "codeid",
"type": "input",
"name": "库代码",
"prop": ` style="width:10em;"`,
})
input = append(input, map[string]string{
"form": "name",
"type": "input",
"name": "库名称",
"prop": ` style="width:10em;"`,
})
input = append(input, map[string]string{
"form": "extdata",
"type": "input",
"name": "引用表",
"prop": ` style="width:10em;"`,
})
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
}
func Cataindex_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p601pi") {
return ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
codeid := post.Get("codeid")
if codeid == "" {
return ErrJSON(w, "请填写值")
}
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写名称")
}
upid := post.Getint("upid")
csort := post.Getint("csort")
extdata := post.Get("extdata")
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_cata")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_cata")
csql.Where("cbid=0")
csql.Where("codeid", codeid)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("该库代码重复")
}
updata["upid"] = upid
updata["csort"] = csort
updata["codeid"] = codeid
updata["name"] = name
updata["extdata"] = extdata
csql = NewCiySQL("zc_cata")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
} else {
updata["isuse"] = 1
id, err = CiyDB.Insert(csql, updata)
}
updata["id"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_cata", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
}
func Cataindex_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p601pi") {
return ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
}
var csql *CiySQL
csql = NewCiySQL("zc_cata")
csql.Where("id in", ids)
rows, _, _ := CiyDB.Get(csql)
vids := make([]int, 0)
err := CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
csql = NewCiySQL("zc_cata")
csql.Where("upid", delid)
csql.Where("cbid=0")
downcnt := Toint(CiyDB.Get1(csql))
if downcnt > 0 {
return fmt.Errorf("该库有%d个子库请先删除子库", downcnt)
}
Delcheck(CiyDB, delid, "zc_cata", "cbid", Tostr(row["name"]))
Delme(CiyDB, delid, "zc_cata")
admin.SaveLogDB(CiyDB, "zc_cata", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
}