package schema

import "time"

// User User对象
type User struct {
	RecordID         string    `json:"record_id"`         // 记录id
	UserName         string    `json:"user_name"`         // 用户名
	RealName         string    `json:"real_name"`         // 真是姓名
	OrgId            string    `json:"org_id"`            // 组织id
	OrgName          string    `json:"org_name"`          // 组织名称
	Phone            string    `json:"phone"`             // 手机号
	Password         string    `json:"password"`          // 密码
	Photo            string    `json:"photo"`             // 头像
	Status           bool      `json:"status"`            // 状态 启动 禁用
	RoleId           string    `json:"role_id"`           // 角色id
	RoleCode         string    `json:"role_code"`         // 角色编码
	RoleName         string    `json:"role_name"`         // 角色名称
	Menu             MenuTrees `json:"menu"`              // 可访问的菜单
	Datasets         Datasets  `json:"datasets"`          // 可访问的所有知识库（聚合）
	PublicDatasets   Datasets  `json:"public_datasets"`   // 公共知识库（type=1）
	OrgDatasets      Datasets  `json:"org_datasets"`      // 企业知识库（type=2）
	PersonalDatasets Datasets  `json:"personal_datasets"` // 个人知识库（type=3）
	ChartNum         int       `json:"chart_num"`         // 对话轮次/日
	CreatorId        string    `json:"creator_id"`        // 创建人id
	CreatorName      string    `json:"creator_name"`      // 创建人名称
	CreatedAt        time.Time `json:"created_at"`        // 创建时间
	Sequence         int       `json:"sequence"`          // 排序
	Used             int       `json:"used"`              // 已用的对话轮次
	Unused           int       `json:"unused"`            // 剩余对话轮次
	H5AssistantId    string    `json:"h5_assistant_id"`   // h5对话助手id
}

// UserQueryParam 查询条件
type UserQueryParam struct {
	LikeName  string
	RecordIDs []string
	UserName  string
	OrgId     string
	RoleCode  []string
}

type Users []*User

// UserQueryResult User对象查询结果
type UserQueryResult struct {
	Data       Users
	PageResult *PaginationResult
}

// CleanSecure 清理安全数据
func (a *User) CleanSecure() *User {
	a.Password = "******"
	return a
}

// UserOptions User对象查询可选参数项
type UserOptions struct {
	PageParam *PaginationParam // 分页参数
	Tag       string
}

// FillCreator 填充创建者信息
func (a Users) FillCreator(users Users) {
	for _, v := range a {
		for _, u := range users {
			if v.CreatorId == u.RecordID {
				v.CreatorName = u.RealName
				continue
			}
		}
	}
}

// FillRoleName 填充角色名称
func (a Users) FillRoleName(roles Roles) {
	for _, o := range a {
		for _, r := range roles {
			if o.RoleId == r.RecordID {
				o.RoleName = r.Name
				continue
			}
		}
	}
}

// FillOrgName 填充组织名称
func (a Users) FillOrgName(orgs Organizations) {
	for _, v := range a {
		for _, o := range orgs {
			if v.OrgId == o.RecordID {
				v.OrgName = o.Name
				continue
			}
		}
	}
}
