fonchain-fiee/pkg/common/jwt/common.go
2025-06-12 19:31:40 +08:00

78 lines
2.1 KiB
Go

// 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
}