edb_classify.go 37 KB

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