chart_classify.go 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/data_manage"
  7. "eta/eta_api/models/system"
  8. "eta/eta_api/services/data"
  9. "eta/eta_api/services/data/data_manage_permission"
  10. "eta/eta_api/utils"
  11. "fmt"
  12. "time"
  13. )
  14. const (
  15. CHART_CLASSIFY_ADD_OR_EDIT = "chartLib:classifyOpt:add"
  16. CHART_CLASSIFY_DELETE = "chartLib:classifyOpt:delete"
  17. )
  18. // 数据管理-分类模块
  19. type ChartClassifyController struct {
  20. controllers.BaseAuthController
  21. }
  22. //
  23. //// @Title 图表分类列表
  24. //// @Description 图表分类列表接口
  25. //// @Success 200 {object} data_manage.ChartClassifyListResp
  26. //// @router /chart_classify/list [get]
  27. //func (this *ChartClassifyController) ChartClassifyList() {
  28. // br := new(models.BaseResponse).Init()
  29. // defer func() {
  30. // this.Data["json"] = br
  31. // this.ServeJSON()
  32. // }()
  33. // rootList, err := data_manage.GetChartClassifyByParentId(0)
  34. // if err != nil {
  35. // br.Msg = "获取失败"
  36. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  37. // return
  38. // }
  39. //
  40. // classifyAll, err := data_manage.GetChartClassifyAll()
  41. // if err != nil {
  42. // br.Msg = "获取失败"
  43. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  44. // return
  45. // }
  46. //
  47. // nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  48. // for k := range rootList {
  49. // rootNode := rootList[k]
  50. // data.ChartClassifyListMakeTree(classifyAll, rootNode)
  51. // nodeAll = append(nodeAll, rootNode)
  52. // }
  53. // resp := new(data_manage.ChartClassifyListResp)
  54. // resp.AllNodes = nodeAll
  55. // br.Ret = 200
  56. // br.Success = true
  57. // br.Msg = "获取成功"
  58. // br.Data = resp
  59. //}
  60. // ChartClassifyListV2
  61. // @Title 图表分类列表
  62. // @Description 图表分类列表接口
  63. // @Param IsShowMe query bool true "是否只看我的,true、false"
  64. // @Success 200 {object} data_manage.ChartClassifyListResp
  65. // @router /chart_classify/list [get]
  66. func (this *ChartClassifyController) ChartClassifyListV2() {
  67. br := new(models.BaseResponse).Init()
  68. defer func() {
  69. this.Data["json"] = br
  70. this.ServeJSON()
  71. }()
  72. resp := new(data_manage.ChartClassifyListResp)
  73. // 获取当前账号的不可见指标
  74. noPermissionChartIdMap := make(map[int]bool)
  75. {
  76. obj := data_manage.EdbInfoNoPermissionAdmin{}
  77. confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId)
  78. if err != nil && err.Error() != utils.ErrNoRow() {
  79. br.Msg = "获取失败"
  80. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  81. return
  82. }
  83. for _, v := range confList {
  84. noPermissionChartIdMap[v.ChartInfoId] = true
  85. }
  86. }
  87. isShowMe, _ := this.GetBool("IsShowMe")
  88. if isShowMe {
  89. errMsg, err := getChartClassifyListForMe(*this.SysUser, resp)
  90. if err != nil {
  91. br.Msg = errMsg
  92. br.ErrMsg = err.Error()
  93. return
  94. }
  95. // 移除没有权限的图表
  96. allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
  97. resp.AllNodes = allNodes
  98. br.Ret = 200
  99. br.Success = true
  100. br.Msg = "获取成功"
  101. br.Data = resp
  102. fmt.Println("source my classify")
  103. return
  104. }
  105. //判断是否存在缓存,如果存在缓存,那么直接从缓存中获取
  106. key := utils.CACHE_CHART_CLASSIFY
  107. if utils.Re == nil {
  108. if utils.Re == nil && utils.Rc.IsExist(key) {
  109. if redisData, err1 := utils.Rc.RedisBytes(key); err1 == nil {
  110. err := json.Unmarshal(redisData, &resp)
  111. if err == nil && resp != nil {
  112. // 移除没有权限的图表
  113. allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
  114. resp.AllNodes = allNodes
  115. br.Ret = 200
  116. br.Success = true
  117. br.Msg = "获取成功"
  118. br.Data = resp
  119. fmt.Println("source redis")
  120. return
  121. }
  122. }
  123. }
  124. }
  125. rootList, err := data_manage.GetChartClassifyByParentId(0, utils.CHART_SOURCE_DEFAULT)
  126. if err != nil && err.Error() != utils.ErrNoRow() {
  127. br.Msg = "获取失败"
  128. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  129. return
  130. }
  131. classifyAll, err := data_manage.GetChartClassifyAll(utils.CHART_SOURCE_DEFAULT)
  132. if err != nil && err.Error() != utils.ErrNoRow() {
  133. br.Msg = "获取失败"
  134. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  135. return
  136. }
  137. allChartInfo, err := data_manage.GetChartInfoAll([]int{utils.CHART_SOURCE_DEFAULT})
  138. if err != nil && err.Error() != utils.ErrNoRow() {
  139. br.Msg = "获取失败"
  140. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  141. return
  142. }
  143. chartInfoMap := make(map[int][]*data_manage.ChartClassifyItems)
  144. for _, v := range allChartInfo {
  145. chartInfoMap[v.ChartClassifyId] = append(chartInfoMap[v.ChartClassifyId], v)
  146. }
  147. rootChildMap := make(map[int][]*data_manage.ChartClassifyItems)
  148. for _, v := range classifyAll {
  149. rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
  150. if existItems, ok := chartInfoMap[v.ChartClassifyId]; ok {
  151. v.Children = existItems
  152. } else {
  153. items := make([]*data_manage.ChartClassifyItems, 0)
  154. v.Children = items
  155. }
  156. }
  157. nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  158. for _, v := range rootList {
  159. if existItems, ok := rootChildMap[v.ChartClassifyId]; ok {
  160. v.Children = existItems
  161. } else {
  162. items := make([]*data_manage.ChartClassifyItems, 0)
  163. v.Children = items
  164. }
  165. nodeAll = append(nodeAll, v)
  166. }
  167. //
  168. //
  169. //nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  170. //for k := range rootList {
  171. // rootNode := rootList[k]
  172. // data.ChartClassifyListMakeTree(classifyAll, rootNode)
  173. // nodeAll = append(nodeAll, rootNode)
  174. //}
  175. resp.AllNodes = nodeAll
  176. // 将数据加入缓存
  177. if utils.Re == nil {
  178. redisData, _ := json.Marshal(resp)
  179. utils.Rc.Put(key, redisData, 2*time.Hour)
  180. }
  181. // 移除没有权限的图表
  182. allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
  183. resp.AllNodes = allNodes
  184. br.Ret = 200
  185. br.Success = true
  186. br.Msg = "获取成功"
  187. br.Data = resp
  188. }
  189. // getChartClassifyListForMe 获取我创建的图表
  190. func getChartClassifyListForMe(adminInfo system.Admin, resp *data_manage.ChartClassifyListResp) (errMsg string, err error) {
  191. rootList, err := data_manage.GetChartClassifyByParentId(0, utils.CHART_SOURCE_DEFAULT)
  192. if err != nil && err.Error() != utils.ErrNoRow() {
  193. errMsg = "获取失败"
  194. return
  195. }
  196. classifyAll, err := data_manage.GetChartClassifyAll(utils.CHART_SOURCE_DEFAULT)
  197. if err != nil && err.Error() != utils.ErrNoRow() {
  198. errMsg = "获取失败"
  199. return
  200. }
  201. allChartInfo, err := data_manage.GetChartInfoByAdminId([]int{utils.CHART_SOURCE_DEFAULT}, adminInfo.AdminId)
  202. if err != nil && err.Error() != utils.ErrNoRow() {
  203. errMsg = "获取失败"
  204. return
  205. }
  206. chartInfoMap := make(map[int][]*data_manage.ChartClassifyItems)
  207. for _, v := range allChartInfo {
  208. chartInfoMap[v.ChartClassifyId] = append(chartInfoMap[v.ChartClassifyId], v)
  209. }
  210. rootChildMap := make(map[int][]*data_manage.ChartClassifyItems)
  211. for _, v := range classifyAll {
  212. rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
  213. if existItems, ok := chartInfoMap[v.ChartClassifyId]; ok {
  214. v.Children = existItems
  215. } else {
  216. items := make([]*data_manage.ChartClassifyItems, 0)
  217. v.Children = items
  218. }
  219. }
  220. nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  221. for _, v := range rootList {
  222. if existItems, ok := rootChildMap[v.ChartClassifyId]; ok {
  223. v.Children = existItems
  224. } else {
  225. items := make([]*data_manage.ChartClassifyItems, 0)
  226. v.Children = items
  227. }
  228. nodeAll = append(nodeAll, v)
  229. }
  230. resp.AllNodes = nodeAll
  231. return
  232. }
  233. // ChartClassifyItems
  234. // @Title 获取所有图表分类接口-不包含图表
  235. // @Description 获取所有图表分类接口-不包含图表
  236. // @Param IsShowMe query bool true "是否只看我的,true、false"
  237. // @Success 200 {object} data_manage.ChartClassifyListResp
  238. // @router /chart_classify/items [get]
  239. func (this *ChartClassifyController) ChartClassifyItems() {
  240. br := new(models.BaseResponse).Init()
  241. defer func() {
  242. this.Data["json"] = br
  243. this.ServeJSON()
  244. }()
  245. isShowMe, _ := this.GetBool("IsShowMe")
  246. level, _ := this.GetInt(`Level`)
  247. rootList, err := data_manage.GetChartClassifyByParentId(0, utils.CHART_SOURCE_DEFAULT)
  248. if err != nil {
  249. br.Msg = "获取失败"
  250. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  251. return
  252. }
  253. classifyAll, err := data_manage.GetChartClassifyAll(utils.CHART_SOURCE_DEFAULT)
  254. if err != nil {
  255. br.Msg = "获取失败"
  256. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  257. return
  258. }
  259. // 已授权分类id
  260. permissionClassifyIdList, err := data_manage_permission.GetUserChartClassifyPermissionList(this.SysUser.AdminId, 0)
  261. if err != nil {
  262. br.Msg = "获取失败"
  263. br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
  264. return
  265. }
  266. nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  267. for k := range rootList {
  268. rootNode := rootList[k]
  269. data.ChartClassifyItemsMakeTree(this.SysUser, classifyAll, rootNode, permissionClassifyIdList, level)
  270. nodeAll = append(nodeAll, rootNode)
  271. }
  272. if isShowMe {
  273. // 自己拥有的分类id列表
  274. chartClassifyIdList, err := data_manage.GetChartClassifyIdListByAdminId(this.SysUser.AdminId, utils.CHART_SOURCE_DEFAULT)
  275. if err != nil {
  276. br.Msg = "获取失败"
  277. br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
  278. return
  279. }
  280. tmpNodeAll := nodeAll
  281. nodeAll = make([]*data_manage.ChartClassifyItems, 0)
  282. for _, node := range tmpNodeAll {
  283. if node.Children == nil || len(node.Children) <= 0 {
  284. continue
  285. }
  286. isSelf := data.RemoveNotChartClassifyItemsMakeTree(node, chartClassifyIdList)
  287. if isSelf {
  288. nodeAll = append(nodeAll, node)
  289. }
  290. }
  291. }
  292. language := `CN`
  293. // 指标显示的语言
  294. {
  295. configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.ChartLanguageVar)
  296. if configDetail != nil {
  297. language = configDetail.ConfigValue
  298. } else {
  299. configDetail, _ = system.GetDefaultConfigDetailByCode(system.ChartLanguageVar)
  300. if configDetail != nil {
  301. language = configDetail.ConfigValue
  302. }
  303. }
  304. }
  305. // 是否允许添加分类
  306. canOpClassify := true
  307. // 如果不是 超管 或者 ficc管理员 或者 ficc研究员,那么就没有权限
  308. //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}, this.SysUser.RoleTypeCode) {
  309. // canOpClassify = false
  310. //}
  311. resp := data_manage.ChartClassifyListResp{
  312. AllNodes: nodeAll,
  313. Language: language,
  314. CanOpClassify: canOpClassify,
  315. }
  316. br.Ret = 200
  317. br.Success = true
  318. br.Msg = "获取成功"
  319. br.Data = resp
  320. }
  321. // @Title 新增图表分类
  322. // @Description 新增图表分类接口
  323. // @Param request body data_manage.AddChartClassifyReq true "type json string"
  324. // @Success 200 Ret=200 保存成功
  325. // @router /chart_classify/add [post]
  326. func (this *ChartClassifyController) AddChartClassify() {
  327. br := new(models.BaseResponse).Init()
  328. defer func() {
  329. this.Data["json"] = br
  330. this.ServeJSON()
  331. }()
  332. var req data_manage.AddChartClassifyReq
  333. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  334. if err != nil {
  335. br.Msg = "参数解析异常!"
  336. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  337. return
  338. }
  339. if req.ChartClassifyName == "" {
  340. br.Msg = "请输入分类名称"
  341. br.IsSendEmail = false
  342. return
  343. }
  344. if req.ParentId < 0 {
  345. br.Msg = "参数错误"
  346. br.IsSendEmail = false
  347. return
  348. }
  349. // 新增图表分类
  350. _, err, errMsg, isSendEmail := data.AddChartClassify(req.ChartClassifyName, req.ParentId, req.Level, utils.CHART_SOURCE_DEFAULT, this.Lang, this.SysUser)
  351. if err != nil {
  352. br.Msg = errMsg
  353. br.ErrMsg = "添加分类失败,Err:" + err.Error()
  354. br.IsSendEmail = isSendEmail
  355. return
  356. }
  357. br.Ret = 200
  358. br.Msg = "保存成功"
  359. br.Success = true
  360. }
  361. // EditChartClassify
  362. // @Title 修改图表分类
  363. // @Description 修改图表分类接口
  364. // @Param request body data_manage.EditChartClassifyReq true "type json string"
  365. // @Success 200 Ret=200 修改成功
  366. // @router /chart_classify/edit [post]
  367. func (this *ChartClassifyController) EditChartClassify() {
  368. br := new(models.BaseResponse).Init()
  369. defer func() {
  370. this.Data["json"] = br
  371. this.ServeJSON()
  372. }()
  373. var req data_manage.EditChartClassifyReq
  374. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  375. if err != nil {
  376. br.Msg = "参数解析异常!"
  377. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  378. return
  379. }
  380. if req.ChartClassifyName == "" {
  381. br.Msg = "请输入分类名称"
  382. br.IsSendEmail = false
  383. return
  384. }
  385. if req.ChartClassifyId <= 0 {
  386. br.Msg = "参数错误"
  387. br.IsSendEmail = false
  388. return
  389. }
  390. // 编辑图表分类
  391. _, err, errMsg, isSendEmail := data.EditChartClassifyV2(req.ChartClassifyId, req.ParentId, utils.CHART_SOURCE_DEFAULT, req.ChartClassifyName, this.Lang)
  392. if err != nil {
  393. br.Msg = errMsg
  394. br.ErrMsg = "保存分类失败,Err:" + err.Error()
  395. br.IsSendEmail = isSendEmail
  396. return
  397. }
  398. br.Ret = 200
  399. br.Msg = "保存成功"
  400. br.Success = true
  401. br.IsAddLog = true
  402. }
  403. // @Title 删除图表检测接口
  404. // @Description 删除图表检测接口
  405. // @Param request body data_manage.ChartClassifyDeleteCheckResp true "type json string"
  406. // @Success 200 Ret=200 检测成功
  407. // @router /chart_classify/delete/check [post]
  408. func (this *ChartClassifyController) DeleteChartClassifyCheck() {
  409. br := new(models.BaseResponse).Init()
  410. defer func() {
  411. this.Data["json"] = br
  412. this.ServeJSON()
  413. }()
  414. var req data_manage.ChartClassifyDeleteCheckReq
  415. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  416. if err != nil {
  417. br.Msg = "参数解析异常!"
  418. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  419. return
  420. }
  421. if req.ChartClassifyId < 0 && req.ChartInfoId <= 0 {
  422. br.Msg = "参数错误"
  423. br.IsSendEmail = false
  424. return
  425. }
  426. var deleteStatus int
  427. var tipsMsg string
  428. //删除分类
  429. if req.ChartClassifyId > 0 && req.ChartInfoId == 0 {
  430. // 查找分类
  431. item, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
  432. if err != nil {
  433. br.Msg = "保存失败"
  434. br.Msg = "获取分类信息失败,Err:" + err.Error()
  435. return
  436. }
  437. // 已授权分类id
  438. permissionClassifyIdList, err := data_manage_permission.GetUserChartClassifyPermissionList(this.SysUser.AdminId, item.ChartClassifyId)
  439. if err != nil {
  440. br.Msg = "获取失败"
  441. br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
  442. return
  443. }
  444. // 权限校验
  445. {
  446. haveOperaAuth := data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(item.IsJoinPermission, item.ChartClassifyId, permissionClassifyIdList)
  447. button := data.GetChartClassifyOpButton(this.SysUser, item.SysUserId, haveOperaAuth)
  448. if !button.OpButton {
  449. br.Msg = "无操作权限"
  450. br.IsSendEmail = false
  451. return
  452. }
  453. }
  454. //判断图表分类下,是否含有图表
  455. count, err := data_manage.GetChartInfoCountByClassifyId(req.ChartClassifyId)
  456. if err != nil {
  457. br.Msg = "删除失败"
  458. br.ErrMsg = "分类下是否含有指标失败,Err:" + err.Error()
  459. return
  460. }
  461. if count > 0 {
  462. deleteStatus = 1
  463. tipsMsg = "该分类下关联图表不可删除"
  464. }
  465. }
  466. if deleteStatus != 1 && req.ChartInfoId == 0 {
  467. classifyCount, err := data_manage.GetChartClassifyCountByClassifyId(req.ChartClassifyId)
  468. if err != nil && err.Error() != utils.ErrNoRow() {
  469. br.Msg = "删除失败"
  470. br.ErrMsg = "分类下是否含有图表失败,Err:" + err.Error()
  471. return
  472. }
  473. if classifyCount > 0 {
  474. deleteStatus = 2
  475. tipsMsg = "确认删除当前目录及包含的子目录吗"
  476. }
  477. }
  478. if deleteStatus == 0 {
  479. tipsMsg = "可删除,进行删除操作"
  480. }
  481. resp := new(data_manage.ChartClassifyDeleteCheckResp)
  482. resp.DeleteStatus = deleteStatus
  483. resp.TipsMsg = tipsMsg
  484. br.Ret = 200
  485. br.Msg = "检测成功"
  486. br.Success = true
  487. br.Data = resp
  488. }
  489. // @Title 删除图表分类/图表
  490. // @Description 删除图表分类/图表接口
  491. // @Param request body data_manage.DeleteChartClassifyReq true "type json string"
  492. // @Success 200 Ret=200 删除成功
  493. // @router /chart_classify/delete [post]
  494. func (this *ChartClassifyController) DeleteChartClassify() {
  495. br := new(models.BaseResponse).Init()
  496. defer func() {
  497. this.Data["json"] = br
  498. this.ServeJSON()
  499. }()
  500. sysUser := this.SysUser
  501. if sysUser == nil {
  502. br.Msg = "请登录"
  503. br.ErrMsg = "请登录,SysUser Is Empty"
  504. br.Ret = 408
  505. return
  506. }
  507. var req data_manage.DeleteChartClassifyReq
  508. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  509. if err != nil {
  510. br.Msg = "参数解析异常!"
  511. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  512. return
  513. }
  514. if req.ChartClassifyId < 0 && req.ChartInfoId <= 0 {
  515. br.Msg = "参数错误"
  516. br.IsSendEmail = false
  517. return
  518. }
  519. //删除分类
  520. if req.ChartClassifyId > 0 && req.ChartInfoId == 0 {
  521. // 查找分类
  522. item, err := data_manage.GetChartClassifyById(req.ChartClassifyId)
  523. if err != nil {
  524. br.Msg = "保存失败"
  525. br.Msg = "获取分类信息失败,Err:" + err.Error()
  526. return
  527. }
  528. // 已授权分类id
  529. permissionClassifyIdList, err := data_manage_permission.GetUserChartClassifyPermissionList(this.SysUser.AdminId, item.ChartClassifyId)
  530. if err != nil {
  531. br.Msg = "获取失败"
  532. br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
  533. return
  534. }
  535. // 权限校验
  536. {
  537. haveOperaAuth := data_manage_permission.CheckChartClassifyPermissionByPermissionIdList(item.IsJoinPermission, item.ChartClassifyId, permissionClassifyIdList)
  538. button := data.GetChartClassifyOpButton(this.SysUser, item.SysUserId, haveOperaAuth)
  539. if !button.OpButton {
  540. br.Msg = "无操作权限"
  541. br.IsSendEmail = false
  542. return
  543. }
  544. }
  545. //判断是否含有指标
  546. count, err := data_manage.GetChartInfoCountByClassifyId(req.ChartClassifyId)
  547. if err != nil && err.Error() != utils.ErrNoRow() {
  548. br.Msg = "删除失败"
  549. br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  550. return
  551. }
  552. if count > 0 {
  553. br.Msg = "该目录下存在关联指标,不可删除"
  554. br.IsSendEmail = false
  555. return
  556. }
  557. err = data_manage.DeleteChartClassify(req.ChartClassifyId)
  558. if err != nil {
  559. br.Msg = "删除失败"
  560. br.ErrMsg = "删除失败,Err:" + err.Error()
  561. return
  562. }
  563. }
  564. resp := new(data_manage.AddChartInfoResp)
  565. //删除图表
  566. if req.ChartInfoId > 0 {
  567. chartInfo, err := data_manage.GetChartInfoById(req.ChartInfoId)
  568. if err != nil {
  569. if err.Error() == utils.ErrNoRow() {
  570. br.Msg = "图表已删除,请刷新页面"
  571. br.ErrMsg = "指标不存在,Err:" + err.Error()
  572. return
  573. } else {
  574. br.Msg = "删除失败"
  575. br.ErrMsg = "删除失败,获取指标信息失败,Err:" + err.Error()
  576. return
  577. }
  578. }
  579. if chartInfo == nil {
  580. br.Msg = "图表已删除,请刷新页面"
  581. return
  582. }
  583. chartClassifyItem, err := data_manage.GetChartClassifyById(chartInfo.ChartClassifyId)
  584. if err != nil {
  585. br.Msg = "获取失败"
  586. br.ErrMsg = "获取图表分类详情数据失败,Err:" + err.Error()
  587. return
  588. }
  589. // 已授权图表、分类id
  590. permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, chartInfo.ChartInfoId, chartInfo.ChartClassifyId)
  591. if err != nil {
  592. br.Msg = "获取失败"
  593. br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
  594. return
  595. }
  596. // 权限校验
  597. {
  598. haveOperaAuth := data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassifyItem.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
  599. //图表操作权限
  600. ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, haveOperaAuth)
  601. if !ok {
  602. br.Msg = "没有该图表的操作权限"
  603. br.ErrMsg = "没有该图表的操作权限"
  604. return
  605. }
  606. }
  607. // 获取引用该图表的MyCharts, 用于ES删除
  608. var myCond string
  609. var myPars []interface{}
  610. myCond += ` AND a.chart_info_id = ? `
  611. myPars = append(myPars, req.ChartInfoId)
  612. myCharts, e := data_manage.GetMyChartListGroupByCharyInfoIdAndAdminIdByCondition(myCond, myPars)
  613. if e != nil {
  614. br.Msg = "删除失败"
  615. br.ErrMsg = "获取引用图表的MyChats失败, Err: " + e.Error()
  616. return
  617. }
  618. myIds := make([]int, 0)
  619. for _, m := range myCharts {
  620. myIds = append(myIds, m.MyChartId)
  621. }
  622. //删除图表及关联指标
  623. err = data_manage.DeleteChartInfoAndData(req.ChartInfoId)
  624. if err != nil {
  625. br.Msg = "删除失败"
  626. br.ErrMsg = "删除失败,Err:" + err.Error()
  627. return
  628. }
  629. if chartInfo.ChartType == utils.CHART_TYPE_SECTION_COMBINE {
  630. err = data_manage.DeleteChartSeriesAndEdbMapping(req.ChartInfoId)
  631. if err != nil {
  632. br.Msg = "删除失败"
  633. br.ErrMsg = "删除失败,Err:" + err.Error()
  634. return
  635. }
  636. }
  637. //删除ES
  638. {
  639. go data.EsDeleteChartInfo(req.ChartInfoId)
  640. // 删除MY ETA 图表 es数据
  641. //go data.EsDeleteMyChartInfoByChartInfoId(req.ChartInfoId)
  642. go data.EsDeleteMyChartInfoByMyChartIds(myIds)
  643. }
  644. var condition string
  645. var pars []interface{}
  646. condition += " AND chart_classify_id=? AND source = ? "
  647. pars = append(pars, chartInfo.ChartClassifyId, utils.CHART_SOURCE_DEFAULT)
  648. condition += " AND chart_info_id>? ORDER BY create_time ASC LIMIT 1 "
  649. pars = append(pars, req.ChartInfoId)
  650. nextItem, err := data_manage.GetChartInfoByCondition(condition, pars)
  651. if err != nil && err.Error() != utils.ErrNoRow() {
  652. br.Msg = "删除失败"
  653. br.ErrMsg = "获取下一级图库信息失败,Err:" + err.Error()
  654. return
  655. }
  656. if nextItem != nil {
  657. resp.UniqueCode = nextItem.UniqueCode
  658. resp.ChartInfoId = nextItem.ChartInfoId
  659. } else {
  660. var condition string
  661. var pars []interface{}
  662. condition += " AND level=3 "
  663. //pars = append(pars, chartInfo.ChartClassifyId)
  664. condition += " AND chart_classify_id>? ORDER BY chart_classify_id ASC LIMIT 1 "
  665. pars = append(pars, chartInfo.ChartClassifyId)
  666. classifyItem, err := data_manage.GetChartClassifyByCondition(condition, pars)
  667. if err != nil && err.Error() != utils.ErrNoRow() {
  668. br.Msg = "删除失败"
  669. br.ErrMsg = "获取下一级图库分类信息失败,Err:" + err.Error()
  670. return
  671. }
  672. if classifyItem != nil {
  673. nextItem, err = data_manage.GetNextChartInfo(chartInfo.ChartClassifyId)
  674. if err != nil && err.Error() != utils.ErrNoRow() {
  675. br.Msg = "删除失败"
  676. br.ErrMsg = "获取下一级图库信息失败,Err:" + err.Error()
  677. return
  678. }
  679. if nextItem != nil {
  680. resp.UniqueCode = nextItem.UniqueCode
  681. resp.ChartInfoId = nextItem.ChartInfoId
  682. }
  683. }
  684. }
  685. // 删除图表中的指标引用
  686. _ = data_manage.DeleteEdbRelationByObjectId(req.ChartInfoId, utils.EDB_RELATION_CHART)
  687. //新增操作日志
  688. {
  689. chartLog := new(data_manage.ChartInfoLog)
  690. chartLog.ChartName = chartInfo.ChartName
  691. chartLog.ChartInfoId = req.ChartInfoId
  692. chartLog.ChartClassifyId = chartInfo.ChartClassifyId
  693. chartLog.SysUserId = sysUser.AdminId
  694. chartLog.SysUserRealName = sysUser.RealName
  695. chartLog.UniqueCode = chartInfo.UniqueCode
  696. chartLog.CreateTime = time.Now()
  697. chartLog.Content = string(this.Ctx.Input.RequestBody)
  698. chartLog.Status = "删除图表"
  699. chartLog.Method = this.Ctx.Input.URI()
  700. go data_manage.AddChartInfoLog(chartLog)
  701. }
  702. }
  703. br.Ret = 200
  704. br.Msg = "删除成功"
  705. br.Success = true
  706. br.Data = resp
  707. br.IsAddLog = true
  708. }
  709. // ChartClassifyMove
  710. // @Title 图表分类移动接口
  711. // @Description 图表分类移动接口
  712. // @Success 200 {object} data_manage.MoveChartClassifyReq
  713. // @router /chart_classify/move [post]
  714. func (this *ChartClassifyController) ChartClassifyMove() {
  715. br := new(models.BaseResponse).Init()
  716. defer func() {
  717. if br.ErrMsg == "" {
  718. br.IsSendEmail = false
  719. }
  720. this.Data["json"] = br
  721. this.ServeJSON()
  722. }()
  723. sysUser := this.SysUser
  724. if sysUser == nil {
  725. br.Msg = "请登录"
  726. br.ErrMsg = "请登录,SysUser Is Empty"
  727. br.Ret = 408
  728. return
  729. }
  730. var req data_manage.MoveChartClassifyReq
  731. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  732. if err != nil {
  733. br.Msg = "参数解析异常!"
  734. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  735. return
  736. }
  737. if req.ClassifyId <= 0 {
  738. br.Msg = "参数错误"
  739. br.ErrMsg = "分类id小于等于0"
  740. return
  741. }
  742. //判断分类是否存在
  743. chartClassifyInfo, err := data_manage.GetChartClassifyById(req.ClassifyId)
  744. if err != nil {
  745. if err.Error() == utils.ErrNoRow() {
  746. br.Msg = "分类不存在,请刷新页面"
  747. return
  748. }
  749. br.Msg = "移动失败"
  750. br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  751. return
  752. }
  753. // 校验移动的父级目录下是否有重名分类
  754. exists, e := data_manage.GetChartClassifyByParentIdAndName(req.ParentClassifyId, chartClassifyInfo.ChartClassifyName, req.ClassifyId)
  755. if e != nil && e.Error() != utils.ErrNoRow() {
  756. br.Msg = "移动失败"
  757. br.ErrMsg = "获取父级目录下的同名分类失败, Err: " + e.Error()
  758. return
  759. }
  760. if exists != nil {
  761. br.Msg = "移动失败,分类名称已存在"
  762. return
  763. }
  764. // 已授权分类id
  765. permissionClassifyIdList, err := data_manage_permission.GetUserChartClassifyPermissionList(this.SysUser.AdminId, chartClassifyInfo.ChartClassifyId)
  766. if err != nil {
  767. br.Msg = "获取失败"
  768. br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
  769. return
  770. }
  771. // 权限校验
  772. {
  773. haveOperaAuth := data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(chartClassifyInfo.IsJoinPermission, chartClassifyInfo.ChartClassifyId, permissionClassifyIdList)
  774. button := data.GetChartClassifyOpButton(this.SysUser, chartClassifyInfo.SysUserId, haveOperaAuth)
  775. if !button.OpButton {
  776. br.Msg = "无操作权限"
  777. br.IsSendEmail = false
  778. return
  779. }
  780. }
  781. if chartClassifyInfo.Source != utils.CHART_SOURCE_DEFAULT {
  782. br.Msg = "分类异常"
  783. br.ErrMsg = "分类异常,不是ETA图库的分类"
  784. return
  785. }
  786. updateCol := make([]string, 0)
  787. //判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
  788. if chartClassifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId != 0 {
  789. parentChartClassifyInfo, err := data_manage.GetChartClassifyById(req.ParentClassifyId)
  790. if err != nil {
  791. br.Msg = "移动失败"
  792. br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
  793. return
  794. }
  795. chartClassifyInfo.ParentId = parentChartClassifyInfo.ChartClassifyId
  796. chartClassifyInfo.Level = parentChartClassifyInfo.Level + 1
  797. chartClassifyInfo.ModifyTime = time.Now()
  798. updateCol = append(updateCol, "ParentId", "Level", "ModifyTime")
  799. }
  800. //如果有传入 上一个兄弟节点分类id
  801. if req.PrevClassifyId > 0 {
  802. //上一个兄弟节点
  803. prevClassify, err := data_manage.GetChartClassifyById(req.PrevClassifyId)
  804. if err != nil {
  805. br.Msg = "移动失败"
  806. br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
  807. return
  808. }
  809. //如果是移动在两个兄弟节点之间
  810. if req.NextClassifyId > 0 {
  811. //下一个兄弟节点
  812. nextClassify, err := data_manage.GetChartClassifyById(req.NextClassifyId)
  813. if err != nil {
  814. br.Msg = "移动失败"
  815. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  816. return
  817. }
  818. //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
  819. if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == chartClassifyInfo.Sort {
  820. //变更兄弟节点的排序
  821. updateSortStr := `sort + 2`
  822. _ = data_manage.UpdateChartClassifySortByParentId(prevClassify.ParentId, prevClassify.ChartClassifyId, prevClassify.Sort, updateSortStr)
  823. } else {
  824. //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
  825. if nextClassify.Sort-prevClassify.Sort == 1 {
  826. //变更兄弟节点的排序
  827. updateSortStr := `sort + 1`
  828. _ = data_manage.UpdateChartClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
  829. }
  830. }
  831. }
  832. chartClassifyInfo.Sort = prevClassify.Sort + 1
  833. chartClassifyInfo.ModifyTime = time.Now()
  834. updateCol = append(updateCol, "Sort", "ModifyTime")
  835. } else {
  836. firstClassify, err := data_manage.GetFirstChartClassifyByParentId(chartClassifyInfo.ParentId)
  837. if err != nil && err.Error() != utils.ErrNoRow() {
  838. br.Msg = "移动失败"
  839. br.ErrMsg = "获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + err.Error()
  840. return
  841. }
  842. //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
  843. if firstClassify != nil && firstClassify.Sort == 0 {
  844. updateSortStr := ` sort + 1 `
  845. _ = data_manage.UpdateChartClassifySortByParentId(firstClassify.ParentId, firstClassify.ChartClassifyId-1, 0, updateSortStr)
  846. }
  847. chartClassifyInfo.Sort = 0 //那就是排在第一位
  848. chartClassifyInfo.ModifyTime = time.Now()
  849. updateCol = append(updateCol, "Sort", "ModifyTime")
  850. }
  851. //更新
  852. if len(updateCol) > 0 {
  853. err = chartClassifyInfo.Update(updateCol)
  854. if err != nil {
  855. br.Msg = "移动失败"
  856. br.ErrMsg = "修改失败,Err:" + err.Error()
  857. return
  858. }
  859. }
  860. br.Ret = 200
  861. br.Success = true
  862. br.Msg = "移动成功"
  863. }
  864. // getChartClassifyListForMe 获取我创建的图表分类
  865. func getChartClassifyListForMeV2(adminInfo system.Admin, resp *data_manage.ChartClassifyListResp) (errMsg string, err error) {
  866. rootList, err := data_manage.GetChartClassifyByParentId(0, utils.CHART_SOURCE_DEFAULT)
  867. if err != nil && err.Error() != utils.ErrNoRow() {
  868. errMsg = "获取失败"
  869. return
  870. }
  871. classifyAll, err := data_manage.GetChartClassifyAll(utils.CHART_SOURCE_DEFAULT)
  872. if err != nil && err.Error() != utils.ErrNoRow() {
  873. errMsg = "获取失败"
  874. return
  875. }
  876. rootChildMap := make(map[int][]*data_manage.ChartClassifyItems)
  877. for _, v := range classifyAll {
  878. rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
  879. }
  880. nodeAll := make([]*data_manage.ChartClassifyItems, 0)
  881. for _, v := range rootList {
  882. if existItems, ok := rootChildMap[v.ChartClassifyId]; ok {
  883. v.Children = existItems
  884. } else {
  885. items := make([]*data_manage.ChartClassifyItems, 0)
  886. v.Children = items
  887. }
  888. nodeAll = append(nodeAll, v)
  889. }
  890. resp.AllNodes = nodeAll
  891. return
  892. }
  893. // ChartClassifyChartListV2
  894. // @Title 根据图表分类获取图表列表
  895. // @Description 根据图表分类获取图表列表接口
  896. // @Param IsShowMe query bool true "是否只看我的,true、false"
  897. // @Param ChartClassifyId query bool true "图片分类id"
  898. // @Success 200 {object} data_manage.ChartClassifyListResp
  899. // @router /chart_classify/chart/list [get]
  900. func (this *ChartClassifyController) ChartClassifyChartListV2() {
  901. br := new(models.BaseResponse).Init()
  902. defer func() {
  903. this.Data["json"] = br
  904. this.ServeJSON()
  905. }()
  906. sysUser := this.SysUser
  907. if sysUser == nil {
  908. br.Msg = "请登录"
  909. br.ErrMsg = "请登录,SysUser Is Empty"
  910. br.Ret = 408
  911. return
  912. }
  913. resp := new(data_manage.ChartClassifyListResp)
  914. chartClassifyId, _ := this.GetInt("ChartClassifyId")
  915. if chartClassifyId <= 0 {
  916. br.Msg = "参数错误"
  917. return
  918. }
  919. // 获取当前账号的不可见指标
  920. noPermissionChartIdMap := make(map[int]bool)
  921. {
  922. obj := data_manage.EdbInfoNoPermissionAdmin{}
  923. confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId)
  924. if err != nil && err.Error() != utils.ErrNoRow() {
  925. br.Msg = "获取失败"
  926. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  927. return
  928. }
  929. for _, v := range confList {
  930. noPermissionChartIdMap[v.ChartInfoId] = true
  931. }
  932. }
  933. isShowMe, _ := this.GetBool("IsShowMe")
  934. if isShowMe {
  935. allChartInfo, err := data_manage.GetChartInfoByAdminIdAndClassify([]int{utils.CHART_SOURCE_DEFAULT}, sysUser.AdminId, chartClassifyId)
  936. if err != nil && err.Error() != utils.ErrNoRow() {
  937. br.Msg = "获取失败"
  938. br.ErrMsg = "获取全部数据失败,Err:" + err.Error()
  939. return
  940. }
  941. // 移除没有权限的图表
  942. allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
  943. resp.AllNodes = allNodes
  944. br.Ret = 200
  945. br.Success = true
  946. br.Msg = "获取成功"
  947. br.Data = resp
  948. fmt.Println("source my classify")
  949. return
  950. }
  951. allChartInfo, err := data_manage.GetChartInfoAllByClassifyId(utils.CHART_SOURCE_DEFAULT, chartClassifyId)
  952. if err != nil && err.Error() != utils.ErrNoRow() {
  953. br.Msg = "获取失败"
  954. br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  955. return
  956. }
  957. // 移除没有权限的图表
  958. allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
  959. for k, item := range allNodes {
  960. item.Button = data.GetChartOpButton(this.SysUser, item.SysUserId, item.HaveOperaAuth)
  961. item.Button.AddButton = false
  962. item.Button.OpButton = false
  963. item.Button.DeleteButton = false
  964. allNodes[k] = item
  965. }
  966. resp.AllNodes = allNodes
  967. br.Ret = 200
  968. br.Success = true
  969. br.Msg = "获取成功"
  970. br.Data = resp
  971. }
  972. // ChartClassifyChartListV3
  973. // @Title 根据图表分类获取图表列表-包含分类和图表
  974. // @Description 根据图表分类获取图表列表接口-包含分类和图表
  975. // @Param IsShowMe query bool true "是否只看我的,true、false"
  976. // @Param ChartClassifyId query bool true "图片分类id"
  977. // @Success 200 {object} data_manage.ChartClassifyListResp
  978. // @router /chart_classify/chart/listV2 [get]
  979. func (this *ChartClassifyController) ChartClassifyChartListV3() {
  980. br := new(models.BaseResponse).Init()
  981. defer func() {
  982. this.Data["json"] = br
  983. this.ServeJSON()
  984. }()
  985. sysUser := this.SysUser
  986. if sysUser == nil {
  987. br.Msg = "请登录"
  988. br.ErrMsg = "请登录,SysUser Is Empty"
  989. br.Ret = 408
  990. return
  991. }
  992. resp := new(data_manage.ChartClassifyListResp)
  993. chartClassifyId, _ := this.GetInt("ChartClassifyId")
  994. if chartClassifyId < 0 {
  995. br.Msg = "参数错误"
  996. return
  997. }
  998. // 获取当前账号的不可见指标
  999. noPermissionChartIdMap := make(map[int]bool)
  1000. {
  1001. obj := data_manage.EdbInfoNoPermissionAdmin{}
  1002. confList, err := obj.GetAllChartListByAdminId(this.SysUser.AdminId)
  1003. if err != nil && err.Error() != utils.ErrNoRow() {
  1004. br.Msg = "获取失败"
  1005. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  1006. return
  1007. }
  1008. for _, v := range confList {
  1009. noPermissionChartIdMap[v.ChartInfoId] = true
  1010. }
  1011. }
  1012. var allNodes []*data_manage.ChartClassifyItems
  1013. isShowMe, _ := this.GetBool("IsShowMe")
  1014. if isShowMe {
  1015. allChartInfo, err := data_manage.GetChartClassifyAndInfoByParentIdForMe(chartClassifyId, sysUser.AdminId)
  1016. if err != nil && err.Error() != utils.ErrNoRow() {
  1017. br.Msg = "获取失败"
  1018. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1019. return
  1020. }
  1021. // 移除没有权限的图表
  1022. allNodes = data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
  1023. allNodes, err = data.GetChartClassifyByIsMe(sysUser.AdminId, chartClassifyId, utils.CHART_SOURCE_DEFAULT, allNodes)
  1024. if err != nil {
  1025. br.Msg = "获取失败"
  1026. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1027. return
  1028. }
  1029. //resp.AllNodes = allNodes
  1030. //
  1031. //br.Ret = 200
  1032. //br.Success = true
  1033. //br.Msg = "获取成功"
  1034. //br.Data = resp
  1035. //fmt.Println("source my classify")
  1036. //return
  1037. } else {
  1038. allChartInfo, err := data_manage.GetChartClassifyAndInfoByParentId(chartClassifyId)
  1039. if err != nil && err.Error() != utils.ErrNoRow() {
  1040. br.Msg = "获取失败"
  1041. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1042. return
  1043. }
  1044. //allChartInfo, err := data_manage.GetChartInfoAllByClassifyId(utils.CHART_SOURCE_DEFAULT, chartClassifyId)
  1045. //if err != nil && err.Error() != utils.ErrNoRow() {
  1046. // br.Msg = "获取失败"
  1047. // br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
  1048. // return
  1049. //}
  1050. // 移除没有权限的图表
  1051. allNodes = data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
  1052. }
  1053. menulist, e := system.GetMenuButtonsByRoleId(this.SysUser.RoleId)
  1054. if e != nil {
  1055. br.Msg = "获取失败"
  1056. br.ErrMsg = "获取角色按钮权限失败, Err: " + e.Error()
  1057. return
  1058. }
  1059. buttonList := make(map[string]int, 0)
  1060. for _, item := range menulist {
  1061. if item.MenuType == 1 {
  1062. buttonList[item.ButtonCode] = 1
  1063. }
  1064. }
  1065. var addOrEdit, delete, move bool
  1066. if _, ok := buttonList[CHART_CLASSIFY_ADD_OR_EDIT]; ok {
  1067. addOrEdit = true
  1068. }
  1069. if _, ok := buttonList[CHART_CLASSIFY_DELETE]; ok {
  1070. addOrEdit = true
  1071. }
  1072. for k, item := range allNodes {
  1073. //item.Button = data.GetChartOpButton(this.SysUser, item.SysUserId, item.HaveOperaAuth)
  1074. item.Button = data.GetChartOpButtonV2(item.HaveOperaAuth, addOrEdit, delete, move)
  1075. if item.ChartInfoId > 0 {
  1076. item.Button.AddButton = false
  1077. item.Button.OpButton = false
  1078. item.Button.DeleteButton = false
  1079. item.Button.MoveButton = true
  1080. } else if item.Level == 6 {
  1081. item.Button.AddButton = false
  1082. }
  1083. allNodes[k] = item
  1084. }
  1085. resp.AllNodes = allNodes
  1086. br.Ret = 200
  1087. br.Success = true
  1088. br.Msg = "获取成功"
  1089. br.Data = resp
  1090. }