diff --git a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/enums/CollectManifestUserTypeEnum.java b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/enums/CollectManifestUserTypeEnum.java index b9a2956e3..15938c07a 100644 --- a/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/enums/CollectManifestUserTypeEnum.java +++ b/jero-boot/jero-boot-module-certification/src/main/java/com/jero/modules/cert/collect/enums/CollectManifestUserTypeEnum.java @@ -14,7 +14,7 @@ public enum CollectManifestUserTypeEnum { DRE("填写人", "Dre People","dre"), STUDIO("R&H Studio","R&H Studio","studio"), MANAGER("R&H Manager","R&H Manager","manager"), - ADMIN("系统管理员","Administrator","admin"), + ADMIN("系统","Administrator","admin"), GUEST("游客", "Guest","guest"); String name; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java index 9798e3269..0eab59998 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/controller/ExtRepoDataController.java @@ -1,12 +1,11 @@ package com.jero.modules.extRepo.controller; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.jero.common.api.vo.Result; import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.system.base.controller.JeroController; -import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.LoginUser; import com.jero.modules.extRepo.entity.ExtRepoData; import com.jero.modules.extRepo.entity.ExtRepoDataPage; @@ -24,7 +23,9 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; import java.util.Arrays; +import java.util.Date; import java.util.List; @@ -45,6 +46,9 @@ public class ExtRepoDataController extends JeroController queryWrapper = QueryGenerator.initQueryWrapper(extRepoData, req.getParameterMap()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); Page page = new Page(pageNo, pageSize); // 文件名称模糊查询 String fileName = req.getParameter("fileName"); if (StringUtils.isNotBlank(fileName)) { - queryWrapper.like("fileName", fileName); + queryWrapper.like(ExtRepoData::getFileName, fileName); } - // 创建人模糊查询 + // 上传人模糊查询 String createBy = req.getParameter("createBy"); - if (StringUtils.isNotBlank(fileName)) { - queryWrapper.like("createBy", createBy); + if (StringUtils.isNotBlank(createBy)) { + queryWrapper.like(ExtRepoData::getCreateBy, createBy); } + // 更新时间查询 + String createTime = req.getParameter("time"); + if (StringUtils.isNotBlank(createTime)) { + String[] createTimeArr = createTime.split(","); + if (createTimeArr.length >= 2) { + queryWrapper.between(ExtRepoData::getCreateTime, createTimeArr[0], createTimeArr[1]); + } + } + queryWrapper.eq(ExtRepoData::getSupFolder, extRepoData.getSupFolder()); IPage pageList = extRepoDataService.page(page, queryWrapper); log.info("查询当前页:" + pageList.getCurrent()); log.info("查询当前页数量:" + pageList.getSize()); @@ -107,13 +120,15 @@ public class ExtRepoDataController extends JeroController add(@Validated @RequestBody ExtRepoData extRepoData) { if (extRepoFolderService.haveManageAuth(extRepoData.getSupFolder())) { - extRepoDataService.add(extRepoData); - return Result.OK("添加成功!"); + log.info("对外报告数据表收到文件添加请求,开始处理文件:【" + sdf.format(new Date()) + "】"); + int res = extRepoDataService.add(extRepoData); + return Result.OK("添加成功" + res + "条数据!"); } else { return Result.error("没有权限!"); } } + /** * 编辑 * @@ -125,10 +140,11 @@ public class ExtRepoDataController extends JeroController edit(@Validated @RequestBody ExtRepoData extRepoData) { ExtRepoData erd = extRepoDataService.queryById(extRepoData.getId()); - if (extRepoFolderService.haveManageAuth(erd.getSupFolder())) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (extRepoFolderService.isManager() || sysUser.getUsername().equals(erd.getCreateBy())) { extRepoData.setSupFolder(erd.getSupFolder()); extRepoDataService.editById(extRepoData); - return Result.OK("编辑成功!"); + return Result.OK("添加成功!"); } else { return Result.error("没有权限!"); } @@ -143,14 +159,18 @@ public class ExtRepoDataController extends JeroController delete(@RequestParam(name = "id", required = true) String id) { + public Result delete(@RequestParam("id") String id) { ExtRepoData erd = extRepoDataService.queryById(id); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (erd.getCreateBy().equals(sysUser.getUsername())) { - extRepoDataService.deleteById(id); - return Result.OK("删除成功!"); + if (null != erd) { + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (extRepoFolderService.isManager() || sysUser.getUsername().equals(erd.getCreateBy())) { + extRepoDataService.deleteById(id); + return Result.OK("删除成功!"); + } else { + return Result.error("没有权限!"); + } } else { - return Result.error("没有权限!"); + return Result.error("没有此数据!"); } } @@ -163,13 +183,13 @@ public class ExtRepoDataController extends JeroController deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + public Result deleteBatch(@RequestParam("ids") String ids) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); List idsList = Arrays.asList(ids.split(",")); for (String id : idsList) { ExtRepoData erd = extRepoDataService.queryById(id); - if (null != erd && !erd.getCreateBy().equals(sysUser.getUsername())) { - return Result.OK("没有权限!"); + if (null != erd && !extRepoFolderService.isManager() && !sysUser.getUsername().equals(erd.getCreateBy())) { + return Result.error("没有权限!"); } } this.extRepoDataService.deleteByIds(idsList); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/enums/ExtRepoMamagerRoleIdEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/enums/ExtRepoMamagerRoleIdEnum.java new file mode 100644 index 000000000..542d4ef58 --- /dev/null +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/enums/ExtRepoMamagerRoleIdEnum.java @@ -0,0 +1,73 @@ +package com.jero.modules.extRepo.enums; + +import java.util.ArrayList; +import java.util.List; + +public enum ExtRepoMamagerRoleIdEnum { + MANAGER_ID("系统管理员","Administrator","admin","f6817f48af4fb3af11b9e8bf182f618b",1), + ERMANAGER_ID("对外报告管理员","ExternalReportsManager","ExternalReportsManager","1552536424587862017",2); + + + String name; + String enName; + String value; + String id; + Integer order; + + ExtRepoMamagerRoleIdEnum(String name, String enName, String value, String id, Integer order) { + this.name = name; + this.enName = enName; + this.value = value; + this.id = id; + this.order = order; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEnName() { + return enName; + } + + public void setEnName(String enName) { + this.enName = enName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public static List getIdList() { + List idList = new ArrayList<>(); + ExtRepoMamagerRoleIdEnum[] values = values(); + for (ExtRepoMamagerRoleIdEnum ermriEnum : values) { + idList.add(ermriEnum.getId()); + } + return idList; + } +} diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java index bc9bfb91a..2a88e9294 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoDataService.java @@ -19,7 +19,7 @@ public interface IExtRepoDataService extends IService { * @param extRepoData * @return */ - void add(ExtRepoData extRepoData); + int add(ExtRepoData extRepoData); /** * 更新 diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java index d9be6458b..a207ba037 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/IExtRepoFolderService.java @@ -68,4 +68,19 @@ public interface IExtRepoFolderService extends IService { * @return */ boolean haveManageAuth(String folderId); + + /** + * 是否有查看权限 + * + * @param folderId + * @return + */ + boolean haveViewAuth(String folderId); + + /** + * 是否管理员 + * + * @return + */ + boolean isManager(); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java index 4f07b2182..58bbf73cb 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoDataServiceImpl.java @@ -1,11 +1,14 @@ package com.jero.modules.extRepo.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.jero.common.system.vo.LoginUser; import com.jero.modules.extRepo.entity.ExtRepoData; import com.jero.modules.extRepo.mapper.ExtRepoDataMapper; import com.jero.modules.extRepo.service.IExtRepoDataService; -import org.apache.shiro.SecurityUtils; +import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; @@ -14,80 +17,111 @@ import java.util.List; /** * @Description: 对外报告数据表 * @Author: jero-boot - * @Date: 2022-07-25 + * @Date: 2022-07-25 * @Version: V1.0 */ @Service public class ExtRepoDataServiceImpl extends ServiceImpl implements IExtRepoDataService { - /** - * 保存 - * - * @param extRepoData - * @return - */ - @Override - public void add(ExtRepoData extRepoData) { + @Autowired + private IOSSFileService ossFileService; + + /** + * 保存 + * + * @param extRepoData + * @return + */ + @Override + public int add(ExtRepoData extRepoData) { + //返回成功数量 + int res = 0; Date now = new Date(); - extRepoData.setCreateTime(now); - extRepoData.setUpdateTime(now); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - extRepoData.setUpdateBy(sysUser.getUsername()); - save(extRepoData); + // 根据fileKey查找文件 + String fileIds = extRepoData.getFileKey(); + if (StringUtils.isNotBlank(fileIds)) { + String[] fileIdsArr = fileIds.split(","); + for (String fid : fileIdsArr) { + OSSFile ossFile = ossFileService.getById(fid); + if (ObjectUtil.isNotEmpty(ossFile)) { + String fileName = ossFile.getFileName(); + extRepoData.setFileName(fileName); + ExtRepoData erd = extRepoDataCopy(extRepoData, fid, now); + save(erd); + res++; + } + } + } + return res; } - /** - * 更新 - * - * @param extRepoData - * @return - */ - @Override + private ExtRepoData extRepoDataCopy(ExtRepoData extRepoData, String key, Date now) { + ExtRepoData res = new ExtRepoData(); + res.setId(extRepoData.getId()); + res.setCreateBy(extRepoData.getCreateBy()); + res.setCreateTime(now); + res.setUpdateBy(extRepoData.getUpdateBy()); + res.setUpdateTime(now); + res.setSysOrgCode(extRepoData.getSysOrgCode()); + res.setFileKey(key); + res.setFileName(extRepoData.getFileName()); + res.setFileDescription(extRepoData.getFileDescription()); + res.setSupFolder(extRepoData.getSupFolder()); + return res; + } + + /** + * 更新 + * + * @param extRepoData + * @return + */ + @Override public void editById(ExtRepoData extRepoData) { - Date now = new Date(); + Date now = new Date(); extRepoData.setUpdateTime(now); - saveOrUpdate(extRepoData); + saveOrUpdate(extRepoData); } - /** - * 通过id删除 - * - * @param id - * @return - */ - @Override + /** + * 通过id删除 + * + * @param id + * @return + */ + @Override public void deleteById(String id) { removeById(id); } - /** - * 批量删除 - * - * @param ids - * @return - */ - @Override + /** + * 批量删除 + * + * @param ids + * @return + */ + @Override public void deleteByIds(List ids) { removeByIds(ids); } - /** - * 通过id查询 - * - * @param id - * @return - */ - @Override + /** + * 通过id查询 + * + * @param id + * @return + */ + @Override public ExtRepoData queryById(String id) { return getById(id); } /** - * 列表查询 - * - * @return - */ - @Override + * 列表查询 + * + * @return + */ + @Override public List queryList() { return list(); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java index 6a840e8cf..ec923e61a 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/extRepo/service/impl/ExtRepoFolderServiceImpl.java @@ -1,5 +1,6 @@ package com.jero.modules.extRepo.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.exception.JeroBootException; @@ -7,13 +8,18 @@ import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.vo.LoginUser; import com.jero.modules.extRepo.entity.ERFTreeData; import com.jero.modules.extRepo.entity.ExtRepoFolder; +import com.jero.modules.extRepo.enums.ExtRepoMamagerRoleIdEnum; import com.jero.modules.extRepo.mapper.ExtRepoFolderMapper; import com.jero.modules.extRepo.service.IExtRepoFolderService; +import com.jero.modules.system.entity.SysUserRole; +import com.jero.modules.system.service.ISysUserRoleService; import org.apache.commons.lang.StringUtils; import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; /** * @Description: 对外报告文件夹表 @@ -23,7 +29,8 @@ import java.util.*; */ @Service public class ExtRepoFolderServiceImpl extends ServiceImpl implements IExtRepoFolderService { - + @Autowired + private ISysUserRoleService sysUserRoleService; /** * 一级文件夹的supFolder统一存root */ @@ -42,11 +49,18 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl resList = getListBySupFolder(id); - if (resList.isEmpty()) { - removeById(id); + if (haveManageAuth(id)) { + List resList = getListBySupFolder(id); + if (resList.isEmpty()) { + removeById(id); + } else { + throw new JeroBootException("请先删除子文件夹!"); + } + } else { + throw new JeroBootException("没有权限!"); } } catch (Exception ex) { log.error("删除对外报告文件夹失败:" + ex.getMessage()); @@ -262,7 +289,7 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl getStringList(String listStr) { List res = new ArrayList(); if (null != listStr) { @@ -311,4 +321,61 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl userRoles = sysUserRoleService.list(new QueryWrapper().lambda().eq(SysUserRole::getUserId, loginUser.getId())); // 查询用户所有角色 + List userRoleIds = new ArrayList<>(); // 用户管理员/对外报告管理员 + if (CollectionUtil.isNotEmpty(userRoles)) { + List roleIdList = ExtRepoMamagerRoleIdEnum.getIdList(); + List userRoleIdList = userRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); + userRoleIds = roleIdList.stream().filter(e -> userRoleIdList.contains(e)).collect(Collectors.toList()); + return !CollectionUtil.isEmpty(userRoleIds); + } + return false; + } + + /** + * 是否有管理权限 + * + * @param folderId + * @return + */ + @Override + public boolean haveManageAuth(String folderId) { + boolean res = false; + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + res = isManager(); + ExtRepoFolder erf = queryById(folderId); + if (null != erf) { + res = res || getStringList(erf.getAuthManageIds()).contains(sysUser.getId()); + } + return res; + } + + /** + * 是否有查看权限 + * + * @param folderId + * @return + */ + public boolean haveViewAuth(String folderId) { + boolean res = false; + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + res = isManager(); + ExtRepoFolder erf = queryById(folderId); + if (null != erf) { + res = res || getStringList(erf.getAuthManageIds()).contains(sysUser.getId()) + || getStringList(erf.getAuthViewIds()).contains(sysUser.getId()); + } + return false; + + } + }