menu.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. package v1
  2. import (
  3. "dy-admin/internal/pcmserver/common"
  4. "dy-admin/internal/pcmserver/global"
  5. "dy-admin/internal/pcmserver/pkg/code"
  6. "dy-admin/internal/pcmserver/sys/model"
  7. "dy-admin/internal/pcmserver/sys/model/response"
  8. "dy-admin/internal/pcmserver/utils"
  9. "dy-admin/pkg/bind"
  10. "dy-admin/pkg/rescode"
  11. "github.com/gin-gonic/gin"
  12. "github.com/gin-gonic/gin/binding"
  13. )
  14. type MenuApi struct {
  15. }
  16. // CreateMenu
  17. // @Tags 系统菜单管理
  18. // @Summary 创建菜单
  19. // @Security ApiKeyAuth
  20. // @accept application/json
  21. // @Produce application/json
  22. // @Param data body model.Menu true "参数"
  23. // @Success 200 {object} rescode.ErrCode
  24. // @Router /sys/v1/menu [post]
  25. func (s *MenuApi) CreateMenu(c *gin.Context) {
  26. var menu model.Menu
  27. if err := bind.Bind(c, &menu, binding.JSON); err != nil {
  28. rescode.WriteErrResponse(c, err)
  29. return
  30. }
  31. err := utils.Verify(menu, utils.MenuVerify)
  32. if err != nil {
  33. err = rescode.RegisterErrorWithMessage(err, err.Error(), code.ErrCodeMap[code.ErrValidationCode])
  34. rescode.WriteErrResponse(c, err)
  35. return
  36. }
  37. menu.CreateBy = global.JWT.GetUserID(c)
  38. err = menuService.AddMenu(menu)
  39. if err != nil {
  40. rescode.WriteErrResponse(c, err)
  41. return
  42. }
  43. rescode.WriteSuccessResponse(c, nil)
  44. }
  45. // UpdateMenu
  46. // @Tags 系统菜单管理
  47. // @Summary 更新菜单
  48. // @Security ApiKeyAuth
  49. // @accept application/json
  50. // @Produce application/json
  51. // @Param data body model.Menu Menu "参数"
  52. // @Success 200 {object} rescode.ErrCode
  53. // @Router /sys/v1/menu [put]
  54. func (s *MenuApi) UpdateMenu(c *gin.Context) {
  55. var menu model.Menu
  56. if err := bind.Bind(c, &menu, binding.JSON); err != nil {
  57. rescode.WriteErrResponse(c, err)
  58. return
  59. }
  60. err := utils.Verify(menu, utils.UpdateMenuVerify)
  61. if err != nil {
  62. err = rescode.RegisterErrorWithMessage(err, err.Error(), code.ErrCodeMap[code.ErrValidationCode])
  63. rescode.WriteErrResponse(c, err)
  64. return
  65. }
  66. menu.UpdateBy = global.JWT.GetUserID(c)
  67. err = menuService.UpdateMenu(menu)
  68. if err != nil {
  69. rescode.WriteErrResponse(c, err)
  70. return
  71. }
  72. rescode.WriteSuccessResponse(c, nil)
  73. }
  74. // DeleteMenu
  75. // @Tags 系统菜单管理
  76. // @Summary 删除菜单
  77. // @Security ApiKeyAuth
  78. // @accept application/json
  79. // @Produce application/json
  80. // @Param data body common.IdReq true "参数"
  81. // @Success 200 {object} rescode.ErrCode
  82. // @Router /sys/v1/menu [delete]
  83. func (s *MenuApi) DeleteMenu(c *gin.Context) {
  84. var idReq common.IdReq
  85. if err := bind.Bind(c, &idReq, binding.Query); err != nil {
  86. rescode.WriteErrResponse(c, err)
  87. return
  88. }
  89. err := utils.Verify(idReq, utils.IdVerify)
  90. if err != nil {
  91. err = rescode.RegisterErrorWithMessage(err, err.Error(), code.ErrCodeMap[code.ErrValidationCode])
  92. rescode.WriteErrResponse(c, err)
  93. return
  94. }
  95. err = menuService.DeleteMenu(idReq.ID)
  96. if err != nil {
  97. rescode.WriteErrResponse(c, err)
  98. return
  99. }
  100. rescode.WriteSuccessResponse(c, nil)
  101. }
  102. // GetMenuByID
  103. // @Tags 系统菜单管理
  104. // @Summary 获取菜单
  105. // @Security ApiKeyAuth
  106. // @accept application/json
  107. // @Produce application/json
  108. // @Param data body common.IdReq true "参数"
  109. // @Success 200 {object} rescode.ErrCode
  110. // @Router /sys/v1/menu/one [get]
  111. func (s *MenuApi) GetMenuByID(c *gin.Context) {
  112. var idReq common.IdReq
  113. if err := bind.Bind(c, &idReq, binding.Query); err != nil {
  114. rescode.WriteErrResponse(c, err)
  115. return
  116. }
  117. err := utils.Verify(idReq, utils.IdVerify)
  118. if err != nil {
  119. err = rescode.RegisterErrorWithMessage(err, err.Error(), code.ErrCodeMap[code.ErrValidationCode])
  120. rescode.WriteErrResponse(c, err)
  121. return
  122. }
  123. menu, err := menuService.GetMenuByID(idReq.ID)
  124. if err != nil {
  125. rescode.WriteErrResponse(c, err)
  126. return
  127. }
  128. rescode.WriteSuccessResponse(c, response.MenuResponse{Menu: menu})
  129. }
  130. // GetMenuTree
  131. // @Tags 系统菜单管理
  132. // @Summary 获取菜单树(全部)
  133. // @Security ApiKeyAuth
  134. // @accept application/json
  135. // @Produce application/json
  136. // @Success 200 {object} rescode.ErrCode
  137. // @Router /sys/v1/menu/tree [get]
  138. func (s *MenuApi) GetMenuTree(c *gin.Context) {
  139. list, err := menuService.GetMenus()
  140. if err != nil {
  141. rescode.WriteErrResponse(c, err)
  142. return
  143. }
  144. rescode.WriteSuccessResponse(c, response.MenuListResponse{Menus: list})
  145. }
  146. // GetRoleMenuTree
  147. // @Tags 系统菜单管理
  148. // @Summary 获取菜单树(角色)
  149. // @Security ApiKeyAuth
  150. // @accept application/json
  151. // @Produce application/json
  152. // @Param data body common.GetRoleIDs true "参数"
  153. // @Success 200 {object} rescode.ErrCode
  154. // @Router /sys/v1/menu/role/tree [get]
  155. func (s *MenuApi) GetRoleMenuTree(c *gin.Context) {
  156. var roleIds common.GetRoleIDs
  157. if err := bind.Bind(c, &roleIds, binding.Query); err != nil {
  158. rescode.WriteErrResponse(c, err)
  159. return
  160. }
  161. list, err := menuService.GetMenusByRoleIds(roleIds.RoleIDs)
  162. if err != nil {
  163. rescode.WriteErrResponse(c, err)
  164. return
  165. }
  166. rescode.WriteSuccessResponse(c, response.MenuListResponse{Menus: list})
  167. }