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