user.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package user
  2. import (
  3. "context"
  4. v1 "cris/api/user/v1"
  5. "cris/internal/dao"
  6. "cris/internal/model/do"
  7. "cris/internal/service"
  8. "github.com/gogf/gf/v2/errors/gerror"
  9. "github.com/gogf/gf/v2/frame/g"
  10. "github.com/gogf/gf/v2/util/gconv"
  11. )
  12. type sUser struct{}
  13. func init() {
  14. service.RegisterUser(&sUser{})
  15. }
  16. func (s *sUser) Register(ctx context.Context, req *v1.UserRegisterReq) error {
  17. // 两次密码不一致
  18. if req.ConfirmPassword != req.Password {
  19. return gerror.New("invalid password")
  20. }
  21. //链式安全model
  22. m := dao.User.Ctx(ctx)
  23. count, err := m.Where("email=?", req.Email).Count()
  24. if err != nil {
  25. return err
  26. }
  27. if count > 0 {
  28. return gerror.New("Email is already in use")
  29. }
  30. var user do.User
  31. err = gconv.Struct(req, &user)
  32. if err != nil {
  33. return gerror.New("register failed")
  34. }
  35. result, err := m.Data(user).Insert()
  36. if err != nil {
  37. g.Log().Error(ctx, err.Error())
  38. return gerror.New("register failed")
  39. }
  40. if result == nil {
  41. return gerror.New("register failed")
  42. }
  43. return nil
  44. }
  45. func (s *sUser) Login(ctx context.Context, req *v1.UserLoginReq) error {
  46. // 验证邮箱和密码
  47. m := dao.User.Ctx(ctx).Where("email=?", req.Email)
  48. record, err := m.One()
  49. if err != nil {
  50. return err
  51. }
  52. if record == nil {
  53. return gerror.New("email not found")
  54. }
  55. password := gconv.String(record["password"])
  56. if password != req.Password {
  57. return gerror.New("password is incorrect")
  58. }
  59. return nil
  60. }