user.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package model
  2. import (
  3. "context"
  4. "errors"
  5. "fmt"
  6. setting "icloudapp.cn/tools/config"
  7. "icloudapp.cn/tools/entity"
  8. _ "icloudapp.cn/tools/repository/mysql"
  9. "icloudapp.cn/tools/service"
  10. "icloudapp.cn/tools/util"
  11. "icloudapp.cn/tools/util/url"
  12. "strconv"
  13. "time"
  14. )
  15. type User struct {
  16. ctx context.Context
  17. }
  18. func NewUser(ctx context.Context) *User {
  19. return &User{ctx}
  20. }
  21. // Login 用户名 密码登录
  22. func (u *User) Login(username, password string) (entity.Login, error) {
  23. var login entity.Login
  24. sUser := service.NewUser(u.ctx)
  25. userInfo, err := sUser.UserInfoByUsername(username)
  26. if err != nil {
  27. return login, err
  28. }
  29. signedPassword := util.Sign(password, userInfo.Salt)
  30. //密码对不上就返回空login
  31. if userInfo.Password != signedPassword {
  32. return login, errors.New("密码不匹配")
  33. }
  34. encodeStr := url.HttpBuildQuery(map[string]string{
  35. "uid": strconv.FormatInt(userInfo.Uid, 10),
  36. "username": userInfo.Username,
  37. })
  38. token, _ := util.EncryptWidthTime(encodeStr, setting.Conf.Encrypt.ExpireAt, setting.Conf.Encrypt.Key)
  39. login.Uid = userInfo.Uid
  40. login.Username = userInfo.Username
  41. login.Status = userInfo.Status
  42. login.Avatar = userInfo.Avatar
  43. login.Type = 1
  44. login.Token = token
  45. return login, nil
  46. }
  47. // Register 通过用户名、密码或邮箱注册
  48. func (u *User) Register(username, password, email string) (entity.UserInfo, error) {
  49. var register entity.User
  50. register.Username = username
  51. register.Salt = util.RandomNumberStr(4)
  52. register.Password = util.Sign(password, register.Salt)
  53. if email == "" {
  54. email = fmt.Sprintf("%s@travelzs.com", username)
  55. }
  56. register.Email = email
  57. register.Status = 1
  58. timeParse, _ := time.Parse(time.Now().String(), "2006-01-02 15:04:05")
  59. fmt.Println("timeParse", timeParse, time.Unix(time.Now().Unix(), 0).Format("2006-01-02 15:04"))
  60. register.CreateAt = time.Now()
  61. register.UpdateAt = time.Now()
  62. sUser := service.NewUser(u.ctx)
  63. return sUser.Register(register)
  64. }
  65. func (u *User) Info(uid int64) (entity.UserInfo, error) {
  66. sUser := service.NewUser(u.ctx)
  67. return sUser.UserInfoByID(uid)
  68. }
  69. func (*User) ChangePassword(uid int64, password string) {
  70. }