Tag.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package Tag
  2. import (
  3. "FollowUp_Notice/logs"
  4. "git.baozhida.cn/ERP_libs/lib"
  5. _ "github.com/astaxie/beego/cache/redis"
  6. "github.com/beego/beego/v2/adapter/orm"
  7. orm2 "github.com/beego/beego/v2/client/orm"
  8. _ "github.com/go-sql-driver/mysql"
  9. "sync"
  10. "time"
  11. )
  12. // 仓库
  13. type Tag struct {
  14. Id int `orm:"column(ID);size(11);auto;pk"`
  15. T_uid int `orm:"size(200);default(1)"` // 关联的用户id
  16. T_name string `orm:"size(256);null"` // 名称
  17. T_State int `orm:"size(2);default(1)"` // 0 删除(伪删除) 1 正常
  18. T_sort int `orm:"size(20);default(0)"` // 排序
  19. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now_add 第一次保存时才设置时间
  20. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now 每次 model 保存时都会对时间自动更新
  21. }
  22. func (t *Tag) TableName() string {
  23. return "tag"
  24. }
  25. var Tag_list *sync.Map
  26. func init() {
  27. //注册模型
  28. orm.RegisterModel(new(Tag))
  29. Tag_list = new(sync.Map)
  30. }
  31. type Tag_R struct {
  32. Id int
  33. T_name string // 名称
  34. T_sort int
  35. }
  36. func TagToTag_R(t Tag) (r Tag_R) {
  37. r.Id = t.Id
  38. r.T_name = t.T_name
  39. r.T_sort = t.T_sort
  40. return r
  41. }
  42. // 添加
  43. func Add_Tag(r Tag) (id int64, err error) {
  44. o := orm.NewOrm()
  45. id, err = o.Insert(&r)
  46. if err != nil {
  47. logs.Error(lib.FuncName(), err)
  48. }
  49. return id, err
  50. }
  51. // 获取 ById
  52. func Read_Tag_ById(Id int) (r Tag, err error) {
  53. o := orm.NewOrm()
  54. qs := o.QueryTable(new(Tag))
  55. err = qs.Filter("Id", Id).One(&r)
  56. if err != nil {
  57. logs.Error(lib.FuncName(), err)
  58. }
  59. return
  60. }
  61. // 修改
  62. func Update_Tag(m Tag, cols ...string) error {
  63. o := orm.NewOrm()
  64. _, err := o.Update(&m, cols...)
  65. if err != nil {
  66. logs.Error(lib.FuncName(), err)
  67. return err
  68. }
  69. return nil
  70. }
  71. // 删除
  72. func Delete_Tag(v Tag) error {
  73. o := orm.NewOrm()
  74. v.T_State = 0
  75. _, err := o.Update(&v, "T_State")
  76. if err != nil {
  77. logs.Error(lib.FuncName(), err)
  78. }
  79. return err
  80. }
  81. // 获取列表
  82. func Read_Tag_List(uid int, T_name string, page, page_z int) (r_ []Tag_R, cnt int64) {
  83. o := orm.NewOrm()
  84. // 也可以直接使用 Model 结构体作为表名
  85. qs := o.QueryTable(new(Tag))
  86. var offset int64
  87. if page <= 1 {
  88. offset = 0
  89. } else {
  90. offset = int64((page - 1) * page_z)
  91. }
  92. // 过滤
  93. cond := orm.NewCondition()
  94. cond = cond.And("T_State", 1).And("T_uid", uid)
  95. if len(T_name) > 0 {
  96. cond = cond.And("T_name__icontains", T_name)
  97. }
  98. // 查询
  99. var r []Tag
  100. var err error
  101. if page_z == 9999 {
  102. _, err = qs.SetCond((*orm2.Condition)(cond)).OrderBy("T_sort").All(&r)
  103. } else {
  104. _, err = qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("T_sort").All(&r)
  105. }
  106. if err != nil {
  107. logs.Error(lib.FuncName(), err)
  108. return
  109. }
  110. cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count()
  111. if err != nil {
  112. logs.Error(lib.FuncName(), err)
  113. return
  114. }
  115. for _, v := range r {
  116. r_ = append(r_, TagToTag_R(v))
  117. }
  118. return r_, cnt
  119. }
  120. // 获取疾病
  121. func Read_Tag_All_Map() {
  122. o := orm.NewOrm()
  123. var r []Tag
  124. qs := o.QueryTable(new(Tag))
  125. _, err := qs.All(&r)
  126. if err != nil {
  127. logs.Error(lib.FuncName(), err)
  128. }
  129. for _, v := range r {
  130. Tag_list.Store(v.Id, v.T_name)
  131. }
  132. }
  133. func Read_Tag_Get(Id int) string {
  134. // 有先加入 给全部人发消息
  135. v, ok := Tag_list.Load(Id) /*如果确定是真实的,则存在,否则不存在 */
  136. if ok {
  137. return v.(string)
  138. } else {
  139. return "未知标签"
  140. }
  141. }