package data_manage import ( "eta/eta_api/global" "eta/eta_api/utils" "time" ) // BaseFromSciHqClassify 卓创红期原始数据分类表 type BaseFromSciHqClassify struct { ClassifyId int `orm:"column(classify_id);pk" gorm:"primaryKey"` ClassifyName string `description:"分类名称"` ParentId int `description:"父级id"` Level int `description:"层级"` Sort int `description:"排序字段"` ModifyTime time.Time `description:"修改时间"` CreateTime time.Time `description:"创建时间"` ClassifyNameEn string `description:"英文分类名称"` } type BaseFromSciHqClassifyItem struct { ClassifyId int `orm:"column(classify_id);pk" gorm:"primaryKey"` ClassifyName string `description:"分类名称"` ParentId int `description:"父级id"` Level int `description:"层级"` Sort int `description:"排序字段"` UniqueCode string `description:"唯一code"` ModifyTime time.Time `description:"修改时间"` CreateTime time.Time `description:"创建时间"` ClassifyNameEn string `description:"英文分类名称"` Children []*BaseFromSciHqClassifyItem `description:"子分类"` } type BaseFromSciHqClassifyMaxSort struct { ClassifyId int `description:"分类id"` MaxSort int `description:"最大排序"` } func (t *BaseFromSciHqClassify) Add() (insertId int64, err error) { o := global.DbMap[utils.DbNameIndex] err = o.Create(t).Error if err != nil { return 0, err } insertId = int64(t.ClassifyId) return } func (t *BaseFromSciHqClassify) Update(cols []string) (err error) { o := global.DbMap[utils.DbNameIndex] err = o.Model(t).Select(cols).Updates(t).Error return } func BatchAddSciHqClassify(items []*BaseFromSciHqClassify) (err error) { o := global.DbMap[utils.DbNameIndex] err = o.CreateInBatches(items, utils.MultiAddNum).Error return } // 获取所有分类 func GetSciHqClassifyAll() (items []*BaseFromSciHqClassifyItem, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT * FROM base_from_sci_hq_classify ORDER BY sort ASC, classify_id ASC` err = o.Raw(sql).Find(&items).Error return } // GetChildSciHqClassifyListById 获取子分类列表 func GetChildSciHqClassifyListById(classifyId int) (items []*BaseFromSciHqClassifyItem, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT * FROM base_from_sci_hq_classify WHERE parent_id=? ` err = o.Raw(sql, classifyId).Find(&items).Error return } // GetChildSciHqClassifyIdsById 获取子分类的id集合 func GetChildSciHqClassifyIdsById(classifyId int) (items []int, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT classify_id FROM base_from_sci_hq_classify WHERE parent_id=? ` err = o.Raw(sql, classifyId).Find(&items).Error return } // GetChildSciHqClassifyMaxSortById 获取子分类最大排序 func GetChildSciHqClassifyMaxSortById(classifyId int) (sort int, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT COALESCE(MAX(sort), 0) AS sort FROM base_from_sci_hq_classify WHERE parent_id=? ` err = o.Raw(sql, classifyId).Scan(&sort).Error return } // GetSciHqClassifyCountById 获取分类数量 func GetSciHqClassifyCountById(classifyId int) (count int, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT COUNT(*) AS count FROM base_from_sci_hq_classify WHERE classify_id=? ` err = o.Raw(sql, classifyId).Scan(&count).Error return } // GetSciHqClassifyById 通过分类id获取分类 func GetSciHqClassifyById(classifyId int) (item *BaseFromSciHqClassify, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT * FROM base_from_sci_hq_classify WHERE classify_id=? ` err = o.Raw(sql, classifyId).First(&item).Error return } // GetSciHqChildClassifyById 通过分类id获取子分类 func GetSciHqChildClassifyIdsById(classifyId int) (items []int, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT classify_id FROM base_from_sci_hq_classify WHERE parent_id=? ` err = o.Raw(sql, classifyId).Find(&items).Error return } // GetSciHqClassifyListByIds 通过分类id获取分类列表 func GetSciHqClassifyListByIds(classifyIds []int) (items []*BaseFromSciHqClassify, err error) { if len(classifyIds) == 0 { return } o := global.DbMap[utils.DbNameIndex] sql := ` SELECT * FROM base_from_sci_hq_classify WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyIds)) + `)` err = o.Raw(sql, classifyIds).Find(&items).Error return } // GetSciHqClassifyCountByName 通过分类名称获取分类 func GetSciHqClassifyCountByName(classifyName string, lang string) (count int, err error) { o := global.DbMap[utils.DbNameIndex] sql := ` SELECT COUNT(*) AS count FROM base_from_sci_hq_classify WHERE 1=1` if lang == utils.EnLangVersion { sql += ` AND classify_name_en=? ` } else { sql += ` AND classify_name=? ` } err = o.Raw(sql, classifyName).Scan(&count).Error return } func GetBaseFromSciHqClassifyEnCount(classifyNameEn string, parentId int) (count int, err error) { o := global.DbMap[utils.DbNameIndex] sql := `SELECT COUNT(1) AS count FROM base_from_sci_hq_classify WHERE classify_name_en=? AND parent_id=? ` err = o.Raw(sql, classifyNameEn, parentId).Scan(&count).Error return } func GetBaseFromSciHqClassifyCount(classifyName string, parentId int) (count int, err error) { o := global.DbMap[utils.DbNameIndex] sql := `SELECT COUNT(1) AS count FROM base_from_sci_hq_classify WHERE classify_name=? AND parent_id=? ` err = o.Raw(sql, classifyName, parentId).Scan(&count).Error return } func DeleteSciHqClassifyById(classifyId int) (err error) { o := global.DbMap[utils.DbNameIndex] sql := ` DELETE FROM base_from_sci_hq_classify WHERE classify_id=? ` err = o.Exec(sql, classifyId).Error return } // BatchDeleteSciHqClassifyById 批量删除分类 func BatchDeleteSciHqClassifyById(classifyId []int) (err error) { if len(classifyId) == 0 { return } o := global.DbMap[utils.DbNameIndex] tx := o.Begin() if tx.Error != nil { return tx.Error } defer func() { if err != nil { _ = tx.Rollback() } else { _ = tx.Commit() } }() sql := ` DELETE FROM base_from_sci_hq_classify WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `) ` err = tx.Exec(sql, classifyId).Error return } // DeleteSciHqClassifyByClassifyId 根据分类id删除对应的指标分类 func DeleteSciHqClassifyByClassifyId(classifyIdList []int) (err error) { o := global.DbMap[utils.DbNameIndex] num := len(classifyIdList) if num <= 0 { return } //删除分类 sql := `DELETE FROM base_from_sci_hq_classify WHERE classify_id IN (` + utils.GetOrmInReplace(num) + `) ` err = o.Exec(sql, classifyIdList).Error return } // GetSciHqIndexClassifyMinSort 获取最小不等于0的排序 func GetSciHqIndexClassifyMinSort(parentId int) (sort int, err error) { o := global.DbMap[utils.DbNameIndex] sql := `SELECT MIN(sort) FROM base_from_sci_hq_classify WHERE parent_id=? AND sort <> 0 ` err = o.Raw(sql, parentId).Scan(&sort).Error return } // MoveUpSciHqIndexClassifyBySort 往上移动 func MoveUpSciHqIndexClassifyBySort(parentId, nextSort, currentSort int) (err error) { o := global.DbMap[utils.DbNameIndex] sql := `update base_from_sci_hq_classify set sort = sort + 1 where parent_id=? and sort >= ? and sort< ?` err = o.Exec(sql, parentId, nextSort, currentSort).Error return } // MoveDownSciHqIndexClassifyBySort 往下移动 func MoveDownSciHqIndexClassifyBySort(parentId, prevSort, currentSort int) (err error) { o := global.DbMap[utils.DbNameIndex] sql := `update base_from_sci_hq_classify set sort = sort - 1 where parent_id=? and sort <= ? and sort> ? ` err = o.Exec(sql, parentId, prevSort, currentSort).Error return }