ppt_english_group_mapping.go 9.7 KB

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