user.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package model
  2. import (
  3. "fmt"
  4. "sparrow/pkg/models"
  5. "github.com/jinzhu/gorm"
  6. )
  7. // SignedString 签名
  8. const SignedString = "www.yehaoji.com"
  9. const (
  10. ErrUserNameOrPassCode = 20001
  11. ErrUserNameExsitCode = 20002
  12. ErrPhoneExistCode = 20003
  13. ErrEmailExistCode = 20004
  14. )
  15. type User struct {
  16. db *gorm.DB
  17. }
  18. // Init 初始化
  19. func (a *User) Init(_db *gorm.DB) *User {
  20. a.db = _db
  21. return a
  22. }
  23. // Create create
  24. func (a *User) Create(user *models.User) error {
  25. return a.db.Create(user).Error
  26. }
  27. // LoginCheck 登陆检测
  28. func (a *User) LoginCheck(loginname, loginpass string) (bool, *models.User, error) {
  29. user := &models.User{}
  30. err := a.db.
  31. Where("(user_name = ? or phone = ? or email = ?) AND user_pass = ?",
  32. loginname,
  33. loginname,
  34. loginname,
  35. loginpass).First(user).
  36. Error
  37. if err != nil {
  38. return false, nil, err
  39. }
  40. if user.ID > 0 {
  41. vendor := models.Vendor{}
  42. // check cache
  43. cache := getCache()
  44. key := fmt.Sprintf("Vendor:%d", user.VendorID)
  45. if v, ok := cache.Get(key); ok {
  46. user.Vendor = v.(models.Vendor)
  47. } else {
  48. a.db.Model(user).Related(&vendor)
  49. cache.Set(key, vendor)
  50. user.Vendor = vendor
  51. }
  52. return true, user, nil
  53. }
  54. return false, nil, nil
  55. }
  56. // UpdatePassword 更新密码
  57. func (a *User) UpdatePassword(userid int, oldpass, newpass string) (bool, error) {
  58. var count int
  59. user := &models.User{}
  60. err := a.db.Model(user).Where(map[string]interface{}{
  61. "id": userid,
  62. "user_pass": oldpass,
  63. }).Update("user_pass", newpass).Count(&count).Error
  64. if err != nil {
  65. return false, err
  66. }
  67. if count > 0 {
  68. return true, nil
  69. }
  70. return false, nil
  71. }
  72. // CheckUserName 检测用户名
  73. func (a *User) CheckUserName(name string) (bool, error) {
  74. user := models.User{}
  75. var count int
  76. err := a.db.First(&user).
  77. Where("user_name = ?", name).Count(&count).Error
  78. if err != nil {
  79. return false, err
  80. }
  81. if count > 0 {
  82. return true, nil
  83. }
  84. return false, nil
  85. }
  86. // CheckPhone 检测手机号
  87. func (a *User) CheckPhone(name string) (bool, error) {
  88. user := models.User{}
  89. var count int
  90. err := a.db.First(&user).
  91. Where("user_name = ?", name).Count(&count).Error
  92. if err != nil {
  93. return false, err
  94. }
  95. if count > 0 {
  96. return true, nil
  97. }
  98. return false, nil
  99. }
  100. // CheckEmail 检测Email
  101. func (a *User) CheckEmail(name string) (bool, error) {
  102. user := models.User{}
  103. var count int
  104. err := a.db.First(&user).
  105. Where("user_name = ?", name).Count(&count).Error
  106. if err != nil {
  107. return false, err
  108. }
  109. if count > 0 {
  110. return true, nil
  111. }
  112. return false, nil
  113. }