Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 524a892480 | |||
| c420e23edb | |||
| 7419e03d67 | |||
| 9425544d1c | |||
| a8d78832df |
+9
-5
@@ -7,6 +7,7 @@ import (
|
||||
. "code.hoteas.com/golang/hotime/db"
|
||||
. "code.hoteas.com/golang/hotime/log"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"github.com/sirupsen/logrus"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
@@ -22,7 +23,6 @@ type Application struct {
|
||||
MakeCodeRouter map[string]*code.MakeCode
|
||||
MethodRouter
|
||||
Router
|
||||
ContextBase
|
||||
Error
|
||||
Log *logrus.Logger
|
||||
WebConnectLog *logrus.Logger
|
||||
@@ -237,10 +237,8 @@ func (that *Application) SetConfig(configPath ...string) {
|
||||
|
||||
}
|
||||
|
||||
that.Log = GetLog(that.Config.GetString("logFile"), true)
|
||||
that.Error = Error{Logger: that.Log}
|
||||
if that.Config.Get("webConnectLogShow") == nil || that.Config.GetBool("webConnectLogShow") {
|
||||
that.WebConnectLog = GetLog(that.Config.GetString("webConnectLogFile"), false)
|
||||
if that.Error.GetError() != nil {
|
||||
fmt.Println(that.Error.GetError().Error())
|
||||
}
|
||||
|
||||
//文件如果损坏则不写入配置防止配置文件数据丢失
|
||||
@@ -267,6 +265,12 @@ func (that *Application) SetConfig(configPath ...string) {
|
||||
|
||||
}
|
||||
|
||||
that.Log = GetLog(that.Config.GetString("logFile"), true)
|
||||
that.Error = Error{Logger: that.Log}
|
||||
if that.Config.Get("webConnectLogShow") == nil || that.Config.GetBool("webConnectLogShow") {
|
||||
that.WebConnectLog = GetLog(that.Config.GetString("webConnectLogFile"), false)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// SetConnectListener 连接判断,返回false继续传输至控制层,true则停止传输
|
||||
|
||||
@@ -57,45 +57,6 @@ var TptProject = Proj{
|
||||
}
|
||||
re[link] = that.Db.Get(column.GetString("link"), seStr, Map{"id": v})
|
||||
}
|
||||
|
||||
//权限设置
|
||||
if column["type"] == "auth" {
|
||||
|
||||
btes, err := ioutil.ReadFile(fileConfig.GetString("config"))
|
||||
|
||||
if err != nil {
|
||||
that.Display(4, "找不到权限配置文件")
|
||||
return
|
||||
}
|
||||
|
||||
conf := ObjToMap(string(btes))
|
||||
menus := conf.GetSlice("menus")
|
||||
|
||||
userAuth := re.GetMap("auth")
|
||||
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
if userAuth[v1.GetString("name")] != nil {
|
||||
v1["auth"] = userAuth[v1.GetString("name")]
|
||||
}
|
||||
if userAuth[v1.GetString("table")] != nil {
|
||||
v1["auth"] = userAuth[v1.GetString("table")]
|
||||
}
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1menus {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if userAuth[v2.GetString("name")] != nil {
|
||||
v2["auth"] = userAuth[v2.GetString("name")]
|
||||
}
|
||||
if userAuth[v2.GetString("table")] != nil {
|
||||
v2["auth"] = userAuth[v2.GetString("table")]
|
||||
}
|
||||
}
|
||||
}
|
||||
re["auth"] = menus.ToJsonString()
|
||||
//that.Display(0,menus)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//如果有table字段则代为link
|
||||
@@ -137,7 +98,7 @@ var TptProject = Proj{
|
||||
if v.GetString("link") != "" {
|
||||
|
||||
if v.GetString("link") == tableName && that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["parent_id"] != nil {
|
||||
if inData["parent_id"] == nil {
|
||||
if inData["parent_id"] == nil && data[v.GetString("name")] != nil {
|
||||
inData["parent_id"] = data.GetCeilInt64(v.GetString("name"))
|
||||
pre := that.Db.Get(v.GetString("link"), "parent_ids", Map{"id": data.GetCeilInt64(v.GetString("name"))})
|
||||
inData["parent_ids"] = pre.GetString("parent_ids")
|
||||
@@ -145,220 +106,89 @@ var TptProject = Proj{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if inData["auth"] != nil {
|
||||
if v.GetString("link") == tableName && that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["auth"] != nil {
|
||||
linkAuthMap := that.Db.Get(v.GetString("link"), "auth", Map{"id": data.GetCeilInt(v.GetString("name"))})
|
||||
linkAuth := linkAuthMap.GetMap("auth")
|
||||
|
||||
btes, err := ioutil.ReadFile(fileConfig.GetString("config"))
|
||||
|
||||
if err != nil {
|
||||
that.Display(4, "找不到配置文件")
|
||||
return
|
||||
}
|
||||
|
||||
conf := ObjToMap(string(btes))
|
||||
menus := conf.GetSlice("menus")
|
||||
|
||||
for _, v := range that.MakeCodeRouter[hotimeName].TableColumns[fileConfig.GetString("table")] {
|
||||
if v.GetString("link") != "" && that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["auth"] != nil {
|
||||
//linkHasAuth := that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["auth"]
|
||||
//if linkHasAuth != nil {
|
||||
|
||||
linkAuthMap := that.Db.Get(v.GetString("link"), "auth", Map{"id": data.GetCeilInt(v.GetString("name"))})
|
||||
linkAuth := linkAuthMap.GetMap("auth")
|
||||
myAuth := Map{}
|
||||
if linkAuth != nil {
|
||||
|
||||
for k1, _ := range menus {
|
||||
|
||||
v1 := menus.GetMap(k1)
|
||||
|
||||
if linkAuth[v1.GetString("table")] != nil {
|
||||
v1["auth"] = linkAuth[v1.GetString("table")]
|
||||
|
||||
}
|
||||
if linkAuth[v1.GetString("name")] != nil {
|
||||
v1["auth"] = linkAuth[v1.GetString("name")]
|
||||
|
||||
}
|
||||
|
||||
if v1.GetString("name") != "" && v1["auth"] == nil {
|
||||
v1["auth"] = Slice{"show"}
|
||||
|
||||
}
|
||||
|
||||
if v1.GetString("table") != "" && v1["auth"] == nil {
|
||||
v1["auth"] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(v1.GetString("table"))["auth"]
|
||||
}
|
||||
|
||||
if v1.GetString("table") != "" {
|
||||
myAuth[v1.GetString("table")] = v1
|
||||
}
|
||||
if v1.GetString("name") != "" {
|
||||
myAuth[v1.GetString("name")] = v1
|
||||
}
|
||||
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1menus {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if linkAuth[v2.GetString("table")] != nil {
|
||||
v2["auth"] = linkAuth[v2.GetString("table")]
|
||||
|
||||
}
|
||||
|
||||
if linkAuth[v2.GetString("name")] != nil {
|
||||
v2["auth"] = linkAuth[v2.GetString("name")]
|
||||
}
|
||||
|
||||
if v2.GetString("name") != "" && v2["auth"] == nil {
|
||||
v2["auth"] = Slice{"show"}
|
||||
|
||||
}
|
||||
|
||||
if v2.GetString("table") != "" && v2["auth"] == nil {
|
||||
v2["auth"] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(v2.GetString("table"))["auth"]
|
||||
}
|
||||
|
||||
if v2.GetString("table") != "" {
|
||||
myAuth[v2.GetString("table")] = v2
|
||||
}
|
||||
|
||||
if v2.GetString("name") != "" {
|
||||
myAuth[v2.GetString("name")] = v2
|
||||
}
|
||||
}
|
||||
}
|
||||
if linkAuth == nil {
|
||||
btes, err := ioutil.ReadFile(fileConfig.GetString("config"))
|
||||
if err != nil {
|
||||
that.Display(4, "找不到配置文件")
|
||||
return
|
||||
}
|
||||
linkAuth = Map{}
|
||||
conf := ObjToMap(string(btes))
|
||||
menus := conf.GetSlice("menus")
|
||||
|
||||
newAuth := inData.GetSlice("auth")
|
||||
toDB := Map{}
|
||||
for k1, _ := range newAuth {
|
||||
v1 := newAuth.GetMap(k1)
|
||||
|
||||
if myAuth.GetMap(v1.GetString("name")) == nil && myAuth.GetMap(v1.GetString("table")) == nil {
|
||||
continue
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
name := v1.GetString("name")
|
||||
if name == "" {
|
||||
name = v1.GetString("table")
|
||||
}
|
||||
if v1["auth"] != nil {
|
||||
linkAuth[name] = v1["auth"]
|
||||
|
||||
auth := Slice{}
|
||||
|
||||
str := v1.GetString("name")
|
||||
|
||||
if v1.GetString("table") != "" {
|
||||
|
||||
str = v1.GetString("table")
|
||||
}
|
||||
|
||||
if v1.GetString("auth") == "" {
|
||||
if myAuth.GetMap(str).GetString("table") != "" {
|
||||
auth = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(str).GetSlice("auth")
|
||||
if v1["auth"] == nil {
|
||||
table := that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)
|
||||
if table != nil {
|
||||
linkAuth[name] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)["auth"]
|
||||
} else {
|
||||
auth = Slice{"show"}
|
||||
linkAuth[name] = Slice{"show"}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"show"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"show"`) {
|
||||
auth = append(auth, "show")
|
||||
|
||||
}
|
||||
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"download"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"download"`) {
|
||||
auth = append(auth, "download")
|
||||
|
||||
}
|
||||
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"add"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"add"`) {
|
||||
auth = append(auth, "add")
|
||||
//continue
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"edit"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"edit"`) {
|
||||
auth = append(auth, "edit")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"delete"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"delete"`) {
|
||||
auth = append(auth, "delete")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"info"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"info"`) {
|
||||
auth = append(auth, "info")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
toDB[str] = auth
|
||||
v1Menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1Menus {
|
||||
v2 := v1Menus.GetMap(k2)
|
||||
|
||||
if myAuth.GetMap(v2.GetString("name")) == nil && myAuth.GetMap(v2.GetString("table")) == nil {
|
||||
menusChild := v1.GetSlice("menus")
|
||||
for k2, _ := range menusChild {
|
||||
v2 := menusChild.GetMap(k2)
|
||||
name := v2.GetString("name")
|
||||
if name == "" {
|
||||
name = v2.GetString("table")
|
||||
}
|
||||
if v2["auth"] != nil {
|
||||
linkAuth[name] = v2["auth"]
|
||||
continue
|
||||
}
|
||||
|
||||
auth := Slice{}
|
||||
|
||||
str := v2.GetString("name")
|
||||
|
||||
if v2.GetString("table") != "" {
|
||||
|
||||
str = v2.GetString("table")
|
||||
}
|
||||
|
||||
if v2.GetString("auth") == "" {
|
||||
if myAuth.GetMap(str).GetString("table") != "" {
|
||||
auth = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(str).GetSlice("auth")
|
||||
if v2["auth"] == nil {
|
||||
table := that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)
|
||||
if table != nil {
|
||||
linkAuth[name] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)["auth"]
|
||||
} else {
|
||||
auth = Slice{"show"}
|
||||
linkAuth[name] = Slice{"show"}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"show"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"show"`) {
|
||||
auth = append(auth, "show")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"download"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"download"`) {
|
||||
auth = append(auth, "download")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"add"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"add"`) {
|
||||
auth = append(auth, "add")
|
||||
//continue
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"edit"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"edit"`) {
|
||||
auth = append(auth, "edit")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"delete"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"delete"`) {
|
||||
auth = append(auth, "delete")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"info"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"info"`) {
|
||||
auth = append(auth, "info")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
toDB[str] = auth
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
inData["auth"] = toDB.ToJsonString()
|
||||
break
|
||||
}
|
||||
//}
|
||||
|
||||
toDB := Map{}
|
||||
newAuth := inData.GetMap("auth")
|
||||
if newAuth == nil {
|
||||
inData["auth"] = linkAuth.ToJsonString()
|
||||
continue
|
||||
}
|
||||
|
||||
for k1, _ := range newAuth {
|
||||
v1 := newAuth.GetSlice(k1)
|
||||
if linkAuth.GetString(k1) == "" {
|
||||
continue
|
||||
}
|
||||
toDbli := Slice{}
|
||||
for k2, _ := range v1 {
|
||||
v2 := v1.GetString(k2)
|
||||
|
||||
if !strings.Contains(linkAuth.GetString(k1), `"`+v2+`"`) {
|
||||
continue
|
||||
}
|
||||
toDbli = append(toDbli, v2)
|
||||
}
|
||||
toDB[k1] = toDbli
|
||||
}
|
||||
|
||||
inData["auth"] = toDB.ToJsonString()
|
||||
//break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,237 +223,114 @@ var TptProject = Proj{
|
||||
that.Display(3, "没有找到要更新的数据")
|
||||
return
|
||||
}
|
||||
|
||||
data := that.Db.Get(fileConfig.GetString("table"), "*", Map{"id": that.Session(fileConfig.GetString("table") + "_id").ToCeilInt()})
|
||||
|
||||
//树状结构不允许修改自身的属性,修改别人的可以
|
||||
if fileConfig.GetString("table") == tableName && that.RouterString[2] == that.Session(fileConfig.GetString("table")+"_id").ToStr() {
|
||||
btes, err := ioutil.ReadFile(fileConfig.GetString("config"))
|
||||
if err != nil {
|
||||
that.Display(4, "找不到权限配置文件")
|
||||
return
|
||||
}
|
||||
|
||||
for _, v := range that.MakeCodeRouter[hotimeName].TableColumns[fileConfig.GetString("table")] {
|
||||
|
||||
if v.GetString("link") == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
if that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["parent_id"] != nil {
|
||||
|
||||
delete(inData, v.GetString("name"))
|
||||
}
|
||||
conf := ObjToMap(string(btes))
|
||||
|
||||
stop := conf.GetSlice("stop")
|
||||
for k, _ := range stop {
|
||||
v := stop.GetString(k)
|
||||
//不能改对应行数据
|
||||
if tableName == v && data.GetCeilInt64(v+"_id") == ObjToCeilInt64(that.RouterString[2]) {
|
||||
that.Display(4, "你没有权限修改当前数据")
|
||||
return
|
||||
}
|
||||
//不能改自身对应的数据
|
||||
if tableName == fileConfig.GetString("table") && inData[v+"_id"] != nil {
|
||||
delete(inData, v+"_id")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if inData["auth"] != nil {
|
||||
|
||||
btes, err := ioutil.ReadFile(fileConfig.GetString("config"))
|
||||
|
||||
if err != nil {
|
||||
that.Display(4, "找不到配置文件")
|
||||
return
|
||||
}
|
||||
|
||||
conf := ObjToMap(string(btes))
|
||||
menus := conf.GetSlice("menus")
|
||||
|
||||
for _, v := range that.MakeCodeRouter[hotimeName].TableColumns[fileConfig.GetString("table")] {
|
||||
if v.GetString("link") != "" && that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["auth"] != nil {
|
||||
//linkHasAuth := that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["auth"]
|
||||
//if linkHasAuth != nil {
|
||||
|
||||
if v.GetString("link") != "" && that.MakeCodeRouter[hotimeName].TableColumns[v.GetString("link")]["auth"] != nil {
|
||||
linkAuthMap := that.Db.Get(v.GetString("link"), "auth", Map{"id": data.GetCeilInt(v.GetString("name"))})
|
||||
linkAuth := linkAuthMap.GetMap("auth")
|
||||
myAuth := Map{}
|
||||
if linkAuth != nil {
|
||||
|
||||
if linkAuth == nil {
|
||||
|
||||
linkAuth = Map{}
|
||||
for k1, _ := range menus {
|
||||
|
||||
v1 := menus.GetMap(k1)
|
||||
|
||||
if linkAuth[v1.GetString("table")] != nil {
|
||||
v1["auth"] = linkAuth[v1.GetString("table")]
|
||||
|
||||
name := v1.GetString("name")
|
||||
if name == "" {
|
||||
name = v1.GetString("table")
|
||||
}
|
||||
if linkAuth[v1.GetString("name")] != nil {
|
||||
v1["auth"] = linkAuth[v1.GetString("name")]
|
||||
|
||||
}
|
||||
|
||||
if v1.GetString("name") != "" && v1["auth"] == nil {
|
||||
v1["auth"] = Slice{"show"}
|
||||
|
||||
}
|
||||
|
||||
if v1.GetString("table") != "" && v1["auth"] == nil {
|
||||
v1["auth"] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(v1.GetString("table"))["auth"]
|
||||
}
|
||||
|
||||
if v1.GetString("table") != "" {
|
||||
myAuth[v1.GetString("table")] = v1
|
||||
}
|
||||
if v1.GetString("name") != "" {
|
||||
myAuth[v1.GetString("name")] = v1
|
||||
}
|
||||
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1menus {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if linkAuth[v2.GetString("table")] != nil {
|
||||
v2["auth"] = linkAuth[v2.GetString("table")]
|
||||
|
||||
}
|
||||
|
||||
if linkAuth[v2.GetString("name")] != nil {
|
||||
v2["auth"] = linkAuth[v2.GetString("name")]
|
||||
}
|
||||
|
||||
if v2.GetString("name") != "" && v2["auth"] == nil {
|
||||
v2["auth"] = Slice{"show"}
|
||||
|
||||
}
|
||||
|
||||
if v2.GetString("table") != "" && v2["auth"] == nil {
|
||||
v2["auth"] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(v2.GetString("table"))["auth"]
|
||||
}
|
||||
|
||||
if v2.GetString("table") != "" {
|
||||
myAuth[v2.GetString("table")] = v2
|
||||
}
|
||||
|
||||
if v2.GetString("name") != "" {
|
||||
myAuth[v2.GetString("name")] = v2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
newAuth := inData.GetSlice("auth")
|
||||
toDB := Map{}
|
||||
for k1, _ := range newAuth {
|
||||
v1 := newAuth.GetMap(k1)
|
||||
|
||||
if myAuth.GetMap(v1.GetString("name")) == nil && myAuth.GetMap(v1.GetString("table")) == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
auth := Slice{}
|
||||
|
||||
str := v1.GetString("name")
|
||||
|
||||
if v1.GetString("table") != "" {
|
||||
|
||||
str = v1.GetString("table")
|
||||
}
|
||||
|
||||
if v1.GetString("auth") == "" {
|
||||
if myAuth.GetMap(str).GetString("table") != "" {
|
||||
auth = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(str).GetSlice("auth")
|
||||
} else {
|
||||
auth = Slice{"show"}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"show"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"show"`) {
|
||||
auth = append(auth, "show")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"download"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"download"`) {
|
||||
auth = append(auth, "download")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"add"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"add"`) {
|
||||
auth = append(auth, "add")
|
||||
//continue
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"edit"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"edit"`) {
|
||||
auth = append(auth, "edit")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"delete"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"delete"`) {
|
||||
auth = append(auth, "delete")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"info"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"info"`) {
|
||||
auth = append(auth, "info")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
toDB[str] = auth
|
||||
v1Menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1Menus {
|
||||
v2 := v1Menus.GetMap(k2)
|
||||
|
||||
if myAuth.GetMap(v2.GetString("name")) == nil && myAuth.GetMap(v2.GetString("table")) == nil {
|
||||
if v1["auth"] != nil {
|
||||
linkAuth[name] = v1["auth"]
|
||||
continue
|
||||
}
|
||||
if v1["auth"] == nil {
|
||||
|
||||
auth := Slice{}
|
||||
|
||||
str := v2.GetString("name")
|
||||
|
||||
if v2.GetString("table") != "" {
|
||||
|
||||
str = v2.GetString("table")
|
||||
}
|
||||
|
||||
if v2.GetString("auth") == "" {
|
||||
if myAuth.GetMap(str).GetString("table") != "" {
|
||||
auth = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(str).GetSlice("auth")
|
||||
table := that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)
|
||||
if table != nil {
|
||||
linkAuth[name] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)["auth"]
|
||||
} else {
|
||||
auth = Slice{"show"}
|
||||
linkAuth[name] = Slice{"show"}
|
||||
}
|
||||
}
|
||||
menusChild := v1.GetSlice("menus")
|
||||
for k2, _ := range menusChild {
|
||||
v2 := menusChild.GetMap(k2)
|
||||
name := v2.GetString("name")
|
||||
if name == "" {
|
||||
name = v2.GetString("table")
|
||||
}
|
||||
if v2["auth"] != nil {
|
||||
linkAuth[name] = v2["auth"]
|
||||
continue
|
||||
}
|
||||
if v2["auth"] == nil {
|
||||
table := that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)
|
||||
if table != nil {
|
||||
linkAuth[name] = that.MakeCodeRouter[hotimeName].TableConfig.GetMap(name)["auth"]
|
||||
} else {
|
||||
linkAuth[name] = Slice{"show"}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"show"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"show"`) {
|
||||
auth = append(auth, "show")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"download"`) &&
|
||||
strings.Contains(v1.GetString("auth"), `"download"`) {
|
||||
auth = append(auth, "download")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"add"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"add"`) {
|
||||
auth = append(auth, "add")
|
||||
//continue
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"edit"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"edit"`) {
|
||||
auth = append(auth, "edit")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"delete"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"delete"`) {
|
||||
auth = append(auth, "delete")
|
||||
|
||||
}
|
||||
if strings.Contains(myAuth.GetMap(str).GetString("auth"), `"info"`) &&
|
||||
strings.Contains(v2.GetString("auth"), `"info"`) {
|
||||
auth = append(auth, "info")
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
toDB[str] = auth
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
toDB := Map{}
|
||||
newAuth := inData.GetMap("auth")
|
||||
if newAuth == nil || len(newAuth) == 0 {
|
||||
inData["auth"] = linkAuth.ToJsonString()
|
||||
break
|
||||
}
|
||||
//不可超出用户权限
|
||||
for k1, _ := range newAuth {
|
||||
v1 := newAuth.GetSlice(k1)
|
||||
if linkAuth.GetString(k1) == "" {
|
||||
continue
|
||||
}
|
||||
toDbli := Slice{}
|
||||
for k2, _ := range v1 {
|
||||
v2 := v1.GetString(k2)
|
||||
if !strings.Contains(linkAuth.GetString(k1), `"`+v2+`"`) {
|
||||
continue
|
||||
}
|
||||
toDbli = append(toDbli, v2)
|
||||
}
|
||||
toDB[k1] = toDbli
|
||||
}
|
||||
|
||||
inData["auth"] = toDB.ToJsonString()
|
||||
break
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//索引管理,便于检索以及权限
|
||||
@@ -931,47 +638,7 @@ var TptProject = Proj{
|
||||
}
|
||||
re[link] = that.Db.Get(column.GetString("link"), seStr, Map{"id": v})
|
||||
}
|
||||
|
||||
//权限设置
|
||||
if column["type"] == "auth" {
|
||||
|
||||
btes, err := ioutil.ReadFile(fileConfig.GetString("config"))
|
||||
|
||||
if err != nil {
|
||||
that.Display(4, "找不到权限配置文件")
|
||||
return
|
||||
}
|
||||
|
||||
conf := ObjToMap(string(btes))
|
||||
menus := conf.GetSlice("menus")
|
||||
|
||||
userAuth := re.GetMap("auth")
|
||||
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
if userAuth[v1.GetString("name")] != nil {
|
||||
v1["auth"] = userAuth[v1.GetString("name")]
|
||||
}
|
||||
if userAuth[v1.GetString("table")] != nil {
|
||||
v1["auth"] = userAuth[v1.GetString("table")]
|
||||
}
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1menus {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if userAuth[v2.GetString("name")] != nil {
|
||||
v2["auth"] = userAuth[v2.GetString("name")]
|
||||
}
|
||||
if userAuth[v2.GetString("table")] != nil {
|
||||
v2["auth"] = userAuth[v2.GetString("table")]
|
||||
}
|
||||
}
|
||||
}
|
||||
re["auth"] = menus.ToJsonString()
|
||||
//that.Display(0,menus)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//如果有table字段则代为link
|
||||
if re["table"] != nil && re["table_id"] != nil {
|
||||
|
||||
@@ -1073,58 +740,110 @@ var TptProject = Proj{
|
||||
|
||||
linkAuthMap := that.Db.Get(v.GetString("link"), "auth", Map{"id": user.GetCeilInt(v.GetString("name"))})
|
||||
linkAuth := linkAuthMap.GetMap("auth")
|
||||
//conf := ObjToMap(string(btes))
|
||||
//menus := conf.GetSlice("menus")
|
||||
if linkAuth == nil {
|
||||
linkAuth = Map{}
|
||||
}
|
||||
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
if linkAuth[v1.GetString("name")] != nil {
|
||||
v1["auth"] = linkAuth[v1.GetString("name")]
|
||||
name := v1.GetString("name")
|
||||
if name == "" {
|
||||
name = v1.GetString("table")
|
||||
}
|
||||
if linkAuth[v1.GetString("table")] != nil {
|
||||
v1["auth"] = linkAuth[v1.GetString("table")]
|
||||
if v1["auth"] != nil {
|
||||
|
||||
if linkAuth[name] == nil {
|
||||
linkAuth[name] = v1["auth"]
|
||||
} else {
|
||||
newAuth := Slice{}
|
||||
for k2, _ := range linkAuth.GetSlice(name) {
|
||||
v2 := linkAuth.GetSlice(name).GetString(k2)
|
||||
if strings.Contains(v1.GetString("auth"), v2) {
|
||||
newAuth = append(newAuth, v2)
|
||||
}
|
||||
}
|
||||
linkAuth[name] = newAuth
|
||||
}
|
||||
}
|
||||
|
||||
menusChild := v1.GetSlice("menus")
|
||||
for k2, _ := range menusChild {
|
||||
v2 := menusChild.GetMap(k2)
|
||||
name := v2.GetString("name")
|
||||
if name == "" {
|
||||
name = v2.GetString("table")
|
||||
}
|
||||
if v2["auth"] != nil {
|
||||
newAuth := Slice{}
|
||||
for k3, _ := range linkAuth.GetSlice(name) {
|
||||
v3 := linkAuth.GetSlice(name).GetString(k3)
|
||||
if strings.Contains(v2.GetString("auth"), v3) {
|
||||
newAuth = append(newAuth, v3)
|
||||
}
|
||||
}
|
||||
linkAuth[name] = newAuth
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
//保证个人权限可用
|
||||
if fileConfig.GetString("table") == v1.GetString("table") {
|
||||
v1["auth"] = Slice{"info", "edit"}
|
||||
}
|
||||
name := v1.GetString("name")
|
||||
if name == "" {
|
||||
name = v1.GetString("table")
|
||||
}
|
||||
|
||||
if linkAuth[name] != nil {
|
||||
v1["auth"] = linkAuth[name]
|
||||
}
|
||||
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1menus {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if linkAuth[v2.GetString("name")] != nil {
|
||||
v2["auth"] = linkAuth[v2.GetString("name")]
|
||||
//保证个人权限可用
|
||||
if fileConfig.GetString("table") == v2.GetString("table") {
|
||||
v2["auth"] = Slice{"info", "edit"}
|
||||
|
||||
}
|
||||
if linkAuth[v2.GetString("table")] != nil {
|
||||
v2["auth"] = linkAuth[v2.GetString("table")]
|
||||
name := v2.GetString("name")
|
||||
if name == "" {
|
||||
name = v2.GetString("table")
|
||||
}
|
||||
if linkAuth[name] != nil {
|
||||
v2["auth"] = linkAuth[name]
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
userAuth := user.GetMap("auth")
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
if userAuth[v1.GetString("table")] != nil {
|
||||
v1["auth"] = userAuth[v1.GetString("table")]
|
||||
}
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1menus {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if userAuth[v2.GetString("table")] != nil {
|
||||
v2["auth"] = userAuth[v2.GetString("table")]
|
||||
}
|
||||
}
|
||||
}
|
||||
//不可读写数据
|
||||
config := DeepCopyMap(that.MakeCodeRouter[hotimeName].Config).(Map)
|
||||
|
||||
config["menus"] = menus
|
||||
newTables := Map{}
|
||||
newTables[fileConfig.GetString("table")] = config.GetMap("tables").GetMap(fileConfig.GetString("table"))
|
||||
for k1, _ := range menus {
|
||||
v1 := menus.GetMap(k1)
|
||||
if config.GetMap("tables").GetMap(v1.GetString("table")) != nil {
|
||||
if config.GetMap("tables").GetMap(v1.GetString("table")) != nil && len(v1.GetSlice("auth")) != 0 {
|
||||
config.GetMap("tables").GetMap(v1.GetString("table"))["auth"] = Slice{}
|
||||
newTables[v1.GetString("name")] = config.GetMap("tables").GetMap(v1.GetString("table"))
|
||||
}
|
||||
v1menus := v1.GetSlice("menus")
|
||||
for k2, _ := range v1.GetSlice("menus") {
|
||||
v2 := v1menus.GetMap(k2)
|
||||
if config.GetMap("tables").GetMap(v2.GetString("table")) != nil {
|
||||
if config.GetMap("tables").GetMap(v2.GetString("table")) != nil && len(v2.GetSlice("auth")) != 0 {
|
||||
|
||||
//有自定义配置文件
|
||||
if conf.GetMap("tables") != nil && conf.GetMap("tables").GetMap(v2.GetString("table")) != nil {
|
||||
|
||||
@@ -1143,7 +862,7 @@ var TptProject = Proj{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
config.GetMap("tables").GetMap(v2.GetString("table"))["auth"] = Slice{}
|
||||
newTables[v2.GetString("table")] = config.GetMap("tables").GetMap(v2.GetString("table"))
|
||||
|
||||
}
|
||||
|
||||
@@ -8,6 +8,15 @@ var Config = Map{
|
||||
"name": "HoTimeDashBoard",
|
||||
//"id": "2f92h3herh23rh2y8",
|
||||
"label": "HoTime管理平台",
|
||||
"stop": Slice{"role", "org"}, //不更新的,同时不允许修改用户自身对应的表数据
|
||||
"labelConfig": Map{
|
||||
"show": "开启",
|
||||
"add": "添加",
|
||||
"delete": "删除",
|
||||
"edit": "编辑",
|
||||
"info": "查看详情",
|
||||
"download": "下载清单",
|
||||
},
|
||||
"menus": []Map{
|
||||
//{"label": "平台首页", "name": "HelloWorld", "icon": "el-icon-s-home"},
|
||||
//{"label": "测试表格", "table": "table", "icon": "el-icon-suitcase"},
|
||||
|
||||
+50
-49
@@ -84,38 +84,6 @@ func (that *MakeCode) Db2JSON(db *db.HoTimeDB, config Map) {
|
||||
}
|
||||
|
||||
that.IndexMenus = Map{}
|
||||
//menusConfig := that.Config.GetSlice("menus")
|
||||
////将配置写入到内存中仅作为判断用
|
||||
//if menusConfig != nil {
|
||||
// for kmenu, _ := range menusConfig {
|
||||
// menu := menusConfig.GetMap(kmenu)
|
||||
// if menu != nil {
|
||||
// mname := menu.GetString("table")
|
||||
// if mname == "" { //如果为空则不是表格
|
||||
// mname = menu.GetString("name")
|
||||
// }
|
||||
// that.IndexMenus[mname] = menu
|
||||
// childMenus := menu.GetSlice("menus")
|
||||
// if childMenus != nil {
|
||||
// for ckmenu, _ := range childMenus {
|
||||
// cmenu := childMenus.GetMap(ckmenu)
|
||||
// if cmenu != nil {
|
||||
// cname := cmenu.GetString("table")
|
||||
// if cmenu.GetString("table") == "" {
|
||||
// continue
|
||||
// }
|
||||
// that.IndexMenus[mname+"/"+cname] = cmenu
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//}
|
||||
|
||||
that.TableConfig = that.Config.GetMap("tables")
|
||||
if that.TableConfig == nil {
|
||||
that.TableConfig = Map{}
|
||||
@@ -321,13 +289,6 @@ func (that *MakeCode) Db2JSON(db *db.HoTimeDB, config Map) {
|
||||
//}
|
||||
|
||||
}
|
||||
//else {
|
||||
//
|
||||
// //if !(coloum.GetString("label") != "备注" && info.GetString("label") == "备注") {
|
||||
// // coloum["label"] = info.GetString("label")
|
||||
// //}
|
||||
// //coloum["type"] = info.GetString("type")
|
||||
//}
|
||||
|
||||
//暂时不关闭参数,保证表数据完全读取到
|
||||
that.TableColumns[v.GetString("name")][info.GetString("name")] = coloum
|
||||
@@ -410,14 +371,14 @@ func (that *MakeCode) Db2JSON(db *db.HoTimeDB, config Map) {
|
||||
|
||||
prefixName = DefaultMenuParentName + ":" + prefixName
|
||||
|
||||
menuIns := Map{"label": that.TableConfig.GetMap(fk).GetString("label"), "table": fk}
|
||||
menuIns := Map{"label": that.TableConfig.GetMap(fk).GetString("label"), "table": fk, "auth": that.TableConfig.GetMap(fk).GetSlice("auth")}
|
||||
//多耗费一点内存
|
||||
mMenu := Map{"menus": Slice{menuIns}, "label": that.TableConfig.GetMap(fk).GetString("label"), "name": prefixName, "icon": "el-icon-setting"}
|
||||
mMenu := Map{"menus": Slice{menuIns}, "auth": Slice{"show"}, "label": that.TableConfig.GetMap(fk).GetString("label"), "name": prefixName, "icon": "el-icon-setting"}
|
||||
//表名有前缀
|
||||
if !isNewPrefix {
|
||||
//是否已有对应前缀,已经有对应的menu只需要push进去即可
|
||||
prefixName = DefaultMenuParentName
|
||||
mMenu = Map{"menus": Slice{menuIns}, "label": "系统管理", "name": prefixName, "icon": "el-icon-setting"}
|
||||
mMenu = Map{"menus": Slice{menuIns}, "auth": Slice{"show"}, "label": "系统管理", "name": prefixName, "icon": "el-icon-setting"}
|
||||
}
|
||||
//没有新前缀
|
||||
if that.IndexMenus[prefixName] != nil {
|
||||
@@ -550,9 +511,12 @@ func (that *MakeCode) Db2JSON(db *db.HoTimeDB, config Map) {
|
||||
search := that.TableConfig.GetMap(fk).GetSlice("search")
|
||||
sv := Map{"type": "tree", "label": v["label"], "name": v["name"], "value": v["value"], "link": v["link"]}
|
||||
that.TableConfig.GetMap(fk)["search"] = append(search, sv)
|
||||
|
||||
that.SearchColumns[fk][k] = sv
|
||||
}
|
||||
|
||||
if fk == that.FileConfig.GetString("table") && v["link"] != nil && that.TableColumns[v.GetString("link")]["parent_id"] != nil {
|
||||
that.Config["stop"] = append(that.Config.GetSlice("stop"), v.GetString("link"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -839,6 +803,7 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db *
|
||||
|
||||
continue
|
||||
}
|
||||
|
||||
if v["list"] != false {
|
||||
|
||||
if v.GetString("link") != "" &&
|
||||
@@ -871,9 +836,17 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db *
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
reStr += table + "." + v.GetString("name") + ","
|
||||
}
|
||||
|
||||
if v["name"] == "parent_id" && v.GetString("link") != "" {
|
||||
leftJoin["[>]"+v.GetString("link")+" selfParent"] =
|
||||
"selfParent.id=" +
|
||||
v.GetString("link") + "." + v.GetString("name")
|
||||
reStr += "selfParent." + v.GetString("value") + " AS " + v.GetString("link") + "_" + v.GetString("name") + "_" + v.GetString("value") + ","
|
||||
}
|
||||
|
||||
//准备加入索引权限
|
||||
if v.GetString("link") != "" &&
|
||||
userData != nil &&
|
||||
@@ -917,6 +890,38 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db *
|
||||
|
||||
}
|
||||
|
||||
if v.GetString("type") == "text" {
|
||||
reqValue := req.FormValue(v.GetString("name"))
|
||||
if reqValue != "" {
|
||||
data[table+"."+v.GetString("name")+"[~]"] = reqValue
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if v.GetString("type") == "unixtime" {
|
||||
//fmt.Println(req.Form["daterange"])
|
||||
if len(req.Form[v.GetString("name")]) == 1 {
|
||||
daterange[table+"."+v.GetString("name")+"[>]"] = req.FormValue("daterange")
|
||||
} else if len(req.Form[v.GetString("name")]) == 2 {
|
||||
daterange[table+"."+v.GetString("name")+"[<>]"] = ObjToSlice(req.Form["daterange"])
|
||||
}
|
||||
}
|
||||
|
||||
if v.GetString("type") == "time" {
|
||||
//fmt.Println(req.Form["daterange"])
|
||||
|
||||
if len(req.Form[v.GetString("name")]) == 1 {
|
||||
t := time.Unix(ObjToCeilInt64(req.FormValue(v.GetString("name"))), 0).Format("2006-01-02 15:04:05")
|
||||
|
||||
daterange[table+"."+v.GetString("name")+"[>]"] = t
|
||||
|
||||
} else if len(req.Form[v.GetString("name")]) == 2 {
|
||||
t1 := time.Unix(ObjToCeilInt64(req.Form[v.GetString("name")][0]), 0).Format("2006-01-02 15:04:05")
|
||||
t2 := time.Unix(ObjToCeilInt64(req.Form[v.GetString("name")][1]), 0).Format("2006-01-02 15:04:05")
|
||||
daterange[table+"."+v.GetString("name")+"[<>]"] = Slice{t1, t2}
|
||||
}
|
||||
}
|
||||
|
||||
if keywordStr != "" {
|
||||
if v.GetString("type") == "text" {
|
||||
keyword[table+"."+v.GetString("name")+"[~]"] = keywordStr
|
||||
@@ -990,7 +995,7 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db *
|
||||
if v.GetString("type") == "unixtime" {
|
||||
//fmt.Println(req.Form["daterange"])
|
||||
if len(req.Form["daterange"]) == 1 {
|
||||
daterange[table+"."+v.GetString("name")+"[<]"] = req.FormValue("daterange")
|
||||
daterange[table+"."+v.GetString("name")+"[>]"] = req.FormValue("daterange")
|
||||
} else if len(req.Form["daterange"]) == 2 {
|
||||
|
||||
daterange[table+"."+v.GetString("name")+"[<>]"] = ObjToSlice(req.Form["daterange"])
|
||||
@@ -1002,7 +1007,7 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db *
|
||||
if len(req.Form["daterange"]) == 1 {
|
||||
t := time.Unix(ObjToCeilInt64(req.FormValue("daterange")), 0).Format("2006-01-02 15:04:05")
|
||||
|
||||
daterange[table+"."+v.GetString("name")+"[<]"] = t
|
||||
daterange[table+"."+v.GetString("name")+"[>]"] = t
|
||||
|
||||
} else if len(req.Form["daterange"]) == 2 {
|
||||
t1 := time.Unix(ObjToCeilInt64(req.Form["daterange"][0]), 0).Format("2006-01-02 15:04:05")
|
||||
@@ -1139,7 +1144,3 @@ func (that *MakeCode) Search(table string, userData Map, req *http.Request, db *
|
||||
|
||||
return reStr, leftJoin, where
|
||||
}
|
||||
|
||||
func setListener() {
|
||||
|
||||
}
|
||||
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
package hotime
|
||||
|
||||
import (
|
||||
. "code.hoteas.com/golang/hotime/cache"
|
||||
. "code.hoteas.com/golang/hotime/common"
|
||||
. "code.hoteas.com/golang/hotime/db"
|
||||
"encoding/json"
|
||||
@@ -19,7 +18,7 @@ type Context struct {
|
||||
Db *HoTimeDB
|
||||
RespData Map
|
||||
RespFunc func()
|
||||
CacheIns
|
||||
//CacheIns
|
||||
SessionIns
|
||||
DataSize int
|
||||
HandlerStr string //复写请求url
|
||||
|
||||
+32
-5
@@ -34,7 +34,7 @@ type HoTimeDB struct {
|
||||
}
|
||||
|
||||
type HotimeDBBuilder struct {
|
||||
*HoTimeDB
|
||||
HoTimeDB *HoTimeDB
|
||||
table string
|
||||
selects []interface{}
|
||||
join Slice
|
||||
@@ -634,15 +634,42 @@ func (that *HoTimeDB) Select(table string, qu ...interface{}) []Map {
|
||||
v := testQuData[k]
|
||||
switch Substr(k, 0, 3) {
|
||||
case "[>]":
|
||||
query += " LEFT JOIN `" + Substr(k, 3, len(k)-3) + "` ON " + v.(string) + " "
|
||||
func() {
|
||||
table := Substr(k, 3, len(k)-3)
|
||||
if !strings.Contains(table, " ") {
|
||||
table = "`" + table + "`"
|
||||
}
|
||||
query += " LEFT JOIN " + table + " ON " + v.(string) + " "
|
||||
}()
|
||||
case "[<]":
|
||||
query += " RIGHT JOIN `" + Substr(k, 3, len(k)-3) + "` ON " + v.(string) + " "
|
||||
func() {
|
||||
table := Substr(k, 3, len(k)-3)
|
||||
if !strings.Contains(table, " ") {
|
||||
table = "`" + table + "`"
|
||||
}
|
||||
query += " RIGHT JOIN " + table + " ON " + v.(string) + " "
|
||||
}()
|
||||
|
||||
}
|
||||
switch Substr(k, 0, 4) {
|
||||
case "[<>]":
|
||||
query += " FULL JOIN `" + Substr(k, 4, len(k)-4) + "` ON " + v.(string) + " "
|
||||
func() {
|
||||
table := Substr(k, 4, len(k)-4)
|
||||
if !strings.Contains(table, " ") {
|
||||
table = "`" + table + "`"
|
||||
}
|
||||
query += " FULL JOIN " + table + " ON " + v.(string) + " "
|
||||
}()
|
||||
|
||||
case "[><]":
|
||||
query += " INNER JOIN `" + Substr(k, 4, len(k)-4) + "` ON " + v.(string) + " "
|
||||
func() {
|
||||
table := Substr(k, 4, len(k)-4)
|
||||
if !strings.Contains(table, " ") {
|
||||
table = "`" + table + "`"
|
||||
}
|
||||
query += " INNER JOIN " + table + " ON " + v.(string) + " "
|
||||
}()
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
"name": "dgs-cms",
|
||||
"password": "dasda8454456",
|
||||
"port": "3306",
|
||||
"prefix": "",
|
||||
"user": "root"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -94,6 +94,9 @@ func findCaller(skip int) string {
|
||||
if file == "code/makecode.go" {
|
||||
file, line = getCaller(skip + i + j)
|
||||
}
|
||||
if strings.Index(file, "common/") == 0 {
|
||||
file, line = getCaller(skip + i + j)
|
||||
}
|
||||
if strings.Contains(file, "application.go") {
|
||||
file, line = getCaller(skip + i + j)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user