package cc.mrbird.febs.gateway.enhance.controller; import cc.mrbird.febs.common.core.entity.QueryRequest; import cc.mrbird.febs.gateway.enhance.entity.RateLimitRule; import cc.mrbird.febs.gateway.enhance.service.RateLimitRuleService; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; /** * @author MrBird */ @RestController @RequiredArgsConstructor @RequestMapping("route/auth/rateLimitRule") public class RateLimitRuleController { private final RateLimitRuleService rateLimitRuleService; @GetMapping("data") public Flux findUserPages(QueryRequest request, RateLimitRule rateLimitRule) { return rateLimitRuleService.findPages(request, rateLimitRule); } @GetMapping("count") public Mono findUserCount(RateLimitRule rateLimitRule) { return rateLimitRuleService.findCount(rateLimitRule); } @GetMapping("exist") public Flux findByRequestUriAndRequestMethod(String requestUri, String requestMethod) { return rateLimitRuleService.findByRequestUriAndRequestMethod(requestUri, requestMethod); } @PostMapping @PreAuthorize("hasAuthority('admin')") public Mono createRateLimitRule(RateLimitRule rateLimitRule) { return rateLimitRuleService.create(rateLimitRule); } @PutMapping @PreAuthorize("hasAuthority('admin')") public Mono updateRateLimitRule(RateLimitRule rateLimitRule) { return rateLimitRuleService.update(rateLimitRule); } @DeleteMapping @PreAuthorize("hasAuthority('admin')") public Flux deleteRateLimitRule(String ids) { return rateLimitRuleService.delete(ids); } }