chart_classify.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package data
  2. import (
  3. "fmt"
  4. "hongze/hz_eta_api/models/data_manage"
  5. "hongze/hz_eta_api/models/system"
  6. "hongze/hz_eta_api/utils"
  7. "strconv"
  8. "time"
  9. )
  10. func chartClassifyHaveChild(allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) (childs []*data_manage.ChartClassifyItems, yes bool) {
  11. for _, v := range allNode {
  12. if v.ParentId == node.ChartClassifyId {
  13. childs = append(childs, v)
  14. }
  15. }
  16. if len(childs) > 0 {
  17. yes = true
  18. }
  19. return
  20. }
  21. func ChartClassifyItemsMakeTree(sysUser *system.Admin, allNode []*data_manage.ChartClassifyItems, node *data_manage.ChartClassifyItems) {
  22. button := GetChartClassifyOpButton(sysUser, node.SysUserId)
  23. node.Button = button
  24. childs, _ := chartClassifyHaveChild(allNode, node) //判断节点是否有子节点并返回
  25. if len(childs) > 0 {
  26. for _, child := range childs {
  27. childButton := GetChartClassifyOpButton(sysUser, child.SysUserId)
  28. childButton.AddButton = false //不管有没有权限,图表都是没有添加按钮的
  29. child.Button = childButton
  30. //node.Children = append(node.Children, child)
  31. }
  32. node.Children = append(node.Children, childs[0:]...) //添加子节点
  33. for _, v := range childs { //查询子节点的子节点,并添加到子节点
  34. _, has := chartClassifyHaveChild(allNode, v)
  35. if has {
  36. ChartClassifyItemsMakeTree(sysUser, allNode, v) //递归添加节点
  37. } else {
  38. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  39. v.Children = childrenArr
  40. }
  41. }
  42. } else {
  43. childrenArr := make([]*data_manage.ChartClassifyItems, 0)
  44. node.Children = childrenArr
  45. }
  46. }
  47. func FixChartClassify() {
  48. //新增三级分类
  49. list, err := data_manage.GetChartClassifyByLevel(2, 1)
  50. if err != nil {
  51. return
  52. }
  53. for _, v := range list {
  54. classify := new(data_manage.ChartClassify)
  55. classify.ParentId = v.ChartClassifyId
  56. classify.ChartClassifyName = v.ChartClassifyName
  57. classify.HasData = 0
  58. classify.CreateTime = time.Now()
  59. classify.ModifyTime = time.Now()
  60. if utils.RunMode == "debug" {
  61. classify.SysUserId = 11
  62. } else {
  63. classify.SysUserId = 163
  64. }
  65. classify.SysUserRealName = "admin"
  66. classify.Level = 3
  67. timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  68. classify.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
  69. classify.Sort = v.Sort
  70. classify.Source = utils.CHART_SOURCE_DEFAULT
  71. id, err := data_manage.AddChartClassify(classify)
  72. if err != nil {
  73. return
  74. }
  75. err = data_manage.FIXChartClassifyId(int(id), v.ChartClassifyId)
  76. if err != nil {
  77. return
  78. }
  79. }
  80. }
  81. func FixChartClassifySysUserId() {
  82. //获取所有父级分类信息
  83. list, err := data_manage.GetChartClassifyByLevel(2, 1)
  84. if err != nil {
  85. return
  86. }
  87. for _, v := range list {
  88. err := data_manage.EditChartClassifySysUser(v.ChartClassifyId, v.SysUserId, v.SysUserRealName)
  89. if err != nil {
  90. return
  91. }
  92. fmt.Println("ChartClassifyId:", v.ChartClassifyId)
  93. }
  94. fmt.Println("FixChartClassifySysUserId end")
  95. }
  96. // GetChartClassifyOpButton 获取ETA图库分类的操作权限
  97. func GetChartClassifyOpButton(sysUser *system.Admin, belongUserId int) (button data_manage.ChartClassifyItemsButton) {
  98. //ficc管理员和超管和ficc研究员有权限创建和管理分类,可以编辑分类名称(分类名称不允许重复),可以拖动分类,改变分类顺序,可以拖动分类下模型,改变顺序,可以删除分类,若分类下有预测指标,则不允许删除;
  99. if utils.InArrayByStr([]string{utils.ROLE_TYPE_CODE_ADMIN, utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_RESEARCHR, utils.ROLE_TYPE_CODE_FICC_RESEARCHR}, sysUser.RoleTypeCode) {
  100. button.AddButton = true
  101. button.OpButton = true
  102. button.DeleteButton = true
  103. button.MoveButton = true
  104. }
  105. return
  106. }
  107. // GetCanOpChartClassify 获取是否允许添加图表分类
  108. func GetCanOpChartClassify(roleTypeCode string) (canOpClassify bool) {
  109. // 如果不是 超管 或者 ficc管理员 或者 ficc研究员,那么就没有权限
  110. if utils.InArrayByStr([]string{utils.ROLE_TYPE_CODE_ADMIN, utils.ROLE_TYPE_CODE_FICC_ADMIN, utils.ROLE_TYPE_CODE_RESEARCHR, utils.ROLE_TYPE_CODE_FICC_RESEARCHR}, roleTypeCode) {
  111. canOpClassify = true
  112. }
  113. return
  114. }
  115. // GetChartOpButton 获取ETA图库的操作权限
  116. func GetChartOpButton(sysUser *system.Admin, belongUserId int) (button data_manage.ChartClassifyItemsButton) {
  117. //预测指标的添加人对该预测指标有全部操作权限,ficc管理员、超管对所有预测指标有全部操作权限;
  118. if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || sysUser.AdminId == belongUserId || sysUser.PredictEdbPermission == 1 {
  119. button.AddButton = true
  120. button.OpButton = true
  121. button.DeleteButton = true
  122. button.MoveButton = true
  123. }
  124. return
  125. }