material.go 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  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. if utils.NeedDateOrTimeFormat(utils.DbDriverName) {
  78. if obj.CreateTime != "" {
  79. obj.CreateTime = utils.GormDateStrToDateTimeStr(obj.CreateTime)
  80. }
  81. if obj.ModifyTime != "" {
  82. obj.ModifyTime = utils.GormDateStrToDateTimeStr(obj.ModifyTime)
  83. }
  84. }
  85. return
  86. }
  87. func GetMaterialListPageByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*MaterialListItems, err error) {
  88. o := global.DbMap[utils.DbNameReport]
  89. sql := ` SELECT * FROM material WHERE 1=1 `
  90. if condition != "" {
  91. sql += condition
  92. }
  93. sql += " ORDER BY create_time DESC, material_id DESC LIMIT ?,? "
  94. pars = append(pars, startSize, pageSize)
  95. err = o.Raw(sql, pars...).Find(&item).Error
  96. return
  97. }
  98. func GetMaterialListByCondition(condition string, pars []interface{}) (item []*MaterialListItems, err error) {
  99. o := global.DbMap[utils.DbNameReport]
  100. sql := ` SELECT * FROM material WHERE 1=1 `
  101. if condition != "" {
  102. sql += condition
  103. }
  104. sql += " ORDER BY create_time DESC, material_id DESC"
  105. err = o.Raw(sql, pars...).Find(&item).Error
  106. return
  107. }
  108. func GetMaterialListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  109. o := global.DbMap[utils.DbNameReport]
  110. sql := ` SELECT COUNT(1) AS count FROM material WHERE 1=1 `
  111. if condition != "" {
  112. sql += condition
  113. }
  114. err = o.Raw(sql, pars...).Scan(&count).Error
  115. return
  116. }
  117. type MaterialListResp struct {
  118. Paging *paging.PagingItem
  119. List []*MaterialListItems
  120. }
  121. func AddMaterial(item *Material) (lastId int64, err error) {
  122. o := global.DbMap[utils.DbNameReport]
  123. err = o.Create(item).Error
  124. if err != nil {
  125. return
  126. }
  127. lastId = int64(item.MaterialId)
  128. return
  129. }
  130. // GetMaterialByClassifyIdAndName 根据分类id和素材名获取图表信息
  131. func GetMaterialByClassifyIdAndName(classifyId int, name string) (item *Material, err error) {
  132. o := global.DbMap[utils.DbNameReport]
  133. sql := ` SELECT * FROM material WHERE classify_id = ? and material_name=? `
  134. err = o.Raw(sql, classifyId, name).First(&item).Error
  135. return
  136. }
  137. // GetMaterialByIds 根据素材id获取素材信息
  138. func GetMaterialByIds(ids []int) (items []*MaterialListItems, err error) {
  139. o := global.DbMap[utils.DbNameReport]
  140. sql := ` SELECT * FROM material WHERE material_id in (` + utils.GetOrmInReplace(len(ids)) + `) `
  141. err = o.Raw(sql, ids).Find(&items).Error
  142. return
  143. }
  144. // SaveAsMaterialReq 添加素材的请求数据
  145. type SaveAsMaterialReq struct {
  146. MaterialName string `description:"素材名称"`
  147. ClassifyId int `description:"分类id"`
  148. ObjectId int `description:"对象id"`
  149. ObjectType string `description:"对象类型:chart,excel,sandbox,sa_doc"`
  150. }
  151. // MyChartSaveAsMaterialReq 添加素材的
  152. type MyChartSaveAsMaterialReq struct {
  153. MaterialList []*MyChartSaveAsMaterialItem
  154. }
  155. type MyChartSaveAsMaterialItem struct {
  156. MaterialName string `description:"素材名称"`
  157. ChartInfoId int `description:"图表id"`
  158. MyChartId int `description:"我的图表ID"`
  159. ClassifyId int `description:"分类id"`
  160. }
  161. // BatchAddMaterialReq 批量添加素材的请求数据
  162. type BatchAddMaterialReq struct {
  163. MaterialList []BatchAddMaterialItem
  164. ClassifyId int `description:"分类id"`
  165. }
  166. type BatchAddMaterialItem struct {
  167. MaterialName string `description:"素材名称"`
  168. ImgUrl string `description:"素材图片地址"`
  169. }
  170. // DeleteMaterial 删除素材的请求数据
  171. type DeleteMaterial struct {
  172. MaterialId int `description:"素材id"`
  173. }
  174. // BatchDeleteMaterialReq 删除素材的请求数据
  175. type BatchDeleteMaterialReq struct {
  176. MaterialIds []int `description:"素材id"`
  177. ClassifyId int `description:"分类id"`
  178. IsShowMe bool `description:"操作人id,支持多选,用英文,隔开"`
  179. Keyword string `description:"关键字"`
  180. IsSelectAll bool `description:"是否选择所有素材"`
  181. }
  182. type BatchChangeClassifyMaterialReq struct {
  183. BatchDeleteMaterialReq
  184. NewClassifyId int `description:"新分类ID"`
  185. }
  186. type ChangeClassifyMaterialReq struct {
  187. MaterialId int `description:"素材id"`
  188. NewClassifyId int `description:"新分类ID"`
  189. }
  190. // RenameMaterialReq 添加/编辑素材的请求数据
  191. type RenameMaterialReq struct {
  192. MaterialId int `description:"素材id"`
  193. MaterialName string `description:"素材名称"`
  194. }
  195. func GetMaterialInfoCountByClassifyIds(classifyIds []int) (count int, err error) {
  196. o := global.DbMap[utils.DbNameReport]
  197. sql := ` SELECT COUNT(1) AS count FROM material WHERE classify_id in(` + utils.GetOrmInReplace(len(classifyIds)) + `)`
  198. err = o.Raw(sql, classifyIds).Scan(&count).Error
  199. return
  200. }
  201. func GetMaterialByNames(materialNames []string) (items []*Material, err error) {
  202. o := global.DbMap[utils.DbNameReport]
  203. sql := `SELECT * FROM material WHERE material_name in (` + utils.GetOrmInReplace(len(materialNames)) + `)`
  204. err = o.Raw(sql, materialNames).Find(&items).Error
  205. return
  206. }
  207. func GetMaterialByNameEns(materialNames []string) (items []*Material, err error) {
  208. o := global.DbMap[utils.DbNameReport]
  209. sql := `SELECT * FROM material WHERE material_name_en in (` + utils.GetOrmInReplace(len(materialNames)) + `)`
  210. err = o.Raw(sql, materialNames).Find(&items).Error
  211. return
  212. }
  213. func GetMaterialByName(materialName string) (item *Material, err error) {
  214. o := global.DbMap[utils.DbNameReport]
  215. sql := `SELECT * FROM material WHERE material_name = ?`
  216. err = o.Raw(sql, materialName).First(&item).Error
  217. return
  218. }
  219. func GetMaterialByNameEn(materialName string) (item *Material, err error) {
  220. o := global.DbMap[utils.DbNameReport]
  221. sql := `SELECT * FROM material WHERE material_name_en = ?`
  222. err = o.Raw(sql, materialName).First(&item).Error
  223. return
  224. }
  225. // GetMaterialMaxSort 获取最大的排序数
  226. func GetMaterialMaxSort() (sort int, err error) {
  227. o := global.DbMap[utils.DbNameReport]
  228. sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM material `
  229. err = o.Raw(sql).Scan(&sort).Error
  230. return
  231. }
  232. // MyChartSaveAsMaterialResp 添加素材的
  233. type MyChartSaveAsMaterialResp struct {
  234. ExistList []*MyChartSaveAsMaterialItem
  235. }