srt_cloud/srt-cloud-data-service/src/main/java/net/srt/controller/ApiConfigController.java

141 lines
4.9 KiB
Java

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<PageResult<ApiConfigVo>> page(@Valid ApiConfigQuery query) {
PageResult<ApiConfigVo> page = apiConfigService.page(query);
return Result.ok(page);
}
@GetMapping("page-resource")
@Operation(summary = "根据resourceId分页获取")
public Result<PageResult<ApiConfigVo>> pageResource(@Valid ApiConfigQuery query){
PageResult<ApiConfigVo> page = apiConfigService.pageResource(query);
return Result.ok(page);
}
@GetMapping("page-auth")
public Result<PageResult<ApiConfigVo>> pageAuth(@Valid ApiConfigQuery query) {
PageResult<ApiConfigVo> page = apiConfigService.page(query);
return Result.ok(page);
}
//取消授权
// @PutMapping("/auth-info")
// @Operation(summary = "修改授权")
// public Result<String> upAuth(@RequestBody DataServiceApiAuthVo authVO){
// apiConfigService.upAuth(authVO);
// return Result.ok();
// }
@Operation(summary = "回显")
@GetMapping(value = "/auth-info/{authId}")
public Result<DataServiceApiAuthVo> getAuthId(@PathVariable Long authId){
return Result.ok(apiConfigService.getAuthInfo(authId));
}
//重置调用次数
@Operation(summary = "重置调用次数")
@PutMapping("/reset-requested/{authId}")
public Result<String > resetRequested(@PathVariable Long authId){
apiConfigService.resetRequested(authId);
return Result.ok();
}
@GetMapping("{id}")
@Operation(summary = "信息")
@PreAuthorize("hasAnyAuthority('data-service:api-config:info')")
public Result<ApiConfigVo> 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<String> save(@RequestBody ApiConfigVo vo) {
apiConfigService.save(vo);
return Result.ok();
}
@PutMapping
@Operation(summary = "修改")
@PreAuthorize("hasAnyAuthority('data-service:api-config:update')")
public Result<String> update(@RequestBody ApiConfigVo vo){
apiConfigService.update(vo);
return Result.ok();
}
@DeleteMapping
@Operation(summary = "删除")
@PreAuthorize("hasAnyAuthority('data-service:api-config:delete')")
public Result<String> delete(@RequestBody List<Long> idList){
apiConfigService.delete(idList);
return Result.ok();
}
@GetMapping("getIpPort")
public Result<String> getIpPort() {
return Result.ok(apiConfigService.getIpPort());
}
@Operation(summary = "获取服务的ip和端口号")
@GetMapping("/ip-port")
public Result<String> ipPort() {
return Result.ok(apiConfigService.ipPort());
}
@Operation(summary = "上线")
@PreAuthorize("hasAnyAuthority('data-service:api-config:online')")
@PutMapping("/{id}/online")
public Result<String> online(@PathVariable Long id) {
apiConfigService.online(id);
return Result.ok();
}
@Operation(summary = "下线")
@PreAuthorize("hasAnyAuthority('data-service:api-config:offline')")
@PutMapping("/{id}/offline")
public Result<String> offline(@PathVariable Long id){
apiConfigService.offline(id);
return Result.ok();
}
@Operation(summary = "执行sql")
@PostMapping("/sql/execute")
public Result<JdbcSelectResult> sqlExecute(@RequestBody SqlDto dto) {
return Result.ok(apiConfigService.sqlExecute(dto));
}
@Operation(summary = "导出 api 文档")
@PostMapping(value = "/export-docs")
public void exportDocs(@RequestBody List<Long> ids, HttpServletResponse response) {
apiConfigService.exportDocs(ids, response);
}
}