chart_framework.go 20 KB

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