user.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package controllers
  2. import (
  3. "fmt"
  4. "sparrow/pkg/models"
  5. "sparrow/pkg/server"
  6. "sparrow/services/knowoapi/model"
  7. "sparrow/services/knowoapi/services"
  8. "github.com/kataras/iris/v12"
  9. )
  10. // UserController api
  11. type UserController struct {
  12. Ctx iris.Context
  13. Service services.UserService
  14. Token Token
  15. }
  16. // PostLogin /login
  17. func (a *UserController) PostLogin(req models.LoginRequest) {
  18. fmt.Println(req.UserName)
  19. lr := models.LoginRequest{}
  20. if err := parseBody(a.Ctx, &lr); err != nil {
  21. badRequest(a.Ctx, err)
  22. return
  23. }
  24. b, user, err := a.Service.Login(&lr)
  25. if err != nil {
  26. responseError(a.Ctx, ErrDatabase, "用户名或密码错误")
  27. return
  28. }
  29. if !b {
  30. responseError(a.Ctx, model.ErrUserNameOrPassCode, "用户名或密码错误")
  31. return
  32. }
  33. result := map[string]interface{}{
  34. "user_id": user.ID,
  35. "company": user.Vendor.VendorName,
  36. "access_token": a.Token.TokenMaker(user),
  37. "user_role": user.UserRoleID,
  38. }
  39. done(a.Ctx, result)
  40. }
  41. // PostRegistry 注册
  42. // POST /registry
  43. func (a *UserController) PostRegistry() {
  44. req := &models.Reqrequest{}
  45. if err := parseBody(a.Ctx, req); err != nil {
  46. badRequest(a.Ctx, err)
  47. return
  48. }
  49. b, err := a.Service.CheckEmail(req.Email)
  50. if err != nil {
  51. responseError(a.Ctx, ErrDatabase, err.Error())
  52. return
  53. }
  54. if b {
  55. responseError(a.Ctx, -1, "Email已经被注册")
  56. return
  57. }
  58. b, err = a.Service.CheckPhone(req.Phone)
  59. if err != nil {
  60. responseError(a.Ctx, ErrDatabase, err.Error())
  61. return
  62. }
  63. if b {
  64. responseError(a.Ctx, -1, "手机号被注册")
  65. return
  66. }
  67. b, err = a.Service.CheckUserName(req.UserName)
  68. if err != nil {
  69. responseError(a.Ctx, ErrDatabase, err.Error())
  70. return
  71. }
  72. if b {
  73. responseError(a.Ctx, -1, "该用户名已经被使用")
  74. return
  75. }
  76. user, err := a.Service.Register(req)
  77. if err != nil {
  78. responseError(a.Ctx, ErrDatabase, err.Error())
  79. return
  80. }
  81. done(a.Ctx, map[string]interface{}{
  82. "user_name": user.UserName,
  83. "user_key": user.UserKey,
  84. "vendor_id": user.VendorID,
  85. "user_id": user.ID,
  86. })
  87. }
  88. // PutChange 修改密码
  89. // PUT /user/changepass
  90. func (a *UserController) PutChange() {
  91. req := new(models.ChangePassWordRequest)
  92. if err := parseBody(a.Ctx, req); err != nil {
  93. badRequest(a.Ctx, err)
  94. return
  95. }
  96. //req.OldPass = base64.StdEncoding.EncodeToString([]byte(req.OldPass))
  97. //req.NewPass = base64.StdEncoding.EncodeToString([]byte(req.NewPass))
  98. b, err := a.Service.ModifyPassword(a.Token.getRecorID(a.Ctx), req.OldPass, req.NewPass)
  99. if err != nil {
  100. server.Log.Error(err)
  101. responseError(a.Ctx, ErrDatabase, err.Error())
  102. return
  103. }
  104. if !b {
  105. responseError(a.Ctx, ErrNormal, "原密码不正确")
  106. return
  107. }
  108. done(a.Ctx, "修改成功")
  109. }
  110. // GetMenu get user menu
  111. // GET /user/menu
  112. func (a *UserController) GetMenu() {
  113. roleid := a.Token.getRoleID(a.Ctx)
  114. role, err := a.Service.GetRole(roleid)
  115. if err != nil {
  116. responseError(a.Ctx, ErrNormal, "用户角色信息错误,请联系管理员")
  117. return
  118. }
  119. done(a.Ctx, map[string]interface{}{
  120. "menu_list": role.MenuList,
  121. "role_name": role.RoleName,
  122. })
  123. }