edb_classify.go 27 KB

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