feat(系统设置): 用户管理增加启用禁用的接口
This commit is contained in:
parent
a55fbacfe0
commit
84b6e88a99
|
@ -0,0 +1,5 @@
|
|||
package io.metersphere.sdk.constants;
|
||||
|
||||
public enum UserSourceEnum {
|
||||
LOCAL, OIDC, CAS, OAUTH2
|
||||
}
|
|
@ -22,4 +22,6 @@ public interface BaseUserMapper {
|
|||
List<User> selectUserIdByEmailList(@Param("emailList") List<String> emailList);
|
||||
|
||||
List<User> selectByKeyword(String keyword);
|
||||
|
||||
List<String> selectUserIdByIdList(@Param("idList") List<String> userIdList);
|
||||
}
|
||||
|
|
|
@ -60,4 +60,10 @@
|
|||
OR email LIKE CONCAT('%', #{keyword}, '%')
|
||||
</if>
|
||||
</select>
|
||||
<select id="selectUserIdByIdList" resultType="java.lang.String">
|
||||
SELECT * from `user` WHERE id IN
|
||||
<foreach collection="idList" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
</mapper>
|
|
@ -1,6 +1,8 @@
|
|||
role.not.global.system=Role is not global system role
|
||||
role.not.contains.member=Role not contains member
|
||||
user.not.login=User not login
|
||||
user.not.exist=User not exist
|
||||
user.not.empty=User can not empty
|
||||
auth_source.id.not_blank=Auth source id must not be blank
|
||||
auth_source.status.length_range=Auth source status must be between {min} and {max} characters long
|
||||
auth_source.status.not_blank=Auth source status must not be blank
|
||||
|
|
|
@ -1,150 +1,151 @@
|
|||
role.not.global.system=\u89D2\u8272\u4E0D\u662F\u5168\u5C40\u7CFB\u7EDF\u89D2\u8272
|
||||
role.not.contains.member=\u89D2\u8272\u4E0D\u5305\u542B\u7CFB\u7EDF\u6210\u5458\u89D2\u8272
|
||||
user.not.login=\u672A\u83B7\u53D6\u5230\u767B\u5F55\u7528\u6237
|
||||
auth_source.id.not_blank=\u8BA4\u8BC1\u6E90ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
auth_source.status.length_range=\u8BA4\u8BC1\u6E90\u72B6\u6001\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
auth_source.status.not_blank=\u8BA4\u8BC1\u6E90\u72B6\u6001\u4E0D\u80FD\u4E3A\u7A7A
|
||||
license.id.not_blank=License ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.type.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.type.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
message_task.event.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u4E8B\u4EF6\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.event.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u4E8B\u4EF6\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
message_task.receiver.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u63A5\u6536\u8005\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.receiver.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u63A5\u6536\u8005\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
message_task.task_type.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u4EFB\u52A1\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.task_type.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u4EFB\u52A1\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
message_task.test_id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u6D4B\u8BD5ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.test_id.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u6D4B\u8BD5ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
message_task.project_id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u9879\u76EEID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
message_task.project_id.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1\u9879\u76EEID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
message_task_blob.id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52A1ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.id.not_blank=\u6D88\u606F\u901A\u77E5ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.type.not_blank=\u6D88\u606F\u901A\u77E5\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.type.length_range=\u6D88\u606F\u901A\u77E5\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.receiver.not_blank=\u6D88\u606F\u901A\u77E5\u63A5\u6536\u8005\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.receiver.length_range=\u6D88\u606F\u901A\u77E5\u63A5\u6536\u8005\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.title.not_blank=\u6D88\u606F\u901A\u77E5\u6807\u9898\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.title.length_range=\u6D88\u606F\u901A\u77E5\u6807\u9898\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.status.not_blank=\u6D88\u606F\u901A\u77E5\u72B6\u6001\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.status.length_range=\u6D88\u606F\u901A\u77E5\u72B6\u6001\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.operator.not_blank=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u8005\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.operator.length_range=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u8005\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.operation.not_blank=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.operation.length_range=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.resource_id.not_blank=\u6D88\u606F\u901A\u77E5\u8D44\u6E90ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.resource_id.length_range=\u6D88\u606F\u901A\u77E5\u8D44\u6E90ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.resource_type.not_blank=\u6D88\u606F\u901A\u77E5\u8D44\u6E90\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.resource_type.length_range=\u6D88\u606F\u901A\u77E5\u8D44\u6E90\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
notification.resource_name.not_blank=\u6D88\u606F\u901A\u77E5\u8D44\u6E90\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
notification.resource_name.length_range=\u6D88\u606F\u901A\u77E5\u8D44\u6E90\u540D\u79F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
novice_statistics.id.not_blank=\u65B0\u624B\u6751ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
novice_statistics.guide_step.not_blank=\u65B0\u624B\u6751\u6B65\u9AA4\u4E0D\u80FD\u4E3A\u7A7A
|
||||
novice_statistics.guide_step.length_range=\u65B0\u624B\u6751\u6B65\u9AA4\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
operating_log.id.not_blank=\u64CD\u4F5C\u65E5\u5FD7ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
operating_log.project_id.not_blank=\u64CD\u4F5C\u65E5\u5FD7\u9879\u76EEID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
operating_log.project_id.length_range=\u64CD\u4F5C\u65E5\u5FD7\u9879\u76EEID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
operating_log_resource.id.not_blank=\u64CD\u4F5C\u65E5\u5FD7\u8D44\u6E90ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
operating_log_resource.operating_log_id.not_blank=\u64CD\u4F5C\u65E5\u5FD7\u8D44\u6E90\u64CD\u4F5C\u65E5\u5FD7ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
operating_log_resource.operating_log_id.length_range=\u64CD\u4F5C\u65E5\u5FD7\u8D44\u6E90\u64CD\u4F5C\u65E5\u5FD7ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
operating_log_resource.source_id.not_blank=\u64CD\u4F5C\u65E5\u5FD7\u8D44\u6E90\u6765\u6E90ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
operating_log_resource.source_id.length_range=\u64CD\u4F5C\u65E5\u5FD7\u8D44\u6E90\u6765\u6E90ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.id.not_blank=\u63D2\u4EF6\u4E3B\u952E\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.plugin_id.not_blank=\u63D2\u4EF6ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.plugin_id.length_range=\u63D2\u4EF6ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.script_id.not_blank=\u63D2\u4EF6\u811A\u672CID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.script_id.length_range=\u63D2\u4EF6\u811A\u672CID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.clazz_name.not_blank=\u63D2\u4EF6\u7C7B\u540D\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.clazz_name.length_range=\u63D2\u4EF6\u7C7B\u540D\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.jmeter_clazz.not_blank=\u63D2\u4EF6jmeter\u7C7B\u540D\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.jmeter_clazz.length_range=\u63D2\u4EF6jmeter\u7C7B\u540D\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.source_path.not_blank=\u63D2\u4EF6\u6E90\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.source_path.length_range=\u63D2\u4EF6\u6E90\u8DEF\u5F84\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.source_name.not_blank=\u63D2\u4EF6\u6E90\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.source_name.length_range=\u63D2\u4EF6\u6E90\u540D\u79F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin.scenario.not_blank=\u63D2\u4EF6\u573A\u666F\u4E0D\u80FD\u4E3A\u7A7A
|
||||
plugin.scenario.length_range=\u63D2\u4EF6\u573A\u666F\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
plugin_blob.id.not_blank=\u63D2\u4EF6ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
quota.id.not_blank=\u914D\u989DID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
schedule.id.not_blank=\u5B9A\u65F6\u4EFB\u52A1ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
schedule.type.not_blank=\u5B9A\u65F6\u4EFB\u52A1\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
schedule.type.length_range=\u5B9A\u65F6\u4EFB\u52A1\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
schedule.value.not_blank=\u5B9A\u65F6\u4EFB\u52A1\u503C\u4E0D\u80FD\u4E3A\u7A7A
|
||||
schedule.value.length_range=\u5B9A\u65F6\u4EFB\u52A1\u503C\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
schedule.job.not_blank=\u5B9A\u65F6\u4EFB\u52A1\u4E0D\u80FD\u4E3A\u7A7A
|
||||
schedule.job.length_range=\u5B9A\u65F6\u4EFB\u52A1\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
schedule.create_user.not_blank=\u5B9A\u65F6\u4EFB\u52A1\u521B\u5EFA\u4EBA\u4E0D\u80FD\u4E3A\u7A7A
|
||||
schedule.create_user.length_range=\u5B9A\u65F6\u4EFB\u52A1\u521B\u5EFA\u4EBA\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
service_integration.id.not_blank=\u670D\u52A1\u96C6\u6210ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
service_integration.platform.not_blank=\u670D\u52A1\u96C6\u6210\u5E73\u53F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
service_integration.platform.length_range=\u670D\u52A1\u96C6\u6210\u5E73\u53F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
system_parameter.param_key.not_blank=\u7CFB\u7EDF\u53C2\u6570Key\u4E0D\u80FD\u4E3A\u7A7A
|
||||
system_parameter.type.not_blank=\u7CFB\u7EDF\u53C2\u6570\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
system_parameter.type.length_range=\u7CFB\u7EDF\u53C2\u6570\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
test_resource.id.not_blank=\u8D44\u6E90\u6C60\u8282\u70B9ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource.test_resource_pool_id.not_blank=\u8D44\u6E90\u6C60ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource.test_resource_pool_id.length_range=\u8D44\u6E90\u6C60ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
test_resource.status.not_blank=\u8D44\u6E90\u6C60\u8282\u70B9\u72B6\u6001\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource.status.length_range=\u8D44\u6E90\u6C60\u8282\u70B9\u72B6\u6001\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
test_resource_pool.id.not_blank=\u8D44\u6E90\u6C60ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource_pool.name.not_blank=\u8D44\u6E90\u6C60\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource_pool.name.length_range=\u8D44\u6E90\u6C60\u540D\u79F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
test_resource_pool.type.not_blank=\u8D44\u6E90\u6C60\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource_pool.type.length_range=\u8D44\u6E90\u6C60\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
test_resource_pool.status.not_blank=\u8D44\u6E90\u6C60\u72B6\u6001\u4E0D\u80FD\u4E3A\u7A7A
|
||||
test_resource_pool.status.length_range=\u8D44\u6E90\u6C60\u72B6\u6001\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user.id.not_blank=\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.name.not_blank=\u7528\u6237\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.name.length_range=\u7528\u6237\u540D\u79F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user.email.not_blank=\u7528\u6237email\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.email.length_range=\u7528\u6237email\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user.email.repeat=\u7528\u6237email\u5DF2\u5B58\u5728
|
||||
user.email.invalid=\u7528\u6237email\u683C\u5F0F\u4E0D\u6B63\u786E
|
||||
user.status.not_blank=\u7528\u6237\u72B6\u6001\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.status.length_range=\u7528\u6237\u72B6\u6001\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user.source.not_blank=\u7528\u6237\u6765\u6E90\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.source.length_range=\u7528\u6237\u6765\u6E90\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user.create_user.not_blank=\u7528\u6237\u521B\u5EFA\u4EBA\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.create_user.length_range=\u7528\u6237\u521B\u5EFA\u4EBA\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_extend.id.not_blank=\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_key.id.not_blank=\u7528\u6237ApiKey ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_key.create_user.not_blank=\u7528\u6237ApiKey\u521B\u5EFA\u4EBA\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_key.create_user.length_range=\u7528\u6237ApiKey\u521B\u5EFA\u4EBA\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_key.access_key.not_blank=\u7528\u6237ApiKey access key\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_key.access_key.length_range=\u7528\u6237ApiKey access key\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_key.secret_key.not_blank=\u7528\u6237ApiKey secret key\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_key.secret_key.length_range=\u7528\u6237ApiKey secret key\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user.info.not_empty=\u7528\u6237\u4FE1\u606F\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.organizationId.not_blank=\u7528\u6237\u7EC4\u7EC7\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user.projectId.not_blank=\u7528\u6237\u9879\u76EE\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.id.not_blank=\u7528\u6237\u7EC4ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.name.not_blank=\u7528\u6237\u7EC4\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.name.length_range=\u7528\u6237\u7EC4\u540D\u79F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role.system.not_blank=\u662F\u5426\u662F\u7CFB\u7EDF\u7528\u6237\u7EC4\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.system.length_range=\u662F\u5426\u662F\u7CFB\u7EDF\u7528\u6237\u7EC4\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role.type.not_blank=\u7528\u6237\u7EC4\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.type.length_range=\u7528\u6237\u7EC4\u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role.create_user.not_blank=\u7528\u6237\u7EC4\u521B\u5EFA\u4EBA\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.create_user.length_range=\u7528\u6237\u7EC4\u521B\u5EFA\u4EBA\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role.scope_id.not_blank=\u7528\u6237\u7EC4\u5E94\u7528\u8303\u56F4\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role.scope_id.length_range=\u7528\u6237\u7EC4\u5E94\u7528\u8303\u56F4\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role_permission.id.not_blank=\u7528\u6237\u7EC4\u6743\u9650ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_permission.role_id.not_blank=\u7528\u6237\u7EC4\u6743\u9650\u7528\u6237\u7EC4ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_permission.role_id.length_range=\u7528\u6237\u7EC4\u6743\u9650\u7528\u6237\u7EC4ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role_permission.permission_id.not_blank=\u7528\u6237\u7EC4\u6743\u9650\u6743\u9650ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_permission.permission_id.length_range=\u7528\u6237\u7EC4\u6743\u9650\u6743\u9650ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role_permission.module_id.not_blank=\u7528\u6237\u7EC4\u6743\u9650\u6A21\u5757ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_permission.module_id.length_range=\u7528\u6237\u7EC4\u6743\u9650\u6A21\u5757ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role_relation.id.not_blank=\u7528\u6237\u7EC4\u5173\u7CFBID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_relation.user_id.not_blank=\u7528\u6237\u7EC4\u5173\u7CFB\u7528\u6237ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_relation.user_id.length_range=\u7528\u6237\u7EC4\u5173\u7CFB\u7528\u6237ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role_relation.role_id.not_blank=\u7528\u6237\u7EC4\u5173\u7CFB\u7528\u6237\u7EC4ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_relation.role_id.length_range=\u7528\u6237\u7EC4\u5173\u7CFB\u7528\u6237\u7EC4ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
user_role_relation.source_id.not_blank=\u7528\u6237\u7EC4\u5173\u7CFB\u6765\u6E90ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
user_role_relation.source_id.length_range=\u7528\u6237\u7EC4\u5173\u7CFB\u6765\u6E90ID\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
organization.id.not_blank=\u5DE5\u4F5C\u7A7A\u95F4ID\u4E0D\u80FD\u4E3A\u7A7A
|
||||
organization.name.not_blank=\u5DE5\u4F5C\u7A7A\u95F4\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
|
||||
organization.name.length_range=\u5DE5\u4F5C\u7A7A\u95F4\u540D\u79F0\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
organization.create_user.not_blank=\u5DE5\u4F5C\u7A7A\u95F4\u521B\u5EFA\u4EBA\u4E0D\u80FD\u4E3A\u7A7A
|
||||
organization.create_user.length_range=\u5DE5\u4F5C\u7A7A\u95F4\u521B\u5EFA\u4EBA\u957F\u5EA6\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4
|
||||
member.id.not_empty=\u6210\u5458\u4E0D\u80FD\u4E3A\u7A7A
|
||||
role.not.global.system=角色不是全局系统角色
|
||||
role.not.contains.member=角色不包含系统成员角色
|
||||
user.not.login=未获取到登录用户
|
||||
user.not.empty=用户不呢为空
|
||||
user.not.exist=用户不存在
|
||||
auth_source.id.not_blank=认证源ID不能为空
|
||||
auth_source.status.length_range=认证源状态长度必须在{min}和{max}之间
|
||||
auth_source.status.not_blank=认证源状态不能为空
|
||||
license.id.not_blank=License ID不能为空
|
||||
message_task.id.not_blank=消息通知任务ID不能为空
|
||||
message_task.type.not_blank=消息通知任务类型不能为空
|
||||
message_task.type.length_range=消息通知任务类型长度必须在{min}和{max}之间
|
||||
message_task.event.not_blank=消息通知任务事件不能为空
|
||||
message_task.event.length_range=消息通知任务事件长度必须在{min}和{max}之间
|
||||
message_task.receiver.not_blank=消息通知任务接收者不能为空
|
||||
message_task.receiver.length_range=消息通知任务接收者长度必须在{min}和{max}之间
|
||||
message_task.task_type.not_blank=消息通知任务任务类型不能为空
|
||||
message_task.task_type.length_range=消息通知任务任务类型长度必须在{min}和{max}之间
|
||||
message_task.test_id.not_blank=消息通知任务测试ID不能为空
|
||||
message_task.test_id.length_range=消息通知任务测试ID长度必须在{min}和{max}之间
|
||||
message_task.project_id.not_blank=消息通知任务项目ID不能为空
|
||||
message_task.project_id.length_range=消息通知任务项目ID长度必须在{min}和{max}之间
|
||||
message_task_blob.id.not_blank=消息通知任务ID不能为空
|
||||
notification.id.not_blank=消息通知ID不能为空
|
||||
notification.type.not_blank=消息通知类型不能为空
|
||||
notification.type.length_range=消息通知类型长度必须在{min}和{max}之间
|
||||
notification.receiver.not_blank=消息通知接收者不能为空
|
||||
notification.receiver.length_range=消息通知接收者长度必须在{min}和{max}之间
|
||||
notification.title.not_blank=消息通知标题不能为空
|
||||
notification.title.length_range=消息通知标题长度必须在{min}和{max}之间
|
||||
notification.status.not_blank=消息通知状态不能为空
|
||||
notification.status.length_range=消息通知状态长度必须在{min}和{max}之间
|
||||
notification.operator.not_blank=消息通知操作者不能为空
|
||||
notification.operator.length_range=消息通知操作者长度必须在{min}和{max}之间
|
||||
notification.operation.not_blank=消息通知操作不能为空
|
||||
notification.operation.length_range=消息通知操作长度必须在{min}和{max}之间
|
||||
notification.resource_id.not_blank=消息通知资源ID不能为空
|
||||
notification.resource_id.length_range=消息通知资源ID长度必须在{min}和{max}之间
|
||||
notification.resource_type.not_blank=消息通知资源类型不能为空
|
||||
notification.resource_type.length_range=消息通知资源类型长度必须在{min}和{max}之间
|
||||
notification.resource_name.not_blank=消息通知资源名称不能为空
|
||||
notification.resource_name.length_range=消息通知资源名称长度必须在{min}和{max}之间
|
||||
novice_statistics.id.not_blank=新手村ID不能为空
|
||||
novice_statistics.guide_step.not_blank=新手村步骤不能为空
|
||||
novice_statistics.guide_step.length_range=新手村步骤长度必须在{min}和{max}之间
|
||||
operating_log.id.not_blank=操作日志ID不能为空
|
||||
operating_log.project_id.not_blank=操作日志项目ID不能为空
|
||||
operating_log.project_id.length_range=操作日志项目ID长度必须在{min}和{max}之间
|
||||
operating_log_resource.id.not_blank=操作日志资源ID不能为空
|
||||
operating_log_resource.operating_log_id.not_blank=操作日志资源操作日志ID不能为空
|
||||
operating_log_resource.operating_log_id.length_range=操作日志资源操作日志ID长度必须在{min}和{max}之间
|
||||
operating_log_resource.source_id.not_blank=操作日志资源来源ID不能为空
|
||||
operating_log_resource.source_id.length_range=操作日志资源来源ID长度必须在{min}和{max}之间
|
||||
plugin.id.not_blank=插件主键不能为空
|
||||
plugin.plugin_id.not_blank=插件ID不能为空
|
||||
plugin.plugin_id.length_range=插件ID长度必须在{min}和{max}之间
|
||||
plugin.script_id.not_blank=插件脚本ID不能为空
|
||||
plugin.script_id.length_range=插件脚本ID长度必须在{min}和{max}之间
|
||||
plugin.clazz_name.not_blank=插件类名不能为空
|
||||
plugin.clazz_name.length_range=插件类名长度必须在{min}和{max}之间
|
||||
plugin.jmeter_clazz.not_blank=插件jmeter类名不能为空
|
||||
plugin.jmeter_clazz.length_range=插件jmeter类名长度必须在{min}和{max}之间
|
||||
plugin.source_path.not_blank=插件源路径不能为空
|
||||
plugin.source_path.length_range=插件源路径长度必须在{min}和{max}之间
|
||||
plugin.source_name.not_blank=插件源名称不能为空
|
||||
plugin.source_name.length_range=插件源名称长度必须在{min}和{max}之间
|
||||
plugin.scenario.not_blank=插件场景不能为空
|
||||
plugin.scenario.length_range=插件场景长度必须在{min}和{max}之间
|
||||
plugin_blob.id.not_blank=插件ID不能为空
|
||||
quota.id.not_blank=配额ID不能为空
|
||||
schedule.id.not_blank=定时任务ID不能为空
|
||||
schedule.type.not_blank=定时任务类型不能为空
|
||||
schedule.type.length_range=定时任务类型长度必须在{min}和{max}之间
|
||||
schedule.value.not_blank=定时任务值不能为空
|
||||
schedule.value.length_range=定时任务值长度必须在{min}和{max}之间
|
||||
schedule.job.not_blank=定时任务不能为空
|
||||
schedule.job.length_range=定时任务长度必须在{min}和{max}之间
|
||||
schedule.create_user.not_blank=定时任务创建人不能为空
|
||||
schedule.create_user.length_range=定时任务创建人长度必须在{min}和{max}之间
|
||||
service_integration.id.not_blank=服务集成ID不能为空
|
||||
service_integration.platform.not_blank=服务集成平台不能为空
|
||||
service_integration.platform.length_range=服务集成平台长度必须在{min}和{max}之间
|
||||
system_parameter.param_key.not_blank=系统参数Key不能为空
|
||||
system_parameter.type.not_blank=系统参数类型不能为空
|
||||
system_parameter.type.length_range=系统参数类型长度必须在{min}和{max}之间
|
||||
test_resource.id.not_blank=资源池节点ID不能为空
|
||||
test_resource.test_resource_pool_id.not_blank=资源池ID不能为空
|
||||
test_resource.test_resource_pool_id.length_range=资源池ID长度必须在{min}和{max}之间
|
||||
test_resource.status.not_blank=资源池节点状态不能为空
|
||||
test_resource.status.length_range=资源池节点状态长度必须在{min}和{max}之间
|
||||
test_resource_pool.id.not_blank=资源池ID不能为空
|
||||
test_resource_pool.name.not_blank=资源池名称不能为空
|
||||
test_resource_pool.name.length_range=资源池名称长度必须在{min}和{max}之间
|
||||
test_resource_pool.type.not_blank=资源池类型不能为空
|
||||
test_resource_pool.type.length_range=资源池类型长度必须在{min}和{max}之间
|
||||
test_resource_pool.status.not_blank=资源池状态不能为空
|
||||
test_resource_pool.status.length_range=资源池状态长度必须在{min}和{max}之间
|
||||
user.id.not_blank=用户ID不能为空
|
||||
user.name.not_blank=用户名称不能为空
|
||||
user.name.length_range=用户名称长度必须在{min}和{max}之间
|
||||
user.email.not_blank=用户email不能为空
|
||||
user.email.length_range=用户email长度必须在{min}和{max}之间
|
||||
user.email.repeat=用户email已存在
|
||||
user.email.invalid=用户email格式不正确
|
||||
user.status.not_blank=用户状态不能为空
|
||||
user.status.length_range=用户状态长度必须在{min}和{max}之间
|
||||
user.source.not_blank=用户来源不能为空
|
||||
user.source.length_range=用户来源长度必须在{min}和{max}之间
|
||||
user.create_user.not_blank=用户创建人不能为空
|
||||
user.create_user.length_range=用户创建人长度必须在{min}和{max}之间
|
||||
user_extend.id.not_blank=用户ID不能为空
|
||||
user_key.id.not_blank=用户ApiKey ID不能为空
|
||||
user_key.create_user.not_blank=用户ApiKey创建人不能为空
|
||||
user_key.create_user.length_range=用户ApiKey创建人长度必须在{min}和{max}之间
|
||||
user_key.access_key.not_blank=用户ApiKey access key不能为空
|
||||
user_key.access_key.length_range=用户ApiKey access key长度必须在{min}和{max}之间
|
||||
user_key.secret_key.not_blank=用户ApiKey secret key不能为空
|
||||
user_key.secret_key.length_range=用户ApiKey secret key长度必须在{min}和{max}之间
|
||||
user.info.not_empty=用户信息不能为空
|
||||
user.organizationId.not_blank=用户组织不能为空
|
||||
user.projectId.not_blank=用户项目不能为空
|
||||
user_role.id.not_blank=用户组ID不能为空
|
||||
user_role.name.not_blank=用户组名称不能为空
|
||||
user_role.name.length_range=用户组名称长度必须在{min}和{max}之间
|
||||
user_role.system.not_blank=是否是系统用户组不能为空
|
||||
user_role.system.length_range=是否是系统用户组长度必须在{min}和{max}之间
|
||||
user_role.type.not_blank=用户组类型不能为空
|
||||
user_role.type.length_range=用户组类型长度必须在{min}和{max}之间
|
||||
user_role.create_user.not_blank=用户组创建人不能为空
|
||||
user_role.create_user.length_range=用户组创建人长度必须在{min}和{max}之间
|
||||
user_role.scope_id.not_blank=用户组应用范围不能为空
|
||||
user_role.scope_id.length_range=用户组应用范围长度必须在{min}和{max}之间
|
||||
user_role_permission.id.not_blank=用户组权限ID不能为空
|
||||
user_role_permission.role_id.not_blank=用户组权限用户组ID不能为空
|
||||
user_role_permission.role_id.length_range=用户组权限用户组ID长度必须在{min}和{max}之间
|
||||
user_role_permission.permission_id.not_blank=用户组权限权限ID不能为空
|
||||
user_role_permission.permission_id.length_range=用户组权限权限ID长度必须在{min}和{max}之间
|
||||
user_role_permission.module_id.not_blank=用户组权限模块ID不能为空
|
||||
user_role_permission.module_id.length_range=用户组权限模块ID长度必须在{min}和{max}之间
|
||||
user_role_relation.id.not_blank=用户组关系ID不能为空
|
||||
user_role_relation.user_id.not_blank=用户组关系用户ID不能为空
|
||||
user_role_relation.user_id.length_range=用户组关系用户ID长度必须在{min}和{max}之间
|
||||
user_role_relation.role_id.not_blank=用户组关系用户组ID不能为空
|
||||
user_role_relation.role_id.length_range=用户组关系用户组ID长度必须在{min}和{max}之间
|
||||
user_role_relation.source_id.not_blank=用户组关系来源ID不能为空
|
||||
user_role_relation.source_id.length_range=用户组关系来源ID长度必须在{min}和{max}之间
|
||||
organization.id.not_blank=工作空间ID不能为空
|
||||
organization.name.not_blank=工作空间名称不能为空
|
||||
organization.name.length_range=工作空间名称长度必须在{min}和{max}之间
|
||||
organization.create_user.not_blank=工作空间创建人不能为空
|
||||
organization.create_user.length_range=工作空间创建人长度必须在{min}和{max}之间
|
|
@ -1,150 +1,151 @@
|
|||
role.not.global.system=\u89D2\u8272\u4E0D\u662F\u70BA\u5168\u5C40\u7CFB\u7D71\u89D2\u8272
|
||||
role.not.contains.member=\u89D2\u8272\u4E0D\u5305\u542B\u7CFB\u7D71\u6210\u54E1\u89D2\u8272
|
||||
user.not.login=\u672A\u7372\u53D6\u5230\u767B\u9304\u7528\u6236
|
||||
auth_source.id.not_blank=\u8A8D\u8B49\u6E90ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
auth_source.status.length_range=\u8A8D\u8B49\u6E90\u72C0\u614B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
auth_source.status.not_blank=\u8A8D\u8B49\u6E90\u72C0\u614B\u4E0D\u80FD\u70BA\u7A7A
|
||||
license.id.not_blank=License ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.type.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.type.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
message_task.event.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u4E8B\u4EF6\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.event.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u4E8B\u4EF6\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
message_task.receiver.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u63A5\u6536\u8005\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.receiver.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u63A5\u6536\u8005\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
message_task.task_type.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u4EFB\u52D9\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.task_type.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u4EFB\u52D9\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
message_task.test_id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u6E2C\u8A66ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.test_id.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u6E2C\u8A66ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
message_task.project_id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u9805\u76EEID\u4E0D\u80FD\u70BA\u7A7A
|
||||
message_task.project_id.length_range=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9\u9805\u76EEID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
message_task_blob.id.not_blank=\u6D88\u606F\u901A\u77E5\u4EFB\u52D9ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.id.not_blank=\u6D88\u606F\u901A\u77E5ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.type.not_blank=\u6D88\u606F\u901A\u77E5\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.type.length_range=\u6D88\u606F\u901A\u77E5\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.receiver.not_blank=\u6D88\u606F\u901A\u77E5\u63A5\u6536\u8005\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.receiver.length_range=\u6D88\u606F\u901A\u77E5\u63A5\u6536\u8005\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.title.not_blank=\u6D88\u606F\u901A\u77E5\u6A19\u984C\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.title.length_range=\u6D88\u606F\u901A\u77E5\u6A19\u984C\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.status.not_blank=\u6D88\u606F\u901A\u77E5\u72C0\u614B\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.status.length_range=\u6D88\u606F\u901A\u77E5\u72C0\u614B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.operator.not_blank=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u8005\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.operator.length_range=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u8005\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.operation.not_blank=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.operation.length_range=\u6D88\u606F\u901A\u77E5\u64CD\u4F5C\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.resource_id.not_blank=\u6D88\u606F\u901A\u77E5\u8CC7\u6E90ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.resource_id.length_range=\u6D88\u606F\u901A\u77E5\u8CC7\u6E90ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.resource_type.not_blank=\u6D88\u606F\u901A\u77E5\u8CC7\u6E90\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.resource_type.length_range=\u6D88\u606F\u901A\u77E5\u8CC7\u6E90\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
notification.resource_name.not_blank=\u6D88\u606F\u901A\u77E5\u8CC7\u6E90\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A
|
||||
notification.resource_name.length_range=\u6D88\u606F\u901A\u77E5\u8CC7\u6E90\u540D\u7A31\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
novice_statistics.id.not_blank=\u65B0\u624B\u6751ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
novice_statistics.guide_step.not_blank=\u65B0\u624B\u6751\u6B65\u9A5F\u4E0D\u80FD\u70BA\u7A7A
|
||||
novice_statistics.guide_step.length_range=\u65B0\u624B\u6751\u6B65\u9A5F\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
operating_log.id.not_blank=\u64CD\u4F5C\u65E5\u8A8CID\u4E0D\u80FD\u70BA\u7A7A
|
||||
operating_log.project_id.not_blank=\u64CD\u4F5C\u65E5\u8A8C\u9805\u76EEID\u4E0D\u80FD\u70BA\u7A7A
|
||||
operating_log.project_id.length_range=\u64CD\u4F5C\u65E5\u8A8C\u9805\u76EEID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
operating_log_resource.id.not_blank=\u64CD\u4F5C\u65E5\u8A8C\u8CC7\u6E90ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
operating_log_resource.operating_log_id.not_blank=\u64CD\u4F5C\u65E5\u8A8C\u8CC7\u6E90\u64CD\u4F5C\u65E5\u8A8CID\u4E0D\u80FD\u70BA\u7A7A
|
||||
operating_log_resource.operating_log_id.length_range=\u64CD\u4F5C\u65E5\u8A8C\u8CC7\u6E90\u64CD\u4F5C\u65E5\u8A8CID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
operating_log_resource.source_id.not_blank=\u64CD\u4F5C\u65E5\u8A8C\u8CC7\u6E90\u4F86\u6E90ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
operating_log_resource.source_id.length_range=\u64CD\u4F5C\u65E5\u8A8C\u8CC7\u6E90\u4F86\u6E90ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.id.not_blank=\u63D2\u4EF6\u4E3B\u9375\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.plugin_id.not_blank=\u63D2\u4EF6ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.plugin_id.length_range=\u63D2\u4EF6ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.script_id.not_blank=\u63D2\u4EF6\u8173\u672CID\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.script_id.length_range=\u63D2\u4EF6\u8173\u672CID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.clazz_name.not_blank=\u63D2\u4EF6\u985E\u540D\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.clazz_name.length_range=\u63D2\u4EF6\u985E\u540D\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.jmeter_clazz.not_blank=\u63D2\u4EF6jmeter\u985E\u540D\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.jmeter_clazz.length_range=\u63D2\u4EF6jmeter\u985E\u540D\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.source_path.not_blank=\u63D2\u4EF6\u6E90\u8DEF\u5F91\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.source_path.length_range=\u63D2\u4EF6\u6E90\u8DEF\u5F91\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.source_name.not_blank=\u63D2\u4EF6\u6E90\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.source_name.length_range=\u63D2\u4EF6\u6E90\u540D\u7A31\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin.scenario.not_blank=\u63D2\u4EF6\u5834\u666F\u4E0D\u80FD\u70BA\u7A7A
|
||||
plugin.scenario.length_range=\u63D2\u4EF6\u5834\u666F\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
plugin_blob.id.not_blank=\u63D2\u4EF6ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
quota.id.not_blank=\u914D\u984DID\u4E0D\u80FD\u70BA\u7A7A
|
||||
schedule.id.not_blank=\u5B9A\u6642\u4EFB\u52D9ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
schedule.type.not_blank=\u5B9A\u6642\u4EFB\u52D9\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
schedule.type.length_range=\u5B9A\u6642\u4EFB\u52D9\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
schedule.value.not_blank=\u5B9A\u6642\u4EFB\u52D9\u503C\u4E0D\u80FD\u70BA\u7A7A
|
||||
schedule.value.length_range=\u5B9A\u6642\u4EFB\u52D9\u503C\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
schedule.job.not_blank=\u5B9A\u6642\u4EFB\u52D9\u4E0D\u80FD\u70BA\u7A7A
|
||||
schedule.job.length_range=\u5B9A\u6642\u4EFB\u52D9\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
schedule.create_user.not_blank=\u5B9A\u6642\u4EFB\u52D9\u5275\u5EFA\u4EBA\u4E0D\u80FD\u70BA\u7A7A
|
||||
schedule.create_user.length_range=\u5B9A\u6642\u4EFB\u52D9\u5275\u5EFA\u4EBA\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
service_integration.id.not_blank=\u670D\u52D9\u96C6\u6210ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
service_integration.platform.not_blank=\u670D\u52D9\u96C6\u6210\u5E73\u53F0\u4E0D\u80FD\u70BA\u7A7A
|
||||
service_integration.platform.length_range=\u670D\u52D9\u96C6\u6210\u5E73\u53F0\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
system_parameter.param_key.not_blank=\u7CFB\u7D71\u53C3\u6578Key\u4E0D\u80FD\u70BA\u7A7A
|
||||
system_parameter.type.not_blank=\u7CFB\u7D71\u53C3\u6578\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
system_parameter.type.length_range=\u7CFB\u7D71\u53C3\u6578\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
test_resource.id.not_blank=\u8CC7\u6E90\u6C60\u7BC0\u9EDEID\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource.test_resource_pool_id.not_blank=\u8CC7\u6E90\u6C60ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource.test_resource_pool_id.length_range=\u8CC7\u6E90\u6C60ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
test_resource.status.not_blank=\u8CC7\u6E90\u6C60\u7BC0\u9EDE\u72C0\u614B\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource.status.length_range=\u8CC7\u6E90\u6C60\u7BC0\u9EDE\u72C0\u614B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
test_resource_pool.id.not_blank=\u8CC7\u6E90\u6C60ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource_pool.name.not_blank=\u8CC7\u6E90\u6C60\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource_pool.name.length_range=\u8CC7\u6E90\u6C60\u540D\u7A31\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
test_resource_pool.type.not_blank=\u8CC7\u6E90\u6C60\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource_pool.type.length_range=\u8CC7\u6E90\u6C60\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
test_resource_pool.status.not_blank=\u8CC7\u6E90\u6C60\u72C0\u614B\u4E0D\u80FD\u70BA\u7A7A
|
||||
test_resource_pool.status.length_range=\u8CC7\u6E90\u6C60\u72C0\u614B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user.id.not_blank=\u7528\u6236ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.name.not_blank=\u7528\u6236\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.name.length_range=\u7528\u6236\u540D\u7A31\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user.email.not_blank=\u7528\u6236email\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.email.length_range=\u7528\u6236email\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user.email.repeat=\u7528\u6236email\u5DF2\u5B58\u5728
|
||||
user.email.invalid=\u7528\u6236email\u683C\u5F0F\u4E0D\u6B63\u78BA
|
||||
user.status.not_blank=\u7528\u6236\u72C0\u614B\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.status.length_range=\u7528\u6236\u72C0\u614B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user.source.not_blank=\u7528\u6236\u4F86\u6E90\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.source.length_range=\u7528\u6236\u4F86\u6E90\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user.create_user.not_blank=\u7528\u6236\u5275\u5EFA\u4EBA\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.create_user.length_range=\u7528\u6236\u5275\u5EFA\u4EBA\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_extend.id.not_blank=\u7528\u6236ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_key.id.not_blank=\u7528\u6236ApiKey ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_key.create_user.not_blank=\u7528\u6236ApiKey\u5275\u5EFA\u4EBA\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_key.create_user.length_range=\u7528\u6236ApiKey\u5275\u5EFA\u4EBA\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_key.access_key.not_blank=\u7528\u6236ApiKey access key\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_key.access_key.length_range=\u7528\u6236ApiKey access key\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_key.secret_key.not_blank=\u7528\u6236ApiKey secret key\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_key.secret_key.length_range=\u7528\u6236ApiKey secret key\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user.info.not_empty=\u7528\u6236\u4FE1\u606F\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.organizationId.not_blank=\u7528\u6236\u7D44\u7E54\u4E0D\u80FD\u70BA\u7A7A
|
||||
user.projectId.not_blank=\u7528\u6236\u9805\u76EE\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.id.not_blank=\u7528\u6236\u7D44ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.name.not_blank=\u7528\u6236\u7D44\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.name.length_range=\u7528\u6236\u7D44\u540D\u7A31\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role.system.not_blank=\u662F\u5426\u662F\u7CFB\u7D71\u7528\u6236\u7D44\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.system.length_range=\u662F\u5426\u662F\u7CFB\u7D71\u7528\u6236\u7D44\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role.type.not_blank=\u7528\u6236\u7D44\u985E\u578B\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.type.length_range=\u7528\u6236\u7D44\u985E\u578B\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role.create_user.not_blank=\u7528\u6236\u7D44\u5275\u5EFA\u4EBA\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.create_user.length_range=\u7528\u6236\u7D44\u5275\u5EFA\u4EBA\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role.scope_id.not_blank=\u7528\u6236\u7D44\u61C9\u7528\u7BC4\u570D\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role.scope_id.length_range=\u7528\u6236\u7D44\u61C9\u7528\u7BC4\u570D\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role_permission.id.not_blank=\u7528\u6236\u7D44\u6B0A\u9650ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_permission.role_id.not_blank=\u7528\u6236\u7D44\u6B0A\u9650\u7528\u6236\u7D44ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_permission.role_id.length_range=\u7528\u6236\u7D44\u6B0A\u9650\u7528\u6236\u7D44ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role_permission.permission_id.not_blank=\u7528\u6236\u7D44\u6B0A\u9650\u6B0A\u9650ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_permission.permission_id.length_range=\u7528\u6236\u7D44\u6B0A\u9650\u6B0A\u9650ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role_permission.module_id.not_blank=\u7528\u6236\u7D44\u6B0A\u9650\u6A21\u584AID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_permission.module_id.length_range=\u7528\u6236\u7D44\u6B0A\u9650\u6A21\u584AID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role_relation.id.not_blank=\u7528\u6236\u7D44\u95DC\u4FC2ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_relation.user_id.not_blank=\u7528\u6236\u7D44\u95DC\u4FC2\u7528\u6236ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_relation.user_id.length_range=\u7528\u6236\u7D44\u95DC\u4FC2\u7528\u6236ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role_relation.role_id.not_blank=\u7528\u6236\u7D44\u95DC\u4FC2\u7528\u6236\u7D44ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_relation.role_id.length_range=\u7528\u6236\u7D44\u95DC\u4FC2\u7528\u6236\u7D44ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
user_role_relation.source_id.not_blank=\u7528\u6236\u7D44\u95DC\u4FC2\u4F86\u6E90ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
user_role_relation.source_id.length_range=\u7528\u6236\u7D44\u95DC\u4FC2\u4F86\u6E90ID\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
organization.id.not_blank=\u5DE5\u4F5C\u7A7A\u9593ID\u4E0D\u80FD\u70BA\u7A7A
|
||||
organization.name.not_blank=\u5DE5\u4F5C\u7A7A\u9593\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A
|
||||
organization.name.length_range=\u5DE5\u4F5C\u7A7A\u9593\u540D\u7A31\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
organization.create_user.not_blank=\u5DE5\u4F5C\u7A7A\u9593\u5275\u5EFA\u4EBA\u4E0D\u80FD\u70BA\u7A7A
|
||||
organization.create_user.length_range=\u5DE5\u4F5C\u7A7A\u9593\u5275\u5EFA\u4EBA\u9577\u5EA6\u5FC5\u9808\u5728{min}\u548C{max}\u4E4B\u9593
|
||||
member.id.not_empty=\u6210\u54E1\u4E0D\u80FD\u7232\u7A7A
|
||||
role.not.global.system=角色不是為全局系統角色
|
||||
role.not.contains.member=角色不包含系統成員角色
|
||||
user.not.login=未獲取到登錄用戶
|
||||
user.not.empty=用戶不呢為空
|
||||
user.not.exist=用戶不存在
|
||||
auth_source.id.not_blank=認證源ID不能為空
|
||||
auth_source.status.length_range=認證源狀態長度必須在{min}和{max}之間
|
||||
auth_source.status.not_blank=認證源狀態不能為空
|
||||
license.id.not_blank=License ID不能為空
|
||||
message_task.id.not_blank=消息通知任務ID不能為空
|
||||
message_task.type.not_blank=消息通知任務類型不能為空
|
||||
message_task.type.length_range=消息通知任務類型長度必須在{min}和{max}之間
|
||||
message_task.event.not_blank=消息通知任務事件不能為空
|
||||
message_task.event.length_range=消息通知任務事件長度必須在{min}和{max}之間
|
||||
message_task.receiver.not_blank=消息通知任務接收者不能為空
|
||||
message_task.receiver.length_range=消息通知任務接收者長度必須在{min}和{max}之間
|
||||
message_task.task_type.not_blank=消息通知任務任務類型不能為空
|
||||
message_task.task_type.length_range=消息通知任務任務類型長度必須在{min}和{max}之間
|
||||
message_task.test_id.not_blank=消息通知任務測試ID不能為空
|
||||
message_task.test_id.length_range=消息通知任務測試ID長度必須在{min}和{max}之間
|
||||
message_task.project_id.not_blank=消息通知任務項目ID不能為空
|
||||
message_task.project_id.length_range=消息通知任務項目ID長度必須在{min}和{max}之間
|
||||
message_task_blob.id.not_blank=消息通知任務ID不能為空
|
||||
notification.id.not_blank=消息通知ID不能為空
|
||||
notification.type.not_blank=消息通知類型不能為空
|
||||
notification.type.length_range=消息通知類型長度必須在{min}和{max}之間
|
||||
notification.receiver.not_blank=消息通知接收者不能為空
|
||||
notification.receiver.length_range=消息通知接收者長度必須在{min}和{max}之間
|
||||
notification.title.not_blank=消息通知標題不能為空
|
||||
notification.title.length_range=消息通知標題長度必須在{min}和{max}之間
|
||||
notification.status.not_blank=消息通知狀態不能為空
|
||||
notification.status.length_range=消息通知狀態長度必須在{min}和{max}之間
|
||||
notification.operator.not_blank=消息通知操作者不能為空
|
||||
notification.operator.length_range=消息通知操作者長度必須在{min}和{max}之間
|
||||
notification.operation.not_blank=消息通知操作不能為空
|
||||
notification.operation.length_range=消息通知操作長度必須在{min}和{max}之間
|
||||
notification.resource_id.not_blank=消息通知資源ID不能為空
|
||||
notification.resource_id.length_range=消息通知資源ID長度必須在{min}和{max}之間
|
||||
notification.resource_type.not_blank=消息通知資源類型不能為空
|
||||
notification.resource_type.length_range=消息通知資源類型長度必須在{min}和{max}之間
|
||||
notification.resource_name.not_blank=消息通知資源名稱不能為空
|
||||
notification.resource_name.length_range=消息通知資源名稱長度必須在{min}和{max}之間
|
||||
novice_statistics.id.not_blank=新手村ID不能為空
|
||||
novice_statistics.guide_step.not_blank=新手村步驟不能為空
|
||||
novice_statistics.guide_step.length_range=新手村步驟長度必須在{min}和{max}之間
|
||||
operating_log.id.not_blank=操作日誌ID不能為空
|
||||
operating_log.project_id.not_blank=操作日誌項目ID不能為空
|
||||
operating_log.project_id.length_range=操作日誌項目ID長度必須在{min}和{max}之間
|
||||
operating_log_resource.id.not_blank=操作日誌資源ID不能為空
|
||||
operating_log_resource.operating_log_id.not_blank=操作日誌資源操作日誌ID不能為空
|
||||
operating_log_resource.operating_log_id.length_range=操作日誌資源操作日誌ID長度必須在{min}和{max}之間
|
||||
operating_log_resource.source_id.not_blank=操作日誌資源來源ID不能為空
|
||||
operating_log_resource.source_id.length_range=操作日誌資源來源ID長度必須在{min}和{max}之間
|
||||
plugin.id.not_blank=插件主鍵不能為空
|
||||
plugin.plugin_id.not_blank=插件ID不能為空
|
||||
plugin.plugin_id.length_range=插件ID長度必須在{min}和{max}之間
|
||||
plugin.script_id.not_blank=插件腳本ID不能為空
|
||||
plugin.script_id.length_range=插件腳本ID長度必須在{min}和{max}之間
|
||||
plugin.clazz_name.not_blank=插件類名不能為空
|
||||
plugin.clazz_name.length_range=插件類名長度必須在{min}和{max}之間
|
||||
plugin.jmeter_clazz.not_blank=插件jmeter類名不能為空
|
||||
plugin.jmeter_clazz.length_range=插件jmeter類名長度必須在{min}和{max}之間
|
||||
plugin.source_path.not_blank=插件源路徑不能為空
|
||||
plugin.source_path.length_range=插件源路徑長度必須在{min}和{max}之間
|
||||
plugin.source_name.not_blank=插件源名稱不能為空
|
||||
plugin.source_name.length_range=插件源名稱長度必須在{min}和{max}之間
|
||||
plugin.scenario.not_blank=插件場景不能為空
|
||||
plugin.scenario.length_range=插件場景長度必須在{min}和{max}之間
|
||||
plugin_blob.id.not_blank=插件ID不能為空
|
||||
quota.id.not_blank=配額ID不能為空
|
||||
schedule.id.not_blank=定時任務ID不能為空
|
||||
schedule.type.not_blank=定時任務類型不能為空
|
||||
schedule.type.length_range=定時任務類型長度必須在{min}和{max}之間
|
||||
schedule.value.not_blank=定時任務值不能為空
|
||||
schedule.value.length_range=定時任務值長度必須在{min}和{max}之間
|
||||
schedule.job.not_blank=定時任務不能為空
|
||||
schedule.job.length_range=定時任務長度必須在{min}和{max}之間
|
||||
schedule.create_user.not_blank=定時任務創建人不能為空
|
||||
schedule.create_user.length_range=定時任務創建人長度必須在{min}和{max}之間
|
||||
service_integration.id.not_blank=服務集成ID不能為空
|
||||
service_integration.platform.not_blank=服務集成平台不能為空
|
||||
service_integration.platform.length_range=服務集成平台長度必須在{min}和{max}之間
|
||||
system_parameter.param_key.not_blank=系統參數Key不能為空
|
||||
system_parameter.type.not_blank=系統參數類型不能為空
|
||||
system_parameter.type.length_range=系統參數類型長度必須在{min}和{max}之間
|
||||
test_resource.id.not_blank=資源池節點ID不能為空
|
||||
test_resource.test_resource_pool_id.not_blank=資源池ID不能為空
|
||||
test_resource.test_resource_pool_id.length_range=資源池ID長度必須在{min}和{max}之間
|
||||
test_resource.status.not_blank=資源池節點狀態不能為空
|
||||
test_resource.status.length_range=資源池節點狀態長度必須在{min}和{max}之間
|
||||
test_resource_pool.id.not_blank=資源池ID不能為空
|
||||
test_resource_pool.name.not_blank=資源池名稱不能為空
|
||||
test_resource_pool.name.length_range=資源池名稱長度必須在{min}和{max}之間
|
||||
test_resource_pool.type.not_blank=資源池類型不能為空
|
||||
test_resource_pool.type.length_range=資源池類型長度必須在{min}和{max}之間
|
||||
test_resource_pool.status.not_blank=資源池狀態不能為空
|
||||
test_resource_pool.status.length_range=資源池狀態長度必須在{min}和{max}之間
|
||||
user.id.not_blank=用戶ID不能為空
|
||||
user.name.not_blank=用戶名稱不能為空
|
||||
user.name.length_range=用戶名稱長度必須在{min}和{max}之間
|
||||
user.email.not_blank=用戶email不能為空
|
||||
user.email.length_range=用戶email長度必須在{min}和{max}之間
|
||||
user.email.repeat=用戶email已存在
|
||||
user.email.invalid=用戶email格式不正確
|
||||
user.status.not_blank=用戶狀態不能為空
|
||||
user.status.length_range=用戶狀態長度必須在{min}和{max}之間
|
||||
user.source.not_blank=用戶來源不能為空
|
||||
user.source.length_range=用戶來源長度必須在{min}和{max}之間
|
||||
user.create_user.not_blank=用戶創建人不能為空
|
||||
user.create_user.length_range=用戶創建人長度必須在{min}和{max}之間
|
||||
user_extend.id.not_blank=用戶ID不能為空
|
||||
user_key.id.not_blank=用戶ApiKey ID不能為空
|
||||
user_key.create_user.not_blank=用戶ApiKey創建人不能為空
|
||||
user_key.create_user.length_range=用戶ApiKey創建人長度必須在{min}和{max}之間
|
||||
user_key.access_key.not_blank=用戶ApiKey access key不能為空
|
||||
user_key.access_key.length_range=用戶ApiKey access key長度必須在{min}和{max}之間
|
||||
user_key.secret_key.not_blank=用戶ApiKey secret key不能為空
|
||||
user_key.secret_key.length_range=用戶ApiKey secret key長度必須在{min}和{max}之間
|
||||
user.info.not_empty=用戶信息不能為空
|
||||
user.organizationId.not_blank=用戶組織不能為空
|
||||
user.projectId.not_blank=用戶項目不能為空
|
||||
user_role.id.not_blank=用戶組ID不能為空
|
||||
user_role.name.not_blank=用戶組名稱不能為空
|
||||
user_role.name.length_range=用戶組名稱長度必須在{min}和{max}之間
|
||||
user_role.system.not_blank=是否是系統用戶組不能為空
|
||||
user_role.system.length_range=是否是系統用戶組長度必須在{min}和{max}之間
|
||||
user_role.type.not_blank=用戶組類型不能為空
|
||||
user_role.type.length_range=用戶組類型長度必須在{min}和{max}之間
|
||||
user_role.create_user.not_blank=用戶組創建人不能為空
|
||||
user_role.create_user.length_range=用戶組創建人長度必須在{min}和{max}之間
|
||||
user_role.scope_id.not_blank=用戶組應用範圍不能為空
|
||||
user_role.scope_id.length_range=用戶組應用範圍長度必須在{min}和{max}之間
|
||||
user_role_permission.id.not_blank=用戶組權限ID不能為空
|
||||
user_role_permission.role_id.not_blank=用戶組權限用戶組ID不能為空
|
||||
user_role_permission.role_id.length_range=用戶組權限用戶組ID長度必須在{min}和{max}之間
|
||||
user_role_permission.permission_id.not_blank=用戶組權限權限ID不能為空
|
||||
user_role_permission.permission_id.length_range=用戶組權限權限ID長度必須在{min}和{max}之間
|
||||
user_role_permission.module_id.not_blank=用戶組權限模塊ID不能為空
|
||||
user_role_permission.module_id.length_range=用戶組權限模塊ID長度必須在{min}和{max}之間
|
||||
user_role_relation.id.not_blank=用戶組關係ID不能為空
|
||||
user_role_relation.user_id.not_blank=用戶組關係用戶ID不能為空
|
||||
user_role_relation.user_id.length_range=用戶組關係用戶ID長度必須在{min}和{max}之間
|
||||
user_role_relation.role_id.not_blank=用戶組關係用戶組ID不能為空
|
||||
user_role_relation.role_id.length_range=用戶組關係用戶組ID長度必須在{min}和{max}之間
|
||||
user_role_relation.source_id.not_blank=用戶組關係來源ID不能為空
|
||||
user_role_relation.source_id.length_range=用戶組關係來源ID長度必須在{min}和{max}之間
|
||||
organization.id.not_blank=工作空間ID不能為空
|
||||
organization.name.not_blank=工作空間名稱不能為空
|
||||
organization.name.length_range=工作空間名稱長度必須在{min}和{max}之間
|
||||
organization.create_user.not_blank=工作空間創建人不能為空
|
||||
organization.create_user.length_range=工作空間創建人長度必須在{min}和{max}之間
|
|
@ -4,6 +4,7 @@ package io.metersphere.system.controller;
|
|||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.sdk.constants.UserSourceEnum;
|
||||
import io.metersphere.sdk.dto.BasePageRequest;
|
||||
import io.metersphere.sdk.dto.UserDTO;
|
||||
import io.metersphere.sdk.log.annotation.RequestLog;
|
||||
|
@ -13,9 +14,10 @@ import io.metersphere.sdk.util.PageUtils;
|
|||
import io.metersphere.sdk.util.Pager;
|
||||
import io.metersphere.sdk.util.SessionUtils;
|
||||
import io.metersphere.system.dto.UserBatchCreateDTO;
|
||||
import io.metersphere.system.dto.UserEditEnableRequest;
|
||||
import io.metersphere.system.dto.UserEditRequest;
|
||||
import io.metersphere.system.dto.UserInfo;
|
||||
import io.metersphere.system.dto.UserRoleOption;
|
||||
import io.metersphere.system.dto.response.UserTableResponse;
|
||||
import io.metersphere.system.service.GlobalUserRoleService;
|
||||
import io.metersphere.system.service.UserService;
|
||||
import io.metersphere.validation.groups.Created;
|
||||
|
@ -51,8 +53,7 @@ public class UserController {
|
|||
@PostMapping("/add")
|
||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_ADD)
|
||||
public UserBatchCreateDTO addUser(@Validated({Created.class}) @RequestBody UserBatchCreateDTO userCreateDTO) {
|
||||
userCreateDTO.setCreateUserToList(SessionUtils.getUserId());
|
||||
return userService.addBatch(userCreateDTO);
|
||||
return userService.addBatch(userCreateDTO, UserSourceEnum.LOCAL.name(), SessionUtils.getUserId());
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
|
@ -60,15 +61,20 @@ public class UserController {
|
|||
@RequestLog(type = OperationLogType.UPDATE, module = OperationLogModule.SYSTEM_USER,
|
||||
sourceId = "#request.id", details = "#request.name")
|
||||
public UserEditRequest updateUser(@Validated({Updated.class}) @RequestBody UserEditRequest request) {
|
||||
request.setUpdateUser(SessionUtils.getUserId());
|
||||
return userService.updateUser(request);
|
||||
return userService.updateUser(request, SessionUtils.getUserId());
|
||||
}
|
||||
|
||||
@PostMapping("/page")
|
||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ)
|
||||
public Pager<List<UserInfo>> list(@Validated @RequestBody BasePageRequest request) {
|
||||
public Pager<List<UserTableResponse>> list(@Validated @RequestBody BasePageRequest request) {
|
||||
Page<Object> page = PageHelper.startPage(request.getCurrent(), request.getPageSize(),
|
||||
StringUtils.isNotBlank(request.getSortString()) ? request.getSortString() : "create_time desc");
|
||||
return PageUtils.setPageInfo(page, userService.list(request));
|
||||
}
|
||||
|
||||
@PostMapping("/update/enable")
|
||||
@RequiresPermissions(PermissionConstants.SYSTEM_USER_READ_UPDATE)
|
||||
public UserEditEnableRequest updateUserEnable(@Validated @RequestBody UserEditEnableRequest request) {
|
||||
return userService.updateUserEnable(request, SessionUtils.getSessionId());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,23 +15,11 @@ public class UserBatchCreateDTO {
|
|||
|
||||
@Schema(title = "用户信息集合", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(groups = {Created.class, Updated.class}, message = "{user.info.not_empty}")
|
||||
List<@Valid UserInfo> userInfoList;
|
||||
List<@Valid UserCreateInfo> userInfoList;
|
||||
|
||||
@Schema(title = "用户组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(groups = {Created.class, Updated.class}, message = "{user_role.id.not_blank}")
|
||||
List<@Valid @NotBlank(message = "{user_role.id.not_blank}", groups = {Created.class, Updated.class}) String> userRoleIdList;
|
||||
|
||||
public void setCreateUserToList(String userSessionId) {
|
||||
userInfoList.forEach(user -> {
|
||||
user.setCreateUser(userSessionId);
|
||||
user.setUpdateUser(userSessionId);
|
||||
});
|
||||
}
|
||||
|
||||
public void setUpdateUserToList(String userSessionId) {
|
||||
userInfoList.forEach(user -> {
|
||||
user.setUpdateUser(userSessionId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package io.metersphere.system.dto;
|
||||
|
||||
import io.metersphere.system.domain.Organization;
|
||||
import io.metersphere.system.domain.UserRole;
|
||||
import io.metersphere.validation.groups.Created;
|
||||
import io.metersphere.validation.groups.Updated;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
@ -10,15 +8,9 @@ import jakarta.validation.constraints.NotBlank;
|
|||
import jakarta.validation.constraints.Size;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UserInfo {
|
||||
|
||||
@Schema(title = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{user.id.not_blank}", groups = {Updated.class})
|
||||
@Size(min = 1, max = 50, message = "{user.id.length_range}", groups = {Updated.class})
|
||||
public class UserCreateInfo {
|
||||
@Schema(title = "用户ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
private String id;
|
||||
|
||||
@Schema(title = "用户名", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
|
@ -32,28 +24,7 @@ public class UserInfo {
|
|||
@Email(message = "{user.email.invalid}", groups = {Created.class, Updated.class})
|
||||
private String email;
|
||||
|
||||
@Schema(title = "创建时间")
|
||||
private Long createTime;
|
||||
|
||||
@Schema(title = "更新时间")
|
||||
private Long updateTime;
|
||||
|
||||
@Schema(title = "手机号")
|
||||
private String phone;
|
||||
|
||||
@Schema(title = "来源:LOCAL OIDC CAS OAUTH2", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "{user.source.not_blank}", groups = {Created.class})
|
||||
@Size(min = 1, max = 50, message = "{user.source.length_range}", groups = {Created.class, Updated.class})
|
||||
private String source;
|
||||
|
||||
@Schema(title = "创建人")
|
||||
private String createUser;
|
||||
|
||||
@Schema(title = "修改人")
|
||||
private String updateUser;
|
||||
|
||||
@Schema(title = "用户所属组织")
|
||||
private List<Organization> organizationList = new ArrayList<>();
|
||||
@Schema(title = "用户所属用户组")
|
||||
private List<UserRole> userRoleList = new ArrayList<>();
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package io.metersphere.system.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UserEditEnableRequest {
|
||||
@Schema(title = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "{user.not.empty}")
|
||||
List<String> userIdList;
|
||||
|
||||
boolean enable;
|
||||
}
|
|
@ -13,7 +13,7 @@ import java.util.List;
|
|||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class UserEditRequest extends UserInfo {
|
||||
public class UserEditRequest extends UserCreateInfo {
|
||||
@Schema(title = "用户组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(groups = {Created.class, Updated.class}, message = "{user_role.id.not_blank}")
|
||||
List<@Valid @NotBlank(message = "{user_role.id.not_blank}", groups = {Created.class, Updated.class}) String> userRoleIdList;
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package io.metersphere.system.dto.response;
|
||||
|
||||
import io.metersphere.system.domain.Organization;
|
||||
import io.metersphere.system.domain.User;
|
||||
import io.metersphere.system.domain.UserRole;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class UserTableResponse extends User {
|
||||
@Schema(title = "用户所属组织")
|
||||
private List<Organization> organizationList = new ArrayList<>();
|
||||
@Schema(title = "用户所属用户组")
|
||||
private List<UserRole> userRoleList = new ArrayList<>();
|
||||
}
|
|
@ -5,7 +5,7 @@ import io.metersphere.sdk.log.constants.OperationLogModule;
|
|||
import io.metersphere.sdk.log.constants.OperationLogType;
|
||||
import io.metersphere.sdk.log.service.OperationLogService;
|
||||
import io.metersphere.system.domain.*;
|
||||
import io.metersphere.system.dto.UserInfo;
|
||||
import io.metersphere.system.dto.response.UserTableResponse;
|
||||
import io.metersphere.system.mapper.ExtUserRoleRelationMapper;
|
||||
import io.metersphere.system.mapper.OrganizationMapper;
|
||||
import io.metersphere.system.mapper.UserRoleMapper;
|
||||
|
@ -114,7 +114,7 @@ public class UserRoleRelationService {
|
|||
|
||||
}
|
||||
|
||||
public Map<String, UserInfo> selectGlobalUserRoleAndOrganization(@Valid @NotEmpty List<String> userIdList) {
|
||||
public Map<String, UserTableResponse> selectGlobalUserRoleAndOrganization(@Valid @NotEmpty List<String> userIdList) {
|
||||
List<UserRoleRelation> userRoleRelationList = extUserRoleRelationMapper.listByUserIdAndScope(userIdList);
|
||||
List<String> userRoleIdList = userRoleRelationList.stream().map(UserRoleRelation::getRoleId).collect(Collectors.toList());
|
||||
List<String> sourceIdList = userRoleRelationList.stream().map(UserRoleRelation::getSourceId).collect(Collectors.toList());
|
||||
|
@ -132,11 +132,11 @@ public class UserRoleRelationService {
|
|||
organizationMap = organizationMapper.selectByExample(organizationExample).stream()
|
||||
.collect(Collectors.toMap(Organization::getId, item -> item));
|
||||
}
|
||||
Map<String, UserInfo> returnMap = new HashMap<>();
|
||||
Map<String, UserTableResponse> returnMap = new HashMap<>();
|
||||
for (UserRoleRelation userRoleRelation : userRoleRelationList) {
|
||||
UserInfo userInfo = returnMap.get(userRoleRelation.getUserId());
|
||||
UserTableResponse userInfo = returnMap.get(userRoleRelation.getUserId());
|
||||
if (userInfo == null) {
|
||||
userInfo = new UserInfo();
|
||||
userInfo = new UserTableResponse();
|
||||
userInfo.setId(userRoleRelation.getUserId());
|
||||
returnMap.put(userRoleRelation.getUserId(), userInfo);
|
||||
}
|
||||
|
|
|
@ -12,12 +12,16 @@ import io.metersphere.sdk.util.CodingUtil;
|
|||
import io.metersphere.sdk.util.Translator;
|
||||
import io.metersphere.system.domain.OperationLog;
|
||||
import io.metersphere.system.domain.User;
|
||||
import io.metersphere.system.domain.UserExample;
|
||||
import io.metersphere.system.dto.UserBatchCreateDTO;
|
||||
import io.metersphere.system.dto.UserCreateInfo;
|
||||
import io.metersphere.system.dto.UserEditEnableRequest;
|
||||
import io.metersphere.system.dto.UserEditRequest;
|
||||
import io.metersphere.system.dto.UserInfo;
|
||||
import io.metersphere.system.dto.response.UserTableResponse;
|
||||
import io.metersphere.system.mapper.UserMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
@ -63,14 +67,14 @@ public class UserService {
|
|||
return logs;
|
||||
}
|
||||
|
||||
private void validateUserInfo(List<UserInfo> userList) {
|
||||
private void validateUserInfo(List<UserCreateInfo> userList) {
|
||||
//判断参数内是否含有重复邮箱
|
||||
List<String> emailList = new ArrayList<>();
|
||||
List<String> repeatEmailList = new ArrayList<>();
|
||||
var userInDbMap = baseUserMapper.selectUserIdByEmailList(
|
||||
userList.stream().map(UserInfo::getEmail).collect(Collectors.toList()))
|
||||
userList.stream().map(UserCreateInfo::getEmail).collect(Collectors.toList()))
|
||||
.stream().collect(Collectors.toMap(User::getEmail, User::getId));
|
||||
for (UserInfo user : userList) {
|
||||
for (UserCreateInfo user : userList) {
|
||||
if (emailList.contains(user.getEmail())) {
|
||||
repeatEmailList.add(user.getEmail());
|
||||
} else {
|
||||
|
@ -87,20 +91,22 @@ public class UserService {
|
|||
}
|
||||
}
|
||||
|
||||
public UserBatchCreateDTO addBatch(UserBatchCreateDTO userCreateDTO) {
|
||||
public UserBatchCreateDTO addBatch(UserBatchCreateDTO userCreateDTO, String source, String operator) {
|
||||
this.validateUserInfo(userCreateDTO.getUserInfoList());
|
||||
globalUserRoleService.checkRoleIsGlobalAndHaveMember(userCreateDTO.getUserRoleIdList(), true);
|
||||
long createTime = System.currentTimeMillis();
|
||||
List<User> saveUserList = new ArrayList<>();
|
||||
//添加用户
|
||||
for (UserInfo userInfo : userCreateDTO.getUserInfoList()) {
|
||||
for (UserCreateInfo userInfo : userCreateDTO.getUserInfoList()) {
|
||||
userInfo.setId(UUID.randomUUID().toString());
|
||||
userInfo.setCreateTime(createTime);
|
||||
userInfo.setUpdateTime(createTime);
|
||||
|
||||
User user = new User();
|
||||
BeanUtils.copyBean(user, userInfo);
|
||||
user.setCreateUser(operator);
|
||||
user.setCreateTime(createTime);
|
||||
user.setUpdateUser(operator);
|
||||
user.setUpdateTime(createTime);
|
||||
user.setPassword(CodingUtil.md5(user.getEmail()));
|
||||
user.setSource(source);
|
||||
userMapper.insertSelective(user);
|
||||
saveUserList.add(user);
|
||||
}
|
||||
|
@ -126,15 +132,15 @@ public class UserService {
|
|||
return userDTO;
|
||||
}
|
||||
|
||||
public List<UserInfo> list(BasePageRequest request) {
|
||||
List<UserInfo> returnList = new ArrayList<>();
|
||||
public List<UserTableResponse> list(BasePageRequest request) {
|
||||
List<UserTableResponse> returnList = new ArrayList<>();
|
||||
List<User> userList = baseUserMapper.selectByKeyword(request.getKeyword());
|
||||
List<String> userIdList = userList.stream().map(User::getId).collect(Collectors.toList());
|
||||
Map<String, UserInfo> roleAndOrganizationMap = userRoleRelationService.selectGlobalUserRoleAndOrganization(userIdList);
|
||||
Map<String, UserTableResponse> roleAndOrganizationMap = userRoleRelationService.selectGlobalUserRoleAndOrganization(userIdList);
|
||||
for (User user : userList) {
|
||||
UserInfo userInfo = new UserInfo();
|
||||
UserTableResponse userInfo = new UserTableResponse();
|
||||
BeanUtils.copyBean(userInfo, user);
|
||||
UserInfo roleOrgModel = roleAndOrganizationMap.get(user.getId());
|
||||
UserTableResponse roleOrgModel = roleAndOrganizationMap.get(user.getId());
|
||||
if (roleOrgModel != null) {
|
||||
userInfo.setUserRoleList(roleOrgModel.getUserRoleList());
|
||||
userInfo.setOrganizationList(roleOrgModel.getOrganizationList());
|
||||
|
@ -144,11 +150,12 @@ public class UserService {
|
|||
return returnList;
|
||||
}
|
||||
|
||||
public UserEditRequest updateUser(UserEditRequest userEditRequest) {
|
||||
public UserEditRequest updateUser(UserEditRequest userEditRequest, String operator) {
|
||||
//检查用户组合法性
|
||||
globalUserRoleService.checkRoleIsGlobalAndHaveMember(userEditRequest.getUserRoleIdList(), true);
|
||||
User user = new User();
|
||||
BeanUtils.copyBean(user, userEditRequest);
|
||||
user.setUpdateUser(operator);
|
||||
user.setUpdateTime(System.currentTimeMillis());
|
||||
user.setCreateUser(null);
|
||||
user.setCreateTime(null);
|
||||
|
@ -156,4 +163,25 @@ public class UserService {
|
|||
userRoleRelationService.updateUserSystemGlobalRole(user, user.getUpdateUser(), userEditRequest.getUserRoleIdList());
|
||||
return userEditRequest;
|
||||
}
|
||||
|
||||
public UserEditEnableRequest updateUserEnable(UserEditEnableRequest request, String operator) {
|
||||
this.checkUserInDb(request.getUserIdList());
|
||||
UserExample userExample = new UserExample();
|
||||
userExample.createCriteria().andIdIn(
|
||||
request.getUserIdList()
|
||||
);
|
||||
User updateUser = new User();
|
||||
updateUser.setEnable(request.isEnable());
|
||||
updateUser.setUpdateUser(operator);
|
||||
updateUser.setUpdateTime(System.currentTimeMillis());
|
||||
userMapper.updateByExampleSelective(updateUser, userExample);
|
||||
return request;
|
||||
}
|
||||
|
||||
private void checkUserInDb(@Valid @NotEmpty List<String> userIdList) {
|
||||
List<String> userInDb = baseUserMapper.selectUserIdByIdList(userIdList);
|
||||
if (userIdList.size() != userInDb.size()) {
|
||||
throw new MSException(Translator.get("user.not.exist"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@ package io.metersphere.system.controller;
|
|||
import com.jayway.jsonpath.JsonPath;
|
||||
import io.metersphere.sdk.constants.SessionConstants;
|
||||
import io.metersphere.sdk.util.JSON;
|
||||
import io.metersphere.system.dto.UserInfo;
|
||||
import io.metersphere.system.dto.UserCreateInfo;
|
||||
import io.metersphere.system.dto.UserRoleOption;
|
||||
import io.metersphere.system.utils.UserTestUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
|
@ -58,11 +58,10 @@ public class UserControllerNonePermissionTests {
|
|||
@Test
|
||||
@Order(0)
|
||||
public void testGetGlobalSystemUserRoleSuccess() throws Exception {
|
||||
UserInfo paramUserInfo = new UserInfo() {{
|
||||
UserCreateInfo paramUserInfo = new UserCreateInfo() {{
|
||||
setId("testId");
|
||||
setName("tianyang.no.permission.email");
|
||||
setEmail("tianyang.no.permission.email@126.com");
|
||||
setSource("LOCAL");
|
||||
}};
|
||||
List<UserRoleOption> paramRoleList = new ArrayList<>() {{
|
||||
this.add(
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package io.metersphere.system.controller;
|
||||
|
||||
import base.BaseTest;
|
||||
import io.metersphere.api.domain.ApiDefinition;
|
||||
import io.metersphere.sdk.constants.SessionConstants;
|
||||
import io.metersphere.sdk.controller.handler.ResultHolder;
|
||||
import io.metersphere.sdk.dto.BasePageRequest;
|
||||
|
@ -9,10 +8,8 @@ import io.metersphere.sdk.dto.UserDTO;
|
|||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.sdk.util.JSON;
|
||||
import io.metersphere.sdk.util.Pager;
|
||||
import io.metersphere.system.dto.UserBatchCreateDTO;
|
||||
import io.metersphere.system.dto.UserEditRequest;
|
||||
import io.metersphere.system.dto.UserInfo;
|
||||
import io.metersphere.system.dto.UserRoleOption;
|
||||
import io.metersphere.system.dto.*;
|
||||
import io.metersphere.system.dto.response.UserTableResponse;
|
||||
import io.metersphere.system.utils.UserTestUtils;
|
||||
import io.metersphere.utils.JsonUtils;
|
||||
import jakarta.annotation.Resource;
|
||||
|
@ -53,12 +50,13 @@ public class UserControllerTests extends BaseTest {
|
|||
private static final String URL_USER_GET = "/system/user/get/%s";
|
||||
private static final String URL_USER_PAGE = "/system/user/page";
|
||||
private static final String URL_GET_GLOBAL_SYSTEM = "/system/user/get/global/system/role";
|
||||
private static final String URL_USER_UPDATE_ENABLE = "/system/user/update/enable";
|
||||
//失败请求返回编码
|
||||
private static final ResultMatcher BAD_REQUEST_MATCHER = status().isBadRequest();
|
||||
private static final ResultMatcher ERROR_REQUEST_MATCHER = status().is5xxServerError();
|
||||
//测试过程中需要用到的数据
|
||||
private static final List<UserInfo> USER_LIST = new ArrayList<>();
|
||||
private static List<UserRoleOption> defaultUserRoleList = new ArrayList<>();
|
||||
private static final List<UserCreateInfo> USER_LIST = new ArrayList<>();
|
||||
private static final List<UserRoleOption> defaultUserRoleList = new ArrayList<>();
|
||||
//默认数据
|
||||
public static final String USER_DEFAULT_NAME = "tianyang.no.1";
|
||||
public static final String USER_DEFAULT_EMAIL = "tianyang.no.1@126.com";
|
||||
|
@ -138,15 +136,13 @@ public class UserControllerTests extends BaseTest {
|
|||
UserBatchCreateDTO userMaintainRequest = UserTestUtils.getUserCreateDTO(
|
||||
defaultUserRoleList,
|
||||
new ArrayList<>() {{
|
||||
add(new UserInfo() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName(USER_DEFAULT_NAME);
|
||||
setEmail(USER_DEFAULT_EMAIL);
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
add(new UserInfo() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName("tianyang.no.2");
|
||||
setEmail("tianyang.no.2@126.com");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
}}
|
||||
);
|
||||
|
@ -158,15 +154,13 @@ public class UserControllerTests extends BaseTest {
|
|||
|
||||
defaultUserRoleList,
|
||||
new ArrayList<>() {{
|
||||
add(new UserInfo() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName("tianyang.repeat");
|
||||
setEmail("tianyang.repeat.name.1@126.com");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
add(new UserInfo() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName("tianyang.repeat");
|
||||
setEmail("tianyang.repeat.name.2@126.com");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
}}
|
||||
);
|
||||
|
@ -181,16 +175,14 @@ public class UserControllerTests extends BaseTest {
|
|||
this.testGetGlobalSystemUserRoleSuccess();
|
||||
}
|
||||
UserBatchCreateDTO userMaintainRequest;
|
||||
List<UserInfo> errorUserList = new ArrayList<>() {{
|
||||
add(new UserInfo() {{
|
||||
List<UserCreateInfo> errorUserList = new ArrayList<>() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName("tianyang.error.1");
|
||||
setEmail("tianyang.error.name.1@126.com");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
add(new UserInfo() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName("tianyang.error.2");
|
||||
setEmail("tianyang.error.name.2@126.com");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
}};
|
||||
|
||||
|
@ -224,9 +216,8 @@ public class UserControllerTests extends BaseTest {
|
|||
defaultUserRoleList,
|
||||
new ArrayList<>()
|
||||
);
|
||||
userMaintainRequest.getUserInfoList().add(new UserInfo() {{
|
||||
userMaintainRequest.getUserInfoList().add(new UserCreateInfo() {{
|
||||
setEmail("tianyang.name.empty@126.com");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
this.requestPost(URL_USER_CREATE, userMaintainRequest, BAD_REQUEST_MATCHER);
|
||||
//含有用户邮箱为空的数据
|
||||
|
@ -234,9 +225,8 @@ public class UserControllerTests extends BaseTest {
|
|||
defaultUserRoleList,
|
||||
new ArrayList<>()
|
||||
);
|
||||
userMaintainRequest.getUserInfoList().add(new UserInfo() {{
|
||||
userMaintainRequest.getUserInfoList().add(new UserCreateInfo() {{
|
||||
setName("tianyang.email.empty");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
this.requestPost(URL_USER_CREATE, userMaintainRequest, BAD_REQUEST_MATCHER);
|
||||
//用户邮箱不符合标准
|
||||
|
@ -244,23 +234,11 @@ public class UserControllerTests extends BaseTest {
|
|||
defaultUserRoleList,
|
||||
new ArrayList<>()
|
||||
);
|
||||
userMaintainRequest.getUserInfoList().add(new UserInfo() {{
|
||||
userMaintainRequest.getUserInfoList().add(new UserCreateInfo() {{
|
||||
setName("用户邮箱放飞自我");
|
||||
setEmail("用户邮箱放飞自我");
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
this.requestPost(URL_USER_CREATE, userMaintainRequest, BAD_REQUEST_MATCHER);
|
||||
//用户来源为空
|
||||
userMaintainRequest = UserTestUtils.getUserCreateDTO(
|
||||
defaultUserRoleList,
|
||||
new ArrayList<>()
|
||||
);
|
||||
userMaintainRequest.getUserInfoList().add(new UserInfo() {{
|
||||
setName("tianyang.source.empty");
|
||||
setEmail("tianyang.source.empty@126.com");
|
||||
}});
|
||||
this.requestPost(URL_USER_CREATE, userMaintainRequest, BAD_REQUEST_MATCHER);
|
||||
|
||||
/*
|
||||
* 校验业务判断出错的反例 (500 error)
|
||||
* 需要保证数据库有正常数据
|
||||
|
@ -277,10 +255,9 @@ public class UserControllerTests extends BaseTest {
|
|||
errorUserList
|
||||
);
|
||||
String firstUserEmail = userMaintainRequest.getUserInfoList().get(0).getEmail();
|
||||
userMaintainRequest.getUserInfoList().add(new UserInfo() {{
|
||||
userMaintainRequest.getUserInfoList().add(new UserCreateInfo() {{
|
||||
setName("tianyang.no.error4");
|
||||
setEmail(firstUserEmail);
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
this.requestPost(URL_USER_CREATE, userMaintainRequest, ERROR_REQUEST_MATCHER);
|
||||
//测试请求参数中含有数据库中已存在的邮箱情况
|
||||
|
@ -290,10 +267,9 @@ public class UserControllerTests extends BaseTest {
|
|||
);
|
||||
userMaintainRequest.setUserInfoList(
|
||||
new ArrayList<>() {{
|
||||
add(new UserInfo() {{
|
||||
add(new UserCreateInfo() {{
|
||||
setName("tianyang.repeat.email.db");
|
||||
setEmail(USER_DEFAULT_EMAIL);
|
||||
setSource("LOCAL");
|
||||
}});
|
||||
}}
|
||||
);
|
||||
|
@ -354,13 +330,13 @@ public class UserControllerTests extends BaseTest {
|
|||
ResultHolder resultHolder = JsonUtils.parseObject(returnData, ResultHolder.class);
|
||||
//返回请求正常
|
||||
Assertions.assertNotNull(resultHolder);
|
||||
Pager<UserInfo> returnPager = JSON.parseObject(JSON.toJSONString(resultHolder.getData()), Pager.class);
|
||||
Pager<?> returnPager = JSON.parseObject(JSON.toJSONString(resultHolder.getData()), Pager.class);
|
||||
//返回值不为空
|
||||
Assertions.assertNotNull(returnPager);
|
||||
//返回值的页码和当前页码相同
|
||||
Assertions.assertEquals(returnPager.getCurrent(), basePageRequest.getCurrent());
|
||||
//返回的数据量不超过规定要返回的数据量相同
|
||||
Assertions.assertTrue(((List<ApiDefinition>) returnPager.getList()).size() <= basePageRequest.getPageSize());
|
||||
Assertions.assertTrue(JSON.parseArray(JSON.toJSONString(returnPager.getList())).size() <= basePageRequest.getPageSize());
|
||||
|
||||
//测试根据创建时间倒叙排列
|
||||
basePageRequest = UserTestUtils.getDefaultPageRequest();
|
||||
|
@ -372,9 +348,9 @@ public class UserControllerTests extends BaseTest {
|
|||
resultHolder = JsonUtils.parseObject(returnData, ResultHolder.class);
|
||||
returnPager = JSON.parseObject(JSON.toJSONString(resultHolder.getData()), Pager.class);
|
||||
//第一个数据的createTime是最大的
|
||||
List<UserInfo> userInfoList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserInfo.class);
|
||||
List<UserTableResponse> userInfoList = JSON.parseArray(JSON.toJSONString(returnPager.getList()), UserTableResponse.class);
|
||||
long firstCreateTime = userInfoList.get(0).getCreateTime();
|
||||
for (UserInfo userInfo : userInfoList) {
|
||||
for (UserTableResponse userInfo : userInfoList) {
|
||||
Assertions.assertFalse(userInfo.getCreateTime() > firstCreateTime);
|
||||
}
|
||||
}
|
||||
|
@ -404,7 +380,7 @@ public class UserControllerTests extends BaseTest {
|
|||
@Order(4)
|
||||
public void testUserUpdateSuccess() throws Exception {
|
||||
this.checkUserList();
|
||||
UserInfo user = new UserInfo();
|
||||
UserCreateInfo user = new UserCreateInfo();
|
||||
BeanUtils.copyBean(user, USER_LIST.get(0));
|
||||
UserEditRequest userMaintainRequest;
|
||||
UserEditRequest response;
|
||||
|
@ -440,7 +416,7 @@ public class UserControllerTests extends BaseTest {
|
|||
checkDTO = this.getUserByEmail(user.getEmail());
|
||||
UserTestUtils.compareUserDTO(response, checkDTO);
|
||||
//用户信息复原
|
||||
user = new UserInfo();
|
||||
user = new UserCreateInfo();
|
||||
BeanUtils.copyBean(user, USER_LIST.get(0));
|
||||
userMaintainRequest = UserTestUtils.getUserUpdateDTO(user, defaultUserRoleList);
|
||||
response = UserTestUtils.parseObjectFromMvcResult(this.responsePost(URL_USER_UPDATE, userMaintainRequest), UserEditRequest.class);
|
||||
|
@ -452,7 +428,7 @@ public class UserControllerTests extends BaseTest {
|
|||
@Order(5)
|
||||
public void testUserUpdateError() throws Exception {
|
||||
// 4xx 验证
|
||||
UserInfo user = new UserInfo();
|
||||
UserCreateInfo user = new UserCreateInfo();
|
||||
UserEditRequest userMaintainRequest;
|
||||
//更改名字
|
||||
BeanUtils.copyBean(user, USER_LIST.get(0));
|
||||
|
@ -472,11 +448,12 @@ public class UserControllerTests extends BaseTest {
|
|||
//用户组为空
|
||||
BeanUtils.copyBean(user, USER_LIST.get(0));
|
||||
userMaintainRequest = UserTestUtils.getUserUpdateDTO(user, new ArrayList<>());
|
||||
userMaintainRequest.setUserRoleList(new ArrayList<>());
|
||||
userMaintainRequest.setUserRoleIdList(new ArrayList<>());
|
||||
this.requestPost(URL_USER_UPDATE, userMaintainRequest, BAD_REQUEST_MATCHER);
|
||||
|
||||
// 500验证
|
||||
//邮箱重复
|
||||
this.checkUserList();
|
||||
BeanUtils.copyBean(user, USER_LIST.get(0));
|
||||
user.setEmail(USER_LIST.get(USER_LIST.size() - 1).getEmail());
|
||||
userMaintainRequest = UserTestUtils.getUserUpdateDTO(user, defaultUserRoleList);
|
||||
|
@ -488,4 +465,35 @@ public class UserControllerTests extends BaseTest {
|
|||
);
|
||||
this.requestPost(URL_USER_UPDATE, userMaintainRequest, ERROR_REQUEST_MATCHER);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(6)
|
||||
public void testUserChangeEnableSuccess() throws Exception {
|
||||
this.checkUserList();
|
||||
//单独修改状态
|
||||
UserCreateInfo userInfo = USER_LIST.get(0);
|
||||
UserEditEnableRequest userChangeEnableRequest = new UserEditEnableRequest();
|
||||
userChangeEnableRequest.setUserIdList(new ArrayList<>() {{
|
||||
this.add(userInfo.getId());
|
||||
}});
|
||||
userChangeEnableRequest.setEnable(false);
|
||||
this.requestPost(URL_USER_UPDATE_ENABLE, userChangeEnableRequest, status().isOk());
|
||||
UserDTO userDTO = this.getUserByEmail(userInfo.getEmail());
|
||||
Assertions.assertEquals(userDTO.getEnable(), userChangeEnableRequest.isEnable());
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(6)
|
||||
public void testUserChangeEnableError() throws Exception {
|
||||
this.checkUserList();
|
||||
//用户不存在
|
||||
UserEditEnableRequest userChangeEnableRequest = new UserEditEnableRequest();
|
||||
userChangeEnableRequest.setEnable(false);
|
||||
this.requestPost(URL_USER_UPDATE_ENABLE, userChangeEnableRequest, BAD_REQUEST_MATCHER);
|
||||
//含有非法用户
|
||||
userChangeEnableRequest.setUserIdList(new ArrayList<>() {{
|
||||
this.add("BCDEDIT");
|
||||
}});
|
||||
this.requestPost(URL_USER_UPDATE_ENABLE, userChangeEnableRequest, ERROR_REQUEST_MATCHER);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@ import io.metersphere.sdk.util.BeanUtils;
|
|||
import io.metersphere.sdk.util.JSON;
|
||||
import io.metersphere.system.domain.UserRole;
|
||||
import io.metersphere.system.dto.UserBatchCreateDTO;
|
||||
import io.metersphere.system.dto.UserCreateInfo;
|
||||
import io.metersphere.system.dto.UserEditRequest;
|
||||
import io.metersphere.system.dto.UserInfo;
|
||||
import io.metersphere.system.dto.UserRoleOption;
|
||||
import io.metersphere.utils.JsonUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
@ -36,7 +36,7 @@ public class UserTestUtils {
|
|||
|
||||
public static UserBatchCreateDTO getUserCreateDTO(
|
||||
List<UserRoleOption> userRoleList,
|
||||
List<UserInfo> userInfoList) {
|
||||
List<UserCreateInfo> userInfoList) {
|
||||
UserBatchCreateDTO userMaintainRequest = new UserBatchCreateDTO();
|
||||
if (CollectionUtils.isNotEmpty(userRoleList)) {
|
||||
userMaintainRequest.setUserRoleIdList(
|
||||
|
@ -46,7 +46,7 @@ public class UserTestUtils {
|
|||
return userMaintainRequest;
|
||||
}
|
||||
|
||||
public static UserEditRequest getUserUpdateDTO(UserInfo user, List<UserRoleOption> userRoleList) {
|
||||
public static UserEditRequest getUserUpdateDTO(UserCreateInfo user, List<UserRoleOption> userRoleList) {
|
||||
UserEditRequest returnDTO = new UserEditRequest();
|
||||
if (user.getPhone() == null) {
|
||||
user.setPhone("");
|
||||
|
|
Loading…
Reference in New Issue