ppt_v2_group_mapping.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package models
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "time"
  7. "github.com/beego/beego/v2/client/orm"
  8. )
  9. // ppt目录和ppt 映射表
  10. type PptV2GroupMapping struct {
  11. GroupPptId int64 `gorm:"column:group_ppt_id;primaryKey;autoIncrement" description:"自增序号"`
  12. GroupId int64 `description:"ppt目录ID"`
  13. PptSort int64 `description:"Ppt的排序"`
  14. PptId int64 `description:"ppt ID"`
  15. CreateTime time.Time `orm:"auto_now_add;type(datetime)" description:"创建时间"`
  16. ModifyTime time.Time `orm:"auto_now;type(datetime)" description:"修改时间"`
  17. AdminId int `description:"移动ppt到该目录的系统用户id"`
  18. AdminRealName string `description:"系统用户名称"`
  19. ChildGroupPptId int64 `description:"设置共享后的新映射ID"`
  20. IsMoved bool `description:"true表示改PPT被人为移动过"`
  21. }
  22. // AddPptGroupMapping 新增目录和ppt的映射关系
  23. func AddPptGroupMapping(item *PptV2GroupMapping) (lastId int64, err error) {
  24. o := global.DbMap[utils.DbNameReport]
  25. err = o.Create(item).Error
  26. if err != nil {
  27. return
  28. }
  29. lastId = int64(item.GroupPptId)
  30. return
  31. }
  32. // GetPptMappingCountByGroupId 查询目录下,ppt的个数
  33. func GetPptMappingCountByGroupId(groupId int64) (total int64, err error) {
  34. o := global.DbMap[utils.DbNameReport]
  35. sql := `select count(*) from ppt_v2_group_mapping where group_id=?`
  36. var totalNull sql2.NullInt64
  37. err = o.Raw(sql, groupId).Scan(&totalNull).Error
  38. if err != nil {
  39. return
  40. }
  41. if totalNull.Valid {
  42. total = totalNull.Int64
  43. }
  44. return
  45. }
  46. // GetPptMappingListByGroupId 查询目录下,ppt列表
  47. func GetPptMappingListByGroupId(groupId int64) (list []*PptV2GroupMapping, err error) {
  48. o := global.DbMap[utils.DbNameReport]
  49. sql := `select group_ppt_id, group_id, ppt_id, ppt_sort, admin_id, admin_real_name, create_time from ppt_v2_group_mapping where group_id=? order by ppt_sort asc, group_ppt_id asc `
  50. err = o.Raw(sql, groupId).Find(&list).Error
  51. return
  52. }
  53. // GetPptMappingListByGroupIds 根据分组ID查找
  54. func GetPptMappingListByGroupIds(groupIds []int64) (list []*PptV2GroupMapping, err error) {
  55. err = global.DbMap[utils.DbNameReport].Table("ppt_v2_group_mapping").Where("group_id in ?", groupIds).Find(&list).Error
  56. return
  57. }
  58. // GetPptMappingByGroupPptId 查询根据映射ID,查询单个映射关系
  59. func GetPptMappingByGroupPptId(groupPptId int64, adminId int) (item *PptV2GroupMapping, err error) {
  60. o := global.DbMap[utils.DbNameReport]
  61. sql := `select * from ppt_v2_group_mapping where group_ppt_id=? and admin_id=?`
  62. err = o.Raw(sql, groupPptId, adminId).First(&item).Error
  63. return
  64. }
  65. // GetPptMappingByGroupPptCountId 查询根据映射ID,查询单个映射关系数量
  66. func GetPptMappingByGroupPptCountId(groupPptId int64, adminId int) (count int, err error) {
  67. o := global.DbMap[utils.DbNameReport]
  68. sql := `select COUNT(*) AS count from ppt_v2_group_mapping where group_ppt_id=? and admin_id=?`
  69. var countNull sql2.NullInt64
  70. err = o.Raw(sql, groupPptId, adminId).Scan(&countNull).Error
  71. if err != nil {
  72. return
  73. }
  74. if countNull.Valid {
  75. count = int(countNull.Int64)
  76. }
  77. return
  78. }
  79. // GetPptMappingByPptId 查询根据ppt_Id, 查询当映单个映射关系
  80. func GetPptMappingByPptId(pptId int64) (item *PptV2GroupMapping, err error) {
  81. o := global.DbMap[utils.DbNameReport]
  82. sql := ` select * from ppt_v2_group_mapping where ppt_id=? `
  83. err = o.Raw(sql, pptId).First(&item).Error
  84. return
  85. }
  86. // Update 更新ppt目录映射的基本信息
  87. func (item *PptV2GroupMapping) Update(cols []string) (err error) {
  88. err = global.DbMap[utils.DbNameReport].Select(cols).Updates(item).Error
  89. return
  90. }
  91. // AddPptGroupMappingMulti 批量新增ppt和目录的映射关系
  92. func AddPptGroupMappingMulti(list []*PptV2GroupMapping) (err error) {
  93. o := global.DbMap[utils.DbNameReport]
  94. err = o.CreateInBatches(list, utils.MultiAddNum).Error
  95. return
  96. }
  97. // UpdatePptGroupMappingSortMulti 批量更新初始排序标识
  98. func UpdatePptGroupMappingSortMulti(groupPptIds []int64) (err error) {
  99. o := global.DbMap[utils.DbNameReport]
  100. sql := "UPDATE ppt_v2_group_mapping SET ppt_sort = group_ppt_id WHERE group_ppt_id = ?"
  101. for _, v := range groupPptIds {
  102. err = o.Exec(sql, v).Error
  103. if err != nil {
  104. return
  105. }
  106. }
  107. return
  108. }
  109. // DeletePptGroupMapping 删除ppt目录
  110. func DeletePptGroupMapping(groupId int64, adminId int) (err error) {
  111. o := global.DbMap[utils.DbNameReport]
  112. sql := `DELETE FROM ppt_v2_group_mapping WHERE group_ppt_id=? and admin_id=? `
  113. err = o.Exec(sql, groupId, adminId).Error
  114. return
  115. }
  116. // DeletePptGroupMappingByPptId 删除ppt目录
  117. func DeletePptGroupMappingByPptId(pptId int) (err error) {
  118. o := global.DbMap[utils.DbNameReport]
  119. sql := `DELETE FROM ppt_v2_group_mapping WHERE ppt_id=?`
  120. err = o.Exec(sql, pptId).Error
  121. return
  122. }
  123. // MoveUpGroupPptBySort 往上移动ppt
  124. func MoveUpGroupPptBySort(groupId, nextSort, currentSort int64) (err error) {
  125. o := global.DbMap[utils.DbNameReport]
  126. sql := `update ppt_v2_group_mapping set ppt_sort = ppt_sort + 1 where group_id=? and ppt_sort >= ? and ppt_sort< ?`
  127. err = o.Exec(sql, groupId, nextSort, currentSort).Error
  128. return
  129. }
  130. // MoveDownGroupPptBySort 往下移动ppt
  131. func MoveDownGroupPptBySort(groupId, prevSort, currentSort int64) (err error) {
  132. o := global.DbMap[utils.DbNameReport]
  133. sql := `update ppt_v2_group_mapping set ppt_sort = ppt_sort - 1 where group_id=? and ppt_sort <= ? and ppt_sort> ? `
  134. err = o.Exec(sql, groupId, prevSort, currentSort).Error
  135. return
  136. }
  137. // GetGroupPptByPptId 根据pptID 查找各个目录下的ppt
  138. func GetGroupPptByPptId(pptId int) (list []*PptV2GroupMapping, err error) {
  139. o := global.DbMap[utils.DbNameReport]
  140. sql := `select * from ppt_v2_group_mapping where ppt_id=?`
  141. err = o.Raw(sql, pptId).Find(&list).Error
  142. return
  143. }
  144. // GetPublicGroupPptByPptIds 根据pptid查询公共目录下的ppt
  145. func GetPublicGroupPptByPptIds(pptIds []string) (list []*PptV2GroupMapping, err error) {
  146. qb, _ := orm.NewQueryBuilder("mysql")
  147. // 构建查询对象
  148. qb.Select("p.*").
  149. From("ppt_v2_group as g").
  150. InnerJoin("ppt_v2_group_mapping as p").On("g.group_id = p.group_id").
  151. Where("g.is_share = 1 and p.ppt_id").In(pptIds...).
  152. OrderBy("g.share_time asc, p.ppt_sort asc")
  153. // 导出 SQL 语句
  154. sql := qb.String()
  155. // 执行 SQL 语句
  156. o := global.DbMap[utils.DbNameReport]
  157. err = o.Raw(sql).Find(&list).Error
  158. return
  159. }