From 04f620dc8acfa730fd0966eab709dcc8119c4dd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Thu, 27 Jun 2019 15:02:18 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E3=80=82=20Controll=20=E5=90=8D=E7=A7=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9,=E5=8D=87=E7=BA=A7=20hutool=20=204.5.15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resolver/SqlFilterArgumentResolver.java | 2 +- ...a => PigxRibbonRuleAutoConfiguration.java} | 9 +- .../predicate/MetadataAwarePredicate.java | 4 +- .../gateway/rule/MetadataAwareRule.java | 4 +- .../pigx/admin/api/entity/SysFile.java | 34 +---- .../pigx/admin/controller/FileController.java | 143 ------------------ ...ntroller.java => SysClientController.java} | 14 +- ...Controller.java => SysDeptController.java} | 2 +- ...Controller.java => SysDictController.java} | 2 +- .../admin/controller/SysFileController.java | 72 ++++----- ...gController.java => SysLogController.java} | 2 +- ...Controller.java => SysMenuController.java} | 2 +- ...Controller.java => SysRoleController.java} | 2 +- ...ontroller.java => SysTokenController.java} | 2 +- ...Controller.java => SysUserController.java} | 2 +- .../pigx/admin/service/SysFileService.java | 27 ++++ .../service/impl/SysFileServiceImpl.java | 99 ++++++++++++ .../main/resources/mapper/SysFileMapper.xml | 18 --- pom.xml | 10 +- 19 files changed, 187 insertions(+), 263 deletions(-) rename pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/{MicaRibbonRuleAutoConfiguration.java => PigxRibbonRuleAutoConfiguration.java} (88%) delete mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/FileController.java rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{OauthClientDetailsController.java => SysClientController.java} (84%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{DeptController.java => SysDeptController.java} (98%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{DictController.java => SysDictController.java} (99%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{LogController.java => SysLogController.java} (98%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{MenuController.java => SysMenuController.java} (99%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{RoleController.java => SysRoleController.java} (99%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{TokenController.java => SysTokenController.java} (98%) rename pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/{UserController.java => SysUserController.java} (99%) diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/SqlFilterArgumentResolver.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/SqlFilterArgumentResolver.java index fb356b398..7dc4fe88b 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/SqlFilterArgumentResolver.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/resolver/SqlFilterArgumentResolver.java @@ -78,7 +78,7 @@ public class SqlFilterArgumentResolver implements HandlerMethodArgumentResolver } if (StrUtil.isNotBlank(size)) { - page.setCurrent(Long.parseLong(size)); + page.setSize(Long.parseLong(size)); } page.setAsc(sqlInject(ascs)); diff --git a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/MicaRibbonRuleAutoConfiguration.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/PigxRibbonRuleAutoConfiguration.java similarity index 88% rename from pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/MicaRibbonRuleAutoConfiguration.java rename to pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/PigxRibbonRuleAutoConfiguration.java index 8133a9f61..9ccbd85f2 100755 --- a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/MicaRibbonRuleAutoConfiguration.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/configuration/PigxRibbonRuleAutoConfiguration.java @@ -19,7 +19,7 @@ package com.pig4cloud.pigx.common.gateway.configuration; import com.pig4cloud.pigx.common.gateway.rule.DiscoveryEnabledRule; import com.pig4cloud.pigx.common.gateway.rule.MetadataAwareRule; -import com.pig4cloud.pigx.common.gateway.support.MicaRibbonRuleProperties; +import com.pig4cloud.pigx.common.gateway.support.PigxRibbonRuleProperties; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.boot.autoconfigure.AutoConfigureBefore; @@ -37,14 +37,15 @@ import org.springframework.context.annotation.Scope; * Mica ribbon rule auto configuration. * * @author L.cm + * @link https://github.com/lets-mica/mica */ @Configuration @RequiredArgsConstructor @ConditionalOnClass(NacosServer.class) @AutoConfigureBefore(RibbonClientConfiguration.class) -@EnableConfigurationProperties(MicaRibbonRuleProperties.class) -@ConditionalOnProperty(value = "mica.ribbon.rule.enabled", matchIfMissing = true) -public class MicaRibbonRuleAutoConfiguration { +@EnableConfigurationProperties(PigxRibbonRuleProperties.class) +@ConditionalOnProperty(value = "ribbon.rule.enabled", matchIfMissing = true) +public class PigxRibbonRuleAutoConfiguration { @Bean @ConditionalOnMissingBean diff --git a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/predicate/MetadataAwarePredicate.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/predicate/MetadataAwarePredicate.java index f102b1419..e57869a0a 100755 --- a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/predicate/MetadataAwarePredicate.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/predicate/MetadataAwarePredicate.java @@ -19,7 +19,7 @@ package com.pig4cloud.pigx.common.gateway.predicate; import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; -import com.pig4cloud.pigx.common.gateway.support.MicaRibbonRuleProperties; +import com.pig4cloud.pigx.common.gateway.support.PigxRibbonRuleProperties; import org.springframework.cloud.alibaba.nacos.ribbon.NacosServer; import java.util.Map; @@ -36,7 +36,7 @@ public class MetadataAwarePredicate extends DiscoveryEnabledPredicate { final Map metadata = server.getMetadata(); // 获取配置 - MicaRibbonRuleProperties properties = SpringContextHolder.getBean(MicaRibbonRuleProperties.class); + PigxRibbonRuleProperties properties = SpringContextHolder.getBean(PigxRibbonRuleProperties.class); // 服务里的配置 String localTag = properties.getTag(); diff --git a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/rule/MetadataAwareRule.java b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/rule/MetadataAwareRule.java index edaf61c94..97ee7e49a 100755 --- a/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/rule/MetadataAwareRule.java +++ b/pigx-common/pigx-common-gateway/src/main/java/com/pig4cloud/pigx/common/gateway/rule/MetadataAwareRule.java @@ -24,7 +24,7 @@ import com.netflix.loadbalancer.Server; import com.pig4cloud.pigx.common.core.util.SpringContextHolder; import com.pig4cloud.pigx.common.gateway.predicate.DiscoveryEnabledPredicate; import com.pig4cloud.pigx.common.gateway.predicate.MetadataAwarePredicate; -import com.pig4cloud.pigx.common.gateway.support.MicaRibbonRuleProperties; +import com.pig4cloud.pigx.common.gateway.support.PigxRibbonRuleProperties; import org.springframework.util.PatternMatchUtils; import java.util.ArrayList; @@ -48,7 +48,7 @@ public class MetadataAwareRule extends DiscoveryEnabledRule { @Override public List filterServers(List serverList) { - MicaRibbonRuleProperties ribbonProperties = SpringContextHolder.getBean(MicaRibbonRuleProperties.class); + PigxRibbonRuleProperties ribbonProperties = SpringContextHolder.getBean(PigxRibbonRuleProperties.class); List priorIpPattern = ribbonProperties.getPriorIpPattern(); // 1. 查找是否有本机 ip diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java index 27c9a897c..7c8cd8fae 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java @@ -17,10 +17,9 @@ package com.pig4cloud.pigx.admin.api.entity; -import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModel; import lombok.Data; @@ -43,37 +42,20 @@ public class SysFile extends Model { /** * 编号 */ - @TableId - private String id; + @TableId(type = IdType.AUTO) + private Long id; /** * 文件名 */ - @TableField("`name`") - private String name; - /** - * 保存路径 - */ - private String path; - /** - * 绝对路径 - */ - private String absolutePath; - /** - * 上传服务器前缀地址 - */ - private String prefix; + private String fileName; /** * 原文件名 */ private String original; /** - * MD5值 + * 容器名称 */ - private String md5; - /** - * 后缀名 - */ - private String suffix; + private String bucketName; /** * 文件类型 */ @@ -82,10 +64,6 @@ public class SysFile extends Model { * 文件大小 */ private Long fileSize; - /** - * 显示大小 - */ - private String displaySize; /** * 上传人 */ diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/FileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/FileController.java deleted file mode 100644 index de4b99401..000000000 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/FileController.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2018-2025, lengleng All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the pig4cloud.com developer nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * Author: lengleng (wangiegie@gmail.com) - */ - -package com.pig4cloud.pigx.admin.controller; - -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.io.IoUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.pig4cloud.common.minio.service.MinioTemplate; -import com.pig4cloud.pigx.admin.api.entity.SysFile; -import com.pig4cloud.pigx.admin.service.SysFileService; -import com.pig4cloud.pigx.admin.util.FileKit; -import com.pig4cloud.pigx.common.core.constant.CommonConstants; -import com.pig4cloud.pigx.common.core.util.R; -import io.swagger.annotations.Api; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.codec.digest.DigestUtils; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -; - -/** - * @author lengleng - * @date 2018-12-30 - *

- * 文件管理 - */ -@Slf4j -@RestController -@AllArgsConstructor -@RequestMapping("/file") -@Api(value = "file", tags = "文件管理模块") -public class FileController { - private final MinioTemplate minioTemplate; - private final SysFileService sysFileService; - /** - * 上传文件 - * 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 - * - * @param file 资源 - * @return R(bucketName, filename) - */ - @PostMapping("/upload") - public R upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { - String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename()); - Map resultMap = new HashMap<>(4); - resultMap.put("bucketName", CommonConstants.BUCKET_NAME); - resultMap.put("fileName", fileName); - - try { - minioTemplate.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream()); - String tenantId = request.getHeader(CommonConstants.TENANT_ID); - log.debug("获取header中的租户ID为:{}", tenantId); - //文件管理数据记录,收集管理追踪文件 - fileLog(file, fileName,tenantId); - } catch (Exception e) { - log.error("上传失败", e); - return R.failed(e.getLocalizedMessage()); - } - return R.ok(resultMap); - } - - /** - * 文件管理数据记录,收集管理追踪文件 - * - * @param file 上传文件格式 - * @param fileName 文件名 - */ - private void fileLog(MultipartFile file, String fileName, String tenantId) throws IOException { - SysFile sysFile = new SysFile(); - //存储文件名 - String name = CommonConstants.BUCKET_NAME + StrUtil.DASHED + fileName; - //原文件名 - String original = file.getOriginalFilename(); - //文件大小 - Long size = file.getSize(); - //后缀名 - String suffix = FileKit.getSuffix(name); - //文件类型 - String type = FileKit.getType(name); - //显示大小 - String displaySize = FileKit.getDisplaySize(file.getSize()); - - sysFile.setName(name); - sysFile.setOriginal(original); - sysFile.setFileSize(size); - sysFile.setSuffix(suffix); - sysFile.setType(type); - sysFile.setDisplaySize(displaySize); - sysFile.setMd5(DigestUtils.md5Hex(file.getBytes())); - -// if (StrUtil.isNotBlank(tenantId)) { -// sysFile.setTenantId(Integer.parseInt(tenantId)); -// } else { -// sysFile.setTenantId(CommonConstants.TENANT_ID_1); -// } - - sysFileService.save(sysFile); - } - - - /** - * 获取文件 - * - * @param fileName 文件空间/名称 - * @param response - * @return - */ - @GetMapping("/{fileName}") - public void file(@PathVariable String fileName, HttpServletResponse response) { - Integer separator = fileName.lastIndexOf(StrUtil.DASHED); - try (InputStream inputStream = minioTemplate.getObject(fileName.substring(0, separator), fileName.substring(separator + 1, fileName.length()))) { - response.setContentType("application/octet-stream; charset=UTF-8"); - IoUtil.copy(inputStream, response.getOutputStream()); - } catch (Exception e) { - log.error("文件读取异常", e); - } - } -} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/OauthClientDetailsController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java similarity index 84% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/OauthClientDetailsController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java index 6f74e030a..b3f216cc8 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/OauthClientDetailsController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysClientController.java @@ -44,8 +44,8 @@ import javax.validation.Valid; @AllArgsConstructor @RequestMapping("/client") @Api(value = "client", tags = "客户端管理模块") -public class OauthClientDetailsController { - private final SysOauthClientDetailsService sysOauthClientDetailsService; +public class SysClientController { + private final SysOauthClientDetailsService clientDetailsService; /** * 通过ID查询 @@ -55,7 +55,7 @@ public class OauthClientDetailsController { */ @GetMapping("/{id}") public R getById(@PathVariable Integer id) { - return R.ok(sysOauthClientDetailsService.getById(id)); + return R.ok(clientDetailsService.getById(id)); } @@ -68,7 +68,7 @@ public class OauthClientDetailsController { */ @GetMapping("/page") public R getOauthClientDetailsPage(Page page, SysOauthClientDetails sysOauthClientDetails) { - return R.ok(sysOauthClientDetailsService.page(page, Wrappers.query(sysOauthClientDetails))); + return R.ok(clientDetailsService.page(page, Wrappers.query(sysOauthClientDetails))); } /** @@ -81,7 +81,7 @@ public class OauthClientDetailsController { @PostMapping @PreAuthorize("@pms.hasPermission('sys_client_add')") public R add(@Valid @RequestBody SysOauthClientDetails sysOauthClientDetails) { - return R.ok(sysOauthClientDetailsService.save(sysOauthClientDetails)); + return R.ok(clientDetailsService.save(sysOauthClientDetails)); } /** @@ -94,7 +94,7 @@ public class OauthClientDetailsController { @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('sys_client_del')") public R removeById(@PathVariable String id) { - return R.ok(sysOauthClientDetailsService.removeClientDetailsById(id)); + return R.ok(clientDetailsService.removeClientDetailsById(id)); } /** @@ -107,6 +107,6 @@ public class OauthClientDetailsController { @PutMapping @PreAuthorize("@pms.hasPermission('sys_client_edit')") public R update(@Valid @RequestBody SysOauthClientDetails sysOauthClientDetails) { - return R.ok(sysOauthClientDetailsService.updateClientDetailsById(sysOauthClientDetails)); + return R.ok(clientDetailsService.updateClientDetailsById(sysOauthClientDetails)); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DeptController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java similarity index 98% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DeptController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java index 893a2d8f8..e3aafa619 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DeptController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDeptController.java @@ -43,7 +43,7 @@ import java.time.LocalDateTime; @AllArgsConstructor @RequestMapping("/dept") @Api(value = "dept", tags = "部门管理模块") -public class DeptController { +public class SysDeptController { private final SysDeptService sysDeptService; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java similarity index 99% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java index ff886434c..0ce592b87 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/DictController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysDictController.java @@ -51,7 +51,7 @@ import javax.validation.Valid; @AllArgsConstructor @RequestMapping("/dict") @Api(value = "dict", tags = "字典管理模块") -public class DictController { +public class SysDictController { private final SysDictService sysDictService; private final SysDictItemService sysDictItemService; diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java index e7e9f2f26..f135e486d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java @@ -28,6 +28,9 @@ import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; /** @@ -41,7 +44,6 @@ import org.springframework.web.bind.annotation.*; @RequestMapping("/sys-file") @Api(value = "sys-file", tags = "文件管理") public class SysFileController { - private final SysFileService sysFileService; /** @@ -58,46 +60,6 @@ public class SysFileController { } - /** - * 通过id查询文件管理 - * - * @param id id - * @return R - */ - @ApiOperation(value = "通过id查询文件管理", notes = "通过id查询文件管理") - @GetMapping("/{id}") - public R getById(@PathVariable("id") String id) { - return R.ok(sysFileService.getById(id)); - } - - /** - * 新增文件管理 - * - * @param sysFile 文件管理 - * @return R - */ - @ApiOperation(value = "新增文件管理", notes = "新增文件管理") - @SysLog("新增文件管理") - @PostMapping - @PreAuthorize("@pms.hasPermission('sys_file_add')") - public R save(@RequestBody SysFile sysFile) { - return R.ok(sysFileService.save(sysFile)); - } - - /** - * 修改文件管理 - * - * @param sysFile 文件管理 - * @return R - */ - @ApiOperation(value = "修改文件管理", notes = "修改文件管理") - @SysLog("修改文件管理") - @PutMapping - @PreAuthorize("@pms.hasPermission('sys_file_edit')") - public R updateById(@RequestBody SysFile sysFile) { - return R.ok(sysFileService.updateById(sysFile)); - } - /** * 通过id删除文件管理 * @@ -108,8 +70,32 @@ public class SysFileController { @SysLog("删除文件管理") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('sys_file_del')") - public R removeById(@PathVariable String id) { - return R.ok(sysFileService.removeById(id)); + public R removeById(@PathVariable Long id) { + return R.ok(sysFileService.deleteFile(id)); + } + + /** + * 上传文件 + * 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常 + * + * @param file 资源 + * @return R(bucketName, filename) + */ + @PostMapping("/upload") + public R upload(@RequestParam("file") MultipartFile file) { + return sysFileService.uploadFile(file); + } + + /** + * 获取文件 + * + * @param fileName 文件空间/名称 + * @param response + * @return + */ + @GetMapping("/{fileName}") + public void file(@PathVariable String fileName, HttpServletResponse response) { + sysFileService.getFile(fileName, response); } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/LogController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java similarity index 98% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/LogController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java index 5149782cf..dacf29fa4 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/LogController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysLogController.java @@ -47,7 +47,7 @@ import java.util.List; @AllArgsConstructor @RequestMapping("/log") @Api(value = "log", tags = "日志管理模块") -public class LogController { +public class SysLogController { private final SysLogService sysLogService; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MenuController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java similarity index 99% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MenuController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java index 9ecdebdb1..3790e70d6 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/MenuController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysMenuController.java @@ -49,7 +49,7 @@ import java.util.stream.Collectors; @AllArgsConstructor @RequestMapping("/menu") @Api(value = "menu", tags = "菜单管理模块") -public class MenuController { +public class SysMenuController { private final SysMenuService sysMenuService; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RoleController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java similarity index 99% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RoleController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java index 49c36dc53..254a880f4 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/RoleController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysRoleController.java @@ -41,7 +41,7 @@ import javax.validation.Valid; @AllArgsConstructor @RequestMapping("/role") @Api(value = "role", tags = "角色管理模块") -public class RoleController { +public class SysRoleController { private final SysRoleService sysRoleService; private final SysRoleMenuService sysRoleMenuService; diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/TokenController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTokenController.java similarity index 98% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/TokenController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTokenController.java index 65d5df9ca..983bdbff5 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/TokenController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysTokenController.java @@ -37,7 +37,7 @@ import java.util.Map; @AllArgsConstructor @RequestMapping("/token") @Api(value = "token", tags = "令牌管理模块") -public class TokenController { +public class SysTokenController { private final RemoteTokenService remoteTokenService; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java similarity index 99% rename from pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java rename to pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java index 579e46afa..52e8c32a5 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/UserController.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysUserController.java @@ -46,7 +46,7 @@ import javax.validation.Valid; @AllArgsConstructor @RequestMapping("/user") @Api(value = "user", tags = "用户管理模块") -public class UserController { +public class SysUserController { private final SysUserService userService; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java index dab76d4b6..7bf2aeec7 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysFileService.java @@ -19,6 +19,10 @@ package com.pig4cloud.pigx.admin.service; import com.baomidou.mybatisplus.extension.service.IService; import com.pig4cloud.pigx.admin.api.entity.SysFile; +import com.pig4cloud.pigx.common.core.util.R; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; /** * 文件管理 @@ -28,4 +32,27 @@ import com.pig4cloud.pigx.admin.api.entity.SysFile; */ public interface SysFileService extends IService { + /** + * 上传文件 + * + * @param file + * @return + */ + R uploadFile(MultipartFile file); + + /** + * 读取文件 + * + * @param fileName + * @param response + */ + void getFile(String fileName, HttpServletResponse response); + + /** + * 删除文件 + * + * @param id + * @return + */ + Boolean deleteFile(Long id); } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java index c0b9008f1..c43f80663 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java @@ -16,11 +16,29 @@ */ package com.pig4cloud.pigx.admin.service.impl; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.common.minio.service.MinioTemplate; import com.pig4cloud.pigx.admin.api.entity.SysFile; import com.pig4cloud.pigx.admin.mapper.SysFileMapper; import com.pig4cloud.pigx.admin.service.SysFileService; +import com.pig4cloud.pigx.common.core.constant.CommonConstants; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.security.util.SecurityUtils; +import lombok.AllArgsConstructor; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; /** * 文件管理 @@ -28,7 +46,88 @@ import org.springframework.stereotype.Service; * @author Luckly * @date 2019-06-18 17:18:42 */ +@Slf4j @Service +@AllArgsConstructor public class SysFileServiceImpl extends ServiceImpl implements SysFileService { + private final MinioTemplate minioTemplate; + + + /** + * 上传文件 + * + * @param file + * @return + */ + @Override + public R uploadFile(MultipartFile file) { + String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename()); + Map resultMap = new HashMap<>(4); + resultMap.put("bucketName", CommonConstants.BUCKET_NAME); + resultMap.put("fileName", fileName); + + try { + minioTemplate.putObject(CommonConstants.BUCKET_NAME, fileName, file.getInputStream()); + //文件管理数据记录,收集管理追踪文件 + fileLog(file, fileName); + } catch (Exception e) { + log.error("上传失败", e); + return R.failed(e.getLocalizedMessage()); + } + return R.ok(resultMap); + } + + /** + * 读取文件 + * + * @param fileName + * @param response + */ + @Override + public void getFile(String fileName, HttpServletResponse response) { + int separator = fileName.lastIndexOf(StrUtil.DASHED); + try (InputStream inputStream = minioTemplate.getObject(fileName.substring(0, separator), + fileName.substring(separator + 1))) { + response.setContentType("application/octet-stream; charset=UTF-8"); + IoUtil.copy(inputStream, response.getOutputStream()); + } catch (Exception e) { + log.error("文件读取异常", e); + } + } + + + /** + * 删除文件 + * + * @param id + * @return + */ + @Override + @SneakyThrows + @Transactional(rollbackFor = Exception.class) + public Boolean deleteFile(Long id) { + SysFile file = this.getById(id); + minioTemplate.removeObject(CommonConstants.BUCKET_NAME, file.getFileName()); + return this.removeById(id); + } + + /** + * 文件管理数据记录,收集管理追踪文件 + * + * @param file 上传文件格式 + * @param fileName 文件名 + */ + private void fileLog(MultipartFile file, String fileName) { + SysFile sysFile = new SysFile(); + //原文件名 + String original = file.getOriginalFilename(); + sysFile.setFileName(fileName); + sysFile.setOriginal(original); + sysFile.setFileSize(file.getSize()); + sysFile.setType(FileUtil.extName(original)); + sysFile.setBucketName(CommonConstants.BUCKET_NAME); + sysFile.setCreateUser(SecurityUtils.getUser().getUsername()); + this.save(sysFile); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysFileMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysFileMapper.xml index d10c399d3..780530b31 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysFileMapper.xml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysFileMapper.xml @@ -23,22 +23,4 @@ - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index b6296f3ed..c79047352 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ 1.8 2.1.5 1.1.2-beta5 - 4.5.13 + 4.5.15 0.0.9 2.9.2 1.9.4 @@ -62,8 +62,7 @@ 2.10.2 6.0.7 2.1.5 - 2.3.5.RELEASE - 2.1.2.RELEASE + 2.3.6.RELEASE 5.22.0 2.12.2 2.8.4 @@ -168,11 +167,6 @@ spring-security-oauth2 ${security.oauth.version} - - org.springframework.security.oauth.boot - spring-security-oauth2-autoconfigure - ${security.oauth.auto.version} - org.springframework.boot