edb_classify.go 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075
  1. package data_manage
  2. import (
  3. "encoding/json"
  4. "eta/eta_mobile/controllers"
  5. "eta/eta_mobile/models"
  6. "eta/eta_mobile/models/data_manage"
  7. "eta/eta_mobile/models/system"
  8. "eta/eta_mobile/services/data"
  9. "eta/eta_mobile/utils"
  10. "sort"
  11. )
  12. // EdbClassifyController 数据管理-分类模块
  13. type EdbClassifyController struct {
  14. controllers.BaseAuthController
  15. }
  16. // ListV2
  17. // @Title 分类列表
  18. // @Description 分类列表接口
  19. // @Success 200 {object} data_manage.EdbClassifyListResp
  20. // @router /classify/list [get]
  21. //func (this *EdbClassifyController) ListV2() {
  22. // br := new(models.BaseResponse).Init()
  23. // defer func() {
  24. // this.Data["json"] = br
  25. // this.ServeJSON()
  26. // }()
  27. // rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
  28. // if err != nil && err.Error() != utils.ErrNoRow() {
  29. // br.Msg = "获取失败"
  30. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  31. // return
  32. // }
  33. // classifyAll, err := data_manage.GetEdbClassifyAll()
  34. // if err != nil && err.Error() != utils.ErrNoRow() {
  35. // br.Msg = "获取失败"
  36. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  37. // return
  38. // }
  39. //
  40. // // 获取当前账号的不可见指标
  41. // obj := data_manage.EdbInfoNoPermissionAdmin{}
  42. // confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId)
  43. // if err != nil && err.Error() != utils.ErrNoRow() {
  44. // br.Msg = "获取失败"
  45. // br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  46. // return
  47. // }
  48. // noPermissionEdbInfoIdMap := make(map[int]bool)
  49. // for _, v := range confList {
  50. // noPermissionEdbInfoIdMap[v.EdbInfoId] = true
  51. // }
  52. // allEdbInfo, err := data_manage.GetEdbInfoAll(utils.EDB_INFO_TYPE)
  53. // if err != nil && err.Error() != utils.ErrNoRow() {
  54. // br.Msg = "获取失败"
  55. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  56. // return
  57. // }
  58. // edbInfoMap := make(map[int][]*data_manage.EdbClassifyItems)
  59. // for _, v := range allEdbInfo {
  60. // // 如果指标不可见,那么就不返回该指标
  61. // if _, ok := noPermissionEdbInfoIdMap[v.EdbInfoId]; ok {
  62. // continue
  63. // }
  64. // button := data.GetEdbOpButton(this.SysUser, v.SysUserId, v.EdbType, utils.EDB_INFO_TYPE)
  65. // button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  66. // v.Button = button
  67. // edbInfoMap[v.ClassifyId] = append(edbInfoMap[v.ClassifyId], v)
  68. // }
  69. // rootChildMap := make(map[int][]*data_manage.EdbClassifyItems)
  70. // for _, v := range classifyAll {
  71. // button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  72. // button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  73. // v.Button = button
  74. //
  75. // rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
  76. // if existItems, ok := edbInfoMap[v.ClassifyId]; ok {
  77. // v.Children = existItems
  78. // } else {
  79. // items := make([]*data_manage.EdbClassifyItems, 0)
  80. // v.Children = items
  81. // }
  82. // }
  83. // nodeAll := make([]*data_manage.EdbClassifyItems, 0)
  84. // for _, v := range rootList {
  85. // button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  86. // v.Button = button
  87. //
  88. // if existItems, ok := rootChildMap[v.ClassifyId]; ok {
  89. // v.Children = existItems
  90. // } else {
  91. // items := make([]*data_manage.EdbClassifyItems, 0)
  92. // v.Children = items
  93. // }
  94. // nodeAll = append(nodeAll, v)
  95. // }
  96. // resp := new(data_manage.EdbClassifyListResp)
  97. // resp.AllNodes = nodeAll
  98. // resp.CanOpClassify = true
  99. // br.Ret = 200
  100. // br.Success = true
  101. // br.Msg = "获取成功"
  102. // br.Data = resp
  103. //}
  104. // @Title 获取所有分类接口-不包含指标
  105. // @Description 获取所有分类接口-不包含指标
  106. // @Success 200 {object} data_manage.EdbClassifyListResp
  107. // @router /classify/items [get]
  108. //func (this *EdbClassifyController) Items() {
  109. // br := new(models.BaseResponse).Init()
  110. // defer func() {
  111. // this.Data["json"] = br
  112. // this.ServeJSON()
  113. // }()
  114. // rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
  115. // if err != nil {
  116. // br.Msg = "获取失败"
  117. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  118. // return
  119. // }
  120. //
  121. // classifyAll, err := data_manage.GetEdbClassifyAll()
  122. // if err != nil {
  123. // br.Msg = "获取失败"
  124. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  125. // return
  126. // }
  127. //
  128. // nodeAll := make([]*data_manage.EdbClassifyItems, 0)
  129. // for k := range rootList {
  130. // rootNode := rootList[k]
  131. // data.EdbClassifyItemsMakeTree(classifyAll, rootNode)
  132. // nodeAll = append(nodeAll, rootNode)
  133. // }
  134. // resp := new(data_manage.EdbClassifyListResp)
  135. // resp.AllNodes = nodeAll
  136. // br.Ret = 200
  137. // br.Success = true
  138. // br.Msg = "获取成功"
  139. // br.Data = resp
  140. //}
  141. // @Title 新增分类
  142. // @Description 新增分类接口
  143. // @Param request body data_manage.AddEdbClassifyReq true "type json string"
  144. // @Success 200 Ret=200 保存成功
  145. // @router /classify/add [post]
  146. func (this *EdbClassifyController) AddEdbClassify() {
  147. br := new(models.BaseResponse).Init()
  148. defer func() {
  149. this.Data["json"] = br
  150. this.ServeJSON()
  151. }()
  152. var req data_manage.AddEdbClassifyReq
  153. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  154. if err != nil {
  155. br.Msg = "参数解析异常!"
  156. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  157. return
  158. }
  159. if req.ClassifyName == "" {
  160. br.Msg = "请输入分类名称"
  161. br.IsSendEmail = false
  162. return
  163. }
  164. if req.ParentId < 0 {
  165. br.Msg = "参数错误"
  166. br.IsSendEmail = false
  167. return
  168. }
  169. //添加指标
  170. _, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, 0, this.SysUser.AdminId, this.SysUser.AdminName)
  171. if errMsg != `` {
  172. br.Msg = errMsg
  173. br.ErrMsg = errMsg
  174. if err != nil {
  175. br.ErrMsg = errMsg + ";Err:" + err.Error()
  176. } else {
  177. br.IsSendEmail = false
  178. }
  179. return
  180. }
  181. //count, err := data_manage.GetEdbClassifyCount(req.ClassifyName, req.ParentId)
  182. //if err != nil {
  183. // br.Msg = "判断名称是否已存在失败"
  184. // br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  185. // return
  186. //}
  187. //if count > 0 {
  188. // br.Msg = "分类名称已存在,请重新输入"
  189. // br.IsSendEmail = false
  190. // return
  191. //}
  192. ////获取该层级下最大的排序数
  193. //maxSort, err := data_manage.GetEdbClassifyMaxSort(req.ParentId, req.ClassifyType)
  194. //
  195. //classify := new(data_manage.EdbClassify)
  196. //classify.ClassifyType = req.ClassifyType
  197. //classify.ParentId = req.ParentId
  198. //classify.ClassifyName = req.ClassifyName
  199. //classify.HasData = 0
  200. //classify.CreateTime = time.Now()
  201. //classify.ModifyTime = time.Now()
  202. //classify.SysUserId = this.SysUser.AdminId
  203. //classify.SysUserRealName = this.SysUser.RealName
  204. //classify.Level = req.Level + 1
  205. //timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
  206. //classify.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
  207. //classify.Sort = maxSort
  208. //
  209. //_, err = data_manage.AddEdbClassify(classify)
  210. //if err != nil {
  211. // br.Msg = "保存分类失败"
  212. // br.ErrMsg = "保存分类失败,Err:" + err.Error()
  213. // return
  214. //}
  215. br.Ret = 200
  216. br.Msg = "保存成功"
  217. br.Success = true
  218. br.IsAddLog = true
  219. }
  220. // @Title 修改分类
  221. // @Description 修改分类接口
  222. // @Param request body data_manage.EditEdbClassifyReq true "type json string"
  223. // @Success 200 Ret=200 修改成功
  224. // @router /classify/edit [post]
  225. func (this *EdbClassifyController) EditEdbClassify() {
  226. br := new(models.BaseResponse).Init()
  227. defer func() {
  228. this.Data["json"] = br
  229. this.ServeJSON()
  230. }()
  231. var req data_manage.EditEdbClassifyReq
  232. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  233. if err != nil {
  234. br.Msg = "参数解析异常!"
  235. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  236. return
  237. }
  238. if req.ClassifyName == "" {
  239. br.Msg = "请输入分类名称"
  240. br.IsSendEmail = false
  241. return
  242. }
  243. if req.ClassifyId < 0 {
  244. br.Msg = "参数错误"
  245. br.IsSendEmail = false
  246. return
  247. }
  248. err, errMsg := data.EditEdbClassify(req.ClassifyId, req.ClassifyName, this.SysUser)
  249. if errMsg != `` {
  250. br.Msg = errMsg
  251. br.ErrMsg = errMsg
  252. if err != nil {
  253. br.ErrMsg = errMsg + ";Err:" + err.Error()
  254. } else {
  255. br.IsSendEmail = false
  256. }
  257. return
  258. }
  259. //item, err := data_manage.GetEdbClassifyById(req.ClassifyId)
  260. //if err != nil {
  261. // br.Msg = "保存失败"
  262. // br.Msg = "获取分类信息失败,Err:" + err.Error()
  263. // return
  264. //}
  265. //
  266. //if item.ClassifyName != req.ClassifyName {
  267. // count, err := data_manage.GetEdbClassifyCount(req.ClassifyName, item.ParentId)
  268. // if err != nil {
  269. // br.Msg = "判断名称是否已存在失败"
  270. // br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  271. // return
  272. // }
  273. // if count > 0 {
  274. // br.Msg = "分类名称已存在,请重新输入"
  275. // br.IsSendEmail = false
  276. // return
  277. // }
  278. //
  279. // err = data_manage.EditEdbClassify(req.ClassifyId, req.ClassifyName)
  280. // if err != nil {
  281. // br.Msg = "保存失败"
  282. // br.ErrMsg = "保存失败,Err:" + err.Error()
  283. // return
  284. // }
  285. //}
  286. br.Ret = 200
  287. br.Msg = "保存成功"
  288. br.Success = true
  289. }
  290. // @Title 删除检测接口
  291. // @Description 删除检测接口
  292. // @Param request body data_manage.ClassifyDeleteCheckReq true "type json string"
  293. // @Success 200 Ret=200 检测成功
  294. // @router /classify/delete/check [post]
  295. func (this *EdbClassifyController) DeleteEdbClassifyCheck() {
  296. br := new(models.BaseResponse).Init()
  297. defer func() {
  298. this.Data["json"] = br
  299. this.ServeJSON()
  300. }()
  301. var req data_manage.ClassifyDeleteCheckReq
  302. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  303. if err != nil {
  304. br.Msg = "参数解析异常!"
  305. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  306. return
  307. }
  308. if req.ClassifyId < 0 && req.EdbInfoId <= 0 {
  309. br.Msg = "参数错误"
  310. br.IsSendEmail = false
  311. return
  312. }
  313. deleteStatus, tipsMsg, err, errMsg := data.DeleteCheck(req.ClassifyId, req.EdbInfoId, this.SysUser)
  314. if errMsg != `` {
  315. br.Msg = errMsg
  316. br.ErrMsg = errMsg
  317. if err != nil {
  318. br.ErrMsg = err.Error()
  319. } else {
  320. br.IsSendEmail = false
  321. }
  322. return
  323. }
  324. //var deleteStatus int
  325. //var tipsMsg string
  326. ////删除分类
  327. //if req.ClassifyId > 0 && req.EdbInfoId == 0 {
  328. // //判断分类下,是否含有指标
  329. // count, err := data_manage.GetEdbInfoCountByClassifyId(req.ClassifyId)
  330. // if err != nil {
  331. // br.Msg = "删除失败"
  332. // br.ErrMsg = "分类下是否含有指标失败,Err:" + err.Error()
  333. // return
  334. // }
  335. //
  336. // if count > 0 {
  337. // deleteStatus = 1
  338. // tipsMsg = "若目录关联指标不可删除"
  339. // }
  340. //}
  341. //
  342. //if deleteStatus != 1 && req.EdbInfoId == 0 {
  343. // classifyCount, err := data_manage.GetClassifyCountByClassifyId(req.ClassifyId)
  344. // if err != nil && err.Error() != utils.ErrNoRow() {
  345. // br.Msg = "删除失败"
  346. // br.ErrMsg = "分类下是否含有指标失败,Err:" + err.Error()
  347. // return
  348. // }
  349. // if classifyCount > 0 {
  350. // deleteStatus = 2
  351. // tipsMsg = "确认删除当前目录及包含的子目录吗"
  352. // }
  353. //}
  354. //
  355. ////删除指标
  356. //if req.EdbInfoId > 0 {
  357. // //判断指标是否用于作图,如果用于作图,则不可删除
  358. // chartCount, err := data_manage.GetChartEdbMappingCount(req.EdbInfoId)
  359. // if err != nil && err.Error() != utils.ErrNoRow() {
  360. // br.Msg = "删除失败"
  361. // br.ErrMsg = "判断指标是否被用于作图失败,Err:" + err.Error()
  362. // return
  363. // }
  364. // if chartCount > 0 {
  365. // deleteStatus = 3
  366. // tipsMsg = "当前指标已用作画图,不可删除"
  367. // }
  368. // //判断指标是否用于计算
  369. // {
  370. // calculateCount, err := data_manage.GetEdbInfoCalculateMappingCount(req.EdbInfoId)
  371. // if err != nil && err.Error() != utils.ErrNoRow() {
  372. // br.Msg = "删除失败"
  373. // br.ErrMsg = "判断指标是否被用于计算失败,GetEdbInfoCalculateCount Err:" + err.Error()
  374. // return
  375. // }
  376. // if calculateCount > 0 {
  377. // deleteStatus = 4
  378. // tipsMsg = "当前指标已用作,指标运算,不可删除"
  379. // }
  380. // }
  381. //}
  382. resp := new(data_manage.ClassifyDeleteCheckResp)
  383. resp.DeleteStatus = deleteStatus
  384. resp.TipsMsg = tipsMsg
  385. br.Ret = 200
  386. br.Msg = "检测成功"
  387. br.Success = true
  388. br.Data = resp
  389. }
  390. // @Title 删除分类/指标
  391. // @Description 删除分类/指标接口
  392. // @Param request body data_manage.DeleteEdbClassifyReq true "type json string"
  393. // @Success 200 Ret=200 新增成功
  394. // @router /classify/delete [post]
  395. func (this *EdbClassifyController) DeleteEdbClassify() {
  396. br := new(models.BaseResponse).Init()
  397. defer func() {
  398. this.Data["json"] = br
  399. this.ServeJSON()
  400. }()
  401. sysUser := this.SysUser
  402. if sysUser == nil {
  403. br.Msg = "请登录"
  404. br.ErrMsg = "请登录,SysUser Is Empty"
  405. br.Ret = 408
  406. return
  407. }
  408. var req data_manage.DeleteEdbClassifyReq
  409. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  410. if err != nil {
  411. br.Msg = "参数解析异常!"
  412. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  413. return
  414. }
  415. if req.ClassifyId < 0 && req.EdbInfoId <= 0 {
  416. br.Msg = "参数错误"
  417. br.IsSendEmail = false
  418. return
  419. }
  420. nextItem, err, errMsg := data.Delete(req.ClassifyId, req.EdbInfoId, sysUser, string(this.Ctx.Input.RequestBody), this.Ctx.Input.URI())
  421. if errMsg != `` {
  422. br.Msg = errMsg
  423. br.ErrMsg = errMsg
  424. if err != nil {
  425. br.ErrMsg = err.Error()
  426. } else {
  427. br.IsSendEmail = false
  428. }
  429. return
  430. }
  431. resp := data_manage.AddEdbInfoResp{}
  432. if nextItem != nil {
  433. resp = data_manage.AddEdbInfoResp{
  434. EdbInfoId: nextItem.EdbInfoId,
  435. UniqueCode: nextItem.UniqueCode,
  436. }
  437. }
  438. br.Ret = 200
  439. br.Msg = "删除成功"
  440. br.Success = true
  441. br.IsAddLog = true
  442. br.Data = resp
  443. }
  444. // EdbClassifyMove
  445. // @Title 分类移动接口
  446. // @Description 分类移动接口
  447. // @Success 200 {object} data_manage.MoveEdbClassifyReq
  448. // @router /edb_classify/move [post]
  449. func (this *EdbClassifyController) EdbClassifyMove() {
  450. br := new(models.BaseResponse).Init()
  451. defer func() {
  452. this.Data["json"] = br
  453. this.ServeJSON()
  454. }()
  455. sysUser := this.SysUser
  456. if sysUser == nil {
  457. br.Msg = "请登录"
  458. br.ErrMsg = "请登录,SysUser Is Empty"
  459. br.Ret = 408
  460. return
  461. }
  462. var req data_manage.MoveEdbClassifyReq
  463. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  464. if err != nil {
  465. br.Msg = "参数解析异常!"
  466. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  467. return
  468. }
  469. if req.ClassifyId <= 0 && req.EdbInfoId <= 0 {
  470. br.Msg = "参数错误"
  471. br.ErrMsg = "请选择拖动目标,分类目录或者指标"
  472. return
  473. }
  474. err, errMsg := data.MoveEdbClassify(req, sysUser, 0)
  475. if errMsg != `` {
  476. br.Msg = errMsg
  477. br.ErrMsg = errMsg
  478. if err != nil {
  479. br.ErrMsg = err.Error()
  480. } else {
  481. br.IsSendEmail = false
  482. }
  483. return
  484. }
  485. ////判断分类是否存在
  486. //edbClassifyInfo, err := data_manage.GetEdbClassifyById(req.ClassifyId)
  487. //if err != nil {
  488. // br.Msg = "移动失败"
  489. // br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  490. // return
  491. //}
  492. //updateCol := make([]string, 0)
  493. //
  494. ////判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
  495. //if edbClassifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId != 0 {
  496. // parentEdbClassifyInfo, err := data_manage.GetEdbClassifyById(req.ParentClassifyId)
  497. // if err != nil {
  498. // br.Msg = "移动失败"
  499. // br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
  500. // return
  501. // }
  502. // edbClassifyInfo.ParentId = parentEdbClassifyInfo.ClassifyId
  503. // edbClassifyInfo.Level = parentEdbClassifyInfo.Level + 1
  504. // edbClassifyInfo.ModifyTime = time.Now()
  505. // updateCol = append(updateCol, "ParentId", "Level", "ModifyTime")
  506. //}
  507. //
  508. ////如果有传入 上一个兄弟节点分类id
  509. //if req.PrevClassifyId > 0 {
  510. // prevClassify, err := data_manage.GetEdbClassifyById(req.PrevClassifyId)
  511. // if err != nil {
  512. // br.Msg = "移动失败"
  513. // br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
  514. // return
  515. // }
  516. //
  517. // //如果是移动在两个兄弟节点之间
  518. // if req.NextClassifyId > 0 {
  519. // //下一个兄弟节点
  520. // nextClassify, err := data_manage.GetEdbClassifyById(req.NextClassifyId)
  521. // if err != nil {
  522. // br.Msg = "移动失败"
  523. // br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  524. // return
  525. // }
  526. // //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
  527. // if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == edbClassifyInfo.Sort {
  528. // //变更兄弟节点的排序
  529. // updateSortStr := `sort + 2`
  530. // _ = data_manage.UpdateEdbClassifySortByParentId(prevClassify.ParentId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr)
  531. // } else {
  532. // //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
  533. // if nextClassify.Sort-prevClassify.Sort == 1 {
  534. // //变更兄弟节点的排序
  535. // updateSortStr := `sort + 1`
  536. // _ = data_manage.UpdateEdbClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
  537. // }
  538. // }
  539. // }
  540. //
  541. // edbClassifyInfo.Sort = prevClassify.Sort + 1
  542. // edbClassifyInfo.ModifyTime = time.Now()
  543. // updateCol = append(updateCol, "Sort", "ModifyTime")
  544. //} else {
  545. // firstClassify, err := data_manage.GetFirstEdbClassifyByParentId(edbClassifyInfo.ParentId)
  546. // if err != nil && err.Error() != utils.ErrNoRow() {
  547. // br.Msg = "移动失败"
  548. // br.ErrMsg = "获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + err.Error()
  549. // return
  550. // }
  551. //
  552. // //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
  553. // if firstClassify != nil && firstClassify.Sort == 0 {
  554. // updateSortStr := ` sort + 1 `
  555. // _ = data_manage.UpdateEdbClassifySortByParentId(firstClassify.ParentId, firstClassify.ClassifyId-1, 0, updateSortStr)
  556. // }
  557. //
  558. // edbClassifyInfo.Sort = 0 //那就是排在第一位
  559. // edbClassifyInfo.ModifyTime = time.Now()
  560. // updateCol = append(updateCol, "Sort", "ModifyTime")
  561. //}
  562. //
  563. ////更新
  564. //if len(updateCol) > 0 {
  565. // err = edbClassifyInfo.Update(updateCol)
  566. // if err != nil {
  567. // br.Msg = "移动失败"
  568. // br.ErrMsg = "修改失败,Err:" + err.Error()
  569. // return
  570. // }
  571. //}
  572. br.Ret = 200
  573. br.Success = true
  574. br.Msg = "移动成功"
  575. }
  576. // ItemsV2
  577. // @Title 分类列表
  578. // @Description 分类列表接口
  579. // @Success 200 {object} data_manage.EdbClassifyListResp
  580. // @router /classify/items/v2 [get]
  581. //func (this *EdbClassifyController) ItemsV2() {
  582. // br := new(models.BaseResponse).Init()
  583. // defer func() {
  584. // this.Data["json"] = br
  585. // this.ServeJSON()
  586. // }()
  587. // rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
  588. // if err != nil && err.Error() != utils.ErrNoRow() {
  589. // br.Msg = "获取失败"
  590. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  591. // return
  592. // }
  593. // classifyAll, err := data_manage.GetEdbClassifyAll()
  594. // if err != nil && err.Error() != utils.ErrNoRow() {
  595. // br.Msg = "获取失败"
  596. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  597. // return
  598. // }
  599. // //allEdbInfo, err := data_manage.GetEdbInfoAll(0)
  600. // //if err != nil && err.Error() != utils.ErrNoRow() {
  601. // // br.Msg = "获取失败"
  602. // // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  603. // // return
  604. // //}
  605. // //edbInfoMap := make(map[int][]*data_manage.EdbClassifyItems)
  606. // //for _, v := range allEdbInfo {
  607. // // button := data.GetEdbOpButton(this.SysUser, v.SysUserId)
  608. // // button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  609. // // v.Button = button
  610. // // edbInfoMap[v.ClassifyId] = append(edbInfoMap[v.ClassifyId], v)
  611. // //}
  612. // rootChildMap := make(map[int][]*data_manage.EdbClassifyItems)
  613. // for _, v := range classifyAll {
  614. // button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  615. // button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  616. // v.Button = button
  617. //
  618. // rootChildMap[v.ParentId] = append(rootChildMap[v.ParentId], v)
  619. // //if existItems, ok := edbInfoMap[v.ClassifyId]; ok {
  620. // // v.Children = existItems
  621. // //} else {
  622. // // items := make([]*data_manage.EdbClassifyItems, 0)
  623. // // v.Children = items
  624. // //}
  625. // }
  626. // nodeAll := make([]*data_manage.EdbClassifyItems, 0)
  627. // for _, v := range rootList {
  628. // button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  629. // v.Button = button
  630. //
  631. // if existItems, ok := rootChildMap[v.ClassifyId]; ok {
  632. // v.Children = existItems
  633. // } else {
  634. // items := make([]*data_manage.EdbClassifyItems, 0)
  635. // v.Children = items
  636. // }
  637. // nodeAll = append(nodeAll, v)
  638. // }
  639. // language := `CN`
  640. // // 指标显示的语言
  641. // {
  642. // configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
  643. // if configDetail != nil {
  644. // language = configDetail.ConfigValue
  645. // } else {
  646. // configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
  647. // if configDetail != nil {
  648. // language = configDetail.ConfigValue
  649. // }
  650. // }
  651. // }
  652. //
  653. // // 是否允许添加一级分类
  654. // canOpClassify := true
  655. // //button := data.GetEdbClassifyOpButton(this.SysUser, 0)
  656. // //if !button.AddButton {
  657. // // canOpClassify = false
  658. // //}
  659. //
  660. // resp := data_manage.EdbClassifyListResp{
  661. // AllNodes: nodeAll,
  662. // CanOpClassify: canOpClassify,
  663. // Language: language,
  664. // }
  665. //
  666. // br.Ret = 200
  667. // br.Success = true
  668. // br.Msg = "获取成功"
  669. // br.Data = resp
  670. //}
  671. // @Title 获取分类下指标接口
  672. // @Description 获取分类下指标接口
  673. // @Param ClassifyId query int true "分类id"
  674. // @Success 200 {object} data_manage.EdbClassifyListResp
  675. // @router /classify/edb_info/list [get]
  676. //func (this *EdbClassifyController) ClassifyEdbInfoList() {
  677. // br := new(models.BaseResponse).Init()
  678. // defer func() {
  679. // this.Data["json"] = br
  680. // this.ServeJSON()
  681. // }()
  682. //
  683. // classifyId, _ := this.GetInt("ClassifyId")
  684. // if classifyId <= 0 {
  685. // br.Msg = "参数错误,请刷新页面"
  686. // return
  687. // }
  688. //
  689. // // 获取当前账号的不可见指标
  690. // obj := data_manage.EdbInfoNoPermissionAdmin{}
  691. // confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId)
  692. // if err != nil && err.Error() != utils.ErrNoRow() {
  693. // br.Msg = "获取失败"
  694. // br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  695. // return
  696. // }
  697. // noPermissionEdbInfoIdMap := make(map[int]bool)
  698. // for _, v := range confList {
  699. // noPermissionEdbInfoIdMap[v.EdbInfoId] = true
  700. // }
  701. //
  702. // allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, 0)
  703. // if err != nil && err.Error() != utils.ErrNoRow() {
  704. // br.Msg = "获取失败"
  705. // br.ErrMsg = "获取数据失败,Err:" + err.Error()
  706. // return
  707. // }
  708. //
  709. // list := make([]*data_manage.EdbClassifyItems, 0)
  710. // for _, v := range allEdbInfo {
  711. // // 如果指标不可见,那么就不返回该指标
  712. // if _, ok := noPermissionEdbInfoIdMap[v.EdbInfoId]; ok {
  713. // continue
  714. // }
  715. // button := data.GetEdbOpButton(this.SysUser, v.SysUserId, v.EdbType, utils.EDB_INFO_TYPE)
  716. // button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  717. // v.Button = button
  718. //
  719. // list = append(list, v)
  720. // }
  721. //
  722. // resp := new(data_manage.ClassifyEdbInfoListResp)
  723. // resp.EdbInfoList = list
  724. // br.Ret = 200
  725. // br.Success = true
  726. // br.Msg = "获取成功"
  727. // br.Data = resp
  728. //}
  729. // ItemsV3
  730. // @Title 分类列表
  731. // @Description 分类列表接口
  732. // @Success 200 {object} data_manage.EdbClassifyListResp
  733. // @router /classify/items/v3 [get]
  734. func (this *EdbClassifyController) ItemsV3() {
  735. br := new(models.BaseResponse).Init()
  736. defer func() {
  737. this.Data["json"] = br
  738. this.ServeJSON()
  739. }()
  740. rootList, err := data_manage.GetEdbClassifyByParentId(0, 0)
  741. if err != nil && err.Error() != utils.ErrNoRow() {
  742. br.Msg = "获取失败"
  743. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  744. return
  745. }
  746. rootTwoList, err := data_manage.GetEdbClassifyByParentIdTwo(0)
  747. if err != nil && err.Error() != utils.ErrNoRow() {
  748. br.Msg = "获取失败"
  749. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  750. return
  751. }
  752. classifyAll, err := data_manage.GetEdbClassifyAllV2(0)
  753. if err != nil && err.Error() != utils.ErrNoRow() {
  754. br.Msg = "获取失败"
  755. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  756. return
  757. }
  758. rootTwoMap := make(map[int][]*data_manage.EdbClassifyItems)
  759. for _, v := range rootTwoList {
  760. button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  761. v.Button = button
  762. rootTwoMap[v.ParentId] = append(rootTwoMap[v.ParentId], v)
  763. }
  764. rootTwoChildMap := make(map[int][]*data_manage.EdbClassifyItems)
  765. for _, v := range classifyAll {
  766. button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  767. v.Button = button
  768. if v.Level == 3 {
  769. rootTwoChildMap[v.ParentId] = append(rootTwoChildMap[v.ParentId], v)
  770. }
  771. }
  772. nodeAll := make([]*data_manage.EdbClassifyItems, 0)
  773. for _, v := range rootList {
  774. button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  775. v.Button = button
  776. if existItems, ok := rootTwoMap[v.ClassifyId]; ok {
  777. v.Children = existItems
  778. for _, item := range existItems {
  779. button := data.GetEdbClassifyOpButton(this.SysUser, item.SysUserId)
  780. item.Button = button
  781. if existItems, ok := rootTwoChildMap[item.ClassifyId]; ok {
  782. for _, existItem := range existItems {
  783. button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  784. button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  785. existItem.Button = button
  786. }
  787. item.Children = existItems
  788. } else {
  789. items := make([]*data_manage.EdbClassifyItems, 0)
  790. item.Children = items
  791. }
  792. }
  793. } else {
  794. items := make([]*data_manage.EdbClassifyItems, 0)
  795. v.Children = items
  796. }
  797. nodeAll = append(nodeAll, v)
  798. }
  799. language := `CN`
  800. // 指标显示的语言
  801. {
  802. configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
  803. if configDetail != nil {
  804. language = configDetail.ConfigValue
  805. } else {
  806. configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
  807. if configDetail != nil {
  808. language = configDetail.ConfigValue
  809. }
  810. }
  811. }
  812. // 是否允许添加一级分类
  813. // 是否允许添加一级分类
  814. canOpClassify := true
  815. button := data.GetEdbClassifyOpButton(this.SysUser, 0)
  816. if !button.AddButton {
  817. canOpClassify = false
  818. }
  819. resp := new(data_manage.EdbClassifyListResp)
  820. resp.AllNodes = nodeAll
  821. resp.Language = language
  822. resp.CanOpClassify = canOpClassify
  823. br.Ret = 200
  824. br.Success = true
  825. br.Msg = "获取成功"
  826. br.Data = resp
  827. }
  828. // EdbClassifyMoveV2
  829. // @Title 分类移动接口v2
  830. // @Description 分类移动接口v2
  831. // @Success 200 {object} data_manage.MoveEdbClassifyReq
  832. // @router /edb_classify/move/v2 [post]
  833. //func (this *EdbClassifyController) EdbClassifyMoveV2() {
  834. // br := new(models.BaseResponse).Init()
  835. // defer func() {
  836. // this.Data["json"] = br
  837. // this.ServeJSON()
  838. // }()
  839. //
  840. // sysUser := this.SysUser
  841. // if sysUser == nil {
  842. // br.Msg = "请登录"
  843. // br.ErrMsg = "请登录,SysUser Is Empty"
  844. // br.Ret = 408
  845. // return
  846. // }
  847. //
  848. // var req data_manage.MoveEdbClassifyReq
  849. // err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  850. // if err != nil {
  851. // br.Msg = "参数解析异常!"
  852. // br.ErrMsg = "参数解析失败,Err:" + err.Error()
  853. // return
  854. // }
  855. //
  856. // if req.ClassifyId <= 0 {
  857. // br.Msg = "参数错误"
  858. // br.ErrMsg = "分类id小于等于0"
  859. // return
  860. // }
  861. //
  862. // err, errMsg := data.MoveEdbClassify(req.ClassifyId, req.ParentClassifyId, req.PrevClassifyId, req.NextClassifyId)
  863. // if errMsg != `` {
  864. // br.Msg = errMsg
  865. // br.ErrMsg = errMsg
  866. // if err != nil {
  867. // br.ErrMsg = err.Error()
  868. // } else {
  869. // br.IsSendEmail = false
  870. // }
  871. // return
  872. // }
  873. //
  874. // br.Ret = 200
  875. // br.Success = true
  876. // br.Msg = "移动成功"
  877. //}
  878. // SimpleList
  879. // @Title 单层分类列表
  880. // @Description 单层分类列表
  881. // @Success 200 {object} data_manage.EdbClassifyListResp
  882. // @router /classify/simple [get]
  883. func (this *EdbClassifyController) SimpleList() {
  884. br := new(models.BaseResponse).Init()
  885. defer func() {
  886. this.Data["json"] = br
  887. this.ServeJSON()
  888. }()
  889. // 默认查一级分类和一级分类下的指标信息,
  890. // 如果是 子级分类,查询该子级分类的下一级分类和指标信息
  891. // 增加标识判断是文件夹还是指标列表
  892. parentId, _ := this.GetInt("ParentId")
  893. rootList, err := data_manage.GetEdbClassifyByParentId(parentId, 0)
  894. if err != nil && err.Error() != utils.ErrNoRow() {
  895. br.Msg = "获取失败"
  896. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  897. return
  898. }
  899. nodeAll := make([]*data_manage.EdbClassifyItems, 0)
  900. var sortList data_manage.EdbClassifyItemList
  901. if parentId > 0 {
  902. // 查询挂在当前分类上的指标列表
  903. // 获取当前账号的不可见指标
  904. obj := data_manage.EdbInfoNoPermissionAdmin{}
  905. confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId)
  906. if err != nil && err.Error() != utils.ErrNoRow() {
  907. br.Msg = "获取失败"
  908. br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
  909. return
  910. }
  911. noPermissionEdbInfoIdMap := make(map[int]bool)
  912. for _, v := range confList {
  913. noPermissionEdbInfoIdMap[v.EdbInfoId] = true
  914. }
  915. allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(parentId, 0)
  916. if err != nil {
  917. br.Msg = "获取指标数据失败"
  918. br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
  919. return
  920. }
  921. for _, v := range allEdbInfo {
  922. // 如果指标不可见,那么就不返回该指标
  923. if _, ok := noPermissionEdbInfoIdMap[v.EdbInfoId]; ok {
  924. continue
  925. }
  926. button := data.GetEdbOpButton(this.SysUser, v.SysUserId, v.EdbType, utils.EDB_INFO_TYPE)
  927. button.AddButton = false //不管有没有权限,指标都是没有添加按钮的
  928. v.Button = button
  929. v.Children = make([]*data_manage.EdbClassifyItems, 0)
  930. v.ParentId = parentId
  931. nodeAll = append(nodeAll, v)
  932. }
  933. }
  934. if len(rootList) > 0 {
  935. for _, v := range rootList {
  936. button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  937. v.Button = button
  938. v.Children = make([]*data_manage.EdbClassifyItems, 0)
  939. nodeAll = append(nodeAll, v)
  940. }
  941. }
  942. if len(nodeAll) > 0 {
  943. //根据sort值排序
  944. sortList = nodeAll
  945. sort.Sort(sortList)
  946. }
  947. language := `CN`
  948. // 指标显示的语言
  949. {
  950. configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
  951. if configDetail != nil {
  952. language = configDetail.ConfigValue
  953. } else {
  954. configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
  955. if configDetail != nil {
  956. language = configDetail.ConfigValue
  957. }
  958. }
  959. }
  960. // 是否允许添加一级分类
  961. canOpClassify := true
  962. button := data.GetEdbClassifyOpButton(this.SysUser, 0)
  963. if !button.AddButton {
  964. canOpClassify = false
  965. }
  966. resp := new(data_manage.EdbClassifyListResp)
  967. resp.AllNodes = sortList
  968. resp.Language = language
  969. resp.CanOpClassify = canOpClassify
  970. br.Ret = 200
  971. br.Success = true
  972. br.Msg = "获取成功"
  973. br.Data = resp
  974. }
  975. // ClassifyTree
  976. // @Title 多层分类列表树
  977. // @Description 多层分类列表树
  978. // @Success 200 {object} data_manage.EdbClassifyListResp
  979. // @router /classify/tree [get]
  980. func (this *EdbClassifyController) ClassifyTree() {
  981. br := new(models.BaseResponse).Init()
  982. defer func() {
  983. this.Data["json"] = br
  984. this.ServeJSON()
  985. }()
  986. allList, err := data_manage.GetNormalEdbClassifyAll()
  987. if err != nil && err.Error() != utils.ErrNoRow() {
  988. br.Msg = "获取失败"
  989. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  990. return
  991. }
  992. nodeAll := make([]*data_manage.EdbClassifyItems, 0)
  993. var sortList data_manage.EdbClassifyItemList
  994. if len(allList) > 0 {
  995. for k, v := range allList {
  996. button := data.GetEdbClassifyOpButton(this.SysUser, v.SysUserId)
  997. allList[k].Button = button
  998. }
  999. nodeAll = data.GetClassifyTreeRecursive(allList, 0)
  1000. //根据sort值排序
  1001. sortList = nodeAll
  1002. sort.Sort(sortList)
  1003. }
  1004. language := `CN`
  1005. // 指标显示的语言
  1006. {
  1007. configDetail, _ := system.GetConfigDetailByCode(this.SysUser.AdminId, system.EdbLanguageVar)
  1008. if configDetail != nil {
  1009. language = configDetail.ConfigValue
  1010. } else {
  1011. configDetail, _ = system.GetDefaultConfigDetailByCode(system.EdbLanguageVar)
  1012. if configDetail != nil {
  1013. language = configDetail.ConfigValue
  1014. }
  1015. }
  1016. }
  1017. // 是否允许添加一级分类
  1018. canOpClassify := true
  1019. button := data.GetEdbClassifyOpButton(this.SysUser, 0)
  1020. if !button.AddButton {
  1021. canOpClassify = false
  1022. }
  1023. resp := new(data_manage.EdbClassifyListResp)
  1024. resp.AllNodes = sortList
  1025. resp.Language = language
  1026. resp.CanOpClassify = canOpClassify
  1027. br.Ret = 200
  1028. br.Success = true
  1029. br.Msg = "获取成功"
  1030. br.Data = resp
  1031. }