1、增加文件管理

Former-commit-id: f056c3897036a814f1ee9e68bf3dc5feffeff676
master
wangbing 5 years ago
parent b67a369631
commit f20efdfae6

@ -5,13 +5,15 @@ import xyz.wbsite.dbtool.javafx.manger.FreeMarkerManager;
import xyz.wbsite.dbtool.javafx.manger.ManagerFactory;
import xyz.wbsite.dbtool.javafx.manger.ProjectManager;
import xyz.wbsite.dbtool.javafx.manger.XmlManager;
import xyz.wbsite.dbtool.javafx.po.*;
import xyz.wbsite.dbtool.javafx.po.AbstractDBmapper;
import xyz.wbsite.dbtool.javafx.po.Module;
import xyz.wbsite.dbtool.javafx.po.Project;
import xyz.wbsite.dbtool.javafx.po.Table;
import xyz.wbsite.dbtool.javafx.tool.Tool;
import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.Callable;
public class SpringBootCallable implements Callable {
@ -525,45 +527,61 @@ public class SpringBootCallable implements Callable {
ctx.put("author", md.getProjectAuthor());
ctx.put("date", new Date());
freeMarkerManager.outputTemp(new File(ent.getAbsolutePath(),"Dict.java"), option + "/java/module/system/ent/Dict.java", ctx);
freeMarkerManager.outputTemp(new File(ent.getAbsolutePath(),"DictItem.java"), option + "/java/module/system/ent/DictItem.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(),"DictItemManager.java"), option + "/java/module/system/mgr/DictItemManager.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(),"DictItemManagerImpl.java"), option + "/java/module/system/mgr/DictItemManagerImpl.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(),"DictManager.java"), option + "/java/module/system/mgr/DictManager.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(),"DictManagerImpl.java"), option + "/java/module/system/mgr/DictManagerImpl.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(),"DictItemMapper.java"), option + "/java/module/system/mpr/DictItemMapper.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(),"DictItemMapper.xml"), option + "/java/module/system/mpr/DictItemMapper.xml", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(),"DictMapper.java"), option + "/java/module/system/mpr/DictMapper.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(),"DictMapper.xml"), option + "/java/module/system/mpr/DictMapper.xml", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"AuthLoginRequest.java"), option + "/java/module/system/req/AuthLoginRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictCreateRequest.java"), option + "/java/module/system/req/DictCreateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictDeleteRequest.java"), option + "/java/module/system/req/DictDeleteRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictFindRequest.java"), option + "/java/module/system/req/DictFindRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictGetRequest.java"), option + "/java/module/system/req/DictGetRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictItemCreateRequest.java"), option + "/java/module/system/req/DictItemCreateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictItemDeleteRequest.java"), option + "/java/module/system/req/DictItemDeleteRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictItemFindRequest.java"), option + "/java/module/system/req/DictItemFindRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictItemGetRequest.java"), option + "/java/module/system/req/DictItemGetRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictItemUpdateRequest.java"), option + "/java/module/system/req/DictItemUpdateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictLoadRequest.java"), option + "/java/module/system/req/DictLoadRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(),"DictUpdateRequest.java"), option + "/java/module/system/req/DictUpdateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"AuthLoginResponse.java"), option + "/java/module/system/rsp/AuthLoginResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictCreateResponse.java"), option + "/java/module/system/rsp/DictCreateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictDeleteResponse.java"), option + "/java/module/system/rsp/DictDeleteResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictFindResponse.java"), option + "/java/module/system/rsp/DictFindResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictGetResponse.java"), option + "/java/module/system/rsp/DictGetResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictItemCreateResponse.java"), option + "/java/module/system/rsp/DictItemCreateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictItemDeleteResponse.java"), option + "/java/module/system/rsp/DictItemDeleteResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictItemFindResponse.java"), option + "/java/module/system/rsp/DictItemFindResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictItemGetResponse.java"), option + "/java/module/system/rsp/DictItemGetResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictItemUpdateResponse.java"), option + "/java/module/system/rsp/DictItemUpdateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictLoadResponse.java"), option + "/java/module/system/rsp/DictLoadResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(),"DictUpdateResponse.java"), option + "/java/module/system/rsp/DictUpdateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(ent.getAbsolutePath(), "Dict.java"), option + "/java/module/system/ent/Dict.java", ctx);
freeMarkerManager.outputTemp(new File(ent.getAbsolutePath(), "DictItem.java"), option + "/java/module/system/ent/DictItem.java", ctx);
freeMarkerManager.outputTemp(new File(ent.getAbsolutePath(), "File.java"), option + "/java/module/system/ent/File.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(), "DictItemManager.java"), option + "/java/module/system/mgr/DictItemManager.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(), "DictItemManagerImpl.java"), option + "/java/module/system/mgr/DictItemManagerImpl.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(), "DictManager.java"), option + "/java/module/system/mgr/DictManager.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(), "DictManagerImpl.java"), option + "/java/module/system/mgr/DictManagerImpl.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(), "FileManager.java"), option + "/java/module/system/mgr/FileManager.java", ctx);
freeMarkerManager.outputTemp(new File(mgr.getAbsolutePath(), "FileManagerImpl.java"), option + "/java/module/system/mgr/FileManagerImpl.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(), "DictItemMapper.java"), option + "/java/module/system/mpr/DictItemMapper.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(), "DictItemMapper.xml"), option + "/java/module/system/mpr/DictItemMapper.xml", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(), "DictMapper.java"), option + "/java/module/system/mpr/DictMapper.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(), "DictMapper.xml"), option + "/java/module/system/mpr/DictMapper.xml", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(), "FileMapper.java"), option + "/java/module/system/mpr/FileMapper.java", ctx);
freeMarkerManager.outputTemp(new File(mpr.getAbsolutePath(), "FileMapper.xml"), option + "/java/module/system/mpr/FileMapper.xml", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "AuthLoginRequest.java"), option + "/java/module/system/req/AuthLoginRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictCreateRequest.java"), option + "/java/module/system/req/DictCreateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictDeleteRequest.java"), option + "/java/module/system/req/DictDeleteRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictFindRequest.java"), option + "/java/module/system/req/DictFindRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictGetRequest.java"), option + "/java/module/system/req/DictGetRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictItemCreateRequest.java"), option + "/java/module/system/req/DictItemCreateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictItemDeleteRequest.java"), option + "/java/module/system/req/DictItemDeleteRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictItemFindRequest.java"), option + "/java/module/system/req/DictItemFindRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictItemGetRequest.java"), option + "/java/module/system/req/DictItemGetRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictItemUpdateRequest.java"), option + "/java/module/system/req/DictItemUpdateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictLoadRequest.java"), option + "/java/module/system/req/DictLoadRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "DictUpdateRequest.java"), option + "/java/module/system/req/DictUpdateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "FileCreateRequest.java"), option + "/java/module/system/req/FileCreateRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "FileDeleteRequest.java"), option + "/java/module/system/req/FileDeleteRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "FileDownloadRequest.java"), option + "/java/module/system/req/FileDownloadRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "FileFindRequest.java"), option + "/java/module/system/req/FileFindRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "FileGetRequest.java"), option + "/java/module/system/req/FileGetRequest.java", ctx);
freeMarkerManager.outputTemp(new File(req.getAbsolutePath(), "FileUploadRequest.java"), option + "/java/module/system/req/FileUploadRequest.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "AuthLoginResponse.java"), option + "/java/module/system/rsp/AuthLoginResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictCreateResponse.java"), option + "/java/module/system/rsp/DictCreateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictDeleteResponse.java"), option + "/java/module/system/rsp/DictDeleteResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictFindResponse.java"), option + "/java/module/system/rsp/DictFindResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictGetResponse.java"), option + "/java/module/system/rsp/DictGetResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictItemCreateResponse.java"), option + "/java/module/system/rsp/DictItemCreateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictItemDeleteResponse.java"), option + "/java/module/system/rsp/DictItemDeleteResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictItemFindResponse.java"), option + "/java/module/system/rsp/DictItemFindResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictItemGetResponse.java"), option + "/java/module/system/rsp/DictItemGetResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictItemUpdateResponse.java"), option + "/java/module/system/rsp/DictItemUpdateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictLoadResponse.java"), option + "/java/module/system/rsp/DictLoadResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "DictUpdateResponse.java"), option + "/java/module/system/rsp/DictUpdateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "FileCreateResponse.java"), option + "/java/module/system/rsp/FileCreateResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "FileDeleteResponse.java"), option + "/java/module/system/rsp/FileDeleteResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "FileDownloadResponse.java"), option + "/java/module/system/rsp/FileDownloadResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "FileFindResponse.java"), option + "/java/module/system/rsp/FileFindResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "FileGetResponse.java"), option + "/java/module/system/rsp/FileGetResponse.java", ctx);
freeMarkerManager.outputTemp(new File(rsp.getAbsolutePath(), "FileUploadResponse.java"), option + "/java/module/system/rsp/FileUploadResponse.java", ctx);
}
/**
@ -618,7 +636,6 @@ public class SpringBootCallable implements Callable {
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "Control.java"), option + "/java/frame/base/Control.java", ctx);
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "Error.java"), option + "/java/frame/base/Error.java", ctx);
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "ErrorType.java"), option + "/java/frame/base/ErrorType.java", ctx);
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "FileUploadResponse.java"), option + "/java/frame/base/FileUploadResponse.java", ctx);
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "Screen.java"), option + "/java/frame/base/Screen.java", ctx);
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "SortType.java"), option + "/java/frame/base/SortType.java", ctx);
freeMarkerManager.outputTemp(new File(base.getAbsolutePath(), "Token.java"), option + "/java/frame/base/Token.java", ctx);
@ -758,6 +775,7 @@ public class SpringBootCallable implements Callable {
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "DICT.sql"), option + "/resources/dbtool/system/DICT.sql", ctx);
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "DICT_ITEM.sql"), option + "/resources/dbtool/system/DICT_ITEM.sql", ctx);
freeMarkerManager.outputTemp(new File(system.getAbsolutePath(), "FILE.sql"), option + "/resources/dbtool/system/FILE.sql", ctx);
}
@ -874,6 +892,7 @@ public class SpringBootCallable implements Callable {
Tool.outputResource(option + "/resources/templates/screen/module/system/dict.ftl", new File(system.getAbsolutePath(), "dict.ftl"));
Tool.outputResource(option + "/resources/templates/screen/module/system/dictItem.ftl", new File(system.getAbsolutePath(), "dictItem.ftl"));
Tool.outputResource(option + "/resources/templates/screen/module/system/file.ftl", new File(system.getAbsolutePath(), "file.ftl"));
{
HashMap<String, Object> ctx = new HashMap<String, Object>();

@ -1,20 +1,94 @@
package ${basePackage}.action.ajax.system;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.excel.WSheet;
import ${basePackage}.frame.excel.exception.ReadErrorException;
import ${basePackage}.frame.excel.exception.TemplateNotMatchException;
import ${basePackage}.frame.utils.LogUtil;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.utils.ResponseUtil;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.module.system.ent.File;
import ${basePackage}.module.system.mgr.FileManager;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.base.FileUploadResponse;
import javax.swing.tree.TreeNode;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
public class FileAjax {
@Autowired
private FileManager fileManager;
public FileCreateResponse create(FileCreateRequest request) {
return fileManager.create(request, LocalData.getToken());
}
public FileDeleteResponse delete(FileDeleteRequest request) {
return fileManager.delete(request, LocalData.getToken());
}
public FileFindResponse find(FileFindRequest request) {
return fileManager.find(request, LocalData.getToken());
}
public FileGetResponse get(FileGetRequest request) {
return fileManager.get(request, LocalData.getToken());
}
public Object template(){
return ResponseUtil.apply(new WSheet<>(File.class));
}
public Object exports(TreeNode jsonParam) {
FileFindRequest request = MapperUtil.toJava(jsonParam, FileFindRequest.class);
FileFindResponse response = fileManager.find(request, LocalData.getToken());
if (response.hasError()) {
return response;
} else if (response.getTotalCount() == 0) {
response.addError(ErrorType.BUSINESS_ERROR, "导出数据为空");
return response;
}
return ResponseUtil.apply(new WSheet<>(response.getResult()));
}
public Object imports(MultipartFile file) {
BaseResponse baseResponse = new BaseResponse();
try {
WSheet<File> sheet = new WSheet<>(file.getBytes(), File.class, new WSheet.Validator<File>() {
@Override
public List<String> validate(File o) {
FileCreateRequest request = MapperUtil.map(o, FileCreateRequest.class);
return ValidationUtil.validate(request);
}
});
if (sheet.hasError()) {
return ResponseUtil.apply(sheet.getBytes(), sheet.getName() + "-检查.xlsx");
} else {
return baseResponse;
}
} catch (IOException e) {
e.printStackTrace();
LogUtil.dumpException(e);
baseResponse.addError(ErrorType.BUSINESS_ERROR, "上传文件出错");
} catch (TemplateNotMatchException | ReadErrorException e) {
baseResponse.addError(ErrorType.BUSINESS_ERROR, e.getMessage());
}
return baseResponse;
}
public FileUploadResponse upload(MultipartFile file) {
FileUploadResponse fileUploadResponse = new FileUploadResponse();
String fileName = file.getOriginalFilename();
@ -24,7 +98,7 @@ public class FileAjax {
//========
fileUploadResponse.setId(1L);
fileUploadResponse.setUrl("example.com\\img\\1.jpg");
fileUploadResponse.setDownloadUrl("example.com\\img\\1.jpg");
fileUploadResponse.setUrlDownload("example.com\\img\\1.jpg");
if (file != null) {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传成功,但未处理文件[" + fileName + "]!");

@ -1,32 +1,51 @@
package ${basePackage}.action.api.system;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;
import ${basePackage}.frame.base.BaseResponse;
import ${basePackage}.frame.auth.LocalData;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.base.FileUploadResponse;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.utils.Base64Util;
import ${basePackage}.module.system.mgr.FileManager;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import org.springframework.beans.factory.annotation.Autowired;
import javax.swing.tree.TreeNode;
import java.io.IOException;
import java.net.URLEncoder;
public class FileApi {
public FileUploadResponse upload(MultipartFile file) {
@Autowired
private FileManager fileManager;
public FileCreateResponse create(FileCreateRequest request) {
return fileManager.create(request, LocalData.getToken());
}
public FileDeleteResponse delete(FileDeleteRequest request) {
return fileManager.delete(request, LocalData.getToken());
}
public FileFindResponse find(FileFindRequest request) {
return fileManager.find(request, LocalData.getToken());
}
public FileGetResponse get(FileGetRequest request) {
return fileManager.get(request, LocalData.getToken());
}
public FileUploadResponse upload(FileUploadRequest request) {
FileUploadResponse fileUploadResponse = new FileUploadResponse();
String fileName = file.getOriginalFilename();
String fileName = request.getFileName();
String dataBase64 = request.getDataBase64();
//========
// todo 处理文件
//========
fileUploadResponse.setId(1L);
fileUploadResponse.setUrl("example.com\\img\\1.jpg");
fileUploadResponse.setDownloadUrl("example.com\\img\\1.jpg");
fileUploadResponse.setUrlDownload("example.com\\img\\1.jpg");
if (file != null) {
if (dataBase64 != null) {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传成功,但未处理文件[" + fileName + "]!");
} else {
fileUploadResponse.addError(ErrorType.BUSINESS_ERROR, "文件上传失败!");
@ -35,20 +54,20 @@ public class FileApi {
return fileUploadResponse;
}
public Object download(TreeNode jsonParam) {
try {
//========
// todo 下载示例
//========
byte[] bytes = "test".getBytes();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", URLEncoder.encode("example.test", "utf-8"));
return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
} catch (IOException e) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.addError(ErrorType.BUSINESS_ERROR, "");
return baseResponse;
public FileDownloadResponse download(FileDownloadRequest request) {
FileDownloadResponse response = new FileDownloadResponse();
FileGetRequest fileGetRequest = MapperUtil.map(request, FileGetRequest.class);
FileGetResponse fileGetResponse = fileManager.get(fileGetRequest, LocalData.getToken());
if (fileGetResponse.hasError() || null == fileGetResponse.getFile()) {
response.addErrors(fileGetResponse.getErrors());
response.addError(ErrorType.BUSINESS_ERROR, "未找到文件");
return response;
}
response.setFile(fileGetResponse.getFile());
// todo 实例文件字节转Base64
response.setBase64(Base64Util.encodeToString("".getBytes()));
return response;
}
}

@ -1,34 +0,0 @@
package ${basePackage}.frame.base;
public class FileUploadResponse extends BaseResponse {
private Long id;
private String url;
private String downloadUrl;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getDownloadUrl() {
return downloadUrl;
}
public void setDownloadUrl(String downloadUrl) {
this.downloadUrl = downloadUrl;
}
}

@ -0,0 +1,116 @@
package ${basePackage}.module.system.ent;
import ${basePackage}.frame.excel.annotation.ColumnDescription;
import ${basePackage}.frame.excel.annotation.ColumnName;
import ${basePackage}.frame.excel.annotation.SheetName;
import ${basePackage}.frame.base.BaseEntity;
/**
* FILE -
*
* @author author
* @version 0.0.1
* @since 2019-11-29
*/
@SheetName("文件")
public class File extends BaseEntity {
/**
* NAME -
*/
@ColumnName("文件名称")
@ColumnDescription("文件名称")
private String name;
/**
* FILE_TYPE -
*/
@ColumnName("文件类型")
@ColumnDescription("文件类型")
private String fileType;
/**
* ATTRIBUTE1 - 1
*/
@ColumnName("扩展属性1")
@ColumnDescription("扩展属性1")
private String attribute1;
/**
* ATTRIBUTE2 - 2
*/
@ColumnName("扩展属性2")
@ColumnDescription("扩展属性2")
private String attribute2;
/**
* LOCATION -
*/
@ColumnName("存放地址")
@ColumnDescription("存放地址")
private String location;
/**
* URL - 访
*/
@ColumnName("访问地址")
@ColumnDescription("访问地址")
private String url;
/**
* URL_DOWNLOAD -
*/
@ColumnName("下载地址")
@ColumnDescription("下载地址")
private String urlDownload;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getFileType() {
return this.fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getAttribute1() {
return this.attribute1;
}
public void setAttribute1(String attribute1) {
this.attribute1 = attribute1;
}
public String getAttribute2() {
return this.attribute2;
}
public void setAttribute2(String attribute2) {
this.attribute2 = attribute2;
}
public String getLocation() {
return this.location;
}
public void setLocation(String location) {
this.location = location;
}
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrlDownload() {
return this.urlDownload;
}
public void setUrlDownload(String urlDownload) {
this.urlDownload = urlDownload;
}
}

@ -9,7 +9,7 @@ import ${basePackage}.module.system.rsp.*;
*
* @author wangbing
* @version 0.0.1
* @since 2019-07-20
* @since 2017-01-01
*/
public interface DictItemManager {

@ -22,7 +22,7 @@ import ${basePackage}.module.system.rsp.*;
*
* @author wangbing
* @version 0.0.1
* @since 2019-07-20
* @since 2017-01-01
*/
@Transactional
@Service

@ -9,7 +9,7 @@ import ${basePackage}.module.system.rsp.*;
*
* @author wangbing
* @version 0.0.1
* @since 2019-07-20
* @since 2017-01-01
*/
public interface DictManager {

@ -24,7 +24,7 @@ import java.util.List;
*
* @author wangbing
* @version 0.0.1
* @since 2019-07-20
* @since 2017-01-01
*/
@Transactional
@Service

@ -0,0 +1,51 @@
package ${basePackage}.module.system.mgr;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import ${basePackage}.frame.base.Token;
/**
*
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public interface FileManager {
/**
*
*
* @param request
* @param token
* @return
*/
FileCreateResponse create(FileCreateRequest request, Token token);
/**
*
*
* @param request
* @param token
* @return
*/
FileDeleteResponse delete(FileDeleteRequest request, Token token);
/**
*
*
* @param request
* @param token
* @return
*/
FileFindResponse find(FileFindRequest request, Token token);
/**
*
*
* @param request
* @param token
* @return
*/
FileGetResponse get(FileGetRequest request, Token token);
}

@ -0,0 +1,142 @@
package ${basePackage}.module.system.mgr;
import ${basePackage}.frame.utils.IDgenerator;
import ${basePackage}.frame.utils.Message;
import ${basePackage}.frame.base.ErrorType;
import ${basePackage}.frame.base.Token;
import ${basePackage}.frame.utils.MapperUtil;
import ${basePackage}.frame.utils.ValidationUtil;
import ${basePackage}.module.system.ent.File;
import ${basePackage}.module.system.mpr.FileMapper;
import ${basePackage}.module.system.req.*;
import ${basePackage}.module.system.rsp.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.pagehelper.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* FILE -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
@Transactional
@Service
public class FileManagerImpl implements FileManager {
@Autowired
private FileMapper fileMapper;
/**
*
*
* @param request
* @param token
* @return
*/
public FileCreateResponse create(FileCreateRequest request, Token token) {
FileCreateResponse response = new FileCreateResponse();
ValidationUtil.validate(request, response);
if (response.hasError()) {
return response;
}
long id = IDgenerator.nextId();
File entity = MapperUtil.map(request, File.class);
entity.setId(id);
long result = fileMapper.insert(entity, token);
if (1L != result) {
response.addError(ErrorType.BUSINESS_ERROR, Message.CREATE_FAILURE);
return response;
}
response.setId(id);
return response;
}
/**
*
*
* @param request
* @param token
* @return
*/
public FileDeleteResponse delete(FileDeleteRequest request, Token token) {
FileDeleteResponse response = new FileDeleteResponse();
ValidationUtil.validate(request, response);
if (response.hasError()) {
return response;
}
long result = fileMapper.delete(request, token);
if (1L != result) {
response.addError(ErrorType.BUSINESS_ERROR, Message.DELETE_FAILURE);
return response;
}
response.setResult(result);
return response;
}
/**
*
*
* @param request
* @param token
* @return
*/
@Transactional(readOnly = true)
public FileFindResponse find(FileFindRequest request, Token token) {
FileFindResponse response = new FileFindResponse();
ValidationUtil.validate(request, response);
if (response.hasError()) {
return response;
}
PageHelper.startPage(request.getPageNumber(), request.getPageSize());
if (StringUtil.isNotEmpty(request.getSortKey())) {
PageHelper.orderBy(request.getSortKey() + " " + request.getSortType());
}
PageInfo<File> pageInfo = new PageInfo<>(fileMapper.find(request, token));
response.setResult(pageInfo.getList());
response.setTotalCount(pageInfo.getTotal());
return response;
}
/**
*
*
* @param request
* @param token
* @return
*/
@Transactional(readOnly = true)
public FileGetResponse get(FileGetRequest request, Token token) {
FileGetResponse response = new FileGetResponse();
ValidationUtil.validate(request, response);
if (response.hasError()) {
return response;
}
File po = fileMapper.get(request, token);
if (po != null) {
response.setFile(po);
} else {
response.addError(ErrorType.BUSINESS_ERROR, Message.GET_FAILURE);
}
return response;
}
}

@ -0,0 +1,65 @@
package ${basePackage}.module.system.mpr;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import ${basePackage}.module.system.ent.File;
import ${basePackage}.module.system.req.*;
import ${basePackage}.frame.base.Token;
/**
* FILE -
*
* @author author
* @date 2019-11-29
*/
@Mapper
public interface FileMapper {
/**
*
*
* @param request
* @param token
* @return
*/
long insert(@Param("request") File request, @Param("token") Token token);
/**
*
*
* @param request
* @param token
* @return
*/
long insertBatch(@Param("list") List<File> request, @Param("token") Token token);
/**
*
*
* @param request
* @param token
* @return
*/
long delete(@Param("request") FileDeleteRequest request, @Param("token") Token token);
/**
*
*
* @param request
* @param token
* @return
*/
List<File> find(@Param("request") FileFindRequest request, @Param("token") Token token);
/**
*
*
* @param request
* @param token
* @return
*/
File get(@Param("request") FileGetRequest request, @Param("token") Token token);
}

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${basePackage}.module.system.mpr.FileMapper">
<sql id="table">`SYSFILE`</sql>
<sql id="entityColumnList">
`ID`,`NAME`,`FILE_TYPE`,`ATTRIBUTE1`,`ATTRIBUTE2`,`LOCATION`,`URL`,`URL_DOWNLOAD`,`ROW_VERSION`,`IS_DELETED`,`CREATE_BY`,`CREATE_TIME`,`LAST_UPDATE_BY`,`LAST_UPDATE_TIME`
</sql>
<resultMap id="file" type="${basePackage}.module.system.ent.File">
<result column="ID" jdbcType="BIGINT" property="id"/>
<result column="NAME" jdbcType="VARCHAR" property="name"/>
<result column="FILE_TYPE" jdbcType="VARCHAR" property="fileType"/>
<result column="ATTRIBUTE1" jdbcType="VARCHAR" property="attribute1"/>
<result column="ATTRIBUTE2" jdbcType="VARCHAR" property="attribute2"/>
<result column="LOCATION" jdbcType="VARCHAR" property="location"/>
<result column="URL" jdbcType="VARCHAR" property="url"/>
<result column="URL_DOWNLOAD" jdbcType="VARCHAR" property="urlDownload"/>
<result column="ROW_VERSION" jdbcType="BIGINT" property="rowVersion"/>
<result column="IS_DELETED" jdbcType="BIT" property="isDeleted"/>
<result column="CREATE_BY" jdbcType="BIGINT" property="createBy"/>
<result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime"/>
<result column="LAST_UPDATE_BY" jdbcType="BIGINT" property="lastUpdateBy"/>
<result column="LAST_UPDATE_TIME" jdbcType="TIMESTAMP" property="lastUpdateTime"/>
</resultMap>
<select id="find" resultMap="file">
SELECT
<include refid="entityColumnList"/>
FROM
<include refid="table"/>
WHERE
`IS_DELETED` = 0
<if test="request.name != null and request.name != ''">
AND `NAME` = ${r"#"}{request.name}
</if>
<if test="request.fileType != null and request.fileType != ''">
AND `FILE_TYPE` = ${r"#"}{request.fileType}
</if>
<if test="request.attribute1 != null and request.attribute1 != ''">
AND `ATTRIBUTE1` = ${r"#"}{request.attribute1}
</if>
<if test="request.attribute2 != null and request.attribute2 != ''">
AND `ATTRIBUTE2` = ${r"#"}{request.attribute2}
</if>
</select>
<select id="search" resultMap="file">
SELECT
<include refid="entityColumnList"/>
FROM
<include refid="table"/>
WHERE
`IS_DELETED` = 0
<if test="request.keyword != null and request.keyword != ''">
1 = 2
</if>
</select>
<insert id="insert">
INSERT INTO
<include refid="table"/>
(
<include refid="entityColumnList"/>
)
VALUES
(
${r"#"}{request.id},
${r"#"}{request.name,jdbcType=VARCHAR},
${r"#"}{request.fileType,jdbcType=VARCHAR},
${r"#"}{request.attribute1,jdbcType=VARCHAR},
${r"#"}{request.attribute2,jdbcType=VARCHAR},
${r"#"}{request.location,jdbcType=VARCHAR},
${r"#"}{request.url,jdbcType=VARCHAR},
${r"#"}{request.urlDownload,jdbcType=VARCHAR},
0,
0,
${r"#"}{token.userId,jdbcType=NUMERIC},
sysdate(),
NULL,
NULL
)
</insert>
<insert id="insertBatch">
INSERT INTO
<include refid="table"/>
(
<include refid="entityColumnList"/>
)
VALUES
<foreach collection="list" item= "item" index ="index" separator=",">
(
${r"#"}{item.id},
${r"#"}{item.name,jdbcType=VARCHAR},
${r"#"}{item.fileType,jdbcType=VARCHAR},
${r"#"}{item.attribute1,jdbcType=VARCHAR},
${r"#"}{item.attribute2,jdbcType=VARCHAR},
${r"#"}{item.location,jdbcType=VARCHAR},
${r"#"}{item.url,jdbcType=VARCHAR},
${r"#"}{item.urlDownload,jdbcType=VARCHAR},
0,
0,
${r"#"}{token.userId,jdbcType=NUMERIC},
sysdate(),
NULL,
NULL
)
</foreach >
</insert>
<update id="delete">
UPDATE
<include refid="table"/>
SET `IS_DELETED` = 1
WHERE `IS_DELETED` = 0
AND `ID` = ${r"#"}{request.id}
</update>
<update id="update">
UPDATE
<include refid="table"/>
SET
`NAME` = ${r"#"}{request.name,jdbcType=VARCHAR},
`FILE_TYPE` = ${r"#"}{request.fileType,jdbcType=VARCHAR},
`ATTRIBUTE1` = ${r"#"}{request.attribute1,jdbcType=VARCHAR},
`ATTRIBUTE2` = ${r"#"}{request.attribute2,jdbcType=VARCHAR},
`LOCATION` = ${r"#"}{request.location,jdbcType=VARCHAR},
`URL` = ${r"#"}{request.url,jdbcType=VARCHAR},
`URL_DOWNLOAD` = ${r"#"}{request.urlDownload,jdbcType=VARCHAR},
`ROW_VERSION` = `ROW_VERSION` + 1,
`LAST_UPDATE_BY` = ${r"#"}{token.userId},
`LAST_UPDATE_TIME` = sysdate()
WHERE
`IS_DELETED` = 0
AND `ID` = ${r"#"}{request.id}
AND `ROW_VERSION` = ${r"#"}{request.rowVersion}
</update>
<select id="getAll" resultMap="file">
SELECT
<include refid="entityColumnList"/>
FROM
<include refid="table"/>
WHERE
`IS_DELETED` = 0
</select>
<select id="get" resultMap="file">
SELECT
<include refid="entityColumnList"/>
FROM
<include refid="table"/>
WHERE
`IS_DELETED` = 0
AND `ID` = ${r"#"}{request.id}
</select>
</mapper>

@ -0,0 +1,116 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.validation.Dict;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotEmpty;
import org.hibernate.validator.constraints.Length;
/**
* FileCreateRequest -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileCreateRequest extends BaseRequest {
/**
*
*/
@NotEmpty(message = "文件名称不能为空")
@Length(min = 0, max = 255, message = "文件名称长度不合法(0-255)")
private String name;
/**
*
*/
@Dict(name = "fileType")
private String fileType;
/**
* 1
*/
@Length(min = 0, max = 50, message = "扩展属性1长度不合法(0-50)")
private String attribute1;
/**
* 2
*/
@Length(min = 0, max = 50, message = "扩展属性2长度不合法(0-50)")
private String attribute2;
/**
*
*/
@Length(min = 0, max = 500, message = "存放地址长度不合法(0-500)")
private String location;
/**
* 访
*/
@Length(min = 0, max = 500, message = "访问地址长度不合法(0-500)")
private String url;
/**
*
*/
@Length(min = 0, max = 500, message = "下载地址长度不合法(0-500)")
private String urlDownload;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getFileType() {
return this.fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getAttribute1() {
return this.attribute1;
}
public void setAttribute1(String attribute1) {
this.attribute1 = attribute1;
}
public String getAttribute2() {
return this.attribute2;
}
public void setAttribute2(String attribute2) {
this.attribute2 = attribute2;
}
public String getLocation() {
return this.location;
}
public void setLocation(String location) {
this.location = location;
}
public String getUrl() {
return this.url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrlDownload() {
return this.urlDownload;
}
public void setUrlDownload(String urlDownload) {
this.urlDownload = urlDownload;
}
}

@ -0,0 +1,28 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseUpdateRequest;
import javax.validation.constraints.NotNull;
/**
* FileDeleteRequest -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileDeleteRequest extends BaseUpdateRequest {
/**
*
*/
@NotNull(message = "主键不能为空")
private long id;
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
}

@ -0,0 +1,29 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
* FileDownloadRequest -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileDownloadRequest extends BaseRequest {
/**
* ID
*/
@NotNull(message = "文件ID不能为空")
private Long fileId;
public Long getFileId() {
return fileId;
}
public void setFileId(Long fileId) {
this.fileId = fileId;
}
}

@ -0,0 +1,67 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseFindRequest;
import ${basePackage}.frame.validation.Dict;
/**
* FileRequest -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileFindRequest extends BaseFindRequest {
/**
*
*/
private String name;
/**
*
*/
@Dict(name = "fileType")
private String fileType;
/**
* 1
*/
private String attribute1;
/**
* 2
*/
private String attribute2;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getFileType() {
return this.fileType;
}
public void setFileType(String fileType) {
this.fileType = fileType;
}
public String getAttribute1() {
return this.attribute1;
}
public void setAttribute1(String attribute1) {
this.attribute1 = attribute1;
}
public String getAttribute2() {
return this.attribute2;
}
public void setAttribute2(String attribute2) {
this.attribute2 = attribute2;
}
}

@ -0,0 +1,29 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotNull;
/**
* FileDownloadRequest -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileGetRequest extends BaseRequest {
/**
* ID
*/
@NotNull(message = "文件ID不能为空")
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}

