en_company_permission.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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 EnCompanyPermission struct {
  11. EnCompanyPermissionId int `gorm:"column:en_company_permission_id;primaryKey;primaryKey" description:"英文品种权限ID"`
  12. EnCompanyId int `description:"英文客户ID"`
  13. EnPermissionId int `description:"英文品种ID"`
  14. CreateTime time.Time `description:"创建时间"`
  15. }
  16. var EnCompanyPermissionColumns = struct {
  17. EnCompanyPermissionId string
  18. EnCompanyId string
  19. EnPermissionId string
  20. CreateTime string
  21. }{
  22. EnCompanyPermissionId: "en_company_permission_id",
  23. EnCompanyId: "en_company_id",
  24. EnPermissionId: "en_permission_id",
  25. CreateTime: "create_time",
  26. }
  27. func (m *EnCompanyPermission) TableName() string {
  28. return "en_company_permission"
  29. }
  30. func (m *EnCompanyPermission) Create() (err error) {
  31. err = global.DbMap[utils.DbNameReport].Create(m).Error
  32. return
  33. }
  34. func (m *EnCompanyPermission) Update(cols []string) (err error) {
  35. err = global.DbMap[utils.DbNameReport].Select(cols).Updates(m).Error
  36. return
  37. }
  38. func (m *EnCompanyPermission) Del() (err error) {
  39. sql := fmt.Sprintf(`DELETE FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnCompanyPermissionColumns.EnCompanyPermissionId)
  40. err = global.DbMap[utils.DbNameReport].Exec(sql, m.EnCompanyPermissionId).Error
  41. return
  42. }
  43. func (m *EnCompanyPermission) GetItemById(id int) (item *EnCompanyPermission, err error) {
  44. sql := fmt.Sprintf(`SELECT * FROM %s WHERE %s = ? LIMIT 1`, m.TableName(), EnCompanyPermissionColumns.EnCompanyPermissionId)
  45. err = global.DbMap[utils.DbNameReport].Raw(sql, id).First(&item).Error
  46. return
  47. }
  48. func (m *EnCompanyPermission) GetItemByCondition(condition string, pars []interface{}) (item *EnCompanyPermission, 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 *EnCompanyPermission) 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 *EnCompanyPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnCompanyPermission, 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 *EnCompanyPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnCompanyPermission, 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 ClearAndCreateEnCompanyPermissions(companyId int, permissions []*EnCompanyPermission) (err error) {
  106. sql := `DELETE FROM en_company_permission WHERE en_company_id = ?`
  107. e := global.DbMap[utils.DbNameReport].Exec(sql, companyId).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.DEFAULT_DB.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. // GetEnglishCompanyIdsByEnPermissionIds 根据权限IDs获取报告IDs
  122. func GetEnglishCompanyIdsByEnPermissionIds(permissionIds []int) (companyIds []int, err error) {
  123. if len(permissionIds) == 0 {
  124. return
  125. }
  126. sql := `SELECT DISTINCT a.en_company_id FROM en_company_permission AS a
  127. JOIN english_company AS b ON a.en_company_id = b.company_id
  128. WHERE a.en_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND b.status <> 3 AND b.enabled <> 0 AND b.is_deleted = 0`
  129. err = global.DbMap[utils.DbNameReport].Raw(sql, permissionIds).Find(&companyIds).Error
  130. return
  131. }