user.go 1.9 KB

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