package com.oying.rest; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.oying.domain.ColumnInfo; import com.oying.domain.dto.TableInfo; import com.oying.service.GenConfigService; import com.oying.service.GeneratorService; import com.oying.utils.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import com.oying.exception.BadRequestException; import com.oying.utils.PageResult; import com.oying.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 javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; /** * @author Z * @date 2019-01-02 */ @RestController @RequiredArgsConstructor @RequestMapping("/api/generator") @Api(tags = "系统:代码生成管理") public class GeneratorController { private final GeneratorService generatorService; private final GenConfigService genConfigService; @Value("${generator.enabled}") private Boolean generatorEnabled; @ApiOperation("查询数据库数据") @GetMapping(value = "/tables") public ResponseEntity queryTables(@RequestParam(defaultValue = "") String name, @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size) { return new ResponseEntity<>(R.success(generatorService.getTables(name, new Page<>(page, size))), HttpStatus.OK); } @ApiOperation("查询字段数据") @GetMapping(value = "/columns") public ResponseEntity queryColumns(@RequestParam String tableName) { List columnInfos = generatorService.getColumns(tableName); return new ResponseEntity<>(R.success(PageUtil.toPage(columnInfos)), HttpStatus.OK); } @ApiOperation("保存字段数据") @PutMapping public ResponseEntity saveColumn(@RequestBody List columnInfos) { generatorService.save(columnInfos); return new ResponseEntity<>(R.success(), HttpStatus.OK); } @ApiOperation("同步字段数据") @PostMapping(value = "sync") public ResponseEntity syncColumn(@RequestBody List tables) { for (String table : tables) { generatorService.sync(generatorService.getColumns(table), generatorService.query(table)); } return new ResponseEntity<>(R.success(), HttpStatus.OK); } @ApiOperation("生成代码") @PostMapping(value = "/{tableName}/{type}") public ResponseEntity generatorCode(@PathVariable String tableName, @PathVariable Integer type, HttpServletRequest request, HttpServletResponse response) { if (!generatorEnabled && type == 0) { throw new BadRequestException("此环境不允许生成代码,请选择预览或者下载查看!"); } switch (type) { // 生成代码 case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName)); break; // 预览 case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName)); // 打包 case 2: generatorService.download(genConfigService.find(tableName), generatorService.getColumns(tableName), request, response); break; default: throw new BadRequestException("没有这个选项"); } return new ResponseEntity<>(R.success(), HttpStatus.OK); } }