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.

220 lines
4.8 KiB
Go

package svc
import (
"context"
"git.noahlan.cn/n-admin/n-admin-server/api/internal/types"
"git.noahlan.cn/n-admin/n-admin-server/rpc/core/types/core"
"github.com/jinzhu/copier"
)
type Convert struct {
svcCtx *ServiceContext
}
func NewConvert(svcCtx *ServiceContext) *Convert {
return &Convert{
svcCtx: svcCtx,
}
}
func (c *Convert) ConvertPaginationRpc(page *types.Pagination) *core.Pagination {
if page == nil {
return nil
}
return &core.Pagination{
Size: page.Size,
Total: page.Total,
Current: page.Current,
}
}
func (c *Convert) ConvertPaginationApi(page *core.Pagination) *types.Pagination {
if page == nil {
return nil
}
return &types.Pagination{
Size: page.Size,
Current: page.Current,
Total: page.Total,
}
}
func (c *Convert) ConvertRole(_ context.Context, v *core.RoleInfo) *types.RoleInfo {
if v == nil {
return nil
}
var tmp types.RoleInfo
_ = copier.Copy(&tmp, v)
return &tmp
}
func (c *Convert) ConvertUser(ctx context.Context, v *core.UserInfo) *types.UserInfo {
if v == nil {
return nil
}
var tmp types.UserInfo
_ = copier.Copy(&tmp, v)
tmp.Password = "***"
// Metadata
if len(v.Metas) > 0 {
// 导出meta数据
metaMap := make(map[string]string)
for key, val := range v.Metas {
metaMap[key] = val
}
tmp.Metas = metaMap
}
// Relationship
if len(v.Roles) > 0 {
tmp.Roles = make([]string, len(v.Roles))
for i, item := range v.Roles {
tmp.Roles[i] = item.Code
}
}
if v.LoginRecord != nil {
tmp.LoginRecord = c.ConvertLoginRecord(ctx, v.LoginRecord)
}
//if len(v.Departments) > 0 {
// tmp.Departments = make([]*core.DepartmentInfo, len(v.Edges.Departments))
// for i, item := range v.Edges.Departments {
// tmp.Departments[i] = c.ConvertDepartment(ctx, item)
// }
//}
//if len(v.Token) > 0 {
// tmp.Tokens = make([]*core.TokenInfo, len(v.Edges.Token))
// for i, item := range v.Edges.Token {
// tmp.Tokens[i] = c.ConvertToken(ctx, item)
// }
//}
//if len(v.Socials) > 0 {
// tmp.Socials = make([]*core.UserSocialInfo, len(v.Edges.Socials))
// for i, item := range v.Edges.Socials {
// tmp.Socials[i] = c.ConvertUserSocial(ctx, item)
// }
//}
return &tmp
}
func (c *Convert) ConvertToken(_ context.Context, v *core.TokenInfo) *types.TokenInfo {
if v == nil {
return nil
}
var tmp types.TokenInfo
_ = copier.Copy(&tmp, v)
//if v.User != nil {
// tmp.User = c.ConvertUser(ctx, v.Edges.User)
//}
return &tmp
}
func (c *Convert) ConvertUserSocial(_ context.Context, v *core.UserSocialInfo) *types.UserSocialInfo {
if v == nil {
return nil
}
var tmp types.UserSocialInfo
_ = copier.Copy(&tmp, v)
//if v.User != nil {
// tmp.User = c.ConvertUser(ctx, v.Edges.User)
//}
return &tmp
}
func (c *Convert) ConvertLoginRecord(_ context.Context, v *core.LoginRecordInfo) *types.UserLoginRecordInfo {
if v == nil {
return nil
}
var tmp types.UserLoginRecordInfo
_ = copier.Copy(&tmp, v)
return &tmp
}
func (c *Convert) ConvertDepartment(ctx context.Context, v *core.DepartmentInfo) *types.DepartmentInfo {
if v == nil {
return nil
}
var tmp types.DepartmentInfo
_ = copier.Copy(&tmp, v)
// relationship
if v.Parent != nil {
tmp.Parent = c.ConvertDepartment(ctx, v.Parent)
}
if len(v.Children) > 0 {
tmp.Children = make([]*types.DepartmentInfo, len(v.Children))
for i, item := range v.Children {
tmp.Children[i] = c.ConvertDepartment(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.ConvertUser(ctx, item)
// }
//}
if v.Leader != nil {
tmp.Leader = c.ConvertUser(ctx, v.Leader)
}
return &tmp
}
func (c *Convert) ConvertOAuthProvider(_ context.Context, v *core.OauthProviderInfo) *types.OauthProviderInfo {
if v == nil {
return nil
}
var tmp types.OauthProviderInfo
_ = copier.Copy(&tmp, v)
return &tmp
}
func (c *Convert) ConvertDistrict(_ context.Context, v *core.DistrictInfo) *types.DistrictInfo {
if v == nil {
return nil
}
var tmp types.DistrictInfo
_ = copier.Copy(&tmp, v)
tmp.Children = make([]*types.DistrictInfo, len(v.Children))
return &tmp
}
func (c *Convert) ConvertDictionary(ctx context.Context, v *core.DictionaryInfo) *types.DictionaryInfo {
if v == nil {
return nil
}
var tmp types.DictionaryInfo
_ = copier.Copy(&tmp, v)
if len(v.Details) > 0 {
tmp.Details = make([]*types.DictionaryDetailInfo, len(v.Details))
for i, item := range v.Details {
tmp.Details[i] = c.ConvertDictionaryDetail(ctx, item)
}
}
return &tmp
}
func (c *Convert) ConvertDictionaryDetail(ctx context.Context, v *core.DictionaryDetailInfo) *types.DictionaryDetailInfo {
if v == nil {
return nil
}
var tmp types.DictionaryDetailInfo
_ = copier.Copy(&tmp, v)
// relationship
if v.Dictionary != nil {
tmp.Dictionary = c.ConvertDictionary(ctx, v.Dictionary)
}
return &tmp
}