// Package jwt ----------------------------- // @file : common.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2025/6/12 18:07 // ------------------------------------------- package jwt import ( "context" "fonchain-fiee/api/account" "fonchain-fiee/api/accountFiee" "fonchain-fiee/pkg/config" "fonchain-fiee/pkg/e" "fonchain-fiee/pkg/service" "fonchain-fiee/pkg/utils/secret" "github.com/gin-gonic/gin" ) // ParseToChatUser 将token信息转换为聊天室用户信息 func ParseToChatUser(c *gin.Context) (chatUserInfo *accountFiee.ChatUserData, code e.ErrorCodeType) { domain := config.Domain domainAny, exist := c.Get("domain") if exist { domain = domainAny.(string) } var err error token := c.GetHeader(e.Authorization) if token == "" { code = e.NotLogin return } ctx := context.Background() var originId int64 = 0 switch domain { case config.Domain: //fiee token校验 token, err = secret.GetJwtFromStr(token) if err != nil { code = e.NotLogin return } var fieeJwtInfo *accountFiee.DecryptJwtResponse fieeJwtInfo, err = service.AccountFieeProvider.DecryptJwt(ctx, &accountFiee.DecryptJwtRequest{Token: token, Domain: domain}) if err != nil || fieeJwtInfo.IsOffline { return } originId = int64(fieeJwtInfo.ID) case "fontree": //erp token校验 token, err = secret.GetJwtFromStr(token) if err != nil { code = e.NotLogin return } var fontreeJwtInfo *account.DecryptJwtResponse fontreeJwtInfo, err = service.AccountProvider.DecryptJwt(ctx, &account.DecryptJwtRequest{Token: token, Domain: domain}) if err != nil || fontreeJwtInfo.IsOffline { code = e.NotLogin return } originId = int64(fontreeJwtInfo.ID) } var userQueryRes *accountFiee.GetChatUserListResp userQueryRes, err = service.AccountFieeProvider.GetChatUserList(c, &accountFiee.GetChatUserListRequest{ Query: &accountFiee.ChatUserData{Origin: domain, OriginId: originId}, Page: 1, PageSize: 1, }) if err != nil || userQueryRes.Total == 0 { code = e.ErrorNotExistUser return } chatUserInfo = userQueryRes.List[0] return }