en_classify_permission.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package models
  2. import (
  3. sql2 "database/sql"
  4. "eta/eta_api/global"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "strings"
  8. "time"
  9. )
  10. type EnClassifyPermission struct {
  11. EnClassifyPermissionId int `gorm:"column:en_classify_permission_id;primaryKey;autoIncrement" description:"英文品种权限ID"`
  12. EnClassifyId int `description:"英文分类ID"`
  13. EnPermissionId int `description:"英文品种ID"`
  14. CreateTime time.Time `description:"创建时间"`
  15. }
  16. var EnClassifyPermissionColumns = struct {
  17. EnClassifyPermissionId string
  18. EnClassifyId string
  19. EnPermissionId string
  20. CreateTime string
  21. }{
  22. EnClassifyPermissionId: "en_classify_permission_id",
  23. EnClassifyId: "en_classify_id",
  24. EnPermissionId: "en_permission_id",
  25. CreateTime: "create_time",
  26. }
  27. func (m *EnClassifyPermission) TableName() string {
  28. return "en_classify_permission"
  29. }
  30. func (m *EnClassifyPermission) Create() (err error) {
  31. err = global.DbMap[utils.DbNameReport].Create(m).Error
  32. return
  33. }
  34. func (m *EnClassifyPermission) Update(cols []string) (err error) {
  35. err = global.DbMap[utils.DbNameReport].Select(cols).Updates(m).Error
  36. return
  37. }
  38. func (m *EnClassifyPermission) Del() (err error) {
  39. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnClassifyPermissionColumns.EnClassifyPermissionId)
  40. err = global.DbMap[utils.DbNameReport].Exec(sql, m.EnClassifyPermissionId).Error
  41. return
  42. }
  43. func (m *EnClassifyPermission) GetItemById(id int) (item *EnClassifyPermission, err error) {
  44. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnClassifyPermissionColumns.EnClassifyPermissionId)
  45. err = global.DbMap[utils.DbNameReport].Raw(sql, id).First(&item).Error
  46. return
  47. }
  48. func (m *EnClassifyPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnClassifyPermission, err error) {
  49. sql := fmt.Sprintf(`SELECT * FROM %s WHERE 1=1 `, m.TableName())
  50. sql += condition
  51. sql += ` LIMIT 1`
  52. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).First(&item).Error
  53. return
  54. }
  55. func (m *EnClassifyPermission) GetCountByCondition(condition string, pars []interface{}) (count int, err error) {
  56. sql := fmt.Sprintf(`SELECT COUNT(1) FROM %s WHERE 1=1 %s`, m.TableName(), condition)
  57. var countNull sql2.NullInt64
  58. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Scan(&countNull).Error
  59. if err != nil {
  60. return
  61. }
  62. if countNull.Valid {
  63. count = int(countNull.Int64)
  64. }
  65. return
  66. }
  67. func (m *EnClassifyPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnClassifyPermission, err error) {
  68. fields := strings.Join(fieldArr, ",")
  69. if len(fieldArr) == 0 {
  70. fields = `*`
  71. }
  72. order := `ORDER BY create_time DESC`
  73. if orderRule != "" {
  74. order = ` ORDER BY ` + orderRule
  75. }
  76. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  77. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&items).Error
  78. return
  79. }
  80. func (m *EnClassifyPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnClassifyPermission, err error) {
  81. fields := strings.Join(fieldArr, ",")
  82. if len(fieldArr) == 0 {
  83. fields = `*`
  84. }
  85. order := `ORDER BY create_time DESC`
  86. if orderRule != "" {
  87. order = ` ORDER BY ` + orderRule
  88. }
  89. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  90. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
  91. var totalNull sql2.NullInt64
  92. err = global.DbMap[utils.DbNameReport].Raw(totalSql, pars...).Scan(&totalNull).Error
  93. if err != nil {
  94. return
  95. }
  96. if totalNull.Valid {
  97. total = int(totalNull.Int64)
  98. }
  99. sql += ` LIMIT ?,?`
  100. pars = append(pars, startSize)
  101. pars = append(pars, pageSize)
  102. err = global.DbMap[utils.DbNameReport].Raw(sql, pars...).Find(&items).Error
  103. return
  104. }
  105. func ClearAndCreateEnClassifyPermissions(classifyId int, permissions []*EnClassifyPermission) (err error) {
  106. sql := `DELETE FROM en_classify_permission WHERE en_classify_id = ?`
  107. e := global.DbMap[utils.DbNameReport].Exec(sql, classifyId).Error
  108. if e != nil {
  109. err = fmt.Errorf("delete err: %s", e.Error())
  110. return
  111. }
  112. if len(permissions) > 0 {
  113. e = global.DbMap[utils.DbNameReport].CreateInBatches(permissions, utils.MultiAddNum).Error
  114. if e != nil {
  115. err = fmt.Errorf("insert multi err: %s", e.Error())
  116. return
  117. }
  118. }
  119. return
  120. }
  121. func CreateEnClassifyPermissions(permissions []*EnClassifyPermission) (err error) {
  122. if len(permissions) == 0 {
  123. return
  124. }
  125. err = global.DbMap[utils.DbNameReport].CreateInBatches(permissions, utils.MultiAddNum).Error
  126. return
  127. }
  128. type EnClassifyPermissionEditReq struct {
  129. ClassifyId int `description:"分类ID"`
  130. EnPermissions []int `description:"权限IDs"`
  131. }
  132. // GetEnglishReportIdsByEnPermissionIds 根据权限IDs获取报告IDs
  133. func GetEnglishReportIdsByEnPermissionIds(permissionIds []int) (reportIds []int, err error) {
  134. if len(permissionIds) == 0 {
  135. return
  136. }
  137. sql := `SELECT id FROM english_report WHERE classify_id_second IN (
  138. SELECT DISTINCT en_classify_id FROM en_classify_permission WHERE en_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `)
  139. )`
  140. err = global.DbMap[utils.DbNameReport].Raw(sql, permissionIds).Find(&reportIds).Error
  141. return
  142. }
  143. // GetEnPermissionIdsByEnglishReportId 获取英文报告权限IDs
  144. func GetEnPermissionIdsByEnglishReportId(reportId int) (permissionIds []int, err error) {
  145. sql := `SELECT en_permission_id FROM en_classify_permission WHERE en_classify_id = (
  146. SELECT classify_id_second FROM english_report WHERE id = ?
  147. )`
  148. err = global.DbMap[utils.DbNameReport].Raw(sql, reportId).Find(&permissionIds).Error
  149. return
  150. }
  151. // GetEnPermissionIdsByEnglishVideoId 获取英文视频权限IDs
  152. func GetEnPermissionIdsByEnglishVideoId(videoId int) (permissionIds []int, err error) {
  153. sql := `SELECT en_permission_id FROM en_classify_permission WHERE en_classify_id = (
  154. SELECT classify_id_second FROM english_video WHERE id = ?
  155. )`
  156. err = global.DbMap[utils.DbNameReport].Raw(sql, videoId).Find(&permissionIds).Error
  157. return
  158. }