sys_user_model.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. err := m.QueryRow(&resp, sysUserIdKey, func(conn sqlx.SqlConn, v interface{}) error {
  72. query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", sysUserRows, m.table)
  73. return conn.QueryRow(v, query, id)
  74. })
  75. switch err {
  76. case nil:
  77. return &resp, nil
  78. case sqlc.ErrNotFound:
  79. return nil, ErrNotFound
  80. default:
  81. return nil, err
  82. }
  83. }
  84. func (m *defaultSysUserModel) FindOneByPhone(phone string) (*SysUser, error) {
  85. sysUserIPhoneKey := fmt.Sprintf("%s%v", cacheSysUserPhonePrefix, phone)
  86. var resp SysUser
  87. err := m.QueryRow(&resp, sysUserIPhoneKey, func(conn sqlx.SqlConn, v interface{}) error {
  88. query := fmt.Sprintf("select %s from %s where `mobile` = ? limit 1", sysUserRows, m.table)
  89. return conn.QueryRow(v, query, phone)
  90. })
  91. switch err {
  92. case nil:
  93. return &resp, nil
  94. case sqlc.ErrNotFound:
  95. return nil, ErrNotFound
  96. default:
  97. return nil, err
  98. }
  99. }
  100. func (m *defaultSysUserModel) Update(data SysUser) error {
  101. sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, data.Id)
  102. _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
  103. query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, sysUserRowsWithPlaceHolder)
  104. 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)
  105. }, sysUserIdKey)
  106. return err
  107. }
  108. func (m *defaultSysUserModel) Delete(id string) error {
  109. sysUserIdKey := fmt.Sprintf("%s%v", cacheSysUserIdPrefix, id)
  110. _, err := m.Exec(func(conn sqlx.SqlConn) (result sql.Result, err error) {
  111. query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
  112. return conn.Exec(query, id)
  113. }, sysUserIdKey)
  114. return err
  115. }
  116. func (m *defaultSysUserModel) formatPrimary(primary interface{}) string {
  117. return fmt.Sprintf("%s%v", cacheSysUserIdPrefix, primary)
  118. }
  119. func (m *defaultSysUserModel) queryPrimary(conn sqlx.SqlConn, v, primary interface{}) error {
  120. query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", sysUserRows, m.table)
  121. return conn.QueryRow(v, query, primary)
  122. }