user_util.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package user
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/runningwater/gohub/pkg/app"
  5. "github.com/runningwater/gohub/pkg/database"
  6. "github.com/runningwater/gohub/pkg/paginator"
  7. )
  8. // IsEmailExist 检查邮箱是否已存在
  9. func IsEmailExist(email string) bool {
  10. var count int64
  11. database.DB.Model(&User{}).Where("email = ?", email).Count(&count)
  12. return count > 0
  13. }
  14. // IsPhoneExist 检查手机号是否已存在
  15. func IsPhoneExist(phone string) bool {
  16. var count int64
  17. database.DB.Model(&User{}).Where("phone = ?", phone).Count(&count)
  18. return count > 0
  19. }
  20. // GetByMulti 多条件查询,支持手机号、邮箱和用户名
  21. // 按顺序检查并返回第一个匹配的用户
  22. func GetByMulti(loginID string) (userModel User) {
  23. database.DB.
  24. Where("phone = ?", loginID).
  25. Or("email =?", loginID).
  26. Or("name =?", loginID).
  27. First(&userModel)
  28. return
  29. }
  30. // GetByPhone 根据手机号查询用户
  31. func GetByPhone(phone string) (userModel User) {
  32. database.DB.Where("phone = ?", phone).First(&userModel)
  33. return
  34. }
  35. // Get 根据 ID 查询用户
  36. func Get(idStr string) (userModel User) {
  37. database.DB.Where("id =?", idStr).First(&userModel)
  38. return
  39. }
  40. // All 查询所有用户
  41. func All() (users []User) {
  42. database.DB.Find(&users)
  43. return
  44. }
  45. // Paginate 分页内容
  46. func Paginate(c *gin.Context, pageSize int) (users []User, paging paginator.Paging) {
  47. paging = paginator.Paginate(
  48. c,
  49. database.DB.Model(User{}),
  50. &users,
  51. app.V1URL(database.TableName(&User{})),
  52. pageSize,
  53. )
  54. return
  55. }