This commit is contained in:
boi 2025-05-16 13:36:31 +08:00
parent 170c4eb4f7
commit ebb0950e87
36 changed files with 1639 additions and 1912 deletions

61
main.go
View File

@ -1,5 +1,6 @@
package main
//nolint:staticcheck
import (
"fmt"
"io"
@ -11,7 +12,7 @@ import (
"time"
"ciyon/web/admin/autotask"
. "ciyon/zciyon"
c "ciyon/zciyon"
_ "github.com/go-sql-driver/mysql"
)
@ -19,13 +20,13 @@ import (
func main() {
//nohup ./zgo &
//nohup /data/go/ciyon/zgo > /dev/null 2>&1 &
CiyVars.Version = "1.0.1"
Clog("---=========================Ciyon=========================---")
Clog("Version:", CiyVars.Version, " WorkDir:", CiyWebDir)
c.CiyVars.Version = "1.0.1"
c.Clog("---=========================Ciyon=========================---")
c.Clog("Version:", c.CiyVars.Version, " WorkDir:", c.CiyWebDir)
//读取配置文件ini
ini, err3 := NewCiyINI("web.ini")
CiyVars.Ini = *ini
ini, err3 := c.NewCiyINI("web.ini")
c.CiyVars.Ini = *ini
runmode := "dev"
logfile := "log/ciyon.log"
logtcp := ""
@ -71,9 +72,9 @@ func main() {
} else {
runmode = ini.GetKey("main", "runmode", runmode)
if runmode == "prod" {
CiyRunMode = CIYRUN_PROD
c.CiyRunMode = c.CIYRUN_PROD
} else {
CiyRunMode = CIYRUN_DEV
c.CiyRunMode = c.CIYRUN_DEV
}
tasksec = ini.GetKeyint("main", "tasksec", tasksec)
logfile = ini.GetKey("log", "logfile", logfile)
@ -95,11 +96,11 @@ func main() {
phphost = ini.GetKey("php", "host", phphost)
mock = ini.GetKey("mock", "target", mock)
}
Log = NewCiyLog(500)
Log.SupportStack(CiyVars.Version)
Log.InitFile(logfile, logfilelevel)
Log.InitTCP(logtcp, logtcplevel)
Log.Info("Ciyon", "Ciyon Start.")
c.Log = c.NewCiyLog(500)
c.Log.SupportStack(c.CiyVars.Version)
c.Log.InitFile(logfile, logfilelevel)
c.Log.InitTCP(logtcp, logtcplevel)
c.Log.Info("Ciyon", "Ciyon Start.")
go watchMe()
// Log.Debug("sdfs", "asfsdfasdf")
@ -109,12 +110,12 @@ func main() {
// if err != nil {
// log.Fatal(err)
// }
CiyDB, err = NewCiyMysql(fmt.Sprintf("%s:%s@tcp(%s)/%s", dbuser, dbpass, dbhost+":"+dbport, dbname), dbmaxopenconn, dbmaxidelconn, dbmaxlifesec) //main初始化一直开着程序结束才关
c.CiyDB, err = c.NewCiyMysql(fmt.Sprintf("%s:%s@tcp(%s)/%s", dbuser, dbpass, dbhost+":"+dbport, dbname), dbmaxopenconn, dbmaxidelconn, dbmaxlifesec) //main初始化一直开着程序结束才关
if err != nil {
log.Fatal(err)
}
web, err2 := NewCiyWebServer()
web, err2 := c.NewCiyWebServer()
if err2 != nil {
log.Fatal(err2)
}
@ -130,19 +131,19 @@ func main() {
web.SetMockFile() //在web/ud/mock目录下建立对应的json文件。
} else if mock != "" {
web.SetMockFn(func(w http.ResponseWriter, r *http.Request) error {
funname := GetQuery("func", r)
funname := c.GetQuery("func", r)
funs := strings.Split(funname, ".")
if len(funs) < 2 {
return fmt.Errorf("func fmterr func=%v", funname)
}
csql := NewCiySQL(mock)
csql := c.NewCiySQL(mock)
csql.Where("upath", funs[0])
csql.Where("ufunc", funs[1])
mockrow, _ := CiyDB.Getone(csql)
mockrow, _ := c.CiyDB.Getone(csql)
if mockrow == nil {
return fmt.Errorf("nofind mock func=%v", funname)
}
mockjson := Tostr(mockrow["mockjson"])
mockjson := c.Tostr(mockrow["mockjson"])
quest := r.URL.RawQuery
body, err := io.ReadAll(r.Body)
if err == nil && len(body) > 0 {
@ -163,16 +164,16 @@ func main() {
}
updata := map[string]any{
"lastrequest": quest,
"lasttimes": Tostamp(),
"lasttimes": c.Tostamp(),
}
csql = NewCiySQL(mock)
csql = c.NewCiySQL(mock)
csql.Where("id", mockrow["id"])
CiyDB.Update(csql, updata)
c.CiyDB.Update(csql, updata)
return nil
})
}
if CiyRunMode == CIYRUN_DEV {
if c.CiyRunMode == c.CIYRUN_DEV {
tasksec = 0
}
if tasksec > 0 {
@ -186,24 +187,24 @@ func main() {
//web.WebRunSock("ciyon.sock")
}
func watchMe() {
fmd5 := MD5file(os.Args[0])
fmd5 := c.MD5file(os.Args[0])
for {
newfmd5 := MD5file(os.Args[0])
newfmd5 := c.MD5file(os.Args[0])
if newfmd5 != fmd5 {
Sleep(1)
c.Sleep(1)
fmt.Println("restarting:")
Log.Info("RESTART", "Restarting.."+newfmd5)
c.Log.Info("RESTART", "Restarting.."+newfmd5)
err := syscall.Exec(os.Args[0], os.Args, os.Environ())
if err != nil {
fmt.Println("restart fail:", err)
Log.Info("RESTART", "重启失败:"+err.Error())
Sleep(10)
c.Log.Info("RESTART", "重启失败:"+err.Error())
c.Sleep(10)
continue
}
os.Exit(0)
return
}
Sleep(2)
c.Sleep(2)
continue
}
}

View File

@ -9,10 +9,13 @@ import (
"ciyon/web/admin/datasse"
"ciyon/web/admin/rigger"
"ciyon/web/admin/wsdemo"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func setWebRoute_adm(web *CiyWebServer) {
/*
本文件由node生成
*/
func setWebRoute_adm(web *c.CiyWebServer) {
web.RouterFunc("admin/rigger", map[string]map[string]func(http.ResponseWriter, *http.Request) bool{
"logfile": {
"init": rigger.Logfile_init,

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@ package ap
import (
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
"ciyon/zciyon/xlsx"
"fmt"
"math/rand"
@ -12,21 +12,21 @@ import (
"strings"
)
func demo_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func demo_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
ret := map[string]any{}
query := post.Getobj("query")
csql := NewCiySQL("ap_demo")
liid := Getint(query, "liid")
csql := c.NewCiySQL("ap_demo")
liid := c.Getint(query, "liid")
if liid > 0 {
csql.Where("auditstatus", liid)
}
csql.Where_daterange("audittimes", Getstr(query, "audittimes"))
csql.Where("name like", Getstr(query, "name"))
val := Getstr(query, "menuid")
csql.Where_daterange("audittimes", c.Getstr(query, "audittimes"))
csql.Where("name like", c.Getstr(query, "name"))
val := c.Getstr(query, "menuid")
if val != "" {
csqlt := NewCiySQL("zc_menu")
csqlt := c.NewCiySQL("zc_menu")
csqlt.Where("name like", val)
trow, _ := CiyDB.Getone(csqlt)
trow, _ := c.CiyDB.Getone(csqlt)
if trow != nil {
csql.Where("menuid", trow["id"])
ret["menuid"] = trow["name"]
@ -34,22 +34,22 @@ func demo_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
csql.Where("menuid=0")
}
}
csql.Where_numrange("bankmoney", Getstr(query, "bankmoney_1"), Getstr(query, "bankmoney_2"), 1000000)
csql.Where("isopen", Getstr(query, "isopen"))
csql.Where("mauditstatus like", Getstr(query, "mauditstatus"))
valint := Getint(query, "renzheng")
csql.Where_numrange("bankmoney", c.Getstr(query, "bankmoney_1"), c.Getstr(query, "bankmoney_2"), 1000000)
csql.Where("isopen", c.Getstr(query, "isopen"))
csql.Where("mauditstatus like", c.Getstr(query, "mauditstatus"))
valint := c.Getint(query, "renzheng")
if valint > 0 {
valint = 1 << (valint - 1)
csql.Where(fmt.Sprintf("renzheng&%d=%d", valint, valint))
}
order := Getstr(query, "order", "id desc")
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Demo_list(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -58,9 +58,9 @@ func Demo_list(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -69,8 +69,8 @@ func Demo_list(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
ret["fshow"] = fshow
ret["field"] = field
}
@ -111,7 +111,7 @@ func Demo_list(w http.ResponseWriter, r *http.Request) bool {
"form": "isopen",
"type": "select",
"name": "是否开启",
"select": CiyDB.Getdbcodes("ap_demo", "isopen"),
"select": c.CiyDB.Getdbcodes("ap_demo", "isopen"),
"all": "全部",
})
input = append(input, map[string]any{
@ -152,47 +152,47 @@ func Demo_list(w http.ResponseWriter, r *http.Request) bool {
"select": orders,
})
once["input"] = input
once["renzheng"] = CiyDB.Getdbcodes("ap_demo", "renzheng")
// csql = NewCiySQL("zc_menu")
once["renzheng"] = c.CiyDB.Getdbcodes("ap_demo", "renzheng")
// csql = c.NewCiySQL("zc_menu")
// csql.Column("id,name")
// once["zc_menu"], _, _ = CiyDB.Get(csql)
// once["zc_menu"], _, _ = c.CiyDB.Get(csql)
ret["once"] = once
}
ret["zc_menu"] = Getrelation(CiyDB, rows, "zc_menu", "menuid", map[string]string{"column": "id,name"}, map[string]string{"queryid": "id"})
return SuccJSON(w, ret)
ret["zc_menu"] = c.Getrelation(c.CiyDB, rows, "zc_menu", "menuid", map[string]string{"column": "id,name"}, map[string]string{"queryid": "id"})
return c.SuccJSON(w, ret)
}
func Demo_getdata(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, _userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, _userid := admin.Verifyfast(c.CiyDB, post)
if _userid == 0 {
return false
}
id := post.Getint("id")
ret := map[string]any{}
csql := NewCiySQL("ap_demo")
csql := c.NewCiySQL("ap_demo")
csql.Column("content,md")
csql.Where("id", id)
datarow, _ := CiyDB.Getone(csql)
datarow, _ := c.CiyDB.Getone(csql)
if datarow == nil {
datarow = map[string]any{}
}
ret["data"] = datarow
if post.Get("act") == "edit" {
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Column("id,name")
menurows, _, _ := CiyDB.Get(csql)
menurows, _, _ := c.CiyDB.Get(csql)
ret["zc_menu"] = menurows
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Demo_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, _userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, _userid := admin.Verifyfast(c.CiyDB, post)
if _userid == 0 {
return false
}
// if admin.Nopower(CiyDB, _userid, "p u") {
// return ErrJSON(w, "您未被授权操作")
// if admin.Nopower(c.CiyDB, _userid, "p u") {
// return c.ErrJSON(w, "您未被授权操作")
// }
var err error
id := post.Getint("id")
@ -229,27 +229,27 @@ func Demo_update(w http.ResponseWriter, r *http.Request) bool {
content := post.Get("content")
md := post.Get("md")
if name == "" {
return ErrJSON(w, "请填写默认标题")
return c.ErrJSON(w, "请填写默认标题")
}
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("ap_demo")
csql := c.NewCiySQL("ap_demo")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "读取数据失败", err)
return c.ErrJSON(w, "读取数据失败", err)
}
if datarow == nil {
return ErrJSON(w, "数据不存在")
return c.ErrJSON(w, "数据不存在")
}
}
var updata = map[string]any{}
err = CiyDB.Tran(func() error {
csql := NewCiySQL("ap_demo")
err = c.CiyDB.Tran(func() error {
csql := c.NewCiySQL("ap_demo")
csql.Where("name", name)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("数据已存在")
}
@ -285,130 +285,130 @@ func Demo_update(w http.ResponseWriter, r *http.Request) bool {
updata["eartmpr"] = eartmpr
updata["content"] = content
updata["md"] = md
csql = NewCiySQL("ap_demo")
csql = c.NewCiySQL("ap_demo")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
updata["auditstatus"] = 20
updata["addtimes"] = Tostamp()
id, err = CiyDB.Insert(csql, updata)
updata["addtimes"] = c.Tostamp()
id, err = c.CiyDB.Insert(csql, updata)
}
updata["id"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "ap_demo", datarow, updata)
admin.SaveLogDB(c.CiyDB, "ap_demo", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, err.Error())
return c.ErrJSON(w, err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Demo_audit(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
// if admin.Nopower(CiyDB, userid, "p d") {
// return ErrJSON(w, "您未被授权操作")
// if admin.Nopower(c.CiyDB, userid, "p d") {
// return c.ErrJSON(w, "您未被授权操作")
// }
ids := post.Get("ids")
status := post.Getint("status")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("ap_demo")
csql := c.NewCiySQL("ap_demo")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
var updata = map[string]any{}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
updata["auditstatus"] = status
updata["audituser"] = userid
updata["audittimes"] = Tostamp()
csql = NewCiySQL("ap_demo")
updata["audittimes"] = c.Tostamp()
csql = c.NewCiySQL("ap_demo")
csql.Where("id", row["id"])
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("审核失败:%v", err)
}
vids = append(vids, Toint(row["id"]))
vids = append(vids, c.Toint(row["id"]))
}
return nil
})
if err != nil {
return ErrJSON(w, err.Error())
return c.ErrJSON(w, err.Error())
}
ret := map[string]any{}
ret["data"] = updata
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Demo_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
// if admin.Nopower(CiyDB, userid, "p d") {
// return ErrJSON(w, "您未被授权操作")
// if admin.Nopower(c.CiyDB, userid, "p d") {
// return c.ErrJSON(w, "您未被授权操作")
// }
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("ap_demo")
csql := c.NewCiySQL("ap_demo")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
//Delcheck(CiyDB, delid, "tablexx", "xxid", "xxx");
//Delall(CiyDB, delid, "tablexx", "xxid", "xxx");
Delme(CiyDB, delid, "ap_demo")
admin.SaveLogDB(CiyDB, "ap_demo", row, nil)
delid := c.Toint(row["id"])
//c.Delcheck(c.CiyDB, delid, "tablexx", "xxid", "xxx");
//c.Delall(c.CiyDB, delid, "tablexx", "xxid", "xxx");
c.Delme(c.CiyDB, delid, "ap_demo")
admin.SaveLogDB(c.CiyDB, "ap_demo", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Demo_exportxls(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
// if admin.Nopower(CiyDB, userid, "p00e") {
// return ErrJSON(w, "您未被授权操作")
// if admin.Nopower(c.CiyDB, userid, "p00e") {
// return c.ErrJSON(w, "您未被授权操作")
// }
_, csql := demo_setwhere(post)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
if len(rows) > 10000 {
return ErrJSON(w, "将导出"+Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
return c.ErrJSON(w, "将导出"+c.Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
}
fields := []map[string]string{}
fields = append(fields, map[string]string{"style": "c", "width": "60", "field": "id", "name": "行码"})
@ -445,15 +445,15 @@ func Demo_exportxls(w http.ResponseWriter, r *http.Request) bool {
fields = append(fields, map[string]string{"style": "l", "width": "100", "field": "content", "name": "介绍"})
fields = append(fields, map[string]string{"style": "l", "width": "100", "field": "addtimes", "name": "添加时间"})
code_auditstatus := admin.Getcatas(CiyDB, "auditstatus")
code_audituser := Getrelation(CiyDB, rows, "xa_user", "audituser")
code_menuid, _, _ := CiyDB.Get(NewCiySQL("zc_menu").Column("id,name"))
code_isuse := CiyDB.Getdbcodes("ap_demo", "isuse")
code_isopen := CiyDB.Getdbcodes("ap_demo", "isopen")
code_mauditstatus := admin.Getcatas(CiyDB, "auditstatus")
code_prodcata := admin.Getcatas(CiyDB, "prodcata")
code_areacode, _, _ := CiyDB.Get(NewCiySQL("ciy_arearpc").Column("id,name,upid"))
code_renzheng := admin.Getcatas(CiyDB, "renzheng")
code_auditstatus := admin.Getcatas(c.CiyDB, "auditstatus")
code_audituser := c.Getrelation(c.CiyDB, rows, "xa_user", "audituser")
code_menuid, _, _ := c.CiyDB.Get(c.NewCiySQL("zc_menu").Column("id,name"))
code_isuse := c.CiyDB.Getdbcodes("ap_demo", "isuse")
code_isopen := c.CiyDB.Getdbcodes("ap_demo", "isopen")
code_mauditstatus := admin.Getcatas(c.CiyDB, "auditstatus")
code_prodcata := admin.Getcatas(c.CiyDB, "prodcata")
code_areacode, _, _ := c.CiyDB.Get(c.NewCiySQL("ciy_arearpc").Column("id,name,upid"))
code_renzheng := admin.Getcatas(c.CiyDB, "renzheng")
datas := [][]string{}
for _, row := range rows {
@ -463,55 +463,55 @@ func Demo_exportxls(w http.ResponseWriter, r *http.Request) bool {
if val, ok := row[field]; ok {
var str string
if field == "id" {
str = EnID(Toint(val))
str = c.EnID(c.Toint(val))
} else if field == "auditstatus" {
str = Ccode(code_auditstatus, Toint(val))
str = c.Ccode(code_auditstatus, c.Toint(val))
} else if field == "audituser" {
str = Ccode(code_audituser, Toint(val))
str = c.Ccode(code_audituser, c.Toint(val))
} else if field == "audittimes" {
str = Iff(Toint(val) > 0, Todate(Toint(val), "Y-m-d H:i"), "--")
str = c.Iff(c.Toint(val) > 0, c.Todate(c.Toint(val), "Y-m-d H:i"), "--")
} else if field == "menuid" {
str = Ccode(code_menuid, Toint(val))
str = c.Ccode(code_menuid, c.Toint(val))
} else if field == "metre" {
str = Iff(Toint(val) > 0, fmt.Sprintf("%.2f", Tofloat(val)/1000), "--")
str = c.Iff(c.Toint(val) > 0, fmt.Sprintf("%.2f", c.Tofloat(val)/1000), "--")
} else if field == "bankmoney" {
str = Iff(Toint(val) > 0, fmt.Sprintf("%.3f", Tofloat(val)/1000000), "--")
str = c.Iff(c.Toint(val) > 0, fmt.Sprintf("%.3f", c.Tofloat(val)/1000000), "--")
} else if field == "setdate" {
str = Iff(Toint(val) > 0, Todate(Toint(val), "Y-m-d H:i"), "--")
str = c.Iff(c.Toint(val) > 0, c.Todate(c.Toint(val), "Y-m-d H:i"), "--")
} else if field == "settimes" {
str = Iff(Toint(val) > 0, Todate(Toint(val), "Y-m-d H:i"), "--")
str = c.Iff(c.Toint(val) > 0, c.Todate(c.Toint(val), "Y-m-d H:i"), "--")
} else if field == "isuse" {
str = Iff(Toint(val) == 0, Tostr(code_isuse[0]["name"]), Tostr(code_isuse[1]["name"]))
str = c.Iff(c.Toint(val) == 0, c.Tostr(code_isuse[0]["name"]), c.Tostr(code_isuse[1]["name"]))
} else if field == "isopen" {
str = Iff(Toint(val) == 0, Tostr(code_isopen[0]["name"]), Tostr(code_isopen[1]["name"]))
str = c.Iff(c.Toint(val) == 0, c.Tostr(code_isopen[0]["name"]), c.Tostr(code_isopen[1]["name"]))
} else if field == "sigstatus" {
str = Ccode(code_auditstatus, Toint(val))
str = c.Ccode(code_auditstatus, c.Toint(val))
} else if field == "mauditstatus" {
str = strings.Join(Scode(code_mauditstatus, Tostr(val)), ",")
str = strings.Join(c.Scode(code_mauditstatus, c.Tostr(val)), ",")
} else if field == "prodcata" {
str = strings.Join(Mcode(code_prodcata, Toint(val)), "-")
str = strings.Join(c.Mcode(code_prodcata, c.Toint(val)), "-")
} else if field == "areacode" {
str = strings.Join(Mcode(code_areacode, Toint(val)), "-")
str = strings.Join(c.Mcode(code_areacode, c.Toint(val)), "-")
} else if field == "renzheng" {
number := Toint(val)
number := c.Toint(val)
strs := make([]string, 0)
for _, cod := range code_renzheng {
if number&(1<<uint(Toint(cod["id"])-1)) != 0 {
strs = append(strs, Tostr(cod["name"]))
if number&(1<<uint(c.Toint(cod["id"])-1)) != 0 {
strs = append(strs, c.Tostr(cod["name"]))
}
}
str = strings.Join(strs, ",")
} else if field == "npcyc" {
va := Toint(val)
va := c.Toint(val)
if va < 0 {
str = Tostr(-va) + "月"
str = c.Tostr(-va) + "月"
} else if va >= 86400 {
str = Tostr(Toint(va/86400)) + "天"
str = c.Tostr(c.Toint(va/86400)) + "天"
} else {
str = Tostr(va) + "秒"
str = c.Tostr(va) + "秒"
}
} else if field == "unit" {
us := strings.Split(Tostr(val), "|")
us := strings.Split(c.Tostr(val), "|")
str = ""
if len(us) == 5 {
str = "1" + us[4] + us[3] + us[2] + ","
@ -523,17 +523,17 @@ func Demo_exportxls(w http.ResponseWriter, r *http.Request) bool {
str = us[0]
}
} else if field == "ton" {
str = Iff(Toint(val) > 0, fmt.Sprintf("%.2f", Tofloat(val)/1000000), "--")
str = c.Iff(c.Toint(val) > 0, fmt.Sprintf("%.2f", c.Tofloat(val)/1000000), "--")
} else if field == "price" {
str = Iff(Toint(val) > 0, fmt.Sprintf("%.2f", Tofloat(val)/100), "--")
str = c.Iff(c.Toint(val) > 0, fmt.Sprintf("%.2f", c.Tofloat(val)/100), "--")
} else if field == "weightg" {
str = Iff(Toint(val) > 0, fmt.Sprintf("%.2f", Tofloat(val)/1000), "--")
str = c.Iff(c.Toint(val) > 0, fmt.Sprintf("%.2f", c.Tofloat(val)/1000), "--")
} else if field == "eartmpr" {
str = Iff(Toint(val) > 0, fmt.Sprintf("%.1f", Tofloat(val)/1000), "--")
str = c.Iff(c.Toint(val) > 0, fmt.Sprintf("%.1f", c.Tofloat(val)/1000), "--")
} else if field == "addtimes" {
str = Iff(Toint(val) > 0, Todate(Toint(val), "Y-m-d H:i"), "--")
str = c.Iff(c.Toint(val) > 0, c.Todate(c.Toint(val), "Y-m-d H:i"), "--")
} else {
str = Tostr(val)
str = c.Tostr(val)
}
dat = append(dat, str)
} else {
@ -551,45 +551,45 @@ func Demo_exportxls(w http.ResponseWriter, r *http.Request) bool {
param["landscape"] = true //横向打印
param["fixtopage"] = true //打印整个工作表
param["toptitle"] = "Demo数据报表"
str := General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + Todate(-1, "Ymd_His") + Tostr(rand.Intn(8999)+1000) + ".xls"
err = FileSave(CiyWebDir+filename, str)
str := c.General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + c.Todate(-1, "Ymd_His") + c.Tostr(rand.Intn(8999)+1000) + ".xls"
err = c.FileSave(c.CiyWebDir+filename, str)
if err != nil {
return ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
return c.ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
}
ret := map[string]any{}
ret["url"] = filename
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
// if admin.Nopower(CiyDB, userid, "p00e") {
// return ErrJSON(w, "您未被授权操作")
// if admin.Nopower(c.CiyDB, userid, "p00e") {
// return c.ErrJSON(w, "您未被授权操作")
// }
file := post.Get("file")
if FileExist(CiyWebDir+file) != nil {
return ErrJSON(w, "文件不存在")
if c.FileExist(c.CiyWebDir+file) != nil {
return c.ErrJSON(w, "文件不存在")
}
//github.com/qax-os/excelize
//github.com/xuri/excelize
// github.com/extrame/xls
//只支持xlsx格式其他ole2/xml等格式需使用导入其他依赖库
xlFile, err := xlsx.OpenFile(CiyWebDir + file)
xlFile, err := xlsx.OpenFile(c.CiyWebDir + file)
if err != nil {
return ErrJSON(w, "文件打开错误:%v", err)
return c.ErrJSON(w, "文件打开错误:%v", err)
}
datas, err := xlFile.ToSlice()
if err != nil {
return ErrJSON(w, "文件解析错误:%v", err)
return c.ErrJSON(w, "文件解析错误:%v", err)
}
datacnt := len(datas[0])
if datacnt < 2 {
return ErrJSON(w, "数据为空")
return c.ErrJSON(w, "数据为空")
}
html := ""
headsn := []string{}
@ -637,21 +637,21 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
continue
}
heads = append(heads, map[string]string{
"idx": Tostr(In_array(datas[0][xlsidx-1], hd[0])),
"idx": c.Tostr(c.In_array(datas[0][xlsidx-1], hd[0])),
"fld": hd[1],
"name": hd[0],
})
}
code_auditstatus := admin.Getcatas(CiyDB, "auditstatus")
code_userid, _, _ := CiyDB.Get(NewCiySQL("xa_user").Column("id,name"))
code_menuid, _, _ := CiyDB.Get(NewCiySQL("zc_menu").Column("id,name"))
code_isuse := CiyDB.Getdbcodes("ap_demo", "isuse")
code_isopen := CiyDB.Getdbcodes("ap_demo", "isopen")
code_mauditstatus := admin.Getcatas(CiyDB, "auditstatus")
code_prodcata := admin.Getcatas(CiyDB, "prodcata")
code_areacode, _, _ := CiyDB.Get(NewCiySQL("ciy_arearpc").Column("id,name,upid"))
code_renzheng := admin.Getcatas(CiyDB, "renzheng")
code_auditstatus := admin.Getcatas(c.CiyDB, "auditstatus")
code_userid, _, _ := c.CiyDB.Get(c.NewCiySQL("xa_user").Column("id,name"))
code_menuid, _, _ := c.CiyDB.Get(c.NewCiySQL("zc_menu").Column("id,name"))
code_isuse := c.CiyDB.Getdbcodes("ap_demo", "isuse")
code_isopen := c.CiyDB.Getdbcodes("ap_demo", "isopen")
code_mauditstatus := admin.Getcatas(c.CiyDB, "auditstatus")
code_prodcata := admin.Getcatas(c.CiyDB, "prodcata")
code_areacode, _, _ := c.CiyDB.Get(c.NewCiySQL("ciy_arearpc").Column("id,name,upid"))
code_renzheng := admin.Getcatas(c.CiyDB, "renzheng")
html += "<div class=\"table\">\n"
html += "<table><thead><tr>\n"
@ -664,18 +664,18 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
uniques := make(map[string]any)
id := 0
for rowidx := xlsidx; rowidx < datacnt; rowidx++ {
lineidx := Tostr(rowidx - xlsidx + 1)
lineidx := c.Tostr(rowidx - xlsidx + 1)
hrhtml := ""
firsthtml := "<td><div>" + lineidx + "</div></td>"
bempty := true
unqs := make([]string, 0)
csql := NewCiySQL("ap_demo")
csql := c.NewCiySQL("ap_demo")
for _, arr := range heads {
name := arr["name"]
errmsg := "" //数据有误,显示红色说明
showdat := "" //显示在表格中的数据
if Toint(arr["idx"]) > -1 {
showdat = strings.TrimSpace(datas[0][rowidx][Toint(arr["idx"])])
if c.Toint(arr["idx"]) > -1 {
showdat = strings.TrimSpace(datas[0][rowidx][c.Toint(arr["idx"])])
}
if showdat == "--" {
showdat = ""
@ -688,13 +688,13 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
value = 0
showdat = "<kbd>新增</kbd>"
} else {
id = DeID(showdat)
id = c.DeID(showdat)
if id == 0 {
errmsg = name + "解析错误"
} else {
csqlchk := NewCiySQL("ap_demo")
csqlchk := c.NewCiySQL("ap_demo")
csqlchk.Where("id", id).Column("id")
chkid := Toint(CiyDB.Get1(csqlchk))
chkid := c.Toint(c.CiyDB.Get1(csqlchk))
if chkid != id {
errmsg = name + "在数据库中不存在"
}
@ -705,7 +705,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Dcode(code_auditstatus, Tostr(showdat))
value = c.Dcode(code_auditstatus, c.Tostr(showdat))
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -714,7 +714,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Dcode(code_userid, showdat)
value = c.Dcode(code_userid, showdat)
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -723,11 +723,11 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Tostamp(Tostr(showdat))
value = c.Tostamp(c.Tostr(showdat))
if value == 0 {
errmsg = name + "时间格式错误"
} else {
showdat = Todate(Toint(value), "Y-m-d H:i:s")
showdat = c.Todate(c.Toint(value), "Y-m-d H:i:s")
}
}
} else if name == "默认标题" {
@ -741,7 +741,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Dcode(code_menuid, showdat)
value = c.Dcode(code_menuid, showdat)
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -765,7 +765,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if err != nil {
errmsg = name + "不是数字"
} else {
value = Toint(idat * 1000)
value = c.Toint(idat * 1000)
showdat += "米"
}
}
@ -777,7 +777,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if err != nil {
errmsg = name + "不是数字"
} else {
value = Toint(idat * 1000000)
value = c.Toint(idat * 1000000)
showdat += "万元"
}
}
@ -785,22 +785,22 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Tostamp(Tostr(showdat))
value = c.Tostamp(c.Tostr(showdat))
if value == 0 {
errmsg = name + "时间格式错误"
} else {
showdat = Todate(Toint(value), "Y-m-d")
showdat = c.Todate(c.Toint(value), "Y-m-d")
}
}
} else if name == "设置时间" {
if showdat == "" {
value = 0
} else {
value = Tostamp(Tostr(showdat))
value = c.Tostamp(c.Tostr(showdat))
if value == 0 {
errmsg = name + "时间格式错误"
} else {
showdat = Todate(Toint(value), "Y-m-d H:i:s")
showdat = c.Todate(c.Toint(value), "Y-m-d H:i:s")
}
}
} else if name == "是否使用" {
@ -809,10 +809,10 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
} else {
if showdat == code_isuse[0]["name"] {
value = 1
showdat = Tostr(code_isuse[0]["name"])
showdat = c.Tostr(code_isuse[0]["name"])
} else {
value = 2
showdat = Tostr(code_isuse[1]["name"])
showdat = c.Tostr(code_isuse[1]["name"])
}
}
} else if name == "是否开启" {
@ -821,10 +821,10 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
} else {
if showdat == code_isopen[0]["name"] {
value = 1
showdat = Tostr(code_isuse[0]["name"])
showdat = c.Tostr(code_isuse[0]["name"])
} else {
value = 2
showdat = Tostr(code_isuse[1]["name"])
showdat = c.Tostr(code_isuse[1]["name"])
}
}
} else if name == "库存单位" {
@ -850,7 +850,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if unitx != matches[3] {
errmsg = name + "中间单位不匹配"
} else {
value = Tostr(value) + "|" + matches[2] + "|" + matches[1]
value = c.Tostr(value) + "|" + matches[2] + "|" + matches[1]
}
} else {
errmsg = name + "第二段格式错误"
@ -866,11 +866,11 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
tdats := strings.Split(showdat, ",")
vals := make([]string, 0)
for _, da := range tdats {
tval := Dcode(code_mauditstatus, da)
tval := c.Dcode(code_mauditstatus, da)
if tval == -1 {
errmsg = name + "文字与系统数据不匹配"
}
vals = append(vals, Tostr(tval))
vals = append(vals, c.Tostr(tval))
}
value = strings.Join(vals, ",")
}
@ -879,7 +879,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
value = 0
} else {
dats := strings.Split(showdat, "-")
value = Dcode(code_prodcata, dats[len(dats)-1])
value = c.Dcode(code_prodcata, dats[len(dats)-1])
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -889,7 +889,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
value = 0
} else {
dats := strings.Split(showdat, "-")
value = Dcode(code_areacode, dats[len(dats)-1])
value = c.Dcode(code_areacode, dats[len(dats)-1])
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -901,7 +901,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
dats := strings.Split(showdat, ",")
tdat := 0
for _, da := range dats {
bti := Dcode(code_renzheng, da)
bti := c.Dcode(code_renzheng, da)
if bti == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -914,7 +914,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
value = 0
} else {
last := showdat[len(showdat)-3:]
dd := Toint(showdat[:len(showdat)-3])
dd := c.Toint(showdat[:len(showdat)-3])
if dd == 0 {
errmsg = name + "周期数字错误"
} else if last == "天" {
@ -957,7 +957,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if err != nil {
errmsg = name + "不是数字"
} else {
value = Toint(idat * 1000000)
value = c.Toint(idat * 1000000)
showdat += "吨"
}
}
@ -969,7 +969,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if err != nil {
errmsg = name + "不是数字"
} else {
value = Toint(idat * 100)
value = c.Toint(idat * 100)
showdat += "元"
}
}
@ -1016,7 +1016,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if err != nil {
errmsg = name + "不是数字"
} else {
value = Toint(idat * 1000)
value = c.Toint(idat * 1000)
showdat += "KG"
}
}
@ -1028,7 +1028,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if err != nil {
errmsg = name + "不是数字"
} else {
value = Toint(idat * 1000)
value = c.Toint(idat * 1000)
showdat += "℃"
}
}
@ -1038,7 +1038,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
bempty = false
}
if errmsg == "" {
hrhtml += "<td><div>" + showdat + "<input type=\"hidden\" name=\"" + Tostr(arr["fld"]) + "_" + lineidx + "\" value=\"" + Tostr(value) + "\"/>" + ext + "</div></td>"
hrhtml += "<td><div>" + showdat + "<input type=\"hidden\" name=\"" + c.Tostr(arr["fld"]) + "_" + lineidx + "\" value=\"" + c.Tostr(value) + "\"/>" + ext + "</div></td>"
} else {
hrhtml += "<td><div style=\"background:#ffe8c5;\" title=\"#" + lineidx + ":" + errmsg + "\">" + showdat + "</div></td>"
}
@ -1054,7 +1054,7 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
} else {
uniques[unq] = true
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
firsthtml = "<td style=\"background:#ffe8c5;\" title=\"#" + lineidx + ":该行与数据库数据有重复\"><div class=\"lang\">重复</div></td>"
}
@ -1069,23 +1069,23 @@ func Demo_importxls_in(w http.ResponseWriter, r *http.Request) bool {
html += "</tbody>\n"
html += "</table>\n"
html += "</div>\n"
html += "<input type=\"hidden\" name=\"total\" value=\"" + Tostr(cnt) + "\"/>\n"
html += "<code>共" + Tostr(cnt) + "条数据</code>\n"
return SuccJSON(w, map[string]any{
html += "<input type=\"hidden\" name=\"total\" value=\"" + c.Tostr(cnt) + "\"/>\n"
html += "<code>共" + c.Tostr(cnt) + "条数据</code>\n"
return c.SuccJSON(w, map[string]any{
"html": html,
"count": cnt,
})
}
func Demo_importxls_data(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
total := post.Getint("total")
err := CiyDB.Tran(func() error {
err := c.CiyDB.Tran(func() error {
for i := 1; i <= total; i++ {
istr := Tostr(i)
istr := c.Tostr(i)
id := post.Getint("id_" + istr)
auditstatus := post.Get("auditstatus_" + istr)
audituser := post.Get("audituser_" + istr)
@ -1117,10 +1117,10 @@ func Demo_importxls_data(w http.ResponseWriter, r *http.Request) bool {
weightg := post.Get("weightg_" + istr)
eartmpr := post.Get("eartmpr_" + istr)
content := post.Get("content_" + istr)
csql := NewCiySQL("ap_demo")
csql := c.NewCiySQL("ap_demo")
csql.Where("name", name)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("发现数据有重复")
}
@ -1155,14 +1155,14 @@ func Demo_importxls_data(w http.ResponseWriter, r *http.Request) bool {
updata["weightg"] = weightg
updata["eartmpr"] = eartmpr
updata["content"] = content
updata["addtimes"] = Tostamp()
csql = NewCiySQL("ap_demo")
updata["addtimes"] = c.Tostamp()
csql = c.NewCiySQL("ap_demo")
var err error
if id == 0 {
_, err = CiyDB.Insert(csql, updata)
_, err = c.CiyDB.Insert(csql, updata)
} else {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
}
if err != nil {
return fmt.Errorf("导入失败:%v", err)
@ -1171,7 +1171,7 @@ func Demo_importxls_data(w http.ResponseWriter, r *http.Request) bool {
return nil
})
if err != nil {
return ErrJSON(w, err.Error())
return c.ErrJSON(w, err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}

View File

@ -5,24 +5,24 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func paper_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func paper_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("ap_paper")
csql.Where("name like", Getstr(query, "name"))
csql.Where_numrange("readcnt", Getstr(query, "readcnt_1"), Getstr(query, "readcnt_2"), 1)
csql.Where("inputuser", Getstr(query, "inputuser"))
csql.Where_daterange("uptimes", Getstr(query, "uptimes"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("ap_paper")
csql.Where("name like", c.Getstr(query, "name"))
csql.Where_numrange("readcnt", c.Getstr(query, "readcnt_1"), c.Getstr(query, "readcnt_2"), 1)
csql.Where("inputuser", c.Getstr(query, "inputuser"))
csql.Where_daterange("uptimes", c.Getstr(query, "uptimes"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Paper_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -31,9 +31,9 @@ func Paper_init(w http.ResponseWriter, r *http.Request) bool {
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
csql.Column("!content")
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -42,8 +42,8 @@ func Paper_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
field["name"]["thwidth"] = "30em"
field["readcnt"]["order"] = "r"
ret["fshow"] = fshow
@ -79,43 +79,43 @@ func Paper_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Paper_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p10201u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p10201u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
name := post.Get("name")
title := post.Get("title")
if name == "" {
return ErrJSON(w, "请填写文档标题")
return c.ErrJSON(w, "请填写文档标题")
}
content := post.Get("content", CIYPOST_ALLOW_HTML)
content := post.Get("content", c.CIYPOST_ALLOW_HTML)
if content == "" {
return ErrJSON(w, "请填写内容")
return c.ErrJSON(w, "请填写内容")
}
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("ap_paper")
csql := c.NewCiySQL("ap_paper")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("ap_paper")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("ap_paper")
csql.Where("name", name)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("数据已存在")
}
@ -123,30 +123,30 @@ func Paper_update(w http.ResponseWriter, r *http.Request) bool {
updata["name"] = name
updata["title"] = title
updata["inputuser"] = userid
updata["uptimes"] = Tostamp()
updata["uptimes"] = c.Tostamp()
updata["content"] = content
csql = NewCiySQL("ap_paper")
csql = c.NewCiySQL("ap_paper")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
updata["newid"] = id
}
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "ap_paper", datarow, updata)
admin.SaveLogDB(c.CiyDB, "ap_paper", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Paper_getdata(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -154,45 +154,45 @@ func Paper_getdata(w http.ResponseWriter, r *http.Request) bool {
data := post.Getbool("data")
ret := map[string]any{}
if data {
csql := NewCiySQL("ap_paper")
csql := c.NewCiySQL("ap_paper")
csql.Where("id", id)
var err error
ret["data"], err = CiyDB.Getone(csql)
ret["data"], err = c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "读取失败:"+err.Error())
return c.ErrJSON(w, "读取失败:"+err.Error())
}
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Paper_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p10201d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p10201d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("ap_paper")
csql := c.NewCiySQL("ap_paper")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
rowid := Toint(row["id"])
Delme(CiyDB, rowid, "ap_paper")
admin.SaveLogDB(CiyDB, "ap_paper", row, nil)
rowid := c.Toint(row["id"])
c.Delme(c.CiyDB, rowid, "ap_paper")
admin.SaveLogDB(c.CiyDB, "ap_paper", row, nil)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}

View File

@ -1,7 +1,7 @@
package autotask
import (
. "ciyon/zciyon"
c "ciyon/zciyon"
"fmt"
"net/http"
"os"
@ -21,28 +21,28 @@ func srvstats(systemrow map[string]any) string {
defer func() {
if r := recover(); r != nil {
fmt.Println("srvstats panic:", r)
Log.Error("AUTO", "srvstats panic:"+r.(string))
c.Log.Error("AUTO", "srvstats panic:"+r.(string))
}
}()
func_succ := CiyVars.Func_succ
func_fail := CiyVars.Func_fail
func_commit := CiyVars.Func_commit
func_rollback := CiyVars.Func_rollback
func_succ := c.CiyVars.Func_succ
func_fail := c.CiyVars.Func_fail
func_commit := c.CiyVars.Func_commit
func_rollback := c.CiyVars.Func_rollback
func_runms := 0
if func_succ+func_fail > 0 {
func_runms = CiyVars.Func_runms / (func_commit + func_rollback + 1)
func_runms = c.CiyVars.Func_runms / (func_commit + func_rollback + 1)
}
CiyVars.Func_succ = 0
CiyVars.Func_fail = 0
CiyVars.Func_commit = 0
CiyVars.Func_rollback = 0
CiyVars.Func_runms = 0
disk := Ciy_sys_getdisk("/")
disk2 := Ciy_sys_getdisk("/data")
c.CiyVars.Func_succ = 0
c.CiyVars.Func_fail = 0
c.CiyVars.Func_commit = 0
c.CiyVars.Func_rollback = 0
c.CiyVars.Func_runms = 0
disk := c.Ciy_sys_getdisk("/")
disk2 := c.Ciy_sys_getdisk("/data")
disk_sysfree := disk["free"]
disk_datafree := disk2["free"]
starttime := Timems()
fpath := CiyWebDir + "/ud/_" + Tostr(Tostamp()) + ".bin"
starttime := c.Timems()
fpath := c.CiyWebDir + "/ud/_" + c.Tostr(c.Tostamp()) + ".bin"
fsize := 1024 * 1024 // 1MB
fcontent := make([]byte, fsize)
for i := 0; i < fsize; i++ {
@ -50,26 +50,26 @@ func srvstats(systemrow map[string]any) string {
}
f, err := os.Create(fpath)
if err != nil {
Log.Error("FILE", "创建临时文件失败"+fpath+":"+err.Error())
c.Log.Error("FILE", "创建临时文件失败"+fpath+":"+err.Error())
} else {
f.Write(fcontent)
f.Close()
rcontent, err := os.ReadFile(fpath)
if err != nil {
Log.Error("FILE", "读取临时文件失败")
c.Log.Error("FILE", "读取临时文件失败")
} else {
for i := 0; i < fsize; i++ {
if fcontent[i] != rcontent[i] {
Log.Error("FILE", "写入临时文件校验失败")
c.Log.Error("FILE", "写入临时文件校验失败")
break
}
}
os.Remove(fpath)
}
}
disk_ioms := Timems() - starttime
disk_ioms := c.Timems() - starttime
output := RunCmd("ps", "aux", "-A")
output := c.RunCmd("ps", "aux", "-A")
cmddb := []string{"mysql", "mysqld"}
cmdweb := []string{"nginx", "php", "WorkerMan", "mosquitto", "gitea", "/zgo"}
cpu := map[string]float64{"db": 0, "web": 0, "oth": 0}
@ -81,8 +81,8 @@ func srvstats(systemrow map[string]any) string {
}
_nextspace(&line)
_nextspace(&line)
cpup := Tofloat(_nextspace(&line))
memp := Tofloat(_nextspace(&line))
cpup := c.Tofloat(_nextspace(&line))
memp := c.Tofloat(_nextspace(&line))
_nextspace(&line) // 虚拟内存
_nextspace(&line) // 物理内存 包括共享内存
_nextspace(&line)
@ -101,14 +101,14 @@ func srvstats(systemrow map[string]any) string {
}
}
output = RunCmd("free", "-m")
output = c.RunCmd("free", "-m")
mem_free := 0
matches := regexp.MustCompile(`Mem:\s+(\d+)`).FindStringSubmatch(output[1])
if len(matches) > 1 {
mem_free = Toint(Tofloat(matches[1]) * (100 - cpu["db"] - cpu["web"] - cpu["oth"]) * 1024 * 1024 / 100)
mem_free = c.Toint(c.Tofloat(matches[1]) * (100 - cpu["db"] - cpu["web"] - cpu["oth"]) * 1024 * 1024 / 100)
}
output = RunCmd("sh", "-c", "netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'")
output = c.RunCmd("sh", "-c", "netstat -an | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'")
net_tcp := 0
for _, line := range output {
ls := strings.Split(line, " ")
@ -118,23 +118,23 @@ func srvstats(systemrow map[string]any) string {
if len(ls) < 2 {
continue
}
net_tcp += Toint(ls[1])
net_tcp += c.Toint(ls[1])
}
starttime = Timems()
starttime = c.Timems()
resp, err := http.Get("https://www.baidu.com")
if err == nil {
resp.Body.Close()
}
net_ioms := Timems() - starttime
net_ioms := c.Timems() - starttime
dbrows, err := CiyDB.Getraw("show global status")
dbrows, err := c.CiyDB.Getraw("show global status")
if err != nil {
Log.Error("FILE", "执行show global status失败")
c.Log.Error("FILE", "执行show global status失败")
}
dbstat := map[string]float64{}
for _, row := range dbrows {
name := Tostr(row["Variable_name"])
val := Tofloat(row["Value"])
name := c.Tostr(row["Variable_name"])
val := c.Tofloat(row["Value"])
dbstat[name] = val
}
db_keyhit := dbstat["Handler_read_key"] / (dbstat["Com_select"] + 1) * 100
@ -167,13 +167,13 @@ func srvstats(systemrow map[string]any) string {
updata["db_dbhit"] = db_dbhit
updata["db_tmptable"] = db_tmptable
updata["db_lock"] = dbstat["Innodb_row_lock_current_waits"]
updata["addtimes"] = Tostamp()
csql := NewCiySQL("zc_stats")
CiyDB.Insert(csql, updata)
updata["addtimes"] = c.Tostamp()
csql := c.NewCiySQL("zc_stats")
c.CiyDB.Insert(csql, updata)
retmsg := "succ: " + Tostr(func_succ)
retmsg := "succ: " + c.Tostr(func_succ)
if func_rollback > 0 {
retmsg += ", rollback: " + Tostr(func_rollback)
retmsg += ", rollback: " + c.Tostr(func_rollback)
}
return retmsg
}
@ -181,7 +181,7 @@ func dayclean(systemrow map[string]any) string {
maxAge := 3 * 24 * time.Hour
cnt := 0
errcnt := 0
filepath.Walk(CiyWebDir+"/ud/tmp", func(path string, info os.FileInfo, err error) error {
filepath.Walk(c.CiyWebDir+"/ud/tmp", func(path string, info os.FileInfo, err error) error {
if err != nil {
_tasklog(systemrow, "出现错误:"+err.Error())
return err
@ -199,9 +199,9 @@ func dayclean(systemrow map[string]any) string {
}
return nil
})
retmsg := "clean: " + Tostr(cnt)
retmsg := "clean: " + c.Tostr(cnt)
if errcnt > 0 {
retmsg += ", err: " + Tostr(errcnt)
retmsg += ", err: " + c.Tostr(errcnt)
}
return retmsg
}

View File

@ -2,7 +2,7 @@ package autotask
import (
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
"fmt"
"net/http"
"time"
@ -12,7 +12,7 @@ func _runtaskfunc(systemrow map[string]any, runfunc string) string {
symbol := funcindex()
defer func() {
if err := recover(); err != nil {
Log.Error("AUTO", fmt.Sprintf("函数执行出错:%v", err))
c.Log.Error("AUTO", fmt.Sprintf("函数执行出错:%v", err))
}
}()
if _, ok := symbol[runfunc]; !ok {
@ -22,10 +22,10 @@ func _runtaskfunc(systemrow map[string]any, runfunc string) string {
}
func Main() bool {
for {
csql := NewCiySQL("zc_autotask")
csql := c.NewCiySQL("zc_autotask")
csql.Where("autotaskstatus<", 90)
csql.Where("nexttimes<=", Tostamp())
systemrow, err := CiyDB.Getone(csql)
csql.Where("nexttimes<=", c.Tostamp())
systemrow, err := c.CiyDB.Getone(csql)
if err != nil {
return _returnerr(err)
}
@ -37,38 +37,38 @@ func Main() bool {
return true
}
func Task_main(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
rsuser, err := admin.Verifyuser(CiyDB, post)
post := c.NewCiyPost(w, r)
rsuser, err := admin.Verifyuser(c.CiyDB, post)
if err != nil {
w.Write([]byte("您未登录"))
return false
}
if admin.Nopower(CiyDB, Toint(rsuser["id"]), "p602r") {
if admin.Nopower(c.CiyDB, c.Toint(rsuser["id"]), "p602r") {
w.Write([]byte("您未被授权操作"))
return false
}
runid := post.Getint("runid")
csql := NewCiySQL("zc_autotask")
csql := c.NewCiySQL("zc_autotask")
csql.Where("id", runid)
taskrow, err := CiyDB.Getone(csql)
taskrow, err := c.CiyDB.Getone(csql)
if taskrow == nil {
w.Write([]byte("任务ID不存在:" + Tostr(runid)))
w.Write([]byte("任务ID不存在:" + c.Tostr(runid)))
return false
}
autotaskstatus := Toint(taskrow["autotaskstatus"])
autotaskstatus := c.Toint(taskrow["autotaskstatus"])
if autotaskstatus == 30 {
return ErrJSON(w, "任务正在执行中", err)
return c.ErrJSON(w, "任务正在执行中", err)
}
runtaskid, err2 := _run(taskrow, "zc_auto")
if err2 != nil {
return ErrJSON(w, "任务执行失败:"+Tostr(runid), err2)
return c.ErrJSON(w, "任务执行失败:"+c.Tostr(runid), err2)
}
csql = NewCiySQL("zc_autotsk_run")
csql = c.NewCiySQL("zc_autotsk_run")
csql.Where("id", runtaskid)
tskrunrow, _ := CiyDB.Getone(csql)
csql = NewCiySQL("zc_autotsk_log")
tskrunrow, _ := c.CiyDB.Getone(csql)
csql = c.NewCiySQL("zc_autotsk_log")
csql.Where("runtaskid", runtaskid)
tsklogrows, _, _ := CiyDB.Get(csql)
tsklogrows, _, _ := c.CiyDB.Get(csql)
html := ""
html += "<!DOCTYPE html> <html><head>"
@ -76,17 +76,17 @@ func Task_main(w http.ResponseWriter, r *http.Request) bool {
html += "<title>AutoTask Running</title>"
html += "</head><body>"
html += "<table border='1' style='border-collapse:collapse;font-size:0.8em;' cellpadding='5px'>"
html += "<tr><td>任务名称</td><td>" + Tostr(taskrow["name"]) + "</td></tr>"
html += "<tr><td>入口函数</td><td>" + Tostr(taskrow["runfunc"]) + "</td></tr>"
html += "<tr><td>执行参数</td><td>" + Tostr(taskrow["runparam"]) + "</td></tr>"
html += "<tr><td>执行时长</td><td>" + Tostr(tskrunrow["runsec"]) + "s</td></tr>"
html += "<tr><td>任务简报</td><td>" + Tostr(tskrunrow["msg"]) + "</td></tr>"
html += "<tr><td>任务名称</td><td>" + c.Tostr(taskrow["name"]) + "</td></tr>"
html += "<tr><td>入口函数</td><td>" + c.Tostr(taskrow["runfunc"]) + "</td></tr>"
html += "<tr><td>执行参数</td><td>" + c.Tostr(taskrow["runparam"]) + "</td></tr>"
html += "<tr><td>执行时长</td><td>" + c.Tostr(tskrunrow["runsec"]) + "s</td></tr>"
html += "<tr><td>任务简报</td><td>" + c.Tostr(tskrunrow["msg"]) + "</td></tr>"
html += "</table>"
if len(tsklogrows) > 0 {
html += "<br/><table border='1' style='border-collapse:collapse;font-size:0.8em;' cellpadding='5px'>"
html += "<tr><td>时间</td><td>数据</td></tr>"
for _, row := range tsklogrows {
html += "<tr><td>" + Todate(Toint(row["addtimes"])) + "</td><td>" + Tostr(row["msg"]) + "</td></tr>"
html += "<tr><td>" + c.Todate(c.Toint(row["addtimes"])) + "</td><td>" + c.Tostr(row["msg"]) + "</td></tr>"
}
html += "</table>"
} else {
@ -98,17 +98,17 @@ func Task_main(w http.ResponseWriter, r *http.Request) bool {
}
func _run(systemrow map[string]any, table string) (int, error) {
runfunc := Tostr(systemrow["runfunc"])
runfunc := c.Tostr(systemrow["runfunc"])
if runfunc == "" || runfunc[0] == '_' {
return 0, fmt.Errorf("入口函数设置错误:%s", runfunc)
}
sysid := Toint(systemrow["id"])
nexttimes := Toint(systemrow["nexttimes"])
runtimes := Toint(systemrow["runtimes"])
runcycle := Toint(systemrow["runcycle"])
autotaskstatus := Toint(systemrow["autotaskstatus"])
sysid := c.Toint(systemrow["id"])
nexttimes := c.Toint(systemrow["nexttimes"])
runtimes := c.Toint(systemrow["runtimes"])
runcycle := c.Toint(systemrow["runcycle"])
autotaskstatus := c.Toint(systemrow["autotaskstatus"])
for {
if nexttimes > Tostamp() {
if nexttimes > c.Tostamp() {
break
}
if runcycle < 0 {
@ -122,41 +122,41 @@ func _run(systemrow map[string]any, table string) (int, error) {
updata := make(map[string]any)
runningmsg := "任务执行中,本次跳过"
if autotaskstatus == 30 {
if runtimes < Tostamp()-3600 {
if runtimes < c.Tostamp()-3600 {
updata["autotaskstatus"] = 20
runningmsg = "任务执行中超过1小时强制复位"
}
} else {
updata["autotaskstatus"] = 30
updata["runtimes"] = Tostamp()
updata["runtimes"] = c.Tostamp()
}
updata["nexttimes"] = nexttimes
csql := NewCiySQL(table + "task")
csql := c.NewCiySQL(table + "task")
csql.Where("id", sysid)
_, err := CiyDB.Update(csql, updata)
_, err := c.CiyDB.Update(csql, updata)
if err != nil {
return 0, err
}
if autotaskstatus == 30 {
updata = make(map[string]any)
updata["autotaskid"] = sysid
updata["addtimes"] = Tostamp()
updata["addtimes"] = c.Tostamp()
updata["runsec"] = -1
updata["logcnt"] = 0
updata["msg"] = runningmsg
csql = NewCiySQL(table + "tsk_run")
_, err = CiyDB.Insert(csql, updata)
csql = c.NewCiySQL(table + "tsk_run")
_, err = c.CiyDB.Insert(csql, updata)
if err != nil {
return 0, err
}
return 0, nil
}
runlogstart := Tostamp()
runlogstart := c.Tostamp()
updata = make(map[string]any)
updata["autotaskid"] = sysid
updata["addtimes"] = runlogstart
csql = NewCiySQL(table + "tsk_run")
runtaskid, err2 := CiyDB.Insert(csql, updata)
csql = c.NewCiySQL(table + "tsk_run")
runtaskid, err2 := c.CiyDB.Insert(csql, updata)
if err2 != nil {
return 0, err2
}
@ -168,40 +168,40 @@ func _run(systemrow map[string]any, table string) (int, error) {
updata = make(map[string]any)
updata["autotaskstatus"] = 20
updata["runtimes"] = 0
csql = NewCiySQL(table + "task")
csql = c.NewCiySQL(table + "task")
csql.Where("id", sysid)
_, err2 = CiyDB.Update(csql, updata)
_, err2 = c.CiyDB.Update(csql, updata)
if err2 != nil {
return 0, err2
}
csql = NewCiySQL(table + "tsk_log")
csql = c.NewCiySQL(table + "tsk_log")
csql.Where("runtaskid", runtaskid)
logcnt := Toint(CiyDB.Get1(csql))
logcnt := c.Toint(c.CiyDB.Get1(csql))
updata = make(map[string]any)
updata["runsec"] = Tostamp() - runlogstart
updata["runsec"] = c.Tostamp() - runlogstart
updata["msg"] = errmsg
updata["logcnt"] = logcnt
csql = NewCiySQL(table + "tsk_run")
csql = c.NewCiySQL(table + "tsk_run")
csql.Where("id", runtaskid)
_, err2 = CiyDB.Update(csql, updata)
_, err2 = c.CiyDB.Update(csql, updata)
if err2 != nil {
return 0, err2
}
return runtaskid, nil
}
func _returnerr(err error) bool {
Log.Error("AUTO", fmt.Sprintf("运行出错:%v", err))
c.Log.Error("AUTO", fmt.Sprintf("运行出错:%v", err))
return false
}
func _tasklog(systemrow map[string]any, msg string) {
updata := make(map[string]any)
updata["autotaskid"] = systemrow["id"]
updata["runtaskid"] = systemrow["runtaskid"]
updata["addtimes"] = Tostamp()
updata["addtimes"] = c.Tostamp()
updata["msg"] = msg
csql := NewCiySQL(Tostr(systemrow["table"]) + "tsk_log")
_, err := CiyDB.Insert(csql, updata)
csql := c.NewCiySQL(c.Tostr(systemrow["table"]) + "tsk_log")
_, err := c.CiyDB.Insert(csql, updata)
if err != nil {
_returnerr(err)
}

View File

@ -4,7 +4,7 @@ import (
"fmt"
"strings"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
var Gtokenfield string //header api field
@ -15,69 +15,69 @@ func init() {
Gtokensalt = "ast34h$2"
Gdefpass = "1q2w"
}
func Verifyfast(db *CiyMysql, post *CiyPost) (map[string]any, int) {
rsuser, err := Verifyuser(CiyDB, post)
func Verifyfast(db *c.CiyMysql, post *c.CiyPost) (map[string]any, int) {
rsuser, err := Verifyuser(c.CiyDB, post)
if err != nil {
ErrJSON(post.W, "请重新登录", 2)
c.ErrJSON(post.W, "请重新登录", 2)
return nil, 0
}
return rsuser, Toint(rsuser["id"])
return rsuser, c.Toint(rsuser["id"])
}
func Verifyuser(db *CiyMysql, post *CiyPost) (map[string]any, error) {
func Verifyuser(db *c.CiyMysql, post *c.CiyPost) (map[string]any, error) {
ciyauth := post.R.Header.Get(Gtokenfield)
if ciyauth == "" {
ciyauth = GetQuery("_"+Gtokenfield, post.R)
ciyauth = c.GetQuery("_"+Gtokenfield, post.R)
}
if ciyauth == "" {
return nil, fmt.Errorf("verify nofind %v in header or query", Gtokenfield)
}
auth := Str_JSON(Encrypt(ciyauth, "D", Gtokensalt))
auth := c.Str_JSON(c.Encrypt(ciyauth, "D", Gtokensalt))
if auth == nil {
return nil, fmt.Errorf("verify ciyauth error")
}
csql := NewCiySQL("zc_online")
csql := c.NewCiySQL("zc_online")
csql.Where("id", auth["_o"])
onlinerow, err := db.Getone(csql)
if err != nil {
return nil, fmt.Errorf("verify read online err:%v", err)
}
if Toint(onlinerow["user"]) != Toint(auth["id"]) {
if c.Toint(onlinerow["user"]) != c.Toint(auth["id"]) {
return nil, fmt.Errorf("verify userid not match oid=%v", onlinerow["id"])
}
if Tostr(onlinerow["sid"]) != Tostr(auth["_s"]) {
if c.Tostr(onlinerow["sid"]) != c.Tostr(auth["_s"]) {
return nil, fmt.Errorf("verify sid not match oid=%v", onlinerow["id"])
}
if Toint(onlinerow["usrchg"]) == 9 {
csql := NewCiySQL("zc_admin")
if c.Toint(onlinerow["usrchg"]) == 9 {
csql := c.NewCiySQL("zc_admin")
csql.Where("id", auth["_o"])
userrow, _ := db.Getone(csql)
if userrow == nil {
return nil, fmt.Errorf("verify user nofind")
}
if Toint(userrow["stpstatus"]) != 10 {
if c.Toint(userrow["stpstatus"]) != 10 {
return nil, fmt.Errorf("verify user disabled")
}
}
if Toint(onlinerow["usrchg"]) == 2 {
if c.Toint(onlinerow["usrchg"]) == 2 {
post.W.Header().Set(Gtokenfield+"re", "true")
}
if Toint(onlinerow["exptimes"]) > Tostamp() {
if c.Toint(onlinerow["exptimes"]) > c.Tostamp() {
return auth, nil
}
exptimes := Tostamp() + 86400
sid := Randstr(10)
exptimes := c.Tostamp() + 86400
sid := c.Randstr(10)
auth["_s"] = sid
authstr := JSON_Str(auth)
newauth := Encrypt(authstr, "E", Gtokensalt)
authstr := c.JSON_Str(auth)
newauth := c.Encrypt(authstr, "E", Gtokensalt)
post.W.Header().Set(Gtokenfield, newauth)
userid := Toint(auth["id"])
userid := c.Toint(auth["id"])
db.UserID = userid
updata := map[string]any{}
updata["exptimes"] = exptimes
updata["sid"] = sid
updata["ip"] = post.GetIP()
csql = NewCiySQL("zc_online")
csql = c.NewCiySQL("zc_online")
csql.Where("id", auth["_o"])
_, err = db.Update(csql, updata)
if err != nil {
@ -86,11 +86,11 @@ func Verifyuser(db *CiyMysql, post *CiyPost) (map[string]any, error) {
return auth, nil
}
func Nopower(db *CiyMysql, userid int, chkpower string) bool {
csql := NewCiySQL("zc_admin")
func Nopower(db *c.CiyMysql, userid int, chkpower string) bool {
csql := c.NewCiySQL("zc_admin")
csql.Where("id", userid)
csql.Column("power")
mepower := Tostr(CiyDB.Get1(csql))
mepower := c.Tostr(c.CiyDB.Get1(csql))
if mepower == "" {
return true
}
@ -112,26 +112,26 @@ func Nopower(db *CiyMysql, userid int, chkpower string) bool {
}
return true
}
func SaveLog(db *CiyMysql, types, msg string) {
func SaveLog(db *c.CiyMysql, types, msg string) {
updata := map[string]any{}
updata["types"] = types
updata["loguser"] = db.UserID
updata["logs"] = msg
updata["readuser"] = 0
updata["addtimes"] = Tostamp()
csql := NewCiySQL("zc_log")
updata["addtimes"] = c.Tostamp()
csql := c.NewCiySQL("zc_log")
_, err := db.Insert(csql, updata)
if err != nil {
Log.Warn("LOG", fmt.Sprintf("SaveLog Error:%v[%v]", err, types+":"+msg))
c.Log.Warn("LOG", fmt.Sprintf("SaveLog Error:%v[%v]", err, types+":"+msg))
return
}
}
func SaveLogDB(db *CiyMysql, types string, oldrow map[string]any, newrow map[string]any) {
SaveLog(db, types, LogDBStr(oldrow, newrow))
func SaveLogDB(db *c.CiyMysql, types string, oldrow map[string]any, newrow map[string]any) {
SaveLog(db, types, c.LogDBStr(oldrow, newrow))
}
func Getconfig(db *CiyMysql, types, defvalue any) any {
csql := NewCiySQL("zc_config")
func Getconfig(db *c.CiyMysql, types, defvalue any) any {
csql := c.NewCiySQL("zc_config")
csql.Where("types", types)
row, _ := db.Getone(csql)
if row != nil {
@ -139,31 +139,31 @@ func Getconfig(db *CiyMysql, types, defvalue any) any {
}
return defvalue
}
func Setconfig(db *CiyMysql, types, value any) bool {
func Setconfig(db *c.CiyMysql, types, value any) bool {
updata := map[string]any{}
updata["types"] = types
updata["params"] = value
csql := NewCiySQL("zc_config")
csql := c.NewCiySQL("zc_config")
csql.Where("types", types)
_, err := db.Update(csql, updata)
return err == nil
}
func Getcatas(db *CiyMysql, cbstr any) []map[string]any {
func Getcatas(db *c.CiyMysql, cbstr any) []map[string]any {
cbid := 0
if Is_int(cbstr) {
cbid = Toint(cbstr)
if c.Is_int(cbstr) {
cbid = c.Toint(cbstr)
} else {
csql := NewCiySQL("zc_cata")
csql := c.NewCiySQL("zc_cata")
csql.Where("codeid", cbstr)
csql.Where("cbid=0")
csql.Column("id")
cbid = Toint(db.Get1(csql))
cbid = c.Toint(db.Get1(csql))
}
if cbid == 0 {
return []map[string]any{}
}
csql := NewCiySQL("zc_cata")
csql := c.NewCiySQL("zc_cata")
csql.Where("cbid", cbid)
csql.Order("csort,id")
csql.Column("codeid as id,name,upid,name,extdata")
@ -174,21 +174,21 @@ func Getcatas(db *CiyMysql, cbstr any) []map[string]any {
return catarows
}
// func Getsaascatas(db *CiyMysql, cbstr any, saasid int) []map[string]any {
// func Getsaascatas(db *c.CiyMysql, cbstr any, saasid int) []map[string]any {
// cbid := 0
// if Is_int(cbstr) {
// cbid = Toint(cbstr)
// if c.Is_int(cbstr) {
// cbid = c.Toint(cbstr)
// } else {
// csql := NewCiySQL("zc_catsaas")
// csql := c.NewCiySQL("zc_catsaas")
// csql.Where("codeid", cbstr)
// csql.Where("cbid=0")
// csql.Column("id")
// cbid = Toint(db.Get1(csql))
// cbid = c.Toint(db.Get1(csql))
// }
// if cbid == 0 {
// return []map[string]any{}
// }
// csql := NewCiySQL("zc_catsaas")
// csql := c.NewCiySQL("zc_catsaas")
// csql.Where("saasid", saasid)
// csql.Where("cbid", cbid)
// csql.Order("csort,id")
@ -198,7 +198,7 @@ func Getcatas(db *CiyMysql, cbstr any) []map[string]any {
// return []map[string]any{}
// }
// if len(catarows) == 0 {
// csql = NewCiySQL("zc_cata")
// csql = c.NewCiySQL("zc_cata")
// csql.Where("cbid", cbid)
// csql.Order("csort,id")
// csql.Column("codeid as id,name,upid,name,extdata")

View File

@ -1,60 +1,59 @@
package datasse
import (
"ciyon/web/admin"
c "ciyon/zciyon"
"net/http"
"time"
"ciyon/web/admin"
. "ciyon/zciyon"
)
func DataSSE_demo(w http.ResponseWriter, r *http.Request) bool {
if !SSEInit(w) {
if !c.SSEInit(w) {
w.Write([]byte("不支持SSE Flush"))
return false
}
post := NewCiyPost(w, r)
rsuser, err := admin.Verifyuser(CiyDB, post)
post := c.NewCiyPost(w, r)
rsuser, err := admin.Verifyuser(c.CiyDB, post)
if err != nil {
SSESend_event(w, "请重新登录")
c.SSESend_event(w, "请重新登录")
return false
}
if admin.Nopower(CiyDB, Toint(rsuser["id"]), "p610r") {
SSESend_event(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, c.Toint(rsuser["id"]), "p610r") {
c.SSESend_event(w, "您未被授权操作")
return false
}
param := post.Get("param")
SSESend_data(w, param)
c.SSESend_data(w, param)
for i := 0; i < 100; i++ {
if i%10 == 1 {
SSESend_data(w, "ssr: "+Tostr(i), i)
c.SSESend_data(w, "ssr: "+c.Tostr(i), i)
}
if !SSESend_event(w, Tostr(i)) {
if !c.SSESend_event(w, c.Tostr(i)) {
return true
}
Sleep(0.05)
c.Sleep(0.05)
}
SSESend_event(w, "ok")
c.SSESend_event(w, "ok")
return true
}
func DataSSE_demo_ch(w http.ResponseWriter, r *http.Request) bool {
if !SSEInit(w) {
if !c.SSEInit(w) {
w.Write([]byte("不支持SSE Flush"))
return false
}
post := NewCiyPost(w, r)
rsuser, err := admin.Verifyuser(CiyDB, post)
post := c.NewCiyPost(w, r)
rsuser, err := admin.Verifyuser(c.CiyDB, post)
if err != nil {
SSESend_event(w, "请重新登录")
c.SSESend_event(w, "请重新登录")
return false
}
if admin.Nopower(CiyDB, Toint(rsuser["id"]), "p610r") {
SSESend_event(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, c.Toint(rsuser["id"]), "p610r") {
c.SSESend_event(w, "您未被授权操作")
return false
}
param := post.Get("param")
SSESend_data(w, param)
c.SSESend_data(w, param)
done := r.Context().Done()
ticker := time.NewTicker(time.Second)
@ -65,7 +64,7 @@ func DataSSE_demo_ch(w http.ResponseWriter, r *http.Request) bool {
case <-done:
return false
case <-ticker.C:
if !SSESend_data(w, time.Now().Format(time.RFC3339)) {
if !c.SSESend_data(w, time.Now().Format(time.RFC3339)) {
return true
}
}

View File

@ -5,130 +5,130 @@ import (
"math"
"net/http"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Login_login(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
post := c.NewCiyPost(w, r)
targettype := post.Getint("targettype", 10)
user := post.Get("user")
if user == "" {
return ErrJSON(w, "请填写用户名")
return c.ErrJSON(w, "请填写用户名")
}
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Where("mobile", user)
userrow, err := CiyDB.Getone(csql)
userrow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
if userrow == nil {
SaveLog(CiyDB, "LOGINERR", "用户["+user+"]不存在,在尝试登录")
return ErrJSON(w, "用户不存在", fmt.Errorf("用户[%v]在尝试登录,ip=", user))
SaveLog(c.CiyDB, "LOGINERR", "用户["+user+"]不存在,在尝试登录")
return c.ErrJSON(w, "用户不存在", fmt.Errorf("用户[%v]在尝试登录,ip=", user))
}
if Toint(userrow["trytime"]) > 10 {
if Tostamp()-Toint(userrow["logintimes"]) < 600 {
SaveLog(CiyDB, "LOGINERR", "用户["+user+"]登录连续失败")
return ErrJSON(w, "连续输入密码错误10分钟后再来登录.", fmt.Errorf("用户[%v]在撞库,ip=", user))
if c.Toint(userrow["trytime"]) > 10 {
if c.Tostamp()-c.Toint(userrow["logintimes"]) < 600 {
SaveLog(c.CiyDB, "LOGINERR", "用户["+user+"]登录连续失败")
return c.ErrJSON(w, "连续输入密码错误10分钟后再来登录.", fmt.Errorf("用户[%v]在撞库,ip=", user))
}
}
if Toint(userrow["stpstatus"]) != 10 {
SaveLog(CiyDB, "LOGINERR", "用户["+user+"]被禁用,在尝试登录")
return ErrJSON(w, "您的账户已经被禁用.")
if c.Toint(userrow["stpstatus"]) != 10 {
SaveLog(c.CiyDB, "LOGINERR", "用户["+user+"]被禁用,在尝试登录")
return c.ErrJSON(w, "您的账户已经被禁用.")
}
authtime := post.Getint("auth")
if math.Abs(Tofloat(authtime/1000-Tostamp())) > 300 {
return ErrJSON(w, "您的本地时间与服务器时间相差超过5分钟请调整本机时间.<br/>服务器时间: "+Todate(-1, "Y-m-d H:i:s")+"<br/>您本机时间: "+Todate(authtime/1000, "Y-m-d H:i:s"))
if math.Abs(c.Tofloat(authtime/1000-c.Tostamp())) > 300 {
return c.ErrJSON(w, "您的本地时间与服务器时间相差超过5分钟请调整本机时间.<br/>服务器时间: "+c.Todate(-1, "Y-m-d H:i:s")+"<br/>您本机时间: "+c.Todate(authtime/1000, "Y-m-d H:i:s"))
}
if post.Get("pass") != MD5(Tostr(userrow["password"])+fmt.Sprintf("%d", authtime)) {
if post.Get("pass") != c.MD5(c.Tostr(userrow["password"])+fmt.Sprintf("%d", authtime)) {
updata := map[string]any{}
updata["trytime"] = []string{"trytime+1"}
updata["logintimes"] = Tostamp()
csql = NewCiySQL("zc_admin")
updata["logintimes"] = c.Tostamp()
csql = c.NewCiySQL("zc_admin")
csql.Where("id", userrow["id"])
CiyDB.Update(csql, updata)
SaveLog(CiyDB, "LOGINERR", "用户["+user+"]登录密码错误 "+Gdefpass+" ["+MD5(Gdefpass+Gtokensalt)+"]")
return ErrJSON(w, "用户["+user+"]登录密码错误")
c.CiyDB.Update(csql, updata)
SaveLog(c.CiyDB, "LOGINERR", "用户["+user+"]登录密码错误 "+Gdefpass+" ["+c.MD5(Gdefpass+Gtokensalt)+"]")
return c.ErrJSON(w, "用户["+user+"]登录密码错误")
}
syncdict, err := getsync(userrow)
if err != nil {
return ErrJSON(w, "遇到同步错误", err)
return c.ErrJSON(w, "遇到同步错误", err)
}
userid := Toint(userrow["id"])
CiyDB.Execute("delete from zc_online where exptimes<? and user=?", Tostamp(), userid)
sid := Randstr(10)
exptimes := Tostamp() + 86400
userid := c.Toint(userrow["id"])
c.CiyDB.Execute("delete from zc_online where exptimes<? and user=?", c.Tostamp(), userid)
sid := c.Randstr(10)
exptimes := c.Tostamp() + 86400
updata := map[string]any{}
updata["user"] = userid
updata["targettype"] = targettype
updata["sid"] = sid
updata["addtimes"] = Tostamp()
updata["addtimes"] = c.Tostamp()
updata["exptimes"] = exptimes
updata["ip"] = post.GetIP()
csql = NewCiySQL("zc_online")
oid, err := CiyDB.Insert(csql, updata)
csql = c.NewCiySQL("zc_online")
oid, err := c.CiyDB.Insert(csql, updata)
if err != nil {
return ErrJSON(w, "online数据库更新失败", err)
return c.ErrJSON(w, "online数据库更新失败", err)
}
updata = map[string]any{}
updata["logintimes"] = Tostamp()
updata["logintimes"] = c.Tostamp()
updata["trytime"] = 0
csql = NewCiySQL("zc_admin")
csql = c.NewCiySQL("zc_admin")
csql.Where("id", userid)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return ErrJSON(w, "user数据库更新失败", err)
return c.ErrJSON(w, "user数据库更新失败", err)
}
auth := map[string]any{}
auth["id"] = userid
auth["_o"] = oid
auth["_s"] = sid
authstr := JSON_Str(auth)
authstr := c.JSON_Str(auth)
newauth := Encrypt(authstr, "E", Gtokensalt)
newauth := c.Encrypt(authstr, "E", Gtokensalt)
post.W.Header().Set(Gtokenfield, newauth)
SaveLog(CiyDB, "LOGIN", "登录成功")
return SuccJSON(w, syncdict)
SaveLog(c.CiyDB, "LOGIN", "登录成功")
return c.SuccJSON(w, syncdict)
}
func Login_restorage(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
rsuser, _ := Verifyfast(CiyDB, post)
csql := NewCiySQL("zc_admin")
post := c.NewCiyPost(w, r)
rsuser, _ := Verifyfast(c.CiyDB, post)
csql := c.NewCiySQL("zc_admin")
csql.Where("id", rsuser["id"])
userrow, err := CiyDB.Getone(csql)
userrow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
syncdict, err := getsync(userrow)
if err != nil {
return ErrJSON(w, "遇到同步错误", err)
return c.ErrJSON(w, "遇到同步错误", err)
}
CiyDB.Execute("update zc_online set usrchg=0 where id=?", rsuser["_o"])
return SuccJSON(w, syncdict)
c.CiyDB.Execute("update zc_online set usrchg=0 where id=?", rsuser["_o"])
return c.SuccJSON(w, syncdict)
}
func getsync(userrow map[string]any) (map[string]any, error) {
var err error
storage := map[string]any{}
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Column("id,name")
storage["adminuser"], _, err = CiyDB.Get(csql)
storage["adminuser"], _, err = c.CiyDB.Get(csql)
if err != nil {
return nil, err
}
csql = NewCiySQL("zc_cata")
csql = c.NewCiySQL("zc_cata")
csql.Order("csort")
storage["cata"], _, err = CiyDB.Get(csql)
storage["cata"], _, err = c.CiyDB.Get(csql)
if err != nil {
return nil, err
}
departid := Toint(userrow["departid"])
departid := c.Toint(userrow["departid"])
var departname string
if departid > 0 {
csql := NewCiySQL("zc_depart")
csql := c.NewCiySQL("zc_depart")
csql.Where("id", departid)
csql.Column("name")
departname = Tostr(CiyDB.Get1(csql))
departname = c.Tostr(c.CiyDB.Get1(csql))
}
me := map[string]any{}
me["id"] = userrow["id"]
@ -139,11 +139,11 @@ func getsync(userrow map[string]any) (map[string]any, error) {
me["depart"] = departname
me["addtimes"] = userrow["addtimes"]
power := userrow["power"]
if Toint(userrow["id"]) == 10 {
if c.Toint(userrow["id"]) == 10 {
power = ".*."
}
me["power"] = power
me["needpass"] = (userrow["password"] == MD5(Gdefpass+Gtokensalt))
me["needpass"] = (userrow["password"] == c.MD5(Gdefpass+Gtokensalt))
syncdict := map[string]any{}
syncdict["storage"] = storage
syncdict["me"] = me
@ -151,13 +151,13 @@ func getsync(userrow map[string]any) (map[string]any, error) {
}
func Login_logout(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
rsuser, err := Verifyuser(CiyDB, post)
post := c.NewCiyPost(w, r)
rsuser, err := Verifyuser(c.CiyDB, post)
if err == nil {
csql := NewCiySQL("zc_online")
csql := c.NewCiySQL("zc_online")
csql.Where("id", rsuser["_o"])
CiyDB.Delete(csql)
c.CiyDB.Delete(csql)
}
SaveLog(CiyDB, "LOGIN", "退出登录")
return SuccJSON(w)
SaveLog(c.CiyDB, "LOGIN", "退出登录")
return c.SuccJSON(w)
}

View File

@ -4,28 +4,28 @@ import (
"fmt"
"net/http"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Manage_init(w http.ResponseWriter, r *http.Request) bool {
//menuurl: 普通链接~原型图 4378,key 普通链接~原型图 共存
//menupow: d=删除|e=修改 p[id]e 默认p[id]v 显示权限 角色权限menu url<>'' 可选择授权
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
csql := NewCiySQL("zc_icon")
csql := c.NewCiySQL("zc_icon")
csql.Where("icontarget", 10).Column("targetid as id,icon")
iconrows, _, err := CiyDB.Get(csql)
iconrows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到menu读取错误", err)
return c.ErrJSON(w, "遇到menu读取错误", err)
}
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Where("isuse", 1).Order("csort desc,id").Column("id,upid,name,url,pow")
menurows, _, err := CiyDB.Get(csql)
menurows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到menu读取错误", err)
return c.ErrJSON(w, "遇到menu读取错误", err)
}
if len(menurows) == 0 {
menu := map[string]any{}
@ -36,11 +36,11 @@ func Manage_init(w http.ResponseWriter, r *http.Request) bool {
menu["pow"] = ""
menurows = append(menurows, menu)
}
csql = NewCiySQL("zc_mnufav")
csql = c.NewCiySQL("zc_mnufav")
csql.Where("user", userid).Column("menuid")
mnufavrows, _, err := CiyDB.Get(csql)
mnufavrows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到mnufav读取错误", err)
return c.ErrJSON(w, "遇到mnufav读取错误", err)
}
ret := map[string]any{}
ret["icon"] = iconrows
@ -51,66 +51,66 @@ func Manage_init(w http.ResponseWriter, r *http.Request) bool {
"name": "控制台",
}
ret["title"] = "Ciyon SaaS总控台"
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Manage_favadd(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
menuid := post.Getint("id")
csql := NewCiySQL("zc_mnufav")
csql := c.NewCiySQL("zc_mnufav")
csql.Where("user", userid).Where("menuid", menuid)
favrow, err := CiyDB.Getone(csql)
favrow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "遇到fav读取错误", err)
return c.ErrJSON(w, "遇到fav读取错误", err)
}
if favrow == nil {
updata := map[string]any{}
updata["user"] = userid
updata["menuid"] = menuid
updata["addtimes"] = Tostamp()
csql := NewCiySQL("zc_mnufav")
_, err = CiyDB.Insert(csql, updata)
updata["addtimes"] = c.Tostamp()
csql := c.NewCiySQL("zc_mnufav")
_, err = c.CiyDB.Insert(csql, updata)
if err != nil {
return ErrJSON(w, "添加fav失败", err)
return c.ErrJSON(w, "添加fav失败", err)
}
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Manage_favdel(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
menuid := post.Getint("id")
csql := NewCiySQL("zc_mnufav")
csql := c.NewCiySQL("zc_mnufav")
csql.Where("user", userid).Where("menuid", menuid)
_, err := CiyDB.Delete(csql)
_, err := c.CiyDB.Delete(csql)
if err != nil {
return ErrJSON(w, "删除fav失败", err)
return c.ErrJSON(w, "删除fav失败", err)
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Manage_setssh(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if Nopower(CiyDB, userid, "x1ssh") {
return ErrJSON(w, "您未被授权操作")
if Nopower(c.CiyDB, userid, "x1ssh") {
return c.ErrJSON(w, "您未被授权操作")
}
able := post.Getbool("able") //true打开SSH允许远程访问。 false关闭防火墙禁止访问
if able {
//开启后,需定时关闭防火墙
fmt.Println("开启SSH远程访问")
}
return SuccJSON(w)
return c.SuccJSON(w)
}
// if strings.HasPrefix(r.Header.Get("Content-Type"), "multipart/form-data") {
@ -123,12 +123,12 @@ func Manage_setssh(w http.ResponseWriter, r *http.Request) bool {
// file, header, err := r.FormFile("file")
// Clog("POST FormFile:", file, header, err)
// } else {
// post := NewCiyPost(w, r)
// fff := post.Get("str", CIYPOST_ALLOW_HTML)
// post := c.NewCiyPost(w, r)
// fff := post.Get("str", c.CIYPOST_ALLOW_HTML)
// Clog("post str:", fff)
// // ddd = post.Getdate("date")
// // Clog("post time:", ddd)
// // det = Todate(ddd, "Y-m-d H:i:s")
// // det = c.Todate(ddd, "Y-m-d H:i:s")
// //Clog("post json:", post)
// }

View File

@ -2,7 +2,7 @@ package rigger
import (
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
"ciyon/zciyon/xlsx"
"fmt"
"math/rand"
@ -10,27 +10,27 @@ import (
"strings"
)
func admin_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func admin_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Where("departid", post.Get("departid"))
liid := Getint(query, "liid")
liid := c.Getint(query, "liid")
if liid > 0 {
csql.Where("stpstatus", liid)
}
csql.Where("name like", Getstr(query, "name"))
csql.Where("mobile like", Getstr(query, "mobile"))
csql.Where("sex", Getstr(query, "sex"))
csql.Where_daterange("logintimes", Getstr(query, "logintimes"))
csql.Where_daterange("addtimes", Getstr(query, "addtimes"))
csql.Where("name like", c.Getstr(query, "name"))
csql.Where("mobile like", c.Getstr(query, "mobile"))
csql.Where("sex", c.Getstr(query, "sex"))
csql.Where_daterange("logintimes", c.Getstr(query, "logintimes"))
csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
order := post.Get("order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Admin_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -38,9 +38,9 @@ func Admin_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -49,8 +49,8 @@ func Admin_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
ret["fshow"] = fshow
ret["field"] = field
}
@ -88,39 +88,39 @@ func Admin_init(w http.ResponseWriter, r *http.Request) bool {
})
once["input"] = input
csql = NewCiySQL("zc_depart")
csql = c.NewCiySQL("zc_depart")
csql.Column("id,upid,name,isuse")
once["zc_depart"], _, _ = CiyDB.Get(csql)
csql = NewCiySQL("zc_role")
once["zc_depart"], _, _ = c.CiyDB.Get(csql)
csql = c.NewCiySQL("zc_role")
csql.Column("id,name")
once["zc_role"], _, _ = CiyDB.Get(csql)
once["zc_role"], _, _ = c.CiyDB.Get(csql)
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Admin_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
id := post.Getint("id")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写姓名")
return c.ErrJSON(w, "请填写姓名")
}
stpstatus := post.Getint("stpstatus")
if stpstatus <= 0 {
return ErrJSON(w, "请填写状态")
return c.ErrJSON(w, "请填写状态")
}
mobile := post.Get("mobile")
if mobile == "" {
return ErrJSON(w, "请填写手机号")
return c.ErrJSON(w, "请填写手机号")
}
sex := post.Getint("sex")
if sex <= 0 {
return ErrJSON(w, "请填写性别")
return c.ErrJSON(w, "请填写性别")
}
departid := post.Getint("departid")
icon := post.Get("icon")
@ -128,46 +128,46 @@ func Admin_update(w http.ResponseWriter, r *http.Request) bool {
var err error
var datarow map[string]any
if id > 0 {
if admin.Nopower(CiyDB, userid, "p500u") {
return ErrJSON(w, "您未被授权操作修改")
if admin.Nopower(c.CiyDB, userid, "p500u") {
return c.ErrJSON(w, "您未被授权操作修改")
}
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
if Toint(datarow["roleid"]) != roleid {
if admin.Nopower(CiyDB, userid, "p500r") {
return ErrJSON(w, "您没有赋予角色的权限")
if c.Toint(datarow["roleid"]) != roleid {
if admin.Nopower(c.CiyDB, userid, "p500r") {
return c.ErrJSON(w, "您没有赋予角色的权限")
}
} else {
roleid = 0
}
} else {
if admin.Nopower(CiyDB, userid, "p500a") {
return ErrJSON(w, "您未被授权操作新增")
if admin.Nopower(c.CiyDB, userid, "p500a") {
return c.ErrJSON(w, "您未被授权操作新增")
}
if admin.Nopower(CiyDB, userid, "p500r") {
if admin.Nopower(c.CiyDB, userid, "p500r") {
roleid = 0
}
}
rolerow := map[string]any{}
if roleid > 0 {
csql := NewCiySQL("zc_role")
csql := c.NewCiySQL("zc_role")
csql.Where("id", roleid)
rolerow, err := CiyDB.Getone(csql)
rolerow, err := c.CiyDB.Getone(csql)
if rolerow == nil {
return ErrJSON(w, "角色不存在", err)
return c.ErrJSON(w, "角色不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_admin")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_admin")
csql.Where("mobile", mobile)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("数据已存在")
}
@ -181,131 +181,131 @@ func Admin_update(w http.ResponseWriter, r *http.Request) bool {
if roleid > 0 {
updata["power"] = rolerow["power"]
}
csql = NewCiySQL("zc_admin")
csql = c.NewCiySQL("zc_admin")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if stpstatus == 10 {
if roleid > 0 || datarow["name"] != name || datarow["icon"] != icon {
CiyDB.Execute("update zc_online set usrchg=2 where user=?", id)
c.CiyDB.Execute("update zc_online set usrchg=2 where user=?", id)
}
} else {
CiyDB.Execute("delete from zc_online where user=?", id)
c.CiyDB.Execute("delete from zc_online where user=?", id)
}
if datarow["name"] != name {
CiyDB.Execute("update zc_online set usrchg=2")
c.CiyDB.Execute("update zc_online set usrchg=2")
}
} else {
updata["addtimes"] = Tostamp()
id, err = CiyDB.Insert(csql, updata)
CiyDB.Execute("update zc_online set usrchg=2")
updata["addtimes"] = c.Tostamp()
id, err = c.CiyDB.Insert(csql, updata)
c.CiyDB.Execute("update zc_online set usrchg=2")
}
updata["id"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_admin", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_admin", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Admin_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p500d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p500d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
delid := c.Toint(row["id"])
if userid == delid {
return fmt.Errorf("不能删除本人")
}
if delid == 10 {
return fmt.Errorf("不能删除超级管理员")
}
Delme(CiyDB, delid, "zc_admin")
CiyDB.Execute("delete from zc_online where user=?", delid)
admin.SaveLogDB(CiyDB, "zc_admin", row, nil)
c.Delme(c.CiyDB, delid, "zc_admin")
c.CiyDB.Execute("delete from zc_online where user=?", delid)
admin.SaveLogDB(c.CiyDB, "zc_admin", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
CiyDB.Execute("update zc_online set usrchg=2")
c.CiyDB.Execute("update zc_online set usrchg=2")
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Admin_repass(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p500p") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p500p") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
err := CiyDB.Tran(func() error {
err := c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["trytime"] = 0
updata["password"] = MD5(admin.Gdefpass + admin.Gtokensalt)
csql := NewCiySQL("zc_admin")
updata["password"] = c.MD5(admin.Gdefpass + admin.Gtokensalt)
csql := c.NewCiySQL("zc_admin")
csql.Where("id", id)
_, err := CiyDB.Update(csql, updata)
_, err := c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
CiyDB.Execute("delete from zc_online where user=?", id)
c.CiyDB.Execute("delete from zc_online where user=?", id)
ret := map[string]any{}
ret["msg"] = "默认密码: " + admin.Gdefpass
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Admin_exportxls(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p500e") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p500e") {
return c.ErrJSON(w, "您未被授权操作")
}
_, csql := admin_setwhere(post)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
if len(rows) > 10000 {
return ErrJSON(w, "将导出"+Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
return c.ErrJSON(w, "将导出"+c.Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
}
fields := []map[string]string{}
fields = append(fields, map[string]string{"style": "c", "width": "60", "field": "id", "name": "行码"})
@ -317,13 +317,13 @@ func Admin_exportxls(w http.ResponseWriter, r *http.Request) bool {
fields = append(fields, map[string]string{"style": "l", "width": "100", "field": "logintimes", "name": "登录时间"})
fields = append(fields, map[string]string{"style": "l", "width": "100", "field": "addtimes", "name": "注册时间"})
code_stpstatus := admin.Getcatas(CiyDB, "stpstatus")
code_sex := admin.Getcatas(CiyDB, "sex")
csql = NewCiySQL("zc_depart")
code_stpstatus := admin.Getcatas(c.CiyDB, "stpstatus")
code_sex := admin.Getcatas(c.CiyDB, "sex")
csql = c.NewCiySQL("zc_depart")
csql.Column("id,upid,name")
code_departid, _, err2 := CiyDB.Get(csql)
code_departid, _, err2 := c.CiyDB.Get(csql)
if err2 != nil {
return ErrJSON(w, "读取zc_depart错误", err2)
return c.ErrJSON(w, "读取zc_depart错误", err2)
}
datas := [][]string{}
@ -334,29 +334,29 @@ func Admin_exportxls(w http.ResponseWriter, r *http.Request) bool {
if val, ok := row[field]; ok {
var str string
if field == "id" {
str = EnID(Toint(val))
str = c.EnID(c.Toint(val))
} else if field == "stpstatus" {
str = Ccode(code_stpstatus, Toint(val))
str = c.Ccode(code_stpstatus, c.Toint(val))
} else if field == "sex" {
str = Ccode(code_sex, Toint(val))
str = c.Ccode(code_sex, c.Toint(val))
} else if field == "departid" {
str = strings.Join(Mcode(code_departid, Toint(val)), "-")
str = strings.Join(c.Mcode(code_departid, c.Toint(val)), "-")
} else if field == "logintimes" {
t := Toint(val)
t := c.Toint(val)
if t <= 0 {
str = "--"
} else {
str = Todate(t, "Y-m-d H:i")
str = c.Todate(t, "Y-m-d H:i")
}
} else if field == "addtimes" {
t := Toint(val)
t := c.Toint(val)
if t <= 0 {
str = "--"
} else {
str = Todate(t, "Y-m-d H:i")
str = c.Todate(t, "Y-m-d H:i")
}
} else {
str = Tostr(val)
str = c.Tostr(val)
}
dat = append(dat, str)
} else {
@ -373,44 +373,44 @@ func Admin_exportxls(w http.ResponseWriter, r *http.Request) bool {
param["toptitle"] = "管理员数据报表"
total := []map[string]any{} //单行统计数据
// total = append(total, map[string]any{"style": "l", "name": "合计", "merge": 5})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// param["rowstop"] = `<Row ss:Height="45"><Cell ss:MergeAcross="7" ss:StyleID="cap"><Data ss:Type="String">众产Ciyon</Data></Cell></Row>`
// param["rowsfooter"] = `<Row><Cell ss:MergeAcross="2"><Data ss:Type="String" ss:StyleID="r">总计</Data></Cell><Cell ss:Formula="=SUM(R[-2]C:R[-1]C)"><Data ss:Type="Number"></Data></Cell></Row>`
str := General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + Todate(-1, "Ymd_His") + Tostr(rand.Intn(8999)+1000) + ".xls"
err = FileSave(CiyWebDir+filename, str)
str := c.General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + c.Todate(-1, "Ymd_His") + c.Tostr(rand.Intn(8999)+1000) + ".xls"
err = c.FileSave(c.CiyWebDir+filename, str)
if err != nil {
return ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
return c.ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
}
ret := map[string]any{}
ret["url"] = filename
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p500u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p500u") {
return c.ErrJSON(w, "您未被授权操作")
}
file := post.Get("file")
if FileExist(CiyWebDir+"/ud/"+file) != nil {
return ErrJSON(w, "文件不存在")
if c.FileExist(c.CiyWebDir+"/ud/"+file) != nil {
return c.ErrJSON(w, "文件不存在")
}
xlFile, err := xlsx.OpenFile(CiyWebDir + "/ud/" + file)
xlFile, err := xlsx.OpenFile(c.CiyWebDir + "/ud/" + file)
if err != nil {
return ErrJSON(w, "文件打开错误:%v", err)
return c.ErrJSON(w, "文件打开错误:%v", err)
}
datas, err := xlFile.ToSlice()
if err != nil {
return ErrJSON(w, "文件解析错误:%v", err)
return c.ErrJSON(w, "文件解析错误:%v", err)
}
datacnt := len(datas[0])
if datacnt < 2 {
return ErrJSON(w, "数据为空")
return c.ErrJSON(w, "数据为空")
}
html := ""
headsn := []string{}
@ -432,15 +432,15 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
continue
}
heads = append(heads, map[string]string{
"idx": Tostr(In_array(datas[0][xlsidx-1], hd[0])),
"idx": c.Tostr(c.In_array(datas[0][xlsidx-1], hd[0])),
"fld": hd[1],
"name": hd[0],
})
}
code_sex := admin.Getcatas(CiyDB, "sex")
code_departid, _, _ := CiyDB.Get(NewCiySQL("zc_depart").Where("isuse", 1).Column("id,upid,name"))
code_stpstatus := admin.Getcatas(CiyDB, "stpstatus")
code_sex := admin.Getcatas(c.CiyDB, "sex")
code_departid, _, _ := c.CiyDB.Get(c.NewCiySQL("zc_depart").Where("isuse", 1).Column("id,upid,name"))
code_stpstatus := admin.Getcatas(c.CiyDB, "stpstatus")
html += "<div class=\"table\">\n"
html += "<table><thead><tr>\n"
@ -454,7 +454,7 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
un_mobile := []string{}
id := 0
for rowidx := xlsidx; rowidx < datacnt; rowidx++ {
lineidx := Tostr(rowidx - xlsidx + 1)
lineidx := c.Tostr(rowidx - xlsidx + 1)
hrhtml := ""
firsthtml := "<td><div>" + lineidx + "</div></td>"
bempty := true
@ -462,8 +462,8 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
name := arr["name"]
errmsg := "" //数据有误,显示红色说明
showdat := "" //显示在表格中的数据
if Toint(arr["idx"]) > -1 {
showdat = strings.TrimSpace(datas[0][rowidx][Toint(arr["idx"])])
if c.Toint(arr["idx"]) > -1 {
showdat = strings.TrimSpace(datas[0][rowidx][c.Toint(arr["idx"])])
}
if showdat == "--" {
showdat = ""
@ -476,13 +476,13 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
value = 0
showdat = "<kbd>新增</kbd>"
} else {
id = DeID(showdat)
id = c.DeID(showdat)
if id == 0 {
errmsg = name + "解析错误"
} else {
csqlchk := NewCiySQL("zc_admin")
csqlchk := c.NewCiySQL("zc_admin")
csqlchk.Where("id", id).Column("id")
chkid := Toint(CiyDB.Get1(csqlchk))
chkid := c.Toint(c.CiyDB.Get1(csqlchk))
if chkid != id {
errmsg = name + "在数据库中不存在"
}
@ -493,7 +493,7 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Dcode(code_stpstatus, Tostr(showdat))
value = c.Dcode(code_stpstatus, c.Tostr(showdat))
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -502,7 +502,7 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
value = 0
} else {
value = Dcode(code_sex, Tostr(showdat))
value = c.Dcode(code_sex, c.Tostr(showdat))
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -511,13 +511,13 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
errmsg = name + "为必填项"
} else {
csqlchk := NewCiySQL("zc_admin")
csqlchk := c.NewCiySQL("zc_admin")
csqlchk.Where("name", id).Column("id")
chkid := Toint(CiyDB.Get1(csqlchk))
chkid := c.Toint(c.CiyDB.Get1(csqlchk))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
errmsg = name + "在数据库中出现重复"
}
if In_array(un_name, showdat) > -1 {
if c.In_array(un_name, showdat) > -1 {
errmsg = name + "发现重复"
} else {
un_name = append(un_name, showdat)
@ -527,13 +527,13 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
if showdat == "" {
errmsg = name + "为必填项"
} else {
csqlchk := NewCiySQL("zc_admin")
csqlchk := c.NewCiySQL("zc_admin")
csqlchk.Where("mobile", id).Column("id")
chkid := Toint(CiyDB.Get1(csqlchk))
chkid := c.Toint(c.CiyDB.Get1(csqlchk))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
errmsg = name + "在数据库中出现重复"
}
if In_array(un_mobile, showdat) > -1 {
if c.In_array(un_mobile, showdat) > -1 {
errmsg = name + "发现重复"
} else {
un_mobile = append(un_mobile, showdat)
@ -544,7 +544,7 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
value = 0
} else {
dats := strings.Split(showdat, "-")
value = Dcode(code_departid, dats[len(dats)-1])
value = c.Dcode(code_departid, dats[len(dats)-1])
if value == -1 {
errmsg = name + "文字与系统数据不匹配"
}
@ -554,7 +554,7 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
bempty = false
}
if errmsg == "" {
hrhtml += "<td><div>" + showdat + "<input type=\"hidden\" name=\"" + Tostr(arr["fld"]) + "_" + lineidx + "\" value=\"" + Tostr(value) + "\"/>" + ext + "</div></td>"
hrhtml += "<td><div>" + showdat + "<input type=\"hidden\" name=\"" + c.Tostr(arr["fld"]) + "_" + lineidx + "\" value=\"" + c.Tostr(value) + "\"/>" + ext + "</div></td>"
} else {
hrhtml += "<td><div style=\"background:#ffe8c5;\" title=\"#" + lineidx + ":" + errmsg + "\">" + showdat + "</div></td>"
}
@ -572,36 +572,36 @@ func Admin_importxls_in(w http.ResponseWriter, r *http.Request) bool {
html += "</tbody>\n"
html += "</table>\n"
html += "</div>\n"
html += "<input type=\"hidden\" name=\"total\" value=\"" + Tostr(cnt) + "\"/>\n"
html += "<code>共" + Tostr(cnt) + "条数据</code>\n"
return SuccJSON(w, map[string]any{
html += "<input type=\"hidden\" name=\"total\" value=\"" + c.Tostr(cnt) + "\"/>\n"
html += "<code>共" + c.Tostr(cnt) + "条数据</code>\n"
return c.SuccJSON(w, map[string]any{
"html": html,
"count": cnt,
})
}
func Admin_importxls_data(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p500a") {
return ErrJSON(w, "您未被授权操作新增")
if admin.Nopower(c.CiyDB, userid, "p500a") {
return c.ErrJSON(w, "您未被授权操作新增")
}
total := post.Getint("total")
err := CiyDB.Tran(func() error {
err := c.CiyDB.Tran(func() error {
for i := 1; i <= total; i++ {
istr := Tostr(i)
istr := c.Tostr(i)
id := post.Getint("id_" + istr)
stpstatus := post.Getint("stpstatus_" + istr)
name := post.Get("name_" + istr)
mobile := post.Get("mobile_" + istr)
sex := post.Getint("sex_" + istr)
departid := post.Getint("departid_" + istr)
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Where("mobile", mobile)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("发现手机号有重复")
}
@ -611,14 +611,14 @@ func Admin_importxls_data(w http.ResponseWriter, r *http.Request) bool {
updata["stpstatus"] = stpstatus
updata["sex"] = sex
updata["departid"] = departid
csql = NewCiySQL("zc_admin")
csql = c.NewCiySQL("zc_admin")
var err error
if id == 0 {
updata["addtimes"] = Tostamp()
_, err = CiyDB.Insert(csql, updata)
updata["addtimes"] = c.Tostamp()
_, err = c.CiyDB.Insert(csql, updata)
} else {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
}
if err != nil {
return fmt.Errorf("导入失败:%v", err)
@ -627,8 +627,8 @@ func Admin_importxls_data(w http.ResponseWriter, r *http.Request) bool {
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
CiyDB.Execute("update zc_online set usrchg=2")
return SuccJSON(w)
c.CiyDB.Execute("update zc_online set usrchg=2")
return c.SuccJSON(w)
}

View File

@ -5,25 +5,25 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func autotask_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func autotask_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_autotask")
liid := Getint(query, "liid")
csql := c.NewCiySQL("zc_autotask")
liid := c.Getint(query, "liid")
if liid > 0 {
csql.Where("autotaskstatus", liid)
}
csql.Where("types like", Getstr(query, "types"))
order := Getstr(query, "order", "id desc")
csql.Where("types like", c.Getstr(query, "types"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Autotask_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -31,14 +31,14 @@ func Autotask_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
rows = append(rows, map[string]any{
"id": "",
"runcycle": 0,
"nexttimes": Tostamp(),
"nexttimes": c.Tostamp(),
})
ret := map[string]any{}
ret["where"] = where
@ -47,8 +47,8 @@ func Autotask_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, -1, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
field["runparam"]["thwidth"] = "8em"
field["nexttimes"]["thwidth"] = "10em"
field["runcycle"]["thwidth"] = "9em"
@ -74,49 +74,49 @@ func Autotask_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Autotask_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p602u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p602u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写任务名称")
return c.ErrJSON(w, "请填写任务名称")
}
runfunc := post.Get("runfunc")
if runfunc == "" {
return ErrJSON(w, "请填写入口函数")
return c.ErrJSON(w, "请填写入口函数")
}
runparam := post.Get("runparam")
nexttimes := post.Getdate("nexttimes")
runcycle := post.Getint("runcycle")
if runcycle >= 0 && runcycle < 60 {
return ErrJSON(w, "请填写超过1分钟的执行周期")
return c.ErrJSON(w, "请填写超过1分钟的执行周期")
}
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_autotask")
csql := c.NewCiySQL("zc_autotask")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_autotask")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_autotask")
csql.Where("name", name)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("数据已存在")
}
@ -125,102 +125,102 @@ func Autotask_update(w http.ResponseWriter, r *http.Request) bool {
updata["runparam"] = runparam
updata["nexttimes"] = nexttimes
updata["runcycle"] = runcycle
csql = NewCiySQL("zc_autotask")
csql = c.NewCiySQL("zc_autotask")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
updata["autotaskstatus"] = 90
if nexttimes == 0 {
updata["nexttimes"] = Tostamp()
updata["nexttimes"] = c.Tostamp()
}
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
}
updata["newid"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_autotask", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_autotask", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Autotask_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p602d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p602d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_autotask")
csql := c.NewCiySQL("zc_autotask")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_autotask")
admin.SaveLogDB(CiyDB, "zc_autotask", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_autotask")
admin.SaveLogDB(c.CiyDB, "zc_autotask", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Autotask_status(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p602u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p602u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
status := post.Getint("status")
csql := NewCiySQL("zc_autotask")
csql := c.NewCiySQL("zc_autotask")
csql.Where("id", id)
row, err := CiyDB.Getone(csql)
row, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata["autotaskstatus"] = status
csql = NewCiySQL("zc_autotask")
csql = c.NewCiySQL("zc_autotask")
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_autotask", row, updata)
admin.SaveLogDB(c.CiyDB, "zc_autotask", row, updata)
updata["id"] = id
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -5,25 +5,25 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func autotskrun_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func autotskrun_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_autotsk_run")
csql.Where("autotaskid", Getstr(query, "_autotaskid"))
csql.Where_daterange("addtimes", Getstr(query, "addtimes"))
csql.Where_numrange("runsec", Getstr(query, "runsec_1"), Getstr(query, "runsec_2"), 1)
csql.Where_numrange("logcnt", Getstr(query, "logcnt_1"), Getstr(query, "logcnt_2"), 1)
csql.Where("msg like", Getstr(query, "msg"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_autotsk_run")
csql.Where("autotaskid", c.Getstr(query, "_autotaskid"))
csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
csql.Where_numrange("runsec", c.Getstr(query, "runsec_1"), c.Getstr(query, "runsec_2"), 1)
csql.Where_numrange("logcnt", c.Getstr(query, "logcnt_1"), c.Getstr(query, "logcnt_2"), 1)
csql.Where("msg like", c.Getstr(query, "msg"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Autotskrun_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -31,9 +31,9 @@ func Autotskrun_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -42,7 +42,7 @@ func Autotskrun_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
field, fshow := c.CiyDB.GetField(csql)
field["msg"]["thwidth"] = "20em"
ret["fshow"] = fshow
ret["field"] = field
@ -74,67 +74,67 @@ func Autotskrun_init(w http.ResponseWriter, r *http.Request) bool {
"prop": ` style="width:8em;"`,
})
once["input"] = input
csql = NewCiySQL("zc_autotask")
csql = c.NewCiySQL("zc_autotask")
csql.Column("id,name")
once["zc_autotask"], _, _ = CiyDB.Get(csql)
once["zc_autotask"], _, _ = c.CiyDB.Get(csql)
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Autotskrun_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p602l") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p602l") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_autotsk_run")
csql := c.NewCiySQL("zc_autotsk_run")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delall(CiyDB, delid, "zc_autotsk_log", "runtaskid", "Log记录")
Delme(CiyDB, delid, "zc_autotsk_run")
admin.SaveLogDB(CiyDB, "zc_autotsk_run", row, nil)
delid := c.Toint(row["id"])
c.Delall(c.CiyDB, delid, "zc_autotsk_log", "runtaskid", "Log记录")
c.Delme(c.CiyDB, delid, "zc_autotsk_run")
admin.SaveLogDB(c.CiyDB, "zc_autotsk_run", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Autotskrun_exportxls(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p602l") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p602l") {
return c.ErrJSON(w, "您未被授权操作")
}
_, csql := autotskrun_setwhere(post)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
if len(rows) > 10000 {
return ErrJSON(w, "将导出"+Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
return c.ErrJSON(w, "将导出"+c.Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
}
fields := []map[string]string{}
fields = append(fields, map[string]string{"style": "c", "width": "60", "field": "id", "name": "行码"})
@ -144,11 +144,11 @@ func Autotskrun_exportxls(w http.ResponseWriter, r *http.Request) bool {
fields = append(fields, map[string]string{"style": "r", "width": "60", "field": "logcnt", "name": "LOG统计"})
fields = append(fields, map[string]string{"style": "l", "width": "500", "field": "msg", "name": "任务简报"})
csql = NewCiySQL("zc_autotask")
csql = c.NewCiySQL("zc_autotask")
csql.Column("id,name")
code_autotaskid, _, err2 := CiyDB.Get(csql)
code_autotaskid, _, err2 := c.CiyDB.Get(csql)
if err2 != nil {
return ErrJSON(w, "读取zc_autotask错误", err2)
return c.ErrJSON(w, "读取zc_autotask错误", err2)
}
datas := [][]string{}
@ -159,18 +159,18 @@ func Autotskrun_exportxls(w http.ResponseWriter, r *http.Request) bool {
if val, ok := row[field]; ok {
var str string
if field == "id" {
str = EnID(Toint(val))
str = c.EnID(c.Toint(val))
} else if field == "autotaskid" {
str = Ccode(code_autotaskid, Toint(val))
str = c.Ccode(code_autotaskid, c.Toint(val))
} else if field == "addtimes" {
t := Toint(val)
t := c.Toint(val)
if t <= 0 {
str = "--"
} else {
str = Todate(t, "Y-m-d H:i")
str = c.Todate(t, "Y-m-d H:i")
}
} else {
str = Tostr(val)
str = c.Tostr(val)
}
dat = append(dat, str)
} else {
@ -187,36 +187,36 @@ func Autotskrun_exportxls(w http.ResponseWriter, r *http.Request) bool {
param["toptitle"] = "任务执行记录数据报表"
total := []map[string]any{} //单行统计数据
// total = append(total, map[string]any{"style": "l", "name": "合计", "merge": 5})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// param["rowstop"] = `<Row ss:Height="45"><Cell ss:MergeAcross="7" ss:StyleID="cap"><Data ss:Type="String">众产Ciyon</Data></Cell></Row>`
// param["rowsfooter"] = `<Row><Cell ss:MergeAcross="2"><Data ss:Type="String" ss:StyleID="r">总计</Data></Cell><Cell ss:Formula="=SUM(R[-2]C:R[-1]C)"><Data ss:Type="Number"></Data></Cell></Row>`
str := General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + Todate(-1, "Ymd_His") + Tostr(rand.Intn(8999)+1000) + ".xls"
err = FileSave(CiyWebDir+filename, str)
str := c.General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + c.Todate(-1, "Ymd_His") + c.Tostr(rand.Intn(8999)+1000) + ".xls"
err = c.FileSave(c.CiyWebDir+filename, str)
if err != nil {
return ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
return c.ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
}
ret := map[string]any{}
ret["url"] = filename
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Autotskrun_viewlog(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
runtaskid := post.Getint("runtaskid")
csql := NewCiySQL("zc_autotsk_log")
csql := c.NewCiySQL("zc_autotsk_log")
csql.Where("runtaskid", runtaskid)
csql.Column("addtimes,msg")
csql.Order("id")
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
ret := map[string]any{}
ret["logs"] = rows
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -6,12 +6,12 @@ import (
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Cata_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -23,32 +23,32 @@ func Cata_init(w http.ResponseWriter, r *http.Request) bool {
code := ""
if cbid == 0 {
code = post.Get("code")
csql := NewCiySQL("zc_cata")
csql := c.NewCiySQL("zc_cata")
csql.Where("codeid", code)
csql.Where("cbid=0")
cbrow, _ := CiyDB.Getone(csql)
cbrow, _ := c.CiyDB.Getone(csql)
if cbrow == nil {
return ErrJSON(w, "代码库未找到code="+code)
return c.ErrJSON(w, "代码库未找到code="+code)
}
cbid = Toint(cbrow["id"])
cname = Tostr(cbrow["name"])
cbid = c.Toint(cbrow["id"])
cname = c.Tostr(cbrow["name"])
} else {
csql := NewCiySQL("zc_cata")
csql := c.NewCiySQL("zc_cata")
csql.Where("id", cbid)
csql.Where("cbid=0")
cbrow, _ := CiyDB.Getone(csql)
cbrow, _ := c.CiyDB.Getone(csql)
if cbrow == nil {
return ErrJSON(w, "代码库未找到cbid="+Tostr(cbid))
return c.ErrJSON(w, "代码库未找到cbid="+c.Tostr(cbid))
}
cname = Tostr(cbrow["name"])
code = Tostr(cbrow["codeid"])
cname = c.Tostr(cbrow["name"])
code = c.Tostr(cbrow["codeid"])
}
csql := NewCiySQL("zc_cata")
csql := c.NewCiySQL("zc_cata")
csql.Where("cbid", cbid)
csql.Order("csort,id")
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
rows = append(rows, map[string]any{
"id": 0,
@ -61,15 +61,15 @@ func Cata_init(w http.ResponseWriter, r *http.Request) bool {
if post.Getbool("field") {
field := map[string]map[string]any{}
fshow := ""
FieldAdd(&field, &fshow, -1, "name", cname)
FieldAdd(&field, &fshow, -1, "codeid", "代码|")
c.FieldAdd(&field, &fshow, -1, "name", cname)
c.FieldAdd(&field, &fshow, -1, "codeid", "代码|")
if ext != "" {
FieldAdd(&field, &fshow, -1, "extdata", ext)
c.FieldAdd(&field, &fshow, -1, "extdata", ext)
}
FieldAdd(&field, &fshow, -1, "isuse", "启用")
FieldAdd(&field, &fshow, -1, "csort", "排序|")
FieldAdd(&field, &fshow, -1, "clas", "样式")
FieldAdd(&field, &fshow, -1, "_btn", "操作")
c.FieldAdd(&field, &fshow, -1, "isuse", "启用")
c.FieldAdd(&field, &fshow, -1, "csort", "排序|")
c.FieldAdd(&field, &fshow, -1, "clas", "样式")
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
field["clas"]["thwidth"] = "7em"
field["codeid"]["thwidth"] = "6em"
@ -107,23 +107,23 @@ func Cata_init(w http.ResponseWriter, r *http.Request) bool {
once["code"] = code
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Cata_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p601pd") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p601pd") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
cbid := post.Getint("cbid")
codeid := post.Get("codeid")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写名称")
return c.ErrJSON(w, "请填写名称")
}
upid := post.Getint("upid")
csort := post.Getint("csort")
@ -133,21 +133,21 @@ func Cata_update(w http.ResponseWriter, r *http.Request) bool {
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_cata")
csql := c.NewCiySQL("zc_cata")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_cata")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_cata")
csql.Where("cbid", cbid)
csql.Where("codeid", codeid)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("代码值重复")
}
@ -159,62 +159,62 @@ func Cata_update(w http.ResponseWriter, r *http.Request) bool {
updata["csort"] = csort
updata["clas"] = clas
updata["extdata"] = extdata
csql = NewCiySQL("zc_cata")
csql = c.NewCiySQL("zc_cata")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
}
updata["newid"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_cata", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_cata", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
CiyDB.Execute("update zc_online set usrchg=2")
c.CiyDB.Execute("update zc_online set usrchg=2")
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Cata_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p601pd") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p601pd") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
cbid := post.Getint("cbid")
var csql *CiySQL
csql = NewCiySQL("zc_cata")
var csql *c.CiySQL
csql = c.NewCiySQL("zc_cata")
csql.Where("cbid=0")
csql.Where("id", cbid)
cbrow, _ := CiyDB.Getone(csql)
cbrow, _ := c.CiyDB.Getone(csql)
if cbrow == nil {
return ErrJSON(w, "代码库未找到cbid="+Tostr(cbid))
return c.ErrJSON(w, "代码库未找到cbid="+c.Tostr(cbid))
}
exs := strings.Split(Tostr(cbrow["extdata"]), "\n")
csql = NewCiySQL("zc_cata")
exs := strings.Split(c.Tostr(cbrow["extdata"]), "\n")
csql = c.NewCiySQL("zc_cata")
csql.Where("id in", ids)
rows, _, _ := CiyDB.Get(csql)
rows, _, _ := c.CiyDB.Get(csql)
vids := make([]int, 0)
err := CiyDB.Tran(func() error {
err := c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
csql = NewCiySQL("zc_cata")
delid := c.Toint(row["id"])
csql = c.NewCiySQL("zc_cata")
csql.Where("upid", delid)
csql.Where("cbid", row["cbid"])
downcnt := Toint(CiyDB.Get1(csql))
downcnt := c.Toint(c.CiyDB.Get1(csql))
if downcnt > 0 {
return fmt.Errorf("[%v]有%v个子码请先删除子码", row["name"], downcnt)
}
@ -224,21 +224,21 @@ func Cata_del(w http.ResponseWriter, r *http.Request) bool {
}
tabf := strings.Split(exn, ",")
if len(tabf) == 1 {
tabf = append(tabf, Tostr(cbrow["codeid"]))
tabf = append(tabf, c.Tostr(cbrow["codeid"]))
}
Delcheck(CiyDB, Toint(row["codeid"]), tabf[0], tabf[1], tabf[0]+"数据")
c.Delcheck(c.CiyDB, c.Toint(row["codeid"]), tabf[0], tabf[1], tabf[0]+"数据")
}
Delme(CiyDB, delid, "zc_cata")
admin.SaveLogDB(CiyDB, "zc_cata", row, nil)
c.Delme(c.CiyDB, delid, "zc_cata")
admin.SaveLogDB(c.CiyDB, "zc_cata", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
CiyDB.Execute("update zc_online set usrchg=2")
c.CiyDB.Execute("update zc_online set usrchg=2")
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

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

View File

@ -5,54 +5,54 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Chgpass_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
oldpass := post.Get("oldpass")
newpass := post.Get("newpass")
if oldpass == "" {
return ErrJSON(w, "请输入原密码")
return c.ErrJSON(w, "请输入原密码")
}
if newpass == "" {
return ErrJSON(w, "请输入新密码")
return c.ErrJSON(w, "请输入新密码")
}
if newpass == admin.Gdefpass {
return ErrJSON(w, "新密码不要与默认密码相同")
return c.ErrJSON(w, "新密码不要与默认密码相同")
}
if len(newpass) < 6 {
return ErrJSON(w, "密码应至少6位")
return c.ErrJSON(w, "密码应至少6位")
}
csql := NewCiySQL("zc_admin")
csql := c.NewCiySQL("zc_admin")
csql.Where("id", userid)
userrow, err := CiyDB.Getone(csql)
userrow, err := c.CiyDB.Getone(csql)
if userrow == nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
if Tostr(userrow["password"]) != MD5(oldpass+admin.Gtokensalt) {
return ErrJSON(w, "原密码错误")
if c.Tostr(userrow["password"]) != c.MD5(oldpass+admin.Gtokensalt) {
return c.ErrJSON(w, "原密码错误")
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["password"] = MD5(newpass + admin.Gtokensalt)
csql = NewCiySQL("zc_admin")
updata["password"] = c.MD5(newpass + admin.Gtokensalt)
csql = c.NewCiySQL("zc_admin")
csql.Where("id", userid)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLog(CiyDB, "PASSWORD", "修改密码:"+Tostr(updata["password"]))
admin.SaveLog(c.CiyDB, "PASSWORD", "修改密码:"+c.Tostr(updata["password"]))
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}

View File

@ -6,22 +6,22 @@ import (
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func config_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func config_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_config")
csql.Where("types like", Getstr(query, "types"))
csql.Where("params like", Getstr(query, "params"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_config")
csql.Where("types like", c.Getstr(query, "types"))
csql.Where("params like", c.Getstr(query, "params"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Config_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -29,9 +29,9 @@ func Config_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
rows = append(rows, map[string]any{
"id": 0,
@ -46,9 +46,9 @@ func Config_init(w http.ResponseWriter, r *http.Request) bool {
if post.Getbool("field") {
field := map[string]map[string]any{}
fshow := ""
FieldAdd(&field, &fshow, -1, "types", "参数代码")
FieldAdd(&field, &fshow, -1, "params", "参数值")
FieldAdd(&field, &fshow, -1, "_btn", "操作")
c.FieldAdd(&field, &fshow, -1, "types", "参数代码")
c.FieldAdd(&field, &fshow, -1, "params", "参数值")
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
field["types"]["thwidth"] = "12em"
field["params"]["thwidth"] = "21em"
ret["fshow"] = strings.TrimLeft(fshow, ",")
@ -72,99 +72,99 @@ func Config_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Config_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p600u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p600u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
types := post.Get("types")
if types == "" {
return ErrJSON(w, "请填写代码")
return c.ErrJSON(w, "请填写代码")
}
params := post.Get("params")
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_config")
csql := c.NewCiySQL("zc_config")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
var updata = map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_config")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_config")
csql.Where("types", types)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("代码重复")
}
updata["types"] = types
updata["params"] = params
csql = NewCiySQL("zc_config")
csql = c.NewCiySQL("zc_config")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
}
updata["id"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_config", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_config", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Config_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p600d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p600d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_config")
csql := c.NewCiySQL("zc_config")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_config")
admin.SaveLogDB(CiyDB, "zc_config", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_config")
admin.SaveLogDB(c.CiyDB, "zc_config", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -2,26 +2,26 @@ package rigger
import (
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
"fmt"
"net/http"
)
func debug_user_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func debug_user_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_debug_user")
csql.Where("name like", Getstr(query, "name"))
csql.Where("user like", Getstr(query, "user"))
csql.Where("targettype", Getstr(query, "targettype"))
csql.Where("isuse", Getstr(query, "isuse"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_debug_user")
csql.Where("name like", c.Getstr(query, "name"))
csql.Where("user like", c.Getstr(query, "user"))
csql.Where("targettype", c.Getstr(query, "targettype"))
csql.Where("isuse", c.Getstr(query, "isuse"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Debug_user_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -29,9 +29,9 @@ func Debug_user_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -40,15 +40,15 @@ func Debug_user_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
ret["fshow"] = fshow
ret["field"] = field
}
if post.Getbool("once") {
once := map[string]any{}
input := make([]map[string]any, 0)
isusevals := CiyDB.Getdbcodes("zc_debug_user", "isuse")
isusevals := c.CiyDB.Getdbcodes("zc_debug_user", "isuse")
input = append(input, map[string]any{
"form": "targettype",
"type": "select",
@ -84,53 +84,53 @@ func Debug_user_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Debug_user_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p900u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p900u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
targettype := post.Getint("targettype")
if targettype <= 0 {
return ErrJSON(w, "请选择子系统")
return c.ErrJSON(w, "请选择子系统")
}
isuse := post.Getint("isuse")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写显示名")
return c.ErrJSON(w, "请填写显示名")
}
user := post.Get("user")
if user == "" {
return ErrJSON(w, "请填写用户名")
return c.ErrJSON(w, "请填写用户名")
}
pass := post.Get("pass")
if pass == "" {
return ErrJSON(w, "请填写密码")
return c.ErrJSON(w, "请填写密码")
}
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_debug_user")
csql := c.NewCiySQL("zc_debug_user")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_debug_user")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_debug_user")
csql.Where("targettype", targettype)
csql.Where("user", user)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("数据已存在")
}
@ -139,87 +139,87 @@ func Debug_user_update(w http.ResponseWriter, r *http.Request) bool {
updata["name"] = name
updata["user"] = user
updata["pass"] = pass
csql = NewCiySQL("zc_debug_user")
csql = c.NewCiySQL("zc_debug_user")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
}
updata["id"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_debug_user", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_debug_user", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Debug_user_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p900u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p900u") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_debug_user")
csql := c.NewCiySQL("zc_debug_user")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_debug_user")
admin.SaveLogDB(CiyDB, "zc_debug_user", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_debug_user")
admin.SaveLogDB(c.CiyDB, "zc_debug_user", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Debug_user_getlocal(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p900n") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p900n") {
return c.ErrJSON(w, "您未被授权操作")
}
targettype := post.Getint("targettype")
if targettype == 0 {
return ErrJSON(w, "请选择子系统")
return c.ErrJSON(w, "请选择子系统")
}
csql := NewCiySQL("zc_debug_user")
csql := c.NewCiySQL("zc_debug_user")
csql.Where("targettype", targettype)
csql.Where("isuse", 1)
csql.Column("id,name,user,pass")
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["list"] = rows
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -6,26 +6,26 @@ import (
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Depart_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
csql := NewCiySQL("zc_depart")
csql := c.NewCiySQL("zc_depart")
csql.Order("csort desc,id")
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
ret := map[string]any{}
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, -1, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
field["csort"]["thwidth"] = "8em"
ret["fshow"] = fshow
ret["field"] = field
@ -42,137 +42,137 @@ func Depart_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Depart_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p501u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p501u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写部门名称")
return c.ErrJSON(w, "请填写部门名称")
}
upid := post.Getint("upid")
csort := post.Getint("csort")
isuse := post.Getint("isuse")
csql := NewCiySQL("zc_depart")
csql := c.NewCiySQL("zc_depart")
csql.Where("id", id)
datarow, err := CiyDB.Getone(csql)
datarow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["name"] = name
updata["isuse"] = isuse
updata["upid"] = upid
updata["csort"] = csort
csql = NewCiySQL("zc_depart")
csql = c.NewCiySQL("zc_depart")
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_depart", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_depart", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Depart_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p501d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p501d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_depart")
csql := c.NewCiySQL("zc_depart")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delcheck(CiyDB, delid, "zc_admin", "departid", "人员")
Delcheck(CiyDB, delid, "zc_depart", "upid", "下级部门")
Delme(CiyDB, delid, "zc_depart")
admin.SaveLogDB(CiyDB, "zc_depart", row, nil)
delid := c.Toint(row["id"])
c.Delcheck(c.CiyDB, delid, "zc_admin", "departid", "人员")
c.Delcheck(c.CiyDB, delid, "zc_depart", "upid", "下级部门")
c.Delme(c.CiyDB, delid, "zc_depart")
admin.SaveLogDB(c.CiyDB, "zc_depart", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Depart_modifyupid(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p501u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p501u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
newupid := post.Getint("newupid")
csql := NewCiySQL("zc_depart")
csql := c.NewCiySQL("zc_depart")
csql.Where("id", id)
datarow, err := CiyDB.Getone(csql)
datarow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["upid"] = newupid
csql = NewCiySQL("zc_depart")
csql = c.NewCiySQL("zc_depart")
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("操作数据库失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_depart", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_depart", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Depart_multiadd(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p501u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p501u") {
return c.ErrJSON(w, "您未被授权操作")
}
upid := post.Getint("upid")
multi := strings.Split(post.Get("multi"), "\n")
cnt := 0
err := CiyDB.Tran(func() error {
err := c.CiyDB.Tran(func() error {
for _, m := range multi {
m = strings.TrimSpace(m)
if m == "" {
@ -183,21 +183,21 @@ func Depart_multiadd(w http.ResponseWriter, r *http.Request) bool {
updata["isuse"] = 1
updata["upid"] = upid
updata["csort"] = 10
csql := NewCiySQL("zc_depart")
_, err := CiyDB.Insert(csql, updata)
csql := c.NewCiySQL("zc_depart")
_, err := c.CiyDB.Insert(csql, updata)
if err != nil {
return fmt.Errorf("新增失败:%v", err)
}
cnt++
admin.SaveLogDB(CiyDB, "zc_depart", nil, updata)
admin.SaveLogDB(c.CiyDB, "zc_depart", nil, updata)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
if cnt == 0 {
return ErrJSON(w, "没有任何新增")
return c.ErrJSON(w, "没有任何新增")
}
return SuccJSON(w)
return c.SuccJSON(w)
}

View File

@ -5,24 +5,24 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func funcslow_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func funcslow_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_funcslow")
csql.Where_daterange("addtimes", Getstr(query, "addtimes"))
csql.Where_numrange("ms", Getstr(query, "ms_1"), Getstr(query, "ms_2"), 1)
csql.Where("uri like", Getstr(query, "uri"))
csql.Where("posts like", Getstr(query, "posts"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_funcslow")
csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
csql.Where_numrange("ms", c.Getstr(query, "ms_1"), c.Getstr(query, "ms_2"), 1)
csql.Where("uri like", c.Getstr(query, "uri"))
csql.Where("posts like", c.Getstr(query, "posts"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Funcslow_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -30,9 +30,9 @@ func Funcslow_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -41,8 +41,8 @@ func Funcslow_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
field["ms"]["thwidth"] = "5em"
field["ms"]["order"] = true
ret["fshow"] = fshow
@ -77,61 +77,61 @@ func Funcslow_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Funcslow_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p555d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p555d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_funcslow")
csql := c.NewCiySQL("zc_funcslow")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_funcslow")
admin.SaveLogDB(CiyDB, "zc_funcslow", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_funcslow")
admin.SaveLogDB(c.CiyDB, "zc_funcslow", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Funcslow_exportxls(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p555e") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p555e") {
return c.ErrJSON(w, "您未被授权操作")
}
_, csql := funcslow_setwhere(post)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
if len(rows) > 10000 {
return ErrJSON(w, "将导出"+Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
return c.ErrJSON(w, "将导出"+c.Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
}
fields := []map[string]string{}
fields = append(fields, map[string]string{"style": "c", "width": "60", "field": "id", "name": "行码"})
@ -148,16 +148,16 @@ func Funcslow_exportxls(w http.ResponseWriter, r *http.Request) bool {
if val, ok := row[field]; ok {
var str string
if field == "id" {
str = EnID(Toint(val))
str = c.EnID(c.Toint(val))
} else if field == "addtimes" {
t := Toint(val)
t := c.Toint(val)
if t <= 0 {
str = "--"
} else {
str = Todate(t, "Y-m-d H:i")
str = c.Todate(t, "Y-m-d H:i")
}
} else {
str = Tostr(val)
str = c.Tostr(val)
}
dat = append(dat, str)
} else {
@ -174,17 +174,17 @@ func Funcslow_exportxls(w http.ResponseWriter, r *http.Request) bool {
param["toptitle"] = "慢请求数据报表"
total := []map[string]any{} //单行统计数据
// total = append(total, map[string]any{"style": "l", "name": "合计", "merge": 5})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// param["rowstop"] = `<Row ss:Height="45"><Cell ss:MergeAcross="7" ss:StyleID="cap"><Data ss:Type="String">众产Ciyon</Data></Cell></Row>`
// param["rowsfooter"] = `<Row><Cell ss:MergeAcross="2"><Data ss:Type="String" ss:StyleID="r">总计</Data></Cell><Cell ss:Formula="=SUM(R[-2]C:R[-1]C)"><Data ss:Type="Number"></Data></Cell></Row>`
str := General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + Todate(-1, "Ymd_His") + Tostr(rand.Intn(8999)+1000) + ".xls"
err = FileSave(CiyWebDir+filename, str)
str := c.General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + c.Todate(-1, "Ymd_His") + c.Tostr(rand.Intn(8999)+1000) + ".xls"
err = c.FileSave(c.CiyWebDir+filename, str)
if err != nil {
return ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
return c.ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
}
ret := map[string]any{}
ret["url"] = filename
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -5,32 +5,32 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func logdb_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func logdb_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_log")
liid := Getint(query, "liid")
csql := c.NewCiySQL("zc_log")
liid := c.Getint(query, "liid")
if liid == 1 {
csql.Where("readuser=0")
}
if liid == 2 {
csql.Where("readuser>0")
}
csql.Where("loguser", Getstr(query, "loguser"))
csql.Where("readuser", Getstr(query, "readuser"))
csql.Where("types", Getstr(query, "types"))
csql.Where_daterange("addtimes", Getstr(query, "addtimes"))
csql.Where("logs like", Getstr(query, "logs"))
order := Getstr(query, "order", "id desc")
csql.Where("loguser", c.Getstr(query, "loguser"))
csql.Where("readuser", c.Getstr(query, "readuser"))
csql.Where("types", c.Getstr(query, "types"))
csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
csql.Where("logs like", c.Getstr(query, "logs"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Logdb_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -38,9 +38,9 @@ func Logdb_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -49,7 +49,7 @@ func Logdb_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
field, fshow := c.CiyDB.GetField(csql)
ret["fshow"] = fshow
ret["field"] = field
}
@ -92,69 +92,69 @@ func Logdb_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Logdb_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p553d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p553d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_log")
csql := c.NewCiySQL("zc_log")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_log")
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_log")
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Logdb_multiread(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p553s") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p553s") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
csql := NewCiySQL("zc_log")
csql := c.NewCiySQL("zc_log")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
rowid := Toint(row["id"])
rowid := c.Toint(row["id"])
updata := map[string]any{}
updata["readuser"] = userid
csql = NewCiySQL("zc_log")
csql = c.NewCiySQL("zc_log")
csql.Where("id", rowid)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
@ -163,9 +163,9 @@ func Logdb_multiread(w http.ResponseWriter, r *http.Request) bool {
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -8,61 +8,61 @@ import (
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Logfile_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
logfiles := []string{}
if Log.Filename != "" {
logfiles = append(logfiles, Log.Filename)
if c.Log.Filename != "" {
logfiles = append(logfiles, c.Log.Filename)
}
ret := map[string]any{}
ret["logfiles"] = logfiles
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Logfile_viewlog(w http.ResponseWriter, r *http.Request) bool {
if !SSEInit(w) {
if !c.SSEInit(w) {
w.Write([]byte("不支持SSE Flush"))
return false
}
post := NewCiyPost(w, r)
_, err := admin.Verifyuser(CiyDB, post)
post := c.NewCiyPost(w, r)
_, err := admin.Verifyuser(c.CiyDB, post)
if err != nil {
SSESend_event(w, "请重新登录")
c.SSESend_event(w, "请重新登录")
return false
}
param := post.Get("param")
buf, fsize, err := readfile(param, -102400)
if err != nil {
SSESend_event(w, err.Error())
c.SSESend_event(w, err.Error())
return false
}
SSESend_event(w, param+", Size:"+Tostr(fsize))
c.SSESend_event(w, param+", Size:"+c.Tostr(fsize))
lines := strings.Split(string(buf), "\n")
for _, line := range lines {
SSESend_data(w, line)
c.SSESend_data(w, line)
}
for {
buf, fsize, err = readfile(param, fsize)
if err != nil {
SSESend_event(w, err.Error())
c.SSESend_event(w, err.Error())
return false
}
if !SSESend_event(w, param+", Size:"+Tostr(fsize)) {
if !c.SSESend_event(w, param+", Size:"+c.Tostr(fsize)) {
return true
}
if buf == nil {
Sleep(1)
c.Sleep(1)
} else {
lines := strings.Split(string(buf), "\n")
for _, line := range lines {
if !SSESend_data(w, line) {
if !c.SSESend_data(w, line) {
return true
}
}

View File

@ -6,41 +6,41 @@ import (
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Menu_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
rsuser, _ := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
rsuser, _ := admin.Verifyfast(c.CiyDB, post)
if rsuser == nil {
return false
}
csql := NewCiySQL("zc_icon")
csql := c.NewCiySQL("zc_icon")
csql.Where("icontarget", 10)
csql.Column("targetid as id,icon")
iconrows, _, err := CiyDB.Get(csql)
iconrows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
icons := Mapid2data(iconrows)
csql = NewCiySQL("zc_menu")
icons := c.Mapid2data(iconrows)
csql = c.NewCiySQL("zc_menu")
csql.Order("csort desc,id")
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到menu读取错误", err)
return c.ErrJSON(w, "遇到menu读取错误", err)
}
for i, row := range rows {
if v, ok := icons[Toint(row["id"])]; ok {
if v, ok := icons[c.Toint(row["id"])]; ok {
rows[i]["icon"] = v["icon"]
}
}
ret := map[string]any{}
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, -1, "_btn", "操作")
FieldAdd(&field, &fshow, 2, "demo", "原型")
FieldAdd(&field, &fshow, 1, "icon", "|图标|")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
c.FieldAdd(&field, &fshow, 2, "demo", "原型")
c.FieldAdd(&field, &fshow, 1, "icon", "|图标|")
field["url"]["thwidth"] = "20em"
field["csort"]["thwidth"] = "5em"
ret["fshow"] = fshow
@ -64,51 +64,51 @@ func Menu_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Menu_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p903u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p903u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写菜单名称")
return c.ErrJSON(w, "请填写菜单名称")
}
upid := post.Getint("upid")
csort := post.Getint("csort")
isuse := post.Getint("isuse")
csql := NewCiySQL("zc_menu")
csql := c.NewCiySQL("zc_menu")
csql.Where("id", id)
datarow, err := CiyDB.Getone(csql)
datarow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
demo := ""
url := ""
urldb := ""
pow := ""
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Where("upid", id)
downcnt := Toint(CiyDB.Get1(csql))
downcnt := c.Toint(c.CiyDB.Get1(csql))
if downcnt == 0 {
url = post.Get("url", CIYPOST_ALLOW_ALL)
url = post.Get("url", c.CIYPOST_ALLOW_ALL)
urldb = url
demo = post.Get("demo")
if demo != "" {
if demo[0] != ':' && demo[0] != 'a' && demo[0] != 'm' && demo[0] != 'c' {
return ErrJSON(w, "原型前缀错误,支持[:acm]")
return c.ErrJSON(w, "原型前缀错误,支持[:acm]")
}
urldb += "~" + demo
}
pow = post.Get("pow")
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["name"] = name
updata["isuse"] = isuse
@ -116,122 +116,122 @@ func Menu_update(w http.ResponseWriter, r *http.Request) bool {
updata["csort"] = csort
updata["url"] = urldb
updata["pow"] = pow
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_menu", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_menu", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["url"] = url
ret["demo"] = demo
ret["pow"] = pow
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Menu_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p903d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p903d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_menu")
csql := c.NewCiySQL("zc_menu")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "遇到读取错误", err)
return c.ErrJSON(w, "遇到读取错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
delid := c.Toint(row["id"])
if delid >= 10 {
Delcheck(CiyDB, delid, "zc_menu", "upid", Tostr(row["name"]))
c.Delcheck(c.CiyDB, delid, "zc_menu", "upid", c.Tostr(row["name"]))
}
Delme(CiyDB, delid, "zc_menu")
admin.SaveLogDB(CiyDB, "zc_menu", row, nil)
c.Delme(c.CiyDB, delid, "zc_menu")
admin.SaveLogDB(c.CiyDB, "zc_menu", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Menu_modifyupid(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p903u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p903u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
newupid := post.Getint("newupid")
csql := NewCiySQL("zc_menu")
csql := c.NewCiySQL("zc_menu")
csql.Where("id", id)
datarow, err := CiyDB.Getone(csql)
datarow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["url"] = ""
updata["pow"] = ""
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Where("id", newupid)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新new失败:%v", err)
}
updata = map[string]any{}
updata["upid"] = newupid
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return fmt.Errorf("更新id失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_menu", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_menu", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Menu_multiadd(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p903u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p903u") {
return c.ErrJSON(w, "您未被授权操作")
}
upid := post.Getint("upid")
multi := strings.Split(post.Get("multi"), "\n")
cnt := 0
err := CiyDB.Tran(func() error {
err := c.CiyDB.Tran(func() error {
for _, m := range multi {
if m == "" {
continue
@ -253,89 +253,89 @@ func Menu_multiadd(w http.ResponseWriter, r *http.Request) bool {
updata["isuse"] = 1
updata["upid"] = upid
updata["csort"] = 10
csql := NewCiySQL("zc_menu")
_, err := CiyDB.Insert(csql, updata)
csql := c.NewCiySQL("zc_menu")
_, err := c.CiyDB.Insert(csql, updata)
if err != nil {
return fmt.Errorf("新增失败:%v", err)
}
cnt++
admin.SaveLogDB(CiyDB, "zc_menu", nil, updata)
admin.SaveLogDB(c.CiyDB, "zc_menu", nil, updata)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
if cnt == 0 {
return ErrJSON(w, "没有任何新增")
return c.ErrJSON(w, "没有任何新增")
}
updata := map[string]any{}
updata["url"] = ""
updata["pow"] = ""
csql := NewCiySQL("zc_menu")
csql := c.NewCiySQL("zc_menu")
csql.Where("id", upid)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if err != nil {
return ErrJSON(w, "更新upid失败:"+err.Error())
return c.ErrJSON(w, "更新upid失败:"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}
func Menu_seticon(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p903u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p903u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
svg := post.Get("svg", CIYPOST_ALLOW_ALL)
svg := post.Get("svg", c.CIYPOST_ALLOW_ALL)
if svg != "" && !strings.HasPrefix(svg, "<svg ") {
return ErrJSON(w, "svg格式错误")
return c.ErrJSON(w, "svg格式错误")
}
csql := NewCiySQL("zc_icon")
csql := c.NewCiySQL("zc_icon")
csql.Where("icontarget", 10)
csql.Where("targetid", id)
datarow, err := CiyDB.Getone(csql)
datarow, err := c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
if datarow == nil && svg == "" {
return SuccJSON(w)
return c.SuccJSON(w)
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
msg := ""
if svg == "" {
csql = NewCiySQL("zc_icon")
csql = c.NewCiySQL("zc_icon")
csql.Where("id", datarow["id"])
_, err = CiyDB.Delete(csql)
_, err = c.CiyDB.Delete(csql)
msg = "删除图标"
} else {
msg = "更新图标"
updata := map[string]any{}
updata["icon"] = svg
if datarow != nil {
csql = NewCiySQL("zc_icon")
csql = c.NewCiySQL("zc_icon")
csql.Where("id", datarow["id"])
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
updata["icontarget"] = 10
updata["targetid"] = id
csql = NewCiySQL("zc_icon")
_, err = CiyDB.Insert(csql, updata)
csql = c.NewCiySQL("zc_icon")
_, err = c.CiyDB.Insert(csql, updata)
}
}
if err != nil {
return fmt.Errorf("操作失败:%v", err)
}
admin.SaveLog(CiyDB, "zc_menu", "Upd="+Tostr(id)+"_|@|_icon="+msg)
admin.SaveLog(c.CiyDB, "zc_menu", "Upd="+c.Tostr(id)+"_|@|_icon="+msg)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}

View File

@ -6,23 +6,23 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func mock_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func mock_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_ymock")
csql.Where("name like", Getstr(query, "name"))
csql.Where("upath like", Getstr(query, "upath"))
csql.Where("ufunc like", Getstr(query, "ufunc"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_ymock")
csql.Where("name like", c.Getstr(query, "name"))
csql.Where("upath like", c.Getstr(query, "upath"))
csql.Where("ufunc like", c.Getstr(query, "ufunc"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Mock_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -30,9 +30,9 @@ func Mock_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
rows = append(rows, map[string]any{
"id": 0,
@ -50,9 +50,9 @@ func Mock_init(w http.ResponseWriter, r *http.Request) bool {
if post.Getbool("field") {
field := map[string]map[string]any{}
fshow := ""
FieldAdd(&field, &fshow, -1, "mock", "Mock")
FieldAdd(&field, &fshow, -1, "mockjson", "JSON")
FieldAdd(&field, &fshow, -1, "_btn", "操作")
c.FieldAdd(&field, &fshow, -1, "mock", "Mock")
c.FieldAdd(&field, &fshow, -1, "mockjson", "JSON")
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
field["mock"]["thwidth"] = "20em"
field["mockjson"]["thwidth"] = "50em"
ret["fshow"] = fshow
@ -82,57 +82,57 @@ func Mock_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Mock_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p911u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p911u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
name := post.Get("name")
upath := post.Get("upath")
if upath == "" {
return ErrJSON(w, "请填写类空间")
return c.ErrJSON(w, "请填写类空间")
}
ufunc := post.Get("ufunc")
if ufunc == "" {
return ErrJSON(w, "请填写函数名")
return c.ErrJSON(w, "请填写函数名")
}
mockjson := post.Get("mockjson", CIYPOST_ALLOW_ALL)
mockjson := post.Get("mockjson", c.CIYPOST_ALLOW_ALL)
if mockjson == "" {
return ErrJSON(w, "请填写JSON")
return c.ErrJSON(w, "请填写JSON")
}
if mockjson[0:7] != "http://" {
var jsn any
err := json.Unmarshal([]byte(mockjson), &jsn)
if err != nil {
return ErrJSON(w, "JSON格式错误", err)
return c.ErrJSON(w, "JSON格式错误", err)
}
}
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_ymock")
csql := c.NewCiySQL("zc_ymock")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_ymock")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_ymock")
csql.Where("upath", upath)
csql.Where("ufunc", ufunc)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("类函数重复")
}
@ -140,13 +140,13 @@ func Mock_update(w http.ResponseWriter, r *http.Request) bool {
updata["upath"] = upath
updata["ufunc"] = ufunc
updata["mockjson"] = mockjson
csql = NewCiySQL("zc_ymock")
csql = c.NewCiySQL("zc_ymock")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
updata["addtimes"] = Tostamp()
id, err = CiyDB.Insert(csql, updata)
updata["addtimes"] = c.Tostamp()
id, err = c.CiyDB.Insert(csql, updata)
}
updata["id"] = id
if err != nil {
@ -155,44 +155,44 @@ func Mock_update(w http.ResponseWriter, r *http.Request) bool {
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Mock_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p911u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p911u") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_ymock")
csql := c.NewCiySQL("zc_ymock")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_ymock")
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_ymock")
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -4,23 +4,23 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func online_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func online_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_online")
csql.Where("ip like", Getstr(query, "ip"))
csql.Where("user", Getstr(query, "user"))
csql.Where_daterange("addtimes", Getstr(query, "addtimes"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_online")
csql.Where("ip like", c.Getstr(query, "ip"))
csql.Where("user", c.Getstr(query, "user"))
csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Online_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -28,9 +28,9 @@ func Online_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -39,8 +39,8 @@ func Online_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
ret["fshow"] = fshow
ret["field"] = field
}
@ -68,69 +68,69 @@ func Online_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Online_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p505d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p505d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_online")
csql := c.NewCiySQL("zc_online")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_online")
admin.SaveLogDB(CiyDB, "zc_online", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_online")
admin.SaveLogDB(c.CiyDB, "zc_online", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Online_logout(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p505o") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p505o") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
csql := NewCiySQL("zc_online")
csql := c.NewCiySQL("zc_online")
csql.Where("id", id)
rows, _ := CiyDB.Getone(csql)
rows, _ := c.CiyDB.Getone(csql)
if rows == nil {
return ErrJSON(w, "记录不存在")
return c.ErrJSON(w, "记录不存在")
}
if rows["user"] == userid {
return ErrJSON(w, "不能下线自己")
return c.ErrJSON(w, "不能下线自己")
}
CiyDB.Execute("update zc_online set sid='' where id=?", id)
c.CiyDB.Execute("update zc_online set sid='' where id=?", id)
updata := map[string]any{}
updata["id"] = id
updata["sid"] = ""
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -5,21 +5,21 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func power_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func power_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_power")
csql.Where("types like", Getstr(query, "types"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_power")
csql.Where("types like", c.Getstr(query, "types"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Power_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -27,9 +27,9 @@ func Power_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
rows = append(rows, map[string]any{
"id": 0,
@ -48,12 +48,12 @@ func Power_init(w http.ResponseWriter, r *http.Request) bool {
if post.Getbool("field") {
field := map[string]map[string]any{}
fshow := ""
FieldAdd(&field, &fshow, -1, "groupname", "分组名")
FieldAdd(&field, &fshow, -1, "name", "模块名称")
FieldAdd(&field, &fshow, -1, "scope", "模块代码")
FieldAdd(&field, &fshow, -1, "powers", "权限项")
FieldAdd(&field, &fshow, -1, "csort", "排序")
FieldAdd(&field, &fshow, -1, "_btn", "操作")
c.FieldAdd(&field, &fshow, -1, "groupname", "分组名")
c.FieldAdd(&field, &fshow, -1, "name", "模块名称")
c.FieldAdd(&field, &fshow, -1, "scope", "模块代码")
c.FieldAdd(&field, &fshow, -1, "powers", "权限项")
c.FieldAdd(&field, &fshow, -1, "csort", "排序")
c.FieldAdd(&field, &fshow, -1, "_btn", "操作")
field["groupname"]["thwidth"] = "8em"
field["name"]["thwidth"] = "8em"
field["scope"]["thwidth"] = "6em"
@ -86,53 +86,53 @@ func Power_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Power_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p910u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p910u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
groupname := post.Get("groupname")
if groupname == "" {
return ErrJSON(w, "请填写分组名")
return c.ErrJSON(w, "请填写分组名")
}
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写模块名称")
return c.ErrJSON(w, "请填写模块名称")
}
scope := post.Get("scope")
if scope == "" {
return ErrJSON(w, "请填写模块代码")
return c.ErrJSON(w, "请填写模块代码")
}
powers := post.Get("powers")
if powers == "" {
return ErrJSON(w, "请填写权限项")
return c.ErrJSON(w, "请填写权限项")
}
csort := post.Getint("csort")
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_power")
csql := c.NewCiySQL("zc_power")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
updata := map[string]any{}
err = CiyDB.Tran(func() error {
var csql *CiySQL
csql = NewCiySQL("zc_power")
err = c.CiyDB.Tran(func() error {
var csql *c.CiySQL
csql = c.NewCiySQL("zc_power")
csql.Where("scope", scope)
csql.Column("id")
chkid := Toint(CiyDB.Get1(csql))
chkid := c.Toint(c.CiyDB.Get1(csql))
if chkid > 0 && ((id > 0 && chkid != id) || id == 0) {
return fmt.Errorf("模块代码重复")
}
@ -141,60 +141,60 @@ func Power_update(w http.ResponseWriter, r *http.Request) bool {
updata["scope"] = scope
updata["powers"] = powers
updata["csort"] = csort
csql = NewCiySQL("zc_power")
csql = c.NewCiySQL("zc_power")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
} else {
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
}
updata["id"] = id
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_power", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_power", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["data"] = updata
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Power_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p910u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p910u") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_power")
csql := c.NewCiySQL("zc_power")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_power")
admin.SaveLogDB(CiyDB, "zc_power", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_power")
admin.SaveLogDB(c.CiyDB, "zc_power", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -4,22 +4,22 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func role_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func role_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_role")
csql.Where("name like", Getstr(query, "name"))
csql.Where("memo like", Getstr(query, "memo"))
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_role")
csql.Where("name like", c.Getstr(query, "name"))
csql.Where("memo like", c.Getstr(query, "memo"))
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Role_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -27,9 +27,9 @@ func Role_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -38,8 +38,8 @@ func Role_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
FieldAdd(&field, &fshow, 0, "_btn", "操作")
field, fshow := c.CiyDB.GetField(csql)
c.FieldAdd(&field, &fshow, 0, "_btn", "操作")
field["memo"]["thwidth"] = "25em"
ret["fshow"] = fshow
ret["field"] = field
@ -62,42 +62,42 @@ func Role_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Role_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p502d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p502d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_role")
csql := c.NewCiySQL("zc_role")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delcheck(CiyDB, delid, "zc_admin", "roleid", "用户")
Delme(CiyDB, delid, "zc_role")
admin.SaveLogDB(CiyDB, "zc_role", row, nil)
delid := c.Toint(row["id"])
c.Delcheck(c.CiyDB, delid, "zc_admin", "roleid", "用户")
c.Delme(c.CiyDB, delid, "zc_role")
admin.SaveLogDB(c.CiyDB, "zc_role", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -6,51 +6,51 @@ import (
"strings"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Role_u_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
id := post.Getint("id")
var err error
ret := map[string]any{}
csql := NewCiySQL("zc_role")
csql := c.NewCiySQL("zc_role")
csql.Where("id", id)
ret["data"], err = CiyDB.Getone(csql)
ret["data"], err = c.CiyDB.Getone(csql)
if err != nil {
return ErrJSON(w, "读取role失败:"+err.Error())
return c.ErrJSON(w, "读取role失败:"+err.Error())
}
csql = NewCiySQL("zc_menu")
csql = c.NewCiySQL("zc_menu")
csql.Where("isuse", 1).Order("csort desc,id")
ret["pcmenu"], _, err = CiyDB.Get(csql)
ret["pcmenu"], _, err = c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取menu失败:"+err.Error())
return c.ErrJSON(w, "读取menu失败:"+err.Error())
}
csql = NewCiySQL("zc_power")
csql = c.NewCiySQL("zc_power")
csql.Order("csort desc,id")
ret["powers"], _, err = CiyDB.Get(csql)
ret["powers"], _, err = c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取power失败:"+err.Error())
return c.ErrJSON(w, "读取power失败:"+err.Error())
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Role_u_update(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p502u") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p502u") {
return c.ErrJSON(w, "您未被授权操作")
}
id := post.Getint("id")
name := post.Get("name")
if name == "" {
return ErrJSON(w, "请填写角色名称")
return c.ErrJSON(w, "请填写角色名称")
}
memo := post.Get("memo")
pman := post.Get("pman")
@ -81,40 +81,40 @@ func Role_u_update(w http.ResponseWriter, r *http.Request) bool {
var err error
var datarow map[string]any
if id > 0 {
csql := NewCiySQL("zc_role")
csql := c.NewCiySQL("zc_role")
csql.Where("id", id)
datarow, err = CiyDB.Getone(csql)
datarow, err = c.CiyDB.Getone(csql)
if datarow == nil {
return ErrJSON(w, "数据不存在", err)
return c.ErrJSON(w, "数据不存在", err)
}
}
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
updata := map[string]any{}
updata["name"] = name
updata["power"] = power
updata["memo"] = memo
updata["uptimes"] = Tostamp()
csql := NewCiySQL("zc_role")
updata["uptimes"] = c.Tostamp()
csql := c.NewCiySQL("zc_role")
if id > 0 {
csql.Where("id", id)
_, err = CiyDB.Update(csql, updata)
_, err = c.CiyDB.Update(csql, updata)
if datarow["power"] != power {
CiyDB.Execute("update zc_admin set power=? where roleid=?", power, id)
CiyDB.Execute("update zc_online set usrchg=2 where user in (select id from zc_admin where roleid=?)", id)
c.CiyDB.Execute("update zc_admin set power=? where roleid=?", power, id)
c.CiyDB.Execute("update zc_online set usrchg=2 where user in (select id from zc_admin where roleid=?)", id)
}
} else {
id, err = CiyDB.Insert(csql, updata)
id, err = c.CiyDB.Insert(csql, updata)
updata["id"] = id
}
if err != nil {
return fmt.Errorf("更新失败:%v", err)
}
admin.SaveLogDB(CiyDB, "zc_role", datarow, updata)
admin.SaveLogDB(c.CiyDB, "zc_role", datarow, updata)
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
return SuccJSON(w)
return c.SuccJSON(w)
}

View File

@ -5,22 +5,22 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Statsdb_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
rows, err := CiyDB.Getraw("show global status")
rows, err := c.CiyDB.Getraw("show global status")
if err != nil {
return false
}
stats := map[string]map[string]any{}
for _, row := range rows {
name := Tostr(row["Variable_name"])
name := c.Tostr(row["Variable_name"])
val := row["Value"]
help := ""
if name == "Aborted_clients" {
@ -278,20 +278,20 @@ func Statsdb_init(w http.ResponseWriter, r *http.Request) bool {
} else if name == "Uptime_since_flush_status" {
help = "最近一次使用FLUSH STATUS 的时间(以秒为单位)"
}
if len(Tostr(val)) > 15 {
if len(c.Tostr(val)) > 15 {
stats[name] = map[string]any{"value": "--", "help": fmt.Sprintf("<kbd>%s</kbd><br/>%s", val, help)}
} else {
stats[name] = map[string]any{"value": val, "help": help}
}
}
ret := map[string]any{}
uptime := Toint(stats["Uptime"]["value"])
uptime := c.Toint(stats["Uptime"]["value"])
if uptime > 0 {
qps := Tofloat(stats["Questions"]["value"]) / float64(uptime)
tps := Tofloat(Toint(stats["Com_commit"]["value"])+Toint(stats["Com_rollback"]["value"])) / float64(uptime)
qps := c.Tofloat(stats["Questions"]["value"]) / float64(uptime)
tps := c.Tofloat(c.Toint(stats["Com_commit"]["value"])+c.Toint(stats["Com_rollback"]["value"])) / float64(uptime)
ret["qps"] = qps
ret["tps"] = tps
}
ret["stats"] = stats
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -5,25 +5,25 @@ import (
"net/http"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func statsfunc_setwhere(post *CiyPost) (map[string]any, *CiySQL) {
func statsfunc_setwhere(post *c.CiyPost) (map[string]any, *c.CiySQL) {
query := post.Getobj("query")
csql := NewCiySQL("zc_stats")
csql.Where_daterange("addtimes", Getstr(query, "addtimes"))
csql.Where_numrange("func_succ", Getstr(query, "func_succ_1"), Getstr(query, "func_succ_2"), 1)
csql.Where_numrange("func_fail", Getstr(query, "func_fail_1"), Getstr(query, "func_fail_2"), 1)
csql.Where_numrange("func_rollback", Getstr(query, "func_rollback_1"), Getstr(query, "func_rollback_2"), 1)
csql.Where_numrange("func_runms", Getstr(query, "func_runms_1"), Getstr(query, "func_runms_2"), 1)
order := Getstr(query, "order", "id desc")
csql := c.NewCiySQL("zc_stats")
csql.Where_daterange("addtimes", c.Getstr(query, "addtimes"))
csql.Where_numrange("func_succ", c.Getstr(query, "func_succ_1"), c.Getstr(query, "func_succ_2"), 1)
csql.Where_numrange("func_fail", c.Getstr(query, "func_fail_1"), c.Getstr(query, "func_fail_2"), 1)
csql.Where_numrange("func_rollback", c.Getstr(query, "func_rollback_1"), c.Getstr(query, "func_rollback_2"), 1)
csql.Where_numrange("func_runms", c.Getstr(query, "func_runms_1"), c.Getstr(query, "func_runms_2"), 1)
order := c.Getstr(query, "order", "id desc")
csql.Order(order)
query["order"] = order
return query, csql
}
func Statsfunc_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
@ -31,9 +31,9 @@ func Statsfunc_init(w http.ResponseWriter, r *http.Request) bool {
pageno := post.Getint("pageno", 1)
pagecount := post.Getint("pagecount", 10)
csql.Limit(pageno, pagecount)
rows, mainrowcount, err := CiyDB.Get(csql, post.Getint("count"))
rows, mainrowcount, err := c.CiyDB.Get(csql, post.Getint("count"))
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
ret := map[string]any{}
ret["where"] = where
@ -42,7 +42,7 @@ func Statsfunc_init(w http.ResponseWriter, r *http.Request) bool {
ret["count"] = mainrowcount
ret["list"] = rows
if post.Getbool("field") {
field, fshow := CiyDB.GetField(csql)
field, fshow := c.CiyDB.GetField(csql)
ret["fshow"] = fshow
ret["field"] = field
}
@ -81,61 +81,61 @@ func Statsfunc_init(w http.ResponseWriter, r *http.Request) bool {
once["input"] = input
ret["once"] = once
}
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Statsfunc_del(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p550d") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p550d") {
return c.ErrJSON(w, "您未被授权操作")
}
ids := post.Get("ids")
if ids == "" {
return ErrJSON(w, "请选择至少一条")
return c.ErrJSON(w, "请选择至少一条")
}
csql := NewCiySQL("zc_stats")
csql := c.NewCiySQL("zc_stats")
csql.Where("id in", ids)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取数据错误", err)
return c.ErrJSON(w, "读取数据错误", err)
}
vids := make([]int, 0)
err = CiyDB.Tran(func() error {
err = c.CiyDB.Tran(func() error {
for _, row := range rows {
delid := Toint(row["id"])
Delme(CiyDB, delid, "zc_stats")
admin.SaveLogDB(CiyDB, "zc_stats", row, nil)
delid := c.Toint(row["id"])
c.Delme(c.CiyDB, delid, "zc_stats")
admin.SaveLogDB(c.CiyDB, "zc_stats", row, nil)
vids = append(vids, delid)
}
return nil
})
if err != nil {
return ErrJSON(w, "事务"+err.Error())
return c.ErrJSON(w, "事务"+err.Error())
}
ret := map[string]any{}
ret["ids"] = vids
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func Statsfunc_exportxls(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
if admin.Nopower(CiyDB, userid, "p550e") {
return ErrJSON(w, "您未被授权操作")
if admin.Nopower(c.CiyDB, userid, "p550e") {
return c.ErrJSON(w, "您未被授权操作")
}
_, csql := statsfunc_setwhere(post)
rows, _, err := CiyDB.Get(csql)
rows, _, err := c.CiyDB.Get(csql)
if err != nil {
return ErrJSON(w, "读取错误", err)
return c.ErrJSON(w, "读取错误", err)
}
if len(rows) > 10000 {
return ErrJSON(w, "将导出"+Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
return c.ErrJSON(w, "将导出"+c.Tostr(len(rows))+"条不建议超过1万条请筛选缩小范围", err)
}
fields := []map[string]string{}
fields = append(fields, map[string]string{"style": "c", "width": "60", "field": "id", "name": "行码"})
@ -173,16 +173,16 @@ func Statsfunc_exportxls(w http.ResponseWriter, r *http.Request) bool {
if val, ok := row[field]; ok {
var str string
if field == "id" {
str = EnID(Toint(val))
str = c.EnID(c.Toint(val))
} else if field == "addtimes" {
t := Toint(val)
t := c.Toint(val)
if t <= 0 {
str = "--"
} else {
str = Todate(t, "Y-m-d H:i")
str = c.Todate(t, "Y-m-d H:i")
}
} else {
str = Tostr(val)
str = c.Tostr(val)
}
dat = append(dat, str)
} else {
@ -199,17 +199,17 @@ func Statsfunc_exportxls(w http.ResponseWriter, r *http.Request) bool {
param["toptitle"] = "系统健康数据报表"
total := []map[string]any{} //单行统计数据
// total = append(total, map[string]any{"style": "l", "name": "合计", "merge": 5})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=SUM(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// total = append(total, map[string]any{"style": "r", "name": "=MAX(R[-" + c.Tostr(len(datas)) + "]C:R[-1]C)"})
// param["rowstop"] = `<Row ss:Height="45"><Cell ss:MergeAcross="7" ss:StyleID="cap"><Data ss:Type="String">众产Ciyon</Data></Cell></Row>`
// param["rowsfooter"] = `<Row><Cell ss:MergeAcross="2"><Data ss:Type="String" ss:StyleID="r">总计</Data></Cell><Cell ss:Formula="=SUM(R[-2]C:R[-1]C)"><Data ss:Type="Number"></Data></Cell></Row>`
str := General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + Todate(-1, "Ymd_His") + Tostr(rand.Intn(8999)+1000) + ".xls"
err = FileSave(CiyWebDir+filename, str)
str := c.General_excel_xml(fields, datas, param, total)
filename := "/ud/tmp/" + c.Todate(-1, "Ymd_His") + c.Tostr(rand.Intn(8999)+1000) + ".xls"
err = c.FileSave(c.CiyWebDir+filename, str)
if err != nil {
return ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
return c.ErrJSON(w, "导出保存文件错误:%v[%v]", err, filename)
}
ret := map[string]any{}
ret["url"] = filename
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -5,18 +5,18 @@ import (
"runtime"
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
)
func Statssrv_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
stats := map[string]map[string]any{}
stats["Go版本"] = map[string]any{"value": runtime.Version()}
stats["程序版本"] = map[string]any{"value": CiyVars.Version}
stats["程序版本"] = map[string]any{"value": c.CiyVars.Version}
stats["操作系统"] = map[string]any{"value": runtime.GOOS}
stats["CPU数量"] = map[string]any{"value": runtime.NumCPU()}
@ -34,5 +34,5 @@ func Statssrv_init(w http.ResponseWriter, r *http.Request) bool {
ret := map[string]any{}
ret["stats"] = stats
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -1,7 +1,7 @@
package admin
import (
. "ciyon/zciyon"
c "ciyon/zciyon"
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
@ -16,50 +16,50 @@ func Upload_upload(w http.ResponseWriter, r *http.Request) bool {
}
extselect := "exts"
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
path := post.Get("pathfile")
file := post.Getfile()
// if file.content == nil {
// return ErrJSON(w, fmt.Sprintf("文件上传错误"))
// return c.ErrJSON(w, fmt.Sprintf("文件上传错误"))
// }
// if file.Size != len(file.content) {
// return ErrJSON(w, fmt.Sprintf("文件大小不匹配:%d!=%d", file.Size, len(file.content)))
// return c.ErrJSON(w, fmt.Sprintf("文件大小不匹配:%d!=%d", file.Size, len(file.content)))
// }
_, extfile := Fileext(file.Filename)
_, extfile := c.Fileext(file.Filename)
if extselect == "exts" {
if In_array(uploadcfg[extselect], extfile) == -1 {
return ErrJSON(w, "不允许上传"+extfile+"类型文件")
if c.In_array(uploadcfg[extselect], extfile) == -1 {
return c.ErrJSON(w, "不允许上传"+extfile+"类型文件")
}
} else {
if In_array(uploadcfg[extselect], extfile) > -1 {
return ErrJSON(w, "禁止上传"+extfile+"类型文件")
if c.In_array(uploadcfg[extselect], extfile) > -1 {
return c.ErrJSON(w, "禁止上传"+extfile+"类型文件")
}
}
json, err := SaveUploadFile(path, file)
json, err := c.SaveUploadFile(path, file)
if err != nil {
return ErrJSON(w, err.Error())
return c.ErrJSON(w, err.Error())
}
return SuccJSON(w, json)
return c.SuccJSON(w, json)
}
func Upload_s3(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
path := post.Get("pathfile")
storselect := post.Get("storselect")
accessKey := CiyVars.Ini.GetKey("s3"+storselect, "access", "")
secretKey := CiyVars.Ini.GetKey("s3"+storselect, "secret", "")
endpoint := CiyVars.Ini.GetKey("s3"+storselect, "endpoint", "")
region := CiyVars.Ini.GetKey("s3"+storselect, "region", "")
bucket := CiyVars.Ini.GetKey("s3"+storselect, "bucket", "")
acl := CiyVars.Ini.GetKey("s3"+storselect, "acl", "")
accessKey := c.CiyVars.Ini.GetKey("s3"+storselect, "access", "")
secretKey := c.CiyVars.Ini.GetKey("s3"+storselect, "secret", "")
endpoint := c.CiyVars.Ini.GetKey("s3"+storselect, "endpoint", "")
region := c.CiyVars.Ini.GetKey("s3"+storselect, "region", "")
bucket := c.CiyVars.Ini.GetKey("s3"+storselect, "bucket", "")
acl := c.CiyVars.Ini.GetKey("s3"+storselect, "acl", "")
objectKey := "ud/" + path
vsha256 := "UNSIGNED-PAYLOAD"
zdate := time.Now().UTC().Format("20060102T150405Z")
@ -96,7 +96,7 @@ func Upload_s3(w http.ResponseWriter, r *http.Request) bool {
headers["x-amz-content-sha256"] = vsha256
headers["x-amz-date"] = zdate
ret["headers"] = headers
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}
func sign(key []byte, msg string) []byte {

View File

@ -1,22 +1,21 @@
package admin
import (
c "ciyon/zciyon"
"net/http"
. "ciyon/zciyon"
)
func Welcome_init(w http.ResponseWriter, r *http.Request) bool {
post := NewCiyPost(w, r)
_, userid := Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := Verifyfast(c.CiyDB, post)
if userid == 0 {
return false
}
ret := map[string]any{}
works := []map[string]any{}
// csql := NewCiySQL("zc_urole")
// csql := c.NewCiySQL("zc_urole")
// csql.Where("auditstatus", 20)
// cnt := Toint(CiyDB.Get1(csql))
// cnt := c.Toint(c.CiyDB.Get1(csql))
// if cnt > 0 {
// works = append(works, map[string]any{
// "title": fmt.Sprintf("权限待审批%d条", cnt),
@ -25,5 +24,5 @@ func Welcome_init(w http.ResponseWriter, r *http.Request) bool {
// })
// }
ret["works"] = works
return SuccJSON(w, ret)
return c.SuccJSON(w, ret)
}

View File

@ -2,19 +2,19 @@ package wsdemo
import (
"ciyon/web/admin"
. "ciyon/zciyon"
c "ciyon/zciyon"
"fmt"
"net/http"
)
func Wsdemo(w http.ResponseWriter, r *http.Request) bool {
ws, err := NewCiyWebsocket(w, r)
ws, err := c.NewCiyWebsocket(w, r)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return false
}
post := NewCiyPost(w, r)
_, userid := admin.Verifyfast(CiyDB, post)
post := c.NewCiyPost(w, r)
_, userid := admin.Verifyfast(c.CiyDB, post)
if userid == 0 {
ws.SendFail(0, "请重新登录")
ws.Close()
@ -26,7 +26,7 @@ func Wsdemo(w http.ResponseWriter, r *http.Request) bool {
fmt.Println("Received message:", len(byt))
})
ws.OnMessageJSON(func(code, wsidx int, json map[string]any) {
fmt.Println("Received json:", Tostr(code), "_wsid:", Tostr(wsidx))
fmt.Println("Received json:", c.Tostr(code), "_wsid:", c.Tostr(wsidx))
ws.SendFail(wsidx, "err:Sdfasdf")
})
ws.OnError(func(error) {
@ -42,7 +42,7 @@ func Wsdemo(w http.ResponseWriter, r *http.Request) bool {
if ws.Isclose {
break
}
Sleep(5)
c.Sleep(5)
}
return true
}

View File

@ -3,7 +3,7 @@
package zciyon
//. "ciyon/zciyon"
//c "ciyon/zciyon"
func Ciy_sys_getdisk(drive string) map[string]int {
ret := map[string]int{}