sys_org.go 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. package apis
  2. import (
  3. "IotAdmin/app/system/models"
  4. "IotAdmin/common/permission"
  5. "IotAdmin/core/sdk/api"
  6. "IotAdmin/core/sdk/pkg"
  7. "IotAdmin/core/sdk/pkg/jwt-auth/user"
  8. _ "IotAdmin/core/sdk/pkg/response"
  9. "github.com/gin-gonic/gin"
  10. "github.com/gin-gonic/gin/binding"
  11. "IotAdmin/app/system/service"
  12. "IotAdmin/app/system/service/dto"
  13. )
  14. type SysOrgApi struct {
  15. api.Api
  16. }
  17. // GetPage
  18. // @Summary 分页部门列表数据
  19. // @Description 分页列表
  20. // @Tags 部门
  21. // @Param orgName query string false "orgName"
  22. // @Param orgId query string false "orgId"
  23. // @Param position query string false "position"
  24. // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
  25. // @Router /api/sys-org [get]
  26. // @Security Bearer
  27. func (e SysOrgApi) GetPage(c *gin.Context) {
  28. s := service.SysOrgService{}
  29. req := dto.SysOrgGetPageReq{}
  30. err := e.MakeContext(c).
  31. MakeOrm().
  32. Bind(&req).
  33. MakeService(&s.Service).
  34. Errors
  35. if err != nil {
  36. e.Logger.Error(err)
  37. e.Error(500, err, err.Error())
  38. return
  39. }
  40. p := permission.GetPermissionFromContext(c)
  41. if user.GetRoleKey(c) == "admin" {
  42. req.OrgId = 0
  43. } else {
  44. p.DataScope = permission.DataPermissionSelfOrgChildren
  45. p.OrgId = req.OrgId
  46. }
  47. list := make([]models.SysOrg, 0)
  48. list, err = s.GetOrgPage(&req, p)
  49. if err != nil {
  50. e.Error(500, err, "查询失败")
  51. return
  52. }
  53. e.OK(list, "查询成功")
  54. }
  55. // Get
  56. // @Summary 获取部门数据
  57. // @Description 获取JSON
  58. // @Tags 部门
  59. // @Param orgId path string false "orgId"
  60. // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
  61. // @Router /api/sys-org/{id} [get]
  62. // @Security Bearer
  63. func (e SysOrgApi) Get(c *gin.Context) {
  64. s := service.SysOrgService{}
  65. req := dto.SysOrgGetReq{}
  66. err := e.MakeContext(c).
  67. MakeOrm().
  68. Bind(&req, binding.JSON, nil).
  69. MakeService(&s.Service).
  70. Errors
  71. if err != nil {
  72. e.Logger.Error(err)
  73. e.Error(500, err, err.Error())
  74. return
  75. }
  76. var object models.SysOrg
  77. err = s.Get(&req, &object)
  78. if err != nil {
  79. e.Error(500, err, "查询失败")
  80. return
  81. }
  82. e.OK(object, "查询成功")
  83. }
  84. // Insert 添加部门
  85. // @Summary 添加部门
  86. // @Description 获取JSON
  87. // @Tags 部门
  88. // @Accept application/json
  89. // @Product application/json
  90. // @Param data body dto.SysOrgInsertReq true "data"
  91. // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
  92. // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
  93. // @Router /api/sys-org [post]
  94. // @Security Bearer
  95. func (e SysOrgApi) Insert(c *gin.Context) {
  96. s := service.SysOrgService{}
  97. req := dto.SysOrgInsertReq{}
  98. err := e.MakeContext(c).
  99. MakeOrm().
  100. Bind(&req, binding.JSON).
  101. MakeService(&s.Service).
  102. Errors
  103. if err != nil {
  104. e.Logger.Error(err)
  105. e.Error(500, err, err.Error())
  106. return
  107. }
  108. // 设置创建人
  109. req.SetCreateBy(user.GetUserId(c))
  110. err = s.Insert(&req)
  111. if err != nil {
  112. e.Error(500, err, "创建失败")
  113. return
  114. }
  115. e.OK(req.GetId(), "创建成功")
  116. }
  117. // Update
  118. // @Summary 修改部门
  119. // @Description 获取JSON
  120. // @Tags 部门
  121. // @Accept application/json
  122. // @Product application/json
  123. // @Param id path int true "id"
  124. // @Param data body dto.SysOrgUpdateReq true "body"
  125. // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
  126. // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
  127. // @Router /api/sys-org/{id} [put]
  128. // @Security Bearer
  129. func (e SysOrgApi) Update(c *gin.Context) {
  130. s := service.SysOrgService{}
  131. req := dto.SysOrgUpdateReq{}
  132. err := e.MakeContext(c).
  133. MakeOrm().
  134. Bind(&req).
  135. MakeService(&s.Service).
  136. Errors
  137. if err != nil {
  138. e.Logger.Error(err)
  139. e.Error(500, err, err.Error())
  140. return
  141. }
  142. req.SetUpdateBy(user.GetUserId(c))
  143. err = s.Update(&req)
  144. if err != nil {
  145. e.Error(500, err, err.Error())
  146. return
  147. }
  148. e.OK(req.GetId(), "更新成功")
  149. }
  150. // Delete
  151. // @Summary 删除部门
  152. // @Description 删除数据
  153. // @Tags 部门
  154. // @Param data body dto.SysOrgDeleteReq true "body"
  155. // @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
  156. // @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
  157. // @Router /api/sys-org [delete]
  158. // @Security Bearer
  159. func (e SysOrgApi) Delete(c *gin.Context) {
  160. s := service.SysOrgService{}
  161. req := dto.SysOrgDeleteReq{}
  162. err := e.MakeContext(c).
  163. MakeOrm().
  164. Bind(&req, binding.JSON, nil).
  165. MakeService(&s.Service).
  166. Errors
  167. if err != nil {
  168. e.Logger.Error(err)
  169. e.Error(500, err, err.Error())
  170. return
  171. }
  172. err = s.Remove(&req)
  173. if err != nil {
  174. e.Error(500, err, "删除失败")
  175. return
  176. }
  177. e.OK(req.GetId(), "删除成功")
  178. }
  179. // Get2Tree 部门树
  180. // @Summary 部门树
  181. // @Description 左侧部门树
  182. // @Tags 系統接口/部门
  183. // @Param data body dto.SysOrgDeleteReq true "body"
  184. // @Success 200 {string} string "{"code": 200, "data": []}"
  185. // @Router /api/sys/org-tree/{id} [get]
  186. // @Security Bearer
  187. func (e SysOrgApi) Get2Tree(c *gin.Context) {
  188. s := service.SysOrgService{}
  189. req := dto.SysOrgGetReq{}
  190. err := e.MakeContext(c).MakeOrm().Bind(&req).MakeService(&s.Service).Errors
  191. if err != nil {
  192. e.Logger.Error(err)
  193. e.Error(500, err, err.Error())
  194. return
  195. }
  196. var p *permission.DataPermission
  197. p = permission.GetPermissionFromContext(c)
  198. if user.GetRoleKey(c) == "admin" {
  199. req.Id = 0
  200. } else {
  201. p.DataScope = permission.DataPermissionSelfOrgChildren
  202. p.OrgId = req.Id
  203. }
  204. list := make([]dto.OrgLabel, 0)
  205. list, err = s.GetOrgTree(&req, p)
  206. if err != nil {
  207. e.Error(500, err, "查询失败")
  208. return
  209. }
  210. e.OK(list, "")
  211. }
  212. // GetOrgTreeRoleSelect 根据角色查询部门树 TODO: 此接口需要调整不应该将list和选中放在一起
  213. // @Summary 部门下拉树
  214. // @Description 根据角色查询部门树
  215. // @Tags 系統接口/部门
  216. // @Param data body dto.SysOrgDeleteReq true "body"
  217. // @Success 200 {string} string "{"code": 200, "data": []}"
  218. // @Router /api/sys/role-org-tree-select/{roleId} [get]
  219. // @Security Bearer
  220. func (e SysOrgApi) GetOrgTreeRoleSelect(c *gin.Context) {
  221. s := service.SysOrgService{}
  222. err := e.MakeContext(c).
  223. MakeOrm().
  224. MakeService(&s.Service).
  225. Errors
  226. if err != nil {
  227. e.Logger.Error(err)
  228. e.Error(500, err, err.Error())
  229. return
  230. }
  231. //数据权限检查
  232. p := permission.GetPermissionFromContext(c)
  233. id, err := pkg.StringToInt(c.Param("roleId"))
  234. result, err := s.SetOrgLabel(p)
  235. if err != nil {
  236. e.Error(500, err, err.Error())
  237. return
  238. }
  239. menuIds := make([]int, 0)
  240. if id != 0 {
  241. menuIds, err = s.GetWithRoleId(id)
  242. if err != nil {
  243. e.Error(500, err, err.Error())
  244. return
  245. }
  246. }
  247. e.OK(gin.H{
  248. "orgs": result,
  249. "checkedKeys": menuIds,
  250. }, "")
  251. }