menu.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package handlers
  2. import (
  3. "net/http"
  4. "easydo-echo_win7/models"
  5. "easydo-echo_win7/services"
  6. "easydo-echo_win7/utils"
  7. "easydo-echo_win7/middleware"
  8. "github.com/labstack/echo-contrib/session"
  9. "github.com/labstack/echo/v4"
  10. )
  11. func Add_menu_to_routes(e *echo.Echo) {
  12. group := e.Group("/sysMenu")
  13. group.Use(middleware.AuthMiddleware)
  14. group.POST("/build", menuBuild)
  15. group.POST("/getList", menuGetList)
  16. group.POST("/save", menuSave)
  17. group.POST("/update", menuUpdate)
  18. group.POST("/remove", menuRemove)
  19. }
  20. func menuBuild(c echo.Context) error {
  21. sess, err := session.Get("auth_session", c)
  22. if err != nil {
  23. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", err.Error()))
  24. }
  25. user_role := new(models.SysUsersRoles)
  26. user_id, ok := sess.Values["user_id"].(int64)
  27. if !ok {
  28. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("用户请先登录", err.Error()))
  29. }
  30. user_role.UserID = &user_id
  31. result, err := services.JdbcClient.GetJdbcListByObject(user_role)
  32. if err != nil {
  33. utils.PrintSqlErr(err)
  34. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  35. }
  36. user_role_list := utils.ConvertInterface[[]models.SysUsersRoles](result)
  37. role_id_list := utils.Map(user_role_list, func(role models.SysUsersRoles) int64 {
  38. return *role.RoleID
  39. })
  40. paramMap := map[string]interface{}{
  41. "roleIdIn": role_id_list,
  42. }
  43. result, err = services.JdbcClient.GetJdbcList(paramMap, models.SysRolesMenus{})
  44. if err != nil {
  45. utils.PrintSqlErr(err)
  46. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  47. }
  48. role_menu_list := utils.ConvertInterface[[]models.SysRolesMenus](result)
  49. menu_id_list := utils.Map(role_menu_list, func(role models.SysRolesMenus) int64 {
  50. return *role.MenuID
  51. })
  52. paramMap = map[string]interface{}{
  53. "idIn": menu_id_list,
  54. }
  55. result, err = services.JdbcClient.GetJdbcList(paramMap, models.SysMenu{})
  56. if err != nil {
  57. utils.PrintSqlErr(err)
  58. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  59. }
  60. menu_list := utils.ConvertInterface[[]models.SysMenu](result)
  61. if menu_list == nil {
  62. return c.JSON(http.StatusOK, []string{})
  63. }
  64. return c.JSON(http.StatusOK, menu_list)
  65. }
  66. func menuGetList(c echo.Context) error {
  67. var paramMap map[string]interface{}
  68. if err := c.Bind(&paramMap); err != nil {
  69. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析错误", err.Error()))
  70. }
  71. result, err := services.JdbcClient.GetJdbcList(paramMap, models.SysMenu{})
  72. if err != nil {
  73. utils.PrintSqlErr(err)
  74. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  75. }
  76. menu_list := utils.ConvertInterface[[]models.SysMenu](result)
  77. if len(menu_list) == 0 {
  78. return c.JSON(http.StatusOK, []string{})
  79. }
  80. return c.JSON(http.StatusOK, menu_list)
  81. }
  82. func menuSave(c echo.Context) error {
  83. menu := new(models.SysMenu)
  84. if err := c.Bind(menu); err != nil {
  85. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析错误", err.Error()))
  86. }
  87. err := services.JdbcClient.JdbcInsert(menu)
  88. if err != nil {
  89. utils.PrintSqlErr(err)
  90. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  91. }
  92. return c.JSON(http.StatusOK, menu)
  93. }
  94. func menuUpdate(c echo.Context) error {
  95. menu := new(models.SysMenu)
  96. if err := c.Bind(menu); err != nil {
  97. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析错误", err.Error()))
  98. }
  99. err := services.JdbcClient.JdbcUpdateById(menu)
  100. if err != nil {
  101. utils.PrintSqlErr(err)
  102. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  103. }
  104. return c.JSON(http.StatusOK, menu)
  105. }
  106. func menuRemove(c echo.Context) error {
  107. tx, _ := services.MYSQL_DB.Beginx()
  108. menu := new(models.SysMenu)
  109. if err := c.Bind(menu); err != nil {
  110. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("参数解析错误", err.Error()))
  111. }
  112. menuParam := new(models.SysMenu)
  113. menuParam.Pid = menu.ID
  114. count, err := services.JdbcClient.GetJdbcCount(menuParam, tx)
  115. if err != nil {
  116. utils.PrintSqlErr(err)
  117. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  118. }
  119. if count > 0 {
  120. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("存在下级子菜单,无法删除", ""))
  121. }
  122. roleMenuParam := new(models.SysRolesMenus)
  123. roleMenuParam.MenuID = menu.ID
  124. err = services.JdbcClient.JdbcRemove(roleMenuParam, tx)
  125. if err != nil {
  126. utils.PrintSqlErr(err)
  127. tx.Rollback()
  128. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", err.Error()))
  129. }
  130. err = services.JdbcClient.JdbcRemoveById(menu, tx)
  131. if err != nil {
  132. utils.PrintSqlErr(err)
  133. tx.Rollback()
  134. return c.JSON(http.StatusInternalServerError, utils.ErrorResponse("系统错误", ""))
  135. }
  136. tx.Commit()
  137. return c.JSON(http.StatusOK, menu)
  138. }