refactor(permission): 简化对象权限检查配置
- 移除产品需求查询权限常量定义 - 移除项目需求查询权限常量定义 - 将权限检查注解从具体权限改为通用可访问性检查 - 统一所有查询方法的权限验证方式 - 简化权限检查逻辑,提高代码可维护性 - 减少权限常量定义,降低配置复杂度
This commit is contained in:
@@ -82,7 +82,6 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
|
|
||||||
// 权限常量
|
// 权限常量
|
||||||
private static final String PRODUCT_CREATE_PERMISSION = "project:product:requirement:create";
|
private static final String PRODUCT_CREATE_PERMISSION = "project:product:requirement:create";
|
||||||
private static final String PRODUCT_QUERY_PERMISSION = "project:product:requirement:query";
|
|
||||||
private static final String PRODUCT_UPDATE_PERMISSION = "project:product:requirement:update";
|
private static final String PRODUCT_UPDATE_PERMISSION = "project:product:requirement:update";
|
||||||
private static final String PRODUCT_STATUS_PERMISSION = "project:product:requirement:status";
|
private static final String PRODUCT_STATUS_PERMISSION = "project:product:requirement:status";
|
||||||
private static final String PRODUCT_REVIEW_PERMISSION = "project:product:requirement:review";
|
private static final String PRODUCT_REVIEW_PERMISSION = "project:product:requirement:review";
|
||||||
@@ -243,16 +242,14 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public ProductRequirementRespVO getRequirement(Long id, Long productId) {
|
public ProductRequirementRespVO getRequirement(Long id, Long productId) {
|
||||||
ProductRequirementDO requirement = validateRequirementExists(id);
|
ProductRequirementDO requirement = validateRequirementExists(id);
|
||||||
return buildRequirementRespVO(requirement);
|
return buildRequirementRespVO(requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#pageReqVO.productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#pageReqVO.productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public PageResult<ProductRequirementRespVO> getRequirementPage(ProductRequirementPageReqVO pageReqVO) {
|
public PageResult<ProductRequirementRespVO> getRequirementPage(ProductRequirementPageReqVO pageReqVO) {
|
||||||
// 处理模块ID条件:支持递归查询子模块
|
// 处理模块ID条件:支持递归查询子模块
|
||||||
if (pageReqVO.getModuleId() != null) {
|
if (pageReqVO.getModuleId() != null) {
|
||||||
@@ -275,8 +272,7 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#pageReqVO.productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#pageReqVO.productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public PageResult<ProductRequirementRespVO> getRequirementTree(ProductRequirementPageReqVO pageReqVO) {
|
public PageResult<ProductRequirementRespVO> getRequirementTree(ProductRequirementPageReqVO pageReqVO) {
|
||||||
Long moduleId = pageReqVO.getModuleId();
|
Long moduleId = pageReqVO.getModuleId();
|
||||||
Long productId = pageReqVO.getProductId();
|
Long productId = pageReqVO.getProductId();
|
||||||
@@ -340,8 +336,7 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public ProductRequirementDashboardRespVO getRequirementDashboard(Long productId) {
|
public ProductRequirementDashboardRespVO getRequirementDashboard(Long productId) {
|
||||||
List<ProductRequirementDO> requirements = requirementMapper.selectListByProductId(productId);
|
List<ProductRequirementDO> requirements = requirementMapper.selectListByProductId(productId);
|
||||||
Map<String, ObjectStatusModelDO> statusModelMap = getStatusModelMap();
|
Map<String, ObjectStatusModelDO> statusModelMap = getStatusModelMap();
|
||||||
@@ -1038,8 +1033,7 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public List<ProductRequirementStatusTransitionRespVO> getAllowedTransitions(Long requirementId, Long productId) {
|
public List<ProductRequirementStatusTransitionRespVO> getAllowedTransitions(Long requirementId, Long productId) {
|
||||||
ProductRequirementDO requirement = validateRequirementExists(requirementId);
|
ProductRequirementDO requirement = validateRequirementExists(requirementId);
|
||||||
// 当产品需求已指派并生成项目需求后,产品需求端不再返回动作按钮
|
// 当产品需求已指派并生成项目需求后,产品需求端不再返回动作按钮
|
||||||
@@ -1071,8 +1065,7 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#reqVO.productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#reqVO.productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public List<ProductRequirementAllowedTransitionBatchRespVO> getAllowedTransitionsBatch(ProductRequirementBatchReqVO reqVO) {
|
public List<ProductRequirementAllowedTransitionBatchRespVO> getAllowedTransitionsBatch(ProductRequirementBatchReqVO reqVO) {
|
||||||
List<ProductRequirementDO> requirements = getBatchRequirements(reqVO.getRequirementIds(), reqVO.getProductId());
|
List<ProductRequirementDO> requirements = getBatchRequirements(reqVO.getRequirementIds(), reqVO.getProductId());
|
||||||
Set<Long> dispatchedRequirementIds = getDispatchedProductRequirementIds(requirements);
|
Set<Long> dispatchedRequirementIds = getDispatchedProductRequirementIds(requirements);
|
||||||
@@ -1093,16 +1086,14 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public boolean hasDispatchedProjectRequirement(Long requirementId, Long productId) {
|
public boolean hasDispatchedProjectRequirement(Long requirementId, Long productId) {
|
||||||
ProductRequirementDO requirement = validateRequirementExists(requirementId);
|
ProductRequirementDO requirement = validateRequirementExists(requirementId);
|
||||||
return hasDispatchedProjectRequirement(requirement);
|
return hasDispatchedProjectRequirement(requirement);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#reqVO.productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#reqVO.productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public List<ProductRequirementHasDispatchedBatchRespVO> hasDispatchedProjectRequirementBatch(ProductRequirementBatchReqVO reqVO) {
|
public List<ProductRequirementHasDispatchedBatchRespVO> hasDispatchedProjectRequirementBatch(ProductRequirementBatchReqVO reqVO) {
|
||||||
List<ProductRequirementDO> requirements = getBatchRequirements(reqVO.getRequirementIds(), reqVO.getProductId());
|
List<ProductRequirementDO> requirements = getBatchRequirements(reqVO.getRequirementIds(), reqVO.getProductId());
|
||||||
Set<Long> dispatchedRequirementIds = getDispatchedProductRequirementIds(requirements);
|
Set<Long> dispatchedRequirementIds = getDispatchedProductRequirementIds(requirements);
|
||||||
@@ -1443,8 +1434,7 @@ public class ProductRequirementServiceImpl implements ProductRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId",
|
@CheckObjectPermission(objectType = PRODUCT_OBJECT_TYPE, objectId = "#productId", accessible = true)
|
||||||
permission = PRODUCT_QUERY_PERMISSION)
|
|
||||||
public List<ProductRequirementModuleRespVO> getRequirementModuleTree(Long productId) {
|
public List<ProductRequirementModuleRespVO> getRequirementModuleTree(Long productId) {
|
||||||
List<ProductRequirementModuleDO> modules = moduleMapper.selectListByProductId(productId);
|
List<ProductRequirementModuleDO> modules = moduleMapper.selectListByProductId(productId);
|
||||||
return buildModuleTree(modules, 0L);
|
return buildModuleTree(modules, 0L);
|
||||||
|
|||||||
@@ -94,7 +94,6 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
STATUS_REJECTED, STATUS_CANCELLED);
|
STATUS_REJECTED, STATUS_CANCELLED);
|
||||||
|
|
||||||
private static final String PROJECT_CREATE_PERMISSION = "project:project:requirement:create";
|
private static final String PROJECT_CREATE_PERMISSION = "project:project:requirement:create";
|
||||||
private static final String PROJECT_QUERY_PERMISSION = "project:project:requirement:query";
|
|
||||||
private static final String PROJECT_UPDATE_PERMISSION = "project:project:requirement:update";
|
private static final String PROJECT_UPDATE_PERMISSION = "project:project:requirement:update";
|
||||||
private static final String PROJECT_STATUS_PERMISSION = "project:project:requirement:status";
|
private static final String PROJECT_STATUS_PERMISSION = "project:project:requirement:status";
|
||||||
private static final String PROJECT_REVIEW_PERMISSION = "project:project:requirement:review";
|
private static final String PROJECT_REVIEW_PERMISSION = "project:project:requirement:review";
|
||||||
@@ -245,8 +244,7 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = PROJECT_QUERY_PERMISSION)
|
|
||||||
public ProjectRequirementRespVO getRequirement(Long id, Long projectId) {
|
public ProjectRequirementRespVO getRequirement(Long id, Long projectId) {
|
||||||
ProjectRequirementDO requirement = validateRequirementExists(id);
|
ProjectRequirementDO requirement = validateRequirementExists(id);
|
||||||
validateRequirementBelongsToProject(requirement, projectId);
|
validateRequirementBelongsToProject(requirement, projectId);
|
||||||
@@ -255,8 +253,7 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#pageReqVO.projectId",
|
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#pageReqVO.projectId", accessible = true)
|
||||||
permission = PROJECT_QUERY_PERMISSION)
|
|
||||||
public PageResult<ProjectRequirementRespVO> getRequirementPage(ProjectRequirementPageReqVO pageReqVO) {
|
public PageResult<ProjectRequirementRespVO> getRequirementPage(ProjectRequirementPageReqVO pageReqVO) {
|
||||||
if (pageReqVO.getModuleId() != null) {
|
if (pageReqVO.getModuleId() != null) {
|
||||||
if (isAllRequirementsModule(pageReqVO.getModuleId())) {
|
if (isAllRequirementsModule(pageReqVO.getModuleId())) {
|
||||||
@@ -276,8 +273,7 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#pageReqVO.projectId",
|
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#pageReqVO.projectId", accessible = true)
|
||||||
permission = PROJECT_QUERY_PERMISSION)
|
|
||||||
public PageResult<ProjectRequirementRespVO> getRequirementTree(ProjectRequirementPageReqVO pageReqVO) {
|
public PageResult<ProjectRequirementRespVO> getRequirementTree(ProjectRequirementPageReqVO pageReqVO) {
|
||||||
Long moduleId = pageReqVO.getModuleId();
|
Long moduleId = pageReqVO.getModuleId();
|
||||||
Long projectId = pageReqVO.getProjectId();
|
Long projectId = pageReqVO.getProjectId();
|
||||||
@@ -542,8 +538,7 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = PROJECT_QUERY_PERMISSION)
|
|
||||||
public List<ProjectRequirementStatusTransitionRespVO> getAllowedTransitions(Long requirementId, Long projectId) {
|
public List<ProjectRequirementStatusTransitionRespVO> getAllowedTransitions(Long requirementId, Long projectId) {
|
||||||
ProjectRequirementDO requirement = validateRequirementExists(requirementId);
|
ProjectRequirementDO requirement = validateRequirementExists(requirementId);
|
||||||
validateRequirementBelongsToProject(requirement, projectId);
|
validateRequirementBelongsToProject(requirement, projectId);
|
||||||
@@ -569,8 +564,7 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#reqVO.projectId",
|
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#reqVO.projectId", accessible = true)
|
||||||
permission = PROJECT_QUERY_PERMISSION)
|
|
||||||
public List<ProjectRequirementAllowedTransitionBatchRespVO> getAllowedTransitionsBatch(ProjectRequirementBatchReqVO reqVO) {
|
public List<ProjectRequirementAllowedTransitionBatchRespVO> getAllowedTransitionsBatch(ProjectRequirementBatchReqVO reqVO) {
|
||||||
List<ProjectRequirementDO> requirements = getBatchRequirements(reqVO.getRequirementIds(), reqVO.getProjectId());
|
List<ProjectRequirementDO> requirements = getBatchRequirements(reqVO.getRequirementIds(), reqVO.getProjectId());
|
||||||
Map<String, List<ObjectStatusTransitionDO>> transitionsByStatus = getTransitionsByStatus(requirements);
|
Map<String, List<ObjectStatusTransitionDO>> transitionsByStatus = getTransitionsByStatus(requirements);
|
||||||
@@ -644,8 +638,7 @@ public class ProjectRequirementServiceImpl implements ProjectRequirementService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = PROJECT_OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = PROJECT_QUERY_PERMISSION)
|
|
||||||
public List<ProjectRequirementModuleRespVO> getRequirementModuleTree(Long projectId) {
|
public List<ProjectRequirementModuleRespVO> getRequirementModuleTree(Long projectId) {
|
||||||
List<ProjectRequirementModuleDO> modules = moduleMapper.selectListByProjectId(projectId);
|
List<ProjectRequirementModuleDO> modules = moduleMapper.selectListByProjectId(projectId);
|
||||||
return buildModuleTree(modules, 0L);
|
return buildModuleTree(modules, 0L);
|
||||||
|
|||||||
@@ -45,24 +45,21 @@ public class ProjectStatusBoardServiceImpl implements ProjectStatusBoardService
|
|||||||
private ProjectTaskService projectTaskService;
|
private ProjectTaskService projectTaskService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectExecutionConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectExecutionStatusBoardRespVO getExecutionStatusBoard(Long projectId, ProjectExecutionStatusBoardReqVO reqVO) {
|
public ProjectExecutionStatusBoardRespVO getExecutionStatusBoard(Long projectId, ProjectExecutionStatusBoardReqVO reqVO) {
|
||||||
List<ObjectStatusModelDO> statusModels = objectStatusModelMapper.selectListByObjectTypeEnabled(ProjectExecutionConstants.OBJECT_TYPE);
|
List<ObjectStatusModelDO> statusModels = objectStatusModelMapper.selectListByObjectTypeEnabled(ProjectExecutionConstants.OBJECT_TYPE);
|
||||||
return buildExecutionStatusBoard(projectId, reqVO, statusModels);
|
return buildExecutionStatusBoard(projectId, reqVO, statusModels);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectTaskStatusBoardRespVO getTaskStatusBoard(Long projectId, Long executionId, ProjectTaskStatusBoardReqVO reqVO) {
|
public ProjectTaskStatusBoardRespVO getTaskStatusBoard(Long projectId, Long executionId, ProjectTaskStatusBoardReqVO reqVO) {
|
||||||
List<ObjectStatusModelDO> statusModels = objectStatusModelMapper.selectListByObjectTypeEnabled(ProjectTaskConstants.OBJECT_TYPE);
|
List<ObjectStatusModelDO> statusModels = objectStatusModelMapper.selectListByObjectTypeEnabled(ProjectTaskConstants.OBJECT_TYPE);
|
||||||
return buildTaskStatusBoard(projectId, executionId, reqVO, statusModels);
|
return buildTaskStatusBoard(projectId, executionId, reqVO, statusModels);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectTaskBoardPageRespVO getTaskBoardPage(Long projectId, Long executionId, ProjectTaskBoardPageReqVO reqVO) {
|
public ProjectTaskBoardPageRespVO getTaskBoardPage(Long projectId, Long executionId, ProjectTaskBoardPageReqVO reqVO) {
|
||||||
List<ObjectStatusModelDO> statusModels = objectStatusModelMapper
|
List<ObjectStatusModelDO> statusModels = objectStatusModelMapper
|
||||||
.selectListByObjectTypeEnabled(ProjectTaskConstants.OBJECT_TYPE);
|
.selectListByObjectTypeEnabled(ProjectTaskConstants.OBJECT_TYPE);
|
||||||
|
|||||||
@@ -78,8 +78,7 @@ public class ProjectExecutionAssigneeServiceImpl implements ProjectExecutionAssi
|
|||||||
private AdminUserApi adminUserApi;
|
private AdminUserApi adminUserApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectExecutionConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public List<ExecutionAssigneeRespVO> getExecutionAssigneeList(Long projectId, Long executionId) {
|
public List<ExecutionAssigneeRespVO> getExecutionAssigneeList(Long projectId, Long executionId) {
|
||||||
validateProjectExists(projectId);
|
validateProjectExists(projectId);
|
||||||
validateExecutionExists(projectId, executionId);
|
validateExecutionExists(projectId, executionId);
|
||||||
@@ -152,8 +151,7 @@ public class ProjectExecutionAssigneeServiceImpl implements ProjectExecutionAssi
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectExecutionConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<ExecutionAssigneeLogRespVO> getExecutionAssigneeLogPage(Long projectId, Long executionId,
|
public PageResult<ExecutionAssigneeLogRespVO> getExecutionAssigneeLogPage(Long projectId, Long executionId,
|
||||||
ExecutionAssigneeLogPageReqVO reqVO) {
|
ExecutionAssigneeLogPageReqVO reqVO) {
|
||||||
validateProjectExists(projectId);
|
validateProjectExists(projectId);
|
||||||
|
|||||||
@@ -239,8 +239,7 @@ public class ProjectExecutionServiceImpl implements ProjectExecutionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectExecutionConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<ProjectExecutionDO> getExecutionPage(Long projectId, ProjectExecutionPageReqVO reqVO) {
|
public PageResult<ProjectExecutionDO> getExecutionPage(Long projectId, ProjectExecutionPageReqVO reqVO) {
|
||||||
validateProjectExists(projectId);
|
validateProjectExists(projectId);
|
||||||
// "我参与 / 所有"视角完全由前端发不发 reqVO.involveUserId 决定。
|
// "我参与 / 所有"视角完全由前端发不发 reqVO.involveUserId 决定。
|
||||||
@@ -254,8 +253,7 @@ public class ProjectExecutionServiceImpl implements ProjectExecutionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectExecutionConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectExecutionRespVO getExecutionRespVO(Long projectId, Long executionId) {
|
public ProjectExecutionRespVO getExecutionRespVO(Long projectId, Long executionId) {
|
||||||
ProjectExecutionDO execution = getExecution(projectId, executionId);
|
ProjectExecutionDO execution = getExecution(projectId, executionId);
|
||||||
ProjectExecutionRespVO respVO = BeanUtils.toBean(execution, ProjectExecutionRespVO.class);
|
ProjectExecutionRespVO respVO = BeanUtils.toBean(execution, ProjectExecutionRespVO.class);
|
||||||
@@ -268,8 +266,7 @@ public class ProjectExecutionServiceImpl implements ProjectExecutionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectExecutionConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<ProjectExecutionRespVO> getExecutionRespVOPage(Long projectId, ProjectExecutionPageReqVO reqVO) {
|
public PageResult<ProjectExecutionRespVO> getExecutionRespVOPage(Long projectId, ProjectExecutionPageReqVO reqVO) {
|
||||||
PageResult<ProjectExecutionDO> pageResult = getExecutionPage(projectId, reqVO);
|
PageResult<ProjectExecutionDO> pageResult = getExecutionPage(projectId, reqVO);
|
||||||
PageResult<ProjectExecutionRespVO> voPageResult = BeanUtils.toBean(pageResult, ProjectExecutionRespVO.class);
|
PageResult<ProjectExecutionRespVO> voPageResult = BeanUtils.toBean(pageResult, ProjectExecutionRespVO.class);
|
||||||
|
|||||||
@@ -67,8 +67,7 @@ public class ProjectTaskAggregateServiceImpl implements ProjectTaskAggregateServ
|
|||||||
// ========= page =========
|
// ========= page =========
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<ProjectTaskRespVO> getAggregateTaskPage(Long projectId, ProjectTaskAggregatePageReqVO reqVO) {
|
public PageResult<ProjectTaskRespVO> getAggregateTaskPage(Long projectId, ProjectTaskAggregatePageReqVO reqVO) {
|
||||||
// 空数组语义短路:前端明确"按 0 个执行状态/执行 id 过滤" → 返空集合,不让 MyBatis 退化成"不过滤"
|
// 空数组语义短路:前端明确"按 0 个执行状态/执行 id 过滤" → 返空集合,不让 MyBatis 退化成"不过滤"
|
||||||
if ((reqVO.getExecutionStatusCodes() != null && reqVO.getExecutionStatusCodes().isEmpty())
|
if ((reqVO.getExecutionStatusCodes() != null && reqVO.getExecutionStatusCodes().isEmpty())
|
||||||
@@ -90,8 +89,7 @@ public class ProjectTaskAggregateServiceImpl implements ProjectTaskAggregateServ
|
|||||||
// ========= status-board =========
|
// ========= status-board =========
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectTaskStatusBoardRespVO getAggregateTaskStatusBoard(Long projectId, ProjectTaskAggregateStatusBoardReqVO reqVO) {
|
public ProjectTaskStatusBoardRespVO getAggregateTaskStatusBoard(Long projectId, ProjectTaskAggregateStatusBoardReqVO reqVO) {
|
||||||
// 空数组语义短路:跳过 SQL,但保留状态列骨架(前端看板依赖全列表渲染),count 全部 0
|
// 空数组语义短路:跳过 SQL,但保留状态列骨架(前端看板依赖全列表渲染),count 全部 0
|
||||||
if ((reqVO.getExecutionStatusCodes() != null && reqVO.getExecutionStatusCodes().isEmpty())
|
if ((reqVO.getExecutionStatusCodes() != null && reqVO.getExecutionStatusCodes().isEmpty())
|
||||||
@@ -147,8 +145,7 @@ public class ProjectTaskAggregateServiceImpl implements ProjectTaskAggregateServ
|
|||||||
// ========= board-page =========
|
// ========= board-page =========
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectTaskBoardPageRespVO getAggregateTaskBoardPage(Long projectId, ProjectTaskAggregateBoardPageReqVO reqVO) {
|
public ProjectTaskBoardPageRespVO getAggregateTaskBoardPage(Long projectId, ProjectTaskAggregateBoardPageReqVO reqVO) {
|
||||||
// 空数组语义短路:executionStatusCodes 或 executionIds 为空数组 → 该范围明确为空,跳过 SQL,保留列骨架(每列 list=[] / total=0)
|
// 空数组语义短路:executionStatusCodes 或 executionIds 为空数组 → 该范围明确为空,跳过 SQL,保留列骨架(每列 list=[] / total=0)
|
||||||
boolean emptyExecScope = (reqVO.getExecutionStatusCodes() != null && reqVO.getExecutionStatusCodes().isEmpty())
|
boolean emptyExecScope = (reqVO.getExecutionStatusCodes() != null && reqVO.getExecutionStatusCodes().isEmpty())
|
||||||
@@ -237,8 +234,7 @@ public class ProjectTaskAggregateServiceImpl implements ProjectTaskAggregateServ
|
|||||||
// ========= summary =========
|
// ========= summary =========
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectTaskSummaryRespVO getAggregateTaskSummary(Long projectId, ProjectTaskSummaryReqVO reqVO) {
|
public ProjectTaskSummaryRespVO getAggregateTaskSummary(Long projectId, ProjectTaskSummaryReqVO reqVO) {
|
||||||
LocalDate today = today();
|
LocalDate today = today();
|
||||||
LocalDate weekStart = weekStart(today);
|
LocalDate weekStart = weekStart(today);
|
||||||
|
|||||||
@@ -475,8 +475,7 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<ProjectTaskDO> getTaskPage(Long projectId, Long executionId, ProjectTaskPageReqVO reqVO) {
|
public PageResult<ProjectTaskDO> getTaskPage(Long projectId, Long executionId, ProjectTaskPageReqVO reqVO) {
|
||||||
validateExecutionExists(projectId, executionId);
|
validateExecutionExists(projectId, executionId);
|
||||||
// 进得来 = 看执行下全部任务,"我参与 / 所有"由前端发不发 reqVO.ownerId / involveUserId 决定。
|
// 进得来 = 看执行下全部任务,"我参与 / 所有"由前端发不发 reqVO.ownerId / involveUserId 决定。
|
||||||
@@ -486,8 +485,7 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public ProjectTaskRespVO getTaskRespVO(Long projectId, Long executionId, Long taskId) {
|
public ProjectTaskRespVO getTaskRespVO(Long projectId, Long executionId, Long taskId) {
|
||||||
// 内联 validate,便于接住 execution 供前端 executionOwnerId 字段使用
|
// 内联 validate,便于接住 execution 供前端 executionOwnerId 字段使用
|
||||||
ProjectExecutionDO execution = validateExecutionExists(projectId, executionId);
|
ProjectExecutionDO execution = validateExecutionExists(projectId, executionId);
|
||||||
@@ -510,8 +508,7 @@ public class ProjectTaskServiceImpl implements ProjectTaskService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<ProjectTaskRespVO> getTaskRespVOPage(Long projectId, Long executionId, ProjectTaskPageReqVO reqVO) {
|
public PageResult<ProjectTaskRespVO> getTaskRespVOPage(Long projectId, Long executionId, ProjectTaskPageReqVO reqVO) {
|
||||||
PageResult<ProjectTaskDO> pageResult = getTaskPage(projectId, executionId, reqVO);
|
PageResult<ProjectTaskDO> pageResult = getTaskPage(projectId, executionId, reqVO);
|
||||||
return assembleTaskRespVOPage(projectId, executionId, pageResult);
|
return assembleTaskRespVOPage(projectId, executionId, pageResult);
|
||||||
|
|||||||
@@ -69,8 +69,7 @@ public class TaskAssigneeServiceImpl implements TaskAssigneeService {
|
|||||||
private AdminUserApi adminUserApi;
|
private AdminUserApi adminUserApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public List<TaskAssigneeRespVO> getAssigneeList(Long projectId, Long executionId, Long taskId) {
|
public List<TaskAssigneeRespVO> getAssigneeList(Long projectId, Long executionId, Long taskId) {
|
||||||
validateExecutionAndTaskExists(projectId, executionId, taskId);
|
validateExecutionAndTaskExists(projectId, executionId, taskId);
|
||||||
List<TaskAssigneeDO> activeList = taskAssigneeMapper.selectActiveListByTaskId(taskId);
|
List<TaskAssigneeDO> activeList = taskAssigneeMapper.selectActiveListByTaskId(taskId);
|
||||||
@@ -123,8 +122,7 @@ public class TaskAssigneeServiceImpl implements TaskAssigneeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<TaskAssigneeLogRespVO> getAssigneeLogPage(Long projectId, Long executionId, Long taskId,
|
public PageResult<TaskAssigneeLogRespVO> getAssigneeLogPage(Long projectId, Long executionId, Long taskId,
|
||||||
TaskAssigneeLogPageReqVO reqVO) {
|
TaskAssigneeLogPageReqVO reqVO) {
|
||||||
validateExecutionAndTaskExists(projectId, executionId, taskId);
|
validateExecutionAndTaskExists(projectId, executionId, taskId);
|
||||||
|
|||||||
@@ -79,8 +79,7 @@ public class TaskWorklogServiceImpl implements TaskWorklogService {
|
|||||||
private ProjectTaskService projectTaskService;
|
private ProjectTaskService projectTaskService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectTaskConstants.PERMISSION_QUERY, visibilityFallback = true)
|
|
||||||
public PageResult<TaskWorklogRespVO> getWorklogPage(Long projectId, Long executionId, Long taskId,
|
public PageResult<TaskWorklogRespVO> getWorklogPage(Long projectId, Long executionId, Long taskId,
|
||||||
TaskWorklogPageReqVO reqVO) {
|
TaskWorklogPageReqVO reqVO) {
|
||||||
validateExecutionAndTaskExists(projectId, executionId, taskId);
|
validateExecutionAndTaskExists(projectId, executionId, taskId);
|
||||||
|
|||||||
@@ -78,8 +78,7 @@ public class RequirementReviewServiceImpl implements RequirementReviewService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProductObjectConstants.OBJECT_TYPE, objectId = "#productId",
|
@CheckObjectPermission(objectType = ProductObjectConstants.OBJECT_TYPE, objectId = "#productId", accessible = true)
|
||||||
permission = ProductObjectConstants.PERMISSION_QUERY)
|
|
||||||
public RequirementReviewRespVO getProductRequirementReview(Long productId, Long requirementId) {
|
public RequirementReviewRespVO getProductRequirementReview(Long productId, Long requirementId) {
|
||||||
ProductRequirementDO requirement = productRequirementMapper.selectById(requirementId);
|
ProductRequirementDO requirement = productRequirementMapper.selectById(requirementId);
|
||||||
if (requirement == null || !Objects.equals(requirement.getProductId(), productId)) {
|
if (requirement == null || !Objects.equals(requirement.getProductId(), productId)) {
|
||||||
@@ -116,8 +115,7 @@ public class RequirementReviewServiceImpl implements RequirementReviewService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId",
|
@CheckObjectPermission(objectType = ProjectObjectConstants.OBJECT_TYPE, objectId = "#projectId", accessible = true)
|
||||||
permission = ProjectObjectConstants.PERMISSION_QUERY)
|
|
||||||
public RequirementReviewRespVO getProjectRequirementReview(Long projectId, Long requirementId) {
|
public RequirementReviewRespVO getProjectRequirementReview(Long projectId, Long requirementId) {
|
||||||
ProjectRequirementDO requirement = projectRequirementMapper.selectById(requirementId);
|
ProjectRequirementDO requirement = projectRequirementMapper.selectById(requirementId);
|
||||||
if (requirement == null || !Objects.equals(requirement.getProjectId(), projectId)) {
|
if (requirement == null || !Objects.equals(requirement.getProjectId(), projectId)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user