feat(domain): 添加数据权限控制和菜单路径参数支持

master
zhaokai 2026-02-25 10:19:05 +08:00
parent 94212f98d2
commit c2f56b82b2
12 changed files with 56 additions and 12 deletions

View File

@ -16,6 +16,7 @@ import com.zcloud.domain.dto.clientobject.DomainDepartmentListCO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -43,6 +44,7 @@ public class DomainDepartmentController {
@ApiOperation("分页") @ApiOperation("分页")
@PostMapping("/list") @PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('lybmgl')")
public PageResponse<DomainDepartmentListCO> page(@RequestBody DomainDepartmentPageQry qry) { public PageResponse<DomainDepartmentListCO> page(@RequestBody DomainDepartmentPageQry qry) {
return domainDepartmentService.listPage(qry); return domainDepartmentService.listPage(qry);
} }

View File

@ -17,6 +17,7 @@ import com.zcloud.domain.dto.clientobject.DomainGroupInfoCO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -49,6 +50,7 @@ public class DomainGroupController {
@ApiOperation("领域组分页") @ApiOperation("领域组分页")
@PostMapping("/list") @PostMapping("/list")
@PreAuthorize("@pms.hasAnyPermission('lyzgl')")
public PageResponse<DomainGroupCO> page(@RequestBody DomainGroupPageQry qry) { public PageResponse<DomainGroupCO> page(@RequestBody DomainGroupPageQry qry) {
return domainGroupService.listPage(qry); return domainGroupService.listPage(qry);
} }

View File

@ -16,6 +16,7 @@ import com.zcloud.domain.dto.clientobject.ProjectTaskDetailsCO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -42,12 +43,14 @@ public class ProjectTaskController {
@ApiOperation("课题任务分页") @ApiOperation("课题任务分页")
@PostMapping("/projectpage") @PostMapping("/projectpage")
@PreAuthorize("@pms.hasAnyPermission('gfd-ktrw','qyd-ktrw')")
public PageResponse<ProjectTaskCO> listPage(@RequestBody ProjectTaskPageQry qry) { public PageResponse<ProjectTaskCO> listPage(@RequestBody ProjectTaskPageQry qry) {
return projectTaskService.listPage(qry); return projectTaskService.listPage(qry);
} }
@ApiOperation("课题评分分页") @ApiOperation("课题评分分页")
@PostMapping("/projectScorepage") @PostMapping("/projectScorepage")
@PreAuthorize("@pms.hasAnyPermission('gfd-ktpf','qyd-ktpf')")
public PageResponse<ProjectTaskCO> projectScorepage(@RequestBody ProjectTaskPageQry qry) { public PageResponse<ProjectTaskCO> projectScorepage(@RequestBody ProjectTaskPageQry qry) {
return projectTaskService.listPage(qry); return projectTaskService.listPage(qry);
} }

View File

@ -59,12 +59,13 @@ public class DomainGroupUpdateExe {
if(CollUtil.isNotEmpty(oldUserIdList)){ if(CollUtil.isNotEmpty(oldUserIdList)){
//获取删除的用户id,newUserIdList中不在oldUserIdList中的用户id //获取删除的用户id,newUserIdList中不在oldUserIdList中的用户id
List<Long> deleteUserIdList = oldUserIdList.stream().filter(userId -> !newUserIdList.contains(userId)).collect(Collectors.toList()); List<Long> deleteUserIdList = oldUserIdList.stream().filter(userId -> !newUserIdList.contains(userId)).collect(Collectors.toList());
// if(CollUtil.isNotEmpty(deleteUserIdList)){
List<ProjectTaskGroupUserDO> projectTaskGroupUserDOList =projectTaskGroupUserRepository.getListByUserIdList(deleteUserIdList); List<ProjectTaskGroupUserDO> projectTaskGroupUserDOList =projectTaskGroupUserRepository.getListByUserIdList(deleteUserIdList);
if(CollUtil.isNotEmpty(projectTaskGroupUserDOList)){ if(CollUtil.isNotEmpty(projectTaskGroupUserDOList)){
//获取按照userId去重然后获取所有用户名称 //获取按照userId去重然后获取所有用户名称
List<String> userNameList = projectTaskGroupUserDOList.stream().map(ProjectTaskGroupUserDO::getUserName).distinct().collect(Collectors.toList()); List<String> userNameList = projectTaskGroupUserDOList.stream().map(ProjectTaskGroupUserDO::getUserName).distinct().collect(Collectors.toList());
throw new BizException(userNameList+"下有未完成课题任务,不能删除"); throw new BizException(userNameList+"下有未完成课题任务,不能删除");
}
} }
} }

View File

@ -24,5 +24,8 @@ public class DomainDepartmentPageQry extends PageQuery {
* - `ne`: SQL!= * - `ne`: SQL!=
*/ */
private String departmentName; private String departmentName;
private String menuPath;
} }

View File

@ -28,5 +28,8 @@ public class DomainGroupPageQry extends PageQuery {
private String domainType; private String domainType;
@ApiModelProperty(value = "领域管理组名称") @ApiModelProperty(value = "领域管理组名称")
private String domainGroupName; private String domainGroupName;
private String menuPath;
} }

View File

@ -2,6 +2,8 @@ package com.zcloud.domain.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO; import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -15,11 +17,14 @@ import java.util.Map;
* @Date 2026-01-27 11:28:51 * @Date 2026-01-27 11:28:51
*/ */
@Mapper @Mapper
@DataScopes({
@DataScope(method = "listPage", menuPerms = ""),
})
public interface DomainDepartmentMapper extends BaseMapper<DomainDepartmentDO> { public interface DomainDepartmentMapper extends BaseMapper<DomainDepartmentDO> {
DomainDepartmentDO getInfoById(Long id); DomainDepartmentDO getInfoById(Long id);
IPage<DomainDepartmentDO> listPage(IPage<DomainDepartmentDO> iPage, Map<String, Object> params); IPage<DomainDepartmentDO> listPage(IPage<DomainDepartmentDO> iPage, Map<String, Object> params, String menuPerms);
List<DomainDepartmentDO> listAll(); List<DomainDepartmentDO> listAll();
} }

View File

@ -2,6 +2,8 @@ package com.zcloud.domain.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO; import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -15,9 +17,12 @@ import java.util.Map;
* @Date 2026-01-27 11:29:27 * @Date 2026-01-27 11:29:27
*/ */
@Mapper @Mapper
@DataScopes({
@DataScope(method = "listPage", menuPerms = ""),
})
public interface DomainGroupMapper extends BaseMapper<DomainGroupDO> { public interface DomainGroupMapper extends BaseMapper<DomainGroupDO> {
IPage<DomainGroupDO> listPage(IPage<DomainGroupDO> iPage, Map<String, Object> params); IPage<DomainGroupDO> listPage(IPage<DomainGroupDO> iPage, Map<String, Object> params, String menuPerms);
DomainGroupDO getInfoById(Long id); DomainGroupDO getInfoById(Long id);

View File

@ -2,6 +2,8 @@ package com.zcloud.domain.persistence.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.domain.persistence.dataobject.ProjectTaskDO; import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -16,9 +18,12 @@ import java.util.Map;
* @Date 2026-01-29 11:28:41 * @Date 2026-01-29 11:28:41
*/ */
@Mapper @Mapper
@DataScopes({
@DataScope(method = "listPage", menuPerms = ""),
})
public interface ProjectTaskMapper extends BaseMapper<ProjectTaskDO> { public interface ProjectTaskMapper extends BaseMapper<ProjectTaskDO> {
IPage<ProjectTaskDO> listPage(IPage<ProjectTaskDO> iPage, Map<String, Object> params); IPage<ProjectTaskDO> listPage(IPage<ProjectTaskDO> iPage, Map<String, Object> params, String menuPerms);
ProjectTaskDO getInfoById(Long id); ProjectTaskDO getInfoById(Long id);

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.domain.domain.enums.MenuEnum;
import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO; import com.zcloud.domain.persistence.dataobject.DomainDepartmentDO;
import com.zcloud.domain.persistence.mapper.DomainDepartmentMapper; import com.zcloud.domain.persistence.mapper.DomainDepartmentMapper;
import com.zcloud.domain.persistence.repository.DomainDepartmentRepository; import com.zcloud.domain.persistence.repository.DomainDepartmentRepository;
@ -32,7 +33,11 @@ public class DomainDepartmentRepositoryImpl extends BaseRepositoryImpl<DomainDep
@Override @Override
public PageResponse<DomainDepartmentDO> listPage(Map<String, Object> params) { public PageResponse<DomainDepartmentDO> listPage(Map<String, Object> params) {
IPage<DomainDepartmentDO> iPage = new Query<DomainDepartmentDO>().getPage(params); IPage<DomainDepartmentDO> iPage = new Query<DomainDepartmentDO>().getPage(params);
IPage<DomainDepartmentDO> result = domainDepartmentMapper.listPage(iPage, params); String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<DomainDepartmentDO> result = domainDepartmentMapper.listPage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.domain.domain.enums.MenuEnum;
import com.zcloud.domain.persistence.dataobject.DomainGroupDO; import com.zcloud.domain.persistence.dataobject.DomainGroupDO;
import com.zcloud.domain.persistence.mapper.DomainGroupMapper; import com.zcloud.domain.persistence.mapper.DomainGroupMapper;
import com.zcloud.domain.persistence.repository.DomainGroupRepository; import com.zcloud.domain.persistence.repository.DomainGroupRepository;
@ -31,7 +32,11 @@ public class DomainGroupRepositoryImpl extends BaseRepositoryImpl<DomainGroupMap
@Override @Override
public PageResponse<DomainGroupDO> listPage(Map<String, Object> params) { public PageResponse<DomainGroupDO> listPage(Map<String, Object> params) {
IPage<DomainGroupDO> iPage = new Query<DomainGroupDO>().getPage(params); IPage<DomainGroupDO> iPage = new Query<DomainGroupDO>().getPage(params);
IPage<DomainGroupDO> result = domainGroupMapper.listPage(iPage, params); String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<DomainGroupDO> result = domainGroupMapper.listPage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.auth.utils.AuthContext;
import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.domain.domain.enums.MenuEnum;
import com.zcloud.domain.domain.enums.ProjectTaskExecuteStatusEnum; import com.zcloud.domain.domain.enums.ProjectTaskExecuteStatusEnum;
import com.zcloud.domain.domain.model.CorpInfoE; import com.zcloud.domain.domain.model.CorpInfoE;
import com.zcloud.domain.persistence.dataobject.ProjectTaskDO; import com.zcloud.domain.persistence.dataobject.ProjectTaskDO;
@ -44,8 +45,12 @@ public class ProjectTaskRepositoryImpl extends BaseRepositoryImpl<ProjectTaskMap
params.put("corpinfoId", AuthContext.getTenantId()); params.put("corpinfoId", AuthContext.getTenantId());
} }
} }
String menuPerms = "";
if (!org.springframework.util.ObjectUtils.isEmpty(params.get("menuPath"))){
menuPerms = MenuEnum.getMenuKeyByPath(params.get("menuPath").toString());
}
IPage<ProjectTaskDO> iPage = new Query<ProjectTaskDO>().getPage(params); IPage<ProjectTaskDO> iPage = new Query<ProjectTaskDO>().getPage(params);
IPage<ProjectTaskDO> result = projectTaskMapper.listPage(iPage, params); IPage<ProjectTaskDO> result = projectTaskMapper.listPage(iPage, params,menuPerms);
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }