ppt_english_group_mapping.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package ppt_english
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. // ppt目录和ppt 映射表
  7. type PptEnglishGroupMapping 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 *PptEnglishGroupMapping) (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_english_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 []*PptEnglishGroupMapping, err error) {
  33. o := orm.NewOrmUsingDB("rddp")
  34. sql := `select group_ppt_id, group_id, ppt_id, ppt_sort, admin_id, admin_real_name, create_time from ppt_english_group_mapping where group_id=? order by ppt_sort asc, group_ppt_id asc `
  35. _, err = o.Raw(sql, groupId).QueryRows(&list)
  36. return
  37. }
  38. // GetPptMappingListByGroupIdDesc 查询目录下,ppt列表, 降序排列
  39. func GetPptMappingListByGroupIdDesc(groupId int64) (list []*PptEnglishGroupMapping, err error) {
  40. o := orm.NewOrmUsingDB("rddp")
  41. sql := `select group_ppt_id, group_id, ppt_id, ppt_sort, admin_id, admin_real_name, create_time from ppt_english_group_mapping where group_id=? order by ppt_sort desc, group_ppt_id desc `
  42. _, err = o.Raw(sql, groupId).QueryRows(&list)
  43. return
  44. }
  45. // GetPptMappingListByGroupIds 根据分组ID查找
  46. func GetPptMappingListByGroupIds(groupIds []int64) (list []*PptEnglishGroupMapping, err error) {
  47. _, err = orm.NewOrmUsingDB("rddp").
  48. QueryTable("ppt_english_group_mapping").
  49. Filter("group_id__in", groupIds).
  50. OrderBy("-ppt_sort", "group_ppt_id").
  51. All(&list)
  52. return
  53. }
  54. // GetPptMappingByGroupPptId 查询根据映射ID,查询单个映射关系
  55. func GetPptMappingByGroupPptId(groupPptId int64, adminId int) (item *PptEnglishGroupMapping, err error) {
  56. o := orm.NewOrmUsingDB("rddp")
  57. sql := `select * from ppt_english_group_mapping where group_ppt_id=? and admin_id=?`
  58. err = o.Raw(sql, groupPptId, adminId).QueryRow(&item)
  59. return
  60. }
  61. // Update 更新ppt目录映射的基本信息
  62. func (item *PptEnglishGroupMapping) Update(cols []string) (err error) {
  63. o := orm.NewOrmUsingDB("rddp")
  64. _, err = o.Update(item, cols...)
  65. return
  66. }
  67. // AddPptGroupMappingMulti 批量新增ppt和目录的映射关系
  68. func AddPptGroupMappingMulti(list []*PptEnglishGroupMapping) (err error) {
  69. o := orm.NewOrmUsingDB("rddp")
  70. _, err = o.InsertMulti(1, list)
  71. return
  72. }
  73. // UpdatePptGroupMappingSortMulti 批量更新初始排序标识
  74. func UpdatePptGroupMappingSortMulti(groupPptIds []int64) (err error) {
  75. o := orm.NewOrmUsingDB("rddp")
  76. p, err := o.Raw("UPDATE ppt_english_group_mapping SET ppt_sort = group_ppt_id WHERE group_ppt_id = ?").Prepare()
  77. if err != nil {
  78. return
  79. }
  80. defer func() {
  81. _ = p.Close() // 别忘记关闭 statement
  82. }()
  83. for _, v := range groupPptIds {
  84. _, err = p.Exec(v)
  85. if err != nil {
  86. return
  87. }
  88. }
  89. return
  90. }
  91. // DeletePptGroupMapping 删除ppt目录
  92. func DeletePptGroupMapping(groupId int64, adminId int) (err error) {
  93. o := orm.NewOrmUsingDB("rddp")
  94. sql := `DELETE FROM ppt_english_group_mapping WHERE group_ppt_id=? and admin_id=? `
  95. _, err = o.Raw(sql, groupId, adminId).Exec()
  96. return
  97. }
  98. // DeletePptGroupMappingByPptId 删除ppt目录
  99. func DeletePptGroupMappingByPptId(pptId int) (err error) {
  100. o := orm.NewOrmUsingDB("rddp")
  101. sql := `DELETE FROM ppt_english_group_mapping WHERE ppt_id=?`
  102. _, err = o.Raw(sql, pptId).Exec()
  103. return
  104. }
  105. // MoveUpGroupPptBySort 往上移动ppt
  106. func MoveUpGroupPptBySort(groupId, nextSort, currentSort int64) (err error) {
  107. o := orm.NewOrmUsingDB("rddp")
  108. sql := `update ppt_english_group_mapping set ppt_sort = ppt_sort + 1 where group_id=? and ppt_sort >= ? and ppt_sort< ?`
  109. _, err = o.Raw(sql, groupId, nextSort, currentSort).Exec()
  110. return
  111. }
  112. // MoveDownGroupPptBySort 往下移动ppt
  113. func MoveDownGroupPptBySort(groupId, prevSort, currentSort int64) (err error) {
  114. o := orm.NewOrmUsingDB("rddp")
  115. sql := `update ppt_english_group_mapping set ppt_sort = ppt_sort - 1 where group_id=? and ppt_sort <= ? and ppt_sort> ? `
  116. _, err = o.Raw(sql, groupId, prevSort, currentSort).Exec()
  117. return
  118. }
  119. // GetGroupPptByPptId 根据pptID 查找各个目录下的ppt
  120. func GetGroupPptByPptId(pptId int) (list []*PptEnglishGroupMapping, err error) {
  121. o := orm.NewOrmUsingDB("rddp")
  122. sql := `select * from ppt_english_group_mapping where ppt_id=?`
  123. _, err = o.Raw(sql, pptId).QueryRows(&list)
  124. return
  125. }
  126. // GetPublicGroupPptByPptIds 根据pptid查询公共目录下的ppt
  127. func GetPublicGroupPptByPptIds(pptIds []string) (list []*PptEnglishGroupMapping, err error) {
  128. qb, _ := orm.NewQueryBuilder("mysql")
  129. // 构建查询对象
  130. qb.Select("p.*").
  131. From("ppt_english_group as g").
  132. InnerJoin("ppt_english_group_mapping as p").On("g.group_id = p.group_id").
  133. Where("g.is_share = 1 and p.ppt_id").In(pptIds...).
  134. OrderBy("g.share_time asc, p.ppt_sort asc")
  135. // 导出 SQL 语句
  136. sql := qb.String()
  137. // 执行 SQL 语句
  138. o := orm.NewOrmUsingDB("rddp")
  139. _, err = o.Raw(sql).QueryRows(&list)
  140. return
  141. }
  142. // GetMaxSortByGroupId
  143. // @Description: 根据分组id获取最大排序
  144. // @author: Roc
  145. // @datetime 2025-03-07 18:22:56
  146. // @param groupPptId int64
  147. // @return pptSort float64
  148. // @return err error
  149. func GetMaxSortByEnglishGroupId(groupPptId int64) (pptSort float64, err error) {
  150. o := orm.NewOrmUsingDB("rddp")
  151. sql := `select MAX(ppt_sort) AS count from ppt_english_group_mapping where group_id=?`
  152. err = o.Raw(sql, groupPptId).QueryRow(&pptSort)
  153. return
  154. }
  155. // GetMinSortByGroupId
  156. // @Description: 根据分组id获取最大排序
  157. // @author: Roc
  158. // @datetime 2025-03-07 18:22:56
  159. // @param groupPptId int64
  160. // @return pptSort float64
  161. // @return err error
  162. func GetMinSortByEnglishGroupId(groupPptId int64) (pptSort float64, err error) {
  163. o := orm.NewOrmUsingDB("rddp")
  164. sql := `select MIN(ppt_sort) AS count from ppt_english_group_mapping where group_id=?`
  165. err = o.Raw(sql, groupPptId).QueryRow(&pptSort)
  166. return
  167. }