user.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package controllers
  2. import (
  3. "sparrow/pkg/models"
  4. "sparrow/services/knowoapi/model"
  5. "sparrow/services/knowoapi/services"
  6. "github.com/kataras/iris"
  7. )
  8. // UserController api
  9. type UserController struct {
  10. Ctx iris.Context
  11. Service services.UserService
  12. Token Token
  13. }
  14. // PostLogin /login
  15. func (a *UserController) PostLogin() {
  16. lr := models.LoginRequest{}
  17. if err := parseBody(a.Ctx, &lr); err != nil {
  18. badRequest(a.Ctx, err)
  19. return
  20. }
  21. b, user, err := a.Service.Login(&lr)
  22. if err != nil {
  23. responseError(a.Ctx, ErrDatabase, "用户名或密码错误")
  24. return
  25. }
  26. if !b {
  27. responseError(a.Ctx, model.ErrUserNameOrPassCode, "用户名或密码错误")
  28. return
  29. }
  30. result := map[string]interface{}{
  31. "user_id": user.ID,
  32. "company": user.Vendor.VendorName,
  33. "access_token": a.Token.tokenMaker(user),
  34. "user_role": user.UserRoleID,
  35. }
  36. done(a.Ctx, result)
  37. }
  38. // PostRegistry 注册
  39. //POST /registry
  40. func (a *UserController) PostRegistry() {
  41. req := &models.Reqrequest{}
  42. if err := parseBody(a.Ctx, req); err != nil {
  43. badRequest(a.Ctx, err)
  44. return
  45. }
  46. b, err := a.Service.CheckEmail(req.Email)
  47. if err != nil {
  48. responseError(a.Ctx, ErrDatabase, err.Error())
  49. return
  50. }
  51. if b {
  52. responseError(a.Ctx, -1, "Email已经被注册")
  53. return
  54. }
  55. b, err = a.Service.CheckPhone(req.Phone)
  56. if err != nil {
  57. responseError(a.Ctx, ErrDatabase, err.Error())
  58. return
  59. }
  60. if b {
  61. responseError(a.Ctx, -1, "手机号被注册")
  62. return
  63. }
  64. b, err = a.Service.CheckUserName(req.UserName)
  65. if err != nil {
  66. responseError(a.Ctx, ErrDatabase, err.Error())
  67. return
  68. }
  69. if b {
  70. responseError(a.Ctx, -1, "该用户名已经被使用")
  71. return
  72. }
  73. user, err := a.Service.Register(req)
  74. if err != nil {
  75. responseError(a.Ctx, ErrDatabase, err.Error())
  76. return
  77. }
  78. done(a.Ctx, map[string]interface{}{
  79. "user_name": user.UserName,
  80. "user_key": user.UserKey,
  81. "vendor_id": user.VendorID,
  82. "user_id": user.ID,
  83. })
  84. }