user_login.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_mini_crm/models"
  5. "eta/eta_mini_crm/models/request"
  6. "eta/eta_mini_crm/models/response"
  7. "eta/eta_mini_crm/utils"
  8. "fmt"
  9. "time"
  10. "github.com/beego/beego/v2/client/orm"
  11. )
  12. type UserLoginController struct {
  13. BaseCommonController
  14. }
  15. // Login
  16. // @Title 用户登录
  17. // @Description 用户登录
  18. // @Param request body UserLoginReq true "type json string"
  19. // @Success 200 {object} models.LoginResp
  20. // @router /login [post]
  21. func (this *UserLoginController) Login() {
  22. br := new(models.BaseResponse).Init()
  23. defer func() {
  24. if br.ErrMsg == "" {
  25. br.IsSendEmail = false
  26. }
  27. this.Data["json"] = br
  28. this.ServeJSON()
  29. }()
  30. var req request.UserLoginReq
  31. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  32. if err != nil {
  33. br.Msg = "参数解析异常!"
  34. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  35. return
  36. }
  37. if req.UserName == "" {
  38. br.Msg = "请输入账号"
  39. return
  40. }
  41. if req.Password == "" {
  42. br.Msg = "请输入密码"
  43. return
  44. }
  45. sysUser, err := models.GetSysUserBySysUserName(req.UserName)
  46. if err != nil {
  47. if err == orm.ErrNoRows {
  48. br.Msg = "登录失败, 账号或密码错误"
  49. return
  50. } else {
  51. br.Msg = "系统错误"
  52. br.ErrMsg = "系统错误" + err.Error()
  53. return
  54. }
  55. }
  56. sysRole, err := models.GetSysRoleById(sysUser.SysRoleId)
  57. if err != nil {
  58. br.Msg = "登录失败"
  59. br.ErrMsg = "查询角色失败, Err:" + err.Error()
  60. return
  61. }
  62. dbPass := utils.MD5(fmt.Sprintf("%s%s%s", sysUser.Password, utils.UserLoginSalt, req.ReqTime))
  63. if req.Password != dbPass {
  64. br.Msg = "登录失败, 账号或密码错误"
  65. return
  66. }
  67. account := utils.MD5(sysUser.SysUserName)
  68. token := utils.GenToken(account)
  69. sysSession := new(models.SysSession)
  70. sysSession.UserName = sysUser.SysUserName
  71. sysSession.SysUserId = sysUser.SysUserId
  72. sysSession.ExpiredTime = time.Now().AddDate(0, 0, 60)
  73. sysSession.CreatedTime = time.Now()
  74. sysSession.LastUpdatedTime = time.Now()
  75. sysSession.AccessToken = token
  76. err = sysSession.AddSysSession()
  77. if err != nil {
  78. br.Msg = "登录失败"
  79. br.ErrMsg = "新增session信息失败, Err:" + err.Error()
  80. return
  81. }
  82. resp := new(response.LoginResp)
  83. resp.Authorization = "authorization=" + token
  84. resp.SysUserName = sysUser.SysUserName
  85. resp.SysRealName = sysUser.SysRealName
  86. resp.SysUserId = sysUser.SysUserId
  87. resp.RoleName = sysRole.SysRoleName
  88. resp.RoleId = sysUser.SysRoleId
  89. br.Data = resp
  90. br.Ret = 200
  91. br.Success = true
  92. br.Msg = "登录成功"
  93. }
  94. // AreaCodeList
  95. // @Title 用户登录
  96. // @Description 用户登录
  97. // @Param request body UserLoginReq true "type json string"
  98. // @Success 200 {object} models.LoginResp
  99. // @router /area_code/list [get]
  100. func (this *UserLoginController) AreaCodeList() {
  101. }