toggle_admin_role.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package admin_role
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "net/http"
  5. "sghgogs.com/sghblog/authorization-client/model/base"
  6. "sghgogs.com/sghblog/authorization-client/response"
  7. "sghgogs.com/sghblog/authorization-client/utils"
  8. pb "sghgogs.com/sghblog/authorization-service/proto"
  9. "sghgogs.com/sghblog/common"
  10. "strconv"
  11. )
  12. type ToggleRequest struct {
  13. Status base.Status `json:"status" binding:"required"` // "enabled"|"disabled"
  14. }
  15. // ToggleAdminRole
  16. // @summary 启用/禁用
  17. // @Tags Role 角色管理
  18. // @Accept json
  19. // @Produce json
  20. // @Param Authorization header string true "Bearer 用户令牌"
  21. // @Param body body ToggleRequest true "请求body"
  22. // @Success 200 {object} response.ApiResponse "成功"
  23. // @Failure 400 {object} response.ApiResponse "请求错误"
  24. // @Failure 500 {object} response.ApiResponse "内部错误"
  25. // @Router /v1/api/admin/role/{roleID}/toggle [put]
  26. func (svc *ApiAdminRole) ToggleAdminRole(c *gin.Context) {
  27. var req ToggleRequest
  28. if err := c.ShouldBindJSON(&req); err != nil {
  29. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
  30. return
  31. }
  32. RoleID, err := strconv.ParseInt(c.Param("roleID"), 10, 64)
  33. if err != nil || RoleID <= 0 {
  34. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, common.ErrorMessage[common.InvalidRoleID]))
  35. return
  36. }
  37. enum, err := base.MapStatusToEnum(req.Status)
  38. if err != nil {
  39. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, common.ErrorMessage[common.StatusIsNotValid]))
  40. return
  41. }
  42. ctx, _ := utils.CreateContextWithToken(c, "authorizationservice", "AdminRoleService.ToggleAdminRole")
  43. _, err = svc.Service.ToggleAdminRole(ctx, &pb.ToggleAdminRoleRequest{
  44. RoleId: RoleID,
  45. Status: enum,
  46. })
  47. if err != nil {
  48. code, mgs := response.MicroErrorRequest(err)
  49. c.JSON(code, response.ErrorResponse(code, mgs))
  50. return
  51. }
  52. c.JSON(http.StatusOK, response.SuccessResponse(nil))
  53. }