Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
31e5cca4
提交
31e5cca4
authored
5月 18, 2021
作者:
fit2cloud-chenyw
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:前端增加国际化切换
上级
6d54dcec
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
152 行增加
和
29 行删除
+152
-29
SysUserEntity.java
.../src/main/java/io/dataease/auth/entity/SysUserEntity.java
+2
-0
SysUser.java
backend/src/main/java/io/dataease/base/domain/SysUser.java
+3
-0
SysUserExample.java
...src/main/java/io/dataease/base/domain/SysUserExample.java
+70
-0
SysUserMapper.xml
...d/src/main/java/io/dataease/base/mapper/SysUserMapper.xml
+23
-7
AuthMapper.java
...src/main/java/io/dataease/base/mapper/ext/AuthMapper.java
+0
-1
AuthMapper.xml
.../src/main/java/io/dataease/base/mapper/ext/AuthMapper.xml
+2
-2
SysUserController.java
...in/java/io/dataease/controller/sys/SysUserController.java
+12
-0
SysUserService.java
...src/main/java/io/dataease/service/sys/SysUserService.java
+8
-0
user.js
frontend/src/api/user.js
+7
-0
index.vue
frontend/src/components/LangSelect/index.vue
+1
-1
Topbar.vue
frontend/src/layout/components/Topbar.vue
+4
-4
getters.js
frontend/src/store/getters.js
+1
-1
app.js
frontend/src/store/modules/app.js
+3
-9
user.js
frontend/src/store/modules/user.js
+16
-4
没有找到文件。
backend/src/main/java/io/dataease/auth/entity/SysUserEntity.java
浏览文件 @
31e5cca4
...
...
@@ -23,4 +23,6 @@ public class SysUserEntity implements Serializable {
private
String
email
;
private
String
phone
;
private
String
language
;
}
backend/src/main/java/io/dataease/base/domain/SysUser.java
浏览文件 @
31e5cca4
...
...
@@ -35,5 +35,7 @@ public class SysUser implements Serializable {
private
Long
updateTime
;
private
String
language
;
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
backend/src/main/java/io/dataease/base/domain/SysUserExample.java
浏览文件 @
31e5cca4
...
...
@@ -1083,6 +1083,76 @@ public class SysUserExample {
addCriterion
(
"update_time not between"
,
value1
,
value2
,
"updateTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageIsNull
()
{
addCriterion
(
"`language` is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageIsNotNull
()
{
addCriterion
(
"`language` is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageEqualTo
(
String
value
)
{
addCriterion
(
"`language` ="
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageNotEqualTo
(
String
value
)
{
addCriterion
(
"`language` <>"
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageGreaterThan
(
String
value
)
{
addCriterion
(
"`language` >"
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"`language` >="
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageLessThan
(
String
value
)
{
addCriterion
(
"`language` <"
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"`language` <="
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageLike
(
String
value
)
{
addCriterion
(
"`language` like"
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageNotLike
(
String
value
)
{
addCriterion
(
"`language` not like"
,
value
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageIn
(
List
<
String
>
values
)
{
addCriterion
(
"`language` in"
,
values
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"`language` not in"
,
values
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"`language` between"
,
value1
,
value2
,
"language"
);
return
(
Criteria
)
this
;
}
public
Criteria
andLanguageNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"`language` not between"
,
value1
,
value2
,
"language"
);
return
(
Criteria
)
this
;
}
}
public
static
class
Criteria
extends
GeneratedCriteria
{
...
...
backend/src/main/java/io/dataease/base/mapper/SysUserMapper.xml
浏览文件 @
31e5cca4
...
...
@@ -17,6 +17,7 @@
<result
column=
"pwd_reset_time"
jdbcType=
"BIGINT"
property=
"pwdResetTime"
/>
<result
column=
"create_time"
jdbcType=
"BIGINT"
property=
"createTime"
/>
<result
column=
"update_time"
jdbcType=
"BIGINT"
property=
"updateTime"
/>
<result
column=
"language"
jdbcType=
"VARCHAR"
property=
"language"
/>
</resultMap>
<sql
id=
"Example_Where_Clause"
>
<where>
...
...
@@ -78,7 +79,7 @@
</sql>
<sql
id=
"Base_Column_List"
>
user_id, dept_id, username, nick_name, gender, phone, email, `password`, is_admin,
enabled, create_by, update_by, pwd_reset_time, create_time, update_time
enabled, create_by, update_by, pwd_reset_time, create_time, update_time
, `language`
</sql>
<select
id=
"selectByExample"
parameterType=
"io.dataease.base.domain.SysUserExample"
resultMap=
"BaseResultMap"
>
select
...
...
@@ -115,14 +116,14 @@
nick_name, gender, phone,
email, `password`, is_admin,
enabled, create_by, update_by,
pwd_reset_time, create_time, update_time
)
pwd_reset_time, create_time, update_time
,
`language`
)
values (#{userId,jdbcType=BIGINT}, #{deptId,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR},
#{nickName,jdbcType=VARCHAR}, #{gender,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR},
#{email,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{isAdmin,jdbcType=BIT},
#{enabled,jdbcType=BIGINT}, #{createBy,jdbcType=VARCHAR}, #{updateBy,jdbcType=VARCHAR},
#{pwdResetTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}
)
#{pwdResetTime,jdbcType=BIGINT}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT}
,
#{language,jdbcType=VARCHAR}
)
</insert>
<insert
id=
"insertSelective"
parameterType=
"io.dataease.base.domain.SysUser"
>
insert into sys_user
...
...
@@ -172,6 +173,9 @@
<if
test=
"updateTime != null"
>
update_time,
</if>
<if
test=
"language != null"
>
`language`,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"userId != null"
>
...
...
@@ -219,6 +223,9 @@
<if
test=
"updateTime != null"
>
#{updateTime,jdbcType=BIGINT},
</if>
<if
test=
"language != null"
>
#{language,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select
id=
"countByExample"
parameterType=
"io.dataease.base.domain.SysUserExample"
resultType=
"java.lang.Long"
>
...
...
@@ -275,6 +282,9 @@
<if
test=
"record.updateTime != null"
>
update_time = #{record.updateTime,jdbcType=BIGINT},
</if>
<if
test=
"record.language != null"
>
`language` = #{record.language,jdbcType=VARCHAR},
</if>
</set>
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
...
...
@@ -296,7 +306,8 @@
update_by = #{record.updateBy,jdbcType=VARCHAR},
pwd_reset_time = #{record.pwdResetTime,jdbcType=BIGINT},
create_time = #{record.createTime,jdbcType=BIGINT},
update_time = #{record.updateTime,jdbcType=BIGINT}
update_time = #{record.updateTime,jdbcType=BIGINT},
`language` = #{record.language,jdbcType=VARCHAR}
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
</if>
...
...
@@ -346,6 +357,9 @@
<if
test=
"updateTime != null"
>
update_time = #{updateTime,jdbcType=BIGINT},
</if>
<if
test=
"language != null"
>
`language` = #{language,jdbcType=VARCHAR},
</if>
</set>
where user_id = #{userId,jdbcType=BIGINT}
</update>
...
...
@@ -364,7 +378,8 @@
update_by = #{updateBy,jdbcType=VARCHAR},
pwd_reset_time = #{pwdResetTime,jdbcType=BIGINT},
create_time = #{createTime,jdbcType=BIGINT},
update_time = #{updateTime,jdbcType=BIGINT}
update_time = #{updateTime,jdbcType=BIGINT},
`language` = #{language,jdbcType=VARCHAR}
where user_id = #{userId,jdbcType=BIGINT}
</update>
</mapper>
\ No newline at end of file
backend/src/main/java/io/dataease/base/mapper/ext/AuthMapper.java
浏览文件 @
31e5cca4
...
...
@@ -6,7 +6,6 @@ import io.dataease.auth.api.dto.CurrentRoleDto;
import
io.dataease.auth.entity.SysUserEntity
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.Map
;
public
interface
AuthMapper
{
...
...
backend/src/main/java/io/dataease/base/mapper/ext/AuthMapper.xml
浏览文件 @
31e5cca4
...
...
@@ -20,11 +20,11 @@
<select
id=
"findUser"
resultMap=
"baseMap"
>
select user_id, username,nick_name, dept_id, password, enabled,email, phone from sys_user where user_id = #{userId}
select user_id, username,nick_name, dept_id, password, enabled,email, phone
, language
from sys_user where user_id = #{userId}
</select>
<select
id=
"findUserByName"
resultMap=
"baseMap"
>
select user_id, username,nick_name, dept_id, password, enabled,email, phone from sys_user where username = #{username}
select user_id, username,nick_name, dept_id, password, enabled,email, phone
, language
from sys_user where username = #{username}
</select>
<select
id=
"roleCodes"
resultType=
"String"
>
...
...
backend/src/main/java/io/dataease/controller/sys/SysUserController.java
浏览文件 @
31e5cca4
...
...
@@ -19,6 +19,7 @@ import io.swagger.annotations.ApiOperation;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Optional
;
@RestController
@Api
(
tags
=
"系统:用户管理"
)
...
...
@@ -89,4 +90,15 @@ public class SysUserController {
public
void
updatePersonInfo
(
@RequestBody
SysUserCreateRequest
request
){
sysUserService
.
updatePersonInfo
(
request
);
}
@ApiOperation
(
"设置语言"
)
@PostMapping
(
"/setLanguage/{language}"
)
public
void
setLanguage
(
@PathVariable
String
language
)
{
CurrentUserDto
user
=
AuthUtils
.
getUser
();
Optional
.
ofNullable
(
language
).
ifPresent
(
currentLanguage
->
{
if
(!
currentLanguage
.
equals
(
user
.
getLanguage
()))
{
sysUserService
.
setLanguage
(
user
.
getUserId
(),
currentLanguage
);
}
});
}
}
backend/src/main/java/io/dataease/service/sys/SysUserService.java
浏览文件 @
31e5cca4
...
...
@@ -201,4 +201,12 @@ public class SysUserService {
return
userIds
.
stream
().
map
(
sysUserMapper:
:
selectByPrimaryKey
).
collect
(
Collectors
.
toList
());
}
@CacheEvict
(
value
=
AuthConstants
.
USER_CACHE_NAME
,
key
=
"'user' + #userId"
)
public
void
setLanguage
(
Long
userId
,
String
language
)
{
SysUser
sysUser
=
new
SysUser
();
sysUser
.
setUserId
(
userId
);
sysUser
.
setLanguage
(
language
);
sysUserMapper
.
updateByPrimaryKeySelective
(
sysUser
);
}
}
frontend/src/api/user.js
浏览文件 @
31e5cca4
...
...
@@ -43,3 +43,10 @@ export function uiImage(imageId) {
method
:
'get'
})
}
export
function
languageApi
(
language
)
{
return
request
({
url
:
'/api/user/setLanguage/'
+
language
,
method
:
'post'
})
}
frontend/src/components/LangSelect/index.vue
浏览文件 @
31e5cca4
...
...
@@ -33,7 +33,7 @@ export default {
methods
:
{
handleSetLanguage
(
lang
)
{
this
.
$i18n
.
locale
=
lang
this
.
$store
.
dispatch
(
'
app
/setLanguage'
,
lang
)
this
.
$store
.
dispatch
(
'
user
/setLanguage'
,
lang
)
this
.
$message
({
message
:
'Switch Language Success'
,
type
:
'success'
...
...
frontend/src/layout/components/Topbar.vue
浏览文件 @
31e5cca4
...
...
@@ -35,7 +35,7 @@
<size-select
id=
"size-select"
class=
"right-menu-item hover-effect"
/>
</el-tooltip>
-->
<!--
<lang-select
class=
"right-menu-item hover-effect"
/>
--
>
<lang-select
class=
"right-menu-item hover-effect"
/
>
</
template
>
<el-dropdown
class=
"top-dropdown"
style=
"display: flex;align-items: center;"
>
...
...
@@ -72,15 +72,15 @@ import { isExternal } from '@/utils/validate'
// import Doc from '@/components/Doc'
// import Screenfull from '@/components/Screenfull'
// import SizeSelect from '@/components/SizeSelect'
//
import LangSelect from '@/components/LangSelect'
import
LangSelect
from
'@/components/LangSelect'
import
{
getSysUI
}
from
'@/utils/auth'
export
default
{
name
:
'Topbar'
,
components
:
{
AppLink
AppLink
,
// Screenfull,
// SizeSelect,
//
LangSelect
LangSelect
// Doc
},
data
()
{
...
...
frontend/src/store/getters.js
浏览文件 @
31e5cca4
const
getters
=
{
sidebar
:
state
=>
state
.
app
.
sidebar
,
language
:
state
=>
state
.
app
.
language
,
language
:
state
=>
state
.
user
.
language
,
size
:
state
=>
state
.
app
.
size
,
device
:
state
=>
state
.
app
.
device
,
token
:
state
=>
state
.
user
.
token
,
...
...
frontend/src/store/modules/app.js
浏览文件 @
31e5cca4
import
Cookies
from
'js-cookie'
import
{
getLanguage
}
from
'@/lang/index'
const
state
=
{
sidebar
:
{
opened
:
Cookies
.
get
(
'sidebarStatus'
)
?
!!+
Cookies
.
get
(
'sidebarStatus'
)
:
true
,
...
...
@@ -7,7 +7,7 @@ const state = {
hide
:
false
},
device
:
'desktop'
,
language
:
getLanguage
(),
size
:
Cookies
.
get
(
'size'
)
||
'small'
}
...
...
@@ -32,10 +32,7 @@ const mutations = {
SET_SIDEBAR_HIDE
:
(
state
,
status
)
=>
{
state
.
sidebar
.
hide
=
status
},
SET_LANGUAGE
:
(
state
,
language
)
=>
{
state
.
language
=
language
Cookies
.
set
(
'language'
,
language
)
},
SET_SIZE
:
(
state
,
size
)
=>
{
state
.
size
=
size
Cookies
.
set
(
'size'
,
size
)
...
...
@@ -57,9 +54,6 @@ const actions = {
},
setSize
({
commit
},
size
)
{
commit
(
'SET_SIZE'
,
size
)
},
setLanguage
({
commit
},
language
)
{
commit
(
'SET_LANGUAGE'
,
language
)
}
}
...
...
frontend/src/store/modules/user.js
浏览文件 @
31e5cca4
import
{
login
,
logout
,
getInfo
,
getUIinfo
}
from
'@/api/user'
import
{
login
,
logout
,
getInfo
,
getUIinfo
,
languageApi
}
from
'@/api/user'
import
{
getToken
,
setToken
,
removeToken
,
setSysUI
}
from
'@/utils/auth'
import
{
resetRouter
}
from
'@/router'
import
{
format
}
from
'@/utils/formatUi'
import
{
getLanguage
}
from
'@/lang/index'
import
Cookies
from
'js-cookie'
const
getDefaultState
=
()
=>
{
return
{
token
:
getToken
(),
...
...
@@ -14,7 +15,7 @@ const getDefaultState = () => {
loadMenus
:
false
,
// 当前用户拥有哪些资源权限
permissions
:
[],
language
:
getLanguage
(),
uiInfo
:
null
}
}
...
...
@@ -51,6 +52,10 @@ const mutations = {
},
SET_UI_INFO
:
(
state
,
info
)
=>
{
state
.
uiInfo
=
info
},
SET_LANGUAGE
:
(
state
,
language
)
=>
{
state
.
language
=
language
Cookies
.
set
(
'language'
,
language
)
}
}
...
...
@@ -87,13 +92,15 @@ const actions = {
const
currentUser
=
data
commit
(
'SET_USER'
,
currentUser
)
const
{
roles
,
nickName
,
permissions
}
=
data
const
{
roles
,
nickName
,
permissions
,
language
}
=
data
commit
(
'SET_ROLES'
,
roles
)
commit
(
'SET_NAME'
,
nickName
)
// commit('SET_AVATAR', avatar)
commit
(
'SET_PERMISSIONS'
,
permissions
)
commit
(
'SET_LANGUAGE'
,
language
)
resolve
(
data
)
}).
catch
(
error
=>
{
reject
(
error
)
...
...
@@ -144,6 +151,11 @@ const actions = {
},
setLoginMsg
({
commit
,
msg
})
{
commit
(
'SET_LOGIN_MSG'
,
msg
)
},
setLanguage
({
commit
},
language
)
{
languageApi
(
language
).
then
(()
=>
{
commit
(
'SET_LANGUAGE'
,
language
)
})
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论