material.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. package material
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "gorm.io/gorm"
  7. "time"
  8. )
  9. type Material struct {
  10. MaterialId int `orm:"column(material_id);pk" gorm:"primaryKey" description:"素材id"`
  11. MaterialName string `description:"素材名称"`
  12. MaterialNameEn string `description:"英文素材名称"`
  13. ImgUrl string `description:"素材图片地址"`
  14. SysUserId int `description:"作者id"`
  15. SysUserRealName string `description:"作者名称"`
  16. ModifyTime time.Time `description:"修改时间"`
  17. CreateTime time.Time `description:"创建时间"`
  18. ClassifyId int `description:"分类id"`
  19. Sort int `description:"排序"`
  20. }
  21. // Update 素材字段变更
  22. func (material *Material) Update(cols []string) (err error) {
  23. o := global.DbMap[utils.DbNameReport]
  24. err = o.Select(cols).Updates(material).Error
  25. return
  26. }
  27. // GetMaterialById 根据素材id获取素材详情
  28. func GetMaterialById(MaterialId int) (materialInfo *Material, err error) {
  29. o := global.DbMap[utils.DbNameReport]
  30. sql := `select * FROM material where material_id = ?`
  31. err = o.Raw(sql, MaterialId).First(&materialInfo).Error
  32. return
  33. }
  34. func DeleteByMaterialIds(ids []int) (err error) {
  35. o := global.DbMap[utils.DbNameReport]
  36. sql := `DELETE FROM material WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `)`
  37. err = o.Exec(sql, ids).Error
  38. return
  39. }
  40. func UpdateClassifyByMaterialIds(ids []int, classifyId int, now time.Time) (err error) {
  41. o := global.DbMap[utils.DbNameReport]
  42. sql := `UPDATE material SET classify_id=?, modify_time=? WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `) and classify_id != ?`
  43. err = o.Exec(sql, classifyId, now, ids, classifyId).Error
  44. return
  45. }
  46. // AddMultiMaterial 批量添加素材
  47. func AddMultiMaterial(materialInfoList []*Material) (err error) {
  48. o := global.DbMap[utils.DbNameReport]
  49. err = o.CreateInBatches(materialInfoList, utils.MultiAddNum).Error
  50. if err != nil {
  51. return
  52. }
  53. return
  54. }
  55. // MaterialListItem 素材推演列表数据
  56. type MaterialListItem struct {
  57. MaterialId int `description:"素材id"`
  58. MaterialName string `description:"素材名称"`
  59. MaterialNameEn string `description:"英文素材名称"`
  60. ImgUrl string `description:"素材图片地址"`
  61. ModifyTime string `description:"修改时间"`
  62. CreateTime string `description:"创建时间"`
  63. SysUserId int `description:"作者id"`
  64. SysUserRealName string `description:"作者名称"`
  65. }
  66. // MaterialSaveResp 保存素材响应体
  67. type MaterialSaveResp struct {
  68. *Material
  69. }
  70. type MaterialListItems struct {
  71. Material
  72. ModifyTime string `description:"修改时间"`
  73. CreateTime string `description:"创建时间"`
  74. //ParentIds string
  75. }
  76. func (obj *MaterialListItems) AfterFind(tx *gorm.DB) (err error) {
  77. obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime)
  78. obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime)
  79. return
  80. }
  81. func GetMaterialListPageByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MaterialListItems, err error) {
  82. o := global.DbMap[utils.DbNameReport]
  83. sql := ` SELECT * FROM material WHERE 1=1 `
  84. if condition != "" {
  85. sql += condition
  86. }
  87. sql += " ORDER BY create_time DESC, material_id DESC LIMIT ?,? "
  88. pars = append(pars, startSize, pageSize)
  89. err = o.Raw(sql, pars...).Find(&item).Error
  90. return
  91. }
  92. func GetMaterialListByCondition(condition string, pars []interface{}) (item []*MaterialListItems, err error) {
  93. o := global.DbMap[utils.DbNameReport]
  94. sql := ` SELECT * FROM material WHERE 1=1 `
  95. if condition != "" {
  96. sql += condition
  97. }
  98. sql += " ORDER BY create_time DESC, material_id DESC"
  99. err = o.Raw(sql, pars...).Find(&item).Error
  100. return
  101. }
  102. func GetMaterialListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  103. o := global.DbMap[utils.DbNameReport]
  104. sql := ` SELECT COUNT(1) AS count FROM material WHERE 1=1 `
  105. if condition != "" {
  106. sql += condition
  107. }
  108. err = o.Raw(sql, pars...).Scan(&count).Error
  109. return
  110. }
  111. type MaterialListResp struct {
  112. Paging *paging.PagingItem
  113. List []*MaterialListItems
  114. }
  115. func AddMaterial(item *Material) (lastId int64, err error) {
  116. o := global.DbMap[utils.DbNameReport]
  117. err = o.Create(item).Error
  118. if err != nil {
  119. return
  120. }
  121. lastId = int64(item.MaterialId)
  122. return
  123. }
  124. // GetMaterialByClassifyIdAndName 根据分类id和素材名获取图表信息
  125. func GetMaterialByClassifyIdAndName(classifyId int, name string) (item *Material, err error) {
  126. o := global.DbMap[utils.DbNameReport]
  127. sql := ` SELECT * FROM material WHERE classify_id = ? and material_name=? `
  128. err = o.Raw(sql, classifyId, name).First(&item).Error
  129. return
  130. }
  131. // GetMaterialByIds 根据素材id获取素材信息
  132. func GetMaterialByIds(ids []int) (items []*MaterialListItems, err error) {
  133. o := global.DbMap[utils.DbNameReport]
  134. sql := ` SELECT * FROM material WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `) `
  135. err = o.Raw(sql, ids).Find(&items).Error
  136. return
  137. }
  138. // SaveAsMaterialReq 添加素材的请求数据
  139. type SaveAsMaterialReq struct {
  140. MaterialName string `description:"素材名称"`
  141. ClassifyId int `description:"分类id"`
  142. ObjectId int `description:"对象id"`
  143. ObjectType string `description:"对象类型:chart,excel,sandbox,sa_doc"`
  144. }
  145. // MyChartSaveAsMaterialReq 添加素材的
  146. type MyChartSaveAsMaterialReq struct {
  147. MaterialList []*MyChartSaveAsMaterialItem
  148. }
  149. type MyChartSaveAsMaterialItem struct {
  150. MaterialName string `description:"素材名称"`
  151. ChartInfoId int `description:"图表id"`
  152. MyChartId int `description:"我的图表ID"`
  153. ClassifyId int `description:"分类id"`
  154. }
  155. // BatchAddMaterialReq 批量添加素材的请求数据
  156. type BatchAddMaterialReq struct {
  157. MaterialList []BatchAddMaterialItem
  158. ClassifyId int `description:"分类id"`
  159. }
  160. type BatchAddMaterialItem struct {
  161. MaterialName string `description:"素材名称"`
  162. ImgUrl string `description:"素材图片地址"`
  163. }
  164. // DeleteMaterial 删除素材的请求数据
  165. type DeleteMaterial struct {
  166. MaterialId int `description:"素材id"`
  167. }
  168. // BatchDeleteMaterialReq 删除素材的请求数据
  169. type BatchDeleteMaterialReq struct {
  170. MaterialIds []int `description:"素材id"`
  171. ClassifyId int `description:"分类id"`
  172. IsShowMe bool `description:"操作人id,支持多选,用英文,隔开"`
  173. Keyword string `description:"关键字"`
  174. IsSelectAll bool `description:"是否选择所有素材"`
  175. }
  176. type BatchChangeClassifyMaterialReq struct {
  177. BatchDeleteMaterialReq
  178. NewClassifyId int `description:"新分类ID"`
  179. }
  180. type ChangeClassifyMaterialReq struct {
  181. MaterialId int `description:"素材id"`
  182. NewClassifyId int `description:"新分类ID"`
  183. }
  184. // RenameMaterialReq 添加/编辑素材的请求数据
  185. type RenameMaterialReq struct {
  186. MaterialId int `description:"素材id"`
  187. MaterialName string `description:"素材名称"`
  188. }
  189. func GetMaterialInfoCountByClassifyIds(classifyIds []int) (count int, err error) {
  190. o := global.DbMap[utils.DbNameReport]
  191. sql := ` SELECT COUNT(1) AS count FROM material WHERE classify_id in(` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  192. err = o.Raw(sql, classifyIds).Scan(&count).Error
  193. return
  194. }
  195. func GetMaterialByNames(materialNames []string) (items []*Material, err error) {
  196. o := global.DbMap[utils.DbNameReport]
  197. sql := `SELECT * FROM material WHERE material_name in (` + utils.GetOrmInReplace(len(materialNames)) + `)`
  198. err = o.Raw(sql, materialNames).Find(&items).Error
  199. return
  200. }
  201. func GetMaterialByNameEns(materialNames []string) (items []*Material, err error) {
  202. o := global.DbMap[utils.DbNameReport]
  203. sql := `SELECT * FROM material WHERE material_name_en in (` + utils.GetOrmInReplace(len(materialNames)) + `)`
  204. err = o.Raw(sql, materialNames).Find(&items).Error
  205. return
  206. }
  207. func GetMaterialByName(materialName string) (item *Material, err error) {
  208. o := global.DbMap[utils.DbNameReport]
  209. sql := `SELECT * FROM material WHERE material_name = ?`
  210. err = o.Raw(sql, materialName).First(&item).Error
  211. return
  212. }
  213. func GetMaterialByNameEn(materialName string) (item *Material, err error) {
  214. o := global.DbMap[utils.DbNameReport]
  215. sql := `SELECT * FROM material WHERE material_name_en = ?`
  216. err = o.Raw(sql, materialName).First(&item).Error
  217. return
  218. }
  219. // GetMaterialMaxSort 获取最大的排序数
  220. func GetMaterialMaxSort() (sort int, err error) {
  221. o := global.DbMap[utils.DbNameReport]
  222. sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM material `
  223. err = o.Raw(sql).Scan(&sort).Error
  224. return
  225. }
  226. // MyChartSaveAsMaterialResp 添加素材的
  227. type MyChartSaveAsMaterialResp struct {
  228. ExistList []*MyChartSaveAsMaterialItem
  229. }