package entity

type RoleResp struct {
	Details []*RoleDetail `json:"details"`
	Total   int64         `json:"total"`
}

type RoleDetail struct {
	Id        string `gorm:"column:id;primaryKey" json:"id" bson:"_id"`
	RenterId  uint64 `gorm:"column:renter_id;type:bigint;NOT NULL;comment:租户ID;" json:"renter_id" bson:"renter_id"`
	Name      string `gorm:"column:name;type:varchar(1024);NOT NULL;comment:角色名称" json:"name" bson:"name"`
	PresetId  uint64 `gorm:"column:preset_id;comment:预设角色" json:"preset_id" bson:"preset_id"`
	Desc      string `gorm:"column:desc;comment:描述" json:"desc" bson:"desc"`
	Status    uint   `gorm:"column:status;type:tinyint;default:1;comment:状态，1：正常，2：禁用" json:"status" bson:"status"`
	CreatedAt uint64 `gorm:"column:created_at;autoCreateTime" json:"created_at" bson:"created_at"`
	DeletedAt uint64 `gorm:"column:deleted_at;" json:"deleted_at" bson:"deleted_at"`
}

type AccessResp struct {
	Details []*AccessDetail `json:"details"`
	Total   int64           `json:"total"`
}

type AccessDetail struct {
	ID          string          `bson:"id" json:"id,omitempty"`
	ModuleName  string          `bson:"module_name" json:"module_name,omitempty"` // 模块名称
	ActionName  string          `bson:"action_name" json:"action_name,omitempty"` // 操作名称
	ParentId    string          `bson:"parent_id" json:"parent_id,omitempty"`     // 父级ID
	Type        int             `bson:"type" json:"type,omitempty"`               // 节点类型 :  1、表示模块    2、表示菜单     3、操作
	URL         string          `bson:"url" json:"url,omitempty"`                 // 路由跳转地址
	Sort        int             `bson:"sort" json:"sort,omitempty"`               // 排序
	Description string          `bson:"description" json:"description,omitempty"` // 描述
	Status      int             `bson:"status" json:"status,omitempty"`           // 状态 1、正常  2、禁用
	AddTime     int             `bson:"add_time" json:"add_time,omitempty"`       // 添加时间-
	AccessItem  []*AccessDetail `bson:"access_item" json:"access_item"`           // 子节点
}

type RoleListReq struct {
	Page   int    `json:"page"  binding:"required" form:"page"`
	Size   int    `json:"size"  binding:"required" form:"size"`
	Name   string `json:"name" form:"name"`
	Status uint   `json:"status" form:"status"`
}

type RoleAddReq struct {
	Name   string `json:"name"  binding:"required" bson:"name"`
	Desc   string `json:"desc" bson:"desc"`
	Status uint   `json:"status" bson:"status"  binding:"required"`
}
type RoleDelReq struct {
	Id string `json:"id" binding:"required" form:"id"`
}

type RoleUpdateReq struct {
	Id     string `json:"id" binding:"required"`
	Name   string `json:"name"`
	Desc   string `json:"desc" bson:"desc"`
	Status uint   `json:"status" bson:"status"`
}

// RoleAccessListReq 角色权限
type RoleAccessListReq struct {
	RoleId string `json:"role_id" form:"role_id"`
}

// RoleAccessAddReq 添加角色权限
type RoleAccessAddReq struct {
	RoleId   string   `json:"role_id"`
	AccessId []string `json:"access"`
}

// RoleAccessUpdateReq 修改角色权限
type RoleAccessUpdateReq struct {
	RoleId   string   `json:"role_id"`
	AccessId []string `json:"access"`
}

type RoleAccessDelReq struct {
	RoleId string `json:"role_id" form:"role_id"`
}
type Response struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    interface{}
}
type AccessDelReq struct {
	Id string `json:"id" form:"id"`
}

// AccessAddReq 添加权限路由
type AccessAddReq struct {
	ModuleName  string `bson:"module_name" json:"module_name"` // 模块名称
	ActionName  string `bson:"action_name" json:"action_name"` // 操作名称
	ParentId    string `bson:"parent_id" json:"parent_id"`     // 父级ID  0表示顶级
	Type        int    `bson:"type" json:"type"`               // 节点类型 :  1、表示模块    2、表示菜单     3、操作
	URL         string `bson:"url" json:"url"`                 // 路由跳转地址
	Sort        int    `bson:"sort" json:"sort"`               // 排序
	Description string `bson:"description" json:"description"` // 描述
	Status      int    `bson:"status" json:"status"`           // 状态 1、正常  2、禁用
}

// AccessUpdateReq 修改权限路由
type AccessUpdateReq struct {
	Id          string `bson:"_id" json:"id"`                  // 权限ID
	ModuleName  string `bson:"module_name" json:"module_name"` // 模块名称
	ActionName  string `bson:"action_name" json:"action_name"` // 操作名称
	ParentId    string `bson:"parent_id" json:"parent_id"`     // 父级ID  0表示顶级
	Type        int    `bson:"type" json:"type"`               // 节点类型 :  1、表示模块    2、表示菜单     3、操作
	URL         string `bson:"url" json:"url"`                 // 路由跳转地址
	Sort        int    `bson:"sort" json:"sort"`               // 排序
	Description string `bson:"description" json:"description"` // 描述
	Status      int    `bson:"status" json:"status"`           // 状态 1、正常  2、禁用
}

type AccessListReq struct {
	Page       int    `json:"page" form:"page"`
	Size       int    `json:"size" form:"size"`
	Count      int64  `json:"count" form:"count"`
	ModuleName string `json:"module_name" form:"module_name"`
	ActionName string `json:"action_name" form:"action_name"`
	ParentId   string `json:"parent_id" form:"parent_id"`
	Type       int    `json:"type" form:"type"`
	Status     int    `json:"status" form:"status"`
	URL        string `bson:"url" json:"url" form:"url"` // 路由跳转地址
}

type AdminBindRoleReq struct {
	AdminId string `json:"admin_id" form:"admin_id"`
	RoleId  string `json:"role_id" form:"role_id"`
}

type AdminRoleByIDReq struct {
	AdminId string `json:"admin_id" form:"admin_id"`
}

type AdminBindRoleResp struct {
	RoleId     string          `json:"role_id"`    // 角色ID
	AdminId    string          `json:"admin_id"`   // 管理员ID
	AdminName  string          `json:"admin_name"` // 管理员名称
	RoleName   string          `json:"role_name"`  // 角色名称
	AccessList []*AccessDetail `json:"access_list"`
}
