en_classify_permission.go 6.2 KB

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