create_admin_role.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package admin_role
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "net/http"
  5. "sghgogs.com/sghblog/authorization-client/response"
  6. "sghgogs.com/sghblog/authorization-client/utils"
  7. pb "sghgogs.com/sghblog/authorization-service/proto"
  8. "sghgogs.com/sghblog/common"
  9. )
  10. type CreateAdminRoleRequest struct {
  11. Name string `json:"name" binding:"required,max=15,min=3"` // 角色名称
  12. Description string `json:"description"` // 非必填,描述
  13. Users []int64 `json:"users"` // 管理员
  14. Permissions []int64 `json:"permissions"` // 权限
  15. }
  16. // CreateAdminRole
  17. // @summary 新增角色
  18. // @Description 创建角色
  19. // @Tags Role 角色管理
  20. // @Accept json
  21. // @Produce json
  22. // @Param Authorization header string true "Bearer 用户令牌"
  23. // @Param body body CreateAdminRoleRequest true "请求body"
  24. // @Success 200 {object} response.ApiResponse "成功"
  25. // @Failure 400 {object} response.ApiResponse "请求错误"
  26. // @Failure 500 {object} response.ApiResponse "内部错误"
  27. // @Router /v1/api/admin/role [post]
  28. func (svc *ApiAdminRole) CreateAdminRole(c *gin.Context) {
  29. var req CreateAdminRoleRequest
  30. if err := c.BindJSON(&req); err != nil {
  31. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
  32. return
  33. }
  34. if len(req.Permissions) > 0 {
  35. if isBool, err := common.ValidateNumericInt64(req.Permissions); !isBool {
  36. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
  37. return
  38. }
  39. }
  40. if len(req.Users) > 0 {
  41. if isBool, err := common.ValidateNumericInt64(req.Users); !isBool {
  42. c.JSON(http.StatusBadRequest, response.ErrorResponse(http.StatusBadRequest, err.Error()))
  43. return
  44. }
  45. }
  46. ctx, _ := utils.CreateContextWithToken(c, "authorizationservice", "AdminRoleService.CreateAdminRole")
  47. _, err := svc.Service.CreateAdminRole(ctx, &pb.CreateAdminRoleRequest{
  48. Name: req.Name,
  49. Description: req.Description,
  50. Users: req.Users,
  51. Permissions: req.Permissions,
  52. })
  53. if err != nil {
  54. code, mgs := response.MicroErrorRequest(err)
  55. c.JSON(code, response.ErrorResponse(code, mgs))
  56. return
  57. }
  58. c.JSON(http.StatusOK, response.SuccessResponse(nil))
  59. }