From 7649dec327a8cab6b71b8b57b61fb9e0b32b8650 Mon Sep 17 00:00:00 2001 From: ganhao Date: Wed, 15 Apr 2026 18:08:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=89=A7=E6=B3=95?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=B0=83=E7=94=A8=E5=B8=82=E5=B1=80=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../external/company/OutCommonController.java | 164 ++++++++++++++++++ .../OutEnforcementRegistrationController.java | 4 +- 2 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutCommonController.java 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<>(); From 71929daf61850e1636cac072f26cc4eb8ae541f1 Mon Sep 17 00:00:00 2001 From: ganhao Date: Thu, 16 Apr 2026 14:29:50 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E7=BB=99=E9=BE=99=E5=B2=97=E6=9F=A5=E7=9C=8B=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../company/OutEnterpriseLawEnforcementController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseLawEnforcementController.java b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseLawEnforcementController.java index 8301b134..b79fef72 100644 --- a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseLawEnforcementController.java +++ b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseLawEnforcementController.java @@ -78,9 +78,9 @@ public class OutEnterpriseLawEnforcementController extends BaseController /** * 查看预约记录详情 */ - @GetMapping( "/getById/{id}") + @GetMapping( "/getById") @ResponseBody - public ZDResponse getById(@PathVariable("id") String id) + public ZDResponse getById(String id) { EnterpriseLawEnforcement enterpriseLawEnforcement = enterpriseLawEnforcementService.selectEnterpriseLawEnforcementById(id); From 4ca207789f9cc6343502b0630edc5877d552f3df Mon Sep 17 00:00:00 2001 From: shil <452061493@qq.com> Date: Fri, 17 Apr 2026 15:42:22 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=B8=82=E5=B1=80=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E7=BB=99=E9=BE=99=E5=B2=97=E4=BA=AE=E7=A0=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../company/OutEnterpriseInfoController.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseInfoController.java diff --git a/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseInfoController.java b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseInfoController.java new file mode 100644 index 00000000..6a5c62e5 --- /dev/null +++ b/lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/external/company/OutEnterpriseInfoController.java @@ -0,0 +1,63 @@ +package com.zdxt.app.controller.external.company; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; +import com.zdxt.auth.dto.DictDataBean; +import com.zdxt.auth.feign.DictDataApi; +import com.zdxt.auth.feign.ZdxtFileCommonApi; +import com.zdxt.code.domain.*; +import com.zdxt.code.mapper.EnforcementRegistrationMapper; +import com.zdxt.code.service.*; +import com.zdxt.common.ZDResponse; +import com.zdxt.common.controller.BaseController; +import com.zdxt.common.util.StringUtils; +import com.zdxt.common.util.TableDataInfo; +import com.zdxt.common.zdxtFile.ZdxtFileCommon; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.*; + +/** + * 外部接口-企业执法-在线投诉Controller + * + * @author kylin + * @date 2026-04-15 + */ +//@Tag(name = "外部接口", description = "企业信息") +@Controller +@RequestMapping("/external/enterprise/info") +public class OutEnterpriseInfoController extends BaseController { + + @Autowired private IEnterpriseInformationService enterpriseInformationService; + @Autowired private IQrCodeGenerateHistoryService iQrCodeGenerateHistoryService; + + @GetMapping("/getQrCode") + @ResponseBody + public ZDResponse getQrCode(String enterpriseNumber) + { + //查询企业二维码信息 + QrCodeGenerateHistory qrCodeGenerateHistory = iQrCodeGenerateHistoryService.selectQrCodeGenerateHistoryByNewest(enterpriseNumber); + //查询企业信息 + EnterpriseInformation enterpriseInformation = + enterpriseInformationService.selectEnterpriseInformationByNum(enterpriseNumber); + if(BeanUtil.isNotEmpty(enterpriseInformation) && + StrUtil.isNotEmpty(enterpriseInformation.getEnterpriseNumber())){ + qrCodeGenerateHistory.setEnterpriseName(enterpriseInformation.getEnterpriseName()); + } + return ZDResponse.success("查询成功",qrCodeGenerateHistory); + } + + /** + * 新增保存企业信息登记 + */ + @PostMapping("/addEnterprise") + @ResponseBody + public ZDResponse addEnterprise(@RequestBody EnterpriseInformation enterpriseInformation) + { + return enterpriseInformationService.insertEnterpriseInformation(enterpriseInformation) > 0 + ? ZDResponse.success("登记成功"): ZDResponse.error("登记失败"); + } +}