ppt_v2_group_mapping.go 7.5 KB

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