User.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package Account
  2. import (
  3. "FollowUp_Notice/lib"
  4. "errors"
  5. "fmt"
  6. "github.com/astaxie/beego/logs"
  7. "github.com/beego/beego/v2/adapter/orm"
  8. orm2 "github.com/beego/beego/v2/client/orm"
  9. "time"
  10. )
  11. type User struct {
  12. Id int `orm:"column(ID);size(11);auto;pk"`
  13. T_uuid string `orm:"size(32);null"` //
  14. T_user string `orm:"size(256);null"` //
  15. T_pass string `orm:"size(256);null"` //
  16. T_phone string `orm:"size(256);null"` // 电话号码
  17. T_template_id string `orm:"size(256);null"` // 短信模板id
  18. T_money float32 `orm:"digits(12);decimals(2)"` // 余额
  19. T_arrears_notice int `orm:"size(200);default(1)"` // 欠费通知 1继续通知 2终止通知
  20. T_State int `orm:"size(200);default(1)"` // 0删除 1 启用 2 停用
  21. CreateTime time.Time `orm:"column(create_time);type(timestamp);null;auto_now_add"` //auto_now 每次 model 保存时都会对时间自动更新
  22. UpdateTime time.Time `orm:"column(update_time);type(timestamp);null;auto_now"` //auto_now_add 第一次保存时才设置时间
  23. }
  24. type User_R struct {
  25. Id int
  26. T_uuid string
  27. T_user string
  28. T_phone string // 电话号码
  29. T_template_id string
  30. T_money float32
  31. T_arrears_notice int
  32. T_State int // 1 启用 2 停用
  33. CreateTime string
  34. }
  35. var User_r *User
  36. func (t *User) TableName() string {
  37. return "user" // 数据库名称 // ************** 替换 FormulaList **************
  38. }
  39. func init() {
  40. //注册模型
  41. orm.RegisterModel(new(User))
  42. }
  43. func UserToUser_R(r User) (m User_R) {
  44. m.Id = r.Id
  45. m.T_uuid = r.T_uuid
  46. m.T_user = r.T_user
  47. m.T_phone = r.T_phone
  48. m.T_template_id = r.T_template_id
  49. m.T_money = r.T_money
  50. m.T_arrears_notice = r.T_arrears_notice
  51. m.T_State = r.T_State
  52. m.CreateTime = r.CreateTime.Format("2006-01-02 15:04:05")
  53. return
  54. }
  55. // 验证登录
  56. func Read_User_verification(T_user string, T_pass string) (err error, r User) {
  57. o := orm.NewOrm()
  58. qs := o.QueryTable(new(User))
  59. err = qs.Filter("T_user", T_user).Filter("T_pass", T_pass).Filter("T_State__gt", 0).One(&r)
  60. if err != nil {
  61. logs.Error(lib.FuncName(), err)
  62. }
  63. return err, r
  64. }
  65. // 添加
  66. func Add_User(r User) (id int64, err error) {
  67. o := orm.NewOrm()
  68. //生成编号
  69. rand_x := 0
  70. for true {
  71. r.T_uuid = lib.GetRandstring(32, "", int64(rand_x)) // 1,336,336
  72. err = o.Read(&r, "T_uuid") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  73. if err != nil {
  74. break
  75. }
  76. rand_x += 1
  77. }
  78. // 查看是否重复
  79. err = o.Read(&r, "T_user") // o.Read(&r,"Tokey") 如果不是 主键 就得指定字段名
  80. if err == nil {
  81. return 0, errors.New("T_user !!!!")
  82. }
  83. r.T_State = 1
  84. id, err = o.Insert(&r)
  85. if err != nil {
  86. logs.Error(lib.FuncName(), err)
  87. }
  88. return id, err
  89. }
  90. // 获取 ByT_uuId
  91. func Read_User_ByT_uuid(T_uuid string) (r User, err error) {
  92. o := orm.NewOrm()
  93. qs := o.QueryTable(new(User))
  94. err = qs.Filter("T_uuid", T_uuid).Filter("T_State__gt", 0).One(&r)
  95. if err != nil {
  96. logs.Error(lib.FuncName(), err)
  97. }
  98. return
  99. }
  100. // 获取 ById
  101. func Read_User_ByT_id(id int) (r User, err error) {
  102. o := orm.NewOrm()
  103. qs := o.QueryTable(new(User))
  104. err = qs.Filter("Id", id).Filter("T_State__gt", 0).One(&r)
  105. if err != nil {
  106. logs.Error(lib.FuncName(), err)
  107. }
  108. return
  109. }
  110. // 修改
  111. func Update_User(m User, cols ...string) error {
  112. o := orm.NewOrm()
  113. num, err := o.Update(&m, cols...)
  114. if err != nil {
  115. logs.Error(lib.FuncName(), err)
  116. return err
  117. }
  118. fmt.Println("Number of records updated in database:", num)
  119. return nil
  120. }
  121. // 删除
  122. func Delete_User(v User) error {
  123. o := orm.NewOrm()
  124. v.T_State = 0
  125. _, err := o.Update(&v, "T_State")
  126. if err != nil {
  127. logs.Error(lib.FuncName(), err)
  128. }
  129. return err
  130. }
  131. // 获取列表
  132. func Read_User_List(T_name string, page, page_z int) (r_ []User_R, cnt int64) {
  133. o := orm.NewOrm()
  134. // 也可以直接使用 Model 结构体作为表名
  135. qs := o.QueryTable(new(User))
  136. var offset int64
  137. if page <= 1 {
  138. offset = 0
  139. } else {
  140. offset = int64((page - 1) * page_z)
  141. }
  142. // 过滤
  143. cond := orm.NewCondition()
  144. cond = cond.And("T_State__gt", 0) //.And("T_State", 1) .AndNot("status__in", 1).Or("profile__age__gt", 2000)
  145. if len(T_name) > 0 {
  146. //cond1.AndCond(cond.And("T_class", class))
  147. cond = cond.And("T_user__icontains", T_name)
  148. }
  149. // 查询
  150. var r []User
  151. var err error
  152. if page_z == 9999 {
  153. _, err = qs.SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&r)
  154. } else {
  155. _, err = qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&r)
  156. }
  157. if err != nil {
  158. logs.Error(lib.FuncName(), err)
  159. return
  160. }
  161. cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count()
  162. if err != nil {
  163. logs.Error(lib.FuncName(), err)
  164. return
  165. }
  166. for _, v := range r {
  167. r_ = append(r_, UserToUser_R(v))
  168. }
  169. return r_, cnt
  170. }