package com.highdatas.mdm.controller; import com.alibaba.fastjson.JSONObject; import com.highdatas.mdm.entity.SysAssemble; import com.highdatas.mdm.entity.SysAssembleParams; import com.highdatas.mdm.pojo.CodeMsg; import com.highdatas.mdm.pojo.Result; import com.highdatas.mdm.service.ISysAssembleDbService; import com.highdatas.mdm.service.ISysAssembleParamsService; import com.highdatas.mdm.service.ISysAssembleService; import com.highdatas.mdm.util.Constant; import com.highdatas.mdm.util.DbUtils; import com.highdatas.mdm.util.RedisClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Date; import java.util.List; /** * @author kimi * @description * @date 2019-12-18 10:22 */ @RestController @RequestMapping("/file") public class FileController { @Autowired ISysAssembleDbService dbService; @Autowired ISysAssembleService assembleService; @Autowired ISysAssembleParamsService paramsService; @Autowired RedisClient redisClient; @RequestMapping(value = "/loadSqlTable", method = RequestMethod.POST) @ResponseBody public Result loadSqlTable(@RequestParam("file")MultipartFile file,@RequestParam String dbId, HttpServletRequest request) { try { byte[] bytes = file.getBytes(); String sql = new String (bytes); sql = DbUtils.replaceEscape(sql); String[] split = sql.split(Constant.SEMICOLON); if (split.length > 1) { return Result.error(new CodeMsg(6001 , "sql脚本上传错误,仅能支持一条语句")); } String sqlId = DbUtils.getUUID(); boolean b = redisClient.putRedisVal(sqlId, sql); if (!b){ return Result.error(new CodeMsg(6002, "sql保存失败")); } // 暂不校验是不是select语句了 后续需要再校验 List fieldsBySql = dbService.getFieldsBySql(dbId, sql); JSONObject object = new JSONObject(); object.fluentPut("fields", fieldsBySql); object.fluentPut("sqlId",sqlId); return Result.success(object); }catch (Exception e) { e.printStackTrace(); return Result.error(new CodeMsg(6002, e.getMessage())); } } @RequestMapping(value = "/loadPurgeSql", method = RequestMethod.POST) @ResponseBody public Result loadPurgeSql(@RequestParam("file")MultipartFile file,@RequestParam String id, HttpServletRequest request) { // 暂不校验是不是select语句了 后续需要再校验 SysAssemble assemble = assembleService.selectById(id); if (assemble == null){ return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } try { byte[] bytes = file.getBytes(); String sql = new String (bytes); sql = DbUtils.replaceEscape(sql); //TODO 校验sql 暂不进行 assemble.setPurgeSql(sql); boolean update = assemble.updateById(); if (update) { return Result.success(assemble); }else { return Result.error(CodeMsg.UPDATE_ERROR); } }catch (Exception e) { e.printStackTrace(); return Result.error(new CodeMsg(6002, e.getMessage())); } } @RequestMapping(value = "/loadParamsUpdateSql", method = RequestMethod.POST) @ResponseBody public Result loadParamsUpdateSql(@RequestParam("file")MultipartFile file,@RequestParam String id, HttpServletRequest request) { // 暂不校验是不是select语句了 后续需要再校验 SysAssembleParams sysAssembleParams = paramsService.selectById(id); if (sysAssembleParams == null){ return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } try { byte[] bytes = file.getBytes(); String sql = new String (bytes); sql = DbUtils.replaceEscape(sql); //TODO 校验sql 暂不进行 sysAssembleParams.setUpdateSql(sql).setUpdateTime(new Date()).updateById(); return Result.success(sysAssembleParams); }catch (Exception e) { e.printStackTrace(); return Result.error(new CodeMsg(6002, e.getMessage())); } } }