chart_framework.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669
  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 <= 0 {
  203. continue
  204. }
  205. t := new(data_manage.ChartFrameworkNode)
  206. t.MyChartClassifyId = v
  207. t.CreateTime = now
  208. nodes = append(nodes, t)
  209. }
  210. }
  211. if e := item.CreateFrameworkAndNodes(item, nodes); e != nil {
  212. br.Msg = "操作失败"
  213. br.ErrMsg = "新增框架及节点失败, Err: " + e.Error()
  214. return
  215. }
  216. br.Ret = 200
  217. br.Success = true
  218. br.Msg = "操作成功"
  219. }
  220. // Edit
  221. // @Title 编辑框架
  222. // @Description 编辑框架
  223. // @Param request body data_manage.ChartFrameworkEditReq true "type json string"
  224. // @Success 200 Ret=200 操作成功
  225. // @router /edit [post]
  226. func (this *ChartFrameworkController) Edit() {
  227. br := new(models.BaseResponse).Init()
  228. defer func() {
  229. if br.ErrMsg == "" {
  230. br.IsSendEmail = false
  231. }
  232. this.Data["json"] = br
  233. this.ServeJSON()
  234. }()
  235. sysUser := this.SysUser
  236. if sysUser == nil {
  237. br.Msg = "请登录"
  238. br.ErrMsg = "请登录,SysUser Is Empty"
  239. br.Ret = 408
  240. return
  241. }
  242. // 参数校验
  243. var req data_manage.ChartFrameworkEditReq
  244. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  245. br.Msg = "参数解析异常!"
  246. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  247. return
  248. }
  249. if req.ChartFrameworkId <= 0 {
  250. br.Msg = "参数有误"
  251. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  252. return
  253. }
  254. req.FrameworkName = strings.TrimSpace(req.FrameworkName)
  255. if req.FrameworkName == "" {
  256. br.Msg = "框架名称不可为空"
  257. return
  258. }
  259. frameworkOb := new(data_manage.ChartFramework)
  260. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  261. if e != nil {
  262. if e.Error() == utils.ErrNoRow() {
  263. br.Msg = "框架不存在, 请刷新页面"
  264. return
  265. }
  266. br.Msg = "操作失败"
  267. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  268. return
  269. }
  270. // 重名校验
  271. {
  272. ob := new(data_manage.ChartFramework)
  273. cond := fmt.Sprintf(` AND %s <> ? AND %s = ? AND %s = ?`, ob.PrimaryId(), data_manage.ChartFrameworkColumns.FrameworkName, data_manage.ChartFrameworkColumns.AdminId)
  274. pars := make([]interface{}, 0)
  275. pars = append(pars, req.ChartFrameworkId, req.FrameworkName, sysUser.AdminId)
  276. exist, e := ob.GetItemByCondition(cond, pars)
  277. if e != nil && e.Error() != utils.ErrNoRow() {
  278. br.Msg = "操作失败"
  279. br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
  280. return
  281. }
  282. if exist != nil {
  283. br.Msg = "框架名称已存在"
  284. return
  285. }
  286. }
  287. now := time.Now().Local()
  288. item.FrameworkName = req.FrameworkName
  289. item.FrameworkImg = req.FrameworkImg
  290. item.FrameworkContent = req.FrameworkContent
  291. item.ModifyTime = now
  292. updateCols := []string{"FrameworkName", "FrameworkImg", "FrameworkContent", "ModifyTime"}
  293. nodes := make([]*data_manage.ChartFrameworkNode, 0)
  294. if len(req.Nodes) > 0 {
  295. for _, v := range req.Nodes {
  296. if v <= 0 {
  297. continue
  298. }
  299. t := new(data_manage.ChartFrameworkNode)
  300. t.ChartFrameworkId = item.ChartFrameworkId
  301. t.MyChartClassifyId = v
  302. t.CreateTime = now
  303. nodes = append(nodes, t)
  304. }
  305. }
  306. if e := item.EditFrameworkAndNodes(item, updateCols, nodes); e != nil {
  307. br.Msg = "操作失败"
  308. br.ErrMsg = "编辑框架及节点失败, Err: " + e.Error()
  309. return
  310. }
  311. br.Ret = 200
  312. br.Success = true
  313. br.Msg = "操作成功"
  314. }
  315. // Remove
  316. // @Title 删除框架
  317. // @Description 删除视频
  318. // @Param request body data_manage.ChartFrameworkRemoveReq true "type json string"
  319. // @Success 200 Ret=200 操作成功
  320. // @router /remove [post]
  321. func (this *ChartFrameworkController) Remove() {
  322. br := new(models.BaseResponse).Init()
  323. defer func() {
  324. if br.ErrMsg == "" {
  325. br.IsSendEmail = false
  326. }
  327. this.Data["json"] = br
  328. this.ServeJSON()
  329. }()
  330. sysUser := this.SysUser
  331. if sysUser == nil {
  332. br.Msg = "请登录"
  333. br.ErrMsg = "请登录,SysUser Is Empty"
  334. br.Ret = 408
  335. return
  336. }
  337. // 参数校验
  338. var req data_manage.ChartFrameworkRemoveReq
  339. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  340. br.Msg = "参数解析异常!"
  341. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  342. return
  343. }
  344. if req.ChartFrameworkId <= 0 {
  345. br.Msg = "参数有误"
  346. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  347. return
  348. }
  349. ob := new(data_manage.ChartFramework)
  350. item, e := ob.GetItemById(req.ChartFrameworkId)
  351. if e != nil {
  352. if e.Error() == utils.ErrNoRow() {
  353. br.Ret = 200
  354. br.Success = true
  355. br.Msg = "操作成功"
  356. return
  357. }
  358. br.Msg = "操作失败"
  359. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  360. return
  361. }
  362. if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN && item.AdminId != sysUser.AdminId {
  363. br.Msg = "无权操作"
  364. return
  365. }
  366. if e := item.RemoveFrameworkAndNodes(req.ChartFrameworkId); e != nil {
  367. br.Msg = "操作失败"
  368. br.ErrMsg = "删除框架失败, Err: " + e.Error()
  369. return
  370. }
  371. br.Ret = 200
  372. br.Success = true
  373. br.Msg = "操作成功"
  374. }
  375. // Rename
  376. // @Title 重命名框架
  377. // @Description 重命名框架
  378. // @Param request body data_manage.ChartFrameworkRenameReq true "type json string"
  379. // @Success 200 Ret=200 操作成功
  380. // @router /rename [post]
  381. func (this *ChartFrameworkController) Rename() {
  382. br := new(models.BaseResponse).Init()
  383. defer func() {
  384. if br.ErrMsg == "" {
  385. br.IsSendEmail = false
  386. }
  387. this.Data["json"] = br
  388. this.ServeJSON()
  389. }()
  390. sysUser := this.SysUser
  391. if sysUser == nil {
  392. br.Msg = "请登录"
  393. br.ErrMsg = "请登录,SysUser Is Empty"
  394. br.Ret = 408
  395. return
  396. }
  397. // 参数校验
  398. var req data_manage.ChartFrameworkRenameReq
  399. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  400. br.Msg = "参数解析异常!"
  401. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  402. return
  403. }
  404. if req.ChartFrameworkId <= 0 {
  405. br.Msg = "参数有误"
  406. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  407. return
  408. }
  409. req.FrameworkName = strings.TrimSpace(req.FrameworkName)
  410. if req.FrameworkName == "" {
  411. br.Msg = "框架名称不可为空"
  412. return
  413. }
  414. frameworkOb := new(data_manage.ChartFramework)
  415. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  416. if e != nil {
  417. if e.Error() == utils.ErrNoRow() {
  418. br.Msg = "框架不存在, 请刷新页面"
  419. return
  420. }
  421. br.Msg = "操作失败"
  422. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  423. return
  424. }
  425. // 重名校验
  426. {
  427. ob := new(data_manage.ChartFramework)
  428. cond := fmt.Sprintf(` AND %s <> ? AND %s = ? AND %s = ?`, ob.PrimaryId(), data_manage.ChartFrameworkColumns.FrameworkName, data_manage.ChartFrameworkColumns.AdminId)
  429. pars := make([]interface{}, 0)
  430. pars = append(pars, req.ChartFrameworkId, req.FrameworkName, sysUser.AdminId)
  431. exist, e := ob.GetItemByCondition(cond, pars)
  432. if e != nil && e.Error() != utils.ErrNoRow() {
  433. br.Msg = "操作失败"
  434. br.ErrMsg = "获取重名框架失败, Err: " + e.Error()
  435. return
  436. }
  437. if exist != nil {
  438. br.Msg = "框架名称已存在"
  439. return
  440. }
  441. }
  442. now := time.Now().Local()
  443. item.FrameworkName = req.FrameworkName
  444. item.ModifyTime = now
  445. updateCols := []string{"FrameworkName", "ModifyTime"}
  446. if e := item.Update(updateCols); e != nil {
  447. br.Msg = "操作失败"
  448. br.ErrMsg = "框架重命名失败, Err: " + e.Error()
  449. return
  450. }
  451. br.Ret = 200
  452. br.Success = true
  453. br.Msg = "操作成功"
  454. }
  455. // EditPublic
  456. // @Title 公开/隐藏框架
  457. // @Description 公开/隐藏框架
  458. // @Param request body data_manage.ChartFrameworkEditPublicReq true "type json string"
  459. // @Success 200 Ret=200 操作成功
  460. // @router /edit_public [post]
  461. func (this *ChartFrameworkController) EditPublic() {
  462. br := new(models.BaseResponse).Init()
  463. defer func() {
  464. if br.ErrMsg == "" {
  465. br.IsSendEmail = false
  466. }
  467. this.Data["json"] = br
  468. this.ServeJSON()
  469. }()
  470. sysUser := this.SysUser
  471. if sysUser == nil {
  472. br.Msg = "请登录"
  473. br.ErrMsg = "请登录,SysUser Is Empty"
  474. br.Ret = 408
  475. return
  476. }
  477. // 参数校验
  478. var req data_manage.ChartFrameworkEditPublicReq
  479. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  480. br.Msg = "参数解析异常!"
  481. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  482. return
  483. }
  484. if req.ChartFrameworkId <= 0 {
  485. br.Msg = "参数有误"
  486. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  487. return
  488. }
  489. if req.IsPublic != 0 && req.IsPublic != 1 {
  490. br.Msg = "参数有误"
  491. br.ErrMsg = fmt.Sprintf("参数有误, IsPublic: %d", req.IsPublic)
  492. return
  493. }
  494. frameworkOb := new(data_manage.ChartFramework)
  495. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  496. if e != nil {
  497. if e.Error() == utils.ErrNoRow() {
  498. br.Msg = "框架不存在, 请刷新页面"
  499. return
  500. }
  501. br.Msg = "操作失败"
  502. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  503. return
  504. }
  505. now := time.Now().Local()
  506. updateCols := []string{"IsPublic", "PublicTime", "ModifyTime"}
  507. item.IsPublic = req.IsPublic
  508. if req.IsPublic == 1 {
  509. item.PublicTime = time.Now().Local()
  510. } else {
  511. item.PublicTime = time.Time{}
  512. }
  513. item.ModifyTime = now
  514. if e := item.Update(updateCols); e != nil {
  515. br.Msg = "操作失败"
  516. br.ErrMsg = "更新框架是否公开失败, Err: " + e.Error()
  517. return
  518. }
  519. br.Ret = 200
  520. br.Success = true
  521. br.Msg = "操作成功"
  522. }
  523. // Move
  524. // @Title 移动排序
  525. // @Description 移动排序
  526. // @Param request body data_manage.ChartFrameworkMoveReq true "type json string"
  527. // @Success 200 Ret=200 操作成功
  528. // @router /move [post]
  529. func (this *ChartFrameworkController) Move() {
  530. br := new(models.BaseResponse).Init()
  531. defer func() {
  532. if br.ErrMsg == "" {
  533. br.IsSendEmail = false
  534. }
  535. this.Data["json"] = br
  536. this.ServeJSON()
  537. }()
  538. sysUser := this.SysUser
  539. if sysUser == nil {
  540. br.Msg = "请登录"
  541. br.ErrMsg = "请登录,SysUser Is Empty"
  542. br.Ret = 408
  543. return
  544. }
  545. // 参数校验
  546. var req data_manage.ChartFrameworkMoveReq
  547. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  548. br.Msg = "参数解析异常!"
  549. br.ErrMsg = "参数解析失败,Err:" + e.Error()
  550. return
  551. }
  552. if req.ChartFrameworkId <= 0 {
  553. br.Msg = "参数有误"
  554. br.ErrMsg = fmt.Sprintf("参数有误, ChartFrameworkId: %d", req.ChartFrameworkId)
  555. return
  556. }
  557. frameworkOb := new(data_manage.ChartFramework)
  558. item, e := frameworkOb.GetItemById(req.ChartFrameworkId)
  559. if e != nil {
  560. if e.Error() == utils.ErrNoRow() {
  561. br.Msg = "框架不存在, 请刷新页面"
  562. return
  563. }
  564. br.Msg = "操作失败"
  565. br.ErrMsg = "获取框架失败, Err: " + e.Error()
  566. return
  567. }
  568. updateCols := make([]string, 0)
  569. // 上一个兄弟节点
  570. if req.PrevChartFrameworkId > 0 {
  571. prev, e := frameworkOb.GetItemById(req.PrevChartFrameworkId)
  572. if e != nil {
  573. br.Msg = "操作失败"
  574. br.ErrMsg = "获取上一个兄弟节点失败, Err: " + e.Error()
  575. return
  576. }
  577. // 两个兄弟节点之间
  578. if req.NextChartFrameworkId > 0 {
  579. next, e := frameworkOb.GetItemById(req.PrevChartFrameworkId)
  580. if e != nil {
  581. br.Msg = "操作失败"
  582. br.ErrMsg = "获取下一个兄弟节点失败, Err: " + e.Error()
  583. return
  584. }
  585. // 如果上一个与下一个排序权重是一致的, 那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2, 自己变成上一个兄弟的排序权重+1
  586. if prev.Sort == next.Sort || prev.Sort == item.Sort {
  587. strUpdate := `sort + 2`
  588. _ = data_manage.UpdateChartFrameworkSort(sysUser.AdminId, prev.ChartFrameworkId, prev.Sort, strUpdate)
  589. } else {
  590. // 如果下一个排序权重正好是上一个节点的下一层, 那么需要再加一层了
  591. if next.Sort-prev.Sort == 1 {
  592. //变更兄弟节点的排序
  593. strUpdate := `sort + 1`
  594. _ = data_manage.UpdateChartFrameworkSort(sysUser.AdminId, 0, prev.Sort, strUpdate)
  595. }
  596. }
  597. }
  598. // 上一个兄弟节点sort+1
  599. item.Sort = prev.Sort + 1
  600. item.ModifyTime = time.Now()
  601. updateCols = append(updateCols, "Sort", "ModifyTime")
  602. } else {
  603. first, err := data_manage.GetFirstChartFramework(sysUser.AdminId)
  604. if err != nil && err.Error() != utils.ErrNoRow() {
  605. br.Msg = "操作失败"
  606. br.ErrMsg = "获取我的图库框架排首位的数据失败, Err:" + err.Error()
  607. return
  608. }
  609. if first != nil && first.Sort == 0 {
  610. strUpdate := ` sort + 1 `
  611. _ = data_manage.UpdateChartFrameworkSort(sysUser.AdminId, first.ChartFrameworkId-1, 0, strUpdate)
  612. }
  613. // 排首位
  614. item.Sort = 0
  615. item.ModifyTime = time.Now()
  616. updateCols = append(updateCols, "Sort", "ModifyTime")
  617. }
  618. if len(updateCols) > 0 {
  619. if e := item.Update(updateCols); e != nil {
  620. br.Msg = "操作失败"
  621. br.ErrMsg = "更新框架排序失败, Err: " + e.Error()
  622. return
  623. }
  624. }
  625. br.Ret = 200
  626. br.Success = true
  627. br.Msg = "操作成功"
  628. }