user.go 1.3 KB

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