chart_framework.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673
  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/utils"
  8. "fmt"
  9. "strings"
  10. "time"
  11. )
  12. // ChartFrameworkController 图库框架
  13. type ChartFrameworkController struct {
  14. controllers.BaseAuthController
  15. }
  16. // List
  17. // @Title 列表
  18. // @Description 列表
  19. // @Param AdminId query int false "创建人ID"
  20. // @Param Visibility query int false "范围: 0-所有; 1-私有; 2-公开"
  21. // @Param Keyword query string false "关键词"
  22. // @Success 200 Ret=200 获取成功
  23. // @router /list [get]
  24. func (this *ChartFrameworkController) List() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. if br.ErrMsg == "" {
  28. br.IsSendEmail = false
  29. }
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. sysUser := this.SysUser
  34. if sysUser == nil {
  35. br.Msg = "请登录"
  36. br.ErrMsg = "请登录,SysUser Is Empty"
  37. br.Ret = 408
  38. return
  39. }
  40. adminId, _ := this.GetInt("AdminId")
  41. visibility, _ := this.GetInt("Visibility")
  42. if visibility == 1 && adminId <= 0 {
  43. adminId = sysUser.AdminId
  44. }
  45. keyword := this.GetString("Keyword")
  46. keyword = strings.TrimSpace(keyword)
  47. frameworkOb := new(data_manage.ChartFramework)
  48. cond := ``
  49. pars := make([]interface{}, 0)
  50. if adminId > 0 {
  51. cond += fmt.Sprintf(` AND %s = ?`, data_manage.ChartFrameworkColumns.AdminId)
  52. pars = append(pars, adminId)
  53. }
  54. if keyword != "" {
  55. cond += fmt.Sprintf(` AND %s LIKE ?`, data_manage.ChartFrameworkColumns.FrameworkName)
  56. pars = append(pars, "%"+keyword+"%")
  57. }
  58. if visibility > 0 {
  59. visibilityArr := map[int]int{1: 0, 2: 1}
  60. cond += fmt.Sprintf(` AND %s = ?`, data_manage.ChartFrameworkColumns.IsPublic)
  61. pars = append(pars, visibilityArr[visibility])
  62. }
  63. orderRule := `sort ASC, create_time DESC`
  64. list, e := frameworkOb.GetItemsByCondition(cond, pars, []string{}, orderRule)
  65. if e != nil {
  66. br.Msg = "获取失败"
  67. br.ErrMsg = "获取框架列表失败, Err: " + e.Error()
  68. return
  69. }
  70. resp := make([]*data_manage.ChartFrameworkItem, 0)
  71. for _, v := range list {
  72. t := data_manage.FormatChartFramework2Item(v)
  73. resp = append(resp, t)
  74. }
  75. br.Data = resp
  76. br.Ret = 200
  77. br.Success = true
  78. br.Msg = "获取成功"
  79. }
  80. // PublicMenu
  81. // @Title 公开框架目录
  82. // @Description 公开框架目录
  83. // @Success 200 Ret=200 获取成功
  84. // @router /public_menu [get]
  85. func (this *ChartFrameworkController) PublicMenu() {
  86. br := new(models.BaseResponse).Init()
  87. defer func() {
  88. if br.ErrMsg == "" {
  89. br.IsSendEmail = false
  90. }
  91. this.Data["json"] = br
  92. this.ServeJSON()
  93. }()
  94. sysUser := this.SysUser
  95. if sysUser == nil {
  96. br.Msg = "请登录"
  97. br.ErrMsg = "请登录,SysUser Is Empty"
  98. br.Ret = 408
  99. return
  100. }
  101. frameworkOb := new(data_manage.ChartFramework)
  102. cond := fmt.Sprintf(` AND %s = ?`, data_manage.ChartFrameworkColumns.IsPublic)
  103. pars := make([]interface{}, 0)
  104. pars = append(pars, 1)
  105. orderRule := `public_time ASC, sort ASC, create_time DESC`
  106. list, e := frameworkOb.GetItemsByCondition(cond, pars, []string{}, orderRule)
  107. if e != nil {
  108. br.Msg = "获取失败"
  109. br.ErrMsg = "获取公开框架失败, Err: " + e.Error()
  110. return
  111. }
  112. userExist := make(map[int]bool)
  113. userFrameworks := make(map[int][]*data_manage.ChartFrameworkItem)
  114. resp := make([]*data_manage.ChartFrameworkPublicMenuItem, 0)
  115. for _, v := range list {
  116. if !userExist[v.AdminId] {
  117. u := new(data_manage.ChartFrameworkPublicMenuItem)
  118. u.AdminId = v.AdminId
  119. u.MenuName = fmt.Sprintf("%s的框架", v.AdminName)
  120. resp = append(resp, u)
  121. userExist[v.AdminId] = true
  122. }
  123. t := data_manage.FormatChartFramework2Item(v)
  124. if userFrameworks[v.AdminId] == nil {
  125. userFrameworks[v.AdminId] = make([]*data_manage.ChartFrameworkItem, 0)
  126. }
  127. userFrameworks[v.AdminId] = append(userFrameworks[v.AdminId], t)
  128. }
  129. for _, v := range resp {
  130. v.Frameworks = userFrameworks[v.AdminId]
  131. }
  132. br.Data = resp
  133. br.Ret = 200
  134. br.Success = true
  135. br.Msg = "获取成功"
  136. }
  137. // Add
  138. // @Title 新增框架
  139. // @Description 新增框架
  140. // @Param request body data_manage.ChartFrameworkAddReq true "type json string"
  141. // @Success 200 Ret=200 操作成功
  142. // @router /add [post]
  143. func (this *ChartFrameworkController) Add() {
  144. br := new(models.BaseResponse).Init()
  145. defer func() {
  146. if br.ErrMsg == "" {
  147. br.IsSendEmail = false
  148. }
  149. this.Data["json"] = br
  150. this.ServeJSON()
  151. }()
  152. sysUser := this.SysUser
  153. if sysUser == nil {
  154. br.Msg = "请登录"
  155. br.ErrMsg = "请登录,SysUser Is Empty"
  156. br.Ret = 408
  157. return
  158. }
  159. // 参数校验
  160. var req data_manage.ChartFrameworkAddReq
  161. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  162. br.Msg = "参数解析异常!"
  163. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  164. return
  165. }
  166. req.FrameworkName = strings.TrimSpace(req.FrameworkName)
  167. if req.FrameworkName == "" {
  168. br.Msg = "框架名称不可为空"
  169. return
  170. }
  171. // 重名校验
  172. {
  173. ob := new(data_manage.ChartFramework)
  174. cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, data_manage.ChartFrameworkColumns.FrameworkName, data_manage.ChartFrameworkColumns.AdminId)
  175. pars := make([]interface{}, 0)
  176. pars = append(pars, req.FrameworkName, sysUser.AdminId)
  177. exist, e := ob.GetItemByCondition(cond, pars)
  178. if e != nil && e.Error() != utils.ErrNoRow() {
  179. br.Msg = "操作失败"
  180. br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
  181. return
  182. }
  183. if exist != nil {
  184. br.Msg = "框架名称已存在"
  185. return
  186. }
  187. }
  188. now := time.Now().Local()
  189. frameworkCode := utils.MD5(fmt.Sprint(now.UnixMilli()))
  190. item := new(data_manage.ChartFramework)
  191. item.FrameworkName = req.FrameworkName
  192. item.FrameworkCode = frameworkCode
  193. item.FrameworkImg = req.FrameworkImg
  194. item.FrameworkContent = req.FrameworkContent
  195. item.AdminId = sysUser.AdminId
  196. item.AdminName = sysUser.RealName
  197. item.CreateTime = now
  198. item.ModifyTime = now
  199. nodes := make([]*data_manage.ChartFrameworkNode, 0)
  200. if len(req.Nodes) > 0 {
  201. for _, v := range req.Nodes {
  202. if v.MyChartClassifyId <= 0 {
  203. continue
  204. }
  205. t := new(data_manage.ChartFrameworkNode)
  206. t.FrameworkName = req.FrameworkName
  207. t.NodeName = v.NodeName
  208. t.MyChartClassifyId = v.MyChartClassifyId
  209. t.CreateTime = now
  210. nodes = append(nodes, t)
  211. }
  212. }
  213. if e := item.CreateFrameworkAndNodes(item, nodes); e != nil {
  214. br.Msg = "操作失败"
  215. br.ErrMsg = "新增框架及节点失败, Err: " + e.Error()
  216. return
  217. }
  218. br.Ret = 200
  219. br.Success = true
  220. br.Msg = "操作成功"
  221. }
  222. // Edit
  223. // @Title 编辑框架
  224. // @Description 编辑框架
  225. // @Param request body data_manage.ChartFrameworkEditReq true "type json string"
  226. // @Success 200 Ret=200 操作成功
  227. // @router /edit [post]
  228. func (this *ChartFrameworkController) Edit() {
  229. br := new(models.BaseResponse).Init()
  230. defer func() {
  231. if br.ErrMsg == "" {
  232. br.IsSendEmail = false
  233. }
  234. this.Data["json"] = br
  235. this.ServeJSON()
  236. }()
  237. sysUser := this.SysUser
  238. if sysUser == nil {
  239. br.Msg = "请登录"
  240. br.ErrMsg = "请登录,SysUser Is Empty"
  241. br.Ret = 408
  242. return
  243. }
  244. // 参数校验
  245. var req data_manage.ChartFrameworkEditReq
  246. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  247. br.Msg = "参数解析异常!"
  248. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  249. return
  250. }
  251. if req.ChartFrameworkId <= 0 {
  252. br.Msg = "参数有误"
  253. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  254. return
  255. }
  256. req.FrameworkName = strings.TrimSpace(req.FrameworkName)
  257. if req.FrameworkName == "" {
  258. br.Msg = "框架名称不可为空"
  259. return
  260. }
  261. frameworkOb := new(data_manage.ChartFramework)
  262. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  263. if e != nil {
  264. if e.Error() == utils.ErrNoRow() {
  265. br.Msg = "框架不存在, 请刷新页面"
  266. return
  267. }
  268. br.Msg = "操作失败"
  269. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  270. return
  271. }
  272. // 重名校验
  273. {
  274. ob := new(data_manage.ChartFramework)
  275. cond := fmt.Sprintf(` AND %s <> ? AND %s = ? AND %s = ?`, ob.PrimaryId(), data_manage.ChartFrameworkColumns.FrameworkName, data_manage.ChartFrameworkColumns.AdminId)
  276. pars := make([]interface{}, 0)
  277. pars = append(pars, req.ChartFrameworkId, req.FrameworkName, sysUser.AdminId)
  278. exist, e := ob.GetItemByCondition(cond, pars)
  279. if e != nil && e.Error() != utils.ErrNoRow() {
  280. br.Msg = "操作失败"
  281. br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
  282. return
  283. }
  284. if exist != nil {
  285. br.Msg = "框架名称已存在"
  286. return
  287. }
  288. }
  289. now := time.Now().Local()
  290. item.FrameworkName = req.FrameworkName
  291. item.FrameworkImg = req.FrameworkImg
  292. item.FrameworkContent = req.FrameworkContent
  293. item.ModifyTime = now
  294. updateCols := []string{"FrameworkName", "FrameworkImg", "FrameworkContent", "ModifyTime"}
  295. nodes := make([]*data_manage.ChartFrameworkNode, 0)
  296. if len(req.Nodes) > 0 {
  297. for _, v := range req.Nodes {
  298. if v.MyChartClassifyId <= 0 {
  299. continue
  300. }
  301. t := new(data_manage.ChartFrameworkNode)
  302. t.ChartFrameworkId = req.ChartFrameworkId
  303. t.FrameworkName = req.FrameworkName
  304. t.NodeName = v.NodeName
  305. t.MyChartClassifyId = v.MyChartClassifyId
  306. t.CreateTime = now
  307. nodes = append(nodes, t)
  308. }
  309. }
  310. if e := item.EditFrameworkAndNodes(item, updateCols, nodes); e != nil {
  311. br.Msg = "操作失败"
  312. br.ErrMsg = "编辑框架及节点失败, Err: " + e.Error()
  313. return
  314. }
  315. br.Ret = 200
  316. br.Success = true
  317. br.Msg = "操作成功"
  318. }
  319. // Remove
  320. // @Title 删除框架
  321. // @Description 删除视频
  322. // @Param request body data_manage.ChartFrameworkRemoveReq true "type json string"
  323. // @Success 200 Ret=200 操作成功
  324. // @router /remove [post]
  325. func (this *ChartFrameworkController) Remove() {
  326. br := new(models.BaseResponse).Init()
  327. defer func() {
  328. if br.ErrMsg == "" {
  329. br.IsSendEmail = false
  330. }
  331. this.Data["json"] = br
  332. this.ServeJSON()
  333. }()
  334. sysUser := this.SysUser
  335. if sysUser == nil {
  336. br.Msg = "请登录"
  337. br.ErrMsg = "请登录,SysUser Is Empty"
  338. br.Ret = 408
  339. return
  340. }
  341. // 参数校验
  342. var req data_manage.ChartFrameworkRemoveReq
  343. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  344. br.Msg = "参数解析异常!"
  345. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  346. return
  347. }
  348. if req.ChartFrameworkId <= 0 {
  349. br.Msg = "参数有误"
  350. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  351. return
  352. }
  353. ob := new(data_manage.ChartFramework)
  354. item, e := ob.GetItemById(req.ChartFrameworkId)
  355. if e != nil {
  356. if e.Error() == utils.ErrNoRow() {
  357. br.Ret = 200
  358. br.Success = true
  359. br.Msg = "操作成功"
  360. return
  361. }
  362. br.Msg = "操作失败"
  363. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  364. return
  365. }
  366. if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && item.AdminId != sysUser.AdminId {
  367. br.Msg = "无权操作"
  368. return
  369. }
  370. if e := item.RemoveFrameworkAndNodes(req.ChartFrameworkId); e != nil {
  371. br.Msg = "操作失败"
  372. br.ErrMsg = "删除框架失败, Err: " + e.Error()
  373. return
  374. }
  375. br.Ret = 200
  376. br.Success = true
  377. br.Msg = "操作成功"
  378. }
  379. // Rename
  380. // @Title 重命名框架
  381. // @Description 重命名框架
  382. // @Param request body data_manage.ChartFrameworkRenameReq true "type json string"
  383. // @Success 200 Ret=200 操作成功
  384. // @router /rename [post]
  385. func (this *ChartFrameworkController) Rename() {
  386. br := new(models.BaseResponse).Init()
  387. defer func() {
  388. if br.ErrMsg == "" {
  389. br.IsSendEmail = false
  390. }
  391. this.Data["json"] = br
  392. this.ServeJSON()
  393. }()
  394. sysUser := this.SysUser
  395. if sysUser == nil {
  396. br.Msg = "请登录"
  397. br.ErrMsg = "请登录,SysUser Is Empty"
  398. br.Ret = 408
  399. return
  400. }
  401. // 参数校验
  402. var req data_manage.ChartFrameworkRenameReq
  403. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  404. br.Msg = "参数解析异常!"
  405. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  406. return
  407. }
  408. if req.ChartFrameworkId <= 0 {
  409. br.Msg = "参数有误"
  410. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  411. return
  412. }
  413. req.FrameworkName = strings.TrimSpace(req.FrameworkName)
  414. if req.FrameworkName == "" {
  415. br.Msg = "框架名称不可为空"
  416. return
  417. }
  418. frameworkOb := new(data_manage.ChartFramework)
  419. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  420. if e != nil {
  421. if e.Error() == utils.ErrNoRow() {
  422. br.Msg = "框架不存在, 请刷新页面"
  423. return
  424. }
  425. br.Msg = "操作失败"
  426. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  427. return
  428. }
  429. // 重名校验
  430. {
  431. ob := new(data_manage.ChartFramework)
  432. cond := fmt.Sprintf(` AND %s <> ? AND %s = ? AND %s = ?`, ob.PrimaryId(), data_manage.ChartFrameworkColumns.FrameworkName, data_manage.ChartFrameworkColumns.AdminId)
  433. pars := make([]interface{}, 0)
  434. pars = append(pars, req.ChartFrameworkId, req.FrameworkName, sysUser.AdminId)
  435. exist, e := ob.GetItemByCondition(cond, pars)
  436. if e != nil && e.Error() != utils.ErrNoRow() {
  437. br.Msg = "操作失败"
  438. br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
  439. return
  440. }
  441. if exist != nil {
  442. br.Msg = "框架名称已存在"
  443. return
  444. }
  445. }
  446. now := time.Now().Local()
  447. item.FrameworkName = req.FrameworkName
  448. item.ModifyTime = now
  449. updateCols := []string{"FrameworkName", "ModifyTime"}
  450. if e := item.Update(updateCols); e != nil {
  451. br.Msg = "操作失败"
  452. br.ErrMsg = "框架重命名失败, Err: " + e.Error()
  453. return
  454. }
  455. br.Ret = 200
  456. br.Success = true
  457. br.Msg = "操作成功"
  458. }
  459. // EditPublic
  460. // @Title 公开/隐藏框架
  461. // @Description 公开/隐藏框架
  462. // @Param request body data_manage.ChartFrameworkEditPublicReq true "type json string"
  463. // @Success 200 Ret=200 操作成功
  464. // @router /edit_public [post]
  465. func (this *ChartFrameworkController) EditPublic() {
  466. br := new(models.BaseResponse).Init()
  467. defer func() {
  468. if br.ErrMsg == "" {
  469. br.IsSendEmail = false
  470. }
  471. this.Data["json"] = br
  472. this.ServeJSON()
  473. }()
  474. sysUser := this.SysUser
  475. if sysUser == nil {
  476. br.Msg = "请登录"
  477. br.ErrMsg = "请登录,SysUser Is Empty"
  478. br.Ret = 408
  479. return
  480. }
  481. // 参数校验
  482. var req data_manage.ChartFrameworkEditPublicReq
  483. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  484. br.Msg = "参数解析异常!"
  485. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  486. return
  487. }
  488. if req.ChartFrameworkId <= 0 {
  489. br.Msg = "参数有误"
  490. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  491. return
  492. }
  493. if req.IsPublic != 0 && req.IsPublic != 1 {
  494. br.Msg = "参数有误"
  495. br.ErrMsg = fmt.Sprintf("参数有误, IsPublic: %d", req.IsPublic)
  496. return
  497. }
  498. frameworkOb := new(data_manage.ChartFramework)
  499. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  500. if e != nil {
  501. if e.Error() == utils.ErrNoRow() {
  502. br.Msg = "框架不存在, 请刷新页面"
  503. return
  504. }
  505. br.Msg = "操作失败"
  506. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  507. return
  508. }
  509. now := time.Now().Local()
  510. updateCols := []string{"IsPublic", "PublicTime", "ModifyTime"}
  511. item.IsPublic = req.IsPublic
  512. if req.IsPublic == 1 {
  513. item.PublicTime = time.Now().Local()
  514. } else {
  515. item.PublicTime = time.Time{}
  516. }
  517. item.ModifyTime = now
  518. if e := item.Update(updateCols); e != nil {
  519. br.Msg = "操作失败"
  520. br.ErrMsg = "更新框架是否公开失败, Err: " + e.Error()
  521. return
  522. }
  523. br.Ret = 200
  524. br.Success = true
  525. br.Msg = "操作成功"
  526. }
  527. // Move
  528. // @Title 移动排序
  529. // @Description 移动排序
  530. // @Param request body data_manage.ChartFrameworkMoveReq true "type json string"
  531. // @Success 200 Ret=200 操作成功
  532. // @router /move [post]
  533. func (this *ChartFrameworkController) Move() {
  534. br := new(models.BaseResponse).Init()
  535. defer func() {
  536. if br.ErrMsg == "" {
  537. br.IsSendEmail = false
  538. }
  539. this.Data["json"] = br
  540. this.ServeJSON()
  541. }()
  542. sysUser := this.SysUser
  543. if sysUser == nil {
  544. br.Msg = "请登录"
  545. br.ErrMsg = "请登录,SysUser Is Empty"
  546. br.Ret = 408
  547. return
  548. }
  549. // 参数校验
  550. var req data_manage.ChartFrameworkMoveReq
  551. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  552. br.Msg = "参数解析异常!"
  553. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  554. return
  555. }
  556. if req.ChartFrameworkId <= 0 {
  557. br.Msg = "参数有误"
  558. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  559. return
  560. }
  561. frameworkOb := new(data_manage.ChartFramework)
  562. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  563. if e != nil {
  564. if e.Error() == utils.ErrNoRow() {
  565. br.Msg = "框架不存在, 请刷新页面"
  566. return
  567. }
  568. br.Msg = "操作失败"
  569. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  570. return
  571. }
  572. updateCols := make([]string, 0)
  573. // 上一个兄弟节点
  574. if req.PrevChartFrameworkId > 0 {
  575. prev, e := frameworkOb.GetItemById(req.PrevChartFrameworkId)
  576. if e != nil {
  577. br.Msg = "操作失败"
  578. br.ErrMsg = "获取上一个兄弟节点失败, Err: " + e.Error()
  579. return
  580. }
  581. // 两个兄弟节点之间
  582. if req.NextChartFrameworkId > 0 {
  583. next, e := frameworkOb.GetItemById(req.PrevChartFrameworkId)
  584. if e != nil {
  585. br.Msg = "操作失败"
  586. br.ErrMsg = "获取下一个兄弟节点失败, Err: " + e.Error()
  587. return
  588. }
  589. // 如果上一个与下一个排序权重是一致的, 那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2, 自己变成上一个兄弟的排序权重+1
  590. if prev.Sort == next.Sort || prev.Sort == item.Sort {
  591. strUpdate := `sort + 2`
  592. _ = data_manage.UpdateChartFrameworkSort(sysUser.AdminId, prev.ChartFrameworkId, prev.Sort, strUpdate)
  593. } else {
  594. // 如果下一个排序权重正好是上一个节点的下一层, 那么需要再加一层了
  595. if next.Sort-prev.Sort == 1 {
  596. //变更兄弟节点的排序
  597. strUpdate := `sort + 1`
  598. _ = data_manage.UpdateChartFrameworkSort(sysUser.AdminId, 0, prev.Sort, strUpdate)
  599. }
  600. }
  601. }
  602. // 上一个兄弟节点sort+1
  603. item.Sort = prev.Sort + 1
  604. item.ModifyTime = time.Now()
  605. updateCols = append(updateCols, "Sort", "ModifyTime")
  606. } else {
  607. first, err := data_manage.GetFirstChartFramework(sysUser.AdminId)
  608. if err != nil && err.Error() != utils.ErrNoRow() {
  609. br.Msg = "操作失败"
  610. br.ErrMsg = "获取我的图库框架排首位的数据失败, Err:" + err.Error()
  611. return
  612. }
  613. if first != nil && first.Sort == 0 {
  614. strUpdate := ` sort + 1 `
  615. _ = data_manage.UpdateChartFrameworkSort(sysUser.AdminId, first.ChartFrameworkId-1, 0, strUpdate)
  616. }
  617. // 排首位
  618. item.Sort = 0
  619. item.ModifyTime = time.Now()
  620. updateCols = append(updateCols, "Sort", "ModifyTime")
  621. }
  622. if len(updateCols) > 0 {
  623. if e := item.Update(updateCols); e != nil {
  624. br.Msg = "操作失败"
  625. br.ErrMsg = "更新框架排序失败, Err: " + e.Error()
  626. return
  627. }
  628. }
  629. br.Ret = 200
  630. br.Success = true
  631. br.Msg = "操作成功"
  632. }