Quellcode durchsuchen

update:路由分组,修改T_pid获取方式

zoie vor 2 Jahren
Ursprung
Commit
2a19fd1450

+ 3 - 5
conf/app.conf

@@ -30,15 +30,13 @@ Redis_password = ""
 Redis_dbNum = "1"
 
 # 静态资源
-# Oss = "https://osscold.baozhida.cn/"
 Qiniu_AccessKey = "-8ezB_d-8-eUFTMvhOGbGzgeQRPeKQnaQ3DBcUxo"
 Qiniu_SecretKey = "KFhkYxTAJ2ZPN3ZS3euTsfWk8-C92rKgkhAMkDRN"
-Qiniu_BUCKET = "bzdcoldverify"
-Oss = "https://bzdcoldverifyoss.baozhida.cn"
-Oss_file = "C:\\Users\\Administrator\\Pictures\\oss"
+Qiniu_BUCKET = "coldoss"
+Qiniu_Url = "https://coldoss.coldbaozhida.com/"
 
 # Panel
 Panel_url = "http://127.0.0.1:6204/Cold_Panel"
 
 FilterExcludeURL = /Login_verification
-FilterOnlyLoginCheckURL = /Menu/List,/User/Info,/User/Home,/UpFileToken
+FilterOnlyLoginCheckURL = /Menu/List,/User/Info,/User/Home,/UpFileToken,/User/WxQRCode

+ 2 - 3
conf/config.go

@@ -30,10 +30,9 @@ var Redis_dbNum, _ = beego.AppConfig.String("Redis_dbNum")
 // Qiniu
 var Qiniu_AccessKey, _ = beego.AppConfig.String("Qiniu_AccessKey")
 var Qiniu_SecretKey, _ = beego.AppConfig.String("Qiniu_SecretKey")
+var Qiniu_Url, _ = beego.AppConfig.String("Qiniu_Url")
 var Qiniu_BUCKET, _ = beego.AppConfig.String("Qiniu_BUCKET")
-var OssQiniu = "https://bzdcoldverifyoss.baozhida.cn"
-var Oss, _ = beego.AppConfig.String("Oss")
-var Oss_file, _ = beego.AppConfig.String("Oss_file")
+var OssQiniu = "https://coldoss.coldbaozhida.com"
 
 var Panel_url, _ = beego.AppConfig.String("Panel_url")
 

+ 21 - 73
controllers/Data.go

