package net.srt.controller; import io.swagger.v3.oas.annotations.Operation; import lombok.AllArgsConstructor; import net.srt.convert.ApiConfigConvert; import net.srt.dto.SqlDto; import net.srt.entity.ApiConfigEntity; import net.srt.framework.common.page.PageResult; import net.srt.framework.common.utils.Result; import net.srt.query.ApiConfigQuery; import net.srt.service.ApiConfigService; import net.srt.vo.ApiConfigVo; import net.srt.vo.DataServiceApiAuthVo; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import srt.cloud.framework.dbswitch.core.model.JdbcSelectResult; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.List; @RestController @RequestMapping("/api-config") @AllArgsConstructor public class ApiConfigController { private final ApiConfigService apiConfigService; @GetMapping("page") @Operation(summary = "分页") @PreAuthorize("hasAuthority('data-service:api-config:page')") public Result> page(@Valid ApiConfigQuery query) { PageResult page = apiConfigService.page(query); return Result.ok(page); } @GetMapping("page-resource") @Operation(summary = "根据resourceId分页获取") public Result> pageResource(@Valid ApiConfigQuery query){ PageResult page = apiConfigService.pageResource(query); return Result.ok(page); } @GetMapping("page-auth") public Result> pageAuth(@Valid ApiConfigQuery query) { PageResult page = apiConfigService.page(query); return Result.ok(page); } //取消授权 // @PutMapping("/auth-info") // @Operation(summary = "修改授权") // public Result upAuth(@RequestBody DataServiceApiAuthVo authVO){ // apiConfigService.upAuth(authVO); // return Result.ok(); // } @Operation(summary = "回显") @GetMapping(value = "/auth-info/{authId}") public Result getAuthId(@PathVariable Long authId){ return Result.ok(apiConfigService.getAuthInfo(authId)); } //重置调用次数 @Operation(summary = "重置调用次数") @PutMapping("/reset-requested/{authId}") public Result resetRequested(@PathVariable Long authId){ apiConfigService.resetRequested(authId); return Result.ok(); } @GetMapping("{id}") @Operation(summary = "信息") @PreAuthorize("hasAnyAuthority('data-service:api-config:info')") public Result get(@PathVariable("id") Long id){ ApiConfigEntity entity=apiConfigService.getById(id); return Result.ok(ApiConfigConvert.INSTANCE.convert(entity)); } @PostMapping @Operation(summary = "保存") @PreAuthorize("hasAnyAuthority('data-service:api-config:save')") public Result save(@RequestBody ApiConfigVo vo) { apiConfigService.save(vo); return Result.ok(); } @PutMapping @Operation(summary = "修改") @PreAuthorize("hasAnyAuthority('data-service:api-config:update')") public Result update(@RequestBody ApiConfigVo vo){ apiConfigService.update(vo); return Result.ok(); } @DeleteMapping @Operation(summary = "删除") @PreAuthorize("hasAnyAuthority('data-service:api-config:delete')") public Result delete(@RequestBody List idList){ apiConfigService.delete(idList); return Result.ok(); } @GetMapping("getIpPort") public Result getIpPort() { return Result.ok(apiConfigService.getIpPort()); } @Operation(summary = "获取服务的ip和端口号") @GetMapping("/ip-port") public Result ipPort() { return Result.ok(apiConfigService.ipPort()); } @Operation(summary = "上线") @PreAuthorize("hasAnyAuthority('data-service:api-config:online')") @PutMapping("/{id}/online") public Result online(@PathVariable Long id) { apiConfigService.online(id); return Result.ok(); } @Operation(summary = "下线") @PreAuthorize("hasAnyAuthority('data-service:api-config:offline')") @PutMapping("/{id}/offline") public Result offline(@PathVariable Long id){ apiConfigService.offline(id); return Result.ok(); } @Operation(summary = "执行sql") @PostMapping("/sql/execute") public Result sqlExecute(@RequestBody SqlDto dto) { return Result.ok(apiConfigService.sqlExecute(dto)); } @Operation(summary = "导出 api 文档") @PostMapping(value = "/export-docs") public void exportDocs(@RequestBody List ids, HttpServletResponse response) { apiConfigService.exportDocs(ids, response); } }