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<Object> 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<Object> queryColumns(@RequestParam String tableName) {
|
List<ColumnInfo> columnInfos = generatorService.getColumns(tableName);
|
return new ResponseEntity<>(R.success(PageUtil.toPage(columnInfos)), HttpStatus.OK);
|
}
|
|
@ApiOperation("保存字段数据")
|
@PutMapping
|
public ResponseEntity<Object> saveColumn(@RequestBody List<ColumnInfo> columnInfos) {
|
generatorService.save(columnInfos);
|
return new ResponseEntity<>(R.success(), HttpStatus.OK);
|
}
|
|
@ApiOperation("同步字段数据")
|
@PostMapping(value = "sync")
|
public ResponseEntity<Object> syncColumn(@RequestBody List<String> 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<Object> 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);
|
}
|
}
|