chart_permission.go 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package models
  2. import (
  3. "eta/eta_mini_crm_ht/utils"
  4. "fmt"
  5. "strings"
  6. "time"
  7. "github.com/beego/beego/v2/client/orm"
  8. )
  9. type ChartPermission struct {
  10. ChartPermissionId int `orm:"column(chart_permission_id);pk" description:"问题ID" json:"chart_permission_id"`
  11. ChartPermissionName string `description:"名称" json:"chart_permission_name"`
  12. PermissionName string `description:"权限名" json:"permission_name"`
  13. Sort int `description:"排序" json:"sort"`
  14. Enabled int `description:"是否可用" json:"enabled"`
  15. CreatedTime time.Time `description:"创建时间" json:"created_time"`
  16. LastUpdatedTime time.Time `description:"更新时间" json:"last_updated_time"`
  17. TeleconferenceSort int `description:"电话会类型排序" json:"teleconference_sort"`
  18. Remark string `description:"备注" json:"remark"`
  19. ClassifyName string `description:"分类名称" json:"classify_name"`
  20. ProductName string `description:"产品名称" json:"product_name"`
  21. ProductId int `description:"产品ID" json:"product_id"`
  22. ImageURL string `orm:"column(image_url);" description:"图片地址" json:"image_url"`
  23. ShowType int `description:"1:查研观向小程序展示" json:"show_type"`
  24. IsOther int `description:"是否是其他,用于查研观向小程序后台展示" json:"is_other"`
  25. IsReport int `description:"是否是报告,用于查研观向小程序前台报告展示" json:"is_report"`
  26. CygxAuth int `description:"是否是权限,用于查研观向小程序前台权限校验" json:"cygx_auth"`
  27. PermissionType int `description:"1主观,2客观" json:"permission_type"`
  28. YbImgUrl string `description:"研报小程序报告列表icon" json:"yb_img_url"`
  29. ProductPermissionName string `description:"种类权限名称" json:"product_permission_name"`
  30. PriceDrivenState int `description:"品种价格驱动开启状态 0-关闭 1-开启" json:"price_driven_state"`
  31. ImageUrlM string `description:"图片地址(查研观向移动端)" json:"image_url_m"`
  32. ParentId int `description:"父级权限id" json:"parent_id"`
  33. IsPublic int `description:"是否是公有权限1:公有权限,0私有权限" json:"is_public"`
  34. }
  35. type ChartPermissionList struct {
  36. ChartPermissionId int `orm:"column(chart_permission_id);pk" description:"问题ID" json:"chart_permission_id"`
  37. ChartPermissionName string `description:"名称" json:"chart_permission_name"`
  38. PermissionName string `description:"权限名" json:"permission_name"`
  39. Sort int `description:"排序" json:"sort"`
  40. Enabled int `description:"是否可用" json:"enabled"`
  41. CreatedTime time.Time `description:"创建时间" json:"created_time"`
  42. LastUpdatedTime time.Time `description:"更新时间" json:"last_updated_time"`
  43. TeleconferenceSort int `description:"电话会类型排序" json:"teleconference_sort"`
  44. Remark string `description:"备注" json:"remark"`
  45. ClassifyName string `description:"分类名称" json:"classify_name"`
  46. ProductName string `description:"产品名称" json:"product_name"`
  47. ProductId int `description:"产品ID" json:"product_id"`
  48. ImageURL string `orm:"column(image_url);" description:"图片地址" json:"image_url"`
  49. ShowType int `description:"1:查研观向小程序展示" json:"show_type"`
  50. IsOther int `description:"是否是其他,用于查研观向小程序后台展示" json:"is_other"`
  51. IsReport int `description:"是否是报告,用于查研观向小程序前台报告展示" json:"is_report"`
  52. CygxAuth int `description:"是否是权限,用于查研观向小程序前台权限校验" json:"cygx_auth"`
  53. PermissionType int `description:"1主观,2客观" json:"permission_type"`
  54. YbImgUrl string `description:"研报小程序报告列表icon" json:"yb_img_url"`
  55. ProductPermissionName string `description:"种类权限名称" json:"product_permission_name"`
  56. PriceDrivenState int `description:"品种价格驱动开启状态 0-关闭 1-开启" json:"price_driven_state"`
  57. ImageUrlM string `description:"图片地址(查研观向移动端)" json:"image_url_m"`
  58. ParentId int `description:"父级权限id" json:"parent_id"`
  59. IsPublic int `description:"是否是公有权限1:公有权限,0私有权限" json:"is_public"`
  60. Child []*ChartPermissionList `description:"子权限"`
  61. }
  62. // ChartPermissionSearchKeyWordMapping 表示 chart_permission_search_key_word_mapping 表的结构
  63. type ChartPermissionSearchKeyWordMapping struct {
  64. ChartPermissionID int `gorm:"column:chart_permission_id"` // chart_permission_id 字段
  65. ClassifyID int `gorm:"column:classify_id"` // classify_id 字段
  66. }
  67. type ChartPermissionView struct {
  68. ParentName string `description:"父权限名称" json:"parent_name"`
  69. PermissionName string `description:"权限名" json:"permission_name"`
  70. }
  71. type ChartPermissionListTree struct {
  72. ChartPermissionId int `description:"权限ID"`
  73. PermissionName string `description:"权限名"`
  74. ParentId int `description:"父权限ID"`
  75. IsPublic int `description:"是否是公有权限"`
  76. PublicChild []*ChartPermissionListTree `description:"公有权限"`
  77. PrivateChild []*ChartPermissionListTree `description:"私有权限"`
  78. }
  79. func GetChartPermissionListByIds(chartPermissionIds []int) (items []*ChartPermissionView, err error) {
  80. o := orm.NewOrmUsingDB("rddp")
  81. sql := `SELECT c.permission_name AS permission_name, lc.permission_name AS parent_name FROM chart_permission c
  82. LEFT JOIN chart_permission lc
  83. ON c.parent_id=lc.chart_permission_id
  84. WHERE c.chart_permission_id in (%s)
  85. `
  86. // 构建 IN 子句的占位符
  87. placeholders := make([]string, len(chartPermissionIds))
  88. args := make([]interface{}, len(chartPermissionIds))
  89. for i, id := range chartPermissionIds {
  90. placeholders[i] = "?"
  91. args[i] = id
  92. }
  93. sql = fmt.Sprintf(sql, strings.Join(placeholders, ","))
  94. _, err = o.Raw(sql, chartPermissionIds).QueryRows(&items)
  95. return
  96. }
  97. func GetByPermissionIdsByClassifyId(classify int) (permissionIds []int, err error) {
  98. o := orm.NewOrmUsingDB("rddp")
  99. sql := "select distinct chart_permission_id from chart_permission_search_key_word_mapping where classify_id =?"
  100. _, err = o.Raw(sql, classify).QueryRows(&permissionIds)
  101. return
  102. }
  103. func GetChartPermissionList() (items []*ChartPermission, err error) {
  104. o := orm.NewOrmUsingDB("rddp")
  105. sql := `SELECT * FROM chart_permission WHERE enabled=1 AND product_id=1 ORDER BY sort, chart_permission_id ASC`
  106. _, err = o.Raw(sql).QueryRows(&items)
  107. return
  108. }
  109. func GetPermissionNames(ids []int) (items []string, err error) {
  110. o := orm.NewOrmUsingDB("rddp")
  111. condition := " AND chart_permission_id in (" + utils.GetOrmReplaceHolder(len(ids)) + ")"
  112. sql := `SELECT distinct permission_name FROM chart_permission WHERE enabled=1 AND product_id=1` + condition
  113. _, err = o.Raw(sql, ids).QueryRows(&items)
  114. return
  115. }
  116. func GetChartPermissionByParentId(parentId int) (items []*ChartPermissionList, err error) {
  117. o := orm.NewOrmUsingDB("rddp")
  118. sql := `SELECT * FROM chart_permission WHERE enabled=1 AND chart_permission_id=? order parent_id asc ,sort asc`
  119. _, err = o.Raw(sql, parentId).QueryRows(&items)
  120. return
  121. }
  122. func GetClassifyIdsByPermissionIds(condition string, pars []interface{}) (classifyIds []int, err error) {
  123. o := orm.NewOrmUsingDB("rddp")
  124. sql := "select distinct classify_id from chart_permission_search_key_word_mapping where 1=1 "
  125. if condition != "" {
  126. sql += condition
  127. }
  128. _, err = o.Raw(sql, pars).QueryRows(&classifyIds)
  129. return
  130. }