feat: 新增批量移除角色权限接口
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled

- 新增 DELETE /api/admin/roles/:role_id/permissions 接口
- Store 层新增 BatchDelete 方法,单次 SQL 批量软删除
- Service 层新增 BatchRemovePermissions 方法
- Handler 层新增 BatchRemovePermissions 处理函数
- DTO 新增 BatchRemovePermissionsRequest/Params
- 修复 openapi generator 对 DELETE 方法 requestBody 不生成的问题
- RouteSpec 新增 Body 字段,支持显式指定 JSON 请求体

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>
This commit is contained in:
2026-04-09 11:41:58 +08:00
parent a7dfe858c7
commit 384a54164b
8 changed files with 159 additions and 7 deletions

View File

@@ -197,6 +197,35 @@ func (h *RoleHandler) RemovePermission(c *fiber.Ctx) error {
return response.Success(c, nil)
}
// BatchRemovePermissions 批量移除角色的权限
// DELETE /api/admin/roles/:role_id/permissions
func (h *RoleHandler) BatchRemovePermissions(c *fiber.Ctx) error {
roleID, err := strconv.ParseUint(c.Params("role_id"), 10, 64)
if err != nil {
return errors.New(errors.CodeInvalidParam, "无效的角色 ID")
}
var req dto.BatchRemovePermissionsRequest
if err := c.BodyParser(&req); err != nil {
return errors.New(errors.CodeInvalidParam, "请求参数解析失败")
}
if err := h.validator.Struct(&req); err != nil {
logger.GetAppLogger().Warn("参数验证失败",
zap.String("path", c.Path()),
zap.String("method", c.Method()),
zap.Error(err),
)
return errors.New(errors.CodeInvalidParam)
}
if err := h.service.BatchRemovePermissions(c.UserContext(), uint(roleID), req.PermIDs); err != nil {
return err
}
return response.Success(c, nil)
}
// UpdateStatus 更新角色状态
// PUT /api/admin/roles/:id/status
func (h *RoleHandler) UpdateStatus(c *fiber.Ctx) error {