You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
186 lines
4.5 KiB
Go
186 lines
4.5 KiB
Go
package svc
|
|
|
|
import (
|
|
"context"
|
|
"git.noahlan.cn/n-admin/n-admin-server/rpc/core/ent"
|
|
"git.noahlan.cn/n-admin/n-admin-server/rpc/core/types/core"
|
|
"git.noahlan.cn/noahlan/ntool/ntime"
|
|
"github.com/jinzhu/copier"
|
|
)
|
|
|
|
type Convert struct {
|
|
svcCtx *ServiceContext
|
|
}
|
|
|
|
func NewConvert(svcCtx *ServiceContext) *Convert {
|
|
return &Convert{
|
|
svcCtx: svcCtx,
|
|
}
|
|
}
|
|
|
|
func (c *Convert) ConvertRoleRpc(_ context.Context, v *ent.Role) *core.RoleInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.RoleInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
tmp.Status = v.Status.String()
|
|
|
|
return &tmp
|
|
}
|
|
|
|
func (c *Convert) ConvertUserRpc(ctx context.Context, v *ent.User) *core.UserInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.UserInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.Status = v.Status.String()
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
|
|
// Metadata
|
|
if len(v.Edges.Metas) > 0 {
|
|
// 导出meta数据
|
|
metaMap := make(map[string]string)
|
|
for _, item := range v.Edges.Metas {
|
|
metaMap[item.Key] = item.Value
|
|
}
|
|
tmp.Metas = metaMap
|
|
}
|
|
|
|
// Relationship
|
|
if len(v.Edges.Roles) > 0 {
|
|
tmp.Roles = make([]*core.RoleInfo, len(v.Edges.Roles))
|
|
for i, item := range v.Edges.Roles {
|
|
tmp.Roles[i] = c.ConvertRoleRpc(ctx, item)
|
|
}
|
|
}
|
|
if v.Edges.LoginRecord != nil {
|
|
tmp.LoginRecord = c.ConvertLoginRecordRpc(ctx, v.Edges.LoginRecord)
|
|
}
|
|
if len(v.Edges.Departments) > 0 {
|
|
tmp.Departments = make([]*core.DepartmentInfo, len(v.Edges.Departments))
|
|
for i, item := range v.Edges.Departments {
|
|
tmp.Departments[i] = c.ConvertDepartmentRpc(ctx, item)
|
|
}
|
|
}
|
|
if len(v.Edges.Token) > 0 {
|
|
tmp.Tokens = make([]*core.TokenInfo, len(v.Edges.Token))
|
|
for i, item := range v.Edges.Token {
|
|
tmp.Tokens[i] = c.ConvertTokenRpc(ctx, item)
|
|
}
|
|
}
|
|
if len(v.Edges.Socials) > 0 {
|
|
tmp.Socials = make([]*core.UserSocialInfo, len(v.Edges.Socials))
|
|
for i, item := range v.Edges.Socials {
|
|
tmp.Socials[i] = c.ConvertSocialRpc(ctx, item)
|
|
}
|
|
}
|
|
|
|
return &tmp
|
|
}
|
|
|
|
func (c *Convert) ConvertTokenRpc(ctx context.Context, v *ent.Token) *core.TokenInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.TokenInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
tmp.UserId = v.UserID
|
|
|
|
if v.Edges.User != nil {
|
|
tmp.User = c.ConvertUserRpc(ctx, v.Edges.User)
|
|
}
|
|
return &tmp
|
|
}
|
|
|
|
func (c *Convert) ConvertSocialRpc(ctx context.Context, v *ent.UserSocial) *core.UserSocialInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.UserSocialInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
tmp.UserId = v.UserID
|
|
tmp.Uid = v.UID
|
|
tmp.OpenId = v.OpenID
|
|
tmp.UnionId = v.UnionID
|
|
|
|
if v.Edges.User != nil {
|
|
tmp.User = c.ConvertUserRpc(ctx, v.Edges.User)
|
|
}
|
|
|
|
return &tmp
|
|
}
|
|
|
|
func (c *Convert) ConvertLoginRecordRpc(_ context.Context, v *ent.LoginRecord) *core.LoginRecordInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.LoginRecordInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
|
|
tmp.UserId = v.UserID
|
|
tmp.LastLoginUa = v.LastLoginUA
|
|
return &tmp
|
|
}
|
|
|
|
func (c *Convert) ConvertDepartmentRpc(ctx context.Context, v *ent.Department) *core.DepartmentInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.DepartmentInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
|
|
tmp.LeaderId = v.LeaderID
|
|
tmp.ParentId = v.ParentID
|
|
// relationship
|
|
if v.Edges.Parent != nil {
|
|
tmp.Parent = c.ConvertDepartmentRpc(ctx, v.Edges.Parent)
|
|
}
|
|
if len(v.Edges.Children) > 0 {
|
|
tmp.Children = make([]*core.DepartmentInfo, len(v.Edges.Children))
|
|
for i, item := range v.Edges.Children {
|
|
tmp.Children[i] = c.ConvertDepartmentRpc(ctx, item)
|
|
}
|
|
}
|
|
if len(v.Edges.Users) > 0 {
|
|
tmp.Users = make([]*core.UserInfo, len(v.Edges.Users))
|
|
for i, item := range v.Edges.Users {
|
|
tmp.Users[i] = c.ConvertUserRpc(ctx, item)
|
|
}
|
|
}
|
|
if v.Edges.Leader != nil {
|
|
tmp.Leader = c.ConvertUserRpc(ctx, v.Edges.Leader)
|
|
}
|
|
|
|
return &tmp
|
|
}
|
|
|
|
func (c *Convert) ConvertOAuthProviderRpc(_ context.Context, v *ent.OauthProvider) *core.OauthProviderInfo {
|
|
if v == nil {
|
|
return nil
|
|
}
|
|
var tmp core.OauthProviderInfo
|
|
_ = copier.Copy(&tmp, v)
|
|
tmp.CreatedAt = ntime.Format(v.CreatedAt)
|
|
tmp.UpdatedAt = ntime.Format(v.UpdatedAt)
|
|
tmp.ClientId = v.ClientID
|
|
tmp.RedirectUrl = v.RedirectURL
|
|
tmp.AuthUrl = v.AuthURL
|
|
tmp.TokenUrl = v.TokenURL
|
|
tmp.InfoUrl = v.InfoURL
|
|
|
|
return &tmp
|
|
}
|