ppt_v2_group_mapping.go 6.2 KB

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