diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java index cc210a0..0893146 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java @@ -69,4 +69,19 @@ public interface ISysDictionaryService { * @param ids */ void deleteSysDictionaryByIds(String[] ids); + + /** + * 检出文件名称是否符合系统规范 + * @param fileName + * @return + */ + boolean checkFileName(String fileName); + + /** + * 根据父节点 已经当前节点CODE 获取字典信息 + * @param parentCode + * @param code + * @return + */ + SysDictionary getSysDictionaryByParentCodeAndCode(String parentCode,String code); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java index e25b04d..a5b8fa8 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java @@ -19,7 +19,7 @@ public interface ISysFileService { * 添加文件资源信息 * @param sysFile */ - void insertSysFile(SysFile sysFile); + SysFile insertSysFile(SysFile sysFile); /** * 删除文件资源小新 @@ -44,7 +44,7 @@ public interface ISysFileService { * @param id * @return */ - SysFile getSysFileById(String id); + SysFile getSysFileById(Long id); /** * 文件资源查询,分页,排序 diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java index 99dd35d..53cfbc7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoUploadController.java @@ -1,12 +1,16 @@ package cn.estsh.i3plus.core.apiservice.controller; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +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 cn.estsh.impp.framework.boot.util.ResultBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @@ -18,7 +22,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes; * @CreateDate : 2018-09-28 11:20 * @Modify: **/ -@Controller +@RestController @RequestMapping("/demo-upload") @Api(description="复杂对象服务demo") public class DemoUploadController { @@ -51,19 +55,16 @@ public class DemoUploadController { @PostMapping("/upload") @ApiOperation(value = "文件上传",notes = "文件上传") - public String singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { - if (file.isEmpty()) { - redirectAttributes.addFlashAttribute("message", "请选择需要上传的文件。"); - return "redirect:/demo-upload/uploadStatus"; - } + public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { try { - // Get the file and save it somewhere - String path = dfsClient.saveFile(file); - redirectAttributes.addFlashAttribute("message","文件上传成功 '" + file.getOriginalFilename() + "'"); - redirectAttributes.addFlashAttribute("path","url路径 '" + path + "'"); - } catch (Exception e) { - LOGGER.error("upload file failed",e); + FastDFSFile dfsFile = dfsClient.saveFile(file); + return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(dfsFile); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); } - return "redirect:/demo-upload/uploadStatus"; } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java index 326a71b..59f2300 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java @@ -1,18 +1,24 @@ 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.convert.ConvertBean; +import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysDictionary; import cn.estsh.i3plus.pojo.platform.bean.SysFile; import cn.estsh.i3plus.pojo.platform.bean.SysMessage; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; 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 cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; @@ -21,7 +27,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import java.io.IOException; import java.util.List; /** @@ -40,30 +49,11 @@ public class SysFileController { @Autowired private ISysFileService sysFileService; + @Autowired + private ISysDictionaryService dictionaryService; - @PostMapping(value = "/insert") - @ApiOperation(value = "添加文件资源",notes = "添加文件资源") - public ResultBean insertSysFile(SysFile sysFile){ - try { - // 登录用户 - SessionUser user = AuthUtil.getSessionUser(); - - // 条件校验 - ValidatorBean.beginValid(sysFile).notNull("name",sysFile.getName()); - - // 添加初始化 - ConvertBean.modelInitialize(sysFile,user); - - sysFileService.insertSysFile(sysFile); - return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); - }catch(ImppBusiException busExcep){ - LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); - return ResultBean.fail(busExcep.getErrorShow()); - }catch(Exception e){ - LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); - return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); - } - } + @Autowired + private FastDFSClient dfsClient; @PutMapping(value = "/update") @ApiOperation(value = "修改文件资源",notes = "修改文件资源") @@ -107,8 +97,8 @@ public class SysFileController { try { List sysFileList = sysFileService.listSysFile(); return ResultBean.success("查询成功") - .setResultList(sysFileList) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setResultList(sysFileList) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); return ResultBean.fail(busExcep.getErrorShow()); @@ -122,10 +112,10 @@ public class SysFileController { @ApiOperation(value = "根据id查询文件资源",notes = "根据id查询文件资源") public ResultBean getSysFileById(@PathVariable("id") String id){ try { - SysFile sysFile = sysFileService.getSysFileById(id); + SysFile sysFile = sysFileService.getSysFileById(Long.parseLong(id)); return ResultBean.success("查询成功") - .setResultObject(sysFile) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + .setResultObject(sysFile) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); return ResultBean.fail(busExcep.getErrorShow()); @@ -173,6 +163,53 @@ public class SysFileController { } } - /****************** 对文件操作 ******************/ + @PostMapping("/upload") + @ApiOperation(value = "文件上传",notes = "文件上传") + public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { + try { + if(file.isEmpty()){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("请选择需要上传的文件。") + .build(); + } + + boolean checkFileN = dictionaryService.checkFileName(file.getOriginalFilename()); + if(!checkFileN){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_FORMAT.getCode()) + .setErrorDetail("文件格式不支持") + .setErrorSolution("请到字典管理中添加文件类型") + .build(); + } + + + FastDFSFile dfsFile = dfsClient.saveFile(file); + String filePath = dfsClient.getHostUi() + "/" + dfsFile.getDfsGroupName() + "/" + dfsFile.getDfsFileName(); + SysDictionary dictionary = dictionaryService.getSysDictionaryByParentCodeAndCode( + CommonConstWords.DICTIONARY_FILE_TYPE, + StringTool.getStringFileSuffix(file.getOriginalFilename(),false)); + SysFile sysFile = new SysFile(); + sysFile.setDfsGroupName(dfsFile.getDfsGroupName()); + sysFile.setDfsFileName(dfsFile.getDfsFileName()); + sysFile.setFileSize(dfsFile.getContent().length); + sysFile.setFilePath(filePath); + sysFile.setFileOriginalName(file.getOriginalFilename()); + sysFile.setFileTypeId(dictionary.getId()); + sysFile.setFileTypeName(dictionary.getName()); + + SysFile fileDb = sysFileService.insertSysFile(sysFile); + + return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(fileDb); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } } \ No newline at end of file diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java index a6133af..fdb24c6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.IDepartmentService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; @@ -8,6 +9,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.Department; +import cn.estsh.i3plus.pojo.platform.bean.SysFile; import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.impp.framework.boot.auth.AuthUtil; @@ -38,13 +40,16 @@ import java.util.List; public class SysUserInfoController { public static final Logger LOGGER = LoggerFactory.getLogger(SysUserInfoController.class); - + @Autowired private ISysUserInfoService sysUserInfoService; @Autowired private IDepartmentService departmentService; + @Autowired + private ISysFileService sysFileService; + @PostMapping(value="/insert") @ApiOperation(value="添加用户信息",notes="返回内容添加用户信息") public ResultBean insertSysUserInfo(SysUserInfo userInfo){ @@ -62,7 +67,6 @@ public class SysUserInfoController { ConvertBean.modelInitialize(userInfo,user); SysUserInfo pos = sysUserInfoService.insertSysUserInfo(userInfo); - sysUserInfoService.refreshRefUserDepartment(pos.getId().toString(), new String[]{userInfo.getDepartmentId().toString()}, user.getUserName()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java index 8ef9222..28d21ba 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java @@ -1,6 +1,8 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService; +import cn.estsh.i3plus.platform.common.tool.StringTool; +import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; @@ -139,4 +141,30 @@ public class SysDictionaryService implements ISysDictionaryService { sysDictionaryRDao.deleteByIds(array); } + + @Override + public boolean checkFileName(String fileName) { + List list = findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_FILE_TYPE); + + if(list != null && list.size()> 0){ + String suffix = StringTool.getStringFileSuffix(fileName,true); + + for (SysDictionary dictionary : list) { + if(suffix.toUpperCase().equals(dictionary.getDictionaryValue().toUpperCase())){ + return true; + } + } + } + return false; + } + + @Override + public SysDictionary getSysDictionaryByParentCodeAndCode(String parentCode, String code) { + List list = sysDictionaryRDao.findByProperty(new String[]{"redParentCode","dictionaryCode"}, + new Object[]{parentCode,code}); + if(list != null && list.size() > 0){ + return list.get(0); + } + return null; + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java index 7ebb71a..b6ccbdd 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java @@ -29,9 +29,9 @@ public class SysFileServiceImpl implements ISysFileService { public SysFileRepository sysFileRDao; @Override - public void insertSysFile(SysFile sysFile) { + public SysFile insertSysFile(SysFile sysFile) { LOGGER.info("文件资源 SYS_FILE :{}",sysFile); - sysFileRDao.insert(sysFile); + return sysFileRDao.insert(sysFile); } @Override @@ -53,9 +53,9 @@ public class SysFileServiceImpl implements ISysFileService { } @Override - public SysFile getSysFileById(String id) { + public SysFile getSysFileById(Long id) { LOGGER.info("文件资源 SYS_FILE id:{}",id); - return sysFileRDao.getById(Long.parseLong(id)); + return sysFileRDao.getById(id); } @Override diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 4ddd263..7420cd2 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; +import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; import cn.estsh.i3plus.core.apiservice.dao.IUserPermissionDao; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -71,37 +72,14 @@ public class SysUserService implements ISysUserService { @Autowired private RefUserPositionRepository refUserPositionRDao; + @Autowired + private SysFileRepository sysFileRDao; + @Override public SessionUser queryUserLogin(String loginName, String password, String languageCode) throws AuthenticationException { LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", loginName, password, languageCode); -// SysUser user = this.getSysUserByLoginName(loginName); -// -// if(user == null){ -// throw ImppExceptionBuilder.newInstance() -// .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) -// .setErrorCode(ImppExceptionEnum.LOGIN_USER_NAME_EXCEPTION.getCode()) -// .setErrorDetail("用户名不存在") -// .setErrorSolution("请重新输入用户名") -// .build(); -// } -// -// AuthenticationToken token = null; -// switch (user.getUserTypeId()) { -// case 2: -// token = new AdminToken(loginName, password, languageCode); -// break; -// case 3: -// token = new SaAdminToken(loginName, password, languageCode); -// break; -// default: -// token = new UserToken(loginName, password, languageCode); -// break; -// } -// SessionUser sessionUser = AuthUtil.login(token); - UserToken token = new UserToken(loginName,password,languageCode); - System.out.println("=============" + token); SessionUser sessionUser = AuthUtil.login(token); SysUser user = this.getSysUserByLoginName(loginName); @@ -336,7 +314,6 @@ public class SysUserService implements ISysUserService { * @return */ public SessionUser packSessionUser(SessionUser sessionUser, SysUser user, Integer userType, String languageCode) { - LOGGER.debug("平台用户 SYS_USER user id :{}", user.getId()); SysUserInfo userInfo = sysUserInfoRDao.getById(user.getUserInfoId()); Organize organize = organizeRDao.getById(userInfo.getOrganizeId());