浏览代码

add:添加nats管理员工单统计

zoie 2 年之前
父节点
当前提交
c53680312a
共有 11 个文件被更改,包括 168 次插入114 次删除
  1. 6 0
      Makefile
  2. 29 1
      Nats/Nats.go
  3. 18 63
      controllers/WorkOrder.go
  4. 1 1
      lib/lib.go
  5. 11 2
      lib/libString.go
  6. 1 1
      main.go
  7. 20 4
      models/Account/Admin.go
  8. 19 5
      models/Account/Company.go
  9. 53 28
      models/WorkOrder/WorkOrder.go
  10. 6 6
      routers/WorkOrder.go
  11. 4 3
      routers/filter.go

+ 6 - 0
Makefile

@@ -0,0 +1,6 @@
+build:
+	@echo "+ build"
+	go build -o Cold_WorkOrder6240 main.go
+build-linux:
+	@echo "+ build linux"
+	GOOS=linux GOARCH=amd64 go build -o Cold_WorkOrder6240 main.go

+ 29 - 1
Nats/Nats.go

@@ -4,6 +4,7 @@ import (
 	"Cold_WorkOrder/conf"
 	"Cold_WorkOrder/lib"
 	"Cold_WorkOrder/models/Account"
+	"Cold_WorkOrder/models/WorkOrder"
 	"fmt"
 	"github.com/nats-io/nats.go"
 	"github.com/vmihailenco/msgpack/v5"
@@ -21,6 +22,33 @@ func Init() {
 	}
 	fmt.Println("nats OK!")
 
+	go NatsInit()
+
+}
+
+func NatsInit() {
+	// 请求-响应 获取工单总数
+	_, _ = lib.Nats.Subscribe("Cold_WorkOrder_Read_WorkOrderT_State_Count", func(m *nats.Msg) {
+		fmt.Printf("Cold_WorkOrder_Read_WorkOrderT_State_Count message: %s\n", string(m.Data))
+
+		type T_R struct {
+			Code                  int16  `xml:"Code"`
+			Msg                   string `xml:"Msg"`
+			WorkOrderNum          int64  // 工单数量
+			UntreatedWorkOrderNum int64  // 未处理工单数量
+		}
+
+		var t_R T_R
+
+		t_R.WorkOrderNum = WorkOrder.Read_WorkOrder_ALL_T_State_Count(string(m.Data), 0)
+		t_R.UntreatedWorkOrderNum = WorkOrder.Read_WorkOrder_ALL_T_State_Count(string(m.Data), 2)
+
+		t_R.Code = 200
+		t_R.Msg = "ok"
+
+		b, _ := msgpack.Marshal(&t_R)
+		_ = lib.Nats.Publish(m.Reply, b)
+	})
 }
 
 // 验证TOKEY
@@ -82,7 +110,7 @@ func UserListAll() (list []Account.User) {
 	if err != nil {
 		return list
 	}
-	fmt.Printf("UserListAll: %s\n", string(msg.Data))
+	fmt.Printf("UserListAll: %v\n", string(msg.Data))
 	type T_R struct {
 		Code int16          `xml:"Code"`
 		Msg  string         `xml:"Msg"`

+ 18 - 63
controllers/WorkOrder.go

@@ -16,13 +16,7 @@ type WorkOrderController struct {
 
 // 列表 -
 func (c *WorkOrderController) List() {
-	b_, user_r := Nats.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-	if user_r.T_pid > 0 {
+	if Account.User_r.T_pid > 0 {
 		c.Data["json"] = lib.JSONS{Code: 201, Msg: "无权查看!"}
 		c.ServeJSON()
 		return
@@ -38,10 +32,7 @@ func (c *WorkOrderController) List() {
 	}
 
 	Company_name := c.GetString("Company_name")
-	T_Status, err := c.GetInt("T_Status")
-	if err != nil {
-		T_Status = 0
-	}
+	T_handle, _ := c.GetInt("T_handle")
 	var CompanyIds []int
 	var Company_list []Account.Company
 	Company_list = Nats.CompanyListAllByT_name(Company_name)
@@ -50,10 +41,9 @@ func (c *WorkOrderController) List() {
 			CompanyIds = append(CompanyIds, v.Id)
 		}
 	}
-	CompanyMap := Account.CompanyListToMap(Company_list)
-	AdminMap := Account.AdminListToMap(Nats.UserListAll())
+	Account.AdminListToMap(Nats.UserListAll())
 	var cnt int64
-	List, cnt := WorkOrder.Read_WorkOrder_List(T_Status, page, page_z, CompanyIds, CompanyMap, AdminMap)
+	List, cnt := WorkOrder.Read_WorkOrder_List(T_handle, page, page_z, CompanyIds)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.List = List
@@ -69,13 +59,6 @@ func (c *WorkOrderController) List() {
 
 // 列表 -
 func (c *WorkOrderController) User_List() {
-	b_, user_r := Nats.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-
 	var r_jsons lib.R_JSONS
 	page, _ := c.GetInt("page")
 	if page < 1 {
@@ -87,7 +70,7 @@ func (c *WorkOrderController) User_List() {
 	}
 
 	var cnt int64
-	List, cnt := WorkOrder.Read_UserWorkOrder_List(user_r.T_uuid, page, page_z)
+	List, cnt := WorkOrder.Read_UserWorkOrder_List(Account.User_r.T_uuid, page, page_z)
 
 	page_size := math.Ceil(float64(cnt) / float64(page_z))
 	r_jsons.List = List
@@ -103,13 +86,6 @@ func (c *WorkOrderController) User_List() {
 
 // 标签修改-
 func (c *WorkOrderController) Get() {
-	b_, _ := Nats.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-
 	Id, err := c.GetInt("Id")
 	if err != nil || Id == 0 {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
@@ -130,22 +106,15 @@ func (c *WorkOrderController) Get() {
 
 // 添加-
 func (c *WorkOrderController) Add() {
-	b_, user_r := Nats.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-
+	user_r := Account.User_r
 	T_title := c.GetString("T_title")
 	T_text := c.GetString("T_text")
 	var_ := WorkOrder.WorkOrder{
-		T_uuid:       user_r.T_uuid,
-		T_Company_Id: user_r.T_pid,
-		T_title:      T_title,
-		T_text:       T_text,
-		T_Status:     1, // 状态 1 未解决 2 已解决
-		T_State:      1,
+		T_uuid:  user_r.T_uuid,
+		T_pid:   user_r.T_pid,
+		T_title: T_title,
+		T_text:  T_text,
+		T_State: 2, // 1 已解决 2 未解决
 	}
 	Id, err := WorkOrder.Add_WorkOrder(var_)
 	if err != nil {
@@ -163,13 +132,6 @@ func (c *WorkOrderController) Add() {
 
 // 标签修改-
 func (c *WorkOrderController) Up() {
-	b_, user_r := Nats.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-
 	Id, err := c.GetInt("Id")
 	if err != nil || Id == 0 {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
@@ -178,7 +140,7 @@ func (c *WorkOrderController) Up() {
 	}
 	T_title := c.GetString("T_title")
 	T_text := c.GetString("T_text")
-	T_Status, T_Status_err := c.GetInt("T_Status")
+	T_handle, T_handle_err := c.GetInt("T_handle")
 	r, err := WorkOrder.Read_WorkOrder_ById(Id)
 	if err != nil {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加失败!"}
@@ -193,18 +155,18 @@ func (c *WorkOrderController) Up() {
 	if len(T_text) > 0 {
 		r.T_text = T_text
 	}
-	if T_Status_err == nil {
-		r.T_Status = T_Status
+	if T_handle_err == nil {
+		r.T_State = T_handle
 	}
 
 	// .......
-	if !WorkOrder.Update_WorkOrder(r, "T_title", "T_text", "T_Status") {
+	if !WorkOrder.Update_WorkOrder(r, "T_title", "T_text", "T_State") {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
 		c.ServeJSON()
 		return
 	}
 
-	Nats.AddUserLogs(user_r.T_uuid, "工单系统", "修改", r)
+	Nats.AddUserLogs(Account.User_r.T_uuid, "工单系统", "修改", r)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()
@@ -213,13 +175,6 @@ func (c *WorkOrderController) Up() {
 
 // 标签删除-
 func (c *WorkOrderController) Del() {
-	b_, user_r := Nats.Verification(c.Ctx.GetCookie("User_tokey"), c.GetString("User_tokey"))
-	if !b_ {
-		c.Data["json"] = lib.JSONS{Code: 201, Msg: "请重新登录!"}
-		c.ServeJSON()
-		return
-	}
-
 	Id, err := c.GetInt("Id")
 	if err != nil || Id == 0 {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id 错误!"}
@@ -233,13 +188,13 @@ func (c *WorkOrderController) Del() {
 		return
 	}
 
-	if err := WorkOrder.Delete_WorkOrder(r); err != nil {
+	if err = WorkOrder.Delete_WorkOrder(r); err != nil {
 		c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
 		c.ServeJSON()
 		return
 	}
 
-	Nats.AddUserLogs(user_r.T_uuid, "工单系统", "删除", r)
+	Nats.AddUserLogs(Account.User_r.T_uuid, "工单系统", "删除", r)
 
 	c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
 	c.ServeJSON()

+ 1 - 1
lib/lib.go

@@ -301,7 +301,7 @@ func Random(min, max int) int {
 	return rand.Intn(max-min) + min
 }
 
-//取文本(字符串)中间
+// 取文本(字符串)中间
 func GetBetweenStr(str, start, end string) string {
 	n := strings.Index(str, start)
 	if n == -1 {

+ 11 - 2
lib/libString.go

@@ -6,7 +6,7 @@ import (
 	"time"
 )
 
-//#取得随机字符串:通过打乱slice来操作
+// #取得随机字符串:通过打乱slice来操作
 func GetRandstring(length int, char string, rand_x int64) string {
 	if length < 1 {
 		return ""
@@ -34,4 +34,13 @@ func IsDateStr(date string) bool {
 		return false
 	}
 	return true
-}
+}
+
+func SplitStringIds(str string, prefix string) (r []string) {
+	Ids_str := strings.TrimRight(str, "|")
+	Ids := strings.Split(Ids_str, "|")
+	for _, v := range Ids {
+		r = append(r, strings.TrimLeft(v, prefix))
+	}
+	return r
+}

+ 1 - 1
main.go

@@ -37,7 +37,7 @@ func main() {
 		// 可选参数"GET", "POST", "PUT", "DELETE", "OPTIONS" (*为所有)
 		AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
 		// 指的是允许的Header的种类
-		AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
+		AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type", "T_pid"},
 		// 公开的HTTP标头列表
 		ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
 		// 如果设置,则允许共享身份验证凭据,例如cookie

+ 20 - 4
models/Account/Admin.go

@@ -5,6 +5,10 @@ import (
 	_ "github.com/go-sql-driver/mysql"
 )
 
+var User_r User
+
+var AdminMap map[string]string // 泛型
+
 type User struct {
 	T_uuid  string `xml:"T_uuid"`
 	T_pid   int    `xml:"T_pid"`
@@ -16,10 +20,22 @@ type User struct {
 	T_wx    string `xml:"T_wx"`
 }
 
-func AdminListToMap(A []User) map[string]string {
-	maps := make(map[string]string, len(A))
+func init() {
+	AdminMap = make(map[string]string)
+}
+
+func AdminListToMap(A []User) {
 	for _, v := range A {
-		maps[v.T_uuid] = v.T_name
+		AdminMap[v.T_uuid] = v.T_name
+	}
+}
+
+func Read_Admin_Get(T_uuid string) string {
+	// 有先加入 给全部人发消息
+	v, ok := AdminMap[T_uuid] /*如果确定是真实的,则存在,否则不存在 */
+	if ok {
+		return v
+	} else {
+		return ""
 	}
-	return maps
 }

+ 19 - 5
models/Account/Company.go

@@ -7,10 +7,24 @@ type Company struct {
 	T_uids string `xml:"T_uids"` // 绑定用户 Uid|  如:U1|U2|
 }
 
-func CompanyListToMap(list []Company) map[int]string {
-	maps := make(map[int]string, len(list))
-	for _, v := range list {
-		maps[v.Id] = v.T_name
+var CompanyMap map[int]string // 泛型
+
+func init() {
+	CompanyMap = make(map[int]string)
+}
+
+func CompanyListToMap(A []Company) {
+	for _, v := range A {
+		CompanyMap[v.Id] = v.T_name
+	}
+}
+
+func Read_Company_Get(id int) string {
+	// 有先加入 给全部人发消息
+	v, ok := CompanyMap[id] /*如果确定是真实的,则存在,否则不存在 */
+	if ok {
+		return v
+	} else {
+		return ""
 	}
-	return maps
 }

+ 53 - 28
models/WorkOrder/WorkOrder.go

@@ -2,7 +2,9 @@ package WorkOrder
 
 import (
 	"Cold_WorkOrder/conf"
+	"Cold_WorkOrder/lib"
 	"Cold_WorkOrder/logs"
+	"Cold_WorkOrder/models/Account"
 	"fmt"
 	"github.com/beego/beego/v2/adapter/orm"
 	orm2 "github.com/beego/beego/v2/client/orm"
@@ -12,21 +14,20 @@ import (
 
 // 模板
 type WorkOrder struct {
-	Id           int       `orm:"column(ID);size(11);auto;pk"`
-	T_uuid       string    `orm:"size(50);null"`                                         // 提交人uuid
-	T_Company_Id int       `orm:"size(11);null"`                                         // 提交人公司id
-	T_title      string    `orm:"size(256);null"`                                        // 标题
-	T_text       string    `orm:"type(text);null"`                                       // 详情
-	T_Status     int       `orm:"size(2);default(1)"`                                    // 状态 1 未解决 2 已解决
-	T_State      int       `orm:"size(2);default(1)"`                                    // 0 删除   1 正常
-	CreateTime   time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
-	UpdateTime   time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
+	Id         int       `orm:"column(ID);size(11);auto;pk"`
+	T_uuid     string    `orm:"size(50);null"`                                         // 提交人uuid
+	T_pid      int       `orm:"index;size(256);null"`                                  // Account.Company 绑定公司
+	T_title    string    `orm:"size(256);null"`                                        // 标题
+	T_text     string    `orm:"type(text);null"`                                       // 详情
+	T_State    int       `orm:"size(2);default(1)"`                                    // 0 删除   1 已解决 2 未解决
+	CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
+	UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"`     //auto_now 每次 model 保存时都会对时间自动更新
 }
 type WorkOrder_R struct {
-	Id       int    // ID
-	T_title  string //
-	T_text   string // 详情
-	T_Status int    // 状态 0 未解决 1 已解决
+	Id      int    // ID
+	T_title string //
+	T_text  string // 详情
+	T_State int    // 0 删除   1 已解决 2 未解决
 }
 
 type WorkOrder_ struct {
@@ -36,7 +37,7 @@ type WorkOrder_ struct {
 	T_Company_name string // 公司名
 	T_title        string // 标题
 	T_text         string // 详情
-	T_Status       int    // 状态 0 未解决 1 已解决
+	T_State        int    // 状态 0 删除  1 已解决 2 未解决
 }
 
 func (t *WorkOrder) TableName() string {
@@ -54,21 +55,18 @@ func WorkOrderToWorkOrder_R(t WorkOrder) (r WorkOrder_R) {
 	r.T_title = t.T_title
 	r.T_text = t.T_text
 	r.T_text = t.T_text
+	r.T_State = t.T_State
 	return
 }
 
-func WorkOrderToWorkOrder_(t WorkOrder, CompanyMap map[int]string, AdminMap map[string]string) (r WorkOrder_) {
-	if name, ok := CompanyMap[t.T_Company_Id]; ok {
-		r.T_Company_name = name
-	}
-	if name, ok := AdminMap[t.T_uuid]; ok {
-		r.T_name = name
-	}
+func WorkOrderToWorkOrder_(t WorkOrder) (r WorkOrder_) {
+	r.T_Company_name = Account.Read_Company_Get(t.T_pid)
+	r.T_name = Account.Read_Admin_Get(t.T_uuid)
 	r.Id = t.Id
 	r.T_uuid = t.T_uuid
 	r.T_title = t.T_title
 	r.T_text = t.T_text
-	r.T_Status = t.T_Status
+	r.T_State = t.T_State
 	return
 }
 
@@ -124,7 +122,7 @@ func Delete_WorkOrder(m WorkOrder) (err error) {
 }
 
 // 获取列表
-func Read_WorkOrder_List(T_Status int, page int, page_z int, CompanyIds []int, CompanyMap map[int]string, AdminMap map[string]string) (t []WorkOrder_, cnt int64) {
+func Read_WorkOrder_List(T_handle int, page int, page_z int, CompanyIds []int) (t []WorkOrder_, cnt int64) {
 	o := orm.NewOrm()
 
 	// 也可以直接使用 Model 结构体作为表名
@@ -141,9 +139,12 @@ func Read_WorkOrder_List(T_Status int, page int, page_z int, CompanyIds []int, C
 	}
 
 	cond := orm.NewCondition()
-	cond1 := cond.And("T_State", 1)
-	if T_Status > 0 {
-		cond1 = cond1.And("T_Status", T_Status)
+	cond1 := cond.And("T_State__gt", 0)
+	if T_handle == 1 {
+		cond1 = cond1.And("T_State", 1)
+	}
+	if T_handle == 2 {
+		cond1 = cond1.And("T_State", 2)
 	}
 	if len(CompanyIds) > 0 {
 		cond1 = cond1.And("T_Company_Id__in", CompanyIds)
@@ -153,7 +154,7 @@ func Read_WorkOrder_List(T_Status int, page int, page_z int, CompanyIds []int, C
 	cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
 
 	for _, v := range r {
-		t = append(t, WorkOrderToWorkOrder_(v, CompanyMap, AdminMap))
+		t = append(t, WorkOrderToWorkOrder_(v))
 	}
 	return t, cnt
 }
@@ -177,7 +178,7 @@ func Read_UserWorkOrder_List(T_uuid string, page int, page_z int) (t []WorkOrder
 	}
 
 	cond := orm.NewCondition()
-	cond1 := cond.And("T_uuid", T_uuid).And("T_State", 1)
+	cond1 := cond.And("T_uuid", T_uuid).And("T_State__gt", 0)
 
 	qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond1)).OrderBy("Id").All(&r)
 	cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
@@ -186,3 +187,27 @@ func Read_UserWorkOrder_List(T_uuid string, page int, page_z int) (t []WorkOrder
 	}
 	return t, cnt
 }
+
+func Read_WorkOrder_ALL_T_State_Count(T_pids string, T_handle int) (cnt int64) {
+	o := orm.NewOrm()
+	qs := o.QueryTable(new(WorkOrder))
+	cond := orm.NewCondition()
+
+	cond1 := cond.And("T_State__gt", 0)
+
+	if len(T_pids) > 0 && T_pids != "*" {
+		list := lib.SplitStringIds(T_pids, "P")
+		cond1 = cond1.And("T_pid__in", list)
+	}
+
+	//不填或0:所有   1:已处理     2:未处理
+	if T_handle == 1 {
+		cond1 = cond1.And("T_State", 1)
+	}
+	if T_handle == 2 {
+		cond1 = cond1.And("T_State", 2)
+	}
+
+	cnt, _ = qs.SetCond((*orm2.Condition)(cond1)).Count()
+	return cnt
+}

+ 6 - 6
routers/WorkOrder.go

@@ -10,10 +10,10 @@ func init() {
 	var version = conf.Version
 
 	// 工单管理
-	beego.Router(version+"/logx/List", &controllers.WorkOrderController{}, "*:List")           // 列表
-	beego.Router(version+"/logx/User_List", &controllers.WorkOrderController{}, "*:User_List") // 用户列表
-	beego.Router(version+"/logx/Get", &controllers.WorkOrderController{}, "*:Get")             // 获取
-	beego.Router(version+"/logx/Add", &controllers.WorkOrderController{}, "*:Add")             // 添加
-	beego.Router(version+"/logx/Up", &controllers.WorkOrderController{}, "*:Up")               // 编辑
-	beego.Router(version+"/logx/Del", &controllers.WorkOrderController{}, "*:Del")             // 删除
+	beego.Router(version+"/WorkOrder/List", &controllers.WorkOrderController{}, "*:List")           // 列表
+	beego.Router(version+"/WorkOrder/User_List", &controllers.WorkOrderController{}, "*:User_List") // 用户列表
+	beego.Router(version+"/WorkOrder/Get", &controllers.WorkOrderController{}, "*:Get")             // 获取
+	beego.Router(version+"/WorkOrder/Add", &controllers.WorkOrderController{}, "*:Add")             // 添加
+	beego.Router(version+"/WorkOrder/Up", &controllers.WorkOrderController{}, "*:Up")               // 编辑
+	beego.Router(version+"/WorkOrder/Del", &controllers.WorkOrderController{}, "*:Del")             // 删除
 }

+ 4 - 3
routers/filter.go

@@ -3,18 +3,19 @@ package routers
 import (
 	"Cold_WorkOrder/Nats"
 	"Cold_WorkOrder/lib"
+	"Cold_WorkOrder/models/Account"
 	"github.com/beego/beego/v2/server/web/context"
 )
 
 func FilterRBAC(ctx *context.Context) {
-
-	b_, admin := Nats.Verification(ctx.GetCookie("User_tokey"), ctx.Input.Query("User_tokey"))
+	var b_ bool
+	b_, Account.User_r = Nats.Verification(ctx.GetCookie("User_tokey"), ctx.Input.Query("User_tokey"))
 	if !b_ {
 		ctx.Output.JSON(lib.JSONS{Code: 201, Msg: "请重新登陆!"}, true, false)
 		return
 	}
 
-	flag := Nats.CheckUserPermissions(admin.T_power, ctx.Request.URL.Path)
+	flag := Nats.CheckUserPermissions(Account.User_r.T_power, ctx.Request.URL.Path)
 
 	if !flag {
 		data := lib.JSONS{Code: 201, Msg: "无权访问!"}