material.go 8.3 KB

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