package com.jsh.erp.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.base.BaseController; import com.jsh.erp.base.TableDataInfo; import com.jsh.erp.datasource.entities.SystemConfig; import com.jsh.erp.service.SystemConfigService; import com.jsh.erp.utils.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.AntPathMatcher; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.HandlerMapping; import javax.annotation.Resource; import javax.imageio.ImageIO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.List; import java.util.Map; import static com.jsh.erp.utils.ResponseJsonUtil.returnJson; import static com.jsh.erp.utils.ResponseJsonUtil.returnStr; /** * Description * @Author: longyong * @Date: 2021-3-13 0:01 */ @RestController @RequestMapping(value = "/systemConfig") @Api(tags = {"系统参数"}) public class SystemConfigController extends BaseController { private Logger logger = LoggerFactory.getLogger(SystemConfigController.class); @Resource private SystemConfigService systemConfigService; @Value(value="${file.uploadType}") private Long fileUploadType; @Value(value="${file.path}") private String filePath; @Value(value="${spring.servlet.multipart.max-file-size}") private Long maxFileSize; @Value(value="${spring.servlet.multipart.max-request-size}") private Long maxRequestSize; @GetMapping(value = "/info") @ApiOperation(value = "根据id获取信息") public String getList(@RequestParam("id") Long id, HttpServletRequest request) throws Exception { SystemConfig systemConfig = systemConfigService.getSystemConfig(id); Map objectMap = new HashMap<>(); if(systemConfig != null) { objectMap.put("info", systemConfig); return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); } else { return returnJson(objectMap, ErpInfo.ERROR.name, ErpInfo.ERROR.code); } } @GetMapping(value = "/list") @ApiOperation(value = "获取信息列表") public TableDataInfo getList(@RequestParam(value = Constants.SEARCH, required = false) String search, HttpServletRequest request)throws Exception { String companyName = StringUtil.getInfo(search, "companyName"); List list = systemConfigService.select(companyName); return getDataTable(list); } @PostMapping(value = "/add") @ApiOperation(value = "新增") public String addResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { Map objectMap = new HashMap<>(); int insert = systemConfigService.insertSystemConfig(obj, request); return returnStr(objectMap, insert); } @PutMapping(value = "/update") @ApiOperation(value = "修改") public String updateResource(@RequestBody JSONObject obj, HttpServletRequest request)throws Exception { Map objectMap = new HashMap<>(); int update = systemConfigService.updateSystemConfig(obj, request); return returnStr(objectMap, update); } @DeleteMapping(value = "/delete") @ApiOperation(value = "删除") public String deleteResource(@RequestParam("id") Long id, HttpServletRequest request)throws Exception { Map objectMap = new HashMap<>(); int delete = systemConfigService.deleteSystemConfig(id, request); return returnStr(objectMap, delete); } @DeleteMapping(value = "/deleteBatch") @ApiOperation(value = "批量删除") public String batchDeleteResource(@RequestParam("ids") String ids, HttpServletRequest request)throws Exception { Map objectMap = new HashMap<>(); int delete = systemConfigService.batchDeleteSystemConfig(ids, request); return returnStr(objectMap, delete); } @GetMapping(value = "/checkIsNameExist") @ApiOperation(value = "检查名称是否存在") public String checkIsNameExist(@RequestParam Long id, @RequestParam(value ="name", required = false) String name, HttpServletRequest request)throws Exception { Map objectMap = new HashMap<>(); int exist = systemConfigService.checkIsNameExist(id, name); if(exist > 0) { objectMap.put("status", true); } else { objectMap.put("status", false); } return returnJson(objectMap, ErpInfo.OK.name, ErpInfo.OK.code); } /** * 获取当前租户的配置信息 * @param request * @return */ @GetMapping(value = "/getCurrentInfo") @ApiOperation(value = "获取当前租户的配置信息") public BaseResponseInfo getCurrentInfo(HttpServletRequest request) throws Exception { BaseResponseInfo res = new BaseResponseInfo(); try{ List list = systemConfigService.getSystemConfig(); res.code = 200; if(list.size()>0) { res.data = list.get(0); } } catch(Exception e){ logger.error(e.getMessage(), e); res.code = 500; res.data = "获取数据失败"; } return res; } /** * 获取文件大小限制 * @param request * @return * @throws Exception */ @GetMapping(value = "/fileSizeLimit") @ApiOperation(value = "获取文件大小限制") public BaseResponseInfo fileSizeLimit(HttpServletRequest request) throws Exception { BaseResponseInfo res = new BaseResponseInfo(); try{ Long limit = 0L; if(maxFileSize UTF-8 进行编码转换 String imgPath = extractPathFromPattern(request); imgPath = imgPath.replace("https:/","https://"); if(StringUtil.isEmpty(imgPath) || imgPath=="null"){ return; } // 其余处理略 InputStream inputStream = null; OutputStream outputStream = null; try { imgPath = imgPath.replace("..", ""); if (imgPath.endsWith(",")) { imgPath = imgPath.substring(0, imgPath.length() - 1); } String fileUrl = ""; if(fileUploadType == 1) { fileUrl = systemConfigService.getFileUrlLocal(imgPath); inputStream = new BufferedInputStream(new FileInputStream(fileUrl)); } else if(fileUploadType == 2) { //fileUrl = systemConfigService.getFileUrlAliOss(imgPath); fileUrl = imgPath; URL url = new URL(fileUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); inputStream = conn.getInputStream();// 通过输入流获取图片数据 } outputStream = response.getOutputStream(); byte[] buf = new byte[1024]; int len; while ((len = inputStream.read(buf)) > 0) { outputStream.write(buf, 0, len); } response.flushBuffer(); } catch (IOException e) { logger.error("预览文件失败" + e.getMessage()); response.setStatus(404); logger.error(e.getMessage(), e); } catch (Exception e) { response.setStatus(404); logger.error(e.getMessage(), e); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { logger.error(e.getMessage(), e); } } if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { logger.error(e.getMessage(), e); } } } } /** * 预览缩略图&下载文件 * @param request * @param response */ @GetMapping(value = "/static/mini/**") @ApiOperation(value = "预览缩略图&下载文件") public void viewMini(HttpServletRequest request, HttpServletResponse response) { // ISO-8859-1 ==> UTF-8 进行编码转换 String imgPath = extractPathFromPattern(request); if(StringUtil.isEmpty(imgPath) || imgPath=="null"){ return; } InputStream inputStream = null; OutputStream outputStream = null; try { imgPath = imgPath.replace("..", ""); if (imgPath.endsWith(",")) { imgPath = imgPath.substring(0, imgPath.length() - 1); } String fileUrl = ""; if(fileUploadType == 1) { fileUrl = systemConfigService.getFileUrlLocal(imgPath); inputStream = new BufferedInputStream(new FileInputStream(fileUrl)); } else if(fileUploadType == 2) { fileUrl = systemConfigService.getFileUrlAliOss(imgPath); URL url = new URL(fileUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); inputStream = conn.getInputStream();// 通过输入流获取图片数据 } int index = fileUrl.lastIndexOf("."); String ext = fileUrl.substring(index + 1); BufferedImage image = systemConfigService.getImageMini(inputStream, 80); outputStream = response.getOutputStream(); ImageIO.write(image, ext, outputStream); response.flushBuffer(); } catch (Exception e) { response.setStatus(404); logger.error(e.getMessage(), e); } finally { if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { logger.error(e.getMessage(), e); } } } } /** * Excel导出统一接口 * @param response */ @PostMapping(value = "/exportExcelByParam") @ApiOperation(value = "生成excel表格") public void exportExcelByParam(@RequestBody JSONObject jsonObject, HttpServletResponse response) { try { String title = jsonObject.getString("title"); String head = jsonObject.getString("head"); String tip = jsonObject.getString("tip"); JSONArray arr = jsonObject.getJSONArray("list"); systemConfigService.exportExcelByParam(title, head, tip, arr, response); } catch (Exception e) { logger.error(e.getMessage(), e); } } /** * 把指定URL后的字符串全部截断当成参数 * 这么做是为了防止URL中包含中文或者特殊字符(/等)时,匹配不了的问题 * @param request * @return */ private static String extractPathFromPattern(final HttpServletRequest request) { String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path).substring(6); } }