material.go 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  1. package material
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/models"
  6. "eta/eta_api/models/material"
  7. materialService "eta/eta_api/services/material"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "github.com/rdlucklib/rdluck_tools/paging"
  11. "time"
  12. )
  13. // versionSize 版本列表第一页数据约定是:3条
  14. var versionSize = 3
  15. // MaterialController 逻辑导图
  16. type MaterialController struct {
  17. controllers.BaseAuthController
  18. }
  19. // MaterialClassifyItems
  20. // @Title 获取所有素材库分类接口-包含素材库
  21. // @Description 获取所有素材库分类接口-包含素材库
  22. // @Param IsShowMe query bool true "是否只看我的,true、false"
  23. // @Success 200 {object} data_manage.ChartClassifyListResp
  24. // @router /classify/list [get]
  25. func (this *MaterialController) MaterialClassifyItems() {
  26. br := new(models.BaseResponse).Init()
  27. defer func() {
  28. this.Data["json"] = br
  29. this.ServeJSON()
  30. }()
  31. resp := new(material.MaterialClassifyListResp)
  32. MaterialClassifyId, _ := this.GetInt("MaterialClassifyId")
  33. isShowMe, _ := this.GetBool("IsShowMe")
  34. if isShowMe {
  35. errMsg, err := materialService.GetMaterialClassifyListForMe(*this.SysUser, resp, MaterialClassifyId)
  36. if err != nil {
  37. br.Msg = errMsg
  38. br.ErrMsg = err.Error()
  39. return
  40. }
  41. // 移除没有权限的图表
  42. br.Ret = 200
  43. br.Success = true
  44. br.Msg = "获取成功"
  45. br.Data = resp
  46. fmt.Println("source my classify")
  47. return
  48. }
  49. rootList, err := material.GetMaterialClassifyAndInfoByParentId(MaterialClassifyId)
  50. if err != nil && err.Error() != utils.ErrNoRow() {
  51. br.Msg = "获取失败"
  52. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  53. return
  54. }
  55. classifyAll, err := material.GetMaterialClassifyAndInfoByParentId(MaterialClassifyId)
  56. if err != nil && err.Error() != utils.ErrNoRow() {
  57. br.Msg = "获取失败"
  58. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  59. return
  60. }
  61. nodeAll := make([]*material.MaterialClassifyItems, 0)
  62. for k := range rootList {
  63. rootNode := rootList[k]
  64. materialService.MaterialClassifyItemsMakeTreeV2(this.SysUser, classifyAll, rootNode)
  65. nodeAll = append(nodeAll, rootNode)
  66. }
  67. //newAll := materialService.MaterialItemsMakeTree(nodeAll, sandListMap, MaterialClassifyId)
  68. resp.AllNodes = nodeAll
  69. br.Ret = 200
  70. br.Success = true
  71. br.Msg = "获取成功"
  72. br.Data = resp
  73. }
  74. // @Title 新增/编辑素材库分类
  75. // @Description 新增/编辑材库分类接口
  76. // @Param request body data_manage.AddChartClassifyReq true "type json string"
  77. // @Success 200 Ret=200 保存成功
  78. // @router /classify/save [post]
  79. func (this *MaterialController) SaveMaterialClassify() {
  80. br := new(models.BaseResponse).Init()
  81. defer func() {
  82. this.Data["json"] = br
  83. this.ServeJSON()
  84. }()
  85. var req material.SaveMaterialClassifyReq
  86. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  87. if err != nil {
  88. br.Msg = "参数解析异常!"
  89. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  90. return
  91. }
  92. if req.ClassifyName == "" {
  93. br.Msg = "请输入分类名称"
  94. br.IsSendEmail = false
  95. return
  96. }
  97. if req.ParentId < 0 {
  98. br.Msg = "参数错误"
  99. br.IsSendEmail = false
  100. return
  101. }
  102. level := 1
  103. //levelPath := ""
  104. if req.ParentId > 0 {
  105. //查找父级分类
  106. parentClassify, e := material.GetMaterialClassifyById(req.ParentId)
  107. if e != nil {
  108. br.Msg = "获取父级分类失败"
  109. br.ErrMsg = "获取父级分类失败,Err:" + e.Error()
  110. return
  111. }
  112. level = parentClassify.Level + 1
  113. //levelPath = parentClassify.LevelPath
  114. }
  115. if req.ClassifyId > 0 {
  116. // 只允许修改分类名称
  117. item, e := material.GetMaterialClassifyById(req.ClassifyId)
  118. if e != nil {
  119. br.Msg = "保存失败"
  120. br.Msg = "获取分类信息失败,Err:" + e.Error()
  121. return
  122. }
  123. count, e := material.GetMaterialClassifyNameNotSelfCount(req.ClassifyId, req.ClassifyName, item.ParentId)
  124. if e != nil {
  125. br.Msg = "判断名称是否已存在失败"
  126. br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  127. return
  128. }
  129. if count > 0 {
  130. br.Msg = "分类名称已存在,请重新输入"
  131. br.IsSendEmail = false
  132. return
  133. }
  134. //levelPath = fmt.Sprintf("%s,%d", levelPath, req.ClassifyId)
  135. //item.LevelPath = levelPath
  136. //item.ParentId = req.ParentId
  137. item.ClassifyName = req.ClassifyName
  138. item.ModifyTime = time.Now()
  139. //e = item.Update([]string{"LevelPath", "ParentId", "ClassifyName", "ModifyTime"})
  140. e = item.Update([]string{"ClassifyName", "ModifyTime"})
  141. if e != nil {
  142. br.Msg = "保存分类失败"
  143. br.ErrMsg = "保存分类失败,Err:" + e.Error()
  144. return
  145. }
  146. //todo 更新子集的levelPath
  147. /*e = material.UpdateMaterialClassifyLevelPath(req.ClassifyId, levelPath)
  148. if e != nil {
  149. br.Msg = "保存分类失败"
  150. br.ErrMsg = "保存分类失败,Err:" + e.Error()
  151. return
  152. }*/
  153. } else {
  154. count, e := material.GetMaterialClassifyNameCount(req.ClassifyName, req.ParentId)
  155. if e != nil {
  156. br.Msg = "判断名称是否已存在失败"
  157. br.ErrMsg = "判断名称是否已存在失败,Err:" + e.Error()
  158. return
  159. }
  160. if count > 0 {
  161. br.Msg = "分类名称已存在,请重新输入"
  162. br.IsSendEmail = false
  163. return
  164. }
  165. //获取该层级下最大的排序数
  166. classify := new(material.MaterialClassify)
  167. maxSort, _ := material.GetMaterialClassifyMaxSort(req.ParentId)
  168. classify.ParentId = req.ParentId
  169. classify.ClassifyName = req.ClassifyName
  170. classify.CreateTime = time.Now()
  171. classify.ModifyTime = time.Now()
  172. classify.SysUserId = this.SysUser.AdminId
  173. classify.SysUserRealName = this.SysUser.RealName
  174. classify.Level = level
  175. classify.Sort = maxSort + 1
  176. classifyId, e := material.AddMaterialClassify(classify)
  177. if e != nil {
  178. br.Msg = "保存分类失败"
  179. br.ErrMsg = "保存分类失败,Err:" + e.Error()
  180. return
  181. }
  182. classify.LevelPath = fmt.Sprint(classifyId)
  183. e = classify.Update([]string{"LevelPath"})
  184. if e != nil {
  185. br.Msg = "保存分类失败"
  186. br.ErrMsg = "保存分类失败,Err:" + e.Error()
  187. return
  188. }
  189. }
  190. br.Ret = 200
  191. br.Msg = "保存成功"
  192. br.Success = true
  193. }
  194. // @Title 修改素材库分类
  195. // @Description 修改素材库分类接口
  196. // @Param request body data_manage.EditChartClassifyReq true "type json string"
  197. // @Success 200 Ret=200 修改成功
  198. // @router /classify/edit [post]
  199. func (this *MaterialController) EditMaterialClassify() {
  200. br := new(models.BaseResponse).Init()
  201. defer func() {
  202. this.Data["json"] = br
  203. this.ServeJSON()
  204. }()
  205. var req material.EditMaterialClassifyReq
  206. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  207. if err != nil {
  208. br.Msg = "参数解析异常!"
  209. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  210. return
  211. }
  212. if req.ClassifyName == "" {
  213. br.Msg = "请输入分类名称"
  214. br.IsSendEmail = false
  215. return
  216. }
  217. if req.ClassifyId <= 0 {
  218. br.Msg = "参数错误"
  219. br.IsSendEmail = false
  220. return
  221. }
  222. br.Ret = 200
  223. br.Msg = "保存成功"
  224. br.Success = true
  225. br.IsAddLog = true
  226. }
  227. // @Title 删除素材库检测接口
  228. // @Description 删除素材库检测接口
  229. // @Param request body data_manage.ChartClassifyDeleteCheckResp true "type json string"
  230. // @Success 200 Ret=200 检测成功
  231. // @router /classify/delete/check [post]
  232. func (this *MaterialController) DeleteMaterialClassifyCheck() {
  233. br := new(models.BaseResponse).Init()
  234. defer func() {
  235. this.Data["json"] = br
  236. this.ServeJSON()
  237. }()
  238. var req material.MaterialClassifyDeleteCheckReq
  239. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  240. if err != nil {
  241. br.Msg = "参数解析异常!"
  242. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  243. return
  244. }
  245. if req.ClassifyId < 0 {
  246. br.Msg = "参数错误"
  247. br.IsSendEmail = false
  248. return
  249. }
  250. var deleteStatus int
  251. var tipsMsg string
  252. //删除分类
  253. if req.ClassifyId > 0 {
  254. //判断素材库分类下,是否含有素材库
  255. count, err := material.GetMaterialInfoCountByClassifyId(req.ClassifyId)
  256. if err != nil {
  257. br.Msg = "删除失败"
  258. br.ErrMsg = "分类下是否含有指标失败,Err:" + err.Error()
  259. return
  260. }
  261. if count > 0 {
  262. deleteStatus = 1
  263. tipsMsg = "该分类下关联素材库不可删除"
  264. }
  265. }
  266. if deleteStatus != 1 {
  267. classifyCount, err := material.GetMaterialInfoCountByClassifyId(req.ClassifyId)
  268. if err != nil && err.Error() != utils.ErrNoRow() {
  269. br.Msg = "删除失败"
  270. br.ErrMsg = "分类下是否含有素材库失败,Err:" + err.Error()
  271. return
  272. }
  273. if classifyCount > 0 {
  274. deleteStatus = 2
  275. tipsMsg = "确认删除当前目录及包含的子目录吗"
  276. }
  277. }
  278. if deleteStatus == 0 {
  279. tipsMsg = "可删除,进行删除操作"
  280. }
  281. resp := new(material.MaterialClassifyDeleteCheckResp)
  282. resp.DeleteStatus = deleteStatus
  283. resp.TipsMsg = tipsMsg
  284. br.Ret = 200
  285. br.Msg = "检测成功"
  286. br.Success = true
  287. br.Data = resp
  288. }
  289. // @Title 删除素材库分类/素材库
  290. // @Description 删除素材库分类/素材库接口
  291. // @Param request body data_manage.DeleteChartClassifyReq true "type json string"
  292. // @Success 200 Ret=200 删除成功
  293. // @router /classify/delete [post]
  294. func (this *MaterialController) DeleteMaterialClassify() {
  295. br := new(models.BaseResponse).Init()
  296. defer func() {
  297. this.Data["json"] = br
  298. this.ServeJSON()
  299. }()
  300. sysUser := this.SysUser
  301. if sysUser == nil {
  302. br.Msg = "请登录"
  303. br.ErrMsg = "请登录,SysUser Is Empty"
  304. br.Ret = 408
  305. return
  306. }
  307. var req material.DeleteMaterialClassifyReq
  308. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  309. if err != nil {
  310. br.Msg = "参数解析异常!"
  311. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  312. return
  313. }
  314. if req.ClassifyId < 0 && req.MaterialId <= 0 {
  315. br.Msg = "参数错误"
  316. br.IsSendEmail = false
  317. return
  318. }
  319. //删除分类
  320. if req.ClassifyId > 0 && req.MaterialId == 0 {
  321. //判断是否含有指标
  322. count, err := material.GetMaterialInfoCountByClassifyId(req.MaterialId)
  323. if err != nil && err.Error() != utils.ErrNoRow() {
  324. br.Msg = "删除失败"
  325. br.ErrMsg = "判断名称是否已存在失败,Err:" + err.Error()
  326. return
  327. }
  328. if count > 0 {
  329. br.Msg = "该目录下存在关联指标,不可删除"
  330. br.IsSendEmail = false
  331. return
  332. }
  333. err = material.DeleteMaterialClassify(req.ClassifyId)
  334. if err != nil {
  335. br.Msg = "删除失败"
  336. br.ErrMsg = "删除失败,Err:" + err.Error()
  337. return
  338. }
  339. }
  340. //删除素材库
  341. if req.MaterialId > 0 {
  342. materialInfo, err := material.GetMaterialById(req.MaterialId)
  343. if err != nil {
  344. if err.Error() == utils.ErrNoRow() {
  345. br.Msg = "素材库已删除,请刷新页面"
  346. br.ErrMsg = "指标不存在,Err:" + err.Error()
  347. return
  348. } else {
  349. br.Msg = "删除失败"
  350. br.ErrMsg = "删除失败,获取指标信息失败,Err:" + err.Error()
  351. return
  352. }
  353. }
  354. if materialInfo == nil {
  355. br.Msg = "素材库已删除,请刷新页面"
  356. return
  357. }
  358. err = materialService.DeleteMaterial(req.MaterialId)
  359. if err != nil {
  360. br.Msg = err.Error()
  361. return
  362. }
  363. }
  364. br.Ret = 200
  365. br.Msg = "删除成功"
  366. br.Success = true
  367. br.IsAddLog = true
  368. }
  369. // ChartClassifyMove
  370. // @Title 素材库分类移动接口
  371. // @Description 素材库分类移动接口
  372. // @Success 200 {object} data_manage.MoveChartClassifyReq
  373. // @router /classify/move [post]
  374. func (this *MaterialController) ChartClassifyMove() {
  375. br := new(models.BaseResponse).Init()
  376. defer func() {
  377. this.Data["json"] = br
  378. this.ServeJSON()
  379. }()
  380. sysUser := this.SysUser
  381. if sysUser == nil {
  382. br.Msg = "请登录"
  383. br.ErrMsg = "请登录,SysUser Is Empty"
  384. br.Ret = 408
  385. return
  386. }
  387. var req material.MoveMaterialClassifyReq
  388. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  389. if err != nil {
  390. br.Msg = "参数解析异常!"
  391. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  392. return
  393. }
  394. if req.ClassifyId <= 0 {
  395. br.Msg = "参数错误"
  396. br.ErrMsg = "分类id小于等于0"
  397. return
  398. }
  399. //判断分类是否存在
  400. MaterialClassifyInfo, err := material.GetMaterialClassifyById(req.ClassifyId)
  401. if err != nil {
  402. br.Msg = "移动失败"
  403. br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  404. return
  405. }
  406. updateCol := make([]string, 0)
  407. // 判断移动的是分类还是素材库
  408. if req.MaterialId > 0 {
  409. //判断分类是否存在
  410. /*count, _ := material.GetMaterialClassifyCountById(req.ClassifyId)
  411. if count <= 0 {
  412. br.Msg = "分类已被删除,不可移动,请刷新页面"
  413. return
  414. }
  415. materialInfo, err := material.GetMaterialById(req.MaterialId)
  416. if err != nil {
  417. br.Msg = "移动失败"
  418. br.ErrMsg = "获取素材库信息失败,Err:" + err.Error()
  419. return
  420. }
  421. //如果改变了分类,那么移动该图表数据
  422. // 11/22 ETA逻辑优化去除名称重复限制
  423. if materialInfo.ClassifyId != req.ParentClassifyId {
  424. err = material.MoveSandbox(req.MaterialId, req.ParentClassifyId)
  425. if err != nil {
  426. br.Msg = "移动失败"
  427. br.ErrMsg = "移动失败,Err:" + err.Error()
  428. return
  429. }
  430. }
  431. //移动排序
  432. updateCol := make([]string, 0)
  433. //如果有传入 上一个兄弟节点分类id
  434. if req.PrevId > 0 {
  435. if req.PrevType == 1 {
  436. //上一个兄弟节点
  437. prevClassify, err := material.GetMaterialClassifyById(req.PrevId)
  438. if err != nil {
  439. br.Msg = "移动失败"
  440. br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
  441. return
  442. }
  443. //如果是移动在两个兄弟节点之间
  444. if req.NextId > 0 {
  445. if req.NextType == 1 {
  446. //上一个节点是分类 下一个节点是分类的情况
  447. //下一个兄弟节点
  448. nextClassify, err := material.GetMaterialClassifyById(req.NextId)
  449. if err != nil {
  450. br.Msg = "移动失败"
  451. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  452. return
  453. }
  454. //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
  455. if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == MaterialClassifyInfo.Sort {
  456. //变更兄弟节点的排序
  457. updateSortStr := `sort + 2`
  458. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr)
  459. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  460. } else {
  461. //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
  462. if nextClassify.Sort-prevClassify.Sort == 1 {
  463. //变更兄弟节点的排序
  464. updateSortStr := `sort + 1`
  465. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
  466. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  467. }
  468. }
  469. } else {
  470. //上一个节点是分类 下一个节点是素材库的情况
  471. //下一个兄弟节点
  472. nextChartInfo, err := material.GetMaterialById(req.NextId)
  473. if err != nil {
  474. br.Msg = "移动失败"
  475. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  476. return
  477. }
  478. //如果上一个兄弟(分类)与下一个兄弟(素材库)的排序权重是一致的,那么需要将下一个兄弟(素材库)(以及下个兄弟(素材库)的同样排序权重)的排序权重+2,自己变成上一个兄弟(分类)的排序权重+1
  479. if prevClassify.Sort == nextChartInfo.Sort || prevClassify.Sort == materialInfo.Sort {
  480. //变更兄弟节点的排序
  481. updateSortStr := `sort + 2`
  482. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr)
  483. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  484. } else {
  485. //如果下一个兄弟(素材库)的排序权重正好是上个兄弟节点(分类)的下一层,那么需要再加一层了
  486. if nextChartInfo.Sort-prevClassify.Sort == 1 {
  487. //变更兄弟节点的排序
  488. updateSortStr := `sort + 1`
  489. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.ClassifyId, updateSortStr)
  490. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  491. }
  492. }
  493. }
  494. }
  495. materialInfo.Sort = prevClassify.Sort + 1
  496. materialInfo.ModifyTime = time.Now()
  497. updateCol = append(updateCol, "Sort", "ModifyTime")
  498. } else {
  499. prevMaterial, err := material.GetMaterialById(req.PrevId)
  500. if err != nil {
  501. br.Msg = "移动失败"
  502. br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
  503. return
  504. }
  505. //如果是移动在两个兄弟节点之间
  506. if req.NextId > 0 {
  507. if req.NextType == 1 {
  508. //上一个节点是素材库 下一个节点是分类的情况
  509. //下一个兄弟节点
  510. nextClassify, err := material.GetMaterialClassifyById(req.NextId)
  511. if err != nil {
  512. br.Msg = "移动失败"
  513. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  514. return
  515. }
  516. //如果上一个兄弟(素材库)与下一个兄弟(分类)的排序权重是一致的,那么需要将下一个兄弟(分类)(以及下个兄弟(分类)的同样排序权重)的排序权重+2,自己变成上一个兄弟(素材库)的排序权重+1
  517. if prevMaterial.Sort == nextClassify.Sort || prevMaterial.Sort == MaterialClassifyInfo.Sort {
  518. //变更兄弟节点的排序
  519. updateSortStr := `sort + 2`
  520. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  521. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  522. } else {
  523. //如果下一个兄弟(分类)的排序权重正好是上个兄弟(素材库)节点的下一层,那么需要再加一层了
  524. if nextClassify.Sort-prevMaterial.Sort == 1 {
  525. //变更兄弟节点的排序
  526. updateSortStr := `sort + 1`
  527. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  528. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  529. }
  530. }
  531. } else {
  532. //上一个节点是素材库 下一个节点是素材库的情况
  533. //下一个兄弟节点
  534. nextChartInfo, err := material.GetMaterialById(req.NextId)
  535. if err != nil {
  536. br.Msg = "移动失败"
  537. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  538. return
  539. }
  540. //如果上一个兄弟(素材库)与下一个兄弟(分类)的排序权重是一致的,那么需要将下一个兄弟(分类)(以及下个兄弟(分类)的同样排序权重)的排序权重+2,自己变成上一个兄弟(素材库)的排序权重+1
  541. if prevMaterial.Sort == nextChartInfo.Sort || prevMaterial.Sort == materialInfo.Sort {
  542. //变更兄弟节点的排序
  543. updateSortStr := `sort + 2`
  544. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  545. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  546. } else {
  547. //如果下一个兄弟(分类)的排序权重正好是上个兄弟(素材库)节点的下一层,那么需要再加一层了
  548. if nextChartInfo.Sort-prevMaterial.Sort == 1 {
  549. //变更兄弟节点的排序
  550. updateSortStr := `sort + 1`
  551. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  552. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  553. }
  554. }
  555. }
  556. }
  557. materialInfo.Sort = prevMaterial.Sort + 1
  558. materialInfo.ModifyTime = time.Now()
  559. updateCol = append(updateCol, "Sort", "ModifyTime")
  560. }
  561. } else {
  562. // prevId为0,也就是素材库移到最前端
  563. firstClassify, err := material.GetFirstMaterialByClassifyId(req.ClassifyId)
  564. if err != nil && err.Error() != utils.ErrNoRow() {
  565. br.Msg = "移动失败"
  566. br.ErrMsg = "获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + err.Error()
  567. return
  568. }
  569. //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
  570. if firstClassify != nil && firstClassify.Sort == 0 {
  571. updateSortStr := ` sort + 1 `
  572. _ = material.UpdateMaterialSortByClassifyId(firstClassify.ClassifyId, 0, firstClassify.MaterialId-1, updateSortStr)
  573. }
  574. materialInfo.Sort = 0 //那就是排在第一位
  575. materialInfo.ModifyTime = time.Now()
  576. updateCol = append(updateCol, "Sort", "ModifyTime")
  577. }
  578. //更新
  579. if len(updateCol) > 0 {
  580. err = materialInfo.Update(updateCol)
  581. if err != nil {
  582. br.Msg = "移动失败"
  583. br.ErrMsg = "修改失败,Err:" + err.Error()
  584. return
  585. }
  586. }*/
  587. } else {
  588. //移动的是分类
  589. //判断上级id是否一致,如果不一致的话,那么需要移动该分类层级
  590. if MaterialClassifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId != 0 {
  591. parentChartClassifyInfo, err := material.GetMaterialClassifyById(req.ParentClassifyId)
  592. if err != nil {
  593. br.Msg = "移动失败"
  594. br.ErrMsg = "获取上级分类信息失败,Err:" + err.Error()
  595. return
  596. }
  597. MaterialClassifyInfo.ParentId = parentChartClassifyInfo.ClassifyId
  598. MaterialClassifyInfo.Level = parentChartClassifyInfo.Level + 1
  599. MaterialClassifyInfo.ModifyTime = time.Now()
  600. updateCol = append(updateCol, "ParentId", "Level", "ModifyTime")
  601. } else if MaterialClassifyInfo.ParentId != req.ParentClassifyId && req.ParentClassifyId == 0 {
  602. //改为一级分类
  603. MaterialClassifyInfo.ParentId = req.ParentClassifyId
  604. MaterialClassifyInfo.Level = 1
  605. MaterialClassifyInfo.ModifyTime = time.Now()
  606. updateCol = append(updateCol, "ParentId", "Level", "ModifyTime")
  607. }
  608. //如果有传入 上一个兄弟节点分类id
  609. if req.PrevId > 0 {
  610. if req.PrevType == 1 {
  611. //上一个节点是分类
  612. //上一个兄弟节点
  613. prevClassify, err := material.GetMaterialClassifyById(req.PrevId)
  614. if err != nil {
  615. br.Msg = "移动失败"
  616. br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
  617. return
  618. }
  619. //如果是移动在两个兄弟节点之间
  620. if req.NextId > 0 {
  621. if req.NextType == 1 {
  622. //上一个节点是分类 下一个节点是分类的情况
  623. //下一个兄弟节点
  624. nextClassify, err := material.GetMaterialClassifyById(req.NextId)
  625. if err != nil {
  626. br.Msg = "移动失败"
  627. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  628. return
  629. }
  630. //如果上一个兄弟与下一个兄弟的排序权重是一致的,那么需要将下一个兄弟(以及下个兄弟的同样排序权重)的排序权重+2,自己变成上一个兄弟的排序权重+1
  631. if prevClassify.Sort == nextClassify.Sort || prevClassify.Sort == MaterialClassifyInfo.Sort {
  632. //变更兄弟节点的排序
  633. updateSortStr := `sort + 2`
  634. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr)
  635. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  636. } else {
  637. //如果下一个兄弟的排序权重正好是上个兄弟节点的下一层,那么需要再加一层了
  638. if nextClassify.Sort-prevClassify.Sort == 1 {
  639. //变更兄弟节点的排序
  640. updateSortStr := `sort + 1`
  641. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.Sort, updateSortStr)
  642. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  643. }
  644. }
  645. } else {
  646. //上一个节点是分类 下一个节点是素材库的情况
  647. //下一个兄弟节点
  648. nextChartInfo, err := material.GetMaterialById(req.NextId)
  649. if err != nil {
  650. br.Msg = "移动失败"
  651. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  652. return
  653. }
  654. //如果上一个兄弟(分类)与下一个兄弟(素材库)的排序权重是一致的,那么需要将下一个兄弟(素材库)(以及下个兄弟(素材库)的同样排序权重)的排序权重+2,自己变成上一个兄弟(分类)的排序权重+1
  655. if prevClassify.Sort == nextChartInfo.Sort || prevClassify.Sort == MaterialClassifyInfo.Sort {
  656. //变更兄弟节点的排序
  657. updateSortStr := `sort + 2`
  658. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, prevClassify.ClassifyId, prevClassify.Sort, updateSortStr)
  659. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  660. } else {
  661. //如果下一个兄弟(素材库)的排序权重正好是上个兄弟节点(分类)的下一层,那么需要再加一层了
  662. if nextChartInfo.Sort-prevClassify.Sort == 1 {
  663. //变更兄弟节点的排序
  664. updateSortStr := `sort + 1`
  665. _ = material.UpdateMaterialClassifySortByParentId(prevClassify.ParentId, 0, prevClassify.ClassifyId, updateSortStr)
  666. _ = material.UpdateMaterialSortByClassifyId(prevClassify.ClassifyId, prevClassify.Sort, 0, updateSortStr)
  667. }
  668. }
  669. }
  670. }
  671. MaterialClassifyInfo.Sort = prevClassify.Sort + 1
  672. MaterialClassifyInfo.ModifyTime = time.Now()
  673. updateCol = append(updateCol, "Sort", "ModifyTime")
  674. } else {
  675. //上一个节点是素材库
  676. prevMaterial, err := material.GetMaterialById(req.PrevId)
  677. if err != nil {
  678. br.Msg = "移动失败"
  679. br.ErrMsg = "获取上一个兄弟节点分类信息失败,Err:" + err.Error()
  680. return
  681. }
  682. //如果是移动在两个兄弟节点之间
  683. if req.NextId > 0 {
  684. if req.NextType == 1 {
  685. //上一个节点是素材库 下一个节点是分类的情况
  686. //下一个兄弟节点
  687. nextClassify, err := material.GetMaterialClassifyById(req.NextId)
  688. if err != nil {
  689. br.Msg = "移动失败"
  690. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  691. return
  692. }
  693. //如果上一个兄弟(素材库)与下一个兄弟(分类)的排序权重是一致的,那么需要将下一个兄弟(分类)(以及下个兄弟(分类)的同样排序权重)的排序权重+2,自己变成上一个兄弟(素材库)的排序权重+1
  694. if prevMaterial.Sort == nextClassify.Sort || prevMaterial.Sort == MaterialClassifyInfo.Sort {
  695. //变更兄弟节点的排序
  696. updateSortStr := `sort + 2`
  697. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  698. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  699. } else {
  700. //如果下一个兄弟(分类)的排序权重正好是上个兄弟(素材库)节点的下一层,那么需要再加一层了
  701. if nextClassify.Sort-prevMaterial.Sort == 1 {
  702. //变更兄弟节点的排序
  703. updateSortStr := `sort + 1`
  704. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  705. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  706. }
  707. }
  708. } else {
  709. //上一个节点是素材库 下一个节点是素材库的情况
  710. //下一个兄弟节点
  711. nextChartInfo, err := material.GetMaterialById(req.NextId)
  712. if err != nil {
  713. br.Msg = "移动失败"
  714. br.ErrMsg = "获取下一个兄弟节点分类信息失败,Err:" + err.Error()
  715. return
  716. }
  717. //如果上一个兄弟(素材库)与下一个兄弟(分类)的排序权重是一致的,那么需要将下一个兄弟(分类)(以及下个兄弟(分类)的同样排序权重)的排序权重+2,自己变成上一个兄弟(素材库)的排序权重+1
  718. if prevMaterial.Sort == nextChartInfo.Sort || prevMaterial.Sort == MaterialClassifyInfo.Sort {
  719. //变更兄弟节点的排序
  720. updateSortStr := `sort + 2`
  721. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  722. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  723. } else {
  724. //如果下一个兄弟(分类)的排序权重正好是上个兄弟(素材库)节点的下一层,那么需要再加一层了
  725. if nextChartInfo.Sort-prevMaterial.Sort == 1 {
  726. //变更兄弟节点的排序
  727. updateSortStr := `sort + 1`
  728. _ = material.UpdateMaterialClassifySortByParentId(prevMaterial.ClassifyId, 0, prevMaterial.Sort, updateSortStr)
  729. _ = material.UpdateMaterialSortByClassifyId(prevMaterial.ClassifyId, prevMaterial.Sort, prevMaterial.MaterialId, updateSortStr)
  730. }
  731. }
  732. }
  733. }
  734. MaterialClassifyInfo.Sort = prevMaterial.Sort + 1
  735. MaterialClassifyInfo.ModifyTime = time.Now()
  736. updateCol = append(updateCol, "Sort", "ModifyTime")
  737. }
  738. } else {
  739. firstClassify, err := material.GetFirstMaterialClassifyByParentId(MaterialClassifyInfo.ParentId)
  740. if err != nil && err.Error() != utils.ErrNoRow() {
  741. br.Msg = "移动失败"
  742. br.ErrMsg = "获取获取当前父级分类下的排序第一条的分类信息失败,Err:" + err.Error()
  743. return
  744. }
  745. //如果该分类下存在其他分类,且第一个其他分类的排序等于0,那么需要调整排序
  746. if firstClassify != nil && firstClassify.Sort == 0 {
  747. updateSortStr := ` sort + 1 `
  748. _ = material.UpdateMaterialClassifySortByParentId(firstClassify.ParentId, firstClassify.ClassifyId-1, 0, updateSortStr)
  749. }
  750. MaterialClassifyInfo.Sort = 0 //那就是排在第一位
  751. MaterialClassifyInfo.ModifyTime = time.Now()
  752. updateCol = append(updateCol, "Sort", "ModifyTime")
  753. }
  754. //更新
  755. if len(updateCol) > 0 {
  756. err = MaterialClassifyInfo.Update(updateCol)
  757. if err != nil {
  758. br.Msg = "移动失败"
  759. br.ErrMsg = "修改失败,Err:" + err.Error()
  760. return
  761. }
  762. // todo 记录整个层级的分类ID
  763. }
  764. }
  765. br.Ret = 200
  766. br.Success = true
  767. br.Msg = "移动成功"
  768. }
  769. // @Title ETA图表列表接口
  770. // @Description ETA图表列表接口
  771. // @Param PageSize query int true "每页数据条数"
  772. // @Param CurrentIndex query int true "当前页页码,从1开始"
  773. // @Param ChartClassifyId query int true "分类id"
  774. // @Param KeyWord query string true "搜索关键词"
  775. // @Param IsShowMe query bool true "是否只看我的,true、false"
  776. // @Success 200 {object} data_manage.ChartListResp
  777. // @router /list [get]
  778. func (this *MaterialController) List() {
  779. br := new(models.BaseResponse).Init()
  780. defer func() {
  781. this.Data["json"] = br
  782. this.ServeJSON()
  783. }()
  784. sysUser := this.SysUser
  785. if sysUser == nil {
  786. br.Msg = "请登录"
  787. br.ErrMsg = "请登录,SysUser Is Empty"
  788. br.Ret = 408
  789. return
  790. }
  791. MaterialClassifyId, _ := this.GetInt("MaterialClassifyId")
  792. pageSize, _ := this.GetInt("PageSize")
  793. currentIndex, _ := this.GetInt("CurrentIndex")
  794. keyWord := this.GetString("KeyWord")
  795. var total int
  796. page := paging.GetPaging(currentIndex, pageSize, total)
  797. var startSize int
  798. if pageSize <= 0 {
  799. pageSize = utils.PageSize20
  800. }
  801. if currentIndex <= 0 {
  802. currentIndex = 1
  803. }
  804. startSize = paging.StartIndex(currentIndex, pageSize)
  805. var condition string
  806. var pars []interface{}
  807. if MaterialClassifyId > 0 {
  808. MaterialClassifyId, err := material.GetMaterialClassify(MaterialClassifyId)
  809. if err != nil && err.Error() != utils.ErrNoRow() {
  810. br.Msg = "获取图表信息失败"
  811. br.ErrMsg = "获取信息失败,GetChartClassify,Err:" + err.Error()
  812. return
  813. }
  814. condition += " AND sandbox_classify_id IN(" + MaterialClassifyId + ") "
  815. //pars = append(pars, chartClassifyId)
  816. }
  817. if keyWord != "" {
  818. condition += ` AND ( name LIKE '%` + keyWord + `%' )`
  819. }
  820. //只看我的
  821. isShowMe, _ := this.GetBool("IsShowMe")
  822. if isShowMe {
  823. condition += ` AND sys_user_id = ? `
  824. pars = append(pars, sysUser.AdminId)
  825. }
  826. //获取图表信息
  827. condition += ` AND is_delete = 0 `
  828. list, err := material.GetMaterialListByCondition(condition, pars, startSize, pageSize)
  829. if err != nil && err.Error() != utils.ErrNoRow() {
  830. br.Success = true
  831. br.Msg = "获取素材库信息失败"
  832. br.ErrMsg = "获取素材库信息失败,Err:" + err.Error()
  833. return
  834. }
  835. for i, v := range list {
  836. ids, err := material.GetMaterialAllParentByClassifyId(v.ClassifyId)
  837. if err != nil {
  838. br.Msg = "获取父级信息错误!"
  839. br.ErrMsg = "获取父级信息错误,Err:" + err.Error()
  840. return
  841. }
  842. list[i].ParentIds = ids
  843. }
  844. resp := new(material.MaterialListResp)
  845. if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
  846. items := make([]*material.MaterialListItems, 0)
  847. resp.Paging = page
  848. resp.List = items
  849. br.Ret = 200
  850. br.Success = true
  851. br.Msg = "获取成功"
  852. return
  853. }
  854. dataCount, err := material.GetMaterialListCountByCondition(condition, pars)
  855. if err != nil && err.Error() != utils.ErrNoRow() {
  856. br.Msg = "获取指标信息失败"
  857. br.ErrMsg = "获取指标数据总数失败,Err:" + err.Error()
  858. return
  859. }
  860. page = paging.GetPaging(currentIndex, pageSize, dataCount)
  861. resp.Paging = page
  862. resp.List = list
  863. br.Ret = 200
  864. br.Success = true
  865. br.Msg = "获取成功"
  866. br.Data = resp
  867. }
  868. // Save
  869. // @Title 新增/编辑保存素材库
  870. // @Description 新增/编辑保存素材库接口
  871. // @Param request body material.AddAndEditSandbox true "type json string"
  872. // @Success 200 {object} material.Material
  873. // @router /save [post]
  874. func (this *MaterialController) Save() {
  875. br := new(models.BaseResponse).Init()
  876. defer func() {
  877. this.Data["json"] = br
  878. this.ServeJSON()
  879. }()
  880. sysUser := this.SysUser
  881. if sysUser == nil {
  882. br.Msg = "请登录"
  883. br.ErrMsg = "请登录,SysUser Is Empty"
  884. br.Ret = 408
  885. return
  886. }
  887. var req material.AddAndEditMaterial
  888. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  889. if err != nil {
  890. br.Msg = "参数解析异常!"
  891. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  892. return
  893. }
  894. var materialResp *material.MaterialSaveResp
  895. var errMsg string
  896. if req.MaterialId <= 0 {
  897. //新增素材库
  898. materialResp, err = materialService.AddMaterial(req, sysUser.AdminId, sysUser.RealName)
  899. if err != nil {
  900. br.Msg = "保存失败!"
  901. if errMsg != `` {
  902. br.Msg = errMsg
  903. }
  904. br.ErrMsg = "保存失败,Err:" + err.Error()
  905. return
  906. }
  907. } else {
  908. //编辑素材库
  909. materialInfo := &material.Material{
  910. MaterialId: req.MaterialId,
  911. MaterialName: utils.TrimStr(req.MaterialName),
  912. ImgUrl: utils.TrimStr(req.ImgUrl),
  913. ModifyTime: time.Now(),
  914. ClassifyId: req.ClassifyId,
  915. }
  916. //缩略图为空时不更新
  917. var updateSandboxColumn = []string{}
  918. if req.ImgUrl == "" {
  919. updateSandboxColumn = []string{"Name", "Content", "MindmapData", "ModifyTime", "MaterialClassifyId", "Style"}
  920. } else {
  921. updateSandboxColumn = []string{"Name", "Content", "MindmapData", "ImgUrl", "ModifyTime", "MaterialClassifyId", "Style"}
  922. }
  923. err = materialInfo.Update(updateSandboxColumn)
  924. if err != nil {
  925. br.Msg = "保存失败!"
  926. if errMsg != `` {
  927. br.Msg = errMsg
  928. }
  929. br.ErrMsg = "保存失败,Err:" + err.Error()
  930. return
  931. }
  932. }
  933. msg := "保存成功"
  934. br.Ret = 200
  935. br.Success = true
  936. br.Msg = msg
  937. br.Data = materialResp
  938. }
  939. // Delete
  940. // @Title 删除素材库
  941. // @Description 删除素材库接口
  942. // @Param request body material.DeleteSandbox true "type json string"
  943. // @Success 200 标记成功
  944. // @router /delete [post]
  945. func (this *MaterialController) Delete() {
  946. br := new(models.BaseResponse).Init()
  947. defer func() {
  948. this.Data["json"] = br
  949. this.ServeJSON()
  950. }()
  951. sysUser := this.SysUser
  952. if sysUser == nil {
  953. br.Msg = "请登录"
  954. br.ErrMsg = "请登录,SysUser Is Empty"
  955. br.Ret = 408
  956. return
  957. }
  958. var req material.DeleteMaterial
  959. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  960. if err != nil {
  961. br.Msg = "参数解析异常!"
  962. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  963. return
  964. }
  965. if req.MaterialId <= 0 {
  966. br.Msg = "缺少素材库编号"
  967. return
  968. }
  969. //删除素材库
  970. err = materialService.DeleteMaterial(req.MaterialId)
  971. if err != nil {
  972. br.Msg = err.Error()
  973. return
  974. }
  975. msg := "删除成功"
  976. br.Ret = 200
  977. br.Success = true
  978. br.Msg = msg
  979. }
  980. // GetMaterialVersionDetail
  981. // @Title 获取素材库版本数据详情(已保存的)
  982. // @Description 获取素材库版本数据详情接口(已保存的)
  983. // @Param SandboxVersionCode query string true "素材库版本code"
  984. // @Success 200 {object} material.MaterialVersion
  985. // @router /detail [get]
  986. func (this *MaterialController) GetMaterialDetail() {
  987. br := new(models.BaseResponse).Init()
  988. defer func() {
  989. this.Data["json"] = br
  990. this.ServeJSON()
  991. }()
  992. sysUser := this.SysUser
  993. if sysUser == nil {
  994. br.Msg = "请登录"
  995. br.ErrMsg = "请登录,SysUser Is Empty"
  996. br.Ret = 408
  997. return
  998. }
  999. sandboxId, _ := this.GetInt("SandboxId")
  1000. if sandboxId == 0 {
  1001. br.Msg = "缺少素材库Id"
  1002. return
  1003. }
  1004. //获取素材库数据详情(已保存的)
  1005. materialInfo, err := material.GetMaterialById(sandboxId)
  1006. if err != nil {
  1007. br.Msg = "获取失败"
  1008. br.ErrMsg = "获取失败,Err:" + err.Error()
  1009. return
  1010. }
  1011. msg := "获取成功"
  1012. br.Ret = 200
  1013. br.Success = true
  1014. br.Msg = msg
  1015. br.Data = materialInfo
  1016. }
  1017. // MaterialClassifyItems
  1018. // @Title 获取所有素材库分类接口-不包含素材库
  1019. // @Description 获取所有素材库分类接口-不包含素材库
  1020. // @Param IsShowMe query bool true "是否只看我的,true、false"
  1021. // @Success 200 {object} data_manage.ChartClassifyListResp
  1022. // @router /classifyList [get]
  1023. func (this *MaterialController) MaterialClassifyList() {
  1024. br := new(models.BaseResponse).Init()
  1025. defer func() {
  1026. this.Data["json"] = br
  1027. this.ServeJSON()
  1028. }()
  1029. resp := new(material.MaterialClassifyListResp)
  1030. rootList, err := material.GetMaterialClassifyByParentId(0)
  1031. if err != nil && err.Error() != utils.ErrNoRow() {
  1032. br.Msg = "获取失败"
  1033. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1034. return
  1035. }
  1036. classifyAll, err := material.GetMaterialClassifyAll()
  1037. if err != nil && err.Error() != utils.ErrNoRow() {
  1038. br.Msg = "获取失败"
  1039. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  1040. return
  1041. }
  1042. nodeAll := make([]*material.MaterialClassifyItems, 0)
  1043. for k := range rootList {
  1044. rootNode := rootList[k]
  1045. materialService.MaterialClassifyItemsMakeTree(this.SysUser, classifyAll, rootNode)
  1046. nodeAll = append(nodeAll, rootNode)
  1047. }
  1048. resp.AllNodes = nodeAll
  1049. br.Ret = 200
  1050. br.Success = true
  1051. br.Msg = "获取成功"
  1052. br.Data = resp
  1053. }