Company.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package Account
  2. import (
  3. "Cold_Data/conf"
  4. "Cold_Data/logs"
  5. "encoding/json"
  6. "fmt"
  7. "github.com/astaxie/beego/cache"
  8. _ "github.com/astaxie/beego/cache/redis"
  9. "github.com/beego/beego/v2/adapter/orm"
  10. _ "github.com/go-sql-driver/mysql"
  11. "strconv"
  12. "time"
  13. )
  14. type Company struct {
  15. Id int `orm:"column(ID);size(11);auto;pk"`
  16. T_mid int `orm:"size(200);"` // 上一级 ID
  17. T_name string `orm:"size(256);"` // 公司名称
  18. T_key string `orm:"size(256);index;"` // 公司密钥
  19. T_warning int `orm:"size(20);default(1)"` // 是否处理报警信息 1处理 2不处理
  20. T_plan string `orm:"type(text);null"` // 平面图
  21. T_data string `orm:"type(text);null"` // 大数据
  22. T_v3d string `orm:"type(text);null"` // 3D 视图
  23. T_path string `orm:"size(256);null"` // 公司路径 /0/1/5/
  24. T_money float32 `orm:"digits(12);decimals(2)"` // 余额
  25. T_Charging int `orm:"size(11);default(0)"` // 记账扣费 公司ID 默认为:0 (自己)
  26. T_State int `orm:"size(200);"` // 0删除 1 正常
  27. CreateTime time.Time `orm:"column(create_time);type(timestamp);auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
  28. UpdateTime time.Time `orm:"column(update_time);type(timestamp);auto_now"` //auto_now_add 第一次保存时才设置时间
  29. }
  30. func (t *Company) TableName() string {
  31. return "company" // 数据库名称 // ************** 替换 FormulaList **************
  32. }
  33. var redisCache_Company cache.Cache
  34. func init() {
  35. //注册模型
  36. orm.RegisterModel(new(Company))
  37. config := fmt.Sprintf(`{"key":"%s","conn":"%s","dbNum":"%s","password":"%s"}`,
  38. "redis_User_Company", conf.Redis_address, conf.Redis_dbNum, conf.Redis_password)
  39. logs.Println(config)
  40. var err error
  41. redisCache_Company, err = cache.NewCache("redis", config)
  42. if err != nil || redisCache_Company == nil {
  43. errMsg := "failed to init redis"
  44. logs.Println(errMsg, err)
  45. }
  46. }
  47. // ---------------- Redis -------------------
  48. // Redis_Set(m.T_sn,m) // Redis 更新缓存
  49. func Redis_Company_Set(r Company) (err error) {
  50. //json序列化
  51. str, err := json.Marshal(r)
  52. if err != nil {
  53. logs.PrintlnError("Redis_Company_Set", err)
  54. return
  55. }
  56. err = redisCache_Company.Put(strconv.Itoa(r.Id), str, 24*time.Hour)
  57. if err != nil {
  58. logs.Println("set key:", strconv.Itoa(r.Id), ",value:", str, err)
  59. }
  60. return
  61. }
  62. // if r,is :=Redis_Get(T_sn);is{
  63. // return r,nil
  64. // }
  65. func Redis_Company_Get(key string) (r Company, is bool) {
  66. if redisCache_Company.IsExist(key) {
  67. //println("找到key:",key)
  68. v := redisCache_Company.Get(key)
  69. json.Unmarshal(v.([]byte), &r)
  70. return r, true
  71. }
  72. //println("没有 找到key:",key)
  73. return Company{}, false
  74. }
  75. func Redis_Company_DelK(key string) (err error) {
  76. err = redisCache_Company.Delete(key)
  77. return
  78. }
  79. // ---------------- 特殊方法 -------------------
  80. // 获取 ById
  81. func Read_Company_id(Id int) (e error, r Company) {
  82. if r, is := Redis_Company_Get(strconv.Itoa(Id)); is {
  83. //println("Redis_Get OK")
  84. return nil, r
  85. }
  86. o := orm.NewOrm()
  87. qs := o.QueryTable(new(Company))
  88. e = qs.Filter("Id", Id).Filter("T_State", 1).One(&r)
  89. return e, r
  90. }
  91. // 修改
  92. func Update_Company(m Company, cols ...string) bool {
  93. o := orm.NewOrm()
  94. if num, err := o.Update(&m, cols...); err == nil {
  95. logs.Println("Number of records updated in database:", num)
  96. Redis_Company_Set(m) // Redis 更新缓存
  97. return true
  98. }
  99. return false
  100. }
  101. // 获取全部
  102. func Read_Company_All() (r_l []Company) {
  103. o := orm.NewOrm()
  104. qs := o.QueryTable(new(Company))
  105. qs.Filter("T_State", 1).All(&r_l)
  106. return
  107. }
  108. // 获取全部
  109. func Read_Company_T_mid_All(T_mid int) (r_l []Company) {
  110. o := orm.NewOrm()
  111. qs := o.QueryTable(new(Company))
  112. qs.Filter("T_State", 1).Filter("T_mid", T_mid).All(&r_l)
  113. return
  114. }
  115. // 获取 ById
  116. func Read_Company_T_key(T_key string) (r Company, e error) {
  117. o := orm.NewOrm()
  118. qs := o.QueryTable(new(Company))
  119. e = qs.Filter("T_key", T_key).Filter("T_State", 1).One(&r)
  120. return r, e
  121. }