session.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package services
  2. import (
  3. "errors"
  4. "eta/eta_bridge/models/eta"
  5. "eta/eta_bridge/models/response"
  6. "eta/eta_bridge/utils"
  7. "time"
  8. )
  9. // CreateEtaSession
  10. // @Description: 创建ETA会话session
  11. // @author: Roc
  12. // @datetime 2024-01-23 17:42:54
  13. // @param sysUser *eta.Admin
  14. // @return login *response.LoginResp
  15. // @return err error
  16. // @return errMsg string
  17. func CreateEtaSession(sysUser *eta.Admin) (login response.LoginResp, session *eta.SysSession, err error, errMsg string) {
  18. errMsg = `登录失败`
  19. login = response.LoginResp{}
  20. var token string
  21. account := utils.MD5(sysUser.AdminName)
  22. // 获取用户未过期的session, 避免过于频繁生成token
  23. expired := time.Now().AddDate(0, 0, 1).Format(utils.FormatDateTime)
  24. session, _ = eta.GetUserUnexpiredSysSession(sysUser.AdminName, expired)
  25. if session != nil && session.AccessToken != "" {
  26. token = session.AccessToken
  27. } else {
  28. token = utils.GenToken(account)
  29. session = new(eta.SysSession)
  30. session.UserName = sysUser.AdminName
  31. session.SysUserId = sysUser.AdminId
  32. session.ExpiredTime = time.Now().AddDate(0, 0, 90)
  33. session.IsRemember = 1
  34. session.CreatedTime = time.Now()
  35. session.LastUpdatedTime = time.Now()
  36. session.AccessToken = token
  37. if e := eta.AddSysSession(session); e != nil {
  38. errMsg = "新增session失败, err: "
  39. err = errors.New("新增session失败, err: " + e.Error())
  40. return
  41. }
  42. }
  43. login.Authorization = token
  44. login.Authorization = "authorization=" + token + "$account=" + account
  45. login.RealName = sysUser.RealName
  46. login.AdminId = sysUser.AdminId
  47. login.AdminName = sysUser.AdminName
  48. login.RoleName = sysUser.RoleName
  49. login.SysRoleTypeCode = sysUser.RoleTypeCode //系统角色编码
  50. login.RoleTypeCode = sysUser.RoleTypeCode
  51. login.Authority = sysUser.Authority
  52. // 判断实际的角色类型
  53. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
  54. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  55. }
  56. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM {
  57. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  58. }
  59. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT {
  60. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  61. }
  62. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
  63. login.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
  64. }
  65. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT {
  66. login.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
  67. }
  68. if sysUser.RoleName == utils.ROLE_NAME_FICC_DIRECTOR {
  69. login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
  70. }
  71. // 角色产品ID
  72. productId := GetProductId(sysUser.RoleTypeCode)
  73. productIdName := map[int]string{
  74. 0: "admin",
  75. utils.COMPANY_PRODUCT_FICC_ID: utils.COMPANY_PRODUCT_FICC_NAME,
  76. utils.COMPANY_PRODUCT_RAI_ID: utils.COMPANY_PRODUCT_RAI_NAME,
  77. }
  78. login.ProductName = productIdName[productId]
  79. return
  80. }