diff --git a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutCommonController.java b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutCommonController.java new file mode 100644 index 00000000..13ec1c12 --- /dev/null +++ b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutCommonController.java @@ -0,0 +1,164 @@ +package com.zdxt.app.controller.external.company; + +import cn.hutool.core.io.FileTypeUtil; +import cn.hutool.core.io.FileUtil; +import com.google.common.collect.Lists; +import com.zdxt.auth.common.constant.Constants; +import com.zdxt.auth.common.utils.StringUtils; +import com.zdxt.auth.common.utils.file.FileUploadUtils; +import com.zdxt.auth.common.utils.file.FileUtils; +import com.zdxt.auth.dto.UserBean; +import com.zdxt.auth.feign.UserApi; +import com.zdxt.auth.framework.config.ServerConfig; +import com.zdxt.auth.framework.web.domain.AjaxResult; +import com.zdxt.common.ZDResponse; +import com.zdxt.common.config.RuoYiConfig; +import org.apache.commons.collections4.CollectionUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.util.List; +import java.util.Locale; + +/** + * 通用请求处理 + * + * @author ruoyi + */ +@Controller +public class OutCommonController +{ + private static final Logger log = LoggerFactory.getLogger(OutCommonController.class); + + @Autowired + private ServerConfig serverConfig; + + @Autowired + private UserApi userApi; + /** + * 默认允许的文件类型 + * + * @see FileTypeUtil + */ + private List defaultAllowTypes = Lists.newArrayList( + "xlsx", "xls", "docx", "doc", "pdf", "txt", + "jpg", "jpeg", "png", "bmp", "mp4", + "zip"); + + /** + * 通用下载请求 + * + * @param fileName 文件名称 + * @param delete 是否删除 + */ + @GetMapping("/external/common/download") + public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) + { + try + { + if (!FileUtils.isValidFilename(fileName)) + { + throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); + } + String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); + String filePath = RuoYiConfig.getDownloadPath() + fileName; + + response.setCharacterEncoding("utf-8"); + response.setContentType("multipart/form-data"); + response.setHeader("Content-Disposition", + "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName)); + FileUtils.writeBytes(filePath, response.getOutputStream()); + if (delete) + { + FileUtils.deleteFile(filePath); + } + } + catch (Exception e) + { + log.error("下载文件失败", e); + } + } + + /** + * 通用上传请求 + */ + @PostMapping("/external/common/upload") + @ResponseBody + public AjaxResult uploadFile(MultipartFile file) throws Exception + { + try + { + String fileNameTmp = file.getOriginalFilename(); + InputStream in = file.getInputStream(); + String type = FileTypeUtil.getType(in); + if (StringUtils.isBlank(type)) { + // 无法通过文件头或者扩展名识别文件类型。 + return AjaxResult.error("上传失败格式不符合要求"); + } + + String extType = FileUtil.extName(fileNameTmp); + if (StringUtils.isBlank(extType)) { + // 后缀读不到类型,直接拒绝 + return AjaxResult.error("无法读取文件类型"); + } + + // 文件头类型和后缀类型都要满足白名单 + if (!CollectionUtils.containsAll(defaultAllowTypes, + Lists.newArrayList(type.toLowerCase(Locale.ROOT), extType.toLowerCase(Locale.ROOT)))) { + + return AjaxResult.error("文件上传失败"); + } + + // 上传文件路径 + String filePath = RuoYiConfig.getUploadPath(); + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(filePath, file); + log.info("文件上传"+fileName); + String url = fileName; + AjaxResult ajax = AjaxResult.success(); + ajax.put("fileName", fileName); + ajax.put("url", url); + return ajax; + } + catch (Exception e) + { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 本地资源通用下载 + */ + @GetMapping("/external/common/download/resource") + public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) + throws Exception + { + // 本地资源路径 + String localPath = RuoYiConfig.getProfile(); + // 数据库资源地址 + String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); + // 下载名称 + String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); + response.setCharacterEncoding("utf-8"); + response.setContentType("multipart/form-data"); + response.setHeader("Content-Disposition", + "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName)); + FileUtils.writeBytes(downloadPath, response.getOutputStream()); + } + + @GetMapping("/external/getUserInfo") + @ResponseBody + public ZDResponse getUserInfo(){ + UserBean user = userApi.getCurrentUser(); + return ZDResponse.success("查询成功",user); + } +} diff --git a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnforcementRegistrationController.java b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnforcementRegistrationController.java index 6e7020ca..ec74996e 100644 --- a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnforcementRegistrationController.java +++ b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnforcementRegistrationController.java @@ -636,9 +636,9 @@ public class OutEnforcementRegistrationController extends BaseController /** * 执法登记详情 - 联合执法版本 */ - @GetMapping("/queryUniteById/{id}") + @GetMapping("/queryUniteById") @ResponseBody - public ZDResponse queryUniteById(@PathVariable("id") String id) + public ZDResponse queryUniteById(String id) { List regResults = new ArrayList<>(); List lawResults = new ArrayList<>();