Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来技术
youlai-mall
提交
8bc5ed48
Y
youlai-mall
项目概览
有来技术
/
youlai-mall
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-mall
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8bc5ed48
编写于
11月 30, 2022
作者:
H
haoxr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: pms工程结构优化,删除布隆过滤器
上级
c366f293
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
6 addition
and
197 deletion
+6
-197
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/component/BloomRedisService.java
...java/com/youlai/mall/pms/component/BloomRedisService.java
+0
-50
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/config/BloomFilterConfig.java
...in/java/com/youlai/mall/pms/config/BloomFilterConfig.java
+0
-57
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/config/InterceptorConfiguration.java
.../com/youlai/mall/pms/config/InterceptorConfiguration.java
+0
-29
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/constant/PmsConstants.java
.../main/java/com/youlai/mall/pms/constant/PmsConstants.java
+1
-1
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/enums/AttributeTypeEnum.java
...ain/java/com/youlai/mall/pms/enums/AttributeTypeEnum.java
+1
-1
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/interceptor/BloomFilterInterceptor.java
...m/youlai/mall/pms/interceptor/BloomFilterInterceptor.java
+0
-55
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java
...a/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java
+1
-1
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSpuServiceImpl.java
...a/com/youlai/mall/pms/service/impl/PmsSpuServiceImpl.java
+2
-2
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/util/BloomFilterUtils.java
.../main/java/com/youlai/mall/pms/util/BloomFilterUtils.java
+1
-1
未找到文件。
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/component/BloomRedisService.java
已删除
100644 → 0
浏览文件 @
c366f293
package
com.youlai.mall.pms.component
;
import
com.google.common.base.Preconditions
;
import
com.youlai.mall.pms.utils.BloomFilterUtils
;
import
org.springframework.data.redis.core.RedisTemplate
;
/**
* @Author DaniR
* @Description
* @Date 2021/6/26 9:38
**/
public
class
BloomRedisService
{
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
private
BloomFilterUtils
bloomFilterUtils
;
public
void
setBloomFilterUtils
(
BloomFilterUtils
bloomFilterUtils
)
{
this
.
bloomFilterUtils
=
bloomFilterUtils
;
}
public
void
setRedisTemplate
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
this
.
redisTemplate
=
redisTemplate
;
}
/**
* 根据给定的布隆过滤器添加值
*/
public
<
T
>
void
addByBloomFilter
(
String
key
,
T
value
)
{
Preconditions
.
checkArgument
(
bloomFilterUtils
!=
null
,
"bloomFilterHelper不能为空"
);
int
[]
offset
=
bloomFilterUtils
.
murmurHash
(
value
);
for
(
int
i
:
offset
)
{
redisTemplate
.
opsForValue
().
setBit
(
key
,
i
,
true
);
}
}
/**
* 根据给定的布隆过滤器判断值是否存在
*/
public
<
T
>
boolean
includeByBloomFilter
(
String
key
,
T
value
)
{
Preconditions
.
checkArgument
(
bloomFilterUtils
!=
null
,
"bloomFilterHelper不能为空"
);
int
[]
offset
=
bloomFilterUtils
.
murmurHash
(
value
);
for
(
int
i
:
offset
)
{
if
(!
redisTemplate
.
opsForValue
().
getBit
(
key
,
i
))
{
return
false
;
}
}
return
true
;
}
}
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/config/BloomFilterConfig.java
已删除
100644 → 0
浏览文件 @
c366f293
package
com.youlai.mall.pms.config
;
import
com.google.common.base.Charsets
;
import
com.google.common.hash.Funnel
;
import
com.youlai.mall.pms.common.constant.PmsConstants
;
import
com.youlai.mall.pms.component.BloomRedisService
;
import
com.youlai.mall.pms.pojo.entity.PmsSpu
;
import
com.youlai.mall.pms.service.IPmsSpuService
;
import
com.youlai.mall.pms.utils.BloomFilterUtils
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
/**
* @Author DaniR
* @Description
* @Date 2021/6/26 9:39
**/
@Slf4j
@Configuration
@AllArgsConstructor
public
class
BloomFilterConfig
implements
InitializingBean
{
private
final
IPmsSpuService
pmsSpuServiced
;
private
final
RedisTemplate
redisTemplate
;
@Bean
public
BloomFilterUtils
<
String
>
initBloomFilterHelper
()
{
return
new
BloomFilterUtils
<>((
Funnel
<
String
>)
(
from
,
into
)
->
into
.
putString
(
from
,
Charsets
.
UTF_8
)
.
putString
(
from
,
Charsets
.
UTF_8
),
1000000
,
0.01
);
}
@Bean
public
BloomRedisService
bloomRedisService
()
{
BloomRedisService
bloomRedisService
=
new
BloomRedisService
();
bloomRedisService
.
setBloomFilterUtils
(
initBloomFilterHelper
());
bloomRedisService
.
setRedisTemplate
(
redisTemplate
);
return
bloomRedisService
;
}
@Override
public
void
afterPropertiesSet
()
throws
Exception
{
List
<
PmsSpu
>
list
=
pmsSpuServiced
.
list
();
log
.
info
(
"加载产品到布隆过滤器当中,size:{}"
,
list
.
size
());
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
list
.
stream
().
filter
(
item
->
item
.
getId
()
>
0
).
forEach
(
item
->
{
bloomRedisService
().
addByBloomFilter
(
PmsConstants
.
GOODS_BLOOM_FILTER
,
item
.
getId
()
+
""
);
});
}
}
}
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/config/InterceptorConfiguration.java
已删除
100644 → 0
浏览文件 @
c366f293
package
com.youlai.mall.pms.config
;
import
com.youlai.mall.pms.interceptor.BloomFilterInterceptor
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
/**
* @Author DaniR
* @Description
* @Date 2021/6/26 9:39
**/
@Configuration
public
class
InterceptorConfiguration
implements
WebMvcConfigurer
{
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
//注册拦截器
registry
.
addInterceptor
(
bloomInterceptorHandler
())
.
addPathPatterns
(
"/app-api/v1/goods/**"
)
.
excludePathPatterns
(
"/app-api/v1/goods/sku/**"
);
}
@Bean
public
BloomFilterInterceptor
bloomInterceptorHandler
()
{
return
new
BloomFilterInterceptor
();
}
}
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/co
mmon/co
nstant/PmsConstants.java
→
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/constant/PmsConstants.java
浏览文件 @
8bc5ed48
package
com.youlai.mall.pms.co
mmon.co
nstant
;
package
com.youlai.mall.pms.constant
;
/**
* 商品模块常量
...
...
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/
common/
enums/AttributeTypeEnum.java
→
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/enums/AttributeTypeEnum.java
浏览文件 @
8bc5ed48
package
com.youlai.mall.pms.
common.
enums
;
package
com.youlai.mall.pms.enums
;
import
lombok.Getter
;
...
...
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/interceptor/BloomFilterInterceptor.java
已删除
100644 → 0
浏览文件 @
c366f293
package
com.youlai.mall.pms.interceptor
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.youlai.common.result.Result
;
import
com.youlai.mall.pms.common.constant.PmsConstants
;
import
com.youlai.mall.pms.component.BloomRedisService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.MediaType
;
import
org.springframework.util.AntPathMatcher
;
import
org.springframework.util.PathMatcher
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.nio.charset.StandardCharsets
;
import
java.util.Map
;
/**
* @author DaniR
* @version 1.0
* @description 布隆过滤器拦截器
* @createDate 2021/6/23 20:50
*/
@Slf4j
public
class
BloomFilterInterceptor
implements
HandlerInterceptor
{
@Autowired
private
BloomRedisService
bloomRedisService
;
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
String
currentUrl
=
request
.
getRequestURI
();
PathMatcher
matcher
=
new
AntPathMatcher
();
Map
<
String
,
String
>
pathVariable
;
try
{
pathVariable
=
matcher
.
extractUriTemplateVariables
(
"/app-api/v1/goods/{id}"
,
currentUrl
);
}
catch
(
IllegalStateException
e
)
{
// 路径不匹配则放行
return
true
;
}
if
(
bloomRedisService
.
includeByBloomFilter
(
PmsConstants
.
GOODS_BLOOM_FILTER
,
pathVariable
.
get
(
"id"
)))
{
return
true
;
}
response
.
setContentType
(
MediaType
.
APPLICATION_JSON_VALUE
);
response
.
setStatus
(
HttpStatus
.
BAD_REQUEST
.
value
());
response
.
setCharacterEncoding
(
StandardCharsets
.
UTF_8
.
name
());
String
result
=
new
ObjectMapper
().
writeValueAsString
(
Result
.
failed
(
"商品不存在!"
));
response
.
getWriter
().
print
(
result
);
return
false
;
}
}
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSkuServiceImpl.java
浏览文件 @
8bc5ed48
...
...
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.youlai.common.web.exception.ApiException
;
import
com.youlai.mall.pms.co
mmon.co
nstant.PmsConstants
;
import
com.youlai.mall.pms.constant.PmsConstants
;
import
com.youlai.mall.pms.mapper.PmsSkuMapper
;
import
com.youlai.mall.pms.pojo.dto.CheckPriceDTO
;
import
com.youlai.mall.pms.pojo.dto.SkuInfoDTO
;
...
...
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/service/impl/PmsSpuServiceImpl.java
浏览文件 @
8bc5ed48
...
...
@@ -10,8 +10,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.youlai.common.security.util.SecurityUtils
;
import
com.youlai.mall.pms.co
mmon.co
nstant.PmsConstants
;
import
com.youlai.mall.pms.
common.
enums.AttributeTypeEnum
;
import
com.youlai.mall.pms.constant.PmsConstants
;
import
com.youlai.mall.pms.enums.AttributeTypeEnum
;
import
com.youlai.mall.pms.converter.SpuAttributeConverter
;
import
com.youlai.mall.pms.converter.SpuConverter
;
import
com.youlai.mall.pms.mapper.PmsSpuMapper
;
...
...
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/util
s
/BloomFilterUtils.java
→
mall-pms/pms-boot/src/main/java/com/youlai/mall/pms/util/BloomFilterUtils.java
浏览文件 @
8bc5ed48
package
com.youlai.mall.pms.util
s
;
package
com.youlai.mall.pms.util
;
import
com.google.common.hash.Funnel
;
import
com.google.common.hash.Hashing
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录