func_createadminmenu.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package admin
  2. import (
  3. "net/http"
  4. "github.com/xinliangnote/go-gin-api/internal/code"
  5. "github.com/xinliangnote/go-gin-api/internal/pkg/core"
  6. "github.com/xinliangnote/go-gin-api/internal/services/admin"
  7. )
  8. type createAdminMenuRequest struct {
  9. Id string `form:"id"` // HashID
  10. Actions string `form:"actions"` // 功能权限ID,多个用,分割
  11. }
  12. type createAdminMenuResponse struct {
  13. Id int32 `json:"id"` // 主键ID
  14. }
  15. // CreateAdminMenu 提交菜单授权
  16. // @Summary 提交菜单授权
  17. // @Description 提交菜单授权
  18. // @Tags API.admin
  19. // @Accept application/x-www-form-urlencoded
  20. // @Produce json
  21. // @Param id formData string true "Hashid"
  22. // @Param actions formData string true "功能权限ID,多个用,分割"
  23. // @Success 200 {object} createResponse
  24. // @Failure 400 {object} code.Failure
  25. // @Router /api/admin/menu [post]
  26. // @Security LoginToken
  27. func (h *handler) CreateAdminMenu() core.HandlerFunc {
  28. return func(c core.Context) {
  29. req := new(createAdminMenuRequest)
  30. res := new(createAdminMenuResponse)
  31. if err := c.ShouldBindForm(req); err != nil {
  32. c.AbortWithError(core.Error(
  33. http.StatusBadRequest,
  34. code.ParamBindError,
  35. code.Text(code.ParamBindError)).WithError(err),
  36. )
  37. return
  38. }
  39. ids, err := h.hashids.HashidsDecode(req.Id)
  40. if err != nil {
  41. c.AbortWithError(core.Error(
  42. http.StatusBadRequest,
  43. code.HashIdsDecodeError,
  44. code.Text(code.HashIdsDecodeError)).WithError(err),
  45. )
  46. return
  47. }
  48. createData := new(admin.CreateMenuData)
  49. createData.AdminId = int32(ids[0])
  50. createData.Actions = req.Actions
  51. err = h.adminService.CreateMenu(c, createData)
  52. if err != nil {
  53. c.AbortWithError(core.Error(
  54. http.StatusBadRequest,
  55. code.AdminMenuCreateError,
  56. code.Text(code.AdminMenuCreateError)).WithError(err),
  57. )
  58. return
  59. }
  60. res.Id = int32(ids[0])
  61. c.Payload(res)
  62. }
  63. }