1. 基于 db 实现文件的存储

This commit is contained in:
YunaiV
2021-01-14 21:20:32 +08:00
parent f942b34d02
commit 629fa9b407
26 changed files with 351 additions and 168 deletions

View File

@@ -15,7 +15,7 @@ import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
@Api(tags = "验证码 API")
@RestController
@RequestMapping("/captcha")
@RequestMapping("/system/captcha")
public class SysCaptchaController {
@Resource

View File

@@ -0,0 +1,47 @@
package cn.iocoder.dashboard.modules.system.controller.common;
import cn.hutool.core.io.IoUtil;
import cn.iocoder.dashboard.common.pojo.CommonResult;
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.common.SysFileDO;
import cn.iocoder.dashboard.modules.system.service.common.SysFileService;
import cn.iocoder.dashboard.util.servlet.ServletUtils;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
@Api(tags = "文件 API")
@RestController
@RequestMapping("/system/file")
@Slf4j
public class SysFileController {
@Resource
private SysFileService fileService;
@PostMapping("/upload")
public CommonResult<String> uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam("path") String path) throws IOException {
return success(fileService.createFile(path, IoUtil.readBytes(file.getInputStream())));
}
@GetMapping("/get/{path}")
public void getFile(HttpServletResponse response, @PathVariable("path") String path) throws IOException {
SysFileDO file = fileService.getFile(path);
if (file == null) {
log.warn("[getFile][path({}) 文件不存在]", path);
response.setStatus(HttpStatus.NOT_FOUND.value());
return;
}
ServletUtils.writeAttachment(response, path, file.getContent());
}
}

View File

@@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.controller.dept;
import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
import cn.iocoder.dashboard.common.pojo.CommonResult;
import cn.iocoder.dashboard.common.pojo.PageResult;
import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
import cn.iocoder.dashboard.modules.system.controller.dept.vo.post.*;
import cn.iocoder.dashboard.modules.system.convert.dept.SysPostConvert;
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysPostDO;
@@ -14,6 +15,8 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -80,12 +83,16 @@ public class SysPostController {
return success(SysPostConvert.INSTANCE.convert(postService.getPost(id)));
}
@GetMapping("/export")
@ApiOperation("岗位管理")
// @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
// @PreAuthorize("@ss.hasPermi('system:post:export')")
// @GetMapping("/export")
// public AjaxResult export(SysPost post) {
// List<SysPost> list = postService.selectPostList(post);
// ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
// return util.exportExcel(list, "岗位数据");
// }
public void export(HttpServletResponse response, @Validated SysPostExportReqVO reqVO) throws IOException {
List<SysPostDO> posts = postService.listPosts(reqVO);
List<SysPostExcelVO> excelPosts = SysPostConvert.INSTANCE.convertList03(posts);
// 输出
ExcelUtils.write(response, "岗位数据.xls", "岗位列表",
SysPostExcelVO.class, excelPosts);
}
}

View File

@@ -1,27 +0,0 @@
package cn.iocoder.dashboard.modules.system.controller.dept.vo.post;
import cn.iocoder.dashboard.framework.excel.Excel;
import lombok.Data;
/**
* 岗位 Excel 导出响应 VO
*/
@Data
public class SysPostExcelRespVO {
@Excel(name = "岗位序号", cellType = Excel.ColumnType.NUMERIC)
private Long id;
@Excel(name = "岗位编码")
private String code;
@Excel(name = "岗位名称")
private String name;
@Excel(name = "岗位排序")
private String sort;
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
}

View File

@@ -0,0 +1,32 @@
package cn.iocoder.dashboard.modules.system.controller.dept.vo.post;
import cn.iocoder.dashboard.framework.excel.core.annotations.DictFormat;
import cn.iocoder.dashboard.framework.excel.core.convert.DictConvert;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import static cn.iocoder.dashboard.modules.system.enums.dict.DictTypeEnum.SYS_COMMON_STATUS;
/**
* 岗位 Excel 导出响应 VO
*/
@Data
public class SysPostExcelVO {
@ExcelProperty("岗位序号")
private Long id;
@ExcelProperty("岗位编码")
private String code;
@ExcelProperty("岗位名称")
private String name;
@ExcelProperty("岗位排序")
private String sort;
@ExcelProperty(value = "状态", converter = DictConvert.class)
@DictFormat(SYS_COMMON_STATUS)
private String status;
}

View File

@@ -0,0 +1,17 @@
package cn.iocoder.dashboard.modules.system.controller.dept.vo.post;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "岗位导出 Request VO", description = "参数和 SysPostExcelVO 是一致的")
@Data
public class SysPostExportReqVO {
@ApiModelProperty(value = "岗位名称", example = "芋道", notes = "模糊匹配")
private String name;
@ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
private Integer status;
}