login.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package handler
  2. import (
  3. "errors"
  4. "gogs.baozhida.cn/zoie/OAuth-core/sdk"
  5. "gorm.io/gorm"
  6. log "gogs.baozhida.cn/zoie/OAuth-core/logger"
  7. "gogs.baozhida.cn/zoie/OAuth-core/pkg"
  8. )
  9. type Login struct {
  10. Username string `form:"UserName" json:"username"` // 用户名
  11. Password string `form:"Password" json:"password"` // 密码
  12. Phone string `form:"Phone" json:"phone"` // 手机号
  13. VerifyCode string `form:"VerifyCode" json:"verifyCode"` // 验证码
  14. Type int `form:"Type" json:"type"` // 1-密码 2-钢瓶规格
  15. Mobile bool `form:"Mobile" json:"mobile"` // 是否手机登录
  16. }
  17. //Code string `form:"Code" json:"code" binding:"required"`
  18. //UUID string `form:"UUID" json:"uuid" binding:"required"`
  19. type SmsLogin struct {
  20. }
  21. func (u *Login) GetUser(tx *gorm.DB) (user SysUser, role SysRole, dept SysDept, err error) {
  22. err = tx.Table("sys_user").Where("username = ? and status = 2", u.Username).First(&user).Error
  23. if err != nil {
  24. log.Errorf("get user error, %s", err.Error())
  25. return
  26. }
  27. _, err = pkg.CompareHashAndPassword(user.Password, u.Password)
  28. if err != nil {
  29. log.Errorf("user login error, %s", err.Error())
  30. return
  31. }
  32. err = tx.Table("sys_role").Where("id = ? ", user.RoleId).First(&role).Error
  33. if err != nil {
  34. log.Errorf("get role error, %s", err.Error())
  35. return
  36. }
  37. if user.DeptId > 0 {
  38. err = tx.Table("sys_dept").Where("id = ? ", user.DeptId).First(&dept).Error
  39. if err != nil {
  40. log.Errorf("get dept error, %s", err.Error())
  41. return
  42. }
  43. }
  44. return
  45. }
  46. func (u *Login) GetUserByCode(tx *gorm.DB) (user SysUser, role SysRole, dept SysDept, err error) {
  47. err = tx.Table("sys_user").Where("phone = ? and status = 2", u.Phone).First(&user).Error
  48. if err != nil {
  49. log.Errorf("get user error, %s", err.Error())
  50. return
  51. }
  52. code, err := sdk.Runtime.GetCacheAdapter().Get(GetVerifyCodeCacheKey(u.Phone))
  53. if err != nil {
  54. log.Errorf("user login error, %s", err.Error())
  55. err = errors.New("验证码已过期")
  56. return
  57. }
  58. if code != u.VerifyCode {
  59. log.Errorf("user login error, %s", "验证码错误")
  60. err = errors.New("验证码错误")
  61. return
  62. }
  63. err = tx.Table("sys_role").Where("id = ? ", user.RoleId).First(&role).Error
  64. if err != nil {
  65. log.Errorf("get role error, %s", err.Error())
  66. return
  67. }
  68. if user.DeptId > 0 {
  69. err = tx.Table("sys_dept").Where("id = ? ", user.DeptId).First(&dept).Error
  70. if err != nil {
  71. log.Errorf("get dept error, %s", err.Error())
  72. return
  73. }
  74. }
  75. return
  76. }
  77. func GetUserByID(tx *gorm.DB, id int64) (user SysUser, role SysRole, err error) {
  78. err = tx.Table("sys_user").Where("id = ? ", id).First(&user).Error
  79. if err != nil {
  80. log.Errorf("get user error, %s", err.Error())
  81. return
  82. }
  83. err = tx.Table("sys_role").Where("id = ? ", user.RoleId).First(&role).Error
  84. if err != nil {
  85. log.Errorf("get role error, %s", err.Error())
  86. return
  87. }
  88. return
  89. }