Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
mall
Commits
092bd902
Commit
092bd902
authored
Mar 22, 2020
by
macro
Browse files
添加redis缓存支持
parent
fa0af318
Changes
11
Hide whitespace changes
Inline
Side-by-side
mall-portal/src/main/java/com/macro/mall/portal/config/GlobalCorsConfig.java
0 → 100644
View file @
092bd902
package
com.macro.mall.portal.config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.cors.CorsConfiguration
;
import
org.springframework.web.cors.UrlBasedCorsConfigurationSource
;
import
org.springframework.web.filter.CorsFilter
;
/**
* 全局跨域配置
* Created by macro on 2019/7/27.
*/
@Configuration
public
class
GlobalCorsConfig
{
/**
* 允许跨域调用的过滤器
*/
@Bean
public
CorsFilter
corsFilter
()
{
CorsConfiguration
config
=
new
CorsConfiguration
();
//允许所有域名进行跨域调用
config
.
addAllowedOrigin
(
"*"
);
//允许跨越发送cookie
config
.
setAllowCredentials
(
true
);
//放行全部原始头信息
config
.
addAllowedHeader
(
"*"
);
//允许所有请求方法跨域调用
config
.
addAllowedMethod
(
"*"
);
UrlBasedCorsConfigurationSource
source
=
new
UrlBasedCorsConfigurationSource
();
source
.
registerCorsConfiguration
(
"/**"
,
config
);
return
new
CorsFilter
(
source
);
}
}
mall-portal/src/main/java/com/macro/mall/portal/config/MallSecurityConfig.java
View file @
092bd902
package
com.macro.mall.portal.config
;
import
com.macro.mall.portal.service.UmsMemberService
;
import
com.macro.mall.security.component.DynamicSecurityService
;
import
com.macro.mall.security.config.SecurityConfig
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.access.ConfigAttribute
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* mall-security模块相关配置
* Created by macro on 2019/11/5.
...
...
mall-portal/src/main/java/com/macro/mall/portal/controller/UmsMemberController.java
View file @
092bd902
package
com.macro.mall.portal.controller
;
import
com.macro.mall.common.api.CommonResult
;
import
com.macro.mall.model.UmsMember
;
import
com.macro.mall.portal.service.UmsMemberService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -13,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
javax.servlet.http.HttpServletRequest
;
import
java.security.Principal
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -57,6 +59,17 @@ public class UmsMemberController {
return
CommonResult
.
success
(
tokenMap
);
}
@ApiOperation
(
"获取会员信息"
)
@RequestMapping
(
value
=
"/info"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
CommonResult
info
(
Principal
principal
)
{
if
(
principal
==
null
){
return
CommonResult
.
unauthorized
(
null
);
}
UmsMember
member
=
memberService
.
getCurrentMember
();
return
CommonResult
.
success
(
member
);
}
@ApiOperation
(
"获取验证码"
)
@RequestMapping
(
value
=
"/getAuthCode"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
...
...
mall-portal/src/main/java/com/macro/mall/portal/service/RedisService.java
deleted
100644 → 0
View file @
fa0af318
package
com.macro.mall.portal.service
;
/**
* redis操作Service,
* 对象和数组都以json形式进行存储
* Created by macro on 2018/8/7.
*/
public
interface
RedisService
{
/**
* 存储数据
*/
void
set
(
String
key
,
String
value
);
/**
* 获取数据
*/
String
get
(
String
key
);
/**
* 设置超期时间
*/
boolean
expire
(
String
key
,
long
expire
);
/**
* 删除数据
*/
void
remove
(
String
key
);
/**
* 自增操作
* @param delta 自增步长
*/
Long
increment
(
String
key
,
long
delta
);
}
mall-portal/src/main/java/com/macro/mall/portal/service/UmsMemberCacheService.java
0 → 100644
View file @
092bd902
package
com.macro.mall.portal.service
;
import
com.macro.mall.model.UmsMember
;
/**
* 会员信息缓存业务类
* Created by macro on 2020/3/14.
*/
public
interface
UmsMemberCacheService
{
/**
* 删除会员用户缓存
*/
void
delMember
(
Long
memberId
);
/**
* 获取会员用户缓存
*/
UmsMember
getMember
(
String
username
);
/**
* 设置会员用户缓存
*/
void
setMember
(
UmsMember
member
);
/**
* 设置验证码
*/
void
setAuthCode
(
String
telephone
,
String
authCode
);
/**
* 获取验证码
*/
String
getAuthCode
(
String
telephone
);
}
mall-portal/src/main/java/com/macro/mall/portal/service/impl/OmsPortalOrderServiceImpl.java
View file @
092bd902
...
...
@@ -9,6 +9,7 @@ import com.macro.mall.portal.dao.PortalOrderItemDao;
import
com.macro.mall.portal.dao.SmsCouponHistoryDao
;
import
com.macro.mall.portal.domain.*
;
import
com.macro.mall.portal.service.*
;
import
com.macro.mall.security.service.RedisService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
...
...
@@ -47,8 +48,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
private
SmsCouponHistoryMapper
couponHistoryMapper
;
@Autowired
private
RedisService
redisService
;
@Value
(
"${redis.key.prefix.orderId}"
)
private
String
REDIS_KEY_PREFIX_ORDER_ID
;
@Value
(
"${redis.key.orderId}"
)
private
String
REDIS_KEY_ORDER_ID
;
@Value
(
"${redis.database}"
)
private
String
REDIS_DATABASE
;
@Autowired
private
PortalOrderDao
portalOrderDao
;
@Autowired
...
...
@@ -318,8 +321,8 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
private
String
generateOrderSn
(
OmsOrder
order
)
{
StringBuilder
sb
=
new
StringBuilder
();
String
date
=
new
SimpleDateFormat
(
"yyyyMMdd"
).
format
(
new
Date
());
String
key
=
REDIS_
KEY_PREFIX
_ORDER_ID
+
date
;
Long
increment
=
redisService
.
incr
ement
(
key
,
1
);
String
key
=
REDIS_
DATABASE
+
":"
+
REDIS_KEY
_ORDER_ID
+
date
;
Long
increment
=
redisService
.
incr
(
key
,
1
);
sb
.
append
(
date
);
sb
.
append
(
String
.
format
(
"%02d"
,
order
.
getSourceType
()));
sb
.
append
(
String
.
format
(
"%02d"
,
order
.
getPayType
()));
...
...
mall-portal/src/main/java/com/macro/mall/portal/service/impl/RedisServiceImpl.java
deleted
100644 → 0
View file @
fa0af318
package
com.macro.mall.portal.service.impl
;
import
com.macro.mall.portal.service.RedisService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.util.concurrent.TimeUnit
;
/**
* redis操作Service的实现类
* Created by macro on 2018/8/7.
*/
@Service
public
class
RedisServiceImpl
implements
RedisService
{
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Override
public
void
set
(
String
key
,
String
value
)
{
stringRedisTemplate
.
opsForValue
().
set
(
key
,
value
);
}
@Override
public
String
get
(
String
key
)
{
return
stringRedisTemplate
.
opsForValue
().
get
(
key
);
}
@Override
public
boolean
expire
(
String
key
,
long
expire
)
{
return
stringRedisTemplate
.
expire
(
key
,
expire
,
TimeUnit
.
SECONDS
);
}
@Override
public
void
remove
(
String
key
)
{
stringRedisTemplate
.
delete
(
key
);
}
@Override
public
Long
increment
(
String
key
,
long
delta
)
{
return
stringRedisTemplate
.
opsForValue
().
increment
(
key
,
delta
);
}
}
mall-portal/src/main/java/com/macro/mall/portal/service/impl/UmsMemberCacheServiceImpl.java
0 → 100644
View file @
092bd902
package
com.macro.mall.portal.service.impl
;
import
com.macro.mall.mapper.UmsMemberMapper
;
import
com.macro.mall.model.UmsMember
;
import
com.macro.mall.portal.service.UmsMemberCacheService
;
import
com.macro.mall.security.annotation.CacheException
;
import
com.macro.mall.security.config.RedisConfig
;
import
com.macro.mall.security.service.RedisService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
/**
* UmsMemberCacheService实现类
* Created by macro on 2020/3/14.
*/
@Service
public
class
UmsMemberCacheServiceImpl
implements
UmsMemberCacheService
{
@Autowired
private
RedisService
redisService
;
@Autowired
private
UmsMemberMapper
memberMapper
;
@Value
(
"${redis.database}"
)
private
String
REDIS_DATABASE
;
@Value
(
"${redis.expire.common}"
)
private
Long
REDIS_EXPIRE
;
@Value
(
"${redis.expire.authCode}"
)
private
Long
REDIS_EXPIRE_AUTH_CODE
;
@Value
(
"${redis.key.member}"
)
private
String
REDIS_KEY_MEMBER
;
@Value
(
"${redis.key.authCode}"
)
private
String
REDIS_KEY_AUTH_CODE
;
@Override
public
void
delMember
(
Long
memberId
)
{
UmsMember
umsMember
=
memberMapper
.
selectByPrimaryKey
(
memberId
);
if
(
umsMember
!=
null
)
{
String
key
=
REDIS_DATABASE
+
":"
+
REDIS_KEY_MEMBER
+
":"
+
umsMember
.
getUsername
();
redisService
.
del
(
key
);
}
}
@Override
public
UmsMember
getMember
(
String
username
)
{
String
key
=
REDIS_DATABASE
+
":"
+
REDIS_KEY_MEMBER
+
":"
+
username
;
return
(
UmsMember
)
redisService
.
get
(
key
);
}
@Override
public
void
setMember
(
UmsMember
member
)
{
String
key
=
REDIS_DATABASE
+
":"
+
REDIS_KEY_MEMBER
+
":"
+
member
.
getUsername
();
redisService
.
set
(
key
,
member
,
REDIS_EXPIRE
);
}
@CacheException
@Override
public
void
setAuthCode
(
String
telephone
,
String
authCode
)
{
String
key
=
REDIS_DATABASE
+
":"
+
REDIS_KEY_AUTH_CODE
+
":"
+
telephone
;
redisService
.
set
(
key
,
authCode
,
REDIS_EXPIRE_AUTH_CODE
);
}
@CacheException
@Override
public
String
getAuthCode
(
String
telephone
)
{
String
key
=
REDIS_DATABASE
+
":"
+
REDIS_KEY_AUTH_CODE
+
":"
+
telephone
;
return
(
String
)
redisService
.
get
(
key
);
}
}
mall-portal/src/main/java/com/macro/mall/portal/service/impl/UmsMemberServiceImpl.java
View file @
092bd902
...
...
@@ -8,7 +8,7 @@ import com.macro.mall.model.UmsMemberExample;
import
com.macro.mall.model.UmsMemberLevel
;
import
com.macro.mall.model.UmsMemberLevelExample
;
import
com.macro.mall.portal.domain.MemberDetails
;
import
com.macro.mall.portal.service.
Redis
Service
;
import
com.macro.mall.portal.service.
UmsMemberCache
Service
;
import
com.macro.mall.portal.service.UmsMemberService
;
import
com.macro.mall.security.util.JwtTokenUtil
;
import
org.slf4j.Logger
;
...
...
@@ -48,19 +48,23 @@ public class UmsMemberServiceImpl implements UmsMemberService {
@Autowired
private
UmsMemberLevelMapper
memberLevelMapper
;
@Autowired
private
RedisService
redis
Service
;
@Value
(
"${redis.key.
prefix.
authCode}"
)
private
UmsMemberCacheService
memberCache
Service
;
@Value
(
"${redis.key.authCode}"
)
private
String
REDIS_KEY_PREFIX_AUTH_CODE
;
@Value
(
"${redis.
key.
expire.authCode}"
)
@Value
(
"${redis.expire.authCode}"
)
private
Long
AUTH_CODE_EXPIRE_SECONDS
;
@Override
public
UmsMember
getByUsername
(
String
username
)
{
UmsMember
member
=
memberCacheService
.
getMember
(
username
);
if
(
member
!=
null
)
return
member
;
UmsMemberExample
example
=
new
UmsMemberExample
();
example
.
createCriteria
().
andUsernameEqualTo
(
username
);
List
<
UmsMember
>
memberList
=
memberMapper
.
selectByExample
(
example
);
if
(!
CollectionUtils
.
isEmpty
(
memberList
))
{
return
memberList
.
get
(
0
);
member
=
memberList
.
get
(
0
);
memberCacheService
.
setMember
(
member
);
return
member
;
}
return
null
;
}
...
...
@@ -109,9 +113,7 @@ public class UmsMemberServiceImpl implements UmsMemberService {
for
(
int
i
=
0
;
i
<
6
;
i
++){
sb
.
append
(
random
.
nextInt
(
10
));
}
//验证码绑定手机号并存储到redis
redisService
.
set
(
REDIS_KEY_PREFIX_AUTH_CODE
+
telephone
,
sb
.
toString
());
redisService
.
expire
(
REDIS_KEY_PREFIX_AUTH_CODE
+
telephone
,
AUTH_CODE_EXPIRE_SECONDS
);
memberCacheService
.
setAuthCode
(
telephone
,
sb
.
toString
());
return
sb
.
toString
();
}
...
...
@@ -130,6 +132,7 @@ public class UmsMemberServiceImpl implements UmsMemberService {
UmsMember
umsMember
=
memberList
.
get
(
0
);
umsMember
.
setPassword
(
passwordEncoder
.
encode
(
password
));
memberMapper
.
updateByPrimaryKeySelective
(
umsMember
);
memberCacheService
.
delMember
(
umsMember
.
getId
());
}
@Override
...
...
@@ -146,6 +149,7 @@ public class UmsMemberServiceImpl implements UmsMemberService {
record
.
setId
(
id
);
record
.
setIntegration
(
integration
);
memberMapper
.
updateByPrimaryKeySelective
(
record
);
memberCacheService
.
delMember
(
id
);
}
@Override
...
...
@@ -185,7 +189,7 @@ public class UmsMemberServiceImpl implements UmsMemberService {
if
(
StringUtils
.
isEmpty
(
authCode
)){
return
false
;
}
String
realAuthCode
=
redisService
.
get
(
REDIS_KEY_PREFIX_AUTH_CODE
+
telephone
);
String
realAuthCode
=
memberCacheService
.
getAuthCode
(
telephone
);
return
authCode
.
equals
(
realAuthCode
);
}
...
...
mall-portal/src/main/resources/application-dev.yml
View file @
092bd902
...
...
@@ -33,7 +33,7 @@ spring:
max-wait
:
-1ms
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle
:
8
# 连接池中的最大空闲连接
min-idle
:
0
# 连接池中的最小空闲连接
timeout
:
3
000ms
# 连接超时时间(毫秒)
timeout
:
1
000ms
# 连接超时时间(毫秒)
rabbitmq
:
host
:
localhost
...
...
mall-portal/src/main/resources/application.yml
View file @
092bd902
...
...
@@ -10,7 +10,7 @@ mybatis:
jwt
:
tokenHeader
:
Authorization
#JWT存储的请求头
secret
:
mall-portal-secret
#JWT加解密使用的密钥
expiration
:
604800
#JWT的超期限时间(60*60*24)
expiration
:
604800
#JWT的超期限时间(60*60*24
*7
)
tokenHead
:
Bearer
#JWT负载中拿到开头
secure
:
...
...
@@ -32,12 +32,14 @@ secure:
# 自定义redis key
redis
:
database
:
mall
key
:
prefix
:
authCode
:
"
portal:authCode:"
orderId
:
"
portal:orderId:"
expire
:
authCode
:
90
# 验证码超期时间
authCode
:
'
ums:authCode'
orderId
:
'
oms:orderId'
member
:
'
ums:member'
expire
:
authCode
:
90
# 验证码超期时间
common
:
86400
# 24小时
# 消息队列定义
rabbitmq
:
...
...
Write
Preview
Supports
Markdown
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