Merge branch 'dev' of https://github.com/fit2cloudrd/metersphere-server into dev
This commit is contained in:
commit
dd2bbeda5b
|
@ -2,9 +2,10 @@ package io.metersphere.base.mapper;
|
||||||
|
|
||||||
import io.metersphere.base.domain.User;
|
import io.metersphere.base.domain.User;
|
||||||
import io.metersphere.base.domain.UserExample;
|
import io.metersphere.base.domain.UserExample;
|
||||||
import java.util.List;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface UserMapper {
|
public interface UserMapper {
|
||||||
long countByExample(UserExample example);
|
long countByExample(UserExample example);
|
||||||
|
|
||||||
|
@ -29,4 +30,7 @@ public interface UserMapper {
|
||||||
int updateByPrimaryKey(User record);
|
int updateByPrimaryKey(User record);
|
||||||
|
|
||||||
int updatePassword(User record);
|
int updatePassword(User record);
|
||||||
|
|
||||||
|
String getDefaultlanguage(String paramKey);
|
||||||
|
|
||||||
}
|
}
|
|
@ -304,11 +304,15 @@
|
||||||
where id = #{id,jdbcType=VARCHAR}
|
where id = #{id,jdbcType=VARCHAR}
|
||||||
</update>
|
</update>
|
||||||
<!--修改密码-->
|
<!--修改密码-->
|
||||||
<update id="updatePassword" parameterType="io.metersphere.base.domain.User">
|
<update id="updatePassword" parameterType="io.metersphere.base.domain.User">
|
||||||
update user
|
update user
|
||||||
set
|
set
|
||||||
password=#{password,jdbcType=VARCHAR},
|
password=#{password,jdbcType=VARCHAR},
|
||||||
update_time = #{updateTime,jdbcType=BIGINT}
|
update_time = #{updateTime,jdbcType=BIGINT}
|
||||||
where id=#{id,jdbcType=VARCHAR}
|
where id=#{id,jdbcType=VARCHAR}
|
||||||
</update>
|
</update>
|
||||||
|
<select id="getDefaultlanguage" parameterType="java.lang.String" resultType="java.lang.String">
|
||||||
|
select param_value from system_parameter
|
||||||
|
where param_key=#{paramKey,jdbcType=VARCHAR}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
|
@ -3,10 +3,14 @@ package io.metersphere.base.mapper.ext;
|
||||||
import io.metersphere.base.domain.User;
|
import io.metersphere.base.domain.User;
|
||||||
import io.metersphere.controller.request.UserRequest;
|
import io.metersphere.controller.request.UserRequest;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface ExtUserMapper {
|
public interface ExtUserMapper {
|
||||||
|
|
||||||
List<User> getUserList(@Param("userRequest") UserRequest request);
|
List<User> getUserList(@Param("userRequest") UserRequest request);
|
||||||
|
|
||||||
int updatePassword(User record);
|
int updatePassword(User record);
|
||||||
|
|
||||||
|
String getDefaultlanguage(String paramKey);
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,5 +41,9 @@
|
||||||
update_time = #{updateTime,jdbcType=BIGINT}
|
update_time = #{updateTime,jdbcType=BIGINT}
|
||||||
where id=#{id,jdbcType=VARCHAR}
|
where id=#{id,jdbcType=VARCHAR}
|
||||||
</update>
|
</update>
|
||||||
|
<select id="getDefaultlanguage" parameterType="java.lang.String" resultType="java.lang.String">
|
||||||
|
select param_value from system_parameter
|
||||||
|
where param_key=#{paramKey,jdbcType=VARCHAR}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -87,4 +87,10 @@ public class LoginController {
|
||||||
return ResultHolder.success("");
|
return ResultHolder.success("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*Get default language*/
|
||||||
|
@PostMapping(value = "/language")
|
||||||
|
public String getDefaultlanguage() {
|
||||||
|
return userService.getDefaultlanguage();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
package io.metersphere.dto;
|
|
||||||
|
|
||||||
import io.metersphere.base.domain.Role;
|
|
||||||
import io.metersphere.base.domain.User;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
public class UserOperateDTO extends User {
|
|
||||||
|
|
||||||
private List<Role> roleList;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
package io.metersphere.dto;
|
|
||||||
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
public class UserRoleDTO {
|
|
||||||
|
|
||||||
private String id;
|
|
||||||
private String roleId;
|
|
||||||
private String type;
|
|
||||||
private String name;
|
|
||||||
private String desc;
|
|
||||||
private String parentId;
|
|
||||||
private Boolean switchable = true;
|
|
||||||
|
|
||||||
}
|
|
|
@ -223,7 +223,7 @@ public class TestResourcePoolService {
|
||||||
List<TestResourcePoolDTO> testResourcePools = listResourcePools(request);
|
List<TestResourcePoolDTO> testResourcePools = listResourcePools(request);
|
||||||
// 重新校验 pool
|
// 重新校验 pool
|
||||||
for (TestResourcePoolDTO pool : testResourcePools) {
|
for (TestResourcePoolDTO pool : testResourcePools) {
|
||||||
// 手动设置成无效的, 排除
|
// 手动设置成无效的, 排除
|
||||||
if (INVALID.name().equals(pool.getStatus())) {
|
if (INVALID.name().equals(pool.getStatus())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -344,4 +344,9 @@ public class UserService {
|
||||||
userRole.setUpdateTime(System.currentTimeMillis());
|
userRole.setUpdateTime(System.currentTimeMillis());
|
||||||
userRoleMapper.insertSelective(userRole);
|
userRoleMapper.insertSelective(userRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDefaultlanguage() {
|
||||||
|
final String key = "registry.defaultlanguage";
|
||||||
|
return extUserMapper.getDefaultlanguage(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,7 +158,7 @@ export class Request extends BaseConfig {
|
||||||
|
|
||||||
initOptions(options) {
|
initOptions(options) {
|
||||||
options = options || {};
|
options = options || {};
|
||||||
options.method = "GET";
|
options.method = options.method || "GET";
|
||||||
options.body = new Body(options.body);
|
options.body = new Body(options.body);
|
||||||
options.assertions = new Assertions(options.assertions);
|
options.assertions = new Assertions(options.assertions);
|
||||||
options.extract = new Extract(options.extract);
|
options.extract = new Extract(options.extract);
|
||||||
|
@ -474,10 +474,10 @@ class JMXGenerator {
|
||||||
if (request.body.isKV()) {
|
if (request.body.isKV()) {
|
||||||
body = request.body.kvs.filter(this.filter);
|
body = request.body.kvs.filter(this.filter);
|
||||||
} else {
|
} else {
|
||||||
|
httpSamplerProxy.boolProp('HTTPSampler.postBodyRaw', true);
|
||||||
body.push({name: '', value: request.body.raw});
|
body.push({name: '', value: request.body.raw});
|
||||||
}
|
}
|
||||||
|
|
||||||
httpSamplerProxy.boolProp('HTTPSampler.postBodyRaw', true);
|
|
||||||
httpSamplerProxy.add(new HTTPSamplerArguments(body));
|
httpSamplerProxy.add(new HTTPSamplerArguments(body));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
text-color="#fff">
|
text-color="#fff">
|
||||||
<el-submenu index="1" popper-class="submenu"
|
<el-submenu index="1" popper-class="submenu"
|
||||||
v-permission="['org_admin', 'test_manager', 'test_user', 'test_viewer']">
|
v-permission="['org_admin', 'test_manager', 'test_user', 'test_viewer']">
|
||||||
<template v-slot:title>【{{$t('commons.organization')}}】{{currentOrganizationName}}</template>
|
<template v-slot:title>{{$t('commons.organization')}}: {{currentOrganizationName}}</template>
|
||||||
<label v-for="(item,index) in organizationList" :key="index">
|
<label v-for="(item,index) in organizationList" :key="index">
|
||||||
<el-menu-item @click="changeOrg(item)">{{item.name}}
|
<el-menu-item @click="changeOrg(item)">{{item.name}}
|
||||||
<i class="el-icon-check"
|
<i class="el-icon-check"
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
</label>
|
</label>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
<el-submenu index="2" popper-class="submenu" v-permission="['test_manager', 'test_user', 'test_viewer']">
|
<el-submenu index="2" popper-class="submenu" v-permission="['test_manager', 'test_user', 'test_viewer']">
|
||||||
<template v-slot:title>【{{$t('commons.workspace')}}】{{currentWorkspaceName}}</template>
|
<template v-slot:title>{{$t('commons.workspace')}}: {{currentWorkspaceName}}</template>
|
||||||
<label v-for="(item,index) in workspaceList" :key="index">
|
<label v-for="(item,index) in workspaceList" :key="index">
|
||||||
<el-menu-item @click="changeWs(item)">
|
<el-menu-item @click="changeWs(item)">
|
||||||
{{item.name}}
|
{{item.name}}
|
||||||
|
@ -52,8 +52,8 @@
|
||||||
currentUserInfo: {},
|
currentUserInfo: {},
|
||||||
currentUserId: getCurrentUser().id,
|
currentUserId: getCurrentUser().id,
|
||||||
workspaceIds: [],
|
workspaceIds: [],
|
||||||
currentOrganizationName: this.$t('organization.select'),
|
currentOrganizationName: '',
|
||||||
currentWorkspaceName: this.$t('workspace.select')
|
currentWorkspaceName: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
|
@ -10,21 +10,15 @@
|
||||||
<font-awesome-icon class="icon global" :icon="['fas', 'globe']"/>
|
<font-awesome-icon class="icon global" :icon="['fas', 'globe']"/>
|
||||||
<span>{{language}}</span>
|
<span>{{language}}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-menu-item @click="changeLanguage('zh_CN')">
|
<el-menu-item v-for="(value, key) in languageMap" :key="key" @click="changeLanguage(key)">
|
||||||
简体中文<i class="el-icon-check" v-if="currentUserInfo.language==='zh_CN' || !currentUserInfo.language"/>
|
{{value}} <i class="el-icon-check" v-if="language === value"/>
|
||||||
</el-menu-item>
|
|
||||||
<el-menu-item @click="changeLanguage('zh_TW')">
|
|
||||||
繁體中文<i class="el-icon-check" v-if="currentUserInfo.language==='zh_TW'"/>
|
|
||||||
</el-menu-item>
|
|
||||||
<el-menu-item @click="changeLanguage('en_US')">
|
|
||||||
English<i class="el-icon-check" v-if="currentUserInfo.language==='en_US'"/>
|
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {TokenKey, ZH_CN, ZH_TW, EN_US} from '../../../../common/js/constants';
|
import {EN_US, TokenKey, ZH_CN, ZH_TW} from '../../../../common/js/constants';
|
||||||
import {getCurrentUser} from "../../../../common/js/utils";
|
import {getCurrentUser} from "../../../../common/js/utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -32,7 +26,12 @@
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
currentUserInfo: {},
|
currentUserInfo: {},
|
||||||
language: ''
|
language: '',
|
||||||
|
languageMap: {
|
||||||
|
[ZH_CN]: '简体中文',
|
||||||
|
[EN_US]: 'English',
|
||||||
|
[ZH_TW]: '繁體中文',
|
||||||
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -41,23 +40,26 @@
|
||||||
if (!lang) {
|
if (!lang) {
|
||||||
lang = 'zh_CN';
|
lang = 'zh_CN';
|
||||||
}
|
}
|
||||||
this.$setLang(lang);
|
this.checkLanguage(lang)
|
||||||
switch (lang) {
|
|
||||||
case ZH_CN:
|
|
||||||
this.language = '简体中文';
|
|
||||||
break;
|
|
||||||
case ZH_TW:
|
|
||||||
this.language = '繁體中文';
|
|
||||||
break;
|
|
||||||
case EN_US:
|
|
||||||
this.language = 'English';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
this.language = '简体中文';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
checkLanguage(lang) {
|
||||||
|
this.$setLang(lang);
|
||||||
|
switch (lang) {
|
||||||
|
case ZH_CN:
|
||||||
|
this.language = this.languageMap[ZH_CN];
|
||||||
|
break;
|
||||||
|
case ZH_TW:
|
||||||
|
this.language = this.languageMap[ZH_TW];
|
||||||
|
break;
|
||||||
|
case EN_US:
|
||||||
|
this.language = this.languageMap[EN_US];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.language = this.languageMap[ZH_CN];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
currentUser: () => {
|
currentUser: () => {
|
||||||
return getCurrentUser();
|
return getCurrentUser();
|
||||||
},
|
},
|
||||||
|
@ -66,9 +68,9 @@
|
||||||
id: this.currentUser().id,
|
id: this.currentUser().id,
|
||||||
language: language
|
language: language
|
||||||
};
|
};
|
||||||
|
this.checkLanguage(language);
|
||||||
this.result = this.$post("/user/update/current", user, response => {
|
this.result = this.$post("/user/update/current", user, response => {
|
||||||
localStorage.setItem(TokenKey, JSON.stringify(response.data));
|
localStorage.setItem(TokenKey, JSON.stringify(response.data));
|
||||||
window.location.reload();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,8 @@ export default {
|
||||||
'personal_setting': 'Personal Setting',
|
'personal_setting': 'Personal Setting',
|
||||||
'test_resource_pool': 'Resource Pool',
|
'test_resource_pool': 'Resource Pool',
|
||||||
'system_setting': 'Settings',
|
'system_setting': 'Settings',
|
||||||
'api': 'Api test',
|
'api': 'API',
|
||||||
'performance': 'Performance test',
|
'performance': 'Performance',
|
||||||
'functional': 'Functional test',
|
'functional': 'Functional test',
|
||||||
'input_content': 'Please enter content',
|
'input_content': 'Please enter content',
|
||||||
'create': 'Create',
|
'create': 'Create',
|
||||||
|
|
|
@ -107,10 +107,10 @@
|
||||||
this.$post("signin", this.form, response => {
|
this.$post("signin", this.form, response => {
|
||||||
saveLocalStorage(response);
|
saveLocalStorage(response);
|
||||||
let language = response.data.language;
|
let language = response.data.language;
|
||||||
if (!language) {
|
this.$post("language",response=>{
|
||||||
language = 'zh_CN';
|
this.$setLang(language);
|
||||||
}
|
})
|
||||||
this.$setLang(language);
|
|
||||||
window.location.href = "/"
|
window.location.href = "/"
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue