User.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package Account
  2. import (
  3. "errors"
  4. "fmt"
  5. "git.baozhida.cn/ERP_libs/lib"
  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. // 获取 ById
  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).One(&r)
  95. if err != nil {
  96. logs.Error(lib.FuncName(), err)
  97. }
  98. return
  99. }
  100. // 修改
  101. func Update_User(m User, cols ...string) error {
  102. o := orm.NewOrm()
  103. num, err := o.Update(&m, cols...)
  104. if err != nil {
  105. logs.Error(lib.FuncName(), err)
  106. return err
  107. }
  108. fmt.Println("Number of records updated in database:", num)
  109. return nil
  110. }
  111. // 删除
  112. func Delete_User(v User) error {
  113. o := orm.NewOrm()
  114. v.T_State = 0
  115. _, err := o.Update(&v, "T_State")
  116. if err != nil {
  117. logs.Error(lib.FuncName(), err)
  118. }
  119. return err
  120. }
  121. // 获取列表
  122. func Read_User_List(T_name string, page, page_z int) (r_ []User_R, cnt int64) {
  123. o := orm.NewOrm()
  124. // 也可以直接使用 Model 结构体作为表名
  125. qs := o.QueryTable(new(User))
  126. var offset int64
  127. if page <= 1 {
  128. offset = 0
  129. } else {
  130. offset = int64((page - 1) * page_z)
  131. }
  132. // 过滤
  133. cond := orm.NewCondition()
  134. cond = cond.And("T_State__gt", 0) //.And("T_State", 1) .AndNot("status__in", 1).Or("profile__age__gt", 2000)
  135. if len(T_name) > 0 {
  136. //cond1.AndCond(cond.And("T_class", class))
  137. cond = cond.And("T_user__icontains", T_name)
  138. }
  139. // 查询
  140. var r []User
  141. var err error
  142. if page_z == 9999 {
  143. _, err = qs.SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&r)
  144. } else {
  145. _, err = qs.Limit(page_z, offset).SetCond((*orm2.Condition)(cond)).OrderBy("-Id").All(&r)
  146. }
  147. if err != nil {
  148. logs.Error(lib.FuncName(), err)
  149. return
  150. }
  151. cnt, err = qs.SetCond((*orm2.Condition)(cond)).Count()
  152. if err != nil {
  153. logs.Error(lib.FuncName(), err)
  154. return
  155. }
  156. for _, v := range r {
  157. r_ = append(r_, UserToUser_R(v))
  158. }
  159. return r_, cnt
  160. }