diff --git a/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java b/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java index b7a68c08..8d236114 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java @@ -222,6 +222,31 @@ public class CommonController { downloadAndView(id, response); } + /** + * 下载不带水印不加密的文件 + * + * @param id 传入文件id + * @param response + */ + @ApiOperation(value = "下载不带水印不加密的文件", notes = "下载不带水印不加密的文件") + @GetMapping(value = "/noEncryptDownloadWithoutWaterMark/{id}") + public void noEncryptDownloadWithoutWaterMark(@PathVariable String id, HttpServletResponse response) { + downloadAndView(id, response); + } + + + /** + * 下载不带水印研发加密的文件 + * + * @param id 传入文件id + * @param response + */ + @ApiOperation(value = "下载不带水印研发加密的文件", notes = "下载不带水印研发加密的文件") + @GetMapping(value = "/devEncryptDownloadWithoutWaterMark/{id}") + public void devEncryptDownloadWithoutWaterMark(@PathVariable String id, HttpServletResponse response) { + downloadAndView(id, response); + } + /** * 下载文件(不带token) * diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java index d2b7ee1a..8c253ddc 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/download/service/impl/DownloadDecryptFileServiceImpl.java @@ -52,6 +52,9 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic @Value("#{'${download.white_url}'.split(',')}") private List whiteUrls; + @Value("#{'${download.dev_encrypt_url}'.split(',')}") + private List devEncryptUrls; + /** * 管理员角色 */ @@ -102,6 +105,15 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic return; } } + + // 是否加研发密 + boolean isDevEncrypt = false; + for (String devEncryptUrl : devEncryptUrls) { + if (requestUrl.contains(devEncryptUrl)) { + isDevEncrypt = true; + break; + } + } // 判断返回值是否为文件流,否则其他接口返回值会变更成字符串,导致前端无法解析 HandlerMethod handlerMethod = (HandlerMethod) handler; InputStream responseBody = null; @@ -130,6 +142,8 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic boolean b1 = isBoolean(str, downloadUrl); + int scope = getScope(isDevEncrypt); + if(b){ // 预览,进行解密 decryptFile(response, file, null); @@ -144,7 +158,6 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic isZipFile = true; } if (isZipFile) return; - int scope = getScope(); // 加密 encryptFile(response, fileDecrypt, scope); } catch (Exception e) { @@ -153,8 +166,6 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic } }else{ - // excel 判断组织域,加密 - int scope = getScope(); // 加密 encryptFile(response, file, scope); } @@ -224,22 +235,26 @@ public class DownloadDecryptFileServiceImpl implements DownloadDecryptFileServic return b; } - private int getScope() { + private int getScope(boolean isDevEncrypt) { // 角色信息中存在 【系统管理员】或者 【标准管理员】即加为研发密,其他情况都是OA密 // 研发密比较高级(加密需要传参) // 研发域 scope = 51 // 办公密 scope = 52 - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - List listRoleCode = Arrays.asList(sysUser.getRoleIds().split(",")); - if(CollectionUtils.isEmpty(listRoleCode)){ - throw new JeroBootException(ResultCommon.ERROR); +// LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); +// List listRoleCode = Arrays.asList(sysUser.getRoleIds().split(",")); +// if(CollectionUtils.isEmpty(listRoleCode)){ +// throw new JeroBootException(ResultCommon.ERROR); +// } +// int scope = scopeWork; +// long l = listRoleCode.stream().filter(o->adminRoleCode.contains(o)).count(); +// if(l > 0){ +// scope = scopeDev; +// } + if (isDevEncrypt) { + return scopeDev; + } else { + return scopeWork; } - int scope = scopeWork; - long l = listRoleCode.stream().filter(o->adminRoleCode.contains(o)).count(); - if(l > 0){ - scope = scopeDev; - } - return scope; } private void writeResponse(HttpServletResponse response,InputStream is) { diff --git a/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java b/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java index 27d14bda..0f73b7d2 100644 --- a/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java +++ b/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java @@ -60,6 +60,30 @@ public class SysCommonController { downloadAndViewWithWaterMark(id, response); } + /** + * 无加密下载文件 + * + * @param id 传入文件id + * @param request + * @param response + */ + @GetMapping(value = "/noEncryptDownload/{id}") + public void noEncryptDownload(@PathVariable String id, HttpServletRequest request, HttpServletResponse response) { + downloadAndViewWithWaterMark(id, response); + } + + /** + * 研发密下载文件 + * + * @param id 传入文件id + * @param request + * @param response + */ + @GetMapping(value = "/devEncryptDownload/{id}") + public void devEncryptDownload(@PathVariable String id, HttpServletRequest request, HttpServletResponse response) { + downloadAndViewWithWaterMark(id, response); + } + /** * 预览图片 * diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index 335c4bf0..64496099 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -459,7 +459,8 @@ download: # 文件下载、预览拦截路径,多个以逗号分隔 download_url: /sys/common/download/ view_url: /sys/common/view/ - white_url: /onlyOffice,/enterprise/templateDownload,/exportDataWithFile,/exportSplitInfoZip,/lawsCustomCompareInfo/exportExcel + white_url: /noEncryptDownload,/overseas/exportData,/overseas/exportDataWithFile,/overseas/templateDownload,/domestic/exportData,/domestic/exportDataWithFile,/domestic/templateDownload,/onlyOffice,/enterprise/templateDownload,/exportDataWithFile,/exportSplitInfoZip,/lawsCustomCompareInfo/exportExcel + dev_encrypt_url: /devEncryptDownload, /enterprise/exportData # 管理员角色 admin_role_code: admin,BZGLY # 加密参数 diff --git a/laws-single-startup/src/main/resources/application-prod.yml b/laws-single-startup/src/main/resources/application-prod.yml index 65d50a63..a690cf4a 100644 --- a/laws-single-startup/src/main/resources/application-prod.yml +++ b/laws-single-startup/src/main/resources/application-prod.yml @@ -431,7 +431,8 @@ download: # 文件下载、预览拦截路径,多个以逗号分隔 download_url: /sys/common/download/ view_url: /sys/common/view/ - white_url: /onlyOffice,/enterprise/templateDownload,/exportDataWithFile,/exportSplitInfoZip,/lawsCustomCompareInfo/exportExcel + white_url: /noEncryptDownload,/overseas/exportData,/overseas/exportDataWithFile,/overseas/templateDownload,/domestic/exportData,/domestic/exportDataWithFile,/domestic/templateDownload,/onlyOffice,/enterprise/templateDownload,/exportDataWithFile,/exportSplitInfoZip,/lawsCustomCompareInfo/exportExcel + dev_encrypt_url: /devEncryptDownload, /enterprise/exportData # 管理员角色 admin_role_code: admin,BZGLY # 加密参数 diff --git a/laws-single-startup/src/main/resources/application-test.yml b/laws-single-startup/src/main/resources/application-test.yml index 7af233ab..e92a5f5d 100644 --- a/laws-single-startup/src/main/resources/application-test.yml +++ b/laws-single-startup/src/main/resources/application-test.yml @@ -423,7 +423,8 @@ download: # 文件下载、预览拦截路径,多个以逗号分隔 download_url: /sys/common/download/,/laws/standard/common/downloadWithWaterMark view_url: /sys/common/view/,/onlyOffice/downLoadFile - white_url: /onlyOffice + white_url: /noEncryptDownload,/overseas/exportData,/overseas/exportDataWithFile,/overseas/templateDownload,/domestic/exportData,/domestic/exportDataWithFile,/domestic/templateDownload,/onlyOffice,/enterprise/templateDownload,/exportDataWithFile,/exportSplitInfoZip,/lawsCustomCompareInfo/exportExcel + dev_encrypt_url: /devEncryptDownload, /enterprise/exportData # 管理员角色 admin_role_code: admin,BZGLY # 加密参数