123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package services
- import (
- "eta/eta_forum_admin/models/system"
- "eta/eta_forum_admin/utils"
- "fmt"
- "time"
- )
- func ThirdLogin(adminName string) (login system.LoginResp, err error) {
- // 获取用户信息
- sysUser, e := system.GetSysUserByAdminName(adminName)
- if e != nil {
- if e.Error() == utils.ErrNoRow() {
- err = fmt.Errorf("用户不存在")
- return
- }
- err = fmt.Errorf("获取失败, 获取用户信息失败, err: " + e.Error())
- return
- }
- var token string
- account := utils.MD5(adminName)
- // 获取用户未过期的session, 避免过于频繁生成token
- expired := time.Now().AddDate(0, 0, 1).Format(utils.FormatDateTime)
- session, _ := system.GetUserUnexpiredSysSession(adminName, expired)
- if session != nil && session.AccessToken != "" {
- token = session.AccessToken
- } else {
- token = utils.GenToken(account)
- sysSession := new(system.SysSession)
- sysSession.UserName = adminName
- sysSession.SysUserId = sysUser.AdminId
- sysSession.ExpiredTime = time.Now().AddDate(0, 0, 90)
- sysSession.IsRemember = 1
- sysSession.CreatedTime = time.Now()
- sysSession.LastUpdatedTime = time.Now()
- sysSession.AccessToken = token
- if e = system.AddSysSession(sysSession); e != nil {
- err = fmt.Errorf("获取失败,新增session失败, err: " + e.Error())
- return
- }
- }
- login.Authorization = token
- login.Authorization = "authorization=" + token
- login.RealName = sysUser.RealName
- login.AdminId = sysUser.AdminId
- login.AdminName = sysUser.AdminName
- login.RoleName = sysUser.RoleName
- login.SysRoleTypeCode = sysUser.RoleTypeCode //系统角色编码
- login.RoleTypeCode = sysUser.RoleTypeCode
- login.Authority = sysUser.Authority
- // 判断实际的角色类型
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP {
- login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
- }
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM {
- login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
- }
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT {
- login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
- }
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
- login.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
- }
- if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT {
- login.RoleTypeCode = utils.ROLE_TYPE_CODE_RAI_SELLER
- }
- if sysUser.RoleName == utils.ROLE_NAME_FICC_DIRECTOR {
- login.RoleTypeCode = utils.ROLE_TYPE_CODE_FICC_SELLER
- }
- // 角色产品ID
- productId := GetProductId(sysUser.RoleTypeCode)
- productIdName := map[int]string{
- 0: "admin",
- utils.COMPANY_PRODUCT_FICC_ID: utils.COMPANY_PRODUCT_FICC_NAME,
- utils.COMPANY_PRODUCT_RAI_ID: utils.COMPANY_PRODUCT_RAI_NAME,
- }
- login.ProductName = productIdName[productId]
- // 新增登录记录
- {
- record := new(system.SysUserLoginRecord)
- record.Uid = sysUser.AdminId
- record.UserName = adminName
- record.Ip, _ = utils.GetLocalIP()
- record.Stage = "login"
- record.CreateTime = time.Now()
- go system.AddSysUserLoginRecord(record)
- }
- return
- }
- // GetProductId 根据角色类型获取对应的产品ID
- func GetProductId(roleTypeCode string) (productId int) {
- if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER ||
- roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN ||
- roleTypeCode == utils.ROLE_TYPE_CODE_FICC_TEAM ||
- roleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP ||
- roleTypeCode == utils.ROLE_TYPE_CODE_FICC_DEPARTMENT {
- productId = 1
- } else if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER ||
- roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN ||
- roleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP ||
- roleTypeCode == utils.ROLE_TYPE_CODE_RAI_DEPARTMENT {
- productId = 2
- } else {
- productId = 0
- }
- return
- }
|