diff --git a/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/ApiDefinitionCaseDTO.java b/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/ApiDefinitionCaseDTO.java index 31e7ef2108..ce0e2230e2 100644 --- a/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/ApiDefinitionCaseDTO.java +++ b/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/ApiDefinitionCaseDTO.java @@ -8,76 +8,73 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class ApiDefinitionCaseDTO { - @Schema(description = "接口名称") + @Schema(description ="message.domain.name") private String name; - @Schema(description = "接口协议") + @Schema(description ="message.domain.protocol") private String protocol; - @Schema(description = "http协议类型post/get/其它协议则是协议名(mqtt)") + @Schema(description ="message.domain.method") private String method; - @Schema(description = "http协议路径/其它协议则为空") + @Schema(description ="message.domain.path") private String path; - @Schema(description = "接口状态/进行中/已完成") + @Schema(description ="message.domain.status") private String status; - @Schema(description = "描述") + @Schema(description ="message.domain.description") private String description; - @Schema(description = "创建时间") + @Schema(description ="message.domain.create_time") private Long createTime; - @Schema(description = "创建人") + @Schema(description ="message.domain.create_user") private String createUser; - @Schema(description = "修改时间") + @Schema(description ="message.domain.update_time") private Long updateTime; - @Schema(description = "修改人") + @Schema(description ="message.domain.update_user") private String updateUser; - @Schema(description = "删除人") + @Schema(description ="message.domain.delete_user") private String deleteUser; - @Schema(description = "删除时间") + @Schema(description ="message.domain.delete_time") private Long deleteTime; - @Schema(description = "接口用例名称") + @Schema(description ="message.domain.case_name") private String caseName; - @Schema(description = "用例等级") + @Schema(description ="message.domain.priority") private String priority; - @Schema(description = "用例状态") + @Schema(description ="message.domain.case_status") private String caseStatus; - @Schema(description = "用例最新执行结果状态") + @Schema(description ="message.domain.last_report_status") private String lastReportStatus; - @Schema(description = "用例最后执行结果报告fk") - private String lastReportId; - - @Schema(description = "用例责任人") + @Schema(description ="message.domain.principal") private String principal; - @Schema(description = "用例创建时间") + @Schema(description ="message.domain.case_create_time") private Long caseCreateTime; - @Schema(description = "用例创建人") + @Schema(description ="message.domain.case_create_user") private String caseCreateUser; - @Schema(description = "用例更新时间") + @Schema(description ="message.domain.case_update_time") private Long caseUpdateTime; - @Schema(description = "用例更新人") + @Schema(description ="message.domain.case_update_user") private String caseUpdateUser; - @Schema(description = "用例删除时间") + @Schema(description ="message.domain.case_delete_time") private Long caseDeleteTime; - @Schema(description = "用例删除人") + @Schema(description ="message.domain.case_delete_user") private String caseDeleteUser; diff --git a/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/FunctionalCaseMessageDTO.java b/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/FunctionalCaseMessageDTO.java index 845db724ce..23a84ad702 100644 --- a/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/FunctionalCaseMessageDTO.java +++ b/backend/framework/sdk/src/main/java/io/metersphere/sdk/dto/FunctionalCaseMessageDTO.java @@ -8,40 +8,40 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class FunctionalCaseMessageDTO { - @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description ="message.domain.name") private String name; - @Schema(description = "测试计划名称", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "message.domain.test_plan_name") private String testPlanName; - @Schema(description = "评审名称", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "message.domain.review_name") private String reviewName; - @Schema(description = "评审状态:未开始/进行中/已完成/已结束", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "message.domain.review_status") private String reviewStatus; - @Schema(description = "编辑模式:步骤模式/文本模式", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "message.domain.case_model") private String caseModel; - @Schema(description = "最近的执行结果:未执行/通过/失败/阻塞/跳过", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "message.domain.last_execute_result") private String lastExecuteResult; - @Schema(description = "创建人") + @Schema(description = "message.domain.create_user") private String createUser; - @Schema(description = "更新人") + @Schema(description = "message.domain.update_user") private String updateUser; - @Schema(description = "删除人") + @Schema(description = "message.domain.delete_user") private String deleteUser; - @Schema(description = "创建时间") + @Schema(description = "message.domain.create_time") private Long createTime; - @Schema(description = "更新时间") + @Schema(description = "message.domain.update_time") private Long updateTime; - @Schema(description = "删除时间") + @Schema(description = "message.domain.delete_time") private Long deleteTime; } diff --git a/backend/framework/sdk/src/main/resources/i18n/project.properties b/backend/framework/sdk/src/main/resources/i18n/project.properties index 5f572a947e..c455e9943e 100644 --- a/backend/framework/sdk/src/main/resources/i18n/project.properties +++ b/backend/framework/sdk/src/main/resources/i18n/project.properties @@ -289,7 +289,126 @@ message.title.jenkins_task_execute_successful=Jenkins任务执行成功通知 message.title.jenkins_task_execute_failed=Jenkins任务执行失败通知 message.title.schedule_task_open=开启定时任务通知 message.title.schedule_task_close=关闭定时任务通知 - +#功能用例 +message.domain.name=名称 +message.domain.test_plan_name=测试计划名称 +message.domain.review_name=评审名称 +message.domain.review_status=评审状态 +message.domain.case_model=编辑模式 +message.domain.last_execute_result=最近的执行结果 +message.domain.create_user=创建人 +message.domain.update_user=更新人 +message.domain.delete_user=删除人 +message.domain.create_time=创建时间 +message.domain.update_time=更新时间 +message.domain.delete_time=删除时间 +#接口定义和用例 +message.domain.protocol=接口协议 +message.domain.method=http协议类型 +message.domain.path=http协议路径/其它协议则为空 +message.domain.status=接口状态 +message.domain.description=描述 +message.domain.case_name=接口用例名称 +message.domain.priority=用例等级 +message.domain.case_status=用例状态 +message.domain.last_report_status=用例最新执行结果状态 +message.domain.principal=用例责任人 +message.domain.case_create_time=用例创建时间 +message.domain.case_create_user=用例创建人 +message.domain.case_update_time=用例更新时间 +message.domain.case_update_user=用例更新人 +message.domain.case_delete_time=用例删除时间 +message.domain.case_delete_user=用例删除人 +#场景字段 +message.domain.api_scenario_name=场景名称 +message.domain.api_scenario_level=场景级别 +message.domain.api_scenario_status=场景状态 +message.domain.api_scenario_principal=责任人 +message.domain.api_scenario_stepTotal=场景步骤总数 +message.domain.api_scenario_num=编号 +message.domain.api_scenario_passRate=通过率 +message.domain.api_scenario_lastReportStatus=最后一次执行的结果状态 +message.domain.api_scenario_description=描述 +message.domain.api_scenario_tags=标签 +message.domain.api_scenario_grouped=是否为环境组 +message.domain.api_scenario_createUser=创建人 +message.domain.api_scenario_updateUser=更新人 +message.domain.api_scenario_deleteUser=删除人 +message.domain.api_scenario_createTime=创建时间 +message.domain.api_scenario_updateTime=更新时间 +message.domain.api_scenario_deleteTime=删除时间 +# 测试计划 +message.domain.test_plan_stage=测试阶段 +message.domain.test_plan_status=测试计划状态 +message.domain.test_plan_description=描述 +message.domain.test_plan_tags=标签 +message.domain.test_plan_createUser=创建人 +message.domain.test_plan_updateUser=更新人 +message.domain.test_plan_createTime=创建时间 +message.domain.test_plan_updateTime=更新时间 +message.domain.test_plan_plannedStartTime=计划开始时间 +message.domain.test_plan_plannedEndTime=计划结束时间 +message.domain.test_plan_actualStartTime=实际开始时间 +message.domain.test_plan_actualEndTime=实际结束时间 +# 用例评审 +message.domain.case_review_name=名称 +message.domain.case_review_status=评审状态 +message.domain.case_review_description=描述 +message.domain.case_review_tags=标签 +message.domain.case_review_createUser=创建人 +message.domain.case_review_createTime=创建时间 +message.domain.case_review_updateTime=更新时间 +message.domain.case_review_updateUser=更新人 +message.domain.case_review_endTime=评审结束时间 +message.domain.case_review_reviewPassRule=评审规则 +# 缺陷 +message.domain.bug_num=业务ID +message.domain.bug_title=缺陷标题 +message.domain.bug_assignUser=指派人 +message.domain.bug_platform=缺陷平台 +message.domain.bug_tags=标签 +message.domain.bug_status=状态 +message.domain.bug_createUser=创建人 +message.domain.bug__updateUser=更新人 +message.domain.bug_createTime=创建时间 +message.domain.bug_updateTime=更新时间 +message.domain.bug_deleteUser=删除人 +message.domain.bug_deleteTime=删除时间 +#UI +message.domain.ui_name=场景名称 +message.domain.ui_level=用例等级 +message.domain.ui_principal=责任人 +message.domain.ui_stepTotal=步骤总数 +message.domain.ui_tags=标签 +message.domain.ui_status=状态 +message.domain.ui_num=业务ID +message.domain.ui_lastResult=最后执行结果 +message.domain.ui_createUser=创建人 +message.domain.ui_updateUser=更新人 +message.domain.ui_createTime=创建时间 +message.domain.ui_updateTime=更新时间 +message.domain.ui_deleteUser=删除人 +message.domain.ui_deleteTime=删除时间 +#性能 +message.domain.load_name=测试名称 +message.domain.load_status=状态 +message.domain.load_num=业务ID +message.domain.load_createUser=创建人 +message.domain.load_updateUser=更新人 +message.domain.load_createTime=创建时间 +message.domain.load_updateTime=更新时间 +#定时任务 +message.domain.schedule_key=qrtz UUID +message.domain.schedule_type=资源类型 +message.domain.schedule_value=cron 表达式 +message.domain.schedule_job=Schedule Job Class Name +message.domain.schedule_name=名称 +message.domain.schedule_config=配置 +message.domain.schedule_createUser=创建人 +message.domain.schedule_updateUser=更新人 +message.domain.schedule_createTime=创建时间 +message.domain.schedule_updateTime=更新时间 +#资源池 resource_pool_not_exist=资源池不存在 #file management diff --git a/backend/framework/sdk/src/main/resources/i18n/project_en_US.properties b/backend/framework/sdk/src/main/resources/i18n/project_en_US.properties index 6fc71905e7..82be424824 100644 --- a/backend/framework/sdk/src/main/resources/i18n/project_en_US.properties +++ b/backend/framework/sdk/src/main/resources/i18n/project_en_US.properties @@ -323,6 +323,127 @@ message.title.jenkins_task_execute_failed=Jenkins task execution failure notific message.title.schedule_task_open=Turn on scheduled task notifications message.title.schedule_task_close=Turn off scheduled task notifications + +#功能case +message.domain.name=Name +message.domain.test_plan_name=Test plan name +message.domain.review_name=Review name +message.domain.review_status=Review status +message.domain.case_model=Edit mode +message.domain.last_execute_result=Recent execution results +message.domain.create_user=Create user +message.domain.update_user=Update user +message.domain.delete_user=Delete user +message.domain.create_time=Create time +message.domain.update_time=Update time +message.domain.delete_time=Delete time +#接口定义和case +message.domain.protocol=Interface Protocol +message.domain.method=Http protocol type +message.domain.path=Http protocol path/other protocols are empty +message.domain.status=Interface status +message.domain.description=Description +message.domain.case_name=Interface case name +message.domain.priority=Case level +message.domain.case_status=Case status +message.domain.last_report_status=The latest execution result status of the use case +message.domain.principal=Case responsible +message.domain.case_create_time=Case create time +message.domain.case_create_user=Case create user +message.domain.case_update_time=Case update time +message.domain.case_update_user=Case update user +message.domain.case_delete_time=Case delete time +message.domain.case_delete_user=Case delete user +#Scenario字段 +message.domain.api_scenario_name=Scenario name +message.domain.api_scenario_level=Scenario level +message.domain.api_scenario_status=Scenario status +message.domain.api_scenario_principal=Responsible +message.domain.api_scenario_stepTotal=Overview of scenario steps +message.domain.api_scenario_num=Number +message.domain.api_scenario_passRate=Passing rate +message.domain.api_scenario_lastReportStatus=The latest execution result status +message.domain.api_scenario_description=Description +message.domain.api_scenario_tags=Tag +message.domain.api_scenario_grouped=Whether it is an environment group +message.domain.api_scenario_createUser=Create user +message.domain.api_scenario_updateUser=Update user +message.domain.api_scenario_deleteUser=Delete user +message.domain.api_scenario_createTime=Create time +message.domain.api_scenario_updateTime=Update time +message.domain.api_scenario_deleteTime=Delete time +# Test plan +message.domain.test_plan_stage=Testing phase +message.domain.test_plan_status=Test plan status +message.domain.test_plan_description=Description +message.domain.test_plan_tags=Tag +message.domain.test_plan_createUser=Create user +message.domain.test_plan_updateUser=Update user +message.domain.test_plan_createTime=Create time +message.domain.test_plan_updateTime=Update time +message.domain.test_plan_plannedStartTime=Planned start time +message.domain.test_plan_plannedEndTime=Planned end time +message.domain.test_plan_actualStartTime=Actual start time +message.domain.test_plan_actualEndTime=Actual end time +# case Review +message.domain.case_review_name=Name +message.domain.case_review_status=Review status +message.domain.case_review_description=Description +message.domain.case_review_tags=Tag +message.domain.case_review_createUser=Create user +message.domain.case_review_createTime=Create time +message.domain.case_review_updateTime=Update time +message.domain.case_review_updateUser=Update user +message.domain.case_review_endTime=Review end time +message.domain.case_review_reviewPassRule=Review rules +# 缺陷 +message.domain.bug_num=Business ID +message.domain.bug_title=Defect title +message.domain.bug_assignUser=Designed +message.domain.bug_platform=Defective platform +message.domain.bug_tags=Tag +message.domain.bug_status=Status +message.domain.bug_createUser=Create user +message.domain.bug__updateUser=Update user +message.domain.bug_createTime=Create time +message.domain.bug_updateTime=Update time +message.domain.bug_deleteUser=Delete user +message.domain.bug_deleteTime=Delete time +#UI +message.domain.ui_name=Scenario name +message.domain.ui_level=Case level +message.domain.ui_principal=Responsible +message.domain.ui_stepTotal=Total number of steps +message.domain.ui_tags=Tag +message.domain.ui_status=Status +message.domain.ui_num=Business ID +message.domain.ui_lastResult=Final execution result +message.domain.ui_createUser=Create user +message.domain.ui_updateUser=Update user +message.domain.ui_createTime=Create time +message.domain.ui_updateTime=Update time +message.domain.ui_deleteUser=Delete user +message.domain.ui_deleteTime=Delete time +#性能 +message.domain.load_name=Test name +message.domain.load_status=Status +message.domain.load_num=Business ID +message.domain.load_createUser=Create user +message.domain.load_updateUser=Update user +message.domain.load_createTime=Create time +message.domain.load_updateTime=Update time +#定时任务 +message.domain.schedule_key=qrtz UUID +message.domain.schedule_type=Resource Type +message.domain.schedule_value=Cron expression +message.domain.schedule_job=Schedule Job Class Name +message.domain.schedule_name=Name +message.domain.schedule_config=Configuration +message.domain.schedule_createUser=Create user +message.domain.schedule_updateUser=Update user +message.domain.schedule_createTime=Create time +message.domain.schedule_updateTime=Update time + resource_pool_not_exist=Resource pool does not exist #file management diff --git a/backend/framework/sdk/src/main/resources/i18n/project_zh_CN.properties b/backend/framework/sdk/src/main/resources/i18n/project_zh_CN.properties index 83277de9e6..fe99d3ea1f 100644 --- a/backend/framework/sdk/src/main/resources/i18n/project_zh_CN.properties +++ b/backend/framework/sdk/src/main/resources/i18n/project_zh_CN.properties @@ -323,6 +323,126 @@ message.title.jenkins_task_execute_failed=Jenkins任务执行失败通知 message.title.schedule_task_open=开启定时任务通知 message.title.schedule_task_close=关闭定时任务通知 +#功能用例 +message.domain.name=名称 +message.domain.test_plan_name=测试计划名称 +message.domain.review_name=评审名称 +message.domain.review_status=评审状态 +message.domain.case_model=编辑模式 +message.domain.last_execute_result=最近的执行结果 +message.domain.create_user=创建人 +message.domain.update_user=更新人 +message.domain.delete_user=删除人 +message.domain.create_time=创建时间 +message.domain.update_time=更新时间 +message.domain.delete_time=删除时间 +#接口定义和用例 +message.domain.protocol=接口协议 +message.domain.method=http协议类型 +message.domain.path=http协议路径/其它协议则为空 +message.domain.status=接口状态 +message.domain.description=描述 +message.domain.case_name=接口用例名称 +message.domain.priority=用例等级 +message.domain.case_status=用例状态 +message.domain.last_report_status=用例最新执行结果状态 +message.domain.principal=用例责任人 +message.domain.case_create_time=用例创建时间 +message.domain.case_create_user=用例创建人 +message.domain.case_update_time=用例更新时间 +message.domain.case_update_user=用例更新人 +message.domain.case_delete_time=用例删除时间 +message.domain.case_delete_user=用例删除人 +#场景字段 +message.domain.api_scenario_name=场景名称 +message.domain.api_scenario_level=场景级别 +message.domain.api_scenario_status=场景状态 +message.domain.api_scenario_principal=责任人 +message.domain.api_scenario_stepTotal=场景步骤总数 +message.domain.api_scenario_num=编号 +message.domain.api_scenario_passRate=通过率 +message.domain.api_scenario_lastReportStatus=最后一次执行的结果状态 +message.domain.api_scenario_description=描述 +message.domain.api_scenario_tags=标签 +message.domain.api_scenario_grouped=是否为环境组 +message.domain.api_scenario_createUser=创建人 +message.domain.api_scenario_updateUser=更新人 +message.domain.api_scenario_deleteUser=删除人 +message.domain.api_scenario_createTime=创建时间 +message.domain.api_scenario_updateTime=更新时间 +message.domain.api_scenario_deleteTime=删除时间 +# 测试计划 +message.domain.test_plan_stage=测试阶段 +message.domain.test_plan_status=测试计划状态 +message.domain.test_plan_description=描述 +message.domain.test_plan_tags=标签 +message.domain.test_plan_createUser=创建人 +message.domain.test_plan_updateUser=更新人 +message.domain.test_plan_createTime=创建时间 +message.domain.test_plan_updateTime=更新时间 +message.domain.test_plan_plannedStartTime=计划开始时间 +message.domain.test_plan_plannedEndTime=计划结束时间 +message.domain.test_plan_actualStartTime=实际开始时间 +message.domain.test_plan_actualEndTime=实际结束时间 +# 用例评审 +message.domain.case_review_name=名称 +message.domain.case_review_status=评审状态 +message.domain.case_review_description=描述 +message.domain.case_review_tags=标签 +message.domain.case_review_createUser=创建人 +message.domain.case_review_createTime=创建时间 +message.domain.case_review_updateTime=更新时间 +message.domain.case_review_updateUser=更新人 +message.domain.case_review_endTime=评审结束时间 +message.domain.case_review_reviewPassRule=评审规则 +# 缺陷 +message.domain.bug_num=业务ID +message.domain.bug_title=缺陷标题 +message.domain.bug_assignUser=指派人 +message.domain.bug_platform=缺陷平台 +message.domain.bug_tags=标签 +message.domain.bug_status=状态 +message.domain.bug_createUser=创建人 +message.domain.bug__updateUser=更新人 +message.domain.bug_createTime=创建时间 +message.domain.bug_updateTime=更新时间 +message.domain.bug_deleteUser=删除人 +message.domain.bug_deleteTime=删除时间 +#UI +message.domain.ui_name=场景名称 +message.domain.ui_level=用例等级 +message.domain.ui_principal=责任人 +message.domain.ui_stepTotal=步骤总数 +message.domain.ui_tags=标签 +message.domain.ui_status=状态 +message.domain.ui_num=业务ID +message.domain.ui_lastResult=最后执行结果 +message.domain.ui_createUser=创建人 +message.domain.ui_updateUser=更新人 +message.domain.ui_createTime=创建时间 +message.domain.ui_updateTime=更新时间 +message.domain.ui_deleteUser=删除人 +message.domain.ui_deleteTime=删除时间 +#性能 +message.domain.load_name=测试名称 +message.domain.load_status=状态 +message.domain.load_num=业务ID +message.domain.load_createUser=创建人 +message.domain.load_updateUser=更新人 +message.domain.load_createTime=创建时间 +message.domain.load_updateTime=更新时间 +#定时任务 +message.domain.schedule_key=qrtz UUID +message.domain.schedule_type=资源类型 +message.domain.schedule_value=cron 表达式 +message.domain.schedule_job=Schedule Job Class Name +message.domain.schedule_name=名称 +message.domain.schedule_config=配置 +message.domain.schedule_createUser=创建人 +message.domain.schedule_updateUser=更新人 +message.domain.schedule_createTime=创建时间 +message.domain.schedule_updateTime=更新时间 + resource_pool_not_exist=资源池不存在 #file management diff --git a/backend/framework/sdk/src/main/resources/i18n/project_zh_TW.properties b/backend/framework/sdk/src/main/resources/i18n/project_zh_TW.properties index 4dde785012..5dbc52c46b 100644 --- a/backend/framework/sdk/src/main/resources/i18n/project_zh_TW.properties +++ b/backend/framework/sdk/src/main/resources/i18n/project_zh_TW.properties @@ -195,9 +195,9 @@ message.case_delete=删除用例 message.case_execute_successful=用例執行成功 message.case_execute_fake_error=用例執行誤報 message.case_execute_failed=用例執行失敗 -message.scenario_execute_successful=场景執行成功 -message.scenario_execute_fake_error=场景執行誤報 -message.scenario_execute_failed=场景執行失敗 +message.scenario_execute_successful=場景執行成功 +message.scenario_execute_fake_error=場景執行誤報 +message.scenario_execute_failed=場景執行失敗 message.execute_successful=執行成功 message.execute_failed=執行失敗 message.execute_passed=執行通過 @@ -323,6 +323,127 @@ message.title.jenkins_task_execute_successful=Jenkins任務執行成功通知 message.title.jenkins_task_execute_failed=Jenkins任務執行失敗通知 message.title.schedule_task_open=開啟定時任務通知 message.title.schedule_task_close=關閉定時任務通知 + +#功能用例 +message.domain.name=名稱 +message.domain.test_plan_name=測試計劃名稱 +message.domain.review_name=評審名稱 +message.domain.review_status=評審狀態 +message.domain.case_model=編輯模式 +message.domain.last_execute_result=最近的執行結果 +message.domain.create_user=創建人 +message.domain.update_user=更新人 +message.domain.delete_user=删除人 +message.domain.create_time=創建時間 +message.domain.update_time=更新時間 +message.domain.delete_time=刪除時間 +#接口定义和用例 +message.domain.protocol=介面協定 +message.domain.method=http協定類型 +message.domain.path=http協定路徑/其它協定則為空 +message.domain.status=介面狀態 +message.domain.description=描述 +message.domain.case_name=介面用例名稱 +message.domain.priority=用例等級 +message.domain.case_status=用例狀態 +message.domain.last_report_status=使用案例最新執行結果狀態 +message.domain.principal=用例責任人 +message.domain.case_create_time=用例創建時間 +message.domain.case_create_user=用例創建人 +message.domain.case_update_time=用例更新時間 +message.domain.case_update_user=用例更新人 +message.domain.case_delete_time=用例刪除時間 +message.domain.case_delete_user=用例刪除人 +#場景字段 +message.domain.api_scenario_name=場景名稱 +message.domain.api_scenario_level=場景等級 +message.domain.api_scenario_status=場景狀態 +message.domain.api_scenario_principal=責任人 +message.domain.api_scenario_stepTotal=場景步驟總數 +message.domain.api_scenario_num=編號 +message.domain.api_scenario_passRate=通過率 +message.domain.api_scenario_lastReportStatus=最後一次執行的結果狀態 +message.domain.api_scenario_description=描述 +message.domain.api_scenario_tags=標籤 +message.domain.api_scenario_grouped=是否為環境組 +message.domain.api_scenario_createUser=創建人 +message.domain.api_scenario_updateUser=更新人 +message.domain.api_scenario_deleteUser=删除人 +message.domain.api_scenario_createTime=創建時間 +message.domain.api_scenario_updateTime=更新時間 +message.domain.api_scenario_deleteTime=刪除時間 +# 测试计划 +message.domain.test_plan_stage=測試階段 +message.domain.test_plan_status=測試計劃狀態 +message.domain.test_plan_description=描述 +message.domain.test_plan_tags=標籤 +message.domain.test_plan_createUser=創建人 +message.domain.test_plan_updateUser=更新人 +message.domain.test_plan_createTime=創建時間 +message.domain.test_plan_updateTime=更新時間 +message.domain.test_plan_plannedStartTime=計劃開始時間 +message.domain.test_plan_plannedEndTime=計劃結束時間 +message.domain.test_plan_actualStartTime=實際開始時間 +message.domain.test_plan_actualEndTime=實際結束時間 +# 用例评审 +message.domain.case_review_name=名稱 +message.domain.case_review_status=评审狀態 +message.domain.case_review_description=描述 +message.domain.case_review_tags=標籤 +message.domain.case_review_createUser=創建人 +message.domain.case_review_createTime=創建時間 +message.domain.case_review_updateTime=更新時間 +message.domain.case_review_updateUser=更新人 +message.domain.case_review_endTime=評審結束時間 +message.domain.case_review_reviewPassRule=評審規則 +# 缺陷 +message.domain.bug_num=業務ID +message.domain.bug_title=缺陷標題 +message.domain.bug_assignUser=指派人 +message.domain.bug_platform=缺陷平台 +message.domain.bug_tags=標籤 +message.domain.bug_status=狀態 +message.domain.bug_createUser=創建人 +message.domain.bug__updateUser=更新人 +message.domain.bug_createTime=創建時間 +message.domain.bug_updateTime=更新時間 +message.domain.bug_deleteUser=删除人 +message.domain.bug_deleteTime=刪除時間 +#UI +message.domain.ui_name=場景名稱 +message.domain.ui_level=用例等級 +message.domain.ui_principal=責任人 +message.domain.ui_stepTotal=步驟總數 +message.domain.ui_tags=標籤 +message.domain.ui_status=狀態 +message.domain.ui_num=業務ID +message.domain.ui_lastResult=最後執行結果 +message.domain.ui_createUser=創建人 +message.domain.ui_updateUser=更新人 +message.domain.ui_createTime=創建時間 +message.domain.ui_updateTime=更新時間 +message.domain.ui_deleteUser=删除人 +message.domain.ui_deleteTime=刪除時間 +#性能 +message.domain.load_name=測試名稱 +message.domain.load_status=狀態 +message.domain.load_num=業務ID +message.domain.load_createUser=創建人 +message.domain.load_updateUser=更新人 +message.domain.load_createTime=創建時間 +message.domain.load_updateTime=更新時間 +#定时任务 +message.domain.schedule_key=qrtz UUID +message.domain.schedule_type=資源類型 +message.domain.schedule_value=cron 表達式 +message.domain.schedule_job=Schedule Job Class Name +message.domain.schedule_name=名稱 +message.domain.schedule_config=配置 +message.domain.schedule_createUser=創建人 +message.domain.schedule_updateUser=更新人 +message.domain.schedule_createTime=創建時間 +message.domain.schedule_updateTime=更新時間 + resource_pool_not_exist=資源池不存在 #file management file_module.not.exist=文件模塊不存在 diff --git a/backend/services/project-management/src/main/java/io/metersphere/project/service/CreateRobotResourceService.java b/backend/services/project-management/src/main/java/io/metersphere/project/service/CreateRobotResourceService.java index 5dfab396e5..d1cd3a4d72 100644 --- a/backend/services/project-management/src/main/java/io/metersphere/project/service/CreateRobotResourceService.java +++ b/backend/services/project-management/src/main/java/io/metersphere/project/service/CreateRobotResourceService.java @@ -97,7 +97,7 @@ public class CreateRobotResourceService implements CreateProjectResourceService List messageTaskTypeDTOList = messageTaskDTO.getMessageTaskTypeDTOList(); for (MessageTaskTypeDTO messageTaskTypeDTO : messageTaskTypeDTOList) { String taskType = messageTaskTypeDTO.getTaskType(); - if (taskType.contains(NoticeConstants.Mode.SCHEDULE) || taskType.contains("AT")) { + if (taskType.contains("AT")) { continue; } List messageTaskDetailDTOList = messageTaskTypeDTO.getMessageTaskDetailDTOList(); diff --git a/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeMessageTaskService.java b/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeMessageTaskService.java index 4ad3719698..2b6cc8fa38 100644 --- a/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeMessageTaskService.java +++ b/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeMessageTaskService.java @@ -6,6 +6,7 @@ import io.metersphere.project.dto.*; import io.metersphere.project.enums.ProjectRobotPlatform; import io.metersphere.project.enums.result.ProjectResultCode; import io.metersphere.project.mapper.*; +import io.metersphere.sdk.constants.TemplateScene; import io.metersphere.sdk.dto.OptionDTO; import io.metersphere.sdk.dto.request.MessageTaskRequest; import io.metersphere.sdk.exception.MSException; @@ -13,10 +14,8 @@ import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.JSON; import io.metersphere.sdk.util.Translator; import io.metersphere.system.controller.handler.ResultHolder; -import io.metersphere.system.domain.User; -import io.metersphere.system.domain.UserExample; -import io.metersphere.system.domain.UserRoleRelation; -import io.metersphere.system.domain.UserRoleRelationExample; +import io.metersphere.system.domain.*; +import io.metersphere.system.mapper.CustomFieldMapper; import io.metersphere.system.mapper.UserMapper; import io.metersphere.system.mapper.UserRoleRelationMapper; import io.metersphere.system.notice.constants.NoticeConstants; @@ -59,6 +58,8 @@ public class NoticeMessageTaskService { private ProjectMapper projectMapper; @Resource private ExtProjectUserRoleMapper extProjectUserRoleMapper; + @Resource + protected CustomFieldMapper customFieldMapper; public static final String USER_IDS = "user_ids"; @@ -287,6 +288,28 @@ public class NoticeMessageTaskService { return map; } + /** + * 获取自定义字段的解释 + * + * @return Map + */ + public Map getCustomFielddMap(String projectId) { + Map customFielddMap = new HashMap<>(); + List sceneList = new ArrayList<>(); + sceneList.add(TemplateScene.API.toString()); + sceneList.add(TemplateScene.TEST_PLAN.toString()); + sceneList.add(TemplateScene.FUNCTIONAL.toString()); + sceneList.add(TemplateScene.BUG.toString()); + sceneList.add(TemplateScene.UI.toString()); + CustomFieldExample example = new CustomFieldExample(); + example.createCriteria().andScopeIdEqualTo(projectId).andSceneIn(sceneList); + List customFields = customFieldMapper.selectByExample(example); + for (CustomField customField : customFields) { + customFielddMap.put(customField.getName(), StringUtils.isBlank(customField.getRemark()) ? "-" : customField.getRemark()); + } + return customFielddMap; + } + /** * 根据项目id 获取当前项目的消息设置 * @@ -337,6 +360,7 @@ public class NoticeMessageTaskService { Map eventMap = MessageTemplateUtils.getEventMap(); Map defaultTemplateMap = MessageTemplateUtils.getDefaultTemplateMap(); Map defaultTemplateSubjectMap = MessageTemplateUtils.getDefaultTemplateSubjectMap(); + Map customFielddMap = getCustomFielddMap(projectId); ProjectRobot projectRobot = getDefaultRobot(projectId, null); for (MessageTaskDTO messageTaskDTO : messageTaskDTOList) { messageTaskDTO.setProjectId(projectId); @@ -356,7 +380,7 @@ public class NoticeMessageTaskService { String defaultTemplate = defaultTemplateMap.get(messageTaskTypeDTO.getTaskType() + "_" + messageTaskDetailDTO.getEvent()); if (CollectionUtils.isEmpty(messageTaskList)) { String defaultSubject = defaultTemplateSubjectMap.get(messageTaskTypeDTO.getTaskType() + "_" + messageTaskDetailDTO.getEvent()); - ProjectRobotConfigDTO projectRobotConfigDTO = getDefaultProjectRobotConfigDTO(messageTaskTypeDTO.getTaskType(), defaultTemplate, defaultSubject, projectRobot); + ProjectRobotConfigDTO projectRobotConfigDTO = getDefaultProjectRobotConfigDTO(messageTaskTypeDTO.getTaskType(), defaultTemplate, defaultSubject, projectRobot, customFielddMap); projectRobotConfigMap.put(projectRobot.getId(), projectRobotConfigDTO); } else { for (MessageTask messageTask : messageTaskList) { @@ -372,7 +396,7 @@ public class NoticeMessageTaskService { } else { defaultSubject = defaultTemplateSubjectMap.get(messageTaskTypeDTO.getTaskType() + "_" + messageTaskDetailDTO.getEvent()); } - ProjectRobotConfigDTO projectRobotConfigDTO = getProjectRobotConfigDTO(defaultTemplate, defaultSubject, robotMap.get(messageTask.getProjectRobotId()), messageTask, messageTaskBlob); + ProjectRobotConfigDTO projectRobotConfigDTO = getProjectRobotConfigDTO(defaultTemplate, defaultSubject, robotMap.get(messageTask.getProjectRobotId()), messageTask, messageTaskBlob, customFielddMap); projectRobotConfigMap.put(messageTask.getProjectRobotId(), projectRobotConfigDTO); } } @@ -385,9 +409,9 @@ public class NoticeMessageTaskService { return messageTaskDTOList; } - private ProjectRobotConfigDTO getProjectRobotConfigDTO(String defaultTemplate, String defaultSubject, ProjectRobot projectRobot, MessageTask messageTask, MessageTaskBlob messageTaskBlob) { + private ProjectRobotConfigDTO getProjectRobotConfigDTO(String defaultTemplate, String defaultSubject, ProjectRobot projectRobot, MessageTask messageTask, MessageTaskBlob messageTaskBlob, Map customFielddMap) { ProjectRobotConfigDTO projectRobotConfigDTO = new ProjectRobotConfigDTO(); - if (StringUtils.equalsIgnoreCase(projectRobot.getName(),"robot_in_site") || StringUtils.equalsIgnoreCase(projectRobot.getName(),"robot_mail")) { + if (StringUtils.equalsIgnoreCase(projectRobot.getName(), "robot_in_site") || StringUtils.equalsIgnoreCase(projectRobot.getName(), "robot_mail")) { projectRobotConfigDTO.setRobotName(Translator.get(projectRobot.getName())); } else { projectRobotConfigDTO.setRobotName(projectRobot.getName()); @@ -406,8 +430,8 @@ public class NoticeMessageTaskService { } else { projectRobotConfigDTO.setTemplate(messageTaskBlob.getTemplate()); } - String translateTemplate = MessageTemplateUtils.getTranslateTemplate(messageTask.getTaskType(), projectRobotConfigDTO.getTemplate()); - String translateSubject = MessageTemplateUtils.getTranslateSubject(messageTask.getTaskType(), projectRobotConfigDTO.getSubject()); + String translateTemplate = MessageTemplateUtils.getTranslateTemplate(messageTask.getTaskType(), projectRobotConfigDTO.getTemplate(), customFielddMap); + String translateSubject = MessageTemplateUtils.getTranslateSubject(messageTask.getTaskType(), projectRobotConfigDTO.getSubject(), customFielddMap); projectRobotConfigDTO.setPreviewTemplate(translateTemplate); projectRobotConfigDTO.setPreviewSubject(translateSubject); projectRobotConfigDTO.setDefaultTemplate(defaultTemplate); @@ -417,7 +441,7 @@ public class NoticeMessageTaskService { return projectRobotConfigDTO; } - private static ProjectRobotConfigDTO getDefaultProjectRobotConfigDTO(String taskType, String defaultTemplate, String defaultSubject, ProjectRobot projectRobot) { + private static ProjectRobotConfigDTO getDefaultProjectRobotConfigDTO(String taskType, String defaultTemplate, String defaultSubject, ProjectRobot projectRobot, Map customFielddMap) { ProjectRobotConfigDTO projectRobotConfigDTO = new ProjectRobotConfigDTO(); projectRobotConfigDTO.setRobotId(projectRobot.getId()); projectRobotConfigDTO.setRobotName(Translator.get(projectRobot.getName())); @@ -430,8 +454,8 @@ public class NoticeMessageTaskService { projectRobotConfigDTO.setDefaultSubject(defaultSubject); projectRobotConfigDTO.setUseDefaultSubject(true); projectRobotConfigDTO.setUseDefaultTemplate(true); - String translateTemplate = MessageTemplateUtils.getTranslateTemplate(taskType, defaultTemplate); - String translateSubject = MessageTemplateUtils.getTranslateSubject(taskType, defaultSubject); + String translateTemplate = MessageTemplateUtils.getTranslateTemplate(taskType, defaultTemplate, customFielddMap); + String translateSubject = MessageTemplateUtils.getTranslateSubject(taskType, defaultSubject, customFielddMap); projectRobotConfigDTO.setPreviewTemplate(translateTemplate); projectRobotConfigDTO.setPreviewSubject(translateSubject); return projectRobotConfigDTO; @@ -455,6 +479,7 @@ public class NoticeMessageTaskService { List messageTasks = messageTaskMapper.selectByExample(messageTaskExample); Map defaultTemplateMap = MessageTemplateUtils.getDefaultTemplateMap(); Map defaultTemplateSubjectMap = MessageTemplateUtils.getDefaultTemplateSubjectMap(); + Map customFielddMap = getCustomFielddMap(projectId); ProjectRobot projectRobot = projectRobotMapper.selectByPrimaryKey(robotId); MessageTask messageTask; if (projectRobot == null) { @@ -484,7 +509,7 @@ public class NoticeMessageTaskService { MessageTaskBlob messageTaskBlob = messageTaskBlobMapper.selectByPrimaryKey(messageTask.getId()); String defaultTemplate = defaultTemplateMap.get(messageTask.getTaskType() + "_" + messageTask.getEvent()); String defaultSubject = defaultTemplateSubjectMap.get(messageTask.getTaskType() + "_" + messageTask.getEvent()); - ProjectRobotConfigDTO projectRobotConfigDTO = getProjectRobotConfigDTO(defaultTemplate, defaultSubject, projectRobot, messageTask, messageTaskBlob); + ProjectRobotConfigDTO projectRobotConfigDTO = getProjectRobotConfigDTO(defaultTemplate, defaultSubject, projectRobot, messageTask, messageTaskBlob, customFielddMap); MessageTemplateConfigDTO messageTemplateConfigDTO = new MessageTemplateConfigDTO(); BeanUtils.copyBean(messageTemplateConfigDTO, projectRobotConfigDTO); Map taskTypeMap = MessageTemplateUtils.getTaskTypeMap(); diff --git a/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeTemplateService.java b/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeTemplateService.java index bd7091371d..58755f52cb 100644 --- a/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeTemplateService.java +++ b/backend/services/project-management/src/main/java/io/metersphere/project/service/NoticeTemplateService.java @@ -5,11 +5,11 @@ import io.metersphere.bug.domain.Bug; import io.metersphere.functional.domain.CaseReview; import io.metersphere.load.domain.LoadTest; import io.metersphere.plan.domain.TestPlan; -import io.metersphere.sdk.dto.ApiDefinitionCaseDTO; -import io.metersphere.sdk.dto.FunctionalCaseMessageDTO; import io.metersphere.project.dto.MessageTemplateFieldDTO; import io.metersphere.project.dto.MessageTemplateResultDTO; import io.metersphere.sdk.constants.TemplateScene; +import io.metersphere.sdk.dto.ApiDefinitionCaseDTO; +import io.metersphere.sdk.dto.FunctionalCaseMessageDTO; import io.metersphere.sdk.dto.OptionDTO; import io.metersphere.sdk.util.Translator; import io.metersphere.system.domain.CustomField; @@ -164,9 +164,9 @@ public class NoticeTemplateService { messageTemplateFieldDTOS.add(messageTemplateFieldFollow); MessageTemplateFieldDTO messageTemplateFieldTriggerMode = new MessageTemplateFieldDTO(); messageTemplateFieldTriggerMode.setId("TRIGGER_MODE"); - messageTemplateFieldOperator.setFieldSource(NoticeConstants.FieldSource.CASE_FIELD); - messageTemplateFieldOperator.setName(Translator.get("message.trigger_mode")); - messageTemplateFieldDTOS.add(messageTemplateFieldOperator); + messageTemplateFieldTriggerMode.setFieldSource(NoticeConstants.FieldSource.CASE_FIELD); + messageTemplateFieldTriggerMode.setName(Translator.get("message.trigger_mode")); + messageTemplateFieldDTOS.add(messageTemplateFieldTriggerMode); } public MessageTemplateResultDTO getTemplateFields(String projectId, String taskType) { diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/notice/constants/NoticeConstants.java b/backend/services/system-setting/src/main/java/io/metersphere/system/notice/constants/NoticeConstants.java index 76d723a0bb..de51df3d08 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/notice/constants/NoticeConstants.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/notice/constants/NoticeConstants.java @@ -487,10 +487,22 @@ public interface NoticeConstants { } interface SensitiveField { + String id = "id"; String deleted = "deleted"; String refId = "refId"; + String latest = "latest"; String versionId = "versionId"; String reportId = "reportId"; String moduleId = "moduleId"; + String lastReportId = "lastReportId"; + String pos = "pos"; + String customNum = "customNum"; + String projectId = "projectId"; + String apiScenarioModuleId = "apiScenarioModuleId"; + String parentId = "parentId"; + String trash = "trash"; + String templateId = "templateId"; + String testResourcePoolId = "testResourcePoolId"; + String resourceId = "resourceId"; } } diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/notice/utils/MessageTemplateUtils.java b/backend/services/system-setting/src/main/java/io/metersphere/system/notice/utils/MessageTemplateUtils.java index cd5fc253ea..3478983271 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/notice/utils/MessageTemplateUtils.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/notice/utils/MessageTemplateUtils.java @@ -124,6 +124,7 @@ public class MessageTemplateUtils { /** * 获取字段来源 + * * @return FieldSourceMap */ public static Map getFieldSourceMap() { @@ -196,41 +197,100 @@ public class MessageTemplateUtils { }); } - public static String getTranslateTemplate(String taskType, String template) { + public static String getTranslateTemplate(String taskType, String template, Map customFielddMap) { if (StringUtils.equalsIgnoreCase(taskType, NoticeConstants.TaskType.JENKINS_TASK)) { if (StringUtils.isNotBlank(template) && template.contains("${name}")) { - template = template.replace("${name}", "<"+Translator.get("message.jenkins_name")+">"); + template = template.replace("${name}", "{{" + Translator.get("message.jenkins_name") + "}}"); } return template; } else { Field[] domainTemplateFields = getDomainTemplateFields(taskType); Map map = new HashMap<>(); if (StringUtils.isNotBlank(template) && template.contains("${OPERATOR}")) { - template = template.replace("${OPERATOR}", "<"+Translator.get("message.operator")+">"); + template = template.replace("${OPERATOR}", "<" + Translator.get("message.operator") + ">"); } if (StringUtils.isNotBlank(template) && template.contains("${total}")) { template = template.replace("${total}", ""); } - for (Field allField : domainTemplateFields) { - Schema annotation = allField.getAnnotation(Schema.class); - if (annotation != null) { - String description = annotation.description(); - if (StringUtils.equals(allField.getName(), "name") || StringUtils.equals(allField.getName(), "title")) { - description = "{{" + description + "}}"; - } else { - description = "<" + description + ">"; - } - map.put(allField.getName(), description); - } - } + setMap(taskType, domainTemplateFields, map); + Map defaultRelatedUserMap = getDefaultRelatedUserMap(); + map.putAll(defaultRelatedUserMap); + map.putAll(customFielddMap); return getContent(template, map); } } - public static String getTranslateSubject(String taskType, String subject) { + private static void setMap(String taskType, Field[] domainTemplateFields, Map map) { + switch (taskType) { + case NoticeConstants.TaskType.API_DEFINITION_TASK, NoticeConstants.TaskType.FUNCTIONAL_CASE_TASK -> { + putDescription(domainTemplateFields, map); + } + case NoticeConstants.TaskType.API_SCENARIO_TASK -> { + String tableName = "api_scenario_"; + putDomainName(domainTemplateFields, map, tableName); + } + case NoticeConstants.TaskType.TEST_PLAN_TASK -> { + String tableName = "test_plan_"; + putDomainName(domainTemplateFields, map, tableName); + } + case NoticeConstants.TaskType.CASE_REVIEW_TASK -> { + String tableName = "case_review_"; + putDomainName(domainTemplateFields, map, tableName); + } + case NoticeConstants.TaskType.BUG_TASK -> { + String tableName = "bug_"; + putDomainName(domainTemplateFields, map, tableName); + } + case NoticeConstants.TaskType.UI_SCENARIO_TASK -> { + String tableName = "ui_"; + putDomainName(domainTemplateFields, map, tableName); + } + case NoticeConstants.TaskType.LOAD_TEST_TASK -> { + String tableName = "load_"; + putDomainName(domainTemplateFields, map, tableName); + } + case NoticeConstants.TaskType.SCHEDULE_TASK -> { + String tableName = "schedule_"; + putDomainName(domainTemplateFields, map, tableName); + } + default ->{} + } + } + + private static void putDomainName(Field[] domainTemplateFields, Map map, String tableName) { + for (Field allField : domainTemplateFields) { + Schema annotation = allField.getAnnotation(Schema.class); + if (annotation != null) { + String description; + if (StringUtils.equals(allField.getName(), "name") || StringUtils.equals(allField.getName(), "title")) { + description = "{{" + Translator.get("message.domain."+ tableName +allField.getName()) + "}}"; + } else { + description = "<" + Translator.get("message.domain."+ tableName +allField.getName()) + ">"; + } + map.put(allField.getName(), description); + } + } + } + + private static void putDescription(Field[] domainTemplateFields, Map map) { + for (Field allField : domainTemplateFields) { + Schema annotation = allField.getAnnotation(Schema.class); + if (annotation != null) { + String description = annotation.description(); + if (StringUtils.equals(allField.getName(), "name") || StringUtils.equals(allField.getName(), "title")) { + description = "{{" + description + "}}"; + } else { + description = "<" + description + ">"; + } + map.put(allField.getName(), description); + } + } + } + + public static String getTranslateSubject(String taskType, String subject, Map customFielddMap) { if (StringUtils.equalsIgnoreCase(taskType, NoticeConstants.TaskType.JENKINS_TASK)) { if (StringUtils.isNotBlank(subject) && subject.contains("${name}")) { - subject = subject.replace("${name}", Translator.get("message.jenkins_name")); + subject = subject.replace("${name}", "{{" + Translator.get("message.jenkins_name") + "}}"); } return subject; } else { @@ -242,17 +302,13 @@ public class MessageTemplateUtils { if (StringUtils.isNotBlank(subject) && subject.contains("${total}")) { subject = subject.replace("${total}", "n"); } - for (Field allField : domainTemplateFields) { - Schema annotation = allField.getAnnotation(Schema.class); - if (annotation != null) { - String description = annotation.description(); - if (StringUtils.equals(allField.getName(), "name") || StringUtils.equals(allField.getName(), "title")) { - description = "{{" + description + "}}"; - } - map.put(allField.getName(), description); - } - } + setMap(taskType, domainTemplateFields, map); + Map defaultRelatedUserMap = getDefaultRelatedUserMap(); + map.putAll(defaultRelatedUserMap); + map.putAll(customFielddMap); return getContent(subject, map); } } + + } diff --git a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/MessageTemplateUtilsTests.java b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/MessageTemplateUtilsTests.java index d13f90e520..ac14d5e62e 100644 --- a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/MessageTemplateUtilsTests.java +++ b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/MessageTemplateUtilsTests.java @@ -1,6 +1,11 @@ package io.metersphere.system.controller; +import io.metersphere.sdk.constants.TemplateScene; +import io.metersphere.system.domain.CustomField; +import io.metersphere.system.domain.CustomFieldExample; +import io.metersphere.system.mapper.CustomFieldMapper; import io.metersphere.system.notice.utils.MessageTemplateUtils; +import jakarta.annotation.Resource; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.junit.jupiter.api.*; @@ -9,14 +14,14 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock import org.springframework.boot.test.context.SpringBootTest; import java.lang.reflect.Field; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @AutoConfigureMockMvc @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class MessageTemplateUtilsTests { + @Resource + protected CustomFieldMapper customFieldMapper; @Test @Order(1) @@ -34,6 +39,7 @@ public class MessageTemplateUtilsTests { Assertions.assertTrue(MapUtils.isNotEmpty(defaultRelatedUserMap)); Map fieldSourceMap = MessageTemplateUtils.getFieldSourceMap(); Assertions.assertTrue(MapUtils.isNotEmpty(fieldSourceMap)); + Map customFielddMap = getCustomFielddMap("100001100001"); for (String type : typeList) { Field[] domainTemplateFields = MessageTemplateUtils.getDomainTemplateFields(type); Assertions.assertNotNull(domainTemplateFields); @@ -41,9 +47,9 @@ public class MessageTemplateUtilsTests { eventMap.forEach((event, name) -> { String template = defaultTemplateMap.get(type + "_" + event); if (StringUtils.isNotBlank(template)) { - String translateTemplate = MessageTemplateUtils.getTranslateTemplate(type, template); + String translateTemplate = MessageTemplateUtils.getTranslateTemplate(type, template, customFielddMap); Assertions.assertTrue(StringUtils.isNotBlank(translateTemplate)); - String translateSubject= MessageTemplateUtils.getTranslateSubject(type, template); + String translateSubject= MessageTemplateUtils.getTranslateSubject(type, template, customFielddMap); Assertions.assertTrue(StringUtils.isNotBlank(translateSubject)); } }); @@ -51,4 +57,26 @@ public class MessageTemplateUtilsTests { } } + + /** + * 获取自定义字段的解释 + * + * @return Map + */ + public Map getCustomFielddMap(String projectId) { + Map customFielddMap = new HashMap<>(); + List sceneList = new ArrayList<>(); + sceneList.add(TemplateScene.API.toString()); + sceneList.add(TemplateScene.TEST_PLAN.toString()); + sceneList.add(TemplateScene.FUNCTIONAL.toString()); + sceneList.add(TemplateScene.BUG.toString()); + sceneList.add(TemplateScene.UI.toString()); + CustomFieldExample example = new CustomFieldExample(); + example.createCriteria().andScopeIdEqualTo(projectId).andSceneIn(sceneList); + List customFields = customFieldMapper.selectByExample(example); + for (CustomField customField : customFields) { + customFielddMap.put(customField.getName(), org.apache.commons.lang3.StringUtils.isBlank(customField.getRemark()) ? "-" : customField.getRemark()); + } + return customFielddMap; + } }