Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
antai-sport-http-server
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
antai-sport
antai-sport-http-server
Commits
fd9c4a7a
Commit
fd9c4a7a
authored
Aug 22, 2021
by
liming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(初始化项目): 增加缓存和登录用户注入
parent
6fe0379a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1011 additions
and
29 deletions
+1011
-29
pom.xml
common/pom.xml
+29
-0
LoginSportUser.java
...i/sport/http/server/common/annotation/LoginSportUser.java
+17
-0
RedisCacheConfig.java
...tai/sport/http/server/common/config/RedisCacheConfig.java
+79
-0
StdDateFormat.java
...antai/sport/http/server/common/jackson/StdDateFormat.java
+742
-0
SportUserArgumentResolver.java
...ttp/server/common/resolver/SportUserArgumentResolver.java
+66
-0
pom.xml
game-api/pom.xml
+0
-26
GameApiApplication.java
.../antai/sport/http/server/game/api/GameApiApplication.java
+2
-1
SportUserController.java
...ver/game/api/business/sport/user/SportUserController.java
+4
-1
WebMvcConfig.java
...antai/sport/http/server/game/api/config/WebMvcConfig.java
+12
-0
application-dev.yaml
game-api/src/main/resources/application-dev.yaml
+7
-0
application-prod.yaml
game-api/src/main/resources/application-prod.yaml
+6
-1
application.yaml
game-api/src/main/resources/application.yaml
+16
-0
pom.xml
pom.xml
+6
-0
SportUserCacheMapper.java
.../server/repository/sport/mapper/SportUserCacheMapper.java
+15
-0
SportUserCacheMapper.xml
.../src/main/resources/mapper/sport/SportUserCacheMapper.xml
+10
-0
No files found.
common/pom.xml
View file @
fd9c4a7a
...
@@ -26,6 +26,20 @@
...
@@ -26,6 +26,20 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-cache
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-redis
</artifactId>
<version>
RELEASE
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-boot-starter
</artifactId>
<artifactId>
springfox-boot-starter
</artifactId>
...
@@ -50,5 +64,20 @@
...
@@ -50,5 +64,20 @@
<groupId>
javax.activation
</groupId>
<groupId>
javax.activation
</groupId>
<artifactId>
activation
</artifactId>
<artifactId>
activation
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
profile
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
repository
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
constants
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
common/src/main/java/com/antai/sport/http/server/common/annotation/LoginSportUser.java
0 → 100644
View file @
fd9c4a7a
package
com
.
antai
.
sport
.
http
.
server
.
common
.
annotation
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @Author liming
* @Date 2021/8/23 1:59
* @Email lmmax@126.com
* @Description:
*/
@Target
(
ElementType
.
PARAMETER
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
LoginSportUser
{
}
common/src/main/java/com/antai/sport/http/server/common/config/RedisCacheConfig.java
0 → 100644
View file @
fd9c4a7a
package
com
.
antai
.
sport
.
http
.
server
.
common
.
config
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.PropertyAccessor
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.SerializationFeature
;
import
com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator
;
import
com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.cache.annotation.CachingConfigurerSupport
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheManager
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.RedisSerializationContext
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
import
java.time.Duration
;
/**
* @author liming on 2018/12/14.
*/
@Configuration
@EnableCaching
@ConfigurationProperties
(
prefix
=
"spring.cache.redis"
)
public
class
RedisCacheConfig
extends
CachingConfigurerSupport
{
private
Duration
timeToLive
=
Duration
.
ZERO
;
public
void
setTimeToLive
(
Duration
timeToLive
)
{
this
.
timeToLive
=
timeToLive
;
}
@Bean
public
RedisCacheManager
cacheManager
(
RedisConnectionFactory
connectionFactory
)
{
RedisCacheConfiguration
config
=
RedisCacheConfiguration
.
defaultCacheConfig
()
.
entryTtl
(
this
.
timeToLive
)
.
serializeKeysWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
keySerializer
()))
.
serializeValuesWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
valueSerializer
()))
.
disableCachingNullValues
();
return
RedisCacheManager
.
builder
(
connectionFactory
)
.
cacheDefaults
(
config
)
.
transactionAware
()
.
build
();
}
@Bean
(
name
=
"redisTemplate"
)
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
RedisTemplate
<
String
,
Object
>
redisTemplate
=
new
RedisTemplate
<>();
redisTemplate
.
setConnectionFactory
(
redisConnectionFactory
);
redisTemplate
.
setKeySerializer
(
keySerializer
());
redisTemplate
.
setHashKeySerializer
(
keySerializer
());
redisTemplate
.
setValueSerializer
(
valueSerializer
());
redisTemplate
.
setHashValueSerializer
(
valueSerializer
());
return
redisTemplate
;
}
private
RedisSerializer
<
String
>
keySerializer
()
{
return
new
StringRedisSerializer
();
}
private
RedisSerializer
<
Object
>
valueSerializer
()
{
Jackson2JsonRedisSerializer
<
Object
>
serializer
=
new
Jackson2JsonRedisSerializer
<>(
Object
.
class
);
ObjectMapper
om
=
new
ObjectMapper
();
om
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
om
.
activateDefaultTyping
(
LaissezFaireSubTypeValidator
.
instance
,
ObjectMapper
.
DefaultTyping
.
NON_FINAL
);
om
.
disable
(
SerializationFeature
.
WRITE_DATES_AS_TIMESTAMPS
);
om
.
registerModule
(
new
JavaTimeModule
());
serializer
.
setObjectMapper
(
om
);
return
serializer
;
}
}
common/src/main/java/com/antai/sport/http/server/common/jackson/StdDateFormat.java
0 → 100644
View file @
fd9c4a7a
This diff is collapsed.
Click to expand it.
common/src/main/java/com/antai/sport/http/server/common/resolver/SportUserArgumentResolver.java
0 → 100644
View file @
fd9c4a7a
package
com
.
antai
.
sport
.
http
.
server
.
common
.
resolver
;
import
com.antai.sport.http.server.common.exception.BusinessException
;
import
com.antai.sport.http.server.common.jwt.TokenService
;
import
com.antai.sport.http.server.repository.sport.entity.SportUser
;
import
com.antai.sport.http.server.repository.sport.mapper.SportUserCacheMapper
;
import
io.jsonwebtoken.Claims
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.core.MethodParameter
;
import
org.springframework.web.bind.support.WebDataBinderFactory
;
import
org.springframework.web.context.request.NativeWebRequest
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.method.support.ModelAndViewContainer
;
import
javax.annotation.Resource
;
public
class
SportUserArgumentResolver
implements
HandlerMethodArgumentResolver
{
@Value
(
"${project.header-token-key}"
)
private
String
headerTokenKey
;
@Value
(
"${project.jwt.subject-key}"
)
private
String
subjectKey
;
@Resource
private
SportUserCacheMapper
sportUserCacheMapper
;
@Resource
private
TokenService
tokenService
;
/**
* 判断是否支持要转换的参数类型
*/
@Override
public
boolean
supportsParameter
(
MethodParameter
methodParameter
)
{
return
methodParameter
.
getParameterType
().
isAssignableFrom
(
SportUser
.
class
);
}
/**
* 当支持后进行相应的转换 做业务操作
*/
@Override
public
Object
resolveArgument
(
MethodParameter
methodParameter
,
ModelAndViewContainer
modelAndViewContainer
,
NativeWebRequest
request
,
WebDataBinderFactory
webDataBinderFactory
)
throws
Exception
{
//从请求头中获参数信息
String
token
=
request
.
getHeader
(
headerTokenKey
);
if
(
token
==
null
||
token
.
isEmpty
())
{
throw
new
BusinessException
(
"token信息错误"
);
}
Claims
claims
=
tokenService
.
validateToken
(
token
);
if
(
claims
==
null
)
{
throw
new
BusinessException
(
"token解析异常"
);
}
String
phone
=
claims
.
get
(
subjectKey
).
toString
();
SportUser
sportUser
=
sportUserCacheMapper
.
getByPhone
(
phone
);
if
(
sportUser
==
null
)
{
throw
new
BusinessException
(
"当前用户不存在"
);
}
return
sportUser
;
}
}
game-api/pom.xml
View file @
fd9c4a7a
...
@@ -18,37 +18,11 @@
...
@@ -18,37 +18,11 @@
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-redis
</artifactId>
<version>
RELEASE
</version>
<scope>
compile
</scope>
</dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
profile
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
repository
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
<dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
common
</artifactId>
<artifactId>
common
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.antai.sport.http.server
</groupId>
<artifactId>
constants
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
game-api/src/main/java/com/antai/sport/http/server/game/api/GameApiApplication.java
View file @
fd9c4a7a
...
@@ -3,6 +3,7 @@ package com.antai.sport.http.server.game.api;
...
@@ -3,6 +3,7 @@ package com.antai.sport.http.server.game.api;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan
;
import
springfox.documentation.oas.annotations.EnableOpenApi
;
import
springfox.documentation.oas.annotations.EnableOpenApi
;
...
@@ -16,7 +17,7 @@ import springfox.documentation.oas.annotations.EnableOpenApi;
...
@@ -16,7 +17,7 @@ import springfox.documentation.oas.annotations.EnableOpenApi;
@SpringBootApplication
@SpringBootApplication
@EnableOpenApi
@EnableOpenApi
@ComponentScan
(
value
=
"com.antai"
)
@ComponentScan
(
value
=
"com.antai"
)
@MapperScan
(
"com.antai
.**.repository
"
)
@MapperScan
(
"com.antai"
)
public
class
GameApiApplication
{
public
class
GameApiApplication
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
GameApiApplication
.
class
,
args
);
SpringApplication
.
run
(
GameApiApplication
.
class
,
args
);
...
...
game-api/src/main/java/com/antai/sport/http/server/game/api/business/sport/user/SportUserController.java
View file @
fd9c4a7a
package
com
.
antai
.
sport
.
http
.
server
.
game
.
api
.
business
.
sport
.
user
;
package
com
.
antai
.
sport
.
http
.
server
.
game
.
api
.
business
.
sport
.
user
;
import
com.antai.sport.http.server.common.annotation.LoginSportUser
;
import
com.antai.sport.http.server.common.base.Result
;
import
com.antai.sport.http.server.common.base.Result
;
import
com.antai.sport.http.server.game.api.business.sport.user.dto.ReqLogin
;
import
com.antai.sport.http.server.game.api.business.sport.user.dto.ReqLogin
;
import
com.antai.sport.http.server.repository.sport.entity.SportUser
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
...
@@ -34,7 +36,8 @@ public class SportUserController {
...
@@ -34,7 +36,8 @@ public class SportUserController {
}
}
@GetMapping
(
"/test"
)
@GetMapping
(
"/test"
)
public
ResponseEntity
<
Result
>
test
()
{
public
ResponseEntity
<
Result
>
test
(
@LoginSportUser
SportUser
sportUser
)
{
System
.
out
.
println
(
1
);
return
success
(
"test"
);
return
success
(
"test"
);
}
}
}
}
game-api/src/main/java/com/antai/sport/http/server/game/api/config/WebMvcConfig.java
View file @
fd9c4a7a
package
com
.
antai
.
sport
.
http
.
server
.
game
.
api
.
config
;
package
com
.
antai
.
sport
.
http
.
server
.
game
.
api
.
config
;
import
com.antai.sport.http.server.common.resolver.SportUserArgumentResolver
;
import
com.antai.sport.http.server.game.api.interceptor.TokenInterceptor
;
import
com.antai.sport.http.server.game.api.interceptor.TokenInterceptor
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
...
@@ -44,6 +46,16 @@ public class WebMvcConfig implements WebMvcConfigurer {
...
@@ -44,6 +46,16 @@ public class WebMvcConfig implements WebMvcConfigurer {
return
new
TokenInterceptor
();
return
new
TokenInterceptor
();
}
}
@Override
public
void
addArgumentResolvers
(
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
)
{
argumentResolvers
.
add
(
sportUserArgumentResolver
());
}
@Bean
SportUserArgumentResolver
sportUserArgumentResolver
()
{
return
new
SportUserArgumentResolver
();
}
public
void
setPermitUrl
(
List
<
String
>
permitUrl
)
{
public
void
setPermitUrl
(
List
<
String
>
permitUrl
)
{
this
.
permitUrl
=
permitUrl
;
this
.
permitUrl
=
permitUrl
;
}
}
...
...
game-api/src/main/resources/application-dev.yaml
View file @
fd9c4a7a
server
:
port
:
8080
spring
:
spring
:
profiles
:
profiles
:
include
:
include
:
-
common-db-dev
-
common-db-dev
redis
:
database
:
0
host
:
127.0.0.1
port
:
6379
password
:
123
swagger
:
swagger
:
enable
:
true
enable
:
true
game-api/src/main/resources/application-prod.yaml
View file @
fd9c4a7a
spring
:
spring
:
profiles
:
profiles
:
include
:
include
:
-
common-db-prod
-
common-db-prod
\ No newline at end of file
redis
:
database
:
0
host
:
127.0.0.1
port
:
6379
password
:
123
\ No newline at end of file
game-api/src/main/resources/application.yaml
View file @
fd9c4a7a
...
@@ -5,6 +5,22 @@ spring:
...
@@ -5,6 +5,22 @@ spring:
use-legacy-processing
:
true
use-legacy-processing
:
true
profiles
:
profiles
:
active
:
dev
active
:
dev
cache
:
redis
:
use-key-prefix
:
true
time-to-live
:
1d
redis
:
timeout
:
10s
jedis
:
pool
:
max-idle
:
500
min-idle
:
50
max-wait
:
-1s
max-active
:
-1
jackson
:
date-format
:
com.antai.sport.http.server.common.jackson.StdDateFormat
time-zone
:
GMT+8
default-property-inclusion
:
always
project
:
project
:
header-token-key
:
Authorization
header-token-key
:
Authorization
...
...
pom.xml
View file @
fd9c4a7a
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
<jjwt.version>
0.7.0
</jjwt.version>
<jjwt.version>
0.7.0
</jjwt.version>
<jaxb.version>
2.3.0
</jaxb.version>
<jaxb.version>
2.3.0
</jaxb.version>
<activation.version>
1.1.1
</activation.version>
<activation.version>
1.1.1
</activation.version>
<commons.lang3.version>
3.7
</commons.lang3.version>
<maven.compiler.source>
11
</maven.compiler.source>
<maven.compiler.source>
11
</maven.compiler.source>
<maven.compiler.target>
11
</maven.compiler.target>
<maven.compiler.target>
11
</maven.compiler.target>
...
@@ -51,6 +52,11 @@
...
@@ -51,6 +52,11 @@
<artifactId>
spring-boot-starter-test
</artifactId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
<scope>
test
</scope>
</dependency>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
<version>
${commons.lang3.version}
</version>
</dependency>
</dependencies>
</dependencies>
<dependencyManagement>
<dependencyManagement>
...
...
repository/src/main/java/com/antai/sport/http/server/repository/sport/mapper/SportUserCacheMapper.java
0 → 100644
View file @
fd9c4a7a
package
com
.
antai
.
sport
.
http
.
server
.
repository
.
sport
.
mapper
;
import
com.antai.sport.http.server.repository.sport.entity.SportUser
;
import
org.springframework.cache.annotation.Cacheable
;
/**
* @Author liming
* @Date 2021/8/23 0:59
* @Email lmmax@126.com
* @Description:
*/
public
interface
SportUserCacheMapper
{
@Cacheable
(
value
=
"sport_user"
,
key
=
"#p0"
,
unless
=
"#result == null"
)
SportUser
getByPhone
(
String
username
);
}
repository/src/main/resources/mapper/sport/SportUserCacheMapper.xml
0 → 100644
View file @
fd9c4a7a
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.antai.sport.http.server.repository.sport.mapper.SportUserCacheMapper"
>
<select
id=
"getByPhone"
parameterType=
"java.lang.String"
resultType=
"com.antai.sport.http.server.repository.sport.entity.SportUser"
>
select *
from sport_user t1
where t1.phone = #{username}
</select>
</mapper>
\ No newline at end of file
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