users.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. package models
  2. import (
  3. "eta/eta_mini_api/utils"
  4. "fmt"
  5. "github.com/beego/beego/v2/client/orm"
  6. "strings"
  7. "time"
  8. )
  9. // Users 用户表
  10. type Users struct {
  11. UserId int `orm:"column(user_id);pk"`
  12. RealName string `description:"用户姓名"`
  13. Mobile string `description:"手机号"`
  14. AreaCode string `description:"区号"`
  15. SellerId int `description:"销售ID"`
  16. SellerName string `description:"销售名称"`
  17. SysUserId int `description:"操作人ID"`
  18. SysUserRealName string `description:"操作人姓名"`
  19. CompanyId int `description:"所属机构ID"`
  20. CompanyName string `description:"所属机构名称"`
  21. Status int `description:"用户类型:1-试用用户;2-正式用户"`
  22. AuthStatus int `description:"权限状态:0-关闭;1-开启"`
  23. IsRegistered int `description:"注册状态:0-未注册;1-已注册"`
  24. RegisterTime time.Time `description:"注册时间"`
  25. Subscribe int `description:"是否关注公众号:0-未关注;1-已关注"`
  26. LastReadTime time.Time `description:"最后一次阅读时间"`
  27. ReadTimes int `description:"阅读次数"`
  28. OpenId string `description:"open_id"`
  29. UnionId string `description:"用户统一标识"`
  30. IsDeleted int `description:"删除状态:0-正常;1-已删除"`
  31. CreateTime time.Time `description:"创建时间"`
  32. ModifyTime time.Time `description:"修改时间"`
  33. }
  34. func (m *Users) TableName() string {
  35. return "users"
  36. }
  37. type UsersCols struct {
  38. PrimaryId string
  39. RealName string
  40. Mobile string
  41. AreaCode string
  42. SellerId string
  43. SellerName string
  44. SysUserId string
  45. SysUserRealName string
  46. CompanyId string
  47. CompanyName string
  48. Status string
  49. AuthStatus string
  50. IsRegistered string
  51. RegisterTime string
  52. Subscribe string
  53. LastReadTime string
  54. ReadTimes string
  55. OpenId string
  56. UnionId string
  57. IsDeleted string
  58. CreateTime string
  59. ModifyTime string
  60. }
  61. func (m *Users) Cols() UsersCols {
  62. return UsersCols{
  63. PrimaryId: "user_id",
  64. RealName: "real_name",
  65. Mobile: "mobile",
  66. AreaCode: "area_code",
  67. SellerId: "seller_id",
  68. SellerName: "seller_name",
  69. SysUserId: "sys_user_id",
  70. SysUserRealName: "sys_user_real_name",
  71. CompanyId: "company_id",
  72. CompanyName: "company_name",
  73. Status: "status",
  74. AuthStatus: "auth_status",
  75. IsRegistered: "is_registered",
  76. RegisterTime: "register_time",
  77. Subscribe: "subscribe",
  78. LastReadTime: "last_read_time",
  79. ReadTimes: "read_times",
  80. OpenId: "open_id",
  81. UnionId: "union_id",
  82. IsDeleted: "is_deleted",
  83. CreateTime: "create_time",
  84. ModifyTime: "modify_time",
  85. }
  86. }
  87. func (m *Users) Create() (err error) {
  88. o := orm.NewOrm()
  89. id, err := o.Insert(m)
  90. if err != nil {
  91. return
  92. }
  93. m.UserId = int(id)
  94. return
  95. }
  96. func (m *Users) Update(cols []string) (err error) {
  97. o := orm.NewOrm()
  98. _, err = o.Update(m, cols...)
  99. return
  100. }
  101. func (m *Users) GetItemById(id int) (item *Users, err error) {
  102. o := orm.NewOrm()
  103. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = %d AND %s = ? LIMIT 1`, m.TableName(), m.Cols().IsDeleted, RowDeletedDefault, m.Cols().PrimaryId)
  104. err = o.Raw(sql, id).QueryRow(&item)
  105. return
  106. }
  107. func (m *Users) GetItemByCondition(condition string, pars []interface{}, orderRule string) (item *Users, err error) {
  108. o := orm.NewOrm()
  109. order := ``
  110. if orderRule != "" {
  111. order = ` ORDER BY ` + orderRule
  112. }
  113. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = %d %s %s LIMIT 1`, m.TableName(), m.Cols().IsDeleted, RowDeletedDefault, condition, order)
  114. err = o.Raw(sql, pars).QueryRow(&item)
  115. return
  116. }
  117. func (m *Users) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  118. o := orm.NewOrm()
  119. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE %s = %d %s`, m.TableName(), m.Cols().IsDeleted, RowDeletedDefault, condition)
  120. err = o.Raw(sql, pars).QueryRow(&count)
  121. return
  122. }
  123. func (m *Users) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*Users, err error) {
  124. o := orm.NewOrm()
  125. fields := strings.Join(fieldArr, ",")
  126. if len(fieldArr) == 0 {
  127. fields = `*`
  128. }
  129. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  130. if orderRule != "" {
  131. order = ` ORDER BY ` + orderRule
  132. }
  133. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE %s = %d %s %s`, fields, m.TableName(), m.Cols().IsDeleted, RowDeletedDefault, condition, order)
  134. _, err = o.Raw(sql, pars).QueryRows(&items)
  135. return
  136. }
  137. func (m *Users) GetPageItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string, startSize, pageSize int) (items []*Users, err error) {
  138. o := orm.NewOrm()
  139. fields := strings.Join(fieldArr, ",")
  140. if len(fieldArr) == 0 {
  141. fields = `*`
  142. }
  143. order := fmt.Sprintf(`ORDER BY %s DESC`, m.Cols().CreateTime)
  144. if orderRule != "" {
  145. order = ` ORDER BY ` + orderRule
  146. }
  147. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE %s = %d %s %s LIMIT ?,?`, fields, m.TableName(), m.Cols().IsDeleted, RowDeletedDefault, condition, order)
  148. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  149. return
  150. }
  151. // UsersItem 用户信息
  152. type UsersItem struct {
  153. UserId int `description:"用户ID"`
  154. RealName string `description:"用户姓名"`
  155. Mobile string `description:"手机号"`
  156. MobileHidden string `description:"手机号(隐藏中间四位)"`
  157. AreaCode string `description:"区号"`
  158. SellerName string `description:"销售名称"`
  159. CompanyName string `description:"所属机构名称"`
  160. Status int `description:"用户类型:1-试用用户;2-正式用户"`
  161. AuthStatus int `description:"权限状态:0-关闭;1-开启"`
  162. IsRegistered int `description:"注册状态:0-未注册;1-已注册"`
  163. RegisterTime string `description:"注册时间"`
  164. Subscribe int `description:"是否关注公众号:0-未关注;1-已关注"`
  165. LastReadTime string `description:"最后一次阅读时间"`
  166. ReadTimes int `description:"阅读次数"`
  167. TrialExpired bool `description:"试用到期:true-已到期"`
  168. CreateTime string `description:"创建时间"`
  169. ModifyTime string `description:"修改时间"`
  170. }
  171. func (m *Users) Format2Item() (item *UsersItem) {
  172. item = new(UsersItem)
  173. item.UserId = m.UserId
  174. item.RealName = m.RealName
  175. item.Mobile = m.Mobile
  176. item.MobileHidden = utils.HideMobileMiddle(m.Mobile)
  177. item.AreaCode = m.AreaCode
  178. item.SellerName = m.SellerName
  179. item.CompanyName = m.CompanyName
  180. item.Status = m.Status
  181. item.AuthStatus = m.AuthStatus
  182. item.IsRegistered = m.IsRegistered
  183. item.RegisterTime = utils.TimeTransferString(utils.FormatDateTime, m.RegisterTime)
  184. item.Subscribe = m.Subscribe
  185. item.LastReadTime = utils.TimeTransferString(utils.FormatDateTime, m.LastReadTime)
  186. item.ReadTimes = m.ReadTimes
  187. // 试用到期
  188. if m.Status == UserStatusTrial && !m.RegisterTime.IsZero() {
  189. expiredTime := m.RegisterTime.Add(3 * 24 * time.Hour)
  190. if expiredTime.Before(time.Now().Local()) {
  191. item.TrialExpired = true
  192. }
  193. }
  194. item.CreateTime = utils.TimeTransferString(utils.FormatDateTime, m.CreateTime)
  195. item.ModifyTime = utils.TimeTransferString(utils.FormatDateTime, m.ModifyTime)
  196. return
  197. }
  198. func (m *Users) UpdateUserReadTimes(userId int) (err error) {
  199. o := orm.NewOrm()
  200. sql := fmt.Sprintf(`UPDATE %s SET %s = %s + 1, %s = NOW() WHERE %s = ? LIMIT 1`, m.TableName(), m.Cols().ReadTimes, m.Cols().ReadTimes, m.Cols().LastReadTime, m.Cols().PrimaryId)
  201. _, err = o.Raw(sql, userId).Exec()
  202. return
  203. }