fix(通用功能): 修复跨项目禁用模块显示问题

--bug=1039836 --user=郭雨琦 https://www.tapd.cn/55049933/bugtrace/bugs/view/1155049933001039836
This commit is contained in:
guoyuqi 2024-04-22 11:53:33 +08:00 committed by 刘瑞斌
parent dd9199be50
commit a2da01b4d1
7 changed files with 42 additions and 7 deletions

View File

@ -528,6 +528,8 @@ file.name.cannot.be.empty=文件名称不能为空
file.size.is.too.large=文件不能超过50M
file.is.empty=文件为空
file.name.error=文件名不合法
module.name.is.empty=模块参数为空
module.name.is.error=模块参数不正确
#file management over
# template

View File

@ -133,6 +133,8 @@ robot_is_null=The current robot does not exist
ding_type_is_null= DingTalk robot type is required
ding_app_key_is_null=DingTalk AppKey is required
ding_app_secret_is_null=DingTalk AppSecret is required
module.name.is.empty=Module parameter is empty
module.name.is.error=Module parameter is error
# permission
permission.project_user.name=User
permission.project_group.name=User group

View File

@ -122,6 +122,8 @@ functional_case_template_extend.step_model.length_range=步骤模型长度必须
functional_case_template_extend.step_model.not_blank=步骤模型不能为空
project_not_exist=项目不存在
fake_error_name_exist=误报名称已存在
module.name.is.empty=模块参数为空
module.name.is.error=模块参数不正确
#消息管理
save_message_task_user_no_exist=所选用户部分不存在
# robot

View File

@ -122,6 +122,8 @@ functional_case_template_extend.step_model.length_range=步驟模型長度必須
functional_case_template_extend.step_model.not_blank=步驟模型不能為空
project_is_null=項目不存在
fake_error_name_exist=誤報名稱已存在
module.name.is.empty=模組參數為空
module.name.is.error=模組參數不正確
#消息管理
save_message_task_user_no_exist=所選用戶部分不存在
# robot

View File

@ -1,5 +1,6 @@
package io.metersphere.project.service;
import io.metersphere.project.constants.ProjectMenuConstants;
import io.metersphere.project.domain.*;
import io.metersphere.project.dto.ProjectRequest;
import io.metersphere.project.mapper.ExtProjectMapper;
@ -251,6 +252,31 @@ public class ProjectService {
}
public List<Project> getUserProjectWidthModule(String organizationId, String module, String userId) {
if (StringUtils.isBlank(module)) {
throw new MSException(Translator.get("module.name.is.empty"));
}
String moduleName = null;
if (StringUtils.equalsIgnoreCase(module, "API") || StringUtils.equalsIgnoreCase(module, "SCENARIO")) {
moduleName = ProjectMenuConstants.MODULE_MENU_API_TEST;
}
if (StringUtils.equalsIgnoreCase(module, "FUNCTIONAL")) {
moduleName = ProjectMenuConstants.MODULE_MENU_FUNCTIONAL_CASE;
}
if (StringUtils.equalsIgnoreCase(module, "BUG")) {
moduleName = ProjectMenuConstants.MODULE_MENU_BUG;
}
if (StringUtils.equalsIgnoreCase(module, "PERFORMANCE")) {
moduleName = ProjectMenuConstants.MODULE_MENU_LOAD_TEST;
}
if (StringUtils.equalsIgnoreCase(module, "UI")) {
moduleName = ProjectMenuConstants.MODULE_MENU_UI;
}
if (StringUtils.equalsIgnoreCase(module, "TEST_PLAN")) {
moduleName = ProjectMenuConstants.MODULE_MENU_TEST_PLAN;
}
if (StringUtils.isBlank(moduleName)) {
throw new MSException(Translator.get("module.name.is.error"));
}
checkOrg(organizationId);
//查询用户当前的项目 如果存在默认排在第一个
User user = baseUserMapper.selectById(userId);
@ -265,9 +291,9 @@ public class ProjectService {
UserRoleRelationExample userRoleRelationExample = new UserRoleRelationExample();
userRoleRelationExample.createCriteria().andUserIdEqualTo(userId).andRoleIdEqualTo(InternalUserRole.ADMIN.name());
if (userRoleRelationMapper.countByExample(userRoleRelationExample) > 0) {
allProject = extProjectMapper.getAllProjectWidthModule(organizationId, module);
allProject = extProjectMapper.getAllProjectWidthModule(organizationId, moduleName);
} else {
allProject = extProjectMapper.getUserProjectWidthModule(organizationId, userId, module);
allProject = extProjectMapper.getUserProjectWidthModule(organizationId, userId, moduleName);
}
List<Project> temp = allProject;
return allProject.stream()

View File

@ -214,8 +214,9 @@ public class ProjectControllerTests extends BaseTest {
ProjectExample example = new ProjectExample();
example.createCriteria().andOrganizationIdEqualTo(DEFAULT_ORGANIZATION_ID).andEnableEqualTo(true);
Assertions.assertEquals(projectMapper.countByExample(example), list.size());
MvcResult mvcResultModule = this.responseGet(getOptionsWidthModule + DEFAULT_ORGANIZATION_ID +"/apiTest");
requestGet(getOptionsWidthModule + DEFAULT_ORGANIZATION_ID +"/apiTest", status().is5xxServerError());
requestGet(getOptionsWidthModule + DEFAULT_ORGANIZATION_ID +"/''", status().is5xxServerError());
MvcResult mvcResultModule = this.responseGet(getOptionsWidthModule + DEFAULT_ORGANIZATION_ID +"/API");
List<Project> listModule = parseObjectFromMvcResult(mvcResultModule, List.class);
Assertions.assertNotNull(listModule);
ProjectExample exampleWidthModule = new ProjectExample();
@ -259,7 +260,7 @@ public class ProjectControllerTests extends BaseTest {
list = parseObjectFromMvcResult(mvcResult, List.class);
Assertions.assertNotNull(list);
mvcResult = mockMvc.perform(MockMvcRequestBuilders.get(getOptions + DEFAULT_ORGANIZATION_ID+"/apiTest")
mvcResult = mockMvc.perform(MockMvcRequestBuilders.get(getOptions + DEFAULT_ORGANIZATION_ID+"/API")
.header(SessionConstants.HEADER_TOKEN, sessionId)
.header(SessionConstants.CSRF_TOKEN, csrfToken)
.contentType(MediaType.APPLICATION_JSON))
@ -287,7 +288,7 @@ public class ProjectControllerTests extends BaseTest {
//断言list是空的
Assertions.assertEquals(0, list.size());
mvcResult = mockMvc.perform(MockMvcRequestBuilders.get(getOptions + DEFAULT_ORGANIZATION_ID+"/apiTest")
mvcResult = mockMvc.perform(MockMvcRequestBuilders.get(getOptions + DEFAULT_ORGANIZATION_ID+"/API")
.header(SessionConstants.HEADER_TOKEN, sessionId)
.header(SessionConstants.CSRF_TOKEN, csrfToken)
.contentType(MediaType.APPLICATION_JSON))

View File

@ -57,7 +57,7 @@ export default {
'apiTestManagement.batchUpdate': '批量更新为',
'apiTestManagement.valueRequired': '属性值不能为空',
'apiTestManagement.envRequired': '环境值不能为空',
'apiTestManagement.reportNameRequired': '报告名不能为空',
'apiTestManagement.reportNameRequired': '报告名不能为空',
'apiTestManagement.poolRequired': '资源池不能为空',
'apiTestManagement.batchMoveConfirm': '移动至所选模块',
'apiTestManagement.belongModule': '所属模块',