fix(资料中心): 81764
This commit is contained in:
+8
@@ -10,6 +10,7 @@ import com.jero.modules.laws.common.constant.FieldCommon;
|
|||||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||||
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
|
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
|
||||||
import com.jero.modules.laws.dataCenter.service.ILawsDataCenterFileService;
|
import com.jero.modules.laws.dataCenter.service.ILawsDataCenterFileService;
|
||||||
|
import com.jero.modules.laws.dataCenter.service.ILawsDataCenterFolderService;
|
||||||
import com.jero.modules.sys.controller.SysCommonController;
|
import com.jero.modules.sys.controller.SysCommonController;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -42,6 +43,8 @@ public class LawsDataCenterFileController extends JeroController<LawsDataCenterF
|
|||||||
private ILawsDataCenterFileService lawsDataCenterFileService;
|
private ILawsDataCenterFileService lawsDataCenterFileService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysCommonController sysCommonController;
|
private SysCommonController sysCommonController;
|
||||||
|
@Autowired
|
||||||
|
private ILawsDataCenterFolderService lawsDataCenterFolderService;
|
||||||
|
|
||||||
private final static String permissionFlag = "profileCenter:table"; // 权限标识
|
private final static String permissionFlag = "profileCenter:table"; // 权限标识
|
||||||
|
|
||||||
@@ -75,6 +78,7 @@ public class LawsDataCenterFileController extends JeroController<LawsDataCenterF
|
|||||||
@PostMapping(value = "/add")
|
@PostMapping(value = "/add")
|
||||||
@RequiresPermissions(permissionFlag)
|
@RequiresPermissions(permissionFlag)
|
||||||
public Result<T> add(@Validated @RequestBody LawsDataCenterFile lawsDataCenterFile) {
|
public Result<T> add(@Validated @RequestBody LawsDataCenterFile lawsDataCenterFile) {
|
||||||
|
lawsDataCenterFolderService.isHorizontalOverstep(lawsDataCenterFile.getFolderId());
|
||||||
lawsDataCenterFileService.add(lawsDataCenterFile, true);
|
lawsDataCenterFileService.add(lawsDataCenterFile, true);
|
||||||
return Result.OK(ResultCommon.OK);
|
return Result.OK(ResultCommon.OK);
|
||||||
}
|
}
|
||||||
@@ -90,6 +94,7 @@ public class LawsDataCenterFileController extends JeroController<LawsDataCenterF
|
|||||||
@PostMapping(value = "/edit")
|
@PostMapping(value = "/edit")
|
||||||
@RequiresPermissions(permissionFlag)
|
@RequiresPermissions(permissionFlag)
|
||||||
public Result<T> edit(@Validated @RequestBody LawsDataCenterFile lawsDataCenterFile) {
|
public Result<T> edit(@Validated @RequestBody LawsDataCenterFile lawsDataCenterFile) {
|
||||||
|
lawsDataCenterFileService.isHorizontalOverstep(lawsDataCenterFile.getId());
|
||||||
lawsDataCenterFileService.editById(lawsDataCenterFile);
|
lawsDataCenterFileService.editById(lawsDataCenterFile);
|
||||||
return Result.OK(ResultCommon.OK);
|
return Result.OK(ResultCommon.OK);
|
||||||
}
|
}
|
||||||
@@ -108,6 +113,7 @@ public class LawsDataCenterFileController extends JeroController<LawsDataCenterF
|
|||||||
if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) {
|
if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) {
|
||||||
return Result.error("请选择数据!");
|
return Result.error("请选择数据!");
|
||||||
}
|
}
|
||||||
|
lawsDataCenterFileService.isHorizontalOverstep(String.valueOf(map.containsKey("id")));
|
||||||
lawsDataCenterFileService.deleteById(map.get("id"));
|
lawsDataCenterFileService.deleteById(map.get("id"));
|
||||||
return Result.OK(ResultCommon.OK);
|
return Result.OK(ResultCommon.OK);
|
||||||
}
|
}
|
||||||
@@ -126,6 +132,7 @@ public class LawsDataCenterFileController extends JeroController<LawsDataCenterF
|
|||||||
if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) {
|
if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) {
|
||||||
return Result.error("请选择数据!");
|
return Result.error("请选择数据!");
|
||||||
}
|
}
|
||||||
|
lawsDataCenterFileService.isHorizontalOverstep(String.valueOf(map.containsKey("ids")));
|
||||||
this.lawsDataCenterFileService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
|
this.lawsDataCenterFileService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
|
||||||
return Result.OK(ResultCommon.OK);
|
return Result.OK(ResultCommon.OK);
|
||||||
}
|
}
|
||||||
@@ -157,6 +164,7 @@ public class LawsDataCenterFileController extends JeroController<LawsDataCenterF
|
|||||||
if (file == null) {
|
if (file == null) {
|
||||||
throw new JeroBootException(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
|
throw new JeroBootException(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
|
||||||
}
|
}
|
||||||
|
lawsDataCenterFileService.isHorizontalOverstep(id);
|
||||||
// 不是管理员,不是自己上传的文件,并且推送范围不包含自己
|
// 不是管理员,不是自己上传的文件,并且推送范围不包含自己
|
||||||
if (!CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN)
|
if (!CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN)
|
||||||
&& !CurrentUserUtil.getId().equals(file.getOwnerId())
|
&& !CurrentUserUtil.getId().equals(file.getOwnerId())
|
||||||
|
|||||||
+8
@@ -55,6 +55,8 @@ public class LawsDataCenterFolderController extends JeroController<LawsDataCente
|
|||||||
@PostMapping(value = "/addBrother")
|
@PostMapping(value = "/addBrother")
|
||||||
@RequiresPermissions("profileCenter:addPeer")
|
@RequiresPermissions("profileCenter:addPeer")
|
||||||
public Result<T> addBrother(@Validated @RequestBody LawsDataCenterFolder lawsDataCenterFolder) {
|
public Result<T> addBrother(@Validated @RequestBody LawsDataCenterFolder lawsDataCenterFolder) {
|
||||||
|
// 水平越权
|
||||||
|
lawsDataCenterFolderService.isHorizontalOverstep(lawsDataCenterFolder.getParentId());
|
||||||
lawsDataCenterFolderService.add(lawsDataCenterFolder);
|
lawsDataCenterFolderService.add(lawsDataCenterFolder);
|
||||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||||
}
|
}
|
||||||
@@ -67,6 +69,8 @@ public class LawsDataCenterFolderController extends JeroController<LawsDataCente
|
|||||||
if (StringUtils.isBlank(lawsDataCenterFolder.getParentId())) {
|
if (StringUtils.isBlank(lawsDataCenterFolder.getParentId())) {
|
||||||
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "parentId");
|
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "parentId");
|
||||||
}
|
}
|
||||||
|
// 水平越权
|
||||||
|
lawsDataCenterFolderService.isHorizontalOverstep(lawsDataCenterFolder.getParentId());
|
||||||
lawsDataCenterFolderService.add(lawsDataCenterFolder);
|
lawsDataCenterFolderService.add(lawsDataCenterFolder);
|
||||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||||
}
|
}
|
||||||
@@ -82,6 +86,8 @@ public class LawsDataCenterFolderController extends JeroController<LawsDataCente
|
|||||||
@PostMapping(value = "/edit")
|
@PostMapping(value = "/edit")
|
||||||
@RequiresPermissions("profileCenter:editFolder")
|
@RequiresPermissions("profileCenter:editFolder")
|
||||||
public Result<T> edit(@Validated @RequestBody LawsDataCenterFolder lawsDataCenterFolder) {
|
public Result<T> edit(@Validated @RequestBody LawsDataCenterFolder lawsDataCenterFolder) {
|
||||||
|
// 水平越权
|
||||||
|
lawsDataCenterFolderService.isHorizontalOverstep(lawsDataCenterFolder.getId());
|
||||||
lawsDataCenterFolderService.editById(lawsDataCenterFolder);
|
lawsDataCenterFolderService.editById(lawsDataCenterFolder);
|
||||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||||
}
|
}
|
||||||
@@ -100,6 +106,8 @@ public class LawsDataCenterFolderController extends JeroController<LawsDataCente
|
|||||||
if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) {
|
if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) {
|
||||||
return Result.error("请选择数据!");
|
return Result.error("请选择数据!");
|
||||||
}
|
}
|
||||||
|
// 水平越权
|
||||||
|
lawsDataCenterFolderService.isHorizontalOverstep(map.get("id"));
|
||||||
lawsDataCenterFolderService.deleteById(map.get("id"));
|
lawsDataCenterFolderService.deleteById(map.get("id"));
|
||||||
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
|
||||||
}
|
}
|
||||||
|
|||||||
+9
@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
|
import com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 资料中心-文件数据
|
* @Description: 资料中心-文件数据
|
||||||
* @Author: jero-boot
|
* @Author: jero-boot
|
||||||
@@ -22,4 +24,11 @@ public interface LawsDataCenterFileMapper extends BaseMapper<LawsDataCenterFile>
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Page<LawsDataCenterFile> queryByPage(Page<LawsDataCenterFile> page, @Param(Constants.WRAPPER) QueryWrapper<LawsDataCenterFile> queryWrapper);
|
Page<LawsDataCenterFile> queryByPage(Page<LawsDataCenterFile> page, @Param(Constants.WRAPPER) QueryWrapper<LawsDataCenterFile> queryWrapper);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param queryWrapper
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<LawsDataCenterFile> queryByList(@Param(Constants.WRAPPER) QueryWrapper<LawsDataCenterFile> queryWrapper);
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-1
@@ -18,6 +18,14 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="queryByPage" resultType="com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile">
|
<select id="queryByPage" resultType="com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile">
|
||||||
|
<include refid="select_laws_data_center_file"/>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="queryByList" resultType="com.jero.modules.laws.dataCenter.entity.LawsDataCenterFile">
|
||||||
|
<include refid="select_laws_data_center_file"/>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<sql id="select_laws_data_center_file">
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM (SELECT id,
|
FROM (SELECT id,
|
||||||
create_by,
|
create_by,
|
||||||
@@ -37,5 +45,5 @@
|
|||||||
(SELECT auth_view_ids FROM laws_data_center_folder d WHERE d.id = folder_id) auth_view_ids
|
(SELECT auth_view_ids FROM laws_data_center_folder d WHERE d.id = folder_id) auth_view_ids
|
||||||
FROM laws_data_center_file) t
|
FROM laws_data_center_file) t
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</sql>
|
||||||
</mapper>
|
</mapper>
|
||||||
+6
@@ -63,4 +63,10 @@ public interface ILawsDataCenterFileService extends IService<LawsDataCenterFile>
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
LawsDataCenterFile queryById(String id);
|
LawsDataCenterFile queryById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否水平越权
|
||||||
|
* @param ids
|
||||||
|
*/
|
||||||
|
void isHorizontalOverstep(String ids);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
@@ -42,4 +42,10 @@ public interface ILawsDataCenterFolderService extends IService<LawsDataCenterFol
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
void deleteById(String id);
|
void deleteById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否水平越权
|
||||||
|
* @param ids
|
||||||
|
*/
|
||||||
|
void isHorizontalOverstep(String ids);
|
||||||
}
|
}
|
||||||
|
|||||||
+31
@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|||||||
import com.jero.common.api.dto.message.SendMessageDTO;
|
import com.jero.common.api.dto.message.SendMessageDTO;
|
||||||
import com.jero.common.api.vo.ResultCommon;
|
import com.jero.common.api.vo.ResultCommon;
|
||||||
import com.jero.common.api.vo.SendMessageAPI;
|
import com.jero.common.api.vo.SendMessageAPI;
|
||||||
|
import com.jero.common.constant.enums.LanguageEnum;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
import com.jero.common.util.MessageUtils;
|
||||||
import com.jero.modules.laws.common.constant.FieldCommon;
|
import com.jero.modules.laws.common.constant.FieldCommon;
|
||||||
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
|
import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon;
|
||||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||||
@@ -264,4 +266,33 @@ public class LawsDataCenterFileServiceImpl extends ServiceImpl<LawsDataCenterFil
|
|||||||
public LawsDataCenterFile queryById(String id) {
|
public LawsDataCenterFile queryById(String id) {
|
||||||
return getById(id);
|
return getById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void isHorizontalOverstep(String ids) {
|
||||||
|
QueryWrapper<LawsDataCenterFile> queryWrapper = new QueryWrapper<>();
|
||||||
|
|
||||||
|
List<String> adminRoleCodeList = Arrays.asList(adminRoleCode.split(","));
|
||||||
|
Collection<String> intersection = CollectionUtils.intersection(Arrays.asList(CurrentUserUtil.getRoles().split(",")), adminRoleCodeList);
|
||||||
|
if (!CurrentUserUtil.getRoles().contains(FieldCommon.ROLE_ADMIN) && CollectionUtils.isEmpty(intersection)) {
|
||||||
|
queryWrapper.and(qw -> qw
|
||||||
|
.eq("owner_id", CurrentUserUtil.getId())
|
||||||
|
.or().like("auth_view_ids", CurrentUserUtil.getId())
|
||||||
|
.or().like("auth_manage_ids", CurrentUserUtil.getId())
|
||||||
|
.or().eq("push_range_ids", CurrentUserUtil.getId())
|
||||||
|
);
|
||||||
|
}else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
queryWrapper.orderByDesc("create_time");
|
||||||
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
|
queryWrapper.in("id", idList);
|
||||||
|
List<LawsDataCenterFile> list = lawsDataCenterFileMapper.queryByList(queryWrapper);
|
||||||
|
if (list.isEmpty() || list.size() != idList.size()) {
|
||||||
|
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
|
||||||
|
throw new JeroBootException("无权限!");
|
||||||
|
}else{
|
||||||
|
throw new JeroBootException("No access!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+35
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.jero.common.api.vo.ResultCommon;
|
import com.jero.common.api.vo.ResultCommon;
|
||||||
|
import com.jero.common.constant.enums.LanguageEnum;
|
||||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.vo.LoginUser;
|
import com.jero.common.system.vo.LoginUser;
|
||||||
import com.jero.common.util.BeanCopyUtils;
|
import com.jero.common.util.BeanCopyUtils;
|
||||||
|
import com.jero.common.util.MessageUtils;
|
||||||
import com.jero.common.util.StreamUtils;
|
import com.jero.common.util.StreamUtils;
|
||||||
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
import com.jero.modules.laws.common.util.CurrentUserUtil;
|
||||||
import com.jero.modules.laws.common.util.TreeNodeComparator;
|
import com.jero.modules.laws.common.util.TreeNodeComparator;
|
||||||
@@ -228,4 +230,37 @@ public class LawsDataCenterFolderServiceImpl extends ServiceImpl<LawsDataCenterF
|
|||||||
* lawsDataCenterFileService.update(updateWrapper);
|
* lawsDataCenterFileService.update(updateWrapper);
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void isHorizontalOverstep(String ids) {
|
||||||
|
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
String roleIds = loginUser.getRoleIds();
|
||||||
|
// 全部数据
|
||||||
|
List<LawsDataCenterFolder> lawsDataCenterFolderList = list(new LambdaQueryWrapper<LawsDataCenterFolder>()
|
||||||
|
.orderByAsc(LawsDataCenterFolder::getSort).orderByAsc(LawsDataCenterFolder::getCreateTime));
|
||||||
|
|
||||||
|
// 非管理员只能看到自己创建的 or 拥有管理权限 or 拥有查看权限的文件夹 or 默认根目录
|
||||||
|
List<String> adminRoleCodeList = Arrays.asList(adminRoleCode.split(","));
|
||||||
|
Collection<String> intersection = CollectionUtils.intersection(Arrays.asList(roleIds.split(",")), adminRoleCodeList);
|
||||||
|
if (!roleIds.contains("admin") && CollectionUtils.isEmpty(intersection)){
|
||||||
|
lawsDataCenterFolderList = lawsDataCenterFolderList.stream()
|
||||||
|
.filter(v -> (StringUtils.isNotBlank(v.getAuthManageIds()) && v.getAuthManageIds().contains(loginUser.getId()))
|
||||||
|
|| (StringUtils.isNotBlank(v.getAuthViewIds()) && v.getAuthViewIds().contains(loginUser.getId()))
|
||||||
|
|| v.getOwnerId().equals(loginUser.getId())
|
||||||
|
|| YesOrNoEnum.YES.getValue().equals(v.getDefaultFolder()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
|
long count = lawsDataCenterFolderList.stream().filter(v -> idList.contains(v.getId())).count();
|
||||||
|
if (count <= 0 || count != idList.size()) {
|
||||||
|
if(LanguageEnum.CN.equals(MessageUtils.getLanguage())) {
|
||||||
|
throw new JeroBootException("无权限!");
|
||||||
|
}else{
|
||||||
|
throw new JeroBootException("No access!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user