tree_api.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  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. // @Summary 获得目录和数据
  23. // @Tags 目录相关-管理员
  24. // @Description 获得目录和数据
  25. // @Accept json
  26. // @Produce json
  27. // @Security ApiKeyAuth
  28. // @Success 200 {string} string "{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
  29. // @Router /api/tree [get]
  30. func (c *TreeApi) Get() {
  31. // 获得项目ID
  32. projectIdInt, err := utils.GetProjectId(c.Ctx)
  33. if err != nil {
  34. c.Ctx.JSON(iris.Map{
  35. "code": -1,
  36. "msg": err,
  37. })
  38. return
  39. }
  40. // 获得层级文件夹
  41. FolderData := c.ServiceTree.GetAllProject(projectIdInt)
  42. c.Ctx.JSON(iris.Map{
  43. "code": 0,
  44. "msg": "",
  45. "data": FolderData,
  46. })
  47. }
  48. // 添加树结构
  49. func (c *TreeApi) PostCreate() {
  50. ErrMsg := ""
  51. // 验证内容
  52. FolderData, err := c.ServiceTree.ValidRule(c.Ctx)
  53. if err != nil {
  54. ErrMsg = utils.FormValidError(err)
  55. c.Ctx.JSON(iris.Map{
  56. "code": -1,
  57. "msg": ErrMsg,
  58. })
  59. return
  60. } else {
  61. // 获得项目ID
  62. projectIdInt, err := utils.GetProjectId(c.Ctx)
  63. if err != nil {
  64. c.Ctx.JSON(iris.Map{
  65. "code": -1,
  66. "msg": fmt.Sprintf("%s", err),
  67. })
  68. return
  69. }
  70. FolderData.ProjectId = strconv.Itoa(projectIdInt)
  71. // 新增文件夹
  72. err = c.ServiceTree.Create(FolderData)
  73. if err != nil {
  74. c.Ctx.JSON(iris.Map{
  75. "code": 3,
  76. "msg": fmt.Sprintf("%s", err),
  77. })
  78. return
  79. }
  80. c.Ctx.JSON(iris.Map{
  81. "code": 0,
  82. "msg": "新增成功",
  83. })
  84. }
  85. }
  86. // @Summary 重命名
  87. // @Tags 目录相关-管理员
  88. // @Description 重命名-文件夹或者标段
  89. // @Accept json
  90. // @Produce json
  91. // @Security ApiKeyAuth
  92. // @Param id body string true "treeId"
  93. // @Param name body string true "重命名的名称"
  94. // @Success 200 {string} string "{code:0成功,-1参数类错误,-2服务端内部错误,msg:错误信息}"
  95. // @Router /api/tree/rename [post]
  96. func (c *TreeApi) PostRename() {
  97. ErrMsg := ""
  98. // 验证内容
  99. FolderData, err := c.ServiceTree.ValidRule(c.Ctx)
  100. if err != nil {
  101. ErrMsg = utils.FormValidError(err)
  102. c.Ctx.JSON(iris.Map{
  103. "code": -1,
  104. "msg": ErrMsg,
  105. })
  106. return
  107. } else {
  108. // 重命名
  109. err = c.ServiceTree.Rename(FolderData)
  110. if err != nil {
  111. c.Ctx.JSON(iris.Map{
  112. "code": 3,
  113. "msg": fmt.Sprintf("%s", err),
  114. })
  115. return
  116. }
  117. c.Ctx.JSON(iris.Map{
  118. "code": 0,
  119. "msg": "重命名成功",
  120. })
  121. }
  122. }
  123. // 删除目录,需要删除树结构下的目录以及叶子
  124. func (c *TreeApi) Delete() {
  125. // 获得需要删除数据
  126. // api/tree/{id:int min(1)}
  127. //id := c.Ctx.Params().Get("id")
  128. id := c.Ctx.URLParam("id")
  129. // 获得该目录下所有的目录和标段
  130. // treeData, err := c.ServiceTree.GetFolderAndBid(id)
  131. // if err != nil {
  132. // c.Ctx.JSON(iris.Map{
  133. // "code": -1,
  134. // "msg": fmt.Sprintf("%s", err),
  135. // })
  136. // return
  137. // }
  138. // fmt.Println(treeData)
  139. // 添加锁
  140. // 删除目录以及标段
  141. err := c.ServiceTree.DeleteFolderAndBid(id)
  142. if err != nil {
  143. c.Ctx.JSON(iris.Map{
  144. "code": -1,
  145. "msg": fmt.Sprintf("%s", err),
  146. })
  147. return
  148. }
  149. c.Ctx.JSON(iris.Map{
  150. "code": 0,
  151. "msg": "删除成功",
  152. })
  153. }
  154. // 移动文件夹
  155. func (c *TreeApi) PostMove() {
  156. // 获得目录ID和移动目录ID
  157. Tree := viewmodels.Tree{}
  158. err := c.Ctx.ReadJSON(&Tree)
  159. if err != nil {
  160. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  161. return
  162. }
  163. id, err := utils.GetDecryptId(Tree.Id)
  164. if err != nil {
  165. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  166. return
  167. }
  168. moveId, err := utils.GetDecryptId(Tree.MoveId)
  169. if err != nil {
  170. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  171. return
  172. }
  173. // 移动目录
  174. err = c.ServiceTree.Move(id, moveId)
  175. if err != nil {
  176. c.Ctx.JSON(iris.Map{
  177. "code": -1,
  178. "msg": fmt.Sprintf("%s", err),
  179. })
  180. return
  181. }
  182. c.Ctx.JSON(iris.Map{
  183. "code": 0,
  184. "msg": "移动成功",
  185. })
  186. }