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
977a7b62
authored
Jan 30, 2026
by
zhu.zewen
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
新增云签token失效逻辑
parent
65348f20
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
18 deletions
jmai-physic/src/main/java/com/jmai/physic/cloudsign/CloudsignService.java
jmai-physic/src/main/java/com/jmai/physic/entity/CloudSignToken.java
jmai-physic/src/main/java/com/jmai/physic/cloudsign/CloudsignService.java
View file @
977a7b62
...
...
@@ -5,11 +5,13 @@ import cn.hutool.core.codec.Base64Decoder;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.crypto.digest.DigestUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.jmai.api.exception.ServiceException
;
import
com.jmai.physic.config.CloudSignProperties
;
import
com.jmai.physic.entity.CloudSignToken
;
import
com.jmai.physic.entity.ISignData
;
import
com.jmai.physic.entity.PhysicWarehouse
;
import
com.jmai.physic.mapper.CloudSignTokenMapper
;
import
com.jmai.sys.consts.enums.SysFileTypeEnum
;
import
com.jmai.sys.ctx.SpringContextUtils
;
...
...
@@ -32,6 +34,7 @@ import javax.annotation.Resource;
import
java.time.LocalDateTime
;
import
static
com
.
jmai
.
api
.
base
.
BaseService
.
toJSONString
;
import
static
com
.
jmai
.
sys
.
AbstractService
.
nextId
;
@Slf4j
...
...
@@ -69,20 +72,19 @@ public class CloudsignService {
CloudSignToken
token
=
cloudSignTokenMapper
.
selectOne
(
Wrappers
.<
CloudSignToken
>
lambdaQuery
()
.
eq
(
CloudSignToken:
:
getUserId
,
userId
)
.
eq
(
CloudSignToken:
:
getStatus
,
1
)
// 只查询有效状态的令牌
.
orderByDesc
(
CloudSignToken:
:
getCreateTime
)
// 获取最新的令牌
);
if
(
token
==
null
)
{
throw
new
ServiceException
(
"未找到用户的云签令牌,请先登录云签"
);
if
(
ObjectUtil
.
isEmpty
(
token
)
||
token
.
isInactive
()
||
token
.
getExpiryTime
().
isBefore
(
LocalDateTime
.
now
())
||
ObjectUtil
.
notEqual
(
token
.
getUserId
(),
userId
))
{
if
(
ObjectUtil
.
isNotEmpty
(
token
))
{
token
.
setEncryptedToken
(
"-"
);
}
// 检查令牌是否过期
if
(
token
.
getExpiryTime
().
isBefore
(
LocalDateTime
.
now
()))
{
// 更新令牌状态为失效
token
.
setStatus
(
0
);
cloudSignTokenMapper
.
updateById
(
token
);
throw
new
ServiceException
(
"云签令牌已过期,请重新登录"
);
log
.
info
(
"云签令牌已失效:{}"
,
toJSONString
(
token
));
cleanCloudSignToken
(
token
.
getUserId
(),
token
.
getWorkNo
());
throw
new
ServiceException
(
"云签令牌已失效,请重新登录"
);
}
return
token
.
getEncryptedToken
();
...
...
@@ -584,15 +586,34 @@ public class CloudsignService {
cloudSignToken
.
setStatus
(
1
);
// 设置为有效状态
// 先尝试删除旧的令牌记录(如果有)
cloudSignTokenMapper
.
update
(
null
,
Wrappers
.
lambdaUpdate
(
CloudSignToken
.
class
)
.
eq
(
CloudSignToken:
:
getWorkNo
,
user
.
getWorkNo
())
.
set
(
CloudSignToken:
:
getUpdateBy
,
SpringContextUtils
.
getUserId
())
.
set
(
CloudSignToken:
:
getUpdateTime
,
LocalDateTime
.
now
())
.
set
(
CloudSignToken:
:
getDelFlag
,
1
)
.
setSql
(
"work_no ='"
+
user
.
getWorkNo
()
+
":"
+
nextId
()
+
"'"
)
);
cleanCloudSignToken
(
user
.
getUserId
(),
user
.
getWorkNo
());
// 插入新的令牌记录
cloudSignTokenMapper
.
insert
(
cloudSignToken
);
}
/**
* 清空云签令牌(二者其一)
*
* @param userId
* @param workNo
*/
public
void
cleanCloudSignToken
(
Long
userId
,
String
workNo
)
{
if
(
ObjectUtil
.
isAllEmpty
(
userId
,
workNo
))
{
return
;
}
LambdaUpdateWrapper
<
CloudSignToken
>
wrapper
=
Wrappers
.
lambdaUpdate
(
CloudSignToken
.
class
);
if
(
ObjectUtil
.
isAllNotEmpty
(
userId
,
workNo
))
{
wrapper
.
and
(
w
->
w
.
eq
(
CloudSignToken:
:
getUserId
,
userId
)
.
or
().
eq
(
CloudSignToken:
:
getWorkNo
,
workNo
)
);
}
wrapper
.
set
(
CloudSignToken:
:
getUpdateBy
,
SpringContextUtils
.
getUserId
())
.
set
(
CloudSignToken:
:
getUpdateTime
,
LocalDateTime
.
now
())
.
set
(
CloudSignToken:
:
getDelFlag
,
1
)
.
setSql
(
"work_no ='"
+
workNo
+
":"
+
nextId
()
+
"'"
);
cloudSignTokenMapper
.
update
(
null
,
wrapper
);
}
}
jmai-physic/src/main/java/com/jmai/physic/entity/CloudSignToken.java
View file @
977a7b62
package
com
.
jmai
.
physic
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.jmai.api.base.IStatus
;
import
com.jmai.sys.entity.BaseVersionEntity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -14,7 +15,7 @@ import java.time.LocalDateTime;
@Data
@ApiModel
(
description
=
"云签令牌信息"
)
@TableName
(
"cloud_sign_token"
)
public
class
CloudSignToken
extends
BaseVersionEntity
{
public
class
CloudSignToken
extends
BaseVersionEntity
implements
IStatus
{
@ApiModelProperty
(
value
=
"用户ID"
)
private
Long
userId
;
...
...
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