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
08625b0c
Commit
08625b0c
authored
Aug 08, 2020
by
macro
Browse files
升级SpringBoot 2.3.0
parent
6a9f1202
Changes
49
Hide whitespace changes
Inline
Side-by-side
mall-search/src/main/java/com/macro/mall/search/config/Swagger2Config.java
deleted
100644 → 0
View file @
6a9f1202
package
com.macro.mall.search.config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
/**
* Swagger API文档相关配置
* Created by macro on 2018/4/26.
*/
@Configuration
@EnableSwagger2
public
class
Swagger2Config
{
@Bean
public
Docket
createRestApi
(){
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
select
()
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"com.macro.mall.search.controller"
))
.
paths
(
PathSelectors
.
any
())
.
build
();
}
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
.
title
(
"mall搜索系统"
)
.
description
(
"mall搜索模块"
)
.
contact
(
"macro"
)
.
version
(
"1.0"
)
.
build
();
}
}
mall-search/src/main/java/com/macro/mall/search/config/SwaggerConfig.java
0 → 100644
View file @
08625b0c
package
com.macro.mall.search.config
;
import
com.macro.mall.common.config.BaseSwaggerConfig
;
import
com.macro.mall.common.domain.SwaggerProperties
;
import
org.springframework.context.annotation.Configuration
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
/**
* Swagger2API文档的配置
* Created by macro on 2018/4/26.
*/
@Configuration
@EnableSwagger2
public
class
SwaggerConfig
extends
BaseSwaggerConfig
{
@Override
public
SwaggerProperties
swaggerProperties
()
{
return
SwaggerProperties
.
builder
()
.
apiBasePackage
(
"com.macro.mall.search.controller"
)
.
title
(
"mall搜索系统"
)
.
description
(
"mall搜索相关接口文档"
)
.
contactName
(
"macro"
)
.
version
(
"1.0"
)
.
enableSecurity
(
false
)
.
build
();
}
}
mall-search/src/main/java/com/macro/mall/search/service/impl/EsProductServiceImpl.java
View file @
08625b0c
...
...
@@ -5,7 +5,6 @@ import com.macro.mall.search.domain.EsProduct;
import
com.macro.mall.search.domain.EsProductRelatedInfo
;
import
com.macro.mall.search.repository.EsProductRepository
;
import
com.macro.mall.search.service.EsProductService
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.elasticsearch.common.lucene.search.function.FunctionScoreQuery
;
import
org.elasticsearch.index.query.BoolQueryBuilder
;
import
org.elasticsearch.index.query.QueryBuilders
;
...
...
@@ -14,10 +13,10 @@ import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
import
org.elasticsearch.search.aggregations.AbstractAggregationBuilder
;
import
org.elasticsearch.search.aggregations.Aggregation
;
import
org.elasticsearch.search.aggregations.AggregationBuilders
;
import
org.elasticsearch.search.aggregations.bucket.filter.
Internal
Filter
;
import
org.elasticsearch.search.aggregations.bucket.nested.
Internal
Nested
;
import
org.elasticsearch.search.aggregations.bucket.terms.LongTerms
;
import
org.elasticsearch.search.aggregations.bucket.terms.StringTerms
;
import
org.elasticsearch.search.aggregations.bucket.filter.
Parsed
Filter
;
import
org.elasticsearch.search.aggregations.bucket.nested.
Parsed
Nested
;
import
org.elasticsearch.search.aggregations.bucket.terms.
Parsed
LongTerms
;
import
org.elasticsearch.search.aggregations.bucket.terms.
Parsed
StringTerms
;
import
org.elasticsearch.search.aggregations.bucket.terms.Terms
;
import
org.elasticsearch.search.sort.SortBuilders
;
import
org.elasticsearch.search.sort.SortOrder
;
...
...
@@ -28,7 +27,10 @@ import org.springframework.data.domain.Page;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
;
import
org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate
;
import
org.springframework.data.elasticsearch.core.SearchHit
;
import
org.springframework.data.elasticsearch.core.SearchHits
;
import
org.springframework.data.elasticsearch.core.mapping.IndexCoordinates
;
import
org.springframework.data.elasticsearch.core.query.NativeSearchQuery
;
import
org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder
;
import
org.springframework.stereotype.Service
;
...
...
@@ -39,6 +41,7 @@ import java.util.ArrayList;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -53,7 +56,7 @@ public class EsProductServiceImpl implements EsProductService {
@Autowired
private
EsProductRepository
productRepository
;
@Autowired
private
ElasticsearchTemplate
elasticsearchTemplate
;
private
Elasticsearch
Rest
Template
elasticsearch
Rest
Template
;
@Override
public
int
importAll
()
{
List
<
EsProduct
>
esProductList
=
productDao
.
getAllEsProductList
(
null
);
...
...
@@ -157,7 +160,12 @@ public class EsProductServiceImpl implements EsProductService {
nativeSearchQueryBuilder
.
withSort
(
SortBuilders
.
scoreSort
().
order
(
SortOrder
.
DESC
));
NativeSearchQuery
searchQuery
=
nativeSearchQueryBuilder
.
build
();
LOGGER
.
info
(
"DSL:{}"
,
searchQuery
.
getQuery
().
toString
());
return
productRepository
.
search
(
searchQuery
);
SearchHits
<
EsProduct
>
searchHits
=
elasticsearchRestTemplate
.
search
(
searchQuery
,
EsProduct
.
class
);
if
(
searchHits
.
getTotalHits
()<=
0
){
return
new
PageImpl
<>(
null
,
pageable
,
0
);
}
List
<
EsProduct
>
searchProductList
=
searchHits
.
stream
().
map
(
SearchHit:
:
getContent
).
collect
(
Collectors
.
toList
());
return
new
PageImpl
<>(
searchProductList
,
pageable
,
searchHits
.
getTotalHits
());
}
@Override
...
...
@@ -196,7 +204,12 @@ public class EsProductServiceImpl implements EsProductService {
builder
.
withPageable
(
pageable
);
NativeSearchQuery
searchQuery
=
builder
.
build
();
LOGGER
.
info
(
"DSL:{}"
,
searchQuery
.
getQuery
().
toString
());
return
productRepository
.
search
(
searchQuery
);
SearchHits
<
EsProduct
>
searchHits
=
elasticsearchRestTemplate
.
search
(
searchQuery
,
EsProduct
.
class
);
if
(
searchHits
.
getTotalHits
()<=
0
){
return
new
PageImpl
<>(
null
,
pageable
,
0
);
}
List
<
EsProduct
>
searchProductList
=
searchHits
.
stream
().
map
(
SearchHit:
:
getContent
).
collect
(
Collectors
.
toList
());
return
new
PageImpl
<>(
searchProductList
,
pageable
,
searchHits
.
getTotalHits
());
}
return
new
PageImpl
<>(
null
);
}
...
...
@@ -225,16 +238,14 @@ public class EsProductServiceImpl implements EsProductService {
.
field
(
"attrValueList.name"
))));
builder
.
addAggregation
(
aggregationBuilder
);
NativeSearchQuery
searchQuery
=
builder
.
build
();
return
elasticsearchTemplate
.
query
(
searchQuery
,
response
->
{
LOGGER
.
info
(
"DSL:{}"
,
searchQuery
.
getQuery
().
toString
());
return
convertProductRelatedInfo
(
response
);
});
SearchHits
<
EsProduct
>
searchHits
=
elasticsearchRestTemplate
.
search
(
searchQuery
,
EsProduct
.
class
);
return
convertProductRelatedInfo
(
searchHits
);
}
/**
* 将返回结果转换为对象
*/
private
EsProductRelatedInfo
convertProductRelatedInfo
(
Search
Response
response
)
{
private
EsProductRelatedInfo
convertProductRelatedInfo
(
Search
Hits
<
EsProduct
>
response
)
{
EsProductRelatedInfo
productRelatedInfo
=
new
EsProductRelatedInfo
();
Map
<
String
,
Aggregation
>
aggregationMap
=
response
.
getAggregations
().
getAsMap
();
//设置品牌
...
...
@@ -253,14 +264,14 @@ public class EsProductServiceImpl implements EsProductService {
productRelatedInfo
.
setProductCategoryNames
(
productCategoryNameList
);
//设置参数
Aggregation
productAttrs
=
aggregationMap
.
get
(
"allAttrValues"
);
List
<
Long
Terms
.
Bucket
>
attrIds
=
((
LongTerms
)
((
Internal
Filter
)
((
Internal
Nested
)
productAttrs
).
get
Property
(
"productAttrs"
)).
get
Property
(
"attrIds"
)).
getBuckets
();
List
<
?
extends
Terms
.
Bucket
>
attrIds
=
((
Parsed
LongTerms
)
((
Parsed
Filter
)
((
Parsed
Nested
)
productAttrs
).
get
Aggregations
().
get
(
"productAttrs"
)).
get
Aggregations
().
get
(
"attrIds"
)).
getBuckets
();
List
<
EsProductRelatedInfo
.
ProductAttr
>
attrList
=
new
ArrayList
<>();
for
(
Terms
.
Bucket
attrId
:
attrIds
)
{
EsProductRelatedInfo
.
ProductAttr
attr
=
new
EsProductRelatedInfo
.
ProductAttr
();
attr
.
setAttrId
((
Long
)
attrId
.
getKey
());
List
<
String
>
attrValueList
=
new
ArrayList
<>();
List
<
String
Terms
.
Bucket
>
attrValues
=
((
StringTerms
)
attrId
.
getAggregations
().
get
(
"attrValues"
)).
getBuckets
();
List
<
String
Terms
.
Bucket
>
attrNames
=
((
StringTerms
)
attrId
.
getAggregations
().
get
(
"attrNames"
)).
getBuckets
();
List
<
?
extends
Terms
.
Bucket
>
attrValues
=
((
Parsed
StringTerms
)
attrId
.
getAggregations
().
get
(
"attrValues"
)).
getBuckets
();
List
<
?
extends
Terms
.
Bucket
>
attrNames
=
((
Parsed
StringTerms
)
attrId
.
getAggregations
().
get
(
"attrNames"
)).
getBuckets
();
for
(
Terms
.
Bucket
attrValue
:
attrValues
)
{
attrValueList
.
add
(
attrValue
.
getKeyAsString
());
}
...
...
mall-search/src/main/resources/application-dev.yml
View file @
08625b0c
...
...
@@ -16,4 +16,14 @@ spring:
elasticsearch
:
repositories
:
enabled
:
true
cluster-nodes
:
127.0.0.1:9300
\ No newline at end of file
elasticsearch
:
rest
:
uris
:
localhost:9200
logging
:
level
:
root
:
info
com.macro.mall
:
debug
logstash
:
host
:
localhost
\ No newline at end of file
mall-search/src/main/resources/application-prod.yml
View file @
08625b0c
...
...
@@ -12,12 +12,20 @@ spring:
stat-view-servlet
:
#访问监控网页的登录用户名和密码
login-username
:
druid
login-password
:
druid
data
:
elasticsearch
:
repositories
:
enabled
:
true
cluster-nodes
:
es:9300
elasticsearch
:
rest
:
uris
:
es:9200
logging
:
path
:
/var/logs
#配置日志生成路径
file
:
path
:
/var/logs
level
:
root
:
info
com.macro.mall
:
info
logstash
:
host
:
logstash
\ No newline at end of file
mall-search/src/main/resources/application.yml
View file @
08625b0c
spring
:
application
:
name
:
mall-search
profiles
:
active
:
dev
#默认为开发环境
...
...
@@ -10,10 +12,5 @@ mybatis:
-
classpath:dao/*.xml
-
classpath*:com/**/mapper/*.xml
logging
:
level
:
root
:
info
com.macro.mall
:
debug
mall-search/src/test/java/com/macro/mall/search/MallSearchApplicationTests.java
View file @
08625b0c
...
...
@@ -2,14 +2,12 @@ package com.macro.mall.search;
import
com.macro.mall.search.dao.EsProductDao
;
import
com.macro.mall.search.domain.EsProduct
;
import
com.macro.mall.search.repository.EsProductRepository
;
import
org.elasticsearch.action.search.SearchResponse
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
;
import
org.springframework.data.elasticsearch.core.
ResultsExtractor
;
import
org.springframework.data.elasticsearch.core.Elasticsearch
Rest
Template
;
import
org.springframework.data.elasticsearch.core.
IndexOperations
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.List
;
...
...
@@ -21,7 +19,7 @@ public class MallSearchApplicationTests {
@Autowired
private
EsProductDao
productDao
;
@Autowired
private
ElasticsearchTemplate
elasticsearchTemplate
;
private
Elasticsearch
Rest
Template
elasticsearchTemplate
;
@Test
public
void
contextLoads
()
{
}
...
...
@@ -32,8 +30,9 @@ public class MallSearchApplicationTests {
}
@Test
public
void
testEsProductMapping
(){
elasticsearchTemplate
.
putMapping
(
EsProduct
.
class
);
Map
mapping
=
elasticsearchTemplate
.
getMapping
(
EsProduct
.
class
);
IndexOperations
indexOperations
=
elasticsearchTemplate
.
indexOps
(
EsProduct
.
class
);
indexOperations
.
putMapping
(
indexOperations
.
createMapping
(
EsProduct
.
class
));
Map
mapping
=
indexOperations
.
getMapping
();
System
.
out
.
println
(
mapping
);
}
...
...
mall-security/src/main/java/com/macro/mall/security/config/RedisConfig.java
View file @
08625b0c
package
com.macro.mall.security.config
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.PropertyAccessor
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.springframework.cache.annotation.CachingConfigurerSupport
;
import
com.macro.mall.common.config.BaseRedisConfig
;
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.cache.RedisCacheWriter
;
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
;
/**
* Redis
相关
配置
* Redis配置
类
* Created by macro on 2020/3/2.
*/
@EnableCaching
@Configuration
public
class
RedisConfig
extends
CachingConfigurerSupport
{
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
RedisSerializer
<
Object
>
serializer
=
redisSerializer
();
RedisTemplate
<
String
,
Object
>
redisTemplate
=
new
RedisTemplate
<>();
redisTemplate
.
setConnectionFactory
(
redisConnectionFactory
);
redisTemplate
.
setKeySerializer
(
new
StringRedisSerializer
());
redisTemplate
.
setValueSerializer
(
serializer
);
redisTemplate
.
setHashKeySerializer
(
new
StringRedisSerializer
());
redisTemplate
.
setHashValueSerializer
(
serializer
);
redisTemplate
.
afterPropertiesSet
();
return
redisTemplate
;
}
@Bean
public
RedisSerializer
<
Object
>
redisSerializer
()
{
//创建JSON序列化器
Jackson2JsonRedisSerializer
<
Object
>
serializer
=
new
Jackson2JsonRedisSerializer
<>(
Object
.
class
);
ObjectMapper
objectMapper
=
new
ObjectMapper
();
objectMapper
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
objectMapper
.
enableDefaultTyping
(
ObjectMapper
.
DefaultTyping
.
NON_FINAL
);
serializer
.
setObjectMapper
(
objectMapper
);
return
serializer
;
}
@Bean
public
RedisCacheManager
redisCacheManager
(
RedisConnectionFactory
redisConnectionFactory
)
{
RedisCacheWriter
redisCacheWriter
=
RedisCacheWriter
.
nonLockingRedisCacheWriter
(
redisConnectionFactory
);
//设置Redis缓存有效期为1天
RedisCacheConfiguration
redisCacheConfiguration
=
RedisCacheConfiguration
.
defaultCacheConfig
()
.
serializeValuesWith
(
RedisSerializationContext
.
SerializationPair
.
fromSerializer
(
redisSerializer
())).
entryTtl
(
Duration
.
ofDays
(
1
));
return
new
RedisCacheManager
(
redisCacheWriter
,
redisCacheConfiguration
);
}
public
class
RedisConfig
extends
BaseRedisConfig
{
}
pom.xml
View file @
08625b0c
...
...
@@ -22,7 +22,7 @@
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.
1.7
.RELEASE
</version>
<version>
2.
3.0
.RELEASE
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
...
...
@@ -42,11 +42,11 @@
<swagger-annotations.version>
1.6.0
</swagger-annotations.version>
<mybatis-generator.version>
1.3.7
</mybatis-generator.version>
<mybatis.version>
3.4.6
</mybatis.version>
<mysql-connector.version>
8.0.1
6
</mysql-connector.version>
<spring-data-commons.version>
2.
1.5
.RELEASE
</spring-data-commons.version>
<mysql-connector.version>
8.0.1
5
</mysql-connector.version>
<spring-data-commons.version>
2.
3.0
.RELEASE
</spring-data-commons.version>
<jjwt.version>
0.9.0
</jjwt.version>
<aliyun-oss.version>
2.5.0
</aliyun-oss.version>
<logstash-logback.version>
4.8
</logstash-logback.version>
<logstash-logback.version>
5.3
</logstash-logback.version>
<minio.version>
3.0.10
</minio.version>
<guava.version>
20.0
</guava.version>
<mall-common.version>
1.0-SNAPSHOT
</mall-common.version>
...
...
@@ -55,10 +55,6 @@
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-actuator
</artifactId>
...
...
@@ -73,12 +69,17 @@
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
c
om.github.pagehelper
</groupId>
<artifactId>
pagehelper-spring-boot-starter
</artifactId>
<groupId>
c
n.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
...
...
Prev
1
2
3
Next
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