package models

import "time"

// CommonClassify 通用分类
type CommonClassify struct {
	ClassifyId   int       `description:"分类ID"`
	ClassifyName string    `description:"分类名称"`
	ParentId     int       `description:"父级ID"`
	RootId       int       `description:"顶级ID"`
	Level        int       `description:"层级"`
	LevelPath    string    `description:"层级路径"`
	Sort         int       `description:"排序"`
	CreateTime   time.Time `description:"创建时间"`
	ModifyTime   time.Time `description:"修改时间"`
}

// CommonClassifyCols 通用分类基本字段
type CommonClassifyCols struct {
	ClassifyId   string `description:"分类ID"`
	ClassifyName string `description:"分类名称"`
	ParentId     string `description:"父级id"`
	RootId       string `description:"顶级id"`
	Level        string `description:"层级"`
	LevelPath    string `description:"层级路径"`
	Sort         string `description:"排序字段,越小越靠前,默认值:10"`
	CreateTime   string `description:"创建时间"`
	ModifyTime   string `description:"修改时间"`
}

// CommonClassifyObj 通用分类对象
type CommonClassifyObj struct {
	ObjectId   int       `description:"对象ID"`
	ClassifyId int       `description:"分类ID"`
	Sort       int       `description:"排序"`
	CreateTime time.Time `description:"创建时间"`
	ModifyTime time.Time `description:"修改时间"`
}

// CommonClassifyObjCols 通用分类对象基本字段
type CommonClassifyObjCols struct {
	ObjectId   string `description:"对象ID"`
	ClassifyId string `description:"分类ID"`
	Sort       string `description:"排序"`
	CreateTime string `description:"创建时间"`
	ModifyTime string `description:"修改时间"`
}

// CommonClassifyMoveReq 移动分类
type CommonClassifyMoveReq struct {
	ClassifyId       int `description:"分类ID"`
	ParentClassifyId int `description:"父级分类ID"`
	PrevClassifyId   int `description:"上一个兄弟节点分类ID"`
	NextClassifyId   int `description:"下一个兄弟节点分类ID"`
	ObjectId         int `description:"对象ID(指标/图表..), 如果对象ID>0则移动对象, 否则认为移动分类"`
	PrevObjectId     int `description:"上一个对象ID"`
	NextObjectId     int `description:"下一个对象ID"`
}

// ExtraPermissionClassifyStrategy 是一个带有额外权限校验的装饰器
//type ExtraPermissionClassifyStrategy struct {
//	BaseClassifyStrategy
//}

// UpdateCommonClassify 覆盖基础策略的UpdateClassify方法,并添加额外的权限校验
//func (s *ExtraPermissionClassifyStrategy) UpdateCommonClassify(classify *CommonClassify) error {
//	// 额外的权限校验
//	if !checkExtraPermission(classify) {
//		return fmt.Errorf("无操作权限")
//	}
//
//	// 调用基础策略的UpdateClassify方法
//	return s.BaseClassifyStrategy.UpdateCommonClassify(classify)
//}
//
//// checkExtraPermission 进行额外的权限校验
//func checkExtraPermission(classify *CommonClassify) bool {
//	// 实现额外权限校验逻辑
//	return true
//}