sys_user_model.go 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package model
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "strings"
  6. "time"
  7. "git.i2edu.net/i2/go-zero/core/stores/cache"
  8. "git.i2edu.net/i2/go-zero/core/stores/sqlc"
  9. "git.i2edu.net/i2/go-zero/core/stores/sqlx"
  10. "git.i2edu.net/i2/go-zero/core/stringx"
  11. "git.i2edu.net/i2/go-zero/tools/goctl/model/sql/builderx"
  12. )
  13. var (
  14. sysUserFieldNames = builderx.RawFieldNames(&SysUser{})
  15. sysUserRows = strings.Join(sysUserFieldNames, ",")
  16. sysUserRowsExpectAutoSet = strings.Join(stringx.Remove(sysUserFieldNames, "`create_time`", "`update_time`"), ",")
  17. sysUserRowsWithPlaceHolder = strings.Join(stringx.Remove(sysUserFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
  18. cacheSysUserIdPrefix = "cache:sysUser:id:"
  19. cacheSysUserPhonePrefix = "cache:sysUser:phone:"
  20. )
  21. type (
  22. SysUserModel interface {
  23. Insert(data SysUser) (sql.Result, error)
  24. FindOne(id string) (*SysUser, error)
  25. FindOneByPhone(id string) (*SysUser, error)
  26. Update(data SysUser) error
  27. Delete(id string) error
  28. }
  29. defaultSysUserModel struct {
  30. sqlc.CachedConn
  31. table string
  32. }
  33. SysUser struct {
  34. Status sql.NullInt64 `db:"status"`
  35. Avatar sql.NullString `db:"avatar"`
  36. LastUpdateTime int64 `db:"last_update_time"`
  37. Address sql.NullString `db:"address"`
  38. Password string `db:"password"`
  39. OrgId sql.NullString `db:"org_id"`
  40. CreateBy string `db:"create_by"`
  41. LastUpdateBy string `db:"last_update_by"`
  42. LoginId string `db:"login_id"`
  43. Name string `db:"name"`
  44. CreateTime time.Time `db:"create_time"`
  45. DelFlag int64 `db:"del_flag"`
  46. TempId sql.NullString `db:"temp_id"`
  47. Id string `db:"id"`
  48. FullName string `db:"full_name"`
  49. Mobile string `db:"mobile"`
  50. Email string `db:"email"`
  51. Gender int64 `db:"gender"`
  52. Type sql.NullInt64 `db:"type"`
  53. Domain string `db:"domain"`
  54. TempValue string `db:"temp_value"`
  55. }
  56. )
  57. func NewSysUserModel(conn sqlx.SqlConn, c cache.CacheConf) SysUserModel {
  58. return &defaultSysUserModel{
  59. CachedConn: sqlc.NewConn(conn, c),
  60. table: "`sys_user`",
  61. }
  62. }
  63. func (m *defaultSysUserModel) Insert(data SysUser) (sql.Result, error) {
  64. query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, sysUserRowsExpectAutoSet)
  65. ret, err := m.ExecNoCache(query, data.Status, data.Avatar, data.LastUpdateTime, data.Address, data.Password, data.OrgId, data.CreateBy, data.LastUpdateBy, data.LoginId, data.Name, data.DelFlag, data.TempId, data.Id, data.FullName, data.Mobile, data.Email, data.Gender, data.Type, data.Domain, data.TempValue)
  66. return ret, err
  67. }
  68. func (m *defaultSysUserModel) FindOne(id string) (*SysUser, error) {
  69. //sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, id)
  70. var resp SysUser
  71. query := fmt.Sprintf("select %s from %s where `id` = ? and status = 0 and del_flag = 0 limit 1", sysUserRows, m.table)
  72. err := m.QueryRowNoCache(&resp, query, id)
  73. //err := m.QueryRow(&resp, sysUserIdKey, func(conn sqlx.SqlConn, v interface{}) error {
  74. // query := fmt.Sprintf("select %s from %s where `id` = ? and status = 0 and del_flag = 0 limit 1", sysUserRows, m.table)
  75. // return conn.QueryRow(v, query, id)
  76. //})
  77. switch err {
  78. case nil:
  79. return &resp, nil
  80. case sqlc.ErrNotFound:
  81. return nil, ErrNotFound
  82. default:
  83. return nil, err
  84. }
  85. }
  86. func (m *defaultSysUserModel) FindOneByPhone(phone string) (*SysUser, error) {
  87. //sysUserIPhoneKey := fmt.Sprintf("%s%v", cacheSysUserPhonePrefix, phone)
  88. var resp SysUser
  89. query := fmt.Sprintf("select %s from %s where `mobile` = ? and status = 0 and del_flag = 0 limit 1 ", sysUserRows, m.table)
  90. err := m.QueryRowNoCache(&resp, query, phone)
  91. //err := m.QueryRow(&resp, sysUserIPhoneKey, func(conn sqlx.SqlConn, v interface{}) error {
  92. // query := fmt.Sprintf("select %s from %s where `mobile` = ? and status = 0 and del_flag = 0 limit 1 ", sysUserRows, m.table)
  93. // return conn.QueryRow(v, query, phone)
  94. //})
  95. switch err {
  96. case nil:
  97. return &resp, nil
  98. case sqlc.ErrNotFound:
  99. return nil, ErrNotFound
  100. default:
  101. return nil, err
  102. }
  103. }
  104. func (m *defaultSysUserModel) Update(data SysUser) error {
  105. sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, data.Id)
  106. _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
  107. query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, sysUserRowsWithPlaceHolder)
  108. return conn.Exec(query, data.Status, data.Avatar, data.LastUpdateTime, data.Address, data.Password, data.OrgId, data.CreateBy, data.LastUpdateBy, data.LoginId, data.Name, data.DelFlag, data.TempId, data.FullName, data.Mobile, data.Email, data.Gender, data.Type, data.Domain, data.TempValue, data.Id)
  109. }, sysUserIdKey)
  110. return err
  111. }
  112. func (m *defaultSysUserModel) Delete(id string) error {
  113. sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, id)
  114. _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
  115. query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
  116. return conn.Exec(query, id)
  117. }, sysUserIdKey)
  118. return err
  119. }
  120. func (m *defaultSysUserModel) formatPrimary(primary interface{}) string {
  121. return fmt.Sprintf("%s%v", cacheSysUserIdPrefix, primary)
  122. }
  123. func (m *defaultSysUserModel) queryPrimary(conn sqlx.SqlConn, v, primary interface{}) error {
  124. query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", sysUserRows, m.table)
  125. return conn.QueryRow(v, query, primary)
  126. }