Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fzm-joying
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
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
lei
fzm-joying
Commits
26bf7529
Commit
26bf7529
authored
Jul 02, 2021
by
tangtuo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增更新记录插入时间戳以及记录修改时间戳的拦截器
用户被挤下线之后,修改提示内容
parent
b0a834bd
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
89 additions
and
10 deletions
+89
-10
MyMetaObjectHandler.java
.../main/java/com/fzm/common/config/MyMetaObjectHandler.java
+35
-0
BaseEntity.java
...ommon/src/main/java/com/fzm/common/entity/BaseEntity.java
+13
-0
User.java
joying-common/src/main/java/com/fzm/common/entity/User.java
+11
-3
GlobalExceptionHandler.java
.../fzm/common/exception/handler/GlobalExceptionHandler.java
+25
-0
JwtUtil.java
...ng-common/src/main/java/com/fzm/common/utils/JwtUtil.java
+3
-5
application-dev.yml
joying-portal/src/main/resources/application-dev.yml
+1
-1
application-local.yml
joying-portal/src/main/resources/application-local.yml
+1
-1
No files found.
joying-common/src/main/java/com/fzm/common/config/MyMetaObjectHandler.java
0 → 100644
View file @
26bf7529
package
com
.
fzm
.
common
.
config
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.baomidou.mybatisplus.core.toolkit.SystemClock
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.reflection.MetaObject
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.function.Supplier
;
/**
* 新增,更新时,自动更新字段
*/
@Slf4j
@Component
public
class
MyMetaObjectHandler
implements
MetaObjectHandler
{
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
log
.
debug
(
"start insert fill ...."
);
Long
currentTime
=
SystemClock
.
now
();
this
.
setFieldValByName
(
"createTime"
,
currentTime
,
metaObject
);
this
.
setFieldValByName
(
"updateTime"
,
currentTime
,
metaObject
);
}
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
log
.
debug
(
"start update fill ...."
);
Long
currentTime
=
SystemClock
.
now
();
this
.
setFieldValByName
(
"updateTime"
,
currentTime
,
metaObject
);
}
}
\ No newline at end of file
joying-common/src/main/java/com/fzm/common/entity/BaseEntity.java
View file @
26bf7529
package
com
.
fzm
.
common
.
entity
;
package
com
.
fzm
.
common
.
entity
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
lombok.experimental.Accessors
;
...
@@ -24,4 +27,14 @@ public abstract class BaseEntity {
...
@@ -24,4 +27,14 @@ public abstract class BaseEntity {
@ApiModelProperty
(
"修改时间"
)
@ApiModelProperty
(
"修改时间"
)
private
Date
updateDate
;
private
Date
updateDate
;
@ApiModelProperty
(
"记录创建的时间戳"
)
@TableField
(
fill
=
FieldFill
.
INSERT
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Long
createTime
;
@ApiModelProperty
(
"记录更新的时间戳"
)
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Long
updateTime
;
}
}
joying-common/src/main/java/com/fzm/common/entity/User.java
View file @
26bf7529
package
com
.
fzm
.
common
.
entity
;
package
com
.
fzm
.
common
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.*
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.fzm.common.constant.TokenConstant
;
import
com.fzm.common.constant.TokenConstant
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModel
;
...
@@ -61,6 +59,16 @@ public class User extends AbstractUser {
...
@@ -61,6 +59,16 @@ public class User extends AbstractUser {
@ApiModelProperty
(
"修改时间"
)
@ApiModelProperty
(
"修改时间"
)
private
Date
updateDate
;
private
Date
updateDate
;
@ApiModelProperty
(
"记录创建的时间戳"
)
@TableField
(
fill
=
FieldFill
.
INSERT
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Long
createTime
;
@ApiModelProperty
(
"记录更新的时间戳"
)
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
@JsonProperty
(
access
=
JsonProperty
.
Access
.
WRITE_ONLY
)
private
Long
updateTime
;
@Override
@Override
public
String
appId
()
{
public
String
appId
()
{
...
...
joying-common/src/main/java/com/fzm/common/exception/handler/GlobalExceptionHandler.java
View file @
26bf7529
package
com
.
fzm
.
common
.
exception
.
handler
;
package
com
.
fzm
.
common
.
exception
.
handler
;
import
cn.dev33.satoken.exception.NotLoginException
;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.http.HttpStatus
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.enums.ResultCode
;
import
com.fzm.common.exception.GlobalException
;
import
com.fzm.common.exception.GlobalException
;
import
com.fzm.common.model.ResponseModel
;
import
com.fzm.common.model.ResponseModel
;
import
com.fzm.common.utils.JwtUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.support.DefaultMessageSourceResolvable
;
import
org.springframework.context.support.DefaultMessageSourceResolvable
;
import
org.springframework.validation.ObjectError
;
import
org.springframework.validation.ObjectError
;
...
@@ -13,6 +17,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
...
@@ -13,6 +17,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -41,6 +46,26 @@ public class GlobalExceptionHandler {
...
@@ -41,6 +46,26 @@ public class GlobalExceptionHandler {
return
ResponseModel
.
fail
(
exception
);
return
ResponseModel
.
fail
(
exception
);
}
}
@ExceptionHandler
(
value
=
NotLoginException
.
class
)
public
ResponseModel
<
String
>
handlerNotLoginException
(
NotLoginException
exception
)
{
log
.
error
(
exception
.
getMessage
(),
exception
);
response
.
setStatus
(
HttpStatus
.
HTTP_INTERNAL_ERROR
);
if
(
exception
.
getMessage
().
contains
(
"token已被顶下线"
))
{
// 获取已过期的token
String
expireToken
=
StpUtil
.
getTokenValue
();
// 从已过期的token中获取用户id
Integer
userId
=
JwtUtil
.
getUserIdFromToken
(
expireToken
);
// 获取最新的token
String
tokenValue
=
StpUtil
.
getTokenValueByLoginId
(
userId
);
Date
createTime
=
JwtUtil
.
getCreateTimeFromToken
(
tokenValue
);
String
format
=
DateUtil
.
format
(
createTime
,
"yyyy-MM-dd HH:mm:ss"
);
return
ResponseModel
.
fail
(
ResultCode
.
UNAUTHORIZED
,
String
.
format
(
"您的账号于 %s 登录另外一台设备,如非您本人所为,请立即修改密码"
,
format
));
}
return
ResponseModel
.
fail
(
exception
);
}
@ExceptionHandler
(
value
=
{
MethodArgumentNotValidException
.
class
})
@ExceptionHandler
(
value
=
{
MethodArgumentNotValidException
.
class
})
public
ResponseModel
<
String
>
handleMethodArgumentNotValidException
(
MethodArgumentNotValidException
e
)
{
public
ResponseModel
<
String
>
handleMethodArgumentNotValidException
(
MethodArgumentNotValidException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
log
.
error
(
e
.
getMessage
(),
e
);
...
...
joying-common/src/main/java/com/fzm/common/utils/JwtUtil.java
View file @
26bf7529
...
@@ -67,15 +67,13 @@ public class JwtUtil {
...
@@ -67,15 +67,13 @@ public class JwtUtil {
/**
/**
* 从token中获取登录用户名
* 从token中获取登录用户名
*/
*/
public
static
String
getUserNameFromToken
(
String
token
)
{
public
static
Date
getCreateTimeFromToken
(
String
token
)
{
String
username
;
try
{
try
{
Claims
claims
=
getClaimsFromToken
(
token
);
Claims
claims
=
getClaimsFromToken
(
token
);
username
=
claims
.
getSubject
(
);
return
claims
.
get
(
CLAIM_KEY_CREATED
,
Date
.
class
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
username
=
null
;
throw
GlobalException
.
newException
(
ResultCode
.
TOKEN_VALID_ERROR
,
e
.
getMessage
())
;
}
}
return
username
;
}
}
/**
/**
...
...
joying-portal/src/main/resources/application-dev.yml
View file @
26bf7529
...
@@ -65,7 +65,7 @@ spring:
...
@@ -65,7 +65,7 @@ spring:
# token风格
# token风格
#token-style: uuid
#token-style: uuid
# 是否输出操作日志
# 是否输出操作日志
is-log
:
fals
e
is-log
:
tru
e
tokenPrefix
:
Bearer
tokenPrefix
:
Bearer
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent
:
false
is-concurrent
:
false
...
...
joying-portal/src/main/resources/application-local.yml
View file @
26bf7529
...
@@ -65,7 +65,7 @@ spring:
...
@@ -65,7 +65,7 @@ spring:
# token风格
# token风格
#token-style: uuid
#token-style: uuid
# 是否输出操作日志
# 是否输出操作日志
is-log
:
fals
e
is-log
:
tru
e
tokenPrefix
:
Bearer
tokenPrefix
:
Bearer
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent
:
false
is-concurrent
:
false
...
...
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