en_company_permission.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package models
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "github.com/beego/beego/v2/client/orm"
  7. "strings"
  8. "time"
  9. )
  10. type EnCompanyPermission struct {
  11. EnCompanyPermissionId int `gorm:"column:en_company_permission_id;primaryKey;autoIncrement" description:"英文公司权限ID"`
  12. EnCompanyId int `gorm:"column:en_company_id" description:"英文客户ID"`
  13. EnPermissionId int `gorm:"column:en_permission_id" description:"英文权限ID"`
  14. CreateTime time.Time `gorm:"column:create_time;autoCreateTime" 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.DmSQL["rddp"].Create(m).Error
  32. return
  33. }
  34. func (m *EnCompanyPermission) Update(cols []string) (err error) {
  35. err = global.DmSQL["rddp"].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.DmSQL["rddp"].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.DmSQL["rddp"].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.DmSQL["rddp"].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. err = global.DmSQL["rddp"].Raw(sql, pars...).Scan(&count).Error
  58. return
  59. }
  60. func (m *EnCompanyPermission) GetItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*EnCompanyPermission, err error) {
  61. fields := strings.Join(fieldArr, ",")
  62. if len(fieldArr) == 0 {
  63. fields = `*`
  64. }
  65. order := `ORDER BY create_time DESC`
  66. if orderRule != "" {
  67. order = ` ORDER BY ` + orderRule
  68. }
  69. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  70. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
  71. return
  72. }
  73. func (m *EnCompanyPermission) GetPageItemsByCondition(startSize, pageSize int, condition string, pars []interface{}, fieldArr []string, orderRule string) (total int, items []*EnCompanyPermission, err error) {
  74. fields := strings.Join(fieldArr, ",")
  75. if len(fieldArr) == 0 {
  76. fields = `*`
  77. }
  78. order := `ORDER BY create_time DESC`
  79. if orderRule != "" {
  80. order = ` ORDER BY ` + orderRule
  81. }
  82. sql := fmt.Sprintf(`SELECT %s FROM %s WHERE 1=1 %s %s`, fields, m.TableName(), condition, order)
  83. totalSql := `SELECT COUNT(1) total FROM (` + sql + `) z`
  84. if err = global.DmSQL["rddp"].Raw(totalSql, pars...).Scan(&total).Error; err != nil {
  85. return
  86. }
  87. sql += ` LIMIT ?,?`
  88. pars = append(pars, startSize)
  89. pars = append(pars, pageSize)
  90. err = global.DmSQL["rddp"].Raw(sql, pars...).Find(&items).Error
  91. return
  92. }
  93. func ClearAndCreateEnCompanyPermissions(companyId int, permissions []*EnCompanyPermission) (err error) {
  94. sql := `DELETE FROM en_company_permission WHERE en_company_id = ?`
  95. if e := global.DmSQL["rddp"].Exec(sql, companyId).Error; e != nil {
  96. err = fmt.Errorf("delete err: %s", e.Error())
  97. return
  98. }
  99. if len(permissions) > 0 {
  100. if e := global.DmSQL["rddp"].CreateInBatches(permissions, utils.MultiAddNum).Error; e != nil {
  101. err = fmt.Errorf("insert multi err: %s", e.Error())
  102. return
  103. }
  104. }
  105. return
  106. }
  107. // GetEnglishCompanyIdsByEnPermissionIds 根据权限IDs获取报告IDs
  108. func GetEnglishCompanyIdsByEnPermissionIds(permissionIds []int) (companyIds []int, err error) {
  109. if len(permissionIds) == 0 {
  110. return
  111. }
  112. o := orm.NewOrmUsingDB("rddp")
  113. sql := `SELECT DISTINCT a.en_company_id FROM en_company_permission AS a
  114. JOIN english_company AS b ON a.en_company_id = b.company_id
  115. WHERE
  116. a.en_permission_id IN (` + utils.GetOrmInReplace(len(permissionIds)) + `) AND b.status <> 3 AND b.enabled <> 0 AND b.is_deleted = 0`
  117. _, err = o.Raw(sql, permissionIds).QueryRows(&companyIds)
  118. return
  119. }