permission.go 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package models
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "strconv"
  6. )
  7. // ChartPermissionSearchKeyWordMapping 权限相关
  8. type ChartPermissionSearchKeyWordMapping struct {
  9. Id int `gorm:"column:id;primaryKey;autoIncrement" description:"id" json:"-"`
  10. ChartPermissionId int `description:"权限id"`
  11. KeyWord string `description:"二级分类名称"`
  12. From string `description:"类型标识" json:"-"`
  13. TacticType string `description:"策略表type字段值" json:"-"`
  14. TeleconferenceSort int `description:"电话会类型排序" json:"-"`
  15. ClassifyId int `description:"分类ID"`
  16. }
  17. func GetPermission(classifyId int) (items []*ChartPermissionSearchKeyWordMapping, err error) {
  18. o := global.DbMap[utils.DbNameReport]
  19. sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.from='rddp' AND a.classify_id = ? `
  20. sql = utils.ReplaceDriverKeywords("", sql)
  21. err = o.Raw(sql, classifyId).Find(&items).Error
  22. return
  23. }
  24. func GetAllPermissionMapping() (items []*ChartPermissionSearchKeyWordMapping, err error) {
  25. o := global.DbMap[utils.DbNameReport]
  26. sql := `SELECT * FROM chart_permission_search_key_word_mapping AS a WHERE a.from='rddp'`
  27. sql = utils.ReplaceDriverKeywords("", sql)
  28. err = o.Raw(sql).Find(&items).Error
  29. return
  30. }
  31. // EditChartPermissionSearchKeyWordMappingMulti 修改报告报告权限(先删除原有的权限,再添加新的权限)
  32. func EditChartPermissionSearchKeyWordMappingMulti(keyword string, permissionIdList []int, classifyId int) (err error) {
  33. to := global.DbMap[utils.DbNameReport].Begin()
  34. defer func() {
  35. if err != nil {
  36. _ = to.Rollback()
  37. } else {
  38. _ = to.Commit()
  39. }
  40. }()
  41. sql := "DELETE FROM chart_permission_search_key_word_mapping WHERE `from` = 'rddp' AND classify_id = ?"
  42. if utils.DbDriverName == `dm` {
  43. sql = "DELETE FROM chart_permission_search_key_word_mapping AS a WHERE a.from = 'rddp' AND a.classify_id = ?"
  44. }
  45. sql = utils.ReplaceDriverKeywords("", sql)
  46. err = to.Exec(sql, classifyId).Error
  47. if err != nil {
  48. return
  49. }
  50. if len(permissionIdList) > 0 {
  51. chartPermissionSearchKeyWordMappingList := make([]*ChartPermissionSearchKeyWordMapping, 0)
  52. for _, permissionId := range permissionIdList {
  53. tmpChartPermissionSearchKeyWordMapping := &ChartPermissionSearchKeyWordMapping{
  54. ChartPermissionId: permissionId,
  55. KeyWord: keyword,
  56. From: "rddp",
  57. TacticType: "",
  58. TeleconferenceSort: 0,
  59. ClassifyId: classifyId,
  60. }
  61. chartPermissionSearchKeyWordMappingList = append(chartPermissionSearchKeyWordMappingList, tmpChartPermissionSearchKeyWordMapping)
  62. }
  63. err = to.CreateInBatches(chartPermissionSearchKeyWordMappingList, utils.MultiAddNum).Error
  64. }
  65. return
  66. }
  67. func AddChartPermissionChapterMapping(chartPermissionId int, reportId int64) (err error) {
  68. sql := `INSERT INTO chart_permission_chapter_mapping (chart_permission_id, report_chapter_type_id,research_type)
  69. VALUES(?,?,?)`
  70. o := global.DbMap[utils.DbNameReport]
  71. err = o.Exec(sql, chartPermissionId, reportId, "rddp").Error
  72. return
  73. }
  74. func RemoveChartPermissionChapterMapping(reportId int64) (err error) {
  75. sql := ` DELETE FROM chart_permission_chapter_mapping WHERE research_type=? AND report_chapter_type_id=? `
  76. o := global.DbMap[utils.DbNameReport]
  77. err = o.Exec(sql, "rddp", reportId).Error
  78. return
  79. }
  80. type ChartPermissionMappingIdName struct {
  81. PermissionId int
  82. PermissionName string
  83. }
  84. func GetChartPermissionNameFromMappingByKeyword(source string, classifyId int) (list []*ChartPermissionMappingIdName, err error) {
  85. o := global.DbMap[utils.DbNameReport]
  86. sql := " SELECT b.chart_permission_id AS permission_id,b.permission_name FROM chart_permission_search_key_word_mapping AS a INNER JOIN chart_permission AS b ON a.chart_permission_id = b.chart_permission_id WHERE a.from = ? AND a.classify_id = ? "
  87. sql = utils.ReplaceDriverKeywords("", sql)
  88. err = o.Raw(sql, source, classifyId).Find(&list).Error
  89. return
  90. }
  91. // UpdateChartPermissionNameFromMappingByKeyword 根据关键词及来源更新新关键词
  92. func UpdateChartPermissionNameFromMappingByKeyword(newKeyword string, classifyId int, source string) (err error) {
  93. o := global.DbMap[utils.DbNameReport]
  94. sql := " UPDATE chart_permission_search_key_word_mapping AS a SET a.key_word = ? WHERE a.classify_id = ? AND a.from = ? "
  95. sql = utils.ReplaceDriverKeywords("", sql)
  96. err = o.Exec(sql, newKeyword, classifyId, source).Error
  97. return
  98. }
  99. // ChartPermissionSearchKeyWordMappingAndPermissionName
  100. // @Description: 分类关联品种
  101. type ChartPermissionSearchKeyWordMappingAndPermissionName struct {
  102. ChartPermissionId int `description:"权限id"`
  103. ChartPermissionName string `description:"权限名称"`
  104. PermissionName string `description:"权限名称"`
  105. KeyWord string `description:"二级分类名称"`
  106. ClassifyId int `description:"分类ID"`
  107. }
  108. // GetPermissionByClassifyId
  109. // @Description: 根据分类id获取关联的报告权限
  110. // @author: Roc
  111. // @datetime 2024-06-19 14:56:44
  112. // @param classifyId int
  113. // @return items []*ChartPermissionSearchKeyWordMappingAndPermissionName
  114. // @return err error
  115. func GetPermissionByClassifyId(classifyId int) (items []*ChartPermissionSearchKeyWordMappingAndPermissionName, err error) {
  116. o := global.DbMap[utils.DbNameReport]
  117. sql := `SELECT a.chart_permission_name,a.permission_name,b.chart_permission_id,b.key_word,b.classify_id FROM chart_permission AS a
  118. join chart_permission_search_key_word_mapping AS b ON a.chart_permission_id=b.chart_permission_id WHERE b.from ='rddp' AND b.classify_id = ? `
  119. sql = utils.ReplaceDriverKeywords("", sql)
  120. err = o.Raw(sql, classifyId).Find(&items).Error
  121. return
  122. }
  123. func GetClassifyIdsByPermissionId(chartPermissionIdList []string) (classifyIds []string, err error) {
  124. o := global.DbMap[utils.DbNameReport]
  125. sql := `SELECT classify_id
  126. FROM chart_permission_search_key_word_mapping
  127. WHERE chart_permission_id IN (` + utils.GetOrmInReplace(len(chartPermissionIdList)) + `)
  128. GROUP BY classify_id
  129. HAVING COUNT(DISTINCT chart_permission_id) = ` + strconv.Itoa(len(chartPermissionIdList)) + ``
  130. err = o.Raw(sql, chartPermissionIdList).Find(&classifyIds).Error
  131. return
  132. }