@@ -4,6 +4,7 @@ import (
 	"Cold_Api/Nats/NatsServer"
 	"Cold_Api/conf"
 	"Cold_Api/controllers/lib"
+	"Cold_Api/models/Account"
 	"Cold_Api/models/Device"
 	"Cold_Api/models/RawSql"
 	"fmt"
@@ -19,30 +20,29 @@ import (
 
 type DataController struct {
 	beego.Controller
+	Admin_r Account.Admin // 登陆的用户
+	T_pid   int           // 公司id
 }
 
-// 列表 -
-func (c *DataController) DataPlane() {
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
+func (c *DataController) Prepare() {
+	GetCookie := c.Ctx.GetCookie("User_tokey")
+	GetString := c.GetString("User_tokey")
+
+	User_tokey := GetCookie
+	if len(User_tokey) == 0 {
+		User_tokey = GetString
 	}
 
-	c.TplName = "Data/DataPlane.html"
-} // 列表 -
+	c.Admin_r = lib.Admin_r
+	T_pid := c.Admin_r.T_pid
+	if T_pid == 0 {
+		T_pid, _ = Account.Redis_Tokey_T_pid_Get(User_tokey)
+	}
+	c.T_pid = T_pid
+}
 
 // 获取传感器
 func (c *DataController) Device_Sensor_Get() {
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
 	T_sn := c.GetString("T_sn")
 	T_id, _ := c.GetInt("T_id")
 	//c.Data["Class_List"] = Device.Read_Class_All_1()
@@ -62,14 +62,6 @@ func (c *DataController) Device_Sensor_Get() {
 
 // 传感器列表
 func (c *DataController) Device_Sensor_List() {
-	// 验证登录
-	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
 	type R_JSONS struct {
 		//必须的大写开头
 		DeviceSensor_lite []Device.DeviceSensor_R
@@ -94,13 +86,9 @@ func (c *DataController) Device_Sensor_List() {
 	T_Calss_id, _ := c.GetInt("T_class_id")
 	T_name := c.GetString("T_name")
 	SN_type := c.GetString("SN_type")
-	T_pid := admin_r.T_pid
-	if T_pid == 0 {
-		T_pid, _ = strconv.Atoi(c.Ctx.Request.Header.Get("T_pid"))
-	}
 
 	var cnt int64
-	r_jsons.DeviceSensor_lite, cnt = Device.Read_DeviceSensor_class_ALL_1(admin_r, T_pid, T_Calss_id, page, page_z, T_sn, T_name, SN_type)
+	r_jsons.DeviceSensor_lite, cnt = Device.Read_DeviceSensor_class_ALL_1(c.Admin_r, c.T_pid, T_Calss_id, page, page_z, T_sn, T_name, SN_type)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.Page = int(page)
@@ -149,14 +137,6 @@ func (c *DataController) Device_Sensor_Data() {
 
 // 设备数据
 func (c *DataController) Device_Sensor_Data_More() {
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
 	page, _ := c.GetInt("page")
 	println(page)
 	if page < 1 {
@@ -199,15 +179,6 @@ func (c *DataController) Device_Sensor_Data_More() {
 
 // 导出传感器数据列表
 func (c *DataController) Device_Sensor_Data_Excel() {
-
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
 	T_snid := c.GetString("T_snid")
 	Time_start := c.GetString("Time_start")
 	Time_end := c.GetString("Time_end")
@@ -293,15 +264,6 @@ func (c *DataController) Device_Sensor_Data_Excel() {
 
 // 列表 - 接口
 func (c *DataController) Device_Sensor_Data_Excel_m() {
-
-	// 验证登录
-	b_, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
 	T_snid := c.GetString("T_snid")
 	Time_start := c.GetString("Time_start")
 	Time_end := c.GetString("Time_end")
@@ -463,14 +425,6 @@ func (c *DataController) DeviceSensor_Data_Print() {
 
 // 列表 - 接口
 func (c *DataController) Device_Sensor_Data_PDF() {
-	// 验证登录
-	b_, user_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
-
 	T_snid := c.GetString("T_snid")
 	Time_start := c.GetString("Time_start")
 	Time_end := c.GetString("Time_end")
@@ -517,10 +471,10 @@ func (c *DataController) Device_Sensor_Data_PDF() {
 	//use path
 	//pdf.Image("logo.png", 100, 50, &gopdf.Rect{W: 50, H: 50})
 
-	textw, _ := pdf.MeasureTextWidth(user_r.T_name)
+	textw, _ := pdf.MeasureTextWidth(c.Admin_r.T_name)
 	pdf.SetX((595 / 2) - (textw / 2))
 	pdf.SetY(40)
-	pdf.Text(user_r.T_name)
+	pdf.Text(c.Admin_r.T_name)
 
 	// 线
 	pdf.SetLineWidth(2)
@@ -623,13 +577,7 @@ func (c *DataController) Device_Sensor_Data_PDF() {
 
 // 大数据平台
 func (c *DataController) Raw() {
-	// 验证登录
-	b_, admin_r := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "User_tokey Err!"}
-		c.ServeJSON()
-		return
-	}
+	admin_r := c.Admin_r
 
 	T_SQL := c.GetString("T_SQL")
 

Datei-Diff unterdrückt, da er zu groß ist
+ 93 - 416
controllers/Device.go


+ 39 - 54
controllers/UpFile.go

@@ -1,71 +1,56 @@
 package controllers
 
 import (
-	"Cold_Api/conf"
 	"Cold_Api/controllers/lib"
-	"crypto/md5"
-	"fmt"
 	beego "github.com/beego/beego/v2/server/web"
-	"math/rand"
-	"os"
-	"path"
-	"time"
 )
 
 type UpFileController struct {
 	beego.Controller
 }
 
-func (c *UpFileController) UpFile() {
-
-	f, h, _ := c.GetFile("file") //获取上传的文件
-	ext := path.Ext(h.Filename)
-	//验证后缀名是否符合要求
-	var AllowExtMap map[string]bool = map[string]bool{
-		".jpg":  true,
-		".jpeg": true,
-		".png":  true,
-		".pdf":  true,
-	}
-	if _, ok := AllowExtMap[ext]; !ok {
-		c.Ctx.WriteString("后缀名不符合上传要求")
-		return
-	}
-	//创建目录
-	uploadDir := conf.Oss_file // + time.Now().Format("2006/01/02/")
-	err := os.MkdirAll(uploadDir, 777)
-	if err != nil {
-		c.Ctx.WriteString(fmt.Sprintf("%v", err))
-		return
-	}
-	//构造文件名称
-	rand.Seed(time.Now().UnixNano())
-	randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000)
-	hashName := md5.Sum([]byte(time.Now().Format("2006_01_02_15_04_05_") + randNum))
-
-	fileName := fmt.Sprintf("%x", hashName) + ext
-	//this.Ctx.WriteString(  fileName )
-
-	fpath := uploadDir + fileName
-	println(fpath)
-	defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况
-	err = c.SaveToFile("file", fpath)
-	if err != nil {
-		c.Ctx.WriteString(fmt.Sprintf("%v", err))
-	}
-	c.Ctx.WriteString("{\n  \"code\": 0\n  ,\"msg\": \"ok!\"\n  ,\"data\": {\n    \"src\": \"" + conf.Oss + fileName + "\"\n  }\n}       ")
-}
+//func (c *UpFileController) UpFile() {
+//
+//	f, h, _ := c.GetFile("file") //获取上传的文件
+//	ext := path.Ext(h.Filename)
+//	//验证后缀名是否符合要求
+//	var AllowExtMap map[string]bool = map[string]bool{
+//		".jpg":  true,
+//		".jpeg": true,
+//		".png":  true,
+//		".pdf":  true,
+//	}
+//	if _, ok := AllowExtMap[ext]; !ok {
+//		c.Ctx.WriteString("后缀名不符合上传要求")
+//		return
+//	}
+//	//创建目录
+//	uploadDir := conf.Oss_file // + time.Now().Format("2006/01/02/")
+//	err := os.MkdirAll(uploadDir, 777)
+//	if err != nil {
+//		c.Ctx.WriteString(fmt.Sprintf("%v", err))
+//		return
+//	}
+//	//构造文件名称
+//	rand.Seed(time.Now().UnixNano())
+//	randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000)
+//	hashName := md5.Sum([]byte(time.Now().Format("2006_01_02_15_04_05_") + randNum))
+//
+//	fileName := fmt.Sprintf("%x", hashName) + ext
+//	//this.Ctx.WriteString(  fileName )
+//
+//	fpath := uploadDir + fileName
+//	println(fpath)
+//	defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况
+//	err = c.SaveToFile("file", fpath)
+//	if err != nil {
+//		c.Ctx.WriteString(fmt.Sprintf("%v", err))
+//	}
+//	c.Ctx.WriteString("{\n  \"code\": 0\n  ,\"msg\": \"ok!\"\n  ,\"data\": {\n    \"src\": \"" + conf.Oss + fileName + "\"\n  }\n}       ")
+//}
 
 // 列表 -
 func (c *UpFileController) ConfigUpFileToken() {
-	// 验证登录 User_r, User_x
-	//b_, User_r, _ := lib.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	//if !b_ {
-	//	c.Data["json"] = lib.JSONS{Code: 302, Msg: "请重新登录!"}
-	//	c.ServeJSON()
-	//	return
-	//}
-	//
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: lib.UploadToken(c.GetString("T_suffix"))}
 	c.ServeJSON()
 	return

+ 41 - 17
controllers/User.go

@@ -10,6 +10,7 @@ import (
 	"Cold_Api/models/Warning"
 	beego "github.com/beego/beego/v2/server/web"
 	uuid "github.com/satori/go.uuid"
+	"log"
 	"math"
 	"strconv"
 	"strings"
@@ -23,12 +24,22 @@ type UserController struct {
 }
 
 func (c *UserController) Prepare() {
+
+	GetCookie := c.Ctx.GetCookie("User_tokey")
+	GetString := c.GetString("User_tokey")
+
+	User_tokey := GetCookie
+	if len(User_tokey) == 0 {
+		User_tokey = GetString
+	}
+
 	c.Admin_r = lib.Admin_r
 	T_pid := c.Admin_r.T_pid
 	if T_pid == 0 {
-		T_pid, _ = strconv.Atoi(c.Ctx.Request.Header.Get("T_pid"))
+		T_pid, _ = Account.Redis_Tokey_T_pid_Get(User_tokey)
 	}
 	c.T_pid = T_pid
+
 }
 
 // 获取微信二维码  ( 扫描后 ,Nats 自动绑定在 Admin->T_wx )
@@ -174,6 +185,31 @@ func (c *UserController) Company_Del() {
 	return
 }
 
+// 进入公司
+func (c *UserController) Company_Entry() {
+	GetCookie := c.Ctx.GetCookie("User_tokey")
+	GetString := c.GetString("User_tokey")
+
+	User_tokey := GetCookie
+	if len(User_tokey) == 0 {
+		User_tokey = GetString
+	}
+
+	T_pid, _ := c.GetInt("T_pid")
+	if T_pid < 0 {
+		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
+		c.ServeJSON()
+		return
+	}
+
+	Account.Redis_Tokey_T_pid_Set(User_tokey, T_pid)
+	System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "进入公司", T_pid)
+
+	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
+	c.ServeJSON()
+	return
+}
+
 // 检查 Tokey 是否过期
 
 // 用户管理
@@ -192,15 +228,9 @@ func (c *UserController) User_List() {
 	}
 
 	T_name := c.GetString("T_name")
-	T_pid, T_pid_err := c.GetInt("T_pid")
-	if T_pid_err != nil || T_pid == 0 {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
-		c.ServeJSON()
-		return
-	}
 
 	Account.Read_Power_All_Map()
-	r_jsons.Data, r_jsons.Num = Account.Read_Admin_List(T_pid, T_name, page, page_z)
+	r_jsons.Data, r_jsons.Num = Account.Read_Admin_List(c.T_pid, T_name, page, page_z)
 	r_jsons.Page = page
 	r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
 
@@ -290,7 +320,6 @@ func (c *UserController) User_Post() {
 func (c *UserController) User_Add() {
 
 	T_power, _ := c.GetInt("T_power")
-	T_pid, _ := c.GetInt("T_pid")
 	T_name := c.GetString("T_name")
 	T_user := c.GetString("T_user")
 	T_pass := c.GetString("T_pass")
@@ -300,7 +329,7 @@ func (c *UserController) User_Add() {
 	T_uuid := uuid.NewV4().String()
 	var_ := Account.Admin{
 		T_uuid:  T_uuid,
-		T_pid:   T_pid,
+		T_pid:   c.T_pid,
 		T_name:  T_name,
 		T_user:  T_user,
 		T_phone: T_phone,
@@ -310,11 +339,6 @@ func (c *UserController) User_Add() {
 		T_power: T_power,
 		T_State: 1,
 	}
-	if T_pid == 0 {
-		c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
-		c.ServeJSON()
-		return
-	}
 	if len(T_pass) < 8 {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
 		c.ServeJSON()
@@ -1005,8 +1029,8 @@ func (c *UserController) User_Menu_List() {
 		c.ServeJSON()
 		return
 	}
-
-	r_jsons.Data = Account.Read_Menu_Bind_List(power.T_menu, c.T_pid)
+	log.Println("菜单 pid 为:", c.T_pid)
+	r_jsons.Data = Account.Read_Menu_Bind_List(power.Id, power.T_menu, c.T_pid)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
 	c.ServeJSON()

+ 1 - 1
controllers/lib/Qiniu.go

@@ -85,7 +85,7 @@ func UploadToken(T_suffix string) string {
 		ForceSaveKey: true,
 		SaveKey:      "UpImage/" + Tokey + "." + T_suffix,
 		//FsizeLimit:   1024 * 1024 * 1,
-		MimeLimit: "image/*;application/pdf",
+		MimeLimit: "image/*;application/pdf;application/bin",
 	}
 
 	upToken := putPolicy.UploadToken(Qiniu)

+ 2 - 1
controllers/lib/lib.go

@@ -76,11 +76,12 @@ func Verification(GetCookie string, GetString string) (bool, Account.Admin) {
 		return false, Account.Admin{}
 	}
 	tokey, is := Account.Redis_Tokey_Get(User_tokey)
+	T_uuid := strings.Split(tokey, "|")[0]
 	if !is {
 		return false, Account.Admin{}
 	}
 	var err error
-	Admin_r, err = Account.Read_Admin_ByUuid(tokey)
+	Admin_r, err = Account.Read_Admin_ByUuid(T_uuid)
 	if err != nil {
 		return false, Account.Admin{}
 	}

+ 13 - 1
controllers/lib/libString.go

@@ -8,7 +8,7 @@ import (
 	"time"
 )
 
-//#取得随机字符串:通过打乱slice来操作
+// #取得随机字符串:通过打乱slice来操作
 func GetRandstring(length int, char string, rand_x int64) string {
 	if length < 1 {
 		return ""
@@ -36,3 +36,15 @@ func Md5(str string) string {
 	h.Write([]byte(str))
 	return hex.EncodeToString(h.Sum(nil))
 }
+
+// 转化
+func TimeStrToTime(T_time string) (time.Time, bool) {
+
+	stamp, err := time.ParseInLocation("2006-01-02 15:04:05", T_time, time.Local)
+
+	if err != nil {
+		return time.Time{}, false
+	}
+
+	return stamp, false
+}

+ 1 - 1
main.go

@@ -46,7 +46,7 @@ func main() {
 		ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Access-Control-Allow-Headers", "Content-Type"},
 		// 如果设置,则允许共享身份验证凭据,例如cookie
 		AllowCredentials: true,
-	})).InsertFilter("/*", beego.BeforeRouter, routers.FilterRBAC)
+	})).InsertFilter("/*", beego.BeforeRouter, routers.RBACFilter)
 
 	beego.BConfig.AppName = conf.AppName                    // 项目名
 	beego.BConfig.ServerName = conf.AppName + conf.HTTPPort //server  名称

+ 1 - 5
models/Account/Company.go

@@ -52,7 +52,7 @@ func init() {
 	orm.Debug = true
 
 	config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
-		"redis_Cold_User_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
+		"redis_User_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
 	fmt.Println(config)
 	var err error
 	redisCache_Company, err = cache.NewCache("redis", config)
@@ -64,7 +64,6 @@ func init() {
 }
 
 // ---------------- Redis -------------------
-// Redis_Set(m.T_sn,m) // Redis 更新缓存
 func Redis_Company_Set(r Company) (err error) {
 	//json序列化
 	str, err := json.Marshal(r)
@@ -80,9 +79,6 @@ func Redis_Company_Set(r Company) (err error) {
 	return
 }
 
-// if r,is :=Redis_Get(T_sn);is{
-// return r,nil
-// }
 func Redis_Company_Get(key string) (r Company, is bool) {
 	if redisCache_Company.IsExist(key) {
 		//println("找到key:",key)

+ 32 - 1
models/Account/Tokey.go

@@ -6,6 +6,8 @@ import (
 	"github.com/astaxie/beego/cache"
 	_ "github.com/astaxie/beego/cache/redis"
 	uuid "github.com/satori/go.uuid"
+	"strconv"
+	"strings"
 	"time"
 )
 
@@ -37,7 +39,7 @@ func Add_Tokey_Set(Uuid string) string {
 		}
 		fmt.Print("申请 TOKEY 重复!重新生成。", Tokey)
 	}
-	redisCache_Tokey.Put(Tokey, Uuid, 2*time.Hour)
+	redisCache_Tokey.Put(Tokey, Uuid+"|0", 2*time.Hour)
 
 	return Tokey
 }
@@ -60,3 +62,32 @@ func Redis_Tokey_Get(Tokey string) (string, bool) {
 	//println("没有 找到key:",key)
 	return "", false
 }
+
+func Redis_Tokey_T_pid_Set(Tokey string, T_pid int) bool {
+	if len(Tokey) < 10 {
+		return false
+	}
+	if redisCache_Tokey.IsExist(Tokey) {
+		//println("找到key:",key)
+		v := redisCache_Tokey.Get(Tokey)
+		value := string(v.([]byte)) //这里的转换很重要,Get返回的是interface
+		T_uuid := strings.Split(value, "|")[0]
+		redisCache_Tokey.Put(Tokey, T_uuid+"|"+strconv.Itoa(T_pid), 2*time.Hour) //  重新计次
+		return true
+	}
+	return false
+}
+
+func Redis_Tokey_T_pid_Get(Tokey string) (int, bool) {
+	if len(Tokey) < 10 {
+		return 0, false
+	}
+	if redisCache_Tokey.IsExist(Tokey) {
+		//println("找到key:",key)
+		v := redisCache_Tokey.Get(Tokey)
+		value := string(v.([]byte)) //这里的转换很重要,Get返回的是interface
+		T_pid, _ := strconv.Atoi(strings.Split(value, "|")[1])
+		return T_pid, true
+	}
+	return 0, false
+}

+ 25 - 30
routers/Data.go

@@ -1,34 +1,29 @@
 package routers
 
+import (
+	"Cold_Api/conf"
+	"Cold_Api/controllers"
+	beego "github.com/beego/beego/v2/server/web"
+)
+
 func init() {
-	//var version = conf.Version
-	//// 数据展示
-	//beego.Router(version+"/Data/List", &controllers.DataController{}, "*:Device_Sensor_Data_More")   // 获取未读消息
-	//beego.Router(version+"/Data/Excel", &controllers.DataController{}, "*:Device_Sensor_Data_Excel") // 获取未读消息
-	//beego.Router(version+"/Data/PDF", &controllers.DataController{}, "*:Device_Sensor_Data_PDF")     // 获取未读消息
-	//
-	//// 2D
-	////beego.Router(version+"/Data/DataView3d_html", &controllers.DataController{}, "*:DataView3d_html")
-	////beego.Router(version+"/Data/UpDataView3d", &controllers.DataController{}, "*:UpDataView3d")
-	//// 3D
-	//beego.Router(version+"/Data/DataView3d_html", &controllers.DataController{}, "*:DataView3d_html")
-	//beego.Router(version+"/Data/UpDataView3d", &controllers.DataController{}, "*:UpDataView3d")
-	//// 执行 SQL
-	//beego.Router(version+"/Data/Raw", &controllers.RawSqlController{}, "*:Rawv3") // 执行 SQL
-	//
-	//// 获取 基本信息
-	////beego.Router(version+"/Data/Device_Sensor_Data", &controllers.DataController{}, "*:Device_Sensor_Data")                      // 设置 设备参数
-	//beego.Router(version+"/Data/Device_Sensor_Data_Excel", &controllers.DataController{}, "*:Device_Sensor_Data_Excel")     // 设置 设备参数
-	//beego.Router(version+"/Data/Device_Sensor_Data_Excel_m", &controllers.DataController{}, "*:Device_Sensor_Data_Excel_m") // 设置 设备参数
-	//beego.Router(version+"/Data/Device_Sensor_Data_PDF", &controllers.DataController{}, "*:Device_Sensor_Data_PDF")         // 设置 设备参数
-	//beego.Router(version+"/Data/DataPlane", &controllers.DataController{}, "*:DataPlane")                                   // 设置 设备参数
-	//
-	//beego.Router(version+"/Data/DataScreen_Data", &controllers.DataController{}, "*:DataScreen_Data")                 // 设置 设备参数
-	//beego.Router(version+"/Data/DeviceSensor_Data_Print", &controllers.DataController{}, "*:DeviceSensor_Data_Print") // 设置 设备参数
-	//beego.Router(version+"/Data/DataScreen_Map", &controllers.DataController{}, "*:DataScreen_Map")                   // 设置 设备参数
-	//
-	////beego.Router("/Data/Raw", &controllers.DataController{}, "*:Raw") // 设置 设备参数
-	//// 3D
-	//beego.Router(version+"/Data/DataView3d_html", &controllers.DataController{}, "*:DataView3d_html")
-	//beego.Router(version+"/Data/UpDataView3d", &controllers.DataController{}, "*:UpDataView3d")
+	ns := beego.NewNamespace(conf.Version,
+		beego.NSNamespace("/Data",
+			beego.NSBefore(T_pidFilter),
+			beego.NSRouter("/Device_Sensor", &controllers.DataController{}, "*:Device_Sensor_Get"),                       // 获取传感器
+			beego.NSRouter("/Device_Sensor_List", &controllers.DataController{}, "*:Device_Sensor_List"),                 // 传感器列表
+			beego.NSRouter("/Device_Sensor_Data", &controllers.DataController{}, "*:Device_Sensor_Data"),                 // 传感器数据
+			beego.NSRouter("/Device_Sensor_Data_Excel", &controllers.DataController{}, "*:Device_Sensor_Data_Excel"),     // 导出传感器数据
+			beego.NSRouter("/Device_Sensor_Data_Excel_m", &controllers.DataController{}, "*:Device_Sensor_Data_Excel_m"), // 导出传感器数据
+
+			beego.NSRouter("/List", &controllers.DataController{}, "*:Device_Sensor_Data_More"),   // 设备数据列表
+			beego.NSRouter("/Excel", &controllers.DataController{}, "*:Device_Sensor_Data_Excel"), // 导出设备数据列表excel
+			beego.NSRouter("/PDF", &controllers.DataController{}, "*:Device_Sensor_Data_PDF"),     // 设备数据列表pdf
+			// 执行 SQL
+			beego.NSRouter("/Raw", &controllers.RawSqlController{}, "*:Raw"), // 执行 SQL
+		),
+	)
+
+	beego.AddNamespace(ns)
+
 }

+ 51 - 43
routers/User.go

@@ -7,48 +7,56 @@ import (
 )
 
 func init() {
-	var version = conf.Version
-
-	//---------------------------------- 用户管理
-	// 用户
-	beego.Router(version+"/Login_verification", &controllers.AdminController{}, "*:Login_verification")
-	beego.Router(version+"/User/List", &controllers.UserController{}, "*:User_List")         // 用户列表
-	beego.Router(version+"/User/Home", &controllers.UserController{}, "*:User_Home")         // 主页
-	beego.Router(version+"/User/Info", &controllers.UserController{}, "*:User_Info")         // 个人信息
-	beego.Router(version+"/User/Post", &controllers.UserController{}, "*:User_Post")         // 修改个人信息
-	beego.Router(version+"/User/Get", &controllers.UserController{}, "*:User_Get")           // 获取用户信息
-	beego.Router(version+"/User/Add", &controllers.UserController{}, "*:User_Add")           // 增加用户
-	beego.Router(version+"/User/Edit", &controllers.UserController{}, "*:User_Edit")         // 编辑用户
-	beego.Router(version+"/User/Del", &controllers.UserController{}, "*:User_Del")           // 删除用户
-	beego.Router(version+"/User/WxQRCode", &controllers.UserController{}, "*:User_WxQRCode") // 获取微信二维码
-
-	beego.Router(version+"/Admin/List", &controllers.UserController{}, "*:Admin_List") // 内部用户列表
-	beego.Router(version+"/Admin/Get", &controllers.UserController{}, "*:Admin_Get")   // 获取内部用户信息
-	beego.Router(version+"/Admin/Add", &controllers.UserController{}, "*:Admin_Add")   // 增加内部用户
-	beego.Router(version+"/Admin/Edit", &controllers.UserController{}, "*:Admin_Edit") // 编辑内部用户
-	beego.Router(version+"/Admin/Del", &controllers.UserController{}, "*:Admin_Del")   // 删除内部用户
-	// 内部用户公司绑定
-	beego.Router(version+"/Admin/CompanyBind_List", &controllers.UserController{}, "*:AdminCompanyBind_List") // 内部用户公司绑定列表
-	beego.Router(version+"/Admin/CompanyBind_Add", &controllers.UserController{}, "*:AdminCompanyBind_Add")   // 添加内部用户公司绑定
-	beego.Router(version+"/Admin/CompanyBind_Del", &controllers.UserController{}, "*:AdminCompanyBind_Del")   // 删除内部用户公司绑定
-
-	// 权限
-	beego.Router(version+"/Power/List", &controllers.UserController{}, "*:Power_List")         // 权限列表
-	beego.Router(version+"/Power/List_All", &controllers.UserController{}, "*:Power_List_All") // 所有权限列表
-	beego.Router(version+"/Power/Get", &controllers.UserController{}, "*:Power_Get")           // 获取权限
-	beego.Router(version+"/Power/Add", &controllers.UserController{}, "*:Power_Add")           // 添加权限
-	beego.Router(version+"/Power/Edit", &controllers.UserController{}, "*:Power_Edit")         // 编辑权限
-	beego.Router(version+"/Power/Del", &controllers.UserController{}, "*:Power_Del")           // 删除权限
-
-	// 菜单
-	beego.Router(version+"/Menu/List", &controllers.UserController{}, "*:User_Menu_List")    // 用户权限绑定的菜单
-	beego.Router(version+"/Menu/List_All", &controllers.UserController{}, "*:Menu_List_All") // 权限管理-菜单列表
-
-	// 公司管理
-	beego.Router(version+"/Company/Tree", &controllers.UserController{}, "*:Company_Tree") // 公司列表
-	beego.Router(version+"/Company/List", &controllers.UserController{}, "*:Company_List") // 所有公司列表
-	beego.Router(version+"/Company/Add", &controllers.UserController{}, "*:Company_Add")   // 添加公司
-	beego.Router(version+"/Company/Edit", &controllers.UserController{}, "*:Company_Edit") // 修改公司
-	beego.Router(version+"/Company/Del", &controllers.UserController{}, "*:Company_Del")   // 删除公司
+	ns := beego.NewNamespace(conf.Version,
+		//---------------------------------- 用户管理
+		// 用户
+		beego.NSRouter("/Login_verification", &controllers.AdminController{}, "*:Login_verification"),
+		beego.NSRouter("/User/Home", &controllers.UserController{}, "*:User_Home"),         // 主页
+		beego.NSRouter("/User/Info", &controllers.UserController{}, "*:User_Info"),         // 个人信息
+		beego.NSRouter("/User/Post", &controllers.UserController{}, "*:User_Post"),         // 修改个人信息
+		beego.NSRouter("/User/WxQRCode", &controllers.UserController{}, "*:User_WxQRCode"), // 获取微信二维码
+
+		beego.NSNamespace("/User",
+			beego.NSBefore(T_pidFilter),
+			beego.NSRouter("/List", &controllers.UserController{}, "*:User_List"), // 用户列表
+			beego.NSRouter("/Get", &controllers.UserController{}, "*:User_Get"),   // 获取用户信息
+			beego.NSRouter("/Add", &controllers.UserController{}, "*:User_Add"),   // 增加用户
+			beego.NSRouter("/Edit", &controllers.UserController{}, "*:User_Edit"), // 编辑用户
+			beego.NSRouter("/Del", &controllers.UserController{}, "*:User_Del"),   // 删除用户
+		),
+
+		beego.NSRouter("/Admin/List", &controllers.UserController{}, "*:Admin_List"), // 内部用户列表
+		beego.NSRouter("/Admin/Get", &controllers.UserController{}, "*:Admin_Get"),   // 获取内部用户信息
+		beego.NSRouter("/Admin/Add", &controllers.UserController{}, "*:Admin_Add"),   // 增加内部用户
+		beego.NSRouter("/Admin/Edit", &controllers.UserController{}, "*:Admin_Edit"), // 编辑内部用户
+		beego.NSRouter("/Admin/Del", &controllers.UserController{}, "*:Admin_Del"),   // 删除内部用户
+		// 内部用户公司绑定
+		beego.NSRouter("/Admin/CompanyBind_List", &controllers.UserController{}, "*:AdminCompanyBind_List"), // 内部用户公司绑定列表
+		beego.NSRouter("/Admin/CompanyBind_Add", &controllers.UserController{}, "*:AdminCompanyBind_Add"),   // 添加内部用户公司绑定
+		beego.NSRouter("/Admin/CompanyBind_Del", &controllers.UserController{}, "*:AdminCompanyBind_Del"),   // 删除内部用户公司绑定
+
+		// 权限
+		beego.NSRouter("/Power/List", &controllers.UserController{}, "*:Power_List"),         // 权限列表
+		beego.NSRouter("/Power/List_All", &controllers.UserController{}, "*:Power_List_All"), // 所有权限列表
+		beego.NSRouter("/Power/Get", &controllers.UserController{}, "*:Power_Get"),           // 获取权限
+		beego.NSRouter("/Power/Add", &controllers.UserController{}, "*:Power_Add"),           // 添加权限
+		beego.NSRouter("/Power/Edit", &controllers.UserController{}, "*:Power_Edit"),         // 编辑权限
+		beego.NSRouter("/Power/Del", &controllers.UserController{}, "*:Power_Del"),           // 删除权限
+
+		// 菜单
+		beego.NSRouter("/Menu/List", &controllers.UserController{}, "*:User_Menu_List"),    // 用户权限绑定的菜单
+		beego.NSRouter("/Menu/List_All", &controllers.UserController{}, "*:Menu_List_All"), // 权限管理-菜单列表
+
+		// 公司管理
+		beego.NSRouter("/Company/Tree", &controllers.UserController{}, "*:Company_Tree"),   // 公司列表
+		beego.NSRouter("/Company/List", &controllers.UserController{}, "*:Company_List"),   // 所有公司列表
+		beego.NSRouter("/Company/Add", &controllers.UserController{}, "*:Company_Add"),     // 添加公司
+		beego.NSRouter("/Company/Edit", &controllers.UserController{}, "*:Company_Edit"),   // 修改公司
+		beego.NSRouter("/Company/Del", &controllers.UserController{}, "*:Company_Del"),     // 删除公司
+		beego.NSRouter("/Company/Entry", &controllers.UserController{}, "*:Company_Entry"), // 删除公司
+
+	)
+
+	beego.AddNamespace(ns)
 
 }

+ 24 - 1
routers/filter.go

@@ -5,6 +5,7 @@ import (
 	"Cold_Api/controllers/lib"
 	"Cold_Api/models/Account"
 	"github.com/beego/beego/v2/server/web/context"
+	"log"
 	"strings"
 )
 
@@ -35,7 +36,7 @@ var InitSetFilterUrl = func() {
 	}
 }
 
-func FilterRBAC(ctx *context.Context) {
+func RBACFilter(ctx *context.Context) {
 	//判断URL是否排除
 	if _, ok := filterExcludeURLMap[ctx.Request.URL.Path]; ok {
 		return
@@ -70,3 +71,25 @@ func FilterRBAC(ctx *context.Context) {
 	}
 
 }
+
+// 验证需要T_pid访问的接口
+func T_pidFilter(ctx *context.Context) {
+	GetCookie := ctx.GetCookie("User_tokey")
+	GetString := ctx.Input.Query("User_tokey")
+
+	User_tokey := GetCookie
+	if len(User_tokey) == 0 {
+		User_tokey = GetString
+	}
+
+	T_pid := lib.Admin_r.T_pid
+	if T_pid == 0 {
+		T_pid, _ = Account.Redis_Tokey_T_pid_Get(User_tokey)
+	}
+	// fixme 如果逻辑正常,不需要做pid验证
+	//if T_pid == 0 {
+	//	data := lib.JSONS{Code: 202, Msg: "T_pid Err!"}
+	//	ctx.Output.JSON(data, true, false)
+	//}
+	log.Println("T_pid", T_pid)
+}

+ 2 - 2
routers/router.go

@@ -10,7 +10,7 @@ func init() {
 	var version = conf.Version
 
 	// 公共
-	beego.Router(version+"/UpFile", &controllers.UpFileController{}, "*:UpFile")
+	//beego.Router(version+"/UpFile", &controllers.UpFileController{}, "*:UpFile")
 	beego.Router(version+"/UpFileToken", &controllers.UpFileController{}, "*:ConfigUpFileToken")
 
 	// 系统日志
@@ -20,6 +20,6 @@ func init() {
 	//初始化配置 不鉴权的URL和只鉴权登录的URL
 	InitSetFilterUrl()
 	//过滤器,拦截所有请求
-	//beego.InsertFilter("/*", beego.BeforeRouter, FilterRBAC)
+	//beego.InsertFilter("/*", beego.BeforeRouter, RBACFilter)
 
 }

+ 88 - 78
routers/v3.go

@@ -7,93 +7,103 @@ import (
 )
 
 func init() {
-	var version = conf.Version
-	//设备
-	beego.Router(version+"/Device/List", &controllers.DeviceController{}, "*:Device_List")                                        // 设备列表
-	beego.Router(version+"/Device/Add", &controllers.DeviceController{}, "*:Device_Add")                                          // 添加设备
-	beego.Router(version+"/Device/Del", &controllers.DeviceController{}, "*:Device_Del")                                          // 删除设备
-	beego.Router(version+"/Device/Edit", &controllers.DeviceController{}, "*:Device_Edit")                                        // 修改设备
-	beego.Router(version+"/Device/RestartShutdown", &controllers.DeviceController{}, "*:Device_RestartShutdown")                  // 重启/关机
-	beego.Router(version+"/Device/Parameter_List", &controllers.DeviceController{}, "*:Device_Parameter_List")                    // 设备参数列表
-	beego.Router(version+"/Device/Parameter_Pu", &controllers.DeviceController{}, "*:Device_Parameter_Pu")                        // 修改设备参数
-	beego.Router(version+"/Device/Device_Parameter_Del_Device", &controllers.DeviceController{}, "*:Device_Parameter_Del_Device") // 删除此设备
-	// 设备日志
-	beego.Router(version+"/Device/Log", &controllers.DeviceController{}, "*:DeviceLogs") // 获取未读消息
+	ns := beego.NewNamespace(conf.Version,
+		beego.NSNamespace("/Device",
+			beego.NSBefore(T_pidFilter),
+			//设备
+			beego.NSRouter("/List", &controllers.DeviceController{}, "*:Device_List"), // 设备列表
+			beego.NSRouter("/Add", &controllers.DeviceController{}, "*:Device_Add"),   // 添加设备
+			//beego.NSRouter("/Del", &controllers.DeviceController{}, "*:Device_Del"),                                          // 删除设备
+			beego.NSRouter("/Edit", &controllers.DeviceController{}, "*:Device_Edit"),                                        // 修改设备
+			beego.NSRouter("/RestartShutdown", &controllers.DeviceController{}, "*:Device_RestartShutdown"),                  // 重启/关机
+			beego.NSRouter("/Parameter_List", &controllers.DeviceController{}, "*:Device_Parameter_List"),                    // 设备参数列表
+			beego.NSRouter("/Parameter_Pu", &controllers.DeviceController{}, "*:Device_Parameter_Pu"),                        // 修改设备参数
+			beego.NSRouter("/Device_Parameter_Del_Device", &controllers.DeviceController{}, "*:Device_Parameter_Del_Device"), // 删除此设备
+			// 设备日志
+			beego.NSRouter("/Log", &controllers.DeviceController{}, "*:DeviceLogs"), // 获取未读消息
 
-	// 修改设备参数
-	beego.Router(version+"/Device/Pu_DeviceParameter_T_l_p", &controllers.DeviceController{}, "*:Pu_DeviceParameter_T_type")  // 设置设备参数
-	beego.Router(version+"/Device/Pu_DeviceParameter_T_give", &controllers.DeviceController{}, "*:Pu_DeviceParameter_T_give") // 设备是否弃用
+			// 修改设备参数
+			beego.NSRouter("/Pu_DeviceParameter_T_l_p", &controllers.DeviceController{}, "*:Pu_DeviceParameter_T_type"),  // 设置设备参数
+			beego.NSRouter("/Pu_DeviceParameter_T_give", &controllers.DeviceController{}, "*:Pu_DeviceParameter_T_give"), // 设备是否弃用
 
-	// 同步传感器
-	beego.Router(version+"/Device/Read_DeviceSensorParameter", &controllers.DeviceController{}, "*:Read_DeviceSensorParameter") // 获取传感器参数
+			// 设备任务
+			beego.NSRouter("/DeviceTask_List", &controllers.DeviceController{}, "*:DeviceTask_List"), // 任务列表
+			beego.NSRouter("/DeviceTask_Post", &controllers.DeviceController{}, "*:DeviceTask_Post"), // 远程启停
 
-	// 设备-传感器
-	beego.Router(version+"/DeviceSensor/List", &controllers.DeviceController{}, "*:DeviceSensor_List")                     // 传感器列表
-	beego.Router(version+"/DeviceSensor/Edit", &controllers.DeviceController{}, "*:DeviceSensor_Edit")                     // 修改传感器
-	beego.Router(version+"/DeviceSensor/Del", &controllers.DeviceController{}, "*:DeviceSensor_Del")                       // 删除传感器
-	beego.Router(version+"/DeviceSensor/Parameter_List", &controllers.DeviceController{}, "*:DeviceSensor_Parameter_List") // 传感器参数列表
-	beego.Router(version+"/DeviceSensor/Parameter_Pu", &controllers.DeviceController{}, "*:DeviceSensor_Parameter_Pu")     // 修改传感器参数
+			// 分类绑定
+			beego.NSRouter("/DeviceClassBind_List", &controllers.DeviceController{}, "*:DeviceClassBind_List"), // 设备传感器绑定的分类列表
+			// 报警策略绑定
+			beego.NSRouter("/DeviceNoticeBind_List", &controllers.DeviceController{}, "*:DeviceNoticeBind_List"), // 设备传感器绑定的报警策略列表
 
-	// 传感器管理列表
-	beego.Router(version+"/DeviceSensor/Manage_List", &controllers.DeviceController{}, "*:DeviceSensor_Manage_List") // 传感器管理列表
+			//beego.NSRouter("/UpDeviceSensor_Tsort", &controllers.DeviceController{}, "*:UpDeviceSensor_Tsort"),           // 传感器排序
+			//beego.NSRouter("/UpDeviceSensor_T3dview", &controllers.DeviceController{}, "*:UpDeviceSensor_T3dview"),       // 传感器3D视图
+			//beego.NSRouter("/UpDeviceSensor_T_datashow", &controllers.DeviceController{}, "*:UpDeviceSensor_T_datashow"), // 传感器屏蔽数据展示
+			//beego.NSRouter("/DeviceWarningListT_Tips", &controllers.DeviceController{}, "*:DeviceWarningList_T_Tips"), // 获取未读消息
 
-	beego.Router(version+"/Device/UpDeviceSensor_Tsort", &controllers.DeviceController{}, "*:UpDeviceSensor_Tsort")           // 传感器排序
-	beego.Router(version+"/Device/UpDeviceSensor_T3dview", &controllers.DeviceController{}, "*:UpDeviceSensor_T3dview")       // 传感器3D视图
-	beego.Router(version+"/Device/UpDeviceSensor_T_datashow", &controllers.DeviceController{}, "*:UpDeviceSensor_T_datashow") // 传感器屏蔽数据展示
+		),
 
-	// 设备任务
-	beego.Router(version+"/Device/DeviceTask_List", &controllers.DeviceController{}, "*:DeviceTask_List") // 任务列表
-	beego.Router(version+"/Device/DeviceTask_Post", &controllers.DeviceController{}, "*:DeviceTask_Post") // 远程启停
+		// 传感器
+		beego.NSNamespace("/DeviceSensor",
+			beego.NSBefore(T_pidFilter),
+			// 设备-传感器
+			beego.NSRouter("/List", &controllers.DeviceController{}, "*:DeviceSensor_List"),                     // 传感器列表
+			beego.NSRouter("/Edit", &controllers.DeviceController{}, "*:DeviceSensor_Edit"),                     // 修改传感器
+			beego.NSRouter("/Del", &controllers.DeviceController{}, "*:DeviceSensor_Del"),                       // 删除传感器
+			beego.NSRouter("/Parameter_List", &controllers.DeviceController{}, "*:DeviceSensor_Parameter_List"), // 传感器参数列表
+			beego.NSRouter("/Parameter_Pu", &controllers.DeviceController{}, "*:DeviceSensor_Parameter_Pu"),     // 修改传感器参数
+			// 传感器管理列表
+			beego.NSRouter("/Manage_List", &controllers.DeviceController{}, "*:DeviceSensor_Manage_List"), // 传感器管理列表
 
-	// 设备报警
-	beego.Router(version+"/DeviceWarning/List", &controllers.DeviceController{}, "*:DeviceWarning_List")                   // 告警列表
-	beego.Router(version+"/DeviceWarning/Get", &controllers.DeviceController{}, "*:DeviceWarning_Get")                     // 获取告警
-	beego.Router(version+"/DeviceWarning/Edit", &controllers.DeviceController{}, "*:DeviceWarning_Post")                   // 修改告警 报警处理
-	beego.Router(version+"/DeviceWarning/Del", &controllers.DeviceController{}, "*:DeviceWarning_Del")                     // 删除告警
-	beego.Router(version+"/DeviceWarning/ToExcel", &controllers.DeviceController{}, "*:DeviceWarning_Data_Excel")          // 导出excel
-	beego.Router(version+"/Device/DeviceWarningListT_Tips", &controllers.DeviceController{}, "*:DeviceWarningList_T_Tips") // 获取未读消息
+		),
+		// 设备报警
+		beego.NSNamespace("/DeviceWarning",
+			beego.NSRouter("/List", &controllers.DeviceController{}, "*:DeviceWarning_List"),          // 告警列表
+			beego.NSRouter("/Get", &controllers.DeviceController{}, "*:DeviceWarning_Get"),            // 获取告警
+			beego.NSRouter("/Edit", &controllers.DeviceController{}, "*:DeviceWarning_Post"),          // 修改告警 报警处理
+			beego.NSRouter("/Del", &controllers.DeviceController{}, "*:DeviceWarning_Del"),            // 删除告警
+			beego.NSRouter("/ToExcel", &controllers.DeviceController{}, "*:DeviceWarning_Data_Excel"), // 导出excel
 
-	// 报警类型
-	beego.Router(version+"/WarningType/List_All", &controllers.DeviceController{}, "*:WarningType_List_All")         // 添加权限-告警类型列表
-	beego.Router(version+"/WarningType/Power_List", &controllers.DeviceController{}, "*:WarningType_Power_List_All") // 报警搜索-告警类型列表
+		),
+		// 报警类型
+		beego.NSNamespace("/WarningType",
+			beego.NSRouter("/List_All", &controllers.DeviceController{}, "*:WarningType_List_All"),         // 添加权限-告警类型列表
+			beego.NSRouter("/Power_List", &controllers.DeviceController{}, "*:WarningType_Power_List_All"), // 报警搜索-告警类型列表
+		),
+		// 分类
+		beego.NSNamespace("/Class",
+			beego.NSBefore(T_pidFilter),
+			beego.NSRouter("/List", &controllers.DeviceController{}, "*:CompanyClass_List"), // 分类列表
+			beego.NSRouter("/All", &controllers.DeviceController{}, "*:CompanyClass_All"),   // 所有分类列表
+			beego.NSRouter("/Get", &controllers.DeviceController{}, "*:CompanyClass_Get"),   // 获取分类
+			beego.NSRouter("/Add", &controllers.DeviceController{}, "*:CompanyClass_Add"),   // 添加分类
+			beego.NSRouter("/Edit", &controllers.DeviceController{}, "*:CompanyClass_Edit"), // 修改分类
+			beego.NSRouter("/Del", &controllers.DeviceController{}, "*:CompanyClass_Del"),   // 删除分类
+			// 分类绑定
+			beego.NSRouter("/Bind_Add", &controllers.DeviceController{}, "*:ClassBind_Add"), // 添加分类设备绑定
+			beego.NSRouter("/Bind_Del", &controllers.DeviceController{}, "*:ClassBind_Del"), // 删除分类设备绑定
+		),
+		//报警策略
+		beego.NSNamespace("/Notice",
+			beego.NSBefore(T_pidFilter),
+			beego.NSRouter("/List", &controllers.DeviceController{}, "*:CompanyNotice_List"), // 报警策略列表
+			beego.NSRouter("/All", &controllers.DeviceController{}, "*:CompanyNotice_All"),   // 所有报警策略列表
+			beego.NSRouter("/Get", &controllers.DeviceController{}, "*:CompanyNotice_Get"),   // 获取报警策略
+			beego.NSRouter("/Add", &controllers.DeviceController{}, "*:CompanyNotice_Add"),   // 添加报警策略
+			beego.NSRouter("/Edit", &controllers.DeviceController{}, "*:CompanyNotice_Edit"), // 修改报警策略
+			beego.NSRouter("/Del", &controllers.DeviceController{}, "*:CompanyNotice_Del"),   // 删除报警策略
+			// 报警策略绑定
+			beego.NSRouter("/Bind_Add", &controllers.DeviceController{}, "*:NoticeBind_Add"), // 添加报警策略绑定
+			beego.NSRouter("/Bind_Del", &controllers.DeviceController{}, "*:NoticeBind_Del"), // 删除报警策略绑定
+			// 报警通知用户列表
+			beego.NSRouter("/User_List", &controllers.UserController{}, "*:User_Notice_List"), // 报警通知用户列表
+		),
 
-	//分类管理
-	beego.Router(version+"/Class/List", &controllers.DeviceController{}, "*:CompanyClass_List") // 分类列表
-	beego.Router(version+"/Class/All", &controllers.DeviceController{}, "*:CompanyClass_All")   // 所有分类列表
-	beego.Router(version+"/Class/Get", &controllers.DeviceController{}, "*:CompanyClass_Get")   // 获取分类
-	beego.Router(version+"/Class/Add", &controllers.DeviceController{}, "*:CompanyClass_Add")   // 添加分类
-	beego.Router(version+"/Class/Edit", &controllers.DeviceController{}, "*:CompanyClass_Edit") // 修改分类
-	beego.Router(version+"/Class/Del", &controllers.DeviceController{}, "*:CompanyClass_Del")   // 删除分类
-	// 分类绑定
-	beego.Router(version+"/Device/DeviceClassBind_List", &controllers.DeviceController{}, "*:DeviceClassBind_List") // 已绑定传感器列表
-	beego.Router(version+"/Class/Bind_Add", &controllers.DeviceController{}, "*:ClassBind_Add")                     // 添加分类设备绑定
-	beego.Router(version+"/Class/Bind_Del", &controllers.DeviceController{}, "*:ClassBind_Del")                     // 删除分类设备绑定
+		// 设备类型
+		beego.NSNamespace("/DeviceType",
+			beego.NSRouter("Type/List_All", &controllers.DeviceController{}, "*:DeviceType_List_All"), // 传感器设备类型列表
+		),
+	)
 
-	//报警策略
-	beego.Router(version+"/Notice/List", &controllers.DeviceController{}, "*:CompanyNotice_List") // 报警策略列表
-	beego.Router(version+"/Notice/All", &controllers.DeviceController{}, "*:CompanyNotice_All")   // 所有报警策略列表
-	beego.Router(version+"/Notice/Get", &controllers.DeviceController{}, "*:CompanyNotice_Get")   // 获取报警策略
-	beego.Router(version+"/Notice/Add", &controllers.DeviceController{}, "*:CompanyNotice_Add")   // 添加报警策略
-	beego.Router(version+"/Notice/Edit", &controllers.DeviceController{}, "*:CompanyNotice_Edit") // 修改报警策略
-	beego.Router(version+"/Notice/Del", &controllers.DeviceController{}, "*:CompanyNotice_Del")   // 删除报警策略
-	// 报警策略绑定
-	beego.Router(version+"/Device/DeviceNoticeBind_List", &controllers.DeviceController{}, "*:DeviceNoticeBind_List") // 报警策略绑定列表
-	beego.Router(version+"/Notice/Bind_Add", &controllers.DeviceController{}, "*:NoticeBind_Add")                     // 添加报警策略绑定
-	beego.Router(version+"/Notice/Bind_Del", &controllers.DeviceController{}, "*:NoticeBind_Del")                     // 删除报警策略绑定
-	// 报警通知用户列表
-	beego.Router(version+"/Notice/User_List", &controllers.UserController{}, "*:User_Notice_List") // 报警通知用户列表
+	beego.AddNamespace(ns)
 
-	beego.Router(version+"/Data/Device_Sensor", &controllers.DataController{}, "*:Device_Sensor_Get")                       // 获取传感器
-	beego.Router(version+"/Data/Device_Sensor_List", &controllers.DataController{}, "*:Device_Sensor_List")                 // 传感器列表
-	beego.Router(version+"/Data/Device_Sensor_Data", &controllers.DataController{}, "*:Device_Sensor_Data")                 // 传感器数据
-	beego.Router(version+"/Data/Device_Sensor_Data_Excel", &controllers.DataController{}, "*:Device_Sensor_Data_Excel")     // 导出传感器数据
-	beego.Router(version+"/Data/Device_Sensor_Data_Excel_m", &controllers.DataController{}, "*:Device_Sensor_Data_Excel_m") // 导出传感器数据
-
-	beego.Router(version+"/Data/List", &controllers.DataController{}, "*:Device_Sensor_Data_More")   // 设备数据列表
-	beego.Router(version+"/Data/Excel", &controllers.DataController{}, "*:Device_Sensor_Data_Excel") // 导出设备数据列表excel
-	beego.Router(version+"/Data/PDF", &controllers.DataController{}, "*:Device_Sensor_Data_PDF")     // 设备数据列表pdf
-	// 执行 SQL
-	beego.Router(version+"/Data/Raw", &controllers.RawSqlController{}, "*:Raw") // 执行 SQL
-
-	beego.Router(version+"/DeviceType/List_All", &controllers.DeviceController{}, "*:DeviceType_List_All") // 传感器设备列表
 }

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.