ppt_v2_group_mapping.go 8.0 KB

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