user.go 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package models
  2. import (
  3. "context"
  4. "time"
  5. "github.com/beego/beego/v2/client/orm"
  6. )
  7. type User struct {
  8. UserId int `orm:"pk" description:"用户id"`
  9. RealName string `description:"姓名"`
  10. Phone string `description:"手机号"`
  11. AreaCode string `description:"区号"`
  12. Email string `description:"邮箱"`
  13. SellerId int `description:"销售id(SysUserId)"`
  14. Company string `description:"所属公司"`
  15. ValidStartTime time.Time `description:"有效期开始时间"`
  16. ValidEndTime time.Time `description:"有效期结束时间"`
  17. Status int `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
  18. CreateTime time.Time `description:"系统中首次新增用户的时间"`
  19. ModifyTime time.Time `description:"系统中用户信息变更的时间"`
  20. RegisterTime time.Time `description:"用户首次登录小程序的时间"`
  21. IsSubscribed bool `description:"是否关注公众号: 0表示没有关注,1表示关注"`
  22. IsRegistered bool `description:"是否注册: 0表示没有注册,1表示注册"`
  23. }
  24. type UserView struct {
  25. UserId int `orm:"pk" description:"用户id"`
  26. RealName string `description:"姓名"`
  27. Phone string `description:"手机号"`
  28. AreaCode string `description:"区号"`
  29. Email string `description:"邮箱"`
  30. SellerId int `description:"销售id(SysUserId)"`
  31. SellerName string `description:"销售姓名"`
  32. Company string `description:"所属公司"`
  33. ValidStartTime time.Time `description:"有效期开始时间"`
  34. ValidEndTime time.Time `description:"有效期结束时间"`
  35. Status int `description:"用户类型: 0表示禁用,1表示潜在客户,2表示正式客户"`
  36. CreateTime time.Time `description:"系统中首次新增用户的时间"`
  37. ModifyTime time.Time `description:"系统中用户信息变更的时间"`
  38. RegisterTime time.Time `description:"用户首次登录小程序的时间"`
  39. IsSubscribed bool `description:"是否关注公众号: 0表示没有关注,1表示关注"`
  40. IsRegistered bool `description:"是否注册: 0表示没有注册,1表示注册"`
  41. }
  42. func (u *User) Save() (err error) {
  43. o := orm.NewOrmUsingDB("master")
  44. _, err = o.InsertOrUpdate(u)
  45. return
  46. }
  47. func (u *User) Update(cols []string) (err error) {
  48. o := orm.NewOrmUsingDB("master")
  49. _, err = o.Update(u, cols...)
  50. return
  51. }
  52. func UpdateUserStatus(condition string, pars []interface{}) (err error) {
  53. o := orm.NewOrmUsingDB("master")
  54. sql := ` UPDATE user SET status=0 WHERE 1=1 `
  55. if condition != "" {
  56. sql += condition
  57. }
  58. _, err = o.Raw(sql, pars).Exec()
  59. return
  60. }
  61. func SaveUser(user *User, chartPermissionIds []int) (err error) {
  62. o := orm.NewOrmUsingDB("master")
  63. err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
  64. insertId, er := txOrm.InsertOrUpdate(user)
  65. if er != nil {
  66. return er
  67. }
  68. if user.UserId != 0 {
  69. insertId = int64(user.UserId)
  70. } else {
  71. user.UserId = int(insertId)
  72. }
  73. // 先删除再增加
  74. sql := `DELETE FROM user_chart_permission_mapping WHERE user_id=?`
  75. _, er = txOrm.Raw(sql, insertId).Exec()
  76. if er != nil {
  77. return er
  78. }
  79. for _, id := range chartPermissionIds {
  80. userChartPermissionMapping := new(UserChartPermissionMapping)
  81. userChartPermissionMapping.UserId = int(insertId)
  82. userChartPermissionMapping.ChartPermissionId = id
  83. _, er = txOrm.Insert(userChartPermissionMapping)
  84. if er != nil {
  85. return er
  86. }
  87. }
  88. return nil
  89. })
  90. return
  91. }
  92. func GetUserByPhone(phone, areaCode string) (item *User, err error) {
  93. o := orm.NewOrmUsingDB("master")
  94. sql := `SELECT * FROM user WHERE phone=? AND area_code=?`
  95. err = o.Raw(sql, phone, areaCode).QueryRow(&item)
  96. return
  97. }
  98. func GetUserByEmail(email string) (item *User, err error) {
  99. o := orm.NewOrmUsingDB("master")
  100. sql := `SELECT * FROM user WHERE email=? `
  101. err = o.Raw(sql, email).QueryRow(&item)
  102. return
  103. }
  104. func GetUserById(userId int) (item *User, err error) {
  105. o := orm.NewOrmUsingDB("master")
  106. sql := `SELECT * FROM user WHERE user_id=? `
  107. err = o.Raw(sql, userId).QueryRow(&item)
  108. return
  109. }
  110. func GetUserList(condition string, pars []interface{}, startSize, pageSize int) (items []*UserView, err error) {
  111. sql := `SELECT u.*, su.sys_real_name AS seller_name FROM user AS u
  112. LEFT JOIN sys_user AS su
  113. ON u.seller_id = su.sys_user_id
  114. WHERE 1=1 `
  115. if condition != "" {
  116. sql += condition
  117. }
  118. sql += ` ORDER BY modify_time DESC LIMIT ?,? `
  119. o := orm.NewOrmUsingDB("master")
  120. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&items)
  121. return
  122. }
  123. func GetUserCount(condition string, pars []interface{}) (count int, err error) {
  124. sql := `SELECT COUNT(*) AS count FROM user WHERE 1=1 `
  125. if condition != "" {
  126. sql += condition
  127. }
  128. o := orm.NewOrmUsingDB("master")
  129. err = o.Raw(sql, pars...).QueryRow(&count)
  130. return
  131. }
  132. func DeleteUserById(userId int) (err error) {
  133. o := orm.NewOrmUsingDB("master")
  134. err = o.DoTx(func(ctx context.Context, txOrm orm.TxOrmer) error {
  135. sql := `DELETE FROM user WHERE user_id=?`
  136. _, e := txOrm.Raw(sql, userId).Exec()
  137. if e != nil {
  138. return e
  139. }
  140. sql = `DELETE FROM user_chart_permission_mapping WHERE user_id=?`
  141. _, e = txOrm.Raw(sql, userId).Exec()
  142. if e != nil {
  143. return e
  144. }
  145. return nil
  146. })
  147. return
  148. }