@ -0,0 +1,56 @@
package ${basePackage}.module.system.req;
import ${basePackage}.frame.base.BaseRequest;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
/**
* FileUploadRequest -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileUploadRequest extends BaseRequest {
/**
* (.)
*/
@NotEmpty(message = "文件名不能为空")
@Pattern(regexp = ".*\\.*$", message = "文件后缀错误")
private String fileName;
/**
* (base64)
*/
private String dataBase64;
/**
* ()
*/
private byte dataBytes;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getDataBase64() {
return dataBase64;
}
public void setDataBase64(String dataBase64) {
this.dataBase64 = dataBase64;
}
public byte getDataBytes() {
return dataBytes;
}
public void setDataBytes(byte dataBytes) {
this.dataBytes = dataBytes;
}
}

@ -0,0 +1,26 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.frame.base.BaseResponse;
/**
* FileCreateResponse -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileCreateResponse extends BaseResponse {
/**
* ID
*/
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}

@ -0,0 +1,26 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.frame.base.BaseResponse;
/**
* FileDeleteResponse -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileDeleteResponse extends BaseResponse {
/**
*
*/
private Long result;
public Long getResult() {
return this.result;
}
public void setResult(Long result) {
this.result = result;
}
}

@ -0,0 +1,39 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.module.system.ent.File;
import ${basePackage}.frame.base.BaseResponse;
/**
* FileDownloadResponse -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileDownloadResponse extends BaseResponse {
/**
*
*/
private File file;
/**
* base64
*/
private String base64;
public File getFile() {
return this.file;
}
public void setFile(File file) {
this.file = file;
}
public String getBase64() {
return base64;
}
public void setBase64(String base64) {
this.base64 = base64;
}
}

@ -0,0 +1,14 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.frame.base.BaseFindResponse;
import ${basePackage}.module.system.ent.File;
/**
* FileFindResponse -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileFindResponse extends BaseFindResponse<File> {
}

@ -0,0 +1,27 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.module.system.ent.File;
import ${basePackage}.frame.base.BaseResponse;
/**
* FileGetResponse -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileGetResponse extends BaseResponse {
/**
*
*/
private File file;
public File getFile() {
return this.file;
}
public void setFile(File file) {
this.file = file;
}
}

@ -0,0 +1,50 @@
package ${basePackage}.module.system.rsp;
import ${basePackage}.frame.base.BaseResponse;
/**
* FileUploadResponse -
*
* @author wangbing
* @version 0.0.1
* @since 2017-01-01
*/
public class FileUploadResponse extends BaseResponse {
/**
* ID
*/
private Long id;
/**
* 访URL
*/
private String url;
/**
* ID
*/
private String urlDownload;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUrlDownload() {
return urlDownload;
}
public void setUrlDownload(String urlDownload) {
this.urlDownload = urlDownload;
}
}

@ -0,0 +1,27 @@
/*
Target : MYSQL
Author
Date: 2019-11-29
*/
-- ----------------------------
-- Table structure for FILE - 文件
-- ----------------------------
CREATE TABLE `SYSFILE` (
`ID` BIGINT(20) NOT NULL COMMENT '主键',
`NAME` VARCHAR(250) NOT NULL COMMENT '文件名称',
`FILE_TYPE` VARCHAR(10) COMMENT '文件类型',
`ATTRIBUTE1` VARCHAR(50) COMMENT '扩展属性1',
`ATTRIBUTE2` VARCHAR(50) COMMENT '扩展属性2',
`LOCATION` VARCHAR(500) COMMENT '存放地址',
`URL` VARCHAR(500) COMMENT '访问地址',
`URL_DOWNLOAD` VARCHAR(500) COMMENT '下载地址',
`ROW_VERSION` BIGINT(20) NOT NULL DEFAULT 0 COMMENT '行版本',
`IS_DELETED` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已删除',
`CREATE_BY` BIGINT(20) NOT NULL COMMENT '创建用户',
`CREATE_TIME` DATETIME NOT NULL COMMENT '创建时间',
`LAST_UPDATE_BY` BIGINT(20) DEFAULT NULL COMMENT '最后更新用户',
`LAST_UPDATE_TIME` DATETIME DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文件';

@ -17,6 +17,7 @@
<span slot="title">系统设置</span>
</template>
<el-menu-item index="${tool.uuid()}" @click="addTab({title: '字典管理', name: 'dict', url: '${r'${context}'}/system/dict.htm'})">字典管理</el-menu-item>
<el-menu-item index="${tool.uuid()}" @click="addTab({title: '文件管理', name: 'dict', url: '${r'${context}'}/system/file.htm'})">文件管理</el-menu-item>
</el-submenu>
<#list modules as item>
<el-submenu index="${tool.uuid()}">

@ -184,8 +184,14 @@
type="selection"
width="40">
</el-table-column>
<el-table-column
align="center"
prop="id"
label="主键"
width="140">
</el-table-column>
<#list fields as item>
<#if item.isQuery && !item.isSystem>
<#if !item.isSystem>
<el-table-column
align="center"
prop="${item.getFName()}"

@ -0,0 +1,249 @@
<div id="app" v-cloak>
<el-card class="box-card search">
<el-form :inline="true" :model="vm" ref="vm" label-position="left" label-width="90px">
<el-form-item label="文件名称" prop="name">
<el-input v-model="vm.name" clearable size="small" placeholder="请输入文件名称"></el-input>
</el-form-item>
<el-form-item label="文件类型" prop="fileType">
<el-input-dict v-model="vm.fileType" clearable size="small" placeholder="请输入文件类型" dict-name="fileType" ></el-input-dict>
</el-form-item>
<el-form-item label="扩展属性1" prop="attribute1">
<el-input v-model="vm.attribute1" clearable size="small" placeholder="请输入扩展属性1"></el-input>
</el-form-item>
<el-form-item label="扩展属性2" prop="attribute2">
<el-input v-model="vm.attribute2" clearable size="small" placeholder="请输入扩展属性2"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" size="small" icon="el-icon-search" @click="onSearch">搜索</el-button>
<el-button type="warning" size="small" icon="el-icon-refresh-left" @click="onReset('vm')">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card">
<el-row>
<el-col :span="12">
<el-button type="success" size="small" icon="el-icon-plus" @click="onCreate">新增</el-button>
<el-button type="warning" size="small" icon="el-icon-download" @click="onExport">导出</el-button>
<el-dialog class="form" :title="form.title" :visible.sync="form.dialog">
<el-form :model="form" :inline="true" :rules="formRules" ref="form" label-position="left" label-width="90px">
<el-form-item label="文件名称" prop="name">
<el-input v-model="form.name" clearable size="small" placeholder="请输入文件名称"></el-input>
</el-form-item>
<el-form-item label="文件类型" prop="fileType">
<el-input-dict v-model="form.fileType" clearable size="small" placeholder="请输入文件类型" dict-name="fileType" ></el-input-dict>
</el-form-item>
<el-form-item label="扩展属性1" prop="attribute1">
<el-input v-model="form.attribute1" clearable size="small" placeholder="请输入扩展属性1"></el-input>
</el-form-item>
<el-form-item label="扩展属性2" prop="attribute2">
<el-input v-model="form.attribute2" clearable size="small" placeholder="请输入扩展属性2"></el-input>
</el-form-item>
<el-form-item label="存放地址" prop="location">
<el-input v-model="form.location" clearable size="small" placeholder="请输入存放地址"></el-input>
</el-form-item>
<el-form-item label="访问地址" prop="url">
<el-input v-model="form.url" clearable size="small" placeholder="请输入访问地址"></el-input>
</el-form-item>
<el-form-item label="下载地址" prop="urlDownload">
<el-input v-model="form.urlDownload" clearable size="small" placeholder="请输入下载地址"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="form.dialog = false">取 消</el-button>
<el-button size="small" type="primary" @click="onSave">保存</el-button>
</span>
</el-dialog>
</el-col>
<el-col :span="12">
<el-button-group style="float: right;">
<el-tooltip effect="dark" content="Excel模板下载" placement="bottom">
<el-button size="small" icon="el-icon-date" @click="onTemplate"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="Excel导入" placement="bottom">
<el-button size="small" icon="el-icon-upload2" @click="onImport"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="批量删除" placement="bottom">
<el-button size="small" icon="el-icon-delete" @click="onBitchDelete"></el-button>
</el-tooltip>
<el-tooltip effect="dark" content="刷新" placement="bottom">
<el-button size="small" icon="el-icon-refresh" @click="onFind"></el-button>
</el-tooltip>
</el-button-group>
</el-col>
</el-row>
<el-table
style="margin-top: 10px"
@selection-change="onSelectionChange"
empty-text="无数据"
:data="result"
size="mini"
style="width: 100%">
<el-table-column
align="center"
type="selection"
width="40">
</el-table-column>
<el-table-column
align="center"
prop="id"
label="主键"
width="140">
</el-table-column>
<el-table-column
align="center"
prop="name"
label="文件名称">
</el-table-column>
<el-table-column
align="center"
prop="fileType"
label="文件类型">
</el-table-column>
<el-table-column
align="center"
prop="location"
label="存放地址">
</el-table-column>
<el-table-column
align="center"
prop="createTime"
width="140"
label="创建时间">
</el-table-column>
<el-table-column
align="center"
fixed="right"
width="120"
label="操作">
<template slot-scope="scope">
<el-dropdown size="mini" split-button type="primary" @click="onCommand(['edit',scope.row])"
@command="onCommand">
<i class="el-icon-edit"></i>编辑
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="['delete',scope.row]" icon="el-icon-delete">删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<el-pagination
background
v-if="vm.totalCount > vm.pageSize"
style="margin-top: 10px"
@current-change="onPage"
:current-page="vm.pageNumber"
:page-size="vm.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="vm.totalCount">
</el-pagination>
</el-card>
</div>
<script>
var app = new Vue({
mixins: [mixin],
el: "#app",
data: {
module: 'system',
target: 'file',
vm: {//条件及分页参数
name: "",
fileType: "",
attribute1: "",
attribute2: "",
pageNumber: 1,
pageSize: 10,
totalCount: 0,
sortKey:'CREATE_TIME',
sortType:'DESC'
},
form: {//待提交表单
title: "",
dialog: false,
id: '',
name: "",
fileType: "",
attribute1: "",
attribute2: "",
location: "",
url: "",
urlDownload: "",
rowVersion: ""
},
formRules: {
name: [
{required: true, message: '文件名称不能为空', trigger: 'blur'},
{min: 1, max: 255, message: '文件名称长度在 1 到 255 个字符', trigger: 'blur'}
],
fileType: [
],
attribute1: [
{min: 1, max: 50, message: '扩展属性1长度在 1 到 50 个字符', trigger: 'blur'}
],
attribute2: [
{min: 1, max: 50, message: '扩展属性2长度在 1 到 50 个字符', trigger: 'blur'}
],
location: [
{min: 1, max: 500, message: '存放地址长度在 1 到 500 个字符', trigger: 'blur'}
],
url: [
{min: 1, max: 500, message: '访问地址长度在 1 到 500 个字符', trigger: 'blur'}
],
urlDownload: [
{min: 1, max: 500, message: '下载地址长度在 1 到 500 个字符', trigger: 'blur'}
],
}
},
methods: {
onCreate: function () {
this.form.title = "文件新增";
this.form.dialog = true;
this.form.id = "";
this.form.name = "";
this.form.fileType = "";
this.form.attribute1 = "";
this.form.attribute2 = "";
this.form.location = "";
this.form.url = "";
this.form.urlDownload = "";
},
onCommand: function (arg) {
const cmd = arg[0];
const item = arg[1];
switch (cmd) {
case "edit":
this.form.title = "文件编辑";
this.form.dialog = true;
this.form.id = item.id;
this.form.name = item.name;
this.form.fileType = item.fileType;
this.form.attribute1 = item.attribute1;
this.form.attribute2 = item.attribute2;
this.form.location = item.location;
this.form.url = item.url;
this.form.urlDownload = item.urlDownload;
this.form.rowVersion = item.rowVersion;
break;
case "delete":
this.onDelete(item);
break;
default:
this.w("未找到对应的命令");
break;
}
},
},
mounted: function () {
this.onFind();
},
})
</script>
Loading…
Cancel
Save

Powered by TurnKey Linux.