package data_manage import ( "github.com/beego/beego/v2/client/orm" "time" ) type EdbdataClassify struct { ClassifyId int `orm:"column(classify_id);pk" description:"分类id"` ClassifyName string `description:"分类名称"` ParentId int `description:"父级id"` CreateTime time.Time `description:"创建时间"` Sort int `description:"排序"` IsShow int `description:"是否显示"` } type EdbdataClassifyList struct { ClassifyId int `description:"分类id"` ClassifyName string `description:"分类名称"` ParentId int `description:"父级id"` CreateTime time.Time `description:"创建时间"` Sort int `description:"排序"` IsShow int `description:"是否显示"` Total int `description:"指标总数"` } func AddEdbdataClassify(item *EdbdataClassify) (lastId int64, err error) { o := orm.NewOrmUsingDB("edb") lastId, err = o.Insert(item) return } type ManualClassifyList struct { ClassifyId int ClassifyName string ParentId int CheckList []int Child []*ManualClassifyList } func GetManualClassifyAll(adminId int) (items []*ManualClassifyList, err error) { var newItems []*ManualClassifyList o := orm.NewOrmUsingDB("edb") sql := ` SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE parent_id=0 AND is_show=1 ORDER BY sort ASC ,classify_id ASC ` _, err = o.Raw(sql).QueryRows(&newItems) if err != nil { return } classifyLen := len(newItems) for i := 0; i < classifyLen; i++ { var childItems []*ManualClassifyList parentId := newItems[i].ClassifyId childSql := `` childSql = "SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE parent_id=? AND is_show=1 ORDER BY sort ASC ,classify_id ASC " _, err = o.Raw(childSql, parentId).QueryRows(&childItems) if err != nil { return } checkList := make([]int, 0) for _, v := range childItems { if v.ParentId > 0 { count, err := GetManualUserClassifyCount(adminId, v.ClassifyId) if err != nil { return items, err } if count > 0 { checkList = append(checkList, v.ClassifyId) } } } newItems[i].CheckList = checkList newItems[i].Child = childItems } for _, v := range newItems { if v.ParentId > 0 { count, err := GetManualUserClassifyCount(adminId, v.ClassifyId) if err != nil { return items, err } if count > 0 { v.CheckList = append(v.CheckList, v.ClassifyId) } } childLen := len(v.Child) if childLen > 0 { items = append(items, v) } } return } func GetManualClassifyAllV2() (items []*ManualClassifyList, err error) { var newItems []*ManualClassifyList o := orm.NewOrmUsingDB("edb") sql := ` SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE parent_id=0 AND is_show=1 ORDER BY sort ASC ,classify_id ASC ` _, err = o.Raw(sql).QueryRows(&newItems) if err != nil { return } classifyLen := len(newItems) for i := 0; i < classifyLen; i++ { var childItems []*ManualClassifyList parentId := newItems[i].ClassifyId childSql := `` childSql = "SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE parent_id=? AND is_show=1 ORDER BY sort ASC ,classify_id ASC " _, err = o.Raw(childSql, parentId).QueryRows(&childItems) if err != nil { return } newItems[i].Child = childItems } for _, v := range newItems { items = append(items, v) } return } type AddManualClassifyReq struct { ClassifyName string `description:"分类名称"` ParentId int `description:"父级id,第一级传0"` } func GetManualClassifyCount(classifyName string, parentId int) (count int, err error) { o := orm.NewOrmUsingDB("edb") sql := `SELECT COUNT(1) AS count FROM edbdata_classify WHERE parent_id=? AND classify_name=? ` err = o.Raw(sql, parentId, classifyName).QueryRow(&count) return } func GetManualClassifyByClassifyName(classifyName string) (item *EdbdataClassify, err error) { o := orm.NewOrmUsingDB("edb") sql := `SELECT * FROM edbdata_classify WHERE classify_name=? ` err = o.Raw(sql, classifyName).QueryRow(&item) return } func ModifyManualClassifyIsShow(isShow, classifyId, parentId int) (err error) { o := orm.NewOrmUsingDB("edb") sql := `UPDATE edbdata_classify SET is_show=?,parent_id=? WHERE classify_id=? ` _, err = o.Raw(sql, isShow, parentId, classifyId).Exec() return } type EditManualClassifyReq struct { ClassifyName string `description:"分类名称"` ClassifyId int `orm:"column(classify_id);pk" description:"分类id"` ParentId int `description:"上级id"` } // DelManualClassifyReq 删除手工指标分类请求 type DelManualClassifyReq struct { ClassifyId int `description:"分类id"` } func GetManualClassifyById(classifyId int) (item *EdbdataClassify, err error) { o := orm.NewOrmUsingDB("edb") sql := ` SELECT * FROM edbdata_classify WHERE classify_id=? ` err = o.Raw(sql, classifyId).QueryRow(&item) return } func ModifyManualClassifyName(classifyName string, classifyId, parentId int) (err error) { o := orm.NewOrmUsingDB("edb") updateStr := ` classify_name=? ` pars := []interface{}{classifyName} if parentId > 0 { updateStr += ` , parent_id=? ` pars = append(pars, parentId) } sql := `UPDATE edbdata_classify SET ` + updateStr + ` WHERE classify_id=? ` pars = append(pars, classifyId) _, err = o.Raw(sql, pars).Exec() return } func GetManualClassifyAllByCondition(condition string) (items []*EdbdataClassifyList, err error) { o := orm.NewOrmUsingDB("edb") sql := ` SELECT classify_id,classify_name,parent_id FROM edbdata_classify WHERE is_show=1 ` if condition != "" { sql += condition } sql += ` ORDER BY sort ASC ` _, err = o.Raw(sql).QueryRows(&items) return } // GetChildManualClassifyCount 根据分类id获取下面存在的子分类数量(展示的) func GetChildManualClassifyCount(parentId int) (count int, err error) { o := orm.NewOrmUsingDB("edb") sql := `SELECT COUNT(1) AS count FROM edbdata_classify WHERE parent_id=? AND is_show = 1` err = o.Raw(sql, parentId).QueryRow(&count) return }