Company.go 4.1 KB

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