material.go 38 KB

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