Browse Source

【ADD】文件导出公共方法

ZhaoMn 4 years ago
parent
commit
7b4e431bc3
26 changed files with 575 additions and 261 deletions
  1. 1 1
      railway-admin/src/main/java/com/railway/web/controller/business/catenary/BusJcbBlqController.java
  2. 1 1
      railway-admin/src/main/java/com/railway/web/controller/business/catenary/BusJcbFdfxjyqController.java
  3. 1 6
      railway-admin/src/main/java/com/railway/web/controller/common/CommonController.java
  4. 8 2
      railway-admin/src/main/java/com/railway/web/controller/monitor/SysLogininforController.java
  5. 7 2
      railway-admin/src/main/java/com/railway/web/controller/monitor/SysOperlogController.java
  6. 7 2
      railway-admin/src/main/java/com/railway/web/controller/system/SysConfigController.java
  7. 7 2
      railway-admin/src/main/java/com/railway/web/controller/system/SysDictDataController.java
  8. 7 2
      railway-admin/src/main/java/com/railway/web/controller/system/SysDictTypeController.java
  9. 7 2
      railway-admin/src/main/java/com/railway/web/controller/system/SysPostController.java
  10. 6 2
      railway-admin/src/main/java/com/railway/web/controller/system/SysRoleController.java
  11. 9 3
      railway-admin/src/main/java/com/railway/web/controller/system/SysUserController.java
  12. 188 0
      railway-admin/src/main/resources/application-dev.yml
  13. 0 57
      railway-admin/src/main/resources/application-druid.yml
  14. 188 0
      railway-admin/src/main/resources/application-local.yml
  15. 1 134
      railway-admin/src/main/resources/application.yml
  16. 10 0
      railway-common/src/main/java/com/railway/common/config/RailwayConfig.java
  17. 5 0
      railway-common/src/main/java/com/railway/common/constant/Constants.java
  18. 12 0
      railway-common/src/main/java/com/railway/common/core/domain/AjaxResult.java
  19. 25 0
      railway-common/src/main/java/com/railway/common/utils/file/FileUploadUtils.java
  20. 23 30
      railway-common/src/main/java/com/railway/common/utils/poi/ExcelUtil.java
  21. 1 1
      railway-framework/src/main/java/com/railway/framework/config/ResourcesConfig.java
  22. 19 10
      railway-system/src/main/java/com/railway/system/service/ISysFileService.java
  23. 38 0
      railway-system/src/main/java/com/railway/system/service/impl/AbstractFileService.java
  24. 1 1
      railway-system/src/main/java/com/railway/system/service/impl/FastDfsSysFileServiceImpl.java
  25. 2 2
      railway-system/src/main/java/com/railway/system/service/impl/LocalSysFileServiceImpl.java
  26. 1 1
      railway-system/src/main/java/com/railway/system/service/impl/MinioSysFileServiceImpl.java

+ 1 - 1
railway-admin/src/main/java/com/railway/web/controller/business/catenary/BusJcbBlqController.java

@@ -36,7 +36,7 @@ public class BusJcbBlqController extends BaseController {
     @Autowired
     @Autowired
     private IBusJcbBlqService busJcbBlqService;
     private IBusJcbBlqService busJcbBlqService;
 
 
-    @Value("${file.path}")
+    @Value("${railway.filePath}")
     public String filePath;
     public String filePath;
 
 
     @ApiOperation(value = "新增")
     @ApiOperation(value = "新增")

+ 1 - 1
railway-admin/src/main/java/com/railway/web/controller/business/catenary/BusJcbFdfxjyqController.java

@@ -40,7 +40,7 @@ public class BusJcbFdfxjyqController extends BaseController {
     @Autowired
     @Autowired
     private IBusJcbFdfxjyqService busJcbFdfxjyqService;
     private IBusJcbFdfxjyqService busJcbFdfxjyqService;
 
 
-    @Value("${file.path}")
+    @Value("${railway.filePath}")
     public String filePath;
     public String filePath;
 
 
     @ApiOperation(value = "新增")
     @ApiOperation(value = "新增")

+ 1 - 6
railway-admin/src/main/java/com/railway/web/controller/common/CommonController.java

@@ -42,12 +42,7 @@ public class CommonController {
     try {
     try {
       // 上传并返回访问地址
       // 上传并返回访问地址
       String url = sysFileService.uploadFile(file);
       String url = sysFileService.uploadFile(file);
-      // 新文件名称
-      String fileName = FileUtils.getName(url);
-      AjaxResult ajax = AjaxResult.success();
-      ajax.put("fileName", fileName);
-      ajax.put("url", url);
-      return ajax;
+      return AjaxResult.uploadFile(url, file.getOriginalFilename());
     } catch (Exception e) {
     } catch (Exception e) {
       return AjaxResult.error(e.getMessage());
       return AjaxResult.error(e.getMessage());
     }
     }

+ 8 - 2
railway-admin/src/main/java/com/railway/web/controller/monitor/SysLogininforController.java

@@ -5,8 +5,10 @@ import com.railway.common.core.controller.BaseController;
 import com.railway.common.core.domain.AjaxResult;
 import com.railway.common.core.domain.AjaxResult;
 import com.railway.common.core.page.TableDataInfo;
 import com.railway.common.core.page.TableDataInfo;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.enums.BusinessType;
+import com.railway.common.utils.file.FileUploadUtils;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.system.domain.SysLogininfor;
 import com.railway.system.domain.SysLogininfor;
+import com.railway.system.service.ISysFileService;
 import com.railway.system.service.ISysLogininforService;
 import com.railway.system.service.ISysLogininforService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import java.util.List;
 import java.util.List;
@@ -28,9 +30,12 @@ import org.springframework.web.bind.annotation.RestController;
 public class SysLogininforController extends BaseController {
 public class SysLogininforController extends BaseController {
 
 
   private final ISysLogininforService logininforService;
   private final ISysLogininforService logininforService;
+  private final ISysFileService sysFileService;
 
 
-  public SysLogininforController(ISysLogininforService logininforService) {
+  public SysLogininforController(ISysLogininforService logininforService,
+      ISysFileService sysFileService) {
     this.logininforService = logininforService;
     this.logininforService = logininforService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
   @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
@@ -47,7 +52,8 @@ public class SysLogininforController extends BaseController {
   public AjaxResult export(SysLogininfor logininfor) {
   public AjaxResult export(SysLogininfor logininfor) {
     List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
     List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
     ExcelUtil<SysLogininfor> util = new ExcelUtil<>(SysLogininfor.class);
     ExcelUtil<SysLogininfor> util = new ExcelUtil<>(SysLogininfor.class);
-    return util.exportExcel(list, "登录日志");
+    String localFilePath = util.exportExcel(list, "登录日志");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
   @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")

+ 7 - 2
railway-admin/src/main/java/com/railway/web/controller/monitor/SysOperlogController.java

@@ -7,6 +7,7 @@ import com.railway.common.core.page.TableDataInfo;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.system.domain.SysOperLog;
 import com.railway.system.domain.SysOperLog;
+import com.railway.system.service.ISysFileService;
 import com.railway.system.service.ISysOperLogService;
 import com.railway.system.service.ISysOperLogService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
@@ -29,9 +30,12 @@ import org.springframework.web.bind.annotation.RestController;
 public class SysOperlogController extends BaseController {
 public class SysOperlogController extends BaseController {
 
 
   private final ISysOperLogService operLogService;
   private final ISysOperLogService operLogService;
+  private final ISysFileService sysFileService;
 
 
-  public SysOperlogController(ISysOperLogService operLogService) {
+  public SysOperlogController(ISysOperLogService operLogService,
+      ISysFileService sysFileService) {
     this.operLogService = operLogService;
     this.operLogService = operLogService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   @ApiOperation(value = "操作日志列表")
   @ApiOperation(value = "操作日志列表")
@@ -50,7 +54,8 @@ public class SysOperlogController extends BaseController {
   public AjaxResult export(SysOperLog operLog) {
   public AjaxResult export(SysOperLog operLog) {
     List<SysOperLog> list = operLogService.selectOperLogList(operLog);
     List<SysOperLog> list = operLogService.selectOperLogList(operLog);
     ExcelUtil<SysOperLog> util = new ExcelUtil<>(SysOperLog.class);
     ExcelUtil<SysOperLog> util = new ExcelUtil<>(SysOperLog.class);
-    return util.exportExcel(list, "操作日志");
+    String localFilePath = util.exportExcel(list, "操作日志");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   @Log(title = "操作日志", businessType = BusinessType.DELETE)
   @Log(title = "操作日志", businessType = BusinessType.DELETE)

+ 7 - 2
railway-admin/src/main/java/com/railway/web/controller/system/SysConfigController.java

@@ -10,6 +10,7 @@ import com.railway.common.enums.BusinessType;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.system.domain.SysConfig;
 import com.railway.system.domain.SysConfig;
 import com.railway.system.service.ISysConfigService;
 import com.railway.system.service.ISysConfigService;
+import com.railway.system.service.ISysFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import java.util.List;
 import java.util.List;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -34,9 +35,12 @@ import org.springframework.web.bind.annotation.RestController;
 public class SysConfigController extends BaseController {
 public class SysConfigController extends BaseController {
 
 
   private final ISysConfigService configService;
   private final ISysConfigService configService;
+  private final ISysFileService sysFileService;
 
 
-  public SysConfigController(ISysConfigService configService) {
+  public SysConfigController(ISysConfigService configService,
+      ISysFileService sysFileService) {
     this.configService = configService;
     this.configService = configService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   /**
   /**
@@ -56,7 +60,8 @@ public class SysConfigController extends BaseController {
   public AjaxResult export(SysConfig config) {
   public AjaxResult export(SysConfig config) {
     List<SysConfig> list = configService.selectConfigList(config);
     List<SysConfig> list = configService.selectConfigList(config);
     ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
     ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
-    return util.exportExcel(list, "参数数据");
+    String localFilePath = util.exportExcel(list, "参数数据");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   /**
   /**

+ 7 - 2
railway-admin/src/main/java/com/railway/web/controller/system/SysDictDataController.java

@@ -10,6 +10,7 @@ import com.railway.common.utils.StringUtils;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.system.service.ISysDictDataService;
 import com.railway.system.service.ISysDictDataService;
 import com.railway.system.service.ISysDictTypeService;
 import com.railway.system.service.ISysDictTypeService;
+import com.railway.system.service.ISysFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -37,11 +38,14 @@ public class SysDictDataController extends BaseController {
 
 
   private final ISysDictDataService dictDataService;
   private final ISysDictDataService dictDataService;
   private final ISysDictTypeService dictTypeService;
   private final ISysDictTypeService dictTypeService;
+  private final ISysFileService sysFileService;
 
 
   public SysDictDataController(ISysDictDataService dictDataService,
   public SysDictDataController(ISysDictDataService dictDataService,
-      ISysDictTypeService dictTypeService) {
+      ISysDictTypeService dictTypeService,
+      ISysFileService sysFileService) {
     this.dictDataService = dictDataService;
     this.dictDataService = dictDataService;
     this.dictTypeService = dictTypeService;
     this.dictTypeService = dictTypeService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   @PreAuthorize("@ss.hasPermi('system:dict:list')")
   @PreAuthorize("@ss.hasPermi('system:dict:list')")
@@ -58,7 +62,8 @@ public class SysDictDataController extends BaseController {
   public AjaxResult export(SysDictData dictData) {
   public AjaxResult export(SysDictData dictData) {
     List<SysDictData> list = dictDataService.selectDictDataList(dictData);
     List<SysDictData> list = dictDataService.selectDictDataList(dictData);
     ExcelUtil<SysDictData> util = new ExcelUtil<>(SysDictData.class);
     ExcelUtil<SysDictData> util = new ExcelUtil<>(SysDictData.class);
-    return util.exportExcel(list, "字典数据");
+    String localFilePath = util.exportExcel(list, "字典数据");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   /**
   /**

+ 7 - 2
railway-admin/src/main/java/com/railway/web/controller/system/SysDictTypeController.java

@@ -10,6 +10,7 @@ import com.railway.common.core.page.TableDataInfo;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.system.service.ISysDictTypeService;
 import com.railway.system.service.ISysDictTypeService;
+import com.railway.system.service.ISysFileService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import java.util.List;
 import java.util.List;
@@ -35,9 +36,12 @@ import org.springframework.web.bind.annotation.RestController;
 public class SysDictTypeController extends BaseController {
 public class SysDictTypeController extends BaseController {
 
 
   private final ISysDictTypeService dictTypeService;
   private final ISysDictTypeService dictTypeService;
+  private final ISysFileService sysFileService;
 
 
-  public SysDictTypeController(ISysDictTypeService dictTypeService) {
+  public SysDictTypeController(ISysDictTypeService dictTypeService,
+      ISysFileService sysFileService) {
     this.dictTypeService = dictTypeService;
     this.dictTypeService = dictTypeService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   @ApiOperation(value = "字典类型列表", notes = "字典类型列表", response = TableDataInfo.class)
   @ApiOperation(value = "字典类型列表", notes = "字典类型列表", response = TableDataInfo.class)
@@ -55,7 +59,8 @@ public class SysDictTypeController extends BaseController {
   public AjaxResult export(SysDictType dictType) {
   public AjaxResult export(SysDictType dictType) {
     List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
     List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
     ExcelUtil<SysDictType> util = new ExcelUtil<>(SysDictType.class);
     ExcelUtil<SysDictType> util = new ExcelUtil<>(SysDictType.class);
-    return util.exportExcel(list, "字典类型");
+    String localFilePath = util.exportExcel(list, "字典类型");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   /**
   /**

+ 7 - 2
railway-admin/src/main/java/com/railway/web/controller/system/SysPostController.java

@@ -8,6 +8,7 @@ import com.railway.common.core.page.TableDataInfo;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.system.domain.SysPost;
 import com.railway.system.domain.SysPost;
+import com.railway.system.service.ISysFileService;
 import com.railway.system.service.ISysPostService;
 import com.railway.system.service.ISysPostService;
 import java.util.List;
 import java.util.List;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -31,9 +32,12 @@ import org.springframework.web.bind.annotation.RestController;
 public class SysPostController extends BaseController {
 public class SysPostController extends BaseController {
 
 
   private final ISysPostService postService;
   private final ISysPostService postService;
+  private final ISysFileService sysFileService;
 
 
-  public SysPostController(ISysPostService postService) {
+  public SysPostController(ISysPostService postService,
+      ISysFileService sysFileService) {
     this.postService = postService;
     this.postService = postService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   /**
   /**
@@ -53,7 +57,8 @@ public class SysPostController extends BaseController {
   public AjaxResult export(SysPost post) {
   public AjaxResult export(SysPost post) {
     List<SysPost> list = postService.selectPostList(post);
     List<SysPost> list = postService.selectPostList(post);
     ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
     ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
-    return util.exportExcel(list, "岗位数据");
+    String localFilePath = util.exportExcel(list, "岗位数据");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   /**
   /**

+ 6 - 2
railway-admin/src/main/java/com/railway/web/controller/system/SysRoleController.java

@@ -14,6 +14,7 @@ import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.framework.web.service.SysPermissionService;
 import com.railway.framework.web.service.SysPermissionService;
 import com.railway.framework.web.service.TokenService;
 import com.railway.framework.web.service.TokenService;
 import com.railway.system.domain.SysUserRole;
 import com.railway.system.domain.SysUserRole;
+import com.railway.system.service.ISysFileService;
 import com.railway.system.service.ISysMenuService;
 import com.railway.system.service.ISysMenuService;
 import com.railway.system.service.ISysRoleService;
 import com.railway.system.service.ISysRoleService;
 import com.railway.system.service.ISysUserService;
 import com.railway.system.service.ISysUserService;
@@ -46,16 +47,18 @@ public class SysRoleController extends BaseController {
   private final TokenService tokenService;
   private final TokenService tokenService;
   private final SysPermissionService permissionService;
   private final SysPermissionService permissionService;
   private final ISysUserService userService;
   private final ISysUserService userService;
+  private final ISysFileService sysFileService;
 
 
   public SysRoleController(ISysRoleService roleService,
   public SysRoleController(ISysRoleService roleService,
       ISysMenuService menuService, TokenService tokenService,
       ISysMenuService menuService, TokenService tokenService,
       SysPermissionService permissionService,
       SysPermissionService permissionService,
-      ISysUserService userService) {
+      ISysUserService userService, ISysFileService sysFileService) {
     this.roleService = roleService;
     this.roleService = roleService;
     this.menuService = menuService;
     this.menuService = menuService;
     this.tokenService = tokenService;
     this.tokenService = tokenService;
     this.permissionService = permissionService;
     this.permissionService = permissionService;
     this.userService = userService;
     this.userService = userService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   @ApiOperation(value = "角色列表", response = TableDataInfo.class)
   @ApiOperation(value = "角色列表", response = TableDataInfo.class)
@@ -73,7 +76,8 @@ public class SysRoleController extends BaseController {
   public AjaxResult export(SysRole role) {
   public AjaxResult export(SysRole role) {
     List<SysRole> list = roleService.selectRoleList(role);
     List<SysRole> list = roleService.selectRoleList(role);
     ExcelUtil<SysRole> util = new ExcelUtil<>(SysRole.class);
     ExcelUtil<SysRole> util = new ExcelUtil<>(SysRole.class);
-    return util.exportExcel(list, "角色数据");
+    String localFilePath = util.exportExcel(list, "角色数据");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   /**
   /**

+ 9 - 3
railway-admin/src/main/java/com/railway/web/controller/system/SysUserController.java

@@ -10,6 +10,7 @@ import com.railway.common.core.page.TableDataInfo;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.enums.BusinessType;
 import com.railway.common.utils.StringUtils;
 import com.railway.common.utils.StringUtils;
 import com.railway.common.utils.poi.ExcelUtil;
 import com.railway.common.utils.poi.ExcelUtil;
+import com.railway.system.service.ISysFileService;
 import com.railway.system.service.ISysPostService;
 import com.railway.system.service.ISysPostService;
 import com.railway.system.service.ISysRoleService;
 import com.railway.system.service.ISysRoleService;
 import com.railway.system.service.ISysUserService;
 import com.railway.system.service.ISysUserService;
@@ -43,12 +44,15 @@ public class SysUserController extends BaseController {
   private final ISysUserService userService;
   private final ISysUserService userService;
   private final ISysRoleService roleService;
   private final ISysRoleService roleService;
   private final ISysPostService postService;
   private final ISysPostService postService;
+  private final ISysFileService sysFileService;
 
 
   public SysUserController(ISysUserService userService,
   public SysUserController(ISysUserService userService,
-      ISysRoleService roleService, ISysPostService postService) {
+      ISysRoleService roleService, ISysPostService postService,
+      ISysFileService sysFileService) {
     this.userService = userService;
     this.userService = userService;
     this.roleService = roleService;
     this.roleService = roleService;
     this.postService = postService;
     this.postService = postService;
+    this.sysFileService = sysFileService;
   }
   }
 
 
   /**
   /**
@@ -69,7 +73,8 @@ public class SysUserController extends BaseController {
   public AjaxResult export(SysUser user) {
   public AjaxResult export(SysUser user) {
     List<SysUser> list = userService.selectUserList(user);
     List<SysUser> list = userService.selectUserList(user);
     ExcelUtil<SysUser> util = new ExcelUtil<>(SysUser.class);
     ExcelUtil<SysUser> util = new ExcelUtil<>(SysUser.class);
-    return util.exportExcel(list, "用户数据");
+    String localFilePath = util.exportExcel(list, "用户数据");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   @Log(title = "用户管理", businessType = BusinessType.IMPORT)
   @Log(title = "用户管理", businessType = BusinessType.IMPORT)
@@ -86,7 +91,8 @@ public class SysUserController extends BaseController {
   @GetMapping("/importTemplate")
   @GetMapping("/importTemplate")
   public AjaxResult importTemplate() {
   public AjaxResult importTemplate() {
     ExcelUtil<SysUser> util = new ExcelUtil<>(SysUser.class);
     ExcelUtil<SysUser> util = new ExcelUtil<>(SysUser.class);
-    return util.importTemplateExcel("用户数据");
+    String localFilePath = util.importTemplateExcel("用户数据");
+    return sysFileService.uploadFile(localFilePath);
   }
   }
 
 
   /**
   /**

+ 188 - 0
railway-admin/src/main/resources/application-dev.yml

@@ -0,0 +1,188 @@
+# 项目相关配置
+railway:
+  # 名称
+  name: Railway
+  # 版本
+  version: 1.0.0
+  # 版权年份
+  copyrightYear: 2021
+  # 实例演示开关
+  demoEnabled: true
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数组计算 char 字符验证
+  captchaType: math
+  # 本地文件上传文件路径 示例( Windows配置D:/railway/uploadPath,Linux配置 /home/railway/uploadPath)
+  filePath: /mnt/railway/uploadPath
+
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为80
+  port: 2021
+  servlet:
+    # 应用的访问路径
+    context-path: /
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+    # tomcat最大线程数,默认为200
+    max-threads: 800
+    # Tomcat启动初始化的线程数,默认值25
+    min-spare-threads: 30
+
+# 日志配置
+logging:
+  level:
+    com.railway: debug
+    org.springframework: warn
+
+# Spring配置
+spring:
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 10MB
+      # 设置总上传的文件大小
+      max-request-size: 20MB
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: true
+  # redis 配置
+  redis:
+    # 地址
+    host: redis.iamsee.com
+    # 端口,默认为6379
+    port: 6380
+    # 数据库索引
+    database: 0
+    # 密码
+    password: '$jgkj001'
+    # 连接超时时间
+    timeout: 100s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+  # 数据源配置
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 主库数据源
+      master:
+        url: jdbc:mysql://db.iamsee.com:3306/railway?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: railway
+        password: '$jgkj001'
+      # 从库数据源
+      slave:
+        # 从数据源开关/默认关闭
+        enabled: false
+        url:
+        username:
+        password:
+      # 初始连接数
+      initialSize: 5
+      # 最小连接池数量
+      minIdle: 10
+      # 最大连接池数量
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      # 配置一个连接在池中最大生存的时间,单位是毫秒
+      maxEvictableIdleTimeMillis: 900000
+      # 配置检测连接是否有效
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 设置白名单,不填则允许所有访问
+        allow:
+        url-pattern: /druid/*
+        # 控制台管理用户名和密码
+        login-username: railway
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 慢SQL记录
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+
+# token配置
+token:
+  # 令牌自定义标识
+  header: Authorization
+  # 令牌密钥
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 令牌有效期(默认60分钟)
+  expireTime: 60
+
+# MyBatis配置
+mybatis:
+  # 搜索指定包别名
+  typeAliasesPackage: com.railway.**.domain
+  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  # 加载全局的配置文件
+  configLocation: classpath:mybatis/mybatis-config.xml
+
+# PageHelper分页插件
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# Swagger配置
+swagger:
+  # 是否开启swagger
+  enabled: true
+  # 请求前缀
+  pathMapping: /
+
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*,/business/*
+
+# FastDFS配置
+fdfs:
+  domain: http://30.129.231.12
+  soTimeout: 3000
+  connectTimeout: 2000
+  trackerList: 30.129.231.12:22122
+
+# Minio配置
+minio:
+  url: http://30.129.231.12:9000
+  accessKey: minioadmin
+  secretKey: minioadmin
+  bucketName: test

+ 0 - 57
railway-admin/src/main/resources/application-druid.yml

@@ -1,57 +0,0 @@
-# 数据源配置
-spring:
-  datasource:
-    type: com.alibaba.druid.pool.DruidDataSource
-    driverClassName: com.mysql.cj.jdbc.Driver
-    druid:
-      # 主库数据源
-      master:
-        url: jdbc:mysql://db.iamsee.com:3306/railway?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-        username: railway
-        password: '$jgkj001'
-      # 从库数据源
-      slave:
-        # 从数据源开关/默认关闭
-        enabled: false
-        url:
-        username:
-        password:
-      # 初始连接数
-      initialSize: 5
-      # 最小连接池数量
-      minIdle: 10
-      # 最大连接池数量
-      maxActive: 20
-      # 配置获取连接等待超时的时间
-      maxWait: 60000
-      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-      timeBetweenEvictionRunsMillis: 60000
-      # 配置一个连接在池中最小生存的时间,单位是毫秒
-      minEvictableIdleTimeMillis: 300000
-      # 配置一个连接在池中最大生存的时间,单位是毫秒
-      maxEvictableIdleTimeMillis: 900000
-      # 配置检测连接是否有效
-      validationQuery: SELECT 1 FROM DUAL
-      testWhileIdle: true
-      testOnBorrow: false
-      testOnReturn: false
-      webStatFilter:
-        enabled: true
-      statViewServlet:
-        enabled: true
-        # 设置白名单,不填则允许所有访问
-        allow:
-        url-pattern: /druid/*
-        # 控制台管理用户名和密码
-        login-username: railway
-        login-password: 123456
-      filter:
-        stat:
-          enabled: true
-          # 慢SQL记录
-          log-slow-sql: true
-          slow-sql-millis: 1000
-          merge-sql: true
-        wall:
-          config:
-            multi-statement-allow: true

+ 188 - 0
railway-admin/src/main/resources/application-local.yml

@@ -0,0 +1,188 @@
+# 项目相关配置
+railway:
+  # 名称
+  name: Railway
+  # 版本
+  version: 1.0.0
+  # 版权年份
+  copyrightYear: 2021
+  # 实例演示开关
+  demoEnabled: true
+  # 获取ip地址开关
+  addressEnabled: false
+  # 验证码类型 math 数组计算 char 字符验证
+  captchaType: math
+  # 本地文件上传文件路径 示例( Windows配置D:/railway/uploadPath,Linux配置 /home/railway/uploadPath)
+  filePath: D:/railway/uploadPath
+
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为80
+  port: 2021
+  servlet:
+    # 应用的访问路径
+    context-path: /
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+    # tomcat最大线程数,默认为200
+    max-threads: 800
+    # Tomcat启动初始化的线程数,默认值25
+    min-spare-threads: 30
+
+# 日志配置
+logging:
+  level:
+    com.railway: debug
+    org.springframework: warn
+
+# Spring配置
+spring:
+  # 资源信息
+  messages:
+    # 国际化资源文件路径
+    basename: i18n/messages
+  # 文件上传
+  servlet:
+    multipart:
+      # 单个文件大小
+      max-file-size: 10MB
+      # 设置总上传的文件大小
+      max-request-size: 20MB
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: true
+  # redis 配置
+  redis:
+    # 地址
+    host: redis.iamsee.com
+    # 端口,默认为6379
+    port: 6380
+    # 数据库索引
+    database: 0
+    # 密码
+    password: '$jgkj001'
+    # 连接超时时间
+    timeout: 100s
+    lettuce:
+      pool:
+        # 连接池中的最小空闲连接
+        min-idle: 0
+        # 连接池中的最大空闲连接
+        max-idle: 8
+        # 连接池的最大数据库连接数
+        max-active: 8
+        # #连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-wait: -1ms
+  # 数据源配置
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 主库数据源
+      master:
+        url: jdbc:mysql://db.iamsee.com:3306/railway?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: railway
+        password: '$jgkj001'
+      # 从库数据源
+      slave:
+        # 从数据源开关/默认关闭
+        enabled: false
+        url:
+        username:
+        password:
+      # 初始连接数
+      initialSize: 5
+      # 最小连接池数量
+      minIdle: 10
+      # 最大连接池数量
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      # 配置一个连接在池中最大生存的时间,单位是毫秒
+      maxEvictableIdleTimeMillis: 900000
+      # 配置检测连接是否有效
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 设置白名单,不填则允许所有访问
+        allow:
+        url-pattern: /druid/*
+        # 控制台管理用户名和密码
+        login-username: railway
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 慢SQL记录
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+
+# token配置
+token:
+  # 令牌自定义标识
+  header: Authorization
+  # 令牌密钥
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 令牌有效期(默认60分钟)
+  expireTime: 60
+
+# MyBatis配置
+mybatis:
+  # 搜索指定包别名
+  typeAliasesPackage: com.railway.**.domain
+  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  # 加载全局的配置文件
+  configLocation: classpath:mybatis/mybatis-config.xml
+
+# PageHelper分页插件
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# Swagger配置
+swagger:
+  # 是否开启swagger
+  enabled: true
+  # 请求前缀
+  pathMapping: /
+
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*,/business/*
+
+# FastDFS配置
+fdfs:
+  domain: http://30.129.231.12
+  soTimeout: 3000
+  connectTimeout: 2000
+  trackerList: 30.129.231.12:22122
+
+# Minio配置
+minio:
+  url: http://30.129.231.12:9000
+  accessKey: minioadmin
+  secretKey: minioadmin
+  bucketName: test

+ 1 - 134
railway-admin/src/main/resources/application.yml

@@ -1,137 +1,4 @@
-# 项目相关配置
-railway:
-  # 名称
-  name: Railway
-  # 版本
-  version: 1.0.0
-  # 版权年份
-  copyrightYear: 2021
-  # 实例演示开关
-  demoEnabled: true
-  # 获取ip地址开关
-  addressEnabled: false
-  # 验证码类型 math 数组计算 char 字符验证
-  captchaType: math
-
-# 开发环境配置
-server:
-  # 服务器的HTTP端口,默认为80
-  port: 2021
-  servlet:
-    # 应用的访问路径
-    context-path: /
-  tomcat:
-    # tomcat的URI编码
-    uri-encoding: UTF-8
-    # tomcat最大线程数,默认为200
-    max-threads: 800
-    # Tomcat启动初始化的线程数,默认值25
-    min-spare-threads: 30
-
-# 日志配置
-logging:
-  level:
-    com.railway: debug
-    org.springframework: warn
-
 # Spring配置
 # Spring配置
 spring:
 spring:
-  # 资源信息
-  messages:
-    # 国际化资源文件路径
-    basename: i18n/messages
   profiles:
   profiles:
-    active: druid
-  # 文件上传
-  servlet:
-    multipart:
-      # 单个文件大小
-      max-file-size: 10MB
-      # 设置总上传的文件大小
-      max-request-size: 20MB
-  # 服务模块
-  devtools:
-    restart:
-      # 热部署开关
-      enabled: true
-  # redis 配置
-  redis:
-    # 地址
-    host: redis.iamsee.com
-    # 端口,默认为6379
-    port: 6380
-    # 数据库索引
-    database: 0
-    # 密码
-    password: '$jgkj001'
-    # 连接超时时间
-    timeout: 100s
-    lettuce:
-      pool:
-        # 连接池中的最小空闲连接
-        min-idle: 0
-        # 连接池中的最大空闲连接
-        max-idle: 8
-        # 连接池的最大数据库连接数
-        max-active: 8
-        # #连接池最大阻塞等待时间(使用负值表示没有限制)
-        max-wait: -1ms
-
-# token配置
-token:
-  # 令牌自定义标识
-  header: Authorization
-  # 令牌密钥
-  secret: abcdefghijklmnopqrstuvwxyz
-  # 令牌有效期(默认60分钟)
-  expireTime: 60
-
-# MyBatis配置
-mybatis:
-  # 搜索指定包别名
-  typeAliasesPackage: com.railway.**.domain
-  # 配置mapper的扫描,找到所有的mapper.xml映射文件
-  mapperLocations: classpath*:mapper/**/*Mapper.xml
-  # 加载全局的配置文件
-  configLocation: classpath:mybatis/mybatis-config.xml
-
-# PageHelper分页插件
-pagehelper:
-  helperDialect: mysql
-  supportMethodsArguments: true
-  params: count=countSql
-
-# Swagger配置
-swagger:
-  # 是否开启swagger
-  enabled: true
-  # 请求前缀
-  pathMapping: /
-
-# 防止XSS攻击
-xss:
-  # 过滤开关
-  enabled: true
-  # 排除链接(多个用逗号分隔)
-  excludes: /system/notice
-  # 匹配链接
-  urlPatterns: /system/*,/monitor/*,/tool/*,/business/*
-
-# 本地文件上传
-file:
-  # 文件路径 示例( Windows配置D:/railway/uploadPath,Linux配置 /home/railway/uploadPath)
-  path: D:/railway/uploadPath
-
-# FastDFS配置
-fdfs:
-  domain: http://30.129.231.12
-  soTimeout: 3000
-  connectTimeout: 2000
-  trackerList: 30.129.231.12:22122
-
-# Minio配置
-minio:
-  url: http://30.129.231.12:9000
-  accessKey: minioadmin
-  secretKey: minioadmin
-  bucketName: test
+    active: dev

+ 10 - 0
railway-common/src/main/java/com/railway/common/config/RailwayConfig.java

@@ -2,6 +2,7 @@ package com.railway.common.config;
 
 
 import lombok.Data;
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 /**
 /**
@@ -34,6 +35,8 @@ public class RailwayConfig {
    */
    */
   private boolean demoEnabled;
   private boolean demoEnabled;
 
 
+  private static String filePath;
+
   /**
   /**
    * 获取地址开关
    * 获取地址开关
    */
    */
@@ -47,4 +50,11 @@ public class RailwayConfig {
     RailwayConfig.addressEnabled = addressEnabled;
     RailwayConfig.addressEnabled = addressEnabled;
   }
   }
 
 
+  public static String getFilePath() {
+    return filePath;
+  }
+
+  public void setFilePath(String filePath){
+    RailwayConfig.filePath = filePath;
+  }
 }
 }

+ 5 - 0
railway-common/src/main/java/com/railway/common/constant/Constants.java

@@ -9,6 +9,11 @@ import io.jsonwebtoken.Claims;
  */
  */
 public class Constants {
 public class Constants {
 
 
+  /**
+   * 下划线
+   */
+  public static final String UNDERLINE = "_";
+
   /**
   /**
    * UTF-8 字符集
    * UTF-8 字符集
    */
    */

+ 12 - 0
railway-common/src/main/java/com/railway/common/core/domain/AjaxResult.java

@@ -1,5 +1,6 @@
 package com.railway.common.core.domain;
 package com.railway.common.core.domain;
 
 
+import com.railway.common.utils.file.FileUtils;
 import java.util.HashMap;
 import java.util.HashMap;
 import com.railway.common.utils.StringUtils;
 import com.railway.common.utils.StringUtils;
 
 
@@ -153,6 +154,17 @@ public class AjaxResult extends HashMap<String, Object> {
     return new AjaxResult(Type.SUCCESS, msg, data);
     return new AjaxResult(Type.SUCCESS, msg, data);
   }
   }
 
 
+  public static AjaxResult uploadFile(String url, String fileName){
+    // 新文件名称
+    if(StringUtils.isEmpty(fileName)){
+      fileName = FileUtils.getName(url);
+    }
+    AjaxResult ajax = AjaxResult.success();
+    ajax.put("fileName", fileName);
+    ajax.put("url", url);
+    return ajax;
+  }
+
   /**
   /**
    * 返回警告消息
    * 返回警告消息
    *
    *

+ 25 - 0
railway-common/src/main/java/com/railway/common/utils/file/FileUploadUtils.java

@@ -7,10 +7,16 @@ import com.railway.common.utils.DateUtils;
 import com.railway.common.utils.StringUtils;
 import com.railway.common.utils.StringUtils;
 import com.railway.common.utils.uuid.IdUtils;
 import com.railway.common.utils.uuid.IdUtils;
 import java.io.File;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.IOException;
+import java.io.OutputStream;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 
 /**
 /**
  * 文件上传工具类
  * 文件上传工具类
@@ -30,6 +36,25 @@ public class FileUploadUtils {
    */
    */
   public static final int DEFAULT_FILE_NAME_LENGTH = 100;
   public static final int DEFAULT_FILE_NAME_LENGTH = 100;
 
 
+  public static MultipartFile upload(File localFile){
+    FileItemFactory factory = new DiskFileItemFactory(16, null);
+    FileItem fileItem = factory.createItem("textField", "text/plain", true, localFile.getName());
+    int bytesRead = 0;
+    byte[] buffer = new byte[8192];
+    try {
+      FileInputStream fis = new FileInputStream(localFile);
+      OutputStream os = fileItem.getOutputStream();
+      while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
+        os.write(buffer, 0, bytesRead);
+      }
+      os.close();
+      fis.close();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+    return new CommonsMultipartFile(fileItem);
+  }
+
   /**
   /**
    * 根据文件路径上传
    * 根据文件路径上传
    *
    *

+ 23 - 30
railway-common/src/main/java/com/railway/common/utils/poi/ExcelUtil.java

@@ -4,7 +4,8 @@ import com.railway.common.annotation.Excel;
 import com.railway.common.annotation.Excel.ColumnType;
 import com.railway.common.annotation.Excel.ColumnType;
 import com.railway.common.annotation.Excel.Type;
 import com.railway.common.annotation.Excel.Type;
 import com.railway.common.annotation.Excels;
 import com.railway.common.annotation.Excels;
-import com.railway.common.core.domain.AjaxResult;
+import com.railway.common.config.RailwayConfig;
+import com.railway.common.constant.Constants;
 import com.railway.common.core.text.Convert;
 import com.railway.common.core.text.Convert;
 import com.railway.common.exception.UtilException;
 import com.railway.common.exception.UtilException;
 import com.railway.common.utils.DateUtils;
 import com.railway.common.utils.DateUtils;
@@ -72,7 +73,6 @@ import org.apache.poi.xssf.usermodel.XSSFPicture;
 import org.apache.poi.xssf.usermodel.XSSFShape;
 import org.apache.poi.xssf.usermodel.XSSFShape;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
 import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
-import org.springframework.beans.factory.annotation.Value;
 
 
 /**
 /**
  * Excel相关处理
  * Excel相关处理
@@ -82,12 +82,6 @@ import org.springframework.beans.factory.annotation.Value;
 @Slf4j
 @Slf4j
 public class ExcelUtil<T> {
 public class ExcelUtil<T> {
 
 
-  /**
-   * 上传文件存储在本地的根路径
-   */
-  @Value("${file.path}")
-  private String localFilePath;
-
   /**
   /**
    * Excel sheet最大行数,默认65536
    * Excel sheet最大行数,默认65536
    */
    */
@@ -235,7 +229,7 @@ public class ExcelUtil<T> {
 
 
     if (rows > 0) {
     if (rows > 0) {
       // 定义一个map用于存放excel列的序号和field.
       // 定义一个map用于存放excel列的序号和field.
-      Map<String, Integer> cellMap = new HashMap<String, Integer>();
+      Map<String, Integer> cellMap = new HashMap<>();
       // 获取表头
       // 获取表头
       Row heard = sheet.getRow(titleNum);
       Row heard = sheet.getRow(titleNum);
       for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++) {
       for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++) {
@@ -250,7 +244,7 @@ public class ExcelUtil<T> {
       // 有数据时才处理 得到类的所有field.
       // 有数据时才处理 得到类的所有field.
       Field[] allFields = clazz.getDeclaredFields();
       Field[] allFields = clazz.getDeclaredFields();
       // 定义一个map用于存放列的序号和field.
       // 定义一个map用于存放列的序号和field.
-      Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();
+      Map<Integer, Field> fieldsMap = new HashMap<>();
       for (Field field : allFields) {
       for (Field field : allFields) {
         Excel attr = field.getAnnotation(Excel.class);
         Excel attr = field.getAnnotation(Excel.class);
         if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) {
         if (attr != null && (attr.type() == Type.ALL || attr.type() == type)) {
@@ -311,18 +305,16 @@ public class ExcelUtil<T> {
           } else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
           } else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
             val = Convert.toBool(val, false);
             val = Convert.toBool(val, false);
           }
           }
-          if (StringUtils.isNotNull(fieldType)) {
-            Excel attr = field.getAnnotation(Excel.class);
-            String propertyName = field.getName();
-            if (StringUtils.isNotEmpty(attr.targetAttr())) {
-              propertyName = field.getName() + "." + attr.targetAttr();
-            } else if (StringUtils.isNotEmpty(attr.readConverterExp())) {
-              val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
-            } else if (!attr.handler().equals(ExcelHandlerAdapter.class)) {
-              val = dataFormatHandlerAdapter(val, attr);
-            }
-            ReflectUtils.invokeSetter(entity, propertyName, val);
+          Excel attr = field.getAnnotation(Excel.class);
+          String propertyName = field.getName();
+          if (StringUtils.isNotEmpty(attr.targetAttr())) {
+            propertyName = field.getName() + "." + attr.targetAttr();
+          } else if (StringUtils.isNotEmpty(attr.readConverterExp())) {
+            val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
+          } else if (!attr.handler().equals(ExcelHandlerAdapter.class)) {
+            val = dataFormatHandlerAdapter(val, attr);
           }
           }
+          ReflectUtils.invokeSetter(entity, propertyName, val);
         }
         }
         list.add(entity);
         list.add(entity);
       }
       }
@@ -337,7 +329,7 @@ public class ExcelUtil<T> {
    * @param sheetName 工作表的名称
    * @param sheetName 工作表的名称
    * @return 结果
    * @return 结果
    */
    */
-  public AjaxResult exportExcel(List<T> list, String sheetName) {
+  public String exportExcel(List<T> list, String sheetName) {
     return exportExcel(list, sheetName, StringUtils.EMPTY);
     return exportExcel(list, sheetName, StringUtils.EMPTY);
   }
   }
 
 
@@ -349,7 +341,7 @@ public class ExcelUtil<T> {
    * @param title 标题
    * @param title 标题
    * @return 结果
    * @return 结果
    */
    */
-  public AjaxResult exportExcel(List<T> list, String sheetName, String title) {
+  public String exportExcel(List<T> list, String sheetName, String title) {
     this.init(list, sheetName, title, Type.EXPORT);
     this.init(list, sheetName, title, Type.EXPORT);
     return exportExcel();
     return exportExcel();
   }
   }
@@ -388,7 +380,7 @@ public class ExcelUtil<T> {
    * @param sheetName 工作表的名称
    * @param sheetName 工作表的名称
    * @return 结果
    * @return 结果
    */
    */
-  public AjaxResult importTemplateExcel(String sheetName) {
+  public String importTemplateExcel(String sheetName) {
     return importTemplateExcel(sheetName, StringUtils.EMPTY);
     return importTemplateExcel(sheetName, StringUtils.EMPTY);
   }
   }
 
 
@@ -399,7 +391,7 @@ public class ExcelUtil<T> {
    * @param title 标题
    * @param title 标题
    * @return 结果
    * @return 结果
    */
    */
-  public AjaxResult importTemplateExcel(String sheetName, String title) {
+  public String importTemplateExcel(String sheetName, String title) {
     this.init(null, sheetName, title, Type.IMPORT);
     this.init(null, sheetName, title, Type.IMPORT);
     return exportExcel();
     return exportExcel();
   }
   }
@@ -438,14 +430,15 @@ public class ExcelUtil<T> {
    *
    *
    * @return 结果
    * @return 结果
    */
    */
-  public AjaxResult exportExcel() {
+  public String exportExcel() {
     OutputStream out = null;
     OutputStream out = null;
     try {
     try {
       writeSheet();
       writeSheet();
       String filename = encodingFilename(sheetName);
       String filename = encodingFilename(sheetName);
-      out = new FileOutputStream(getAbsoluteFile(filename));
+      String filePath = getAbsoluteFile(filename);
+      out = new FileOutputStream(filePath);
       wb.write(out);
       wb.write(out);
-      return AjaxResult.success(filename);
+      return filePath;
     } catch (Exception e) {
     } catch (Exception e) {
       log.error("导出Excel异常{}", e.getMessage());
       log.error("导出Excel异常{}", e.getMessage());
       throw new UtilException("导出Excel失败,请联系网站管理员!");
       throw new UtilException("导出Excel失败,请联系网站管理员!");
@@ -903,7 +896,7 @@ public class ExcelUtil<T> {
    * 编码文件名
    * 编码文件名
    */
    */
   public String encodingFilename(String filename) {
   public String encodingFilename(String filename) {
-    filename = UUID.randomUUID() + "_" + filename + ".xlsx";
+    filename = UUID.randomUUID() + Constants.UNDERLINE + filename + ".xlsx";
     return filename;
     return filename;
   }
   }
 
 
@@ -913,7 +906,7 @@ public class ExcelUtil<T> {
    * @param filename 文件名称
    * @param filename 文件名称
    */
    */
   public String getAbsoluteFile(String filename) {
   public String getAbsoluteFile(String filename) {
-    String downloadPath = localFilePath + File.separator + filename;
+    String downloadPath = RailwayConfig.getFilePath() + File.separator + filename;
     File desc = new File(downloadPath);
     File desc = new File(downloadPath);
     if (!desc.getParentFile().exists()) {
     if (!desc.getParentFile().exists()) {
       desc.getParentFile().mkdirs();
       desc.getParentFile().mkdirs();

+ 1 - 1
railway-framework/src/main/java/com/railway/framework/config/ResourcesConfig.java

@@ -25,7 +25,7 @@ public class ResourcesConfig implements WebMvcConfigurer {
   /**
   /**
    * 上传文件存储在本地的根路径
    * 上传文件存储在本地的根路径
    */
    */
-  @Value("${file.path}")
+  @Value("${railway.filePath}")
   private String localFilePath;
   private String localFilePath;
 
 
   private final RepeatSubmitInterceptor repeatSubmitInterceptor;
   private final RepeatSubmitInterceptor repeatSubmitInterceptor;

+ 19 - 10
railway-system/src/main/java/com/railway/system/service/ISysFileService.java

@@ -1,20 +1,29 @@
 package com.railway.system.service;
 package com.railway.system.service;
 
 
+import com.railway.common.core.domain.AjaxResult;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 
 /**
 /**
  * 文件上传接口
  * 文件上传接口
  * 实现类上加注解@Primary:自动装配时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。(只对接口的多个实现生效)
  * 实现类上加注解@Primary:自动装配时,被注解为@Primary的Bean将作为首选者,否则将抛出异常。(只对接口的多个实现生效)
+ *
  * @author railway
  * @author railway
  */
  */
-public interface ISysFileService
-{
-    /**
-     * 文件上传接口
-     * 
-     * @param file 上传的文件
-     * @return 访问地址
-     * @throws Exception 文件上传异常
-     */
-    String uploadFile(MultipartFile file) throws Exception;
+public interface ISysFileService {
+
+  /**
+   * 文件上传接口
+   *
+   * @param file 上传的文件
+   * @return 访问地址
+   * @throws Exception 文件上传异常
+   */
+  String uploadFile(MultipartFile file) throws Exception;
+
+  /**
+   * 本地文件上传到文件服务器
+   * @param localFilePath 本地文件路径
+   * @return 上传结果
+   */
+  AjaxResult uploadFile(String localFilePath);
 }
 }

+ 38 - 0
railway-system/src/main/java/com/railway/system/service/impl/AbstractFileService.java

@@ -0,0 +1,38 @@
+package com.railway.system.service.impl;
+
+import com.railway.common.constant.Constants;
+import com.railway.common.core.domain.AjaxResult;
+import com.railway.common.utils.StringUtils;
+import com.railway.common.utils.file.FileUploadUtils;
+import com.railway.system.service.ISysFileService;
+import java.io.File;
+
+/**
+ * @author zhaomn
+ */
+public abstract class AbstractFileService implements ISysFileService {
+
+  /**
+   * 本地文件上传到文件服务器
+   *
+   * @param localFilePath 本地文件路径
+   * @return 上传结果
+   */
+  @Override
+  public AjaxResult uploadFile(String localFilePath) {
+    if(StringUtils.isEmpty(localFilePath)){
+      return AjaxResult.error("文件保存到文件服务器失败");
+    }
+    File localFile = new File(localFilePath);
+    String fileName = localFile.getName();
+    if(fileName.indexOf(Constants.UNDERLINE) > 0){
+      fileName = fileName.substring(fileName.lastIndexOf(Constants.UNDERLINE) + 1);
+    }
+    try {
+      String url = uploadFile(FileUploadUtils.upload(localFile));
+      return AjaxResult.uploadFile(url, fileName);
+    } catch (Exception e) {
+      return AjaxResult.error(e.getMessage());
+    }
+  }
+}

+ 1 - 1
railway-system/src/main/java/com/railway/system/service/impl/FastDfsSysFileServiceImpl.java

@@ -14,7 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
  * @author railway
  * @author railway
  */
  */
 @Service
 @Service
-public class FastDfsSysFileServiceImpl implements ISysFileService {
+public class FastDfsSysFileServiceImpl extends AbstractFileService implements ISysFileService {
     /**
     /**
      * 域名或本机访问地址
      * 域名或本机访问地址
      */
      */

+ 2 - 2
railway-system/src/main/java/com/railway/system/service/impl/LocalSysFileServiceImpl.java

@@ -16,12 +16,12 @@ import org.springframework.web.multipart.MultipartFile;
  */
  */
 @Primary
 @Primary
 @Service
 @Service
-public class LocalSysFileServiceImpl implements ISysFileService {
+public class LocalSysFileServiceImpl extends AbstractFileService implements ISysFileService {
 
 
   /**
   /**
    * 上传文件存储在本地的根路径
    * 上传文件存储在本地的根路径
    */
    */
-  @Value("${file.path}")
+  @Value("${railway.filePath}")
   private String localFilePath;
   private String localFilePath;
 
 
   private final ServerConfig serverConfig;
   private final ServerConfig serverConfig;

+ 1 - 1
railway-system/src/main/java/com/railway/system/service/impl/MinioSysFileServiceImpl.java

@@ -14,7 +14,7 @@ import org.springframework.web.multipart.MultipartFile;
  * @author railway
  * @author railway
  */
  */
 @Service
 @Service
-public class MinioSysFileServiceImpl implements ISysFileService {
+public class MinioSysFileServiceImpl extends AbstractFileService implements ISysFileService {
 
 
   private final MinioConfig minioConfig;
   private final MinioConfig minioConfig;
   private final MinioClient client;
   private final MinioClient client;