package com.jsh.erp.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.Depot; import com.jsh.erp.datasource.entities.SystemConfig; import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.depot.DepotService; import com.jsh.erp.service.systemConfig.SystemConfigService; import com.jsh.erp.service.user.UserService; import com.jsh.erp.service.userBusiness.UserBusinessService; import com.jsh.erp.utils.BaseResponseInfo; import com.jsh.erp.utils.FileUtils; import com.jsh.erp.utils.StringUtil; import com.jsh.erp.utils.Tools; 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.dao.DataAccessException; import org.springframework.util.AntPathMatcher; import org.springframework.util.FileCopyUtils; 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.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.List; /** * Description * @Author: jishenghua * @Date: 2021-3-13 0:01 */ @RestController @RequestMapping(value = "/systemConfig") @Api(tags = {"系统参数"}) public class SystemConfigController { private Logger logger = LoggerFactory.getLogger(SystemConfigController.class); @Resource private UserService userService; @Resource private DepotService depotService; @Resource private UserBusinessService userBusinessService; @Resource private SystemConfigService systemConfigService; @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; /** * 获取当前租户的配置信息 * @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){ e.printStackTrace(); 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); 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 = filePath + File.separator + imgPath; File file = new File(fileUrl); if(!file.exists()){ response.setStatus(404); throw new RuntimeException("文件不存在.."); } response.setContentType("application/force-download");// 设置强制下载不打开 response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1")); inputStream = new BufferedInputStream(new FileInputStream(fileUrl)); 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); e.printStackTrace(); } 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); } } } } /** * 把指定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); } }