chart_framework.go 19 KB

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