Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
huang.tao
/
jmai-platform
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
5d131f57
authored
Jan 28, 2026
by
zhu.zewen
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
优化云签接口
parent
f3ec19d1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
43 deletions
jmai-physic/src/main/java/com/jmai/physic/cloudsign/CloudsignService.java
jmai-physic/src/main/java/com/jmai/physic/controller/CloudSignController.java
jmai-physic/src/main/java/com/jmai/physic/cloudsign/CloudsignService.java
View file @
5d131f57
...
@@ -10,8 +10,11 @@ import com.jmai.physic.entity.CloudSignToken;
...
@@ -10,8 +10,11 @@ import com.jmai.physic.entity.CloudSignToken;
import
com.jmai.physic.mapper.CloudSignTokenMapper
;
import
com.jmai.physic.mapper.CloudSignTokenMapper
;
import
com.jmai.sys.ctx.SpringContextUtils
;
import
com.jmai.sys.ctx.SpringContextUtils
;
import
com.jmai.sys.dto.UserDto
;
import
com.jmai.sys.dto.UserDto
;
import
com.jmai.sys.service.UserService
;
import
com.jmai.sys.util.HttpUtils
;
import
com.jmai.sys.util.HttpUtils
;
import
com.jmai.sys.util.OpenUtil
;
import
com.jmai.sys.util.OpenUtil
;
import
java.util.Optional
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -26,6 +29,8 @@ public class CloudsignService {
...
@@ -26,6 +29,8 @@ public class CloudsignService {
private
CloudSignProperties
cloudSignProperties
;
private
CloudSignProperties
cloudSignProperties
;
@Resource
@Resource
private
CloudSignTokenMapper
cloudSignTokenMapper
;
private
CloudSignTokenMapper
cloudSignTokenMapper
;
@Resource
private
UserService
userService
;
private
String
buildUrl
(
String
endpoint
)
{
private
String
buildUrl
(
String
endpoint
)
{
return
cloudSignProperties
.
getHost
()
+
endpoint
;
return
cloudSignProperties
.
getHost
()
+
endpoint
;
...
@@ -65,10 +70,11 @@ public class CloudsignService {
...
@@ -65,10 +70,11 @@ public class CloudsignService {
/**
/**
* 检查云签状态
* 检查云签状态
* @param
request
* @param
encryptedToken
*/
*/
public
QueryStatusResponse
queryStatus
(
QueryStatusRequest
request
){
public
QueryStatusResponse
queryStatus
(
String
encryptedToken
){
String
logTip
=
"queryStatus"
;
String
logTip
=
"queryStatus"
;
QueryStatusRequest
request
=
new
QueryStatusRequest
();
// 自动填充业务参数和加密令牌
// 自动填充业务参数和加密令牌
if
(
cloudSignProperties
.
getTestEnabled
())
{
if
(
cloudSignProperties
.
getTestEnabled
())
{
request
.
setBusinessOrgCode
(
cloudSignProperties
.
getTestBusinessOrgCode
());
request
.
setBusinessOrgCode
(
cloudSignProperties
.
getTestBusinessOrgCode
());
...
@@ -79,7 +85,7 @@ public class CloudsignService {
...
@@ -79,7 +85,7 @@ public class CloudsignService {
request
.
setBusinessSystemCode
(
cloudSignProperties
.
getBusinessSystemCode
());
request
.
setBusinessSystemCode
(
cloudSignProperties
.
getBusinessSystemCode
());
request
.
setBusinessSystemAppID
(
cloudSignProperties
.
getBusinessSystemApplD
());
request
.
setBusinessSystemAppID
(
cloudSignProperties
.
getBusinessSystemApplD
());
}
}
request
.
setEncryptedToken
(
getCurrentUserEncryptedToken
());
// 设置从数据库获取的令牌
request
.
setEncryptedToken
(
encryptedToken
);
String
json
=
OpenUtil
.
toJson
(
request
);
String
json
=
OpenUtil
.
toJson
(
request
);
try
{
try
{
...
@@ -123,6 +129,27 @@ public class CloudsignService {
...
@@ -123,6 +129,27 @@ public class CloudsignService {
throw
new
ServiceException
(
"获取失败"
);
throw
new
ServiceException
(
"获取失败"
);
}
}
LoginByPinResponse
loginByPinResponse
=
JSON
.
parseObject
(
response
,
LoginByPinResponse
.
class
);
LoginByPinResponse
loginByPinResponse
=
JSON
.
parseObject
(
response
,
LoginByPinResponse
.
class
);
// 如果登录成功且返回了encryptedToken,则保存到数据库
if
(
loginByPinResponse
.
getStatusCode
()
==
0
&&
loginByPinResponse
.
getEventValue
()
!=
null
&&
loginByPinResponse
.
getEventValue
().
getEncryptedToken
()
!=
null
)
{
String
encryptedToken
=
loginByPinResponse
.
getEventValue
().
getEncryptedToken
();
String
relBizNo
=
request
.
getRelBizNo
();
// 从请求中获取工号
// 根据工号查找用户信息
Optional
<
UserDto
>
userOpt
=
userService
.
getUserByWorkNo
(
relBizNo
);
if
(
userOpt
.
isPresent
())
{
UserDto
user
=
userOpt
.
get
();
// 保存云签令牌信息
saveCloudSignToken
(
user
,
encryptedToken
);
log
.
info
(
"PIN码登录成功,已保存云签令牌,用户ID: {}, 工号: {}"
,
user
.
getUserId
(),
user
.
getWorkNo
());
}
else
{
log
.
warn
(
"PIN码登录成功但未找到对应工号的用户: {}"
,
relBizNo
);
}
}
return
loginByPinResponse
;
return
loginByPinResponse
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"获取动态令牌失败:"
+
e
.
getMessage
(),
e
);
log
.
error
(
"获取动态令牌失败:"
+
e
.
getMessage
(),
e
);
...
@@ -384,22 +411,7 @@ public class CloudsignService {
...
@@ -384,22 +411,7 @@ public class CloudsignService {
* @return 过期时间
* @return 过期时间
*/
*/
public
LocalDateTime
getExpiryTimeFromStatus
(
String
encryptedToken
)
{
public
LocalDateTime
getExpiryTimeFromStatus
(
String
encryptedToken
)
{
QueryStatusRequest
request
=
new
QueryStatusRequest
();
QueryStatusResponse
response
=
queryStatus
(
encryptedToken
);
// 自动填充业务参数
if
(
cloudSignProperties
.
getTestEnabled
())
{
request
.
setBusinessOrgCode
(
cloudSignProperties
.
getTestBusinessOrgCode
());
request
.
setBusinessSystemCode
(
cloudSignProperties
.
getTestBusinessSystemCode
());
request
.
setBusinessSystemAppID
(
cloudSignProperties
.
getTestBusinessSystemAppID
());
}
else
{
request
.
setBusinessOrgCode
(
cloudSignProperties
.
getBusinessOrgCode
());
request
.
setBusinessSystemCode
(
cloudSignProperties
.
getBusinessSystemCode
());
request
.
setBusinessSystemAppID
(
cloudSignProperties
.
getBusinessSystemApplD
());
}
request
.
setEncryptedToken
(
encryptedToken
);
QueryStatusResponse
response
=
queryStatus
(
request
);
if
(
response
.
getStatusCode
()
==
0
&&
response
.
getEventValue
()
!=
null
)
{
if
(
response
.
getStatusCode
()
==
0
&&
response
.
getEventValue
()
!=
null
)
{
String
timeStr
=
response
.
getEventValue
().
getTime
();
String
timeStr
=
response
.
getEventValue
().
getTime
();
...
@@ -429,26 +441,8 @@ public class CloudsignService {
...
@@ -429,26 +441,8 @@ public class CloudsignService {
* 检查当前用户的encryptedToken是否有效
* 检查当前用户的encryptedToken是否有效
* @return QueryStatusResponse 包含令牌有效性信息
* @return QueryStatusResponse 包含令牌有效性信息
*/
*/
public
QueryStatusResponse
checkCurrentUserTokenValid
()
{
public
void
checkCurrentUserTokenValid
()
{
// 创建查询请求
getCurrentUserEncryptedToken
();
QueryStatusRequest
request
=
new
QueryStatusRequest
();
// 自动填充业务参数
if
(
cloudSignProperties
.
getTestEnabled
())
{
request
.
setBusinessOrgCode
(
cloudSignProperties
.
getTestBusinessOrgCode
());
request
.
setBusinessSystemCode
(
cloudSignProperties
.
getTestBusinessSystemCode
());
request
.
setBusinessSystemAppID
(
cloudSignProperties
.
getTestBusinessSystemAppID
());
}
else
{
request
.
setBusinessOrgCode
(
cloudSignProperties
.
getBusinessOrgCode
());
request
.
setBusinessSystemCode
(
cloudSignProperties
.
getBusinessSystemCode
());
request
.
setBusinessSystemAppID
(
cloudSignProperties
.
getBusinessSystemApplD
());
}
// 设置从数据库获取的令牌
request
.
setEncryptedToken
(
getCurrentUserEncryptedToken
());
// 调用queryStatus接口检查令牌状态
return
queryStatus
(
request
);
}
}
/**
/**
...
...
jmai-physic/src/main/java/com/jmai/physic/controller/CloudSignController.java
View file @
5d131f57
...
@@ -43,9 +43,9 @@ public class CloudSignController extends AbstractService {
...
@@ -43,9 +43,9 @@ public class CloudSignController extends AbstractService {
@PostMapping
(
"/checkTokenValid"
)
@PostMapping
(
"/checkTokenValid"
)
@ApiOperation
(
value
=
"检查当前用户令牌有效性"
)
@ApiOperation
(
value
=
"检查当前用户令牌有效性"
)
public
ResponseData
<
QueryStatusResponse
>
checkTokenValid
()
{
public
ResponseData
<
Void
>
checkTokenValid
()
{
QueryStatusResponse
response
=
cloudsignService
.
checkCurrentUserTokenValid
();
cloudsignService
.
checkCurrentUserTokenValid
();
return
ResponseData
.
ok
(
response
);
return
ResponseData
.
ok
();
}
}
@PostMapping
(
"/loginByPin"
)
@PostMapping
(
"/loginByPin"
)
...
@@ -246,7 +246,7 @@ public class CloudSignController extends AbstractService {
...
@@ -246,7 +246,7 @@ public class CloudSignController extends AbstractService {
}
}
// 现在业务参数和encryptedToken会在服务层自动填充
// 现在业务参数和encryptedToken会在服务层自动填充
QueryStatusResponse
queryStatus
=
cloudsignService
.
queryStatus
(
queryStatusRequest
);
QueryStatusResponse
queryStatus
=
cloudsignService
.
queryStatus
(
queryStatusRequest
.
getEncryptedToken
()
);
return
ResponseData
.
ok
(
queryStatus
);
return
ResponseData
.
ok
(
queryStatus
);
}
}
...
...
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