Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-cloud-account
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.account
pica-cloud-account
提交
d90305eb
提交
d90305eb
编写于
9月 22, 2021
作者:
xinxu.wang
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/release' into release
上级
cda83791
35a6f945
流水线
#38205
已取消 于阶段
变更
8
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
101 行增加
和
14 行删除
+101
-14
LoginController.java
...ud/account/account/server/controller/LoginController.java
+11
-8
TokenController.java
...ud/account/account/server/controller/TokenController.java
+10
-6
DoctorMapper.java
...ica/cloud/account/account/server/mapper/DoctorMapper.java
+4
-0
LoginService.java
...ca/cloud/account/account/server/service/LoginService.java
+4
-0
TokenService.java
...ca/cloud/account/account/server/service/TokenService.java
+2
-0
LoginServiceImpl.java
...account/account/server/service/impl/LoginServiceImpl.java
+22
-0
TokenServiceImpl.java
...account/account/server/service/impl/TokenServiceImpl.java
+42
-0
DoctorMapper.xml
server/src/main/resources/mybatis/DoctorMapper.xml
+6
-0
未找到文件。
server/src/main/java/com/pica/cloud/account/account/server/controller/LoginController.java
浏览文件 @
d90305eb
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pica.cloud.account.account.server.entity.*
;
import
com.pica.cloud.account.account.server.entity.AesBean.AesAuthCodeReq
;
import
com.pica.cloud.account.account.server.entity.*
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.enums.SourceTypeEnum
;
...
...
@@ -19,17 +18,14 @@ import com.pica.cloud.account.account.server.service.TokenService;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.account.account.server.util.CryptoUtil
;
import
com.pica.cloud.account.account.server.util.RSAUtil
;
import
com.pica.cloud.foundation.encryption.common.constants.EncryptConstants
;
import
com.pica.cloud.foundation.encryption.util.EncryptUtils
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
import
com.pica.cloud.foundation.entity.PicaWarnException
;
import
com.pica.cloud.foundation.redis.CacheClient
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.service.starter.interceptor.EnabledLoginValidate
;
import
com.pica.cloud.foundation.utils.annotation.LoginPermission
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
import
com.pica.cloud.foundation.utils.utils.StringUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.catalina.servlet4preview.http.HttpServletRequest
;
...
...
@@ -38,9 +34,7 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
springfox.documentation.spring.web.json.Json
;
import
java.util.HashMap
;
import
java.util.Map
;
@Api
(
description
=
"登录资源"
)
...
...
@@ -439,4 +433,13 @@ public class LoginController extends AccountBaseController {
return
PicaResponse
.
toResponse
(
login
.
getToken
());
}
@ApiOperation
(
value
=
"切换登录"
)
@PostMapping
(
"/login/switch"
)
@EnabledLoginValidate
public
PicaResponse
<
String
>
loginSwitch
(
@RequestBody
EncryptEntity
entity
)
throws
Exception
{
Map
<
String
,
Object
>
req
=
CryptoUtil
.
decrypt
(
entity
,
Map
.
class
);
loginService
.
loginSwitch
(
super
.
getAccountUser
(),
super
.
getRedisClient
().
getToken
(
String
.
valueOf
(
req
.
get
(
"token"
)),
AccountUser
.
class
));
return
PicaResponse
.
toResponse
();
}
}
server/src/main/java/com/pica/cloud/account/account/server/controller/TokenController.java
浏览文件 @
d90305eb
...
...
@@ -2,13 +2,13 @@ package com.pica.cloud.account.account.server.controller;
import
com.pica.cloud.account.account.server.service.TokenService
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
com.pica.cloud.foundation.utils.entity.PicaAdmin
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestHeader
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
springfox.documentation.annotations.ApiIgnore
;
import
java.util.Map
;
...
...
@@ -42,6 +42,10 @@ public class TokenController extends AccountBaseController {
return
PicaResponse
.
toResponse
();
}
@ApiIgnore
@GetMapping
(
value
=
"/token/remove"
)
public
PicaResponse
removeToken
(
@RequestParam
(
"timestamp"
)
Long
timestamp
)
{
tokenService
.
removeToken
(
timestamp
);
return
PicaResponse
.
toResponse
();
}
}
server/src/main/java/com/pica/cloud/account/account/server/mapper/DoctorMapper.java
浏览文件 @
d90305eb
...
...
@@ -8,6 +8,7 @@ import com.pica.cloud.account.account.server.model.WechatInfoDto;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -122,4 +123,7 @@ public interface DoctorMapper {
DoctorUnionResp
getDoctorByAcctId
(
Long
acctId
);
List
<
Integer
>
selectIdByParams
(
@Param
(
"fromId"
)
Integer
fromId
,
@Param
(
"toId"
)
Integer
toId
,
@Param
(
"loginTime"
)
Date
loginTime
);
}
\ No newline at end of file
server/src/main/java/com/pica/cloud/account/account/server/service/LoginService.java
浏览文件 @
d90305eb
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.entity.AccountUser
;
import
com.pica.cloud.account.account.server.entity.LogLoginAes
;
import
com.pica.cloud.account.account.server.entity.LoginResult
;
import
com.pica.cloud.account.account.server.entity.PICAPDoctor
;
...
...
@@ -11,6 +12,7 @@ import javax.servlet.http.HttpServletRequest;
import
java.util.Map
;
import
com.pica.cloud.account.account.server.req.OneClickLoginReq
;
import
com.pica.cloud.account.account.server.vo.OneClickLoginResultVo
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
public
interface
LoginService
{
/**
...
...
@@ -101,4 +103,6 @@ public interface LoginService {
LoginResult
loginQRCode
(
BaseRequest
request
);
void
loginSwitch
(
AccountUser
oldUser
,
AccountUser
loginUser
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/TokenService.java
浏览文件 @
d90305eb
...
...
@@ -13,4 +13,6 @@ public interface TokenService {
void
tokenContinueTime
(
String
token
,
Integer
sourceType
,
Integer
seconds
);
/** 删除token */
void
removeToken
(
Long
timestamp
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/impl/LoginServiceImpl.java
浏览文件 @
d90305eb
...
...
@@ -12,6 +12,7 @@ import com.pica.cloud.account.account.server.entity.*;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.enums.SourceTypeEnum
;
import
com.pica.cloud.account.account.server.exception.AccountException
;
import
com.pica.cloud.account.account.server.log.AccountLogEntityUtils
;
import
com.pica.cloud.account.account.server.log.AccountLogUtils
;
import
com.pica.cloud.account.account.server.mapper.*
;
...
...
@@ -29,6 +30,7 @@ import com.pica.cloud.foundation.entity.PicaException;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
import
com.pica.cloud.foundation.entity.PicaWarnException
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
import
com.pica.cloud.foundation.utils.utils.StringUtil
;
import
com.pica.cloud.foundation.utils.utils.ValidateUtils
;
import
com.pica.cloud.patient.smartcontract.common.utils.HttpClientCloudUtils
;
...
...
@@ -47,6 +49,7 @@ import java.security.PublicKey;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
@Service
public
class
LoginServiceImpl
implements
LoginService
{
...
...
@@ -1083,4 +1086,23 @@ public class LoginServiceImpl implements LoginService {
return
logLoginAesMapper
.
insert
(
aes
);
}
/**
*切换登录
*/
@Override
public
void
loginSwitch
(
AccountUser
oldUser
,
AccountUser
loginUser
)
{
if
(
Objects
.
isNull
(
loginUser
))
{
throw
new
PicaException
(
PicaResultCode
.
LOGIN_FAILE
);
}
tokenUtils
.
tokenContinueTime
(
loginUser
.
getToken
(),
oldUser
.
getLoginFrom
(),
0
);
//记录登录日志
LogLoginEntity
entity
=
AccountLogEntityUtils
.
getLogLoginEntity
(
Integer
.
valueOf
(
String
.
valueOf
(
loginUser
.
getAcctId
())),
oldUser
.
getLoginPlatform
(),
oldUser
.
getLoginFrom
(),
AccountTypeEnum
.
LOGIN_WE_CHAT
.
getCode
(),
oldUser
.
getLoginIp
(),
AccountTypeEnum
.
LOGIN_STATUS_SUCCESS
.
getCode
(),
AccountTypeEnum
.
LOG_TYPE_LOGIN
.
getCode
(),
loginUser
.
getToken
(),
1
,
oldUser
.
getUserTokenTourist
());
picaLogUtils
.
info
(
entity
);
}
}
server/src/main/java/com/pica/cloud/account/account/server/service/impl/TokenServiceImpl.java
浏览文件 @
d90305eb
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
.
impl
;
import
com.pica.cloud.account.account.server.constants.Constants
;
import
com.pica.cloud.account.account.server.mapper.DoctorMapper
;
import
com.pica.cloud.account.account.server.service.TokenService
;
import
com.pica.cloud.account.account.server.util.TokenUtils
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
import
com.pica.cloud.foundation.utils.utils.CommonUtil
;
import
com.pica.cloud.foundation.utils.utils.date.D
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -16,6 +18,7 @@ import org.springframework.util.CollectionUtils;
import
org.springframework.util.StringUtils
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.UUID
;
...
...
@@ -40,6 +43,9 @@ public class TokenServiceImpl implements TokenService {
@Qualifier
(
"accountThreadPool"
)
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@Autowired
private
DoctorMapper
doctorMapper
;
@Override
public
String
getToken
(
Map
<
String
,
Object
>
headersMap
)
{
String
mobile
=
new
StringBuilder
(
"9"
).
append
(
CommonUtil
.
getRandom
(
10
)).
toString
();
...
...
@@ -90,4 +96,40 @@ public class TokenServiceImpl implements TokenService {
return
;
}
@Override
public
void
removeToken
(
Long
timestamp
)
{
//new Thread(() -> {
try
{
Date
lastLoginTime
=
new
Date
(
timestamp
);
for
(
Integer
fromDoctorId
=
0
;
fromDoctorId
<
1000412091
;
fromDoctorId
+=
10000
)
{
logger
.
info
(
"start remove token: {}"
,
fromDoctorId
);
List
<
Integer
>
doctorIdList
=
doctorMapper
.
selectIdByParams
(
fromDoctorId
,
fromDoctorId
+
10000
,
lastLoginTime
);
if
(
CollectionUtils
.
isEmpty
(
doctorIdList
))
{
Thread
.
sleep
(
2000
);
continue
;
}
removeTokenByDoctorIdList
(
doctorIdList
);
logger
.
info
(
"remove token done: {} {}"
,
fromDoctorId
,
doctorIdList
.
size
());
}
}
catch
(
Exception
ex
)
{
// ingnore
}
//});
}
private
void
removeTokenByDoctorIdList
(
List
<
Integer
>
doctorIdList
)
throws
Exception
{
for
(
Integer
doctorId
:
doctorIdList
)
{
String
key1
=
String
.
format
(
"token-doctor-%d-app"
,
doctorId
);
String
key2
=
String
.
format
(
"token-doctor-%d"
,
doctorId
);
String
key3
=
redisClient
.
get
(
key1
);
redisClient
.
del
(
key1
);
redisClient
.
del
(
key2
);
if
(!
StringUtils
.
isEmpty
(
key3
))
{
redisClient
.
del
(
key3
);
}
Thread
.
sleep
(
10
);
}
}
}
server/src/main/resources/mybatis/DoctorMapper.xml
浏览文件 @
d90305eb
...
...
@@ -1093,4 +1093,10 @@
where d.acct_id = #{acctId} and d.delete_flag = 1
</select>
<select
id=
"selectIdByParams"
parameterType=
"java.util.Map"
resultType=
"java.lang.Integer"
>
select id from p_doctor
where id
>
= #{fromId}
and id
<
= #{toId}
and last_login_time
<
= #{loginTime}
</select>
</mapper>
\ No newline at end of file
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录