tree_api.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. /*
  2. * @description:
  3. * @Author: CP
  4. * @Date: 2020-09-17 17:50:50
  5. * @FilePath: \construction_management\web\api\tree_api.go
  6. */
  7. package api
  8. import (
  9. "fmt"
  10. "strconv"
  11. "github.com/kataras/iris/v12"
  12. "go.mod/services"
  13. "go.mod/web/utils"
  14. "go.mod/web/viewmodels"
  15. )
  16. type TreeApi struct {
  17. //框架-web应用上下文环境
  18. Ctx iris.Context
  19. // 需要用的service
  20. ServiceTree services.TreeService
  21. }
  22. // 获得项目目录结构
  23. func (c *TreeApi) Get() {
  24. // 获得项目ID
  25. projectIdInt, err := utils.GetProjectId(c.Ctx)
  26. if err != nil {
  27. c.Ctx.JSON(iris.Map{
  28. "code": -1,
  29. "msg": err,
  30. })
  31. return
  32. }
  33. // 获得层级文件夹
  34. FolderData := c.ServiceTree.GetAllProject(projectIdInt)
  35. c.Ctx.JSON(iris.Map{
  36. "code": 0,
  37. "msg": "",
  38. "data": FolderData,
  39. })
  40. }
  41. // 添加树结构
  42. func (c *TreeApi) PostCreate() {
  43. ErrMsg := ""
  44. // 验证内容
  45. FolderData, err := c.ServiceTree.ValidRule(c.Ctx)
  46. if err != nil {
  47. ErrMsg = utils.FormValidError(err)
  48. c.Ctx.JSON(iris.Map{
  49. "code": -1,
  50. "msg": ErrMsg,
  51. })
  52. return
  53. } else {
  54. // 获得项目ID
  55. projectIdInt, err := utils.GetProjectId(c.Ctx)
  56. if err != nil {
  57. c.Ctx.JSON(iris.Map{
  58. "code": -1,
  59. "msg": fmt.Sprintf("%s", err),
  60. })
  61. return
  62. }
  63. FolderData.ProjectId = strconv.Itoa(projectIdInt)
  64. // 新增文件夹
  65. err = c.ServiceTree.Create(FolderData)
  66. if err != nil {
  67. c.Ctx.JSON(iris.Map{
  68. "code": 3,
  69. "msg": fmt.Sprintf("%s", err),
  70. })
  71. return
  72. }
  73. c.Ctx.JSON(iris.Map{
  74. "code": 0,
  75. "msg": "新增成功",
  76. })
  77. }
  78. }
  79. // 文件夹重命名
  80. func (c *TreeApi) PostRename() {
  81. ErrMsg := ""
  82. // 验证内容
  83. FolderData, err := c.ServiceTree.ValidRule(c.Ctx)
  84. if err != nil {
  85. ErrMsg = utils.FormValidError(err)
  86. c.Ctx.JSON(iris.Map{
  87. "code": -1,
  88. "msg": ErrMsg,
  89. })
  90. return
  91. } else {
  92. // 重命名
  93. err = c.ServiceTree.Rename(FolderData)
  94. if err != nil {
  95. c.Ctx.JSON(iris.Map{
  96. "code": 3,
  97. "msg": fmt.Sprintf("%s", err),
  98. })
  99. return
  100. }
  101. c.Ctx.JSON(iris.Map{
  102. "code": 0,
  103. "msg": "重命名成功",
  104. })
  105. }
  106. }
  107. // 删除目录,需要删除树结构下的目录以及叶子
  108. func (c *TreeApi) Delete() {
  109. // 获得需要删除数据
  110. // api/tree/{id:int min(1)}
  111. //id := c.Ctx.Params().Get("id")
  112. id := c.Ctx.URLParam("id")
  113. // 获得该目录下所有的目录和标段
  114. // treeData, err := c.ServiceTree.GetFolderAndBid(id)
  115. // if err != nil {
  116. // c.Ctx.JSON(iris.Map{
  117. // "code": -1,
  118. // "msg": fmt.Sprintf("%s", err),
  119. // })
  120. // return
  121. // }
  122. // fmt.Println(treeData)
  123. // 添加锁
  124. // 删除目录以及标段
  125. err := c.ServiceTree.DeleteFolderAndBid(id)
  126. if err != nil {
  127. c.Ctx.JSON(iris.Map{
  128. "code": -1,
  129. "msg": fmt.Sprintf("%s", err),
  130. })
  131. return
  132. }
  133. c.Ctx.JSON(iris.Map{
  134. "code": 0,
  135. "msg": "删除成功",
  136. })
  137. }
  138. // 移动文件夹
  139. func (c *TreeApi) PostMove() {
  140. // 获得目录ID和移动目录ID
  141. ProjectAccountVM := viewmodels.ProjectAccount{}
  142. err := c.Ctx.ReadJSON(&ProjectAccountVM)
  143. if err != nil {
  144. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  145. return
  146. }
  147. id, err := utils.GetDecryptId(ProjectAccountVM.Id)
  148. if err != nil {
  149. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  150. return
  151. }
  152. moveId, err := utils.GetDecryptId(ProjectAccountVM.MoveId)
  153. if err != nil {
  154. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  155. return
  156. }
  157. // 移动目录
  158. err = c.ServiceTree.Move(id, moveId)
  159. if err != nil {
  160. c.Ctx.JSON(iris.Map{
  161. "code": -1,
  162. "msg": fmt.Sprintf("%s", err),
  163. })
  164. return
  165. }
  166. c.Ctx.JSON(iris.Map{
  167. "code": 0,
  168. "msg": "移动成功",
  169. })
  170. }