微服文件管理接口

yun-zuoyi
yunhao.wang 6 years ago
parent 2e66e522f0
commit 4d96152b3e

@ -74,4 +74,12 @@ public interface ISysFileService {
*/
@ApiOperation(value = "上传文件资源",notes = "上传文件资源")
SysFile uploadFile(Object file) throws Exception;
/**
*
* @param fileCode
* @return
*/
@ApiOperation(value = "根据文件代码获取文件信息")
SysFile getSysFileByFileCode(String fileCode);
}

@ -3,7 +3,6 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
@ -26,7 +25,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedInputStream;
import java.io.IOException;
@ -57,13 +55,14 @@ public class SysFileController extends CoreBaseController{
private FastDFSClient dfsClient;
@PutMapping(value = "/update")
@ApiOperation(value = "修改文件资源",notes = "修改文件资源")
@ApiOperation(value = "修改文件资源", notes = "修改文件资源")
public ResultBean updateSysFile(SysFile sysFile){
try {
// 条件验证
ValidatorBean.beginValid(sysFile)
.notNull("id",sysFile.getId())
.notNull("name",sysFile.getName());
.notNull("id", sysFile.getId())
.notNull("fileSoftType", sysFile.getFileSoftType())
.notNull("name", sysFile.getName());
sysFileService.updateSysFile(sysFile);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
@ -75,10 +74,18 @@ public class SysFileController extends CoreBaseController{
}
@DeleteMapping(value = "/delete/{id}")
@ApiOperation(value = "根据id删除文件资源",notes = "根据id删除文件资源")
public ResultBean deleteSysFileById(@PathVariable("id") String id){
@ApiOperation(value = "根据id删除文件资源", notes = "根据id删除文件资源")
public ResultBean deleteSysFileById(@PathVariable("id") String idStr){
try {
sysFileService.deleteSysFileById(Long.parseLong(id));
ValidatorBean.checkNotNull(idStr, "id不能为空");
SysFile sysFile = sysFileService.getSysFileById(Long.parseLong(idStr));
ValidatorBean.checkNotNull(sysFile, "文件信息不存在");
LOGGER.info("FastDFS删除文件 == groupName: {}name{}", sysFile.getDfsGroupName(), sysFile.getDfsFileName());
dfsClient.deleteFile(sysFile.getDfsGroupName(), sysFile.getDfsFileName());
sysFileService.deleteSysFileById(Long.parseLong(idStr));
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
@ -88,7 +95,7 @@ public class SysFileController extends CoreBaseController{
}
@GetMapping(value = "/list")
@ApiOperation(value = "查询全部文件资源",notes = "查询全部文件资源")
@ApiOperation(value = "查询全部文件资源", notes = "查询全部文件资源")
public ResultBean findSysFileAll(SysFile sysFile){
try {
List<SysFile> sysFileList = sysFileService.listSysFile();
@ -103,12 +110,14 @@ public class SysFileController extends CoreBaseController{
}
@GetMapping(value = "/get/{id}")
@ApiOperation(value = "根据id查询文件资源",notes = "根据id查询文件资源")
@ApiOperation(value = "根据id查询文件资源", notes = "根据id查询文件资源")
public ResultBean getSysFileById(@PathVariable("id") String id){
try {
ValidatorBean.checkIsNumber(id,"id必须为数字");
ValidatorBean.checkIsNumber(id, "id必须为数字");
SysFile sysFile = sysFileService.getSysFileById(Long.parseLong(id));
ValidatorBean.checkNotNull(sysFile, "文件信息不存在");
return ResultBean.success("操作成功")
.setResultObject(sysFile)
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
@ -120,10 +129,10 @@ public class SysFileController extends CoreBaseController{
}
@GetMapping(value = "/query")
@ApiOperation(value = "文件资源复杂查询,分页,排序",notes = "文件资源复杂查询,分页,排序")
@ApiOperation(value = "文件资源复杂查询,分页,排序", notes = "文件资源复杂查询,分页,排序")
public ResultBean querySysFileByPager(SysFile sysFile, Pager pager){
try {
ListPager sysFileListPager = sysFileService.querySysFileByPager(sysFile,pager);
ListPager sysFileListPager = sysFileService.querySysFileByPager(sysFile, pager);
return ResultBean.success("操作成功").setListPager(sysFileListPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
@ -133,7 +142,7 @@ public class SysFileController extends CoreBaseController{
}
@DeleteMapping(value = "/batch-delete")
@ApiOperation(value = "批量删除文件资源",notes = "批量删除文件资源")
@ApiOperation(value = "批量删除文件资源", notes = "批量删除文件资源")
public ResultBean deleteSysFileByIds(String[] ids){
try{
if(ids.length == 0){
@ -154,7 +163,7 @@ public class SysFileController extends CoreBaseController{
}
@PostMapping("/upload")
@ApiOperation(value = "文件上传",notes = "文件上传")
@ApiOperation(value = "文件上传", notes = "文件上传")
public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file) {
try {
if(file.isEmpty()){
@ -186,10 +195,10 @@ public class SysFileController extends CoreBaseController{
}
@GetMapping("/download/{id}")
@ApiOperation(value = "文件下载",notes = "文件下载")
@ApiOperation(value = "文件下载", notes = "文件下载")
public ResultBean singleDownload(@PathVariable("id")String id, HttpServletResponse response) {
try {
ValidatorBean.checkIsNumber(id,"文件ID不能为空");
ValidatorBean.checkIsNumber(id, "文件ID不能为空");
SysFile sysFile = sysFileService.getSysFileById(Long.parseLong(id));
if(sysFile == null){
@ -210,22 +219,22 @@ public class SysFileController extends CoreBaseController{
.build();
}
response.setContentType("application/force-download");// 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + sysFile.getFileOriginalName());// 设置文件名
response.addHeader("Content-type", "application/octet-stream");// 设置文件名
response.setContentType("application/force-download"); // 设置强制下载不打开
response.addHeader("Content-Disposition", "attachment;fileName=" + sysFile.getFileOriginalName()); // 设置文件名
response.addHeader("Content-type", "application/octet-stream"); // 设置文件名
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
try {
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
@ -248,18 +257,19 @@ public class SysFileController extends CoreBaseController{
}
@PostMapping(value = "/insert")
@ApiOperation(value = "新增文件资源",notes = "新增文件资源")
@ApiOperation(value = "新增文件资源", notes = "新增文件资源")
public ResultBean insertSysFile(@RequestBody SysFile sysFile){
try {
// 条件验证
ValidatorBean.beginValid(sysFile)
.notNull("dfsFileName",sysFile.getDfsFileName())
.notNull("dfsGroupName",sysFile.getDfsGroupName())
.notNull("fileOriginalName",sysFile.getFileOriginalName());
.notNull("dfsFileName", sysFile.getDfsFileName())
.notNull("dfsGroupName", sysFile.getDfsGroupName())
.notNull("fileSoftType", sysFile.getFileSoftType())
.notNull("fileOriginalName", sysFile.getFileOriginalName());
// 文件类型验证
SysDictionary dictionary = dictionaryService.getSysDictionaryByParentCodeAndCode(BaseConstWords.DICTIONARY_FILE_TYPE,
StringTool.getStringFileSuffix(sysFile.getFileOriginalName(),false));
StringTool.getStringFileSuffix(sysFile.getFileOriginalName(), false));
if(dictionary == null){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
@ -282,4 +292,25 @@ public class SysFileController extends CoreBaseController{
}
}
/**
*
* @param fileCode
* @return
*/
@GetMapping("/get-file-code/{code}")
@ApiOperation(value = "根据文件代码查询文件信息")
public ResultBean getSysFileByFileCode(@PathVariable("code") String fileCode) {
try {
// 条件验证
ValidatorBean.checkNotNull(fileCode, "文件代码不能为空");
SysFile sysFile = sysFileService.getSysFileByFileCode(fileCode);
ValidatorBean.checkNotNull(sysFile, "文件信息不存在");
return ResultBean.success().setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(sysFile);
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -314,6 +314,7 @@ public class SysOrderNoRuleController extends CoreBaseController {
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(fileAbsolutePath[0]);
sysFile.setDfsFileName(fileAbsolutePath[1]);
sysFile.setFileSoftType(CommonEnumUtil.SOFT_TYPE.CORE.getValue());
sysFile.setFileSize(fastDFSFile.getContent().length);
sysFile.setFilePath(filePath);
sysFile.setFileOriginalName(fastDFSFile.getName());

@ -8,11 +8,14 @@ import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.repository.SysDictionaryRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysFileRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile;
import io.swagger.annotations.ApiOperation;
@ -21,7 +24,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.List;
@ -48,49 +50,73 @@ public class SysFileServiceImpl implements ISysFileService {
@Override
@ApiOperation(value = "新增资源信息")
public SysFile insertSysFile(SysFile sysFile) {
LOGGER.info("文件资源 SYS_FILE :{}",sysFile);
LOGGER.info("文件资源 SYS_FILE :{}", sysFile);
if (sysFile.getFileCode() != null) {
SysFile fileCode = sysFileRDao.getByProperty("fileCode", sysFile.getFileCode());
if (fileCode != null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("文件代码已存在。")
.setErrorSolution("请更换文件代码")
.build();
}
}
return sysFileRDao.insert(sysFile);
}
@Override
@ApiOperation(value = "更新资源信息")
public void updateSysFile(SysFile sysFile) {
LOGGER.info("文件资源 SYS_FILE :{}",sysFile);
LOGGER.info("文件资源 SYS_FILE :{}", sysFile);
if (sysFile.getFileCode() != null) {
List list = sysFileRDao.findByHqlWhere(CoreHqlPack.packHqlSysFileCode(sysFile));
if (list != null && list.size() > 0) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
.setErrorDetail("文件代码已存在。")
.setErrorSolution("请更换文件代码")
.build();
}
}
sysFileRDao.update(sysFile);
}
@Override
@ApiOperation(value = "查询资源信息",notes = "查询所有资源信息")
@ApiOperation(value = "查询资源信息", notes = "查询所有资源信息")
public List<SysFile> listSysFile() {
LOGGER.info("文件资源 SYS_FILE list");
return sysFileRDao.list();
}
@Override
@ApiOperation(value = "查询资源信息",notes = "根据 ID查询资源信息")
@ApiOperation(value = "查询资源信息", notes = "根据 ID查询资源信息")
public SysFile getSysFileById(Long id) {
LOGGER.info("文件资源 SYS_FILE id:{}",id);
LOGGER.info("文件资源 SYS_FILE id:{}", id);
return sysFileRDao.getById(id);
}
@Override
@ApiOperation(value = "查询资源信息",notes = "查询资源信息(分页、组合)")
@ApiOperation(value = "查询资源信息", notes = "查询资源信息(分页、组合)")
public ListPager querySysFileByPager(SysFile sysFile, Pager pager) {
LOGGER.info("文件资源 SYS_FILE sysFile:{}Pager:{}",sysFile,pager);
if(sysFile == null) {
LOGGER.info("文件资源 SYS_FILE sysFile:{}Pager:{}", sysFile, pager);
if (sysFile == null) {
pager = PagerHelper.getPager(pager, sysFileRDao.listCount());
return new ListPager(sysFileRDao.listPager(pager),pager);
}else {
return new ListPager(sysFileRDao.listPager(pager), pager);
} else {
String hqlPack = CoreHqlPack.packHqlSysFile(sysFile);
pager = PagerHelper.getPager(pager, sysFileRDao.findByHqlWhereCount(hqlPack));
return new ListPager(sysFileRDao.findByHqlWherePage(hqlPack + sysFile.orderBy(),pager),pager);
return new ListPager(sysFileRDao.findByHqlWherePage(hqlPack + sysFile.orderBy(), pager), pager);
}
}
@Override
@ApiOperation(value = "删除资源信息",notes = "根据ID删除资源信息")
@ApiOperation(value = "删除资源信息", notes = "根据ID删除资源信息")
public void deleteSysFileById(Long id) {
LOGGER.info("文件资源 SYS_FILE id:{}",id);
LOGGER.info("文件资源 SYS_FILE id:{}", id);
sysFileRDao.deleteById(id);
}
@ -101,33 +127,34 @@ public class SysFileServiceImpl implements ISysFileService {
}
@Override
@ApiOperation(value = "上传文件资源",notes = "上传文件资源")
public SysFile uploadFile(Object file) throws Exception{
@ApiOperation(value = "上传文件资源", notes = "上传文件资源")
public SysFile uploadFile(Object file) throws Exception {
FastDFSFile fastDFSFile;
// 判断参数类型
if(file instanceof File){
fastDFSFile = new FastDFSFile(((File)file).getName(), FileUtil.file2Byte(((File)file).getPath()),
StringTool.getStringFileSuffix(((File)file).getName(),true));
}else{
fastDFSFile = dfsClient.saveFile((MultipartFile) file);
if (file instanceof File) {
fastDFSFile = new FastDFSFile((( File ) file).getName(), FileUtil.file2Byte((( File ) file).getPath()),
StringTool.getStringFileSuffix((( File ) file).getName(), true));
} else {
fastDFSFile = dfsClient.saveFile(( MultipartFile ) file);
}
String[] fileAbsolutePath = dfsClient.upload(fastDFSFile);
// 保存到系统文件表中
String filePath = dfsClient.getHostUi() + "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
SysDictionary dictionary = sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd","dictionaryValue"},
SysDictionary dictionary = sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd", "dictionaryValue"},
new Object[]{BaseConstWords.DICTIONARY_FILE_TYPE, fastDFSFile.getExt()});
if(dictionary == null){
dictionary = sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd","dictionaryValue"},
new Object[]{BaseConstWords.DICTIONARY_FILE_TYPE, "."+fastDFSFile.getExt()});
if (dictionary == null) {
dictionary = sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd", "dictionaryValue"},
new Object[]{BaseConstWords.DICTIONARY_FILE_TYPE, "." + fastDFSFile.getExt()});
}
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(fileAbsolutePath[0]);
sysFile.setDfsFileName(fileAbsolutePath[1]);
sysFile.setFileSoftType(CommonEnumUtil.SOFT_TYPE.CORE.getValue());
sysFile.setFileSize(fastDFSFile.getContent().length);
sysFile.setFilePath(filePath);
sysFile.setFileOriginalName(fastDFSFile.getName());
@ -138,4 +165,9 @@ public class SysFileServiceImpl implements ISysFileService {
return insertSysFile(sysFile);
}
@Override
public SysFile getSysFileByFileCode(String fileCode) {
return sysFileRDao.getByProperty("fileCode", fileCode);
}
}

Loading…
Cancel
Save