sys_menu.go 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. package v1
  2. import (
  3. "fmt"
  4. "gin-vue-admin/global/response"
  5. "gin-vue-admin/model"
  6. "gin-vue-admin/model/request"
  7. resp "gin-vue-admin/model/response"
  8. "gin-vue-admin/service"
  9. "gin-vue-admin/utils"
  10. "github.com/gin-gonic/gin"
  11. )
  12. // @Tags authorityAndMenu
  13. // @Summary 获取用户动态路由
  14. // @Security ApiKeyAuth
  15. // @Produce application/json
  16. // @Param data body request.RegisterAndLoginStruct true "可以什么都不填"
  17. // @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}"
  18. // @Router /menu/getMenu [post]
  19. func GetMenu(c *gin.Context) {
  20. claims, _ := c.Get("claims")
  21. waitUse := claims.(*request.CustomClaims)
  22. err, menus := service.GetMenuTree(waitUse.AuthorityId)
  23. if err != nil {
  24. response.FailWithMessage(fmt.Sprintf("获取失败,%v", err), c)
  25. } else {
  26. response.OkWithData(resp.SysMenusResponse{Menus: menus}, c)
  27. }
  28. }
  29. // @Tags menu
  30. // @Summary 分页获取基础menu列表
  31. // @Security ApiKeyAuth
  32. // @accept application/json
  33. // @Produce application/json
  34. // @Param data body request.PageInfo true "分页获取基础menu列表"
  35. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  36. // @Router /menu/getMenuList [post]
  37. func GetMenuList(c *gin.Context) {
  38. var pageInfo request.PageInfo
  39. _ = c.ShouldBindJSON(&pageInfo)
  40. PageVerify := utils.Rules{
  41. "Page": {utils.NotEmpty()},
  42. "PageSize": {utils.NotEmpty()},
  43. }
  44. PageVerifyErr := utils.Verify(pageInfo, PageVerify)
  45. if PageVerifyErr!=nil{
  46. response.FailWithMessage(PageVerifyErr.Error(), c)
  47. return
  48. }
  49. err, menuList, total := service.GetInfoList()
  50. if err != nil {
  51. response.FailWithMessage(fmt.Sprintf("获取数据失败,%v", err), c)
  52. } else {
  53. response.OkWithData(resp.PageResult{
  54. List: menuList,
  55. Total: total,
  56. Page: pageInfo.Page,
  57. PageSize: pageInfo.PageSize,
  58. }, c)
  59. }
  60. }
  61. // @Tags menu
  62. // @Summary 新增菜单
  63. // @Security ApiKeyAuth
  64. // @accept application/json
  65. // @Produce application/json
  66. // @Param data body model.SysBaseMenu true "新增菜单"
  67. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  68. // @Router /menu/addBaseMenu [post]
  69. func AddBaseMenu(c *gin.Context) {
  70. var menu model.SysBaseMenu
  71. _ = c.ShouldBindJSON(&menu)
  72. MenuVerify := utils.Rules{
  73. "Path": {"notEmpty"},
  74. "ParentId": {utils.NotEmpty()},
  75. "Name": {utils.NotEmpty()},
  76. "Component": {utils.NotEmpty()},
  77. "Sort": {utils.Ge("0"),"ge=0"},
  78. }
  79. MenuVerifyErr := utils.Verify(menu, MenuVerify)
  80. if MenuVerifyErr != nil {
  81. response.FailWithMessage(MenuVerifyErr.Error(), c)
  82. return
  83. }
  84. MetaVerify := utils.Rules{
  85. "Title": {utils.NotEmpty()},
  86. }
  87. MetaVerifyErr := utils.Verify(menu.Meta, MetaVerify)
  88. if MetaVerifyErr != nil {
  89. response.FailWithMessage(MetaVerifyErr.Error(), c)
  90. return
  91. }
  92. err := service.AddBaseMenu(menu)
  93. if err != nil {
  94. response.FailWithMessage(fmt.Sprintf("添加失败,%v", err), c)
  95. } else {
  96. response.OkWithMessage("添加成功", c)
  97. }
  98. }
  99. // @Tags authorityAndMenu
  100. // @Summary 获取用户动态路由
  101. // @Security ApiKeyAuth
  102. // @Produce application/json
  103. // @Param data body request.RegisterAndLoginStruct true "可以什么都不填"
  104. // @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}"
  105. // @Router /menu/getBaseMenuTree [post]
  106. func GetBaseMenuTree(c *gin.Context) {
  107. err, menus := service.GetBaseMenuTree()
  108. if err != nil {
  109. response.FailWithMessage(fmt.Sprintf("获取失败,%v", err), c)
  110. } else {
  111. response.OkWithData(resp.SysBaseMenusResponse{Menus: menus}, c)
  112. }
  113. }
  114. // @Tags authorityAndMenu
  115. // @Summary 增加menu和角色关联关系
  116. // @Security ApiKeyAuth
  117. // @accept application/json
  118. // @Produce application/json
  119. // @Param data body request.AddMenuAuthorityInfo true "增加menu和角色关联关系"
  120. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  121. // @Router /menu/addMenuAuthority [post]
  122. func AddMenuAuthority(c *gin.Context) {
  123. var addMenuAuthorityInfo request.AddMenuAuthorityInfo
  124. _ = c.ShouldBindJSON(&addMenuAuthorityInfo)
  125. MenuVerify := utils.Rules{
  126. "AuthorityId": {"notEmpty"},
  127. }
  128. MenuVerifyErr := utils.Verify(addMenuAuthorityInfo, MenuVerify)
  129. if MenuVerifyErr != nil {
  130. response.FailWithMessage(MenuVerifyErr.Error(), c)
  131. return
  132. }
  133. err := service.AddMenuAuthority(addMenuAuthorityInfo.Menus, addMenuAuthorityInfo.AuthorityId)
  134. if err != nil {
  135. response.FailWithMessage(fmt.Sprintf("添加失败,%v", err), c)
  136. } else {
  137. response.OkWithMessage("添加成功", c)
  138. }
  139. }
  140. // @Tags authorityAndMenu
  141. // @Summary 获取指定角色menu
  142. // @Security ApiKeyAuth
  143. // @accept application/json
  144. // @Produce application/json
  145. // @Param data body request.AuthorityIdInfo true "增加menu和角色关联关系"
  146. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  147. // @Router /menu/GetMenuAuthority [post]
  148. func GetMenuAuthority(c *gin.Context) {
  149. var authorityIdInfo request.AuthorityIdInfo
  150. _ = c.ShouldBindJSON(&authorityIdInfo)
  151. MenuVerify := utils.Rules{
  152. "AuthorityId": {"notEmpty"},
  153. }
  154. MenuVerifyErr := utils.Verify(authorityIdInfo, MenuVerify)
  155. if MenuVerifyErr != nil {
  156. response.FailWithMessage(MenuVerifyErr.Error(), c)
  157. return
  158. }
  159. err, menus := service.GetMenuAuthority(authorityIdInfo.AuthorityId)
  160. if err != nil {
  161. response.FailWithDetailed(response.ERROR, resp.SysMenusResponse{Menus: menus}, fmt.Sprintf("添加失败,%v", err), c)
  162. } else {
  163. response.Result(response.SUCCESS, gin.H{"menus": menus}, "获取成功", c)
  164. }
  165. }
  166. // @Tags menu
  167. // @Summary 删除菜单
  168. // @Security ApiKeyAuth
  169. // @accept application/json
  170. // @Produce application/json
  171. // @Param data body request.GetById true "删除菜单"
  172. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  173. // @Router /menu/deleteBaseMenu [post]
  174. func DeleteBaseMenu(c *gin.Context) {
  175. var idInfo request.GetById
  176. _ = c.ShouldBindJSON(&idInfo)
  177. MenuVerify := utils.Rules{
  178. "Id": {"notEmpty"},
  179. }
  180. MenuVerifyErr := utils.Verify(idInfo, MenuVerify)
  181. if MenuVerifyErr != nil {
  182. response.FailWithMessage(MenuVerifyErr.Error(), c)
  183. return
  184. }
  185. err := service.DeleteBaseMenu(idInfo.Id)
  186. if err != nil {
  187. response.FailWithMessage(fmt.Sprintf("删除失败:%v", err), c)
  188. } else {
  189. response.OkWithMessage("删除成功", c)
  190. }
  191. }
  192. // @Tags menu
  193. // @Summary 更新菜单
  194. // @Security ApiKeyAuth
  195. // @accept application/json
  196. // @Produce application/json
  197. // @Param data body model.SysBaseMenu true "更新菜单"
  198. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  199. // @Router /menu/updateBaseMenu [post]
  200. func UpdateBaseMenu(c *gin.Context) {
  201. var menu model.SysBaseMenu
  202. _ = c.ShouldBindJSON(&menu)
  203. MenuVerify := utils.Rules{
  204. "Path": {"notEmpty"},
  205. "ParentId": {utils.NotEmpty()},
  206. "Name": {utils.NotEmpty()},
  207. "Component": {utils.NotEmpty()},
  208. "Sort": {utils.Ge("0"),"ge=0"},
  209. }
  210. MenuVerifyErr := utils.Verify(menu, MenuVerify)
  211. if MenuVerifyErr != nil {
  212. response.FailWithMessage(MenuVerifyErr.Error(), c)
  213. return
  214. }
  215. MetaVerify := utils.Rules{
  216. "Title": {utils.NotEmpty()},
  217. }
  218. MetaVerifyErr := utils.Verify(menu.Meta, MetaVerify)
  219. if MetaVerifyErr != nil {
  220. response.FailWithMessage(MetaVerifyErr.Error(), c)
  221. return
  222. }
  223. err := service.UpdateBaseMenu(menu)
  224. if err != nil {
  225. response.FailWithMessage(fmt.Sprintf("修改失败:%v", err), c)
  226. } else {
  227. response.OkWithMessage("修改成功", c)
  228. }
  229. }
  230. // @Tags menu
  231. // @Summary 根据id获取菜单
  232. // @Security ApiKeyAuth
  233. // @accept application/json
  234. // @Produce application/json
  235. // @Param data body request.GetById true "根据id获取菜单"
  236. // @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功"}"
  237. // @Router /menu/getBaseMenuById [post]
  238. func GetBaseMenuById(c *gin.Context) {
  239. var idInfo request.GetById
  240. _ = c.ShouldBindJSON(&idInfo)
  241. MenuVerify := utils.Rules{
  242. "Id": {"notEmpty"},
  243. }
  244. MenuVerifyErr := utils.Verify(idInfo, MenuVerify)
  245. if MenuVerifyErr != nil {
  246. response.FailWithMessage(MenuVerifyErr.Error(), c)
  247. return
  248. }
  249. err, menu := service.GetBaseMenuById(idInfo.Id)
  250. if err != nil {
  251. response.FailWithMessage(fmt.Sprintf("查询失败:%v", err), c)
  252. } else {
  253. response.OkWithData(resp.SysBaseMenuResponse{Menu: menu}, c)
  254. }
  255. }