package me.zhengjie.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import me.zhengjie.domain.ColumnInfo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.service.GenConfigService; import me.zhengjie.service.GeneratorService; import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; /** * @author Zheng Jie * @date 2019-01-02 */ @RestController @RequestMapping("/api/generator") @Api(tags = "系统:代码生成管理") public class GeneratorController { private final GeneratorService generatorService; private final GenConfigService genConfigService; @Value("${generator.enabled}") private Boolean generatorEnabled; public GeneratorController(GeneratorService generatorService, GenConfigService genConfigService) { this.generatorService = generatorService; this.genConfigService = genConfigService; } @ApiOperation("查询数据库数据") @GetMapping(value = "/tables/all") public ResponseEntity getTables(){ return new ResponseEntity<>(generatorService.getTables(), HttpStatus.OK); } @ApiOperation("查询数据库数据") @GetMapping(value = "/tables") public ResponseEntity getTables(@RequestParam(defaultValue = "") String name, @RequestParam(defaultValue = "0")Integer page, @RequestParam(defaultValue = "10")Integer size){ int[] startEnd = PageUtil.transToStartEnd(page+1, size); return new ResponseEntity<>(generatorService.getTables(name,startEnd), HttpStatus.OK); } @ApiOperation("查询字段数据") @GetMapping(value = "/columns") public ResponseEntity getTables(@RequestParam String tableName){ List columnInfos = generatorService.getColumns(tableName); // 异步同步表信息 generatorService.sync(columnInfos); return new ResponseEntity<>(PageUtil.toPage(columnInfos,columnInfos.size()), HttpStatus.OK); } @ApiOperation("保存字段数据") @PutMapping public ResponseEntity save(@RequestBody List columnInfos){ generatorService.save(columnInfos); return new ResponseEntity(HttpStatus.OK); } @ApiOperation("生成代码") @PostMapping(value = "/{tableName}/{type}") public ResponseEntity generator(@PathVariable String tableName, @PathVariable Integer type){ if(!generatorEnabled){ throw new BadRequestException("此环境不允许生成代码!"); } switch (type){ // 生成代码 case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName)); break; default: break; } return new ResponseEntity(HttpStatus.OK); } }