Menu.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package Account
  2. import (
  3. "ERP_user/conf"
  4. "encoding/json"
  5. "fmt"
  6. menulibs "git.baozhida.cn/ERP_libs/Menu"
  7. "git.baozhida.cn/ERP_libs/lib"
  8. "github.com/astaxie/beego/cache"
  9. _ "github.com/astaxie/beego/cache/redis"
  10. "github.com/astaxie/beego/logs"
  11. "github.com/beego/beego/v2/adapter/orm"
  12. "time"
  13. )
  14. var redisCache_API cache.Cache
  15. var redisCache_Menu cache.Cache
  16. func init() {
  17. //注册模型
  18. orm.RegisterModel(new(menulibs.Menu))
  19. orm.RegisterModel(new(menulibs.API))
  20. var err error
  21. menuConfig := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  22. "redis_User_Menu", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  23. fmt.Println(menuConfig)
  24. redisCache_Menu, err = cache.NewCache("redis", menuConfig)
  25. if err != nil || redisCache_Menu == nil {
  26. errMsg := "failed to init redis menu"
  27. logs.Error(errMsg, err)
  28. panic(errMsg)
  29. }
  30. apiConfig := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  31. "redis_ERP_USER_API", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  32. fmt.Println(apiConfig)
  33. redisCache_API, err = cache.NewCache("redis", apiConfig)
  34. if err != nil || redisCache_API == nil {
  35. errMsg := "failed to init redis api"
  36. logs.Error(errMsg, err)
  37. panic(errMsg)
  38. }
  39. }
  40. func Redis_Munu_Set(T_power_id string, r []menulibs.Menu) (err error) {
  41. //json序列化
  42. str, err := json.Marshal(r)
  43. if err != nil {
  44. logs.Error(lib.FuncName(), err)
  45. return
  46. }
  47. err = redisCache_Menu.Put(T_power_id, str, 24*time.Hour)
  48. if err != nil {
  49. logs.Error("set key:", T_power_id+",value:", str, err)
  50. }
  51. return
  52. }
  53. func Redis_Menu_Get(T_power_id string) (r []menulibs.Menu, is bool) {
  54. if redisCache_Menu.IsExist(T_power_id) {
  55. //println("找到key:",key)
  56. v := redisCache_Menu.Get(T_power_id)
  57. err := json.Unmarshal(v.([]byte), &r)
  58. if err != nil {
  59. logs.Error(lib.FuncName(), err)
  60. return r, false
  61. }
  62. return r, true
  63. }
  64. return r, false
  65. }
  66. func Redis_Menu_DelK(T_power_id string) (err error) {
  67. err = redisCache_Menu.Delete(T_power_id)
  68. if err != nil {
  69. logs.Error(lib.FuncName(), err)
  70. return
  71. }
  72. return
  73. }
  74. func Read_Menu_List() ([]menulibs.Menu, error) {
  75. o := orm.NewOrm()
  76. MenuDao := menulibs.NewMenu(o)
  77. m, err := MenuDao.Read_Menu_List()
  78. if err != nil {
  79. logs.Error(lib.FuncName(), err)
  80. return nil, err
  81. }
  82. return m, nil
  83. }
  84. // Read_User_Bind_Menu_List 获取用户绑定的菜单列表
  85. func Read_User_Bind_Menu_List(T_Menu string) ([]menulibs.Menu, error) {
  86. o := orm.NewOrm()
  87. MenuDao := menulibs.NewMenu(o)
  88. m, err := MenuDao.Read_Menu_List_ByPower_T_Menu(T_Menu)
  89. if err != nil {
  90. logs.Error(lib.FuncName(), err)
  91. return nil, err
  92. }
  93. return m, nil
  94. }
  95. // 获取列表
  96. func Read_API_List_ByPower(T_power_id string, Menu_Bind string) (maps []menulibs.API) {
  97. if len(Menu_Bind) == 0 {
  98. return
  99. }
  100. o := orm.NewOrm()
  101. APIDao := menulibs.NewAPI(o, redisCache_API)
  102. maps, err := APIDao.Read_API_List_ByPower(T_power_id, Menu_Bind)
  103. if err != nil {
  104. logs.Error(lib.FuncName(), err)
  105. return
  106. }
  107. return maps
  108. }