login.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package services
  2. import (
  3. "eta/eta_forum_admin/models/system"
  4. "eta/eta_forum_admin/utils"
  5. "fmt"
  6. "time"
  7. )
  8. func ThirdLogin(adminName string) (login system.LoginResp, err error) {
  9. // 获取用户信息
  10. sysUser, e := system.GetSysUserByAdminName(adminName)
  11. if e != nil {
  12. if e.Error() == utils.ErrNoRow() {
  13. err = fmt.Errorf("用户不存在")
  14. return
  15. }
  16. err = fmt.Errorf("获取失败, 获取用户信息失败, err: " + e.Error())
  17. return
  18. }
  19. var token string
  20. account := utils.MD5(adminName)
  21. // 获取用户未过期的session, 避免过于频繁生成token
  22. expired := time.Now().AddDate(0, 0, 1).Format(utils.FormatDateTime)
  23. session, _ := system.GetUserUnexpiredSysSession(adminName, expired)
  24. if session != nil && session.AccessToken != "" {
  25. token = session.AccessToken
  26. } else {
  27. token = utils.GenToken(account)
  28. sysSession := new(system.SysSession)
  29. sysSession.UserName = adminName
  30. sysSession.SysUserId = sysUser.AdminId
  31. sysSession.ExpiredTime = time.Now().AddDate(0, 0, 90)
  32. sysSession.IsRemember = 1
  33. sysSession.CreatedTime = time.Now()
  34. sysSession.LastUpdatedTime = time.Now()
  35. sysSession.AccessToken = token
  36. if e = system.AddSysSession(sysSession); e != nil {
  37. err = fmt.Errorf("获取失败,新增session失败, err: " + e.Error())
  38. return
  39. }
  40. }
  41. login.Authorization = token
  42. login.Authorization = "authorization=" + token
  43. login.RealName = sysUser.RealName
  44. login.AdminId = sysUser.AdminId
  45. login.AdminName = sysUser.AdminName
  46. login.RoleName = sysUser.RoleName
  47. login.SysRoleTypeCode = sysUser.RoleTypeCode //系统角色编码
  48. login.RoleTypeCode = sysUser.RoleTypeCode
  49. login.Authority = sysUser.Authority
  50. // 判断实际的角色类型
  51. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
  52. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  53. }
  54. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM {
  55. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  56. }
  57. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT {
  58. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  59. }
  60. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
  61. login.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
  62. }
  63. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT {
  64. login.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
  65. }
  66. if sysUser.RoleName == utils.ROLE_NAME_FICC_DIRECTOR {
  67. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  68. }
  69. // 角色产品ID
  70. productId := GetProductId(sysUser.RoleTypeCode)
  71. productIdName := map[int]string{
  72. 0: "admin",
  73. utils.COMPANY_PRODUCT_FICC_ID: utils.COMPANY_PRODUCT_FICC_NAME,
  74. utils.COMPANY_PRODUCT_RAI_ID: utils.COMPANY_PRODUCT_RAI_NAME,
  75. }
  76. login.ProductName = productIdName[productId]
  77. // 新增登录记录
  78. {
  79. record := new(system.SysUserLoginRecord)
  80. record.Uid = sysUser.AdminId
  81. record.UserName = adminName
  82. record.Ip, _ = utils.GetLocalIP()
  83. record.Stage = "login"
  84. record.CreateTime = time.Now()
  85. go system.AddSysUserLoginRecord(record)
  86. }
  87. return
  88. }
  89. // GetProductId 根据角色类型获取对应的产品ID
  90. func GetProductId(roleTypeCode string) (productId int) {
  91. if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER ||
  92. roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN ||
  93. roleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM ||
  94. roleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP ||
  95. roleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT {
  96. productId = 1
  97. } else if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER ||
  98. roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN ||
  99. roleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP ||
  100. roleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT {
  101. productId = 2
  102. } else {
  103. productId = 0
  104. }
  105. return
  106. }