Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fulixin
dsk-operate-sys-cscec
Commits
101727f9
Commit
101727f9
authored
Nov 27, 2023
by
tianhongyang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'V20230915' of
http://192.168.60.201/root/dsk-operate-sys
into V20230915
parents
f32d1c0f
d0c2615b
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
221 additions
and
209 deletions
+221
-209
SysLoginController.java
...ava/com/dsk/web/controller/system/SysLoginController.java
+23
-16
application-prod.yml
dsk-admin/src/main/resources/application-prod.yml
+1
-1
application-test.yml
dsk-admin/src/main/resources/application-test.yml
+1
-1
GoViewProjectAPIController.java
...dsk/biz/goview/controller/GoViewProjectAPIController.java
+159
-156
SysLoginService.java
...src/main/java/com/dsk/system/service/SysLoginService.java
+37
-35
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/system/SysLoginController.java
View file @
101727f9
...
...
@@ -12,8 +12,11 @@ import cn.hutool.core.util.ReUtil;
import
com.dsk.common.constant.Constants
;
import
com.dsk.common.constant.GlobalConstants
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.tenant.helper.TenantHelper
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.redis.RedisUtils
;
import
com.dsk.jsk.util.IpUtil
;
import
com.dsk.system.domain.SysMenu
;
import
com.dsk.system.domain.SysUser
;
import
com.dsk.common.core.domain.model.EmailLoginBody
;
...
...
@@ -74,13 +77,12 @@ public class SysLoginController {
// return R.ok(ajax);
LoginVo
loginVo
=
loginService
.
passwordLogin
(
loginBody
);
String
ipAddr
=
IpUtil
.
getIpAddr
(
request
);
LoginVo
loginVo
=
loginService
.
passwordLogin
(
loginBody
,
ipAddr
);
return
R
.
ok
(
loginVo
);
}
// /**
// * 发送短信验证码
// *
...
...
@@ -107,20 +109,18 @@ public class SysLoginController {
@PostMapping
(
"/smsLogin"
)
public
R
<
LoginVo
>
smsLogin
(
@Validated
@RequestBody
SmsLoginBody
smsLoginBody
)
{
// 生成令牌
LoginVo
loginVo
=
loginService
.
smsLogin
(
smsLoginBody
.
getPhonenumber
(),
smsLoginBody
.
getSmsCode
());
LoginVo
loginVo
=
loginService
.
smsLogin
(
smsLoginBody
.
getPhonenumber
(),
smsLoginBody
.
getSmsCode
());
return
R
.
ok
(
loginVo
);
}
/**
* 动态切换租户
*
*/
@SaCheckLogin
@PostMapping
(
"/switch/tenant"
)
public
R
<
LoginVo
>
switchTenant
(
String
tenantId
)
{
LoginVo
loginVo
=
loginService
.
switchTenant
(
tenantId
);
LoginVo
loginVo
=
loginService
.
switchTenant
(
tenantId
);
return
R
.
ok
(
loginVo
);
}
...
...
@@ -134,7 +134,7 @@ public class SysLoginController {
@PostMapping
(
"/user/tenants"
)
public
R
<
List
<
SysTenantVo
>>
userTenants
()
{
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
List
<
SysTenantVo
>
tenantList
=
loginService
.
tenantListByAccount
(
loginUser
.
getUserPhone
());
List
<
SysTenantVo
>
tenantList
=
loginService
.
tenantListByAccount
(
loginUser
.
getUserPhone
());
return
R
.
ok
(
tenantList
);
}
...
...
@@ -146,12 +146,12 @@ public class SysLoginController {
*/
@SaIgnore
@PostMapping
(
"/user/tenant/list"
)
public
R
<
List
<
SysTenantVo
>>
userTenantList
(
String
phone
)
{
if
(!
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
phone
))
{
public
R
<
List
<
SysTenantVo
>>
userTenantList
(
String
phone
)
{
if
(!
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
phone
))
{
return
R
.
ok
(
new
ArrayList
<>());
}
List
<
SysTenantVo
>
tenantList
=
loginService
.
tenantListByAccount
(
phone
);
if
(
CollectionUtil
.
isNotEmpty
(
tenantList
))
{
List
<
SysTenantVo
>
tenantList
=
loginService
.
tenantListByAccount
(
phone
);
if
(
CollectionUtil
.
isNotEmpty
(
tenantList
))
{
for
(
SysTenantVo
sysTenantVo
:
tenantList
)
{
sysTenantVo
.
setCompanyName
(
""
);
}
...
...
@@ -161,21 +161,23 @@ public class SysLoginController {
/**
* 获取当前用户默认租户
*
* @return
*/
@SaCheckLogin
@PostMapping
(
"/user/default/tenant"
)
public
R
<
Map
>
userDefaultTenant
()
{
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
Assert
.
notNull
(
loginUser
,
"用户信息不存在!"
);
Assert
.
notNull
(
loginUser
,
"用户信息不存在!"
);
String
defaultTenantKey
=
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
loginUser
.
getUserPhone
();
String
defaultTenant
=
RedisUtils
.
getCacheObject
(
defaultTenantKey
);
return
R
.
ok
(
MapUtil
.
of
(
"tenantId"
,
defaultTenant
));
return
R
.
ok
(
MapUtil
.
of
(
"tenantId"
,
defaultTenant
));
}
/**
* 获取当前用户默认租户
*
* @return
*/
@SaIgnore
...
...
@@ -185,7 +187,7 @@ public class SysLoginController {
// Assert.notNull(loginUser,"用户信息不存在!");
String
defaultTenantKey
=
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
phone
;
String
defaultTenant
=
RedisUtils
.
getCacheObject
(
defaultTenantKey
);
return
R
.
ok
(
MapUtil
.
of
(
"tenantId"
,
defaultTenant
));
return
R
.
ok
(
MapUtil
.
of
(
"tenantId"
,
defaultTenant
));
}
/**
...
...
@@ -235,8 +237,13 @@ public class SysLoginController {
* @return 用户信息
*/
@GetMapping
(
"getInfo"
)
public
R
<
Map
<
String
,
Object
>>
getInfo
()
{
public
R
<
Map
<
String
,
Object
>>
getInfo
(
HttpServletRequest
request
)
{
LoginUser
loginUser
=
LoginHelper
.
getLoginUser
();
//校验当前发请求的IP与登录账号的IP是否相同
String
loginUserIpaddr
=
loginUser
.
getIpaddr
();
if
(
StringUtils
.
isNotBlank
(
loginUserIpaddr
)
&&
!
Objects
.
equals
(
IpUtil
.
getIpAddr
(
request
),
loginUserIpaddr
))
{
throw
new
ServiceException
(
"该账号已在其他地方登录,请求失败!"
,
401
);
}
SysUser
user
=
userService
.
selectUserById
(
loginUser
.
getUserId
());
Map
<
String
,
Object
>
ajax
=
new
HashMap
<>();
ajax
.
put
(
"user"
,
user
);
...
...
dsk-admin/src/main/resources/application-prod.yml
View file @
101727f9
...
...
@@ -108,7 +108,7 @@ spring:
# 端口,默认为6379
port
:
6379
# 数据库索引
database
:
6
database
:
13
# 密码
password
:
Xi8$r*@d7zn5FaP2
# 密码(如没有密码请注释掉)
...
...
dsk-admin/src/main/resources/application-test.yml
View file @
101727f9
...
...
@@ -105,7 +105,7 @@ spring:
# 端口,默认为6379
port
:
6379
# 数据库索引
database
:
1
0
database
:
1
3
# 密码
password
:
zfTFIJjaN#6xB83r
# 密码(如没有密码请注释掉)
...
...
dsk-module/dsk-biz-bi/src/main/java/com/dsk/biz/goview/controller/GoViewProjectAPIController.java
View file @
101727f9
This diff is collapsed.
Click to expand it.
dsk-system/src/main/java/com/dsk/system/service/SysLoginService.java
View file @
101727f9
...
...
@@ -83,9 +83,10 @@ public class SysLoginService {
* 登录验证
*
* @param loginBody 唯一标识
* @param ipAddr IP地址
* @return 结果
*/
public
LoginVo
passwordLogin
(
LoginBody
loginBody
)
{
public
LoginVo
passwordLogin
(
LoginBody
loginBody
,
String
ipAddr
)
{
String
tenantId
=
loginBody
.
getTenantId
();
String
username
=
loginBody
.
getUsername
();
String
password
=
SaBase64Util
.
decode
(
loginBody
.
getPassword
());
...
...
@@ -96,12 +97,12 @@ public class SysLoginService {
validateCaptcha
(
username
,
code
,
uuid
);
}
if
(
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
username
))
{
String
defaultTenantId
=
RedisUtils
.
getCacheObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
username
);
log
.
info
(
"登录用户:{} 获取缓存默认租户:"
+
tenantId
,
username
);
if
(
StrUtil
.
isEmpty
(
tenantId
)&&
StrUtil
.
isNotBlank
(
defaultTenantId
))
{
defaultTenantId
=
checkDefaultTenant
(
defaultTenantId
,
username
);
tenantId
=
defaultTenantId
;
if
(
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
username
))
{
String
defaultTenantId
=
RedisUtils
.
getCacheObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
username
);
log
.
info
(
"登录用户:{} 获取缓存默认租户:"
+
tenantId
,
username
);
if
(
StrUtil
.
isEmpty
(
tenantId
)
&&
StrUtil
.
isNotBlank
(
defaultTenantId
))
{
defaultTenantId
=
checkDefaultTenant
(
defaultTenantId
,
username
);
tenantId
=
defaultTenantId
;
}
}
...
...
@@ -119,7 +120,7 @@ public class SysLoginService {
throw
new
UserException
(
"user.not.exists"
,
username
);
}
tenantId
=
sysUser
.
getTenantId
();
}
else
{
}
else
{
SysUser
sysUser
=
sysUsers
.
get
(
0
);
tenantId
=
sysUser
.
getTenantId
();
}
...
...
@@ -143,6 +144,7 @@ public class SysLoginService {
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
LoginUser
loginUser
=
buildLoginUser
(
user
);
// 生成token
loginUser
.
setIpaddr
(
ipAddr
);
LoginHelper
.
loginByDevice
(
loginUser
,
DeviceType
.
PC
);
recordLogininfor
(
username
,
Constants
.
LOGIN_SUCCESS
,
MessageUtils
.
message
(
"user.login.success"
));
...
...
@@ -189,13 +191,13 @@ public class SysLoginService {
}
public
LoginVo
smsLogin
(
String
username
,
String
smsCode
)
{
String
tenantId
=
null
;
if
(
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
username
))
{
String
defaultTenantId
=
RedisUtils
.
getCacheObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
username
);
log
.
info
(
"登录用户:{} 获取缓存默认租户:"
+
tenantId
,
username
);
if
(
StrUtil
.
isNotBlank
(
defaultTenantId
))
{
defaultTenantId
=
checkDefaultTenant
(
defaultTenantId
,
username
);
tenantId
=
defaultTenantId
;
String
tenantId
=
null
;
if
(
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
username
))
{
String
defaultTenantId
=
RedisUtils
.
getCacheObject
(
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
username
);
log
.
info
(
"登录用户:{} 获取缓存默认租户:"
+
tenantId
,
username
);
if
(
StrUtil
.
isNotBlank
(
defaultTenantId
))
{
defaultTenantId
=
checkDefaultTenant
(
defaultTenantId
,
username
);
tenantId
=
defaultTenantId
;
}
}
...
...
@@ -213,7 +215,7 @@ public class SysLoginService {
throw
new
UserException
(
"user.not.exists"
,
username
);
}
tenantId
=
sysUser
.
getTenantId
();
}
else
{
}
else
{
SysUser
sysUser
=
sysUsers
.
get
(
0
);
tenantId
=
sysUser
.
getTenantId
();
}
...
...
@@ -370,9 +372,9 @@ public class SysLoginService {
private
SysUser
loadUserByUsername
(
String
username
)
{
SysUser
user
=
userMapper
.
selectOne
(
new
LambdaQueryWrapper
<
SysUser
>()
.
select
(
SysUser:
:
getUserName
,
SysUser:
:
getStatus
)
.
eq
(
SysUser:
:
getUserName
,
username
)
.
or
().
eq
(
SysUser:
:
getPhonenumber
,
username
));
.
select
(
SysUser:
:
getUserName
,
SysUser:
:
getStatus
)
.
eq
(
SysUser:
:
getUserName
,
username
)
.
or
().
eq
(
SysUser:
:
getPhonenumber
,
username
));
if
(
ObjectUtil
.
isNull
(
user
))
{
log
.
info
(
"登录用户:{} 不存在."
,
username
);
throw
new
UserException
(
"user.not.exists"
,
username
);
...
...
@@ -385,8 +387,8 @@ public class SysLoginService {
private
SysUser
loadUserByPhonenumber
(
String
phonenumber
)
{
SysUser
user
=
userMapper
.
selectOne
(
new
LambdaQueryWrapper
<
SysUser
>()
.
select
(
SysUser:
:
getPhonenumber
,
SysUser:
:
getStatus
)
.
eq
(
SysUser:
:
getPhonenumber
,
phonenumber
));
.
select
(
SysUser:
:
getPhonenumber
,
SysUser:
:
getStatus
)
.
eq
(
SysUser:
:
getPhonenumber
,
phonenumber
));
if
(
ObjectUtil
.
isNull
(
user
))
{
log
.
info
(
"登录用户:{} 不存在."
,
phonenumber
);
throw
new
UserException
(
"user.not.exists"
,
phonenumber
);
...
...
@@ -399,8 +401,8 @@ public class SysLoginService {
private
SysUser
loadUserByEmail
(
String
email
)
{
SysUser
user
=
userMapper
.
selectOne
(
new
LambdaQueryWrapper
<
SysUser
>()
.
select
(
SysUser:
:
getPhonenumber
,
SysUser:
:
getStatus
)
.
eq
(
SysUser:
:
getEmail
,
email
));
.
select
(
SysUser:
:
getPhonenumber
,
SysUser:
:
getStatus
)
.
eq
(
SysUser:
:
getEmail
,
email
));
if
(
ObjectUtil
.
isNull
(
user
))
{
log
.
info
(
"登录用户:{} 不存在."
,
email
);
throw
new
UserException
(
"user.not.exists"
,
email
);
...
...
@@ -509,14 +511,14 @@ public class SysLoginService {
log
.
info
(
"登录企业:{} 已被停用."
,
tenant
.
getCompanyName
());
throw
new
TenantException
(
"company.blocked"
);
}
else
if
(
ObjectUtil
.
isNotNull
(
tenant
.
getExpireTime
())
&&
new
Date
().
after
(
tenant
.
getExpireTime
()))
{
&&
new
Date
().
after
(
tenant
.
getExpireTime
()))
{
log
.
info
(
"登录企业:{} 已超过有效期."
,
tenant
.
getCompanyName
());
throw
new
TenantException
(
"company.expired"
);
}
}
public
String
checkDefaultTenant
(
String
tenantId
,
String
phoneNumber
)
{
public
String
checkDefaultTenant
(
String
tenantId
,
String
phoneNumber
)
{
if
(!
TenantHelper
.
isEnable
())
{
return
null
;
}
...
...
@@ -557,16 +559,16 @@ public class SysLoginService {
if
(
ReUtil
.
isMatch
(
RegexPool
.
MOBILE
,
username
))
{
LambdaQueryWrapper
<
SysUser
>
lqw
=
new
LambdaQueryWrapper
<
SysUser
>()
.
select
(
SysUser:
:
getUserName
,
SysUser:
:
getStatus
,
SysUser:
:
getTenantId
,
SysUser:
:
getDelFlag
)
.
eq
(
SysUser:
:
getPhonenumber
,
username
)
.
orderByDesc
(
SysUser:
:
getUserId
);
.
select
(
SysUser:
:
getUserName
,
SysUser:
:
getStatus
,
SysUser:
:
getTenantId
,
SysUser:
:
getDelFlag
)
.
eq
(
SysUser:
:
getPhonenumber
,
username
)
.
orderByDesc
(
SysUser:
:
getUserId
);
// sysUsers = userMapper.selectUserByTenantPhone(username);
sysUsers
=
userMapper
.
selectList
(
lqw
);
}
else
{
LambdaQueryWrapper
<
SysUser
>
lqw
=
new
LambdaQueryWrapper
<
SysUser
>()
.
select
(
SysUser:
:
getUserName
,
SysUser:
:
getStatus
,
SysUser:
:
getTenantId
)
.
eq
(
SysUser:
:
getUserName
,
username
)
.
orderByDesc
(
SysUser:
:
getUserId
);
.
select
(
SysUser:
:
getUserName
,
SysUser:
:
getStatus
,
SysUser:
:
getTenantId
)
.
eq
(
SysUser:
:
getUserName
,
username
)
.
orderByDesc
(
SysUser:
:
getUserId
);
// sysUsers = userMapper.selectUserByTenantUsername(username);
sysUsers
=
userMapper
.
selectList
(
lqw
);
}
...
...
@@ -582,10 +584,10 @@ public class SysLoginService {
Assert
.
notNull
(
userId
,
"企业切换失败!"
);
// 如果 切换租户和当前登录租户一致,仅保存默认租户
LoginUser
loginUserVo
=
LoginHelper
.
getLoginUser
();
if
(
tenantId
.
equals
(
loginUserVo
.
getTenantId
()))
{
if
(
tenantId
.
equals
(
loginUserVo
.
getTenantId
()))
{
//保存当前账号的默认租户
String
defaultTenantKey
=
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
loginUserVo
.
getUserPhone
();
RedisUtils
.
setCacheObject
(
defaultTenantKey
,
tenantId
,
Duration
.
ofDays
(
90
));
RedisUtils
.
setCacheObject
(
defaultTenantKey
,
tenantId
,
Duration
.
ofDays
(
90
));
LoginVo
loginVo
=
new
LoginVo
();
loginVo
.
setTenantId
(
TenantHelper
.
getTenantId
());
loginVo
.
setAccessToken
(
StpUtil
.
getTokenValue
());
...
...
@@ -618,10 +620,10 @@ public class SysLoginService {
LoginHelper
.
loginByDevice
(
loginUser
,
DeviceType
.
PC
);
log
.
info
(
"当前租户由"
+
sysUser
.
getTenantId
()+
"切换为"
+
tenantId
);
log
.
info
(
"当前租户由"
+
sysUser
.
getTenantId
()
+
"切换为"
+
tenantId
);
//保存当前账号的默认租户
String
defaultTenantKey
=
GlobalConstants
.
PHONE_DEFAULT_TENANT
+
loginUser
.
getUserPhone
();
RedisUtils
.
setCacheObject
(
defaultTenantKey
,
tenantId
,
Duration
.
ofDays
(
90
));
RedisUtils
.
setCacheObject
(
defaultTenantKey
,
tenantId
,
Duration
.
ofDays
(
90
));
recordLogininfor
(
username
,
Constants
.
LOGIN_SUCCESS
,
MessageUtils
.
message
(
"user.login.success"
));
recordLoginInfo
(
user
.
getUserId
(),
username
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment