package material import ( "eta/eta_api/global" "eta/eta_api/utils" "github.com/rdlucklib/rdluck_tools/paging" "gorm.io/gorm" "time" ) type Material struct { MaterialId int `orm:"column(material_id);pk" gorm:"primaryKey" description:"素材id"` MaterialName string `description:"素材名称"` MaterialNameEn string `description:"英文素材名称"` ImgUrl string `description:"素材图片地址"` SysUserId int `description:"作者id"` SysUserRealName string `description:"作者名称"` ModifyTime time.Time `description:"修改时间"` CreateTime time.Time `description:"创建时间"` ClassifyId int `description:"分类id"` Sort int `description:"排序"` } // Update 素材字段变更 func (material *Material) Update(cols []string) (err error) { o := global.DbMap[utils.DbNameReport] err = o.Select(cols).Updates(material).Error return } // GetMaterialById 根据素材id获取素材详情 func GetMaterialById(MaterialId int) (materialInfo *Material, err error) { o := global.DbMap[utils.DbNameReport] sql := `select * FROM material where material_id = ?` err = o.Raw(sql, MaterialId).First(&materialInfo).Error return } func DeleteByMaterialIds(ids []int) (err error) { o := global.DbMap[utils.DbNameReport] sql := `DELETE FROM material WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `)` err = o.Exec(sql, ids).Error return } func UpdateClassifyByMaterialIds(ids []int, classifyId int, now time.Time) (err error) { o := global.DbMap[utils.DbNameReport] sql := `UPDATE material SET classify_id=?, modify_time=? WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `) and classify_id != ?` err = o.Exec(sql, classifyId, now, ids, classifyId).Error return } // AddMultiMaterial 批量添加素材 func AddMultiMaterial(materialInfoList []*Material) (err error) { o := global.DbMap[utils.DbNameReport] err = o.CreateInBatches(materialInfoList, utils.MultiAddNum).Error if err != nil { return } return } // MaterialListItem 素材推演列表数据 type MaterialListItem struct { MaterialId int `description:"素材id"` MaterialName string `description:"素材名称"` MaterialNameEn string `description:"英文素材名称"` ImgUrl string `description:"素材图片地址"` ModifyTime string `description:"修改时间"` CreateTime string `description:"创建时间"` SysUserId int `description:"作者id"` SysUserRealName string `description:"作者名称"` } // MaterialSaveResp 保存素材响应体 type MaterialSaveResp struct { *Material } type MaterialListItems struct { Material ModifyTime string `description:"修改时间"` CreateTime string `description:"创建时间"` //ParentIds string } func (obj *MaterialListItems) AfterFind(tx *gorm.DB) (err error) { obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime) obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime) return } func GetMaterialListPageByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MaterialListItems, err error) { o := global.DbMap[utils.DbNameReport] sql := ` SELECT * FROM material WHERE 1=1 ` if condition != "" { sql += condition } sql += " ORDER BY create_time DESC, material_id DESC LIMIT ?,? " pars = append(pars, startSize, pageSize) err = o.Raw(sql, pars...).Find(&item).Error return } func GetMaterialListByCondition(condition string, pars []interface{}) (item []*MaterialListItems, err error) { o := global.DbMap[utils.DbNameReport] sql := ` SELECT * FROM material WHERE 1=1 ` if condition != "" { sql += condition } sql += " ORDER BY create_time DESC, material_id DESC" err = o.Raw(sql, pars...).Find(&item).Error return } func GetMaterialListCountByCondition(condition string, pars []interface{}) (count int, err error) { o := global.DbMap[utils.DbNameReport] sql := ` SELECT COUNT(1) AS count FROM material WHERE 1=1 ` if condition != "" { sql += condition } err = o.Raw(sql, pars...).Scan(&count).Error return } type MaterialListResp struct { Paging *paging.PagingItem List []*MaterialListItems } func AddMaterial(item *Material) (lastId int64, err error) { o := global.DbMap[utils.DbNameReport] err = o.Create(item).Error if err != nil { return } lastId = int64(item.MaterialId) return } // GetMaterialByClassifyIdAndName 根据分类id和素材名获取图表信息 func GetMaterialByClassifyIdAndName(classifyId int, name string) (item *Material, err error) { o := global.DbMap[utils.DbNameReport] sql := ` SELECT * FROM material WHERE classify_id = ? and material_name=? ` err = o.Raw(sql, classifyId, name).First(&item).Error return } // GetMaterialByIds 根据素材id获取素材信息 func GetMaterialByIds(ids []int) (items []*MaterialListItems, err error) { o := global.DbMap[utils.DbNameReport] sql := ` SELECT * FROM material WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `) ` err = o.Raw(sql, ids).Find(&items).Error return } // SaveAsMaterialReq 添加素材的请求数据 type SaveAsMaterialReq struct { MaterialName string `description:"素材名称"` ClassifyId int `description:"分类id"` ObjectId int `description:"对象id"` ObjectType string `description:"对象类型:chart,excel,sandbox,sa_doc"` } // MyChartSaveAsMaterialReq 添加素材的 type MyChartSaveAsMaterialReq struct { MaterialList []*MyChartSaveAsMaterialItem } type MyChartSaveAsMaterialItem struct { MaterialName string `description:"素材名称"` ChartInfoId int `description:"图表id"` MyChartId int `description:"我的图表ID"` ClassifyId int `description:"分类id"` } // BatchAddMaterialReq 批量添加素材的请求数据 type BatchAddMaterialReq struct { MaterialList []BatchAddMaterialItem ClassifyId int `description:"分类id"` } type BatchAddMaterialItem struct { MaterialName string `description:"素材名称"` ImgUrl string `description:"素材图片地址"` } // DeleteMaterial 删除素材的请求数据 type DeleteMaterial struct { MaterialId int `description:"素材id"` } // BatchDeleteMaterialReq 删除素材的请求数据 type BatchDeleteMaterialReq struct { MaterialIds []int `description:"素材id"` ClassifyId int `description:"分类id"` IsShowMe bool `description:"操作人id,支持多选,用英文,隔开"` Keyword string `description:"关键字"` IsSelectAll bool `description:"是否选择所有素材"` } type BatchChangeClassifyMaterialReq struct { BatchDeleteMaterialReq NewClassifyId int `description:"新分类ID"` } type ChangeClassifyMaterialReq struct { MaterialId int `description:"素材id"` NewClassifyId int `description:"新分类ID"` } // RenameMaterialReq 添加/编辑素材的请求数据 type RenameMaterialReq struct { MaterialId int `description:"素材id"` MaterialName string `description:"素材名称"` } func GetMaterialInfoCountByClassifyIds(classifyIds []int) (count int, err error) { o := global.DbMap[utils.DbNameReport] sql := ` SELECT COUNT(1) AS count FROM material WHERE classify_id in(` + utils.GetOrmInReplace(len(classifyIds)) + `)` err = o.Raw(sql, classifyIds).Scan(&count).Error return } func GetMaterialByNames(materialNames []string) (items []*Material, err error) { o := global.DbMap[utils.DbNameReport] sql := `SELECT * FROM material WHERE material_name in (` + utils.GetOrmInReplace(len(materialNames)) + `)` err = o.Raw(sql, materialNames).Find(&items).Error return } func GetMaterialByNameEns(materialNames []string) (items []*Material, err error) { o := global.DbMap[utils.DbNameReport] sql := `SELECT * FROM material WHERE material_name_en in (` + utils.GetOrmInReplace(len(materialNames)) + `)` err = o.Raw(sql, materialNames).Find(&items).Error return } func GetMaterialByName(materialName string) (item *Material, err error) { o := global.DbMap[utils.DbNameReport] sql := `SELECT * FROM material WHERE material_name = ?` err = o.Raw(sql, materialName).First(&item).Error return } func GetMaterialByNameEn(materialName string) (item *Material, err error) { o := global.DbMap[utils.DbNameReport] sql := `SELECT * FROM material WHERE material_name_en = ?` err = o.Raw(sql, materialName).First(&item).Error return } // GetMaterialMaxSort 获取最大的排序数 func GetMaterialMaxSort() (sort int, err error) { o := global.DbMap[utils.DbNameReport] sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM material ` err = o.Raw(sql).Scan(&sort).Error return } // MyChartSaveAsMaterialResp 添加素材的 type MyChartSaveAsMaterialResp struct { ExistList []*MyChartSaveAsMaterialItem }