diff --git a/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/config/LocalFileResourceConfig.java b/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/config/LocalFileResourceConfig.java new file mode 100644 index 00000000..4171bdcf --- /dev/null +++ b/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/config/LocalFileResourceConfig.java @@ -0,0 +1,42 @@ +package com.zdxt.enforcementcode.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * 本地文件静态资源映射配置 + *
+ * 将 URL 路径 /profile/** 映射到本地磁盘文件目录, + * 使上传的附件可通过浏览器直接访问(图片预览、文件下载等)。 + *
+ * + * @author zdxt + */ +@Slf4j +@Configuration +public class LocalFileResourceConfig implements WebMvcConfigurer { + + @Value("${zdxt.file.upload-path:#{T(java.lang.System).getProperty('user.dir') + '/upload'}}") + private String uploadBasePath; + + @Value("${zdxt.file.url-prefix:/profile}") + private String urlPrefix; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + // 确保路径格式正确:URL 以 /** 结尾,本地路径以 file: 开头、/ 结尾 + String pathPattern = urlPrefix.endsWith("/") ? urlPrefix + "**" : urlPrefix + "/**"; + String locationPath = uploadBasePath.replace("\\", "/"); + if (!locationPath.endsWith("/")) { + locationPath += "/"; + } + String resourceLocation = "file:" + locationPath; + + log.info("静态资源映射: {} -> {}", pathPattern, resourceLocation); + registry.addResourceHandler(pathPattern) + .addResourceLocations(resourceLocation); + } +} diff --git a/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/ZdxtFileUtilController.java b/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/ZdxtFileUtilController.java index 23f9ad27..64ecb2da 100644 --- a/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/ZdxtFileUtilController.java +++ b/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/ZdxtFileUtilController.java @@ -1,7 +1,10 @@ package com.zdxt.enforcementcode.controller; +import cn.dev33.satoken.annotation.SaIgnore; import com.zdxt.enforcementcode.domain.vo.ZdxtFileVo; import com.zdxt.enforcementcode.helper.ZdxtFileHelper; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; @@ -11,10 +14,16 @@ import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.web.core.BaseController; +import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.io.OutputStream; +import java.net.URLConnection; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; /** diff --git a/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnterpriseInformationController.java b/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnterpriseInformationController.java index 9991ea86..d3e0e68a 100644 --- a/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnterpriseInformationController.java +++ b/ruoyi-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enterprise/AppEnterpriseInformationController.java @@ -37,8 +37,8 @@ public class AppEnterpriseInformationController { * @return 企业信息列表(enterpriseId, enterpriseName, enterpriseNumber) */ @SaIgnore - @GetMapping("/getEnterpriseInfo") - public R如果企业已存在有效二维码,则直接返回已有记录,不重复生成
*/ @Override - public QrCodeGenerateHistoryVo generateQrCode(String type, String enterpriseNumber, String formModule) { + public QrCodeGenerateHistoryVo generateQrCode(String type, String enterpriseNumber, String formModule,String reasonsChange) { // 1. 校验企业是否存在 EnterpriseInformationVo enterprise = queryByEnterpriseNumber(enterpriseNumber); if (enterprise == null) { @@ -197,7 +197,7 @@ public class EnterpriseInformationServiceImpl implements IEnterpriseInformationS // 3. 生成二维码 QrCodeGenerateHistoryVo qrCodeVo = QrCodeHelper.generateBlueWithLogoAndSave(enterprise.getSalt(), - type, enterprise.getId(), enterpriseNumber, formModule, new Date(), ""); + type, enterprise.getId(), enterpriseNumber, formModule, new Date(), "", reasonsChange); log.info("企业[{}]二维码生成成功,qrCodeId={}", enterpriseNumber, qrCodeVo.getId()); // 4. 更新企业的二维码ID和最后生成时间 diff --git a/ruoyi-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LinkageDictMapper.xml b/ruoyi-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LinkageDictMapper.xml new file mode 100644 index 00000000..f1f48b8a --- /dev/null +++ b/ruoyi-modules/zdxt-enforcement-code/src/main/resources/mapper/enforcementcode/LinkageDictMapper.xml @@ -0,0 +1,6 @@ + + +