添加商品导入es功能
This commit is contained in:
parent
f960972e54
commit
d1e687da73
@ -38,12 +38,28 @@
|
|||||||
<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>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--MyBatis分页插件-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.pagehelper</groupId>
|
||||||
|
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||||||
|
<version>1.2.3</version>
|
||||||
|
</dependency>
|
||||||
|
<!--Swagger-UI API文档生产工具-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger2</artifactId>
|
||||||
|
<version>2.6.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>2.6.1</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
package com.macro.mall.search;
|
package com.macro.mall.search;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
|
@MapperScan({"com.macro.mall.mapper","com.macro.mall.search.dao"})
|
||||||
public class MallSearchApplication {
|
public class MallSearchApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Swagger2API文档的配置
|
||||||
|
* 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();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.macro.mall.search.controller;
|
||||||
|
|
||||||
|
import com.macro.mall.search.service.EsProductService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索商品管理Controller
|
||||||
|
* Created by macro on 2018/6/19.
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
@Api(tags = "EsProductController", description = "搜索商品管理")
|
||||||
|
@RequestMapping("/search/product")
|
||||||
|
public class EsProductController {
|
||||||
|
@Autowired
|
||||||
|
private EsProductService esProductService;
|
||||||
|
@ApiOperation(value = "导入所有数据库中商品到ES")
|
||||||
|
@RequestMapping(value = "/importAll", method = RequestMethod.POST)
|
||||||
|
@ResponseBody
|
||||||
|
public Object importAllList() {
|
||||||
|
return esProductService.importAll();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.macro.mall.search.dao;
|
||||||
|
|
||||||
|
import com.macro.mall.search.domain.EsProduct;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索系统中的商品管理自定义Dao
|
||||||
|
* Created by macro on 2018/6/19.
|
||||||
|
*/
|
||||||
|
public interface EsProductDao {
|
||||||
|
List<EsProduct> getAllEsProductList();
|
||||||
|
}
|
@ -0,0 +1,190 @@
|
|||||||
|
package com.macro.mall.search.domain;
|
||||||
|
|
||||||
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索中的商品信息
|
||||||
|
* Created by macro on 2018/6/19.
|
||||||
|
*/
|
||||||
|
@Document(indexName = "pms", type = "product")
|
||||||
|
public class EsProduct implements Serializable {
|
||||||
|
private static final long serialVersionUID = -1L;
|
||||||
|
private Long id;
|
||||||
|
private String productSn;
|
||||||
|
private Long brandId;
|
||||||
|
private String brandName;
|
||||||
|
private Long productCategoryId;
|
||||||
|
private String productCategoryName;
|
||||||
|
private String pic;
|
||||||
|
private String name;
|
||||||
|
private String subTitle;
|
||||||
|
private BigDecimal price;
|
||||||
|
private Integer sale;
|
||||||
|
private Integer newStatus;
|
||||||
|
private Integer recommandStatus;
|
||||||
|
private Integer stock;
|
||||||
|
private Integer promotionType;
|
||||||
|
private Integer sort;
|
||||||
|
private List<EsProductAttrValue> attrValueList;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProductSn() {
|
||||||
|
return productSn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductSn(String productSn) {
|
||||||
|
this.productSn = productSn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getBrandId() {
|
||||||
|
return brandId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBrandId(Long brandId) {
|
||||||
|
this.brandId = brandId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBrandName() {
|
||||||
|
return brandName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBrandName(String brandName) {
|
||||||
|
this.brandName = brandName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getProductCategoryId() {
|
||||||
|
return productCategoryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductCategoryId(Long productCategoryId) {
|
||||||
|
this.productCategoryId = productCategoryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProductCategoryName() {
|
||||||
|
return productCategoryName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProductCategoryName(String productCategoryName) {
|
||||||
|
this.productCategoryName = productCategoryName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPic() {
|
||||||
|
return pic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPic(String pic) {
|
||||||
|
this.pic = pic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSubTitle() {
|
||||||
|
return subTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSubTitle(String subTitle) {
|
||||||
|
this.subTitle = subTitle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BigDecimal getPrice() {
|
||||||
|
return price;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPrice(BigDecimal price) {
|
||||||
|
this.price = price;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSale() {
|
||||||
|
return sale;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSale(Integer sale) {
|
||||||
|
this.sale = sale;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getNewStatus() {
|
||||||
|
return newStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNewStatus(Integer newStatus) {
|
||||||
|
this.newStatus = newStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getRecommandStatus() {
|
||||||
|
return recommandStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecommandStatus(Integer recommandStatus) {
|
||||||
|
this.recommandStatus = recommandStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getStock() {
|
||||||
|
return stock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStock(Integer stock) {
|
||||||
|
this.stock = stock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getPromotionType() {
|
||||||
|
return promotionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPromotionType(Integer promotionType) {
|
||||||
|
this.promotionType = promotionType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSort() {
|
||||||
|
return sort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSort(Integer sort) {
|
||||||
|
this.sort = sort;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<EsProductAttrValue> getAttrValueList() {
|
||||||
|
return attrValueList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttrValueList(List<EsProductAttrValue> attrValueList) {
|
||||||
|
this.attrValueList = attrValueList;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class EsProductAttrValue {
|
||||||
|
private Long id;
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.macro.mall.search.repository;
|
||||||
|
|
||||||
|
import com.macro.mall.search.domain.EsProduct;
|
||||||
|
import org.springframework.data.elasticsearch.repository.ElasticsearchCrudRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品ES操作类
|
||||||
|
* Created by macro on 2018/6/19.
|
||||||
|
*/
|
||||||
|
public interface EsProductRepository extends ElasticsearchCrudRepository<EsProduct,Long> {
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.macro.mall.search.service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品搜索管理Service
|
||||||
|
* Created by macro on 2018/6/19.
|
||||||
|
*/
|
||||||
|
public interface EsProductService {
|
||||||
|
/**
|
||||||
|
* 从数据库中导入所有商品到ES
|
||||||
|
*/
|
||||||
|
Object importAll();
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.macro.mall.search.service.impl;
|
||||||
|
|
||||||
|
import com.macro.mall.search.dao.EsProductDao;
|
||||||
|
import com.macro.mall.search.domain.EsProduct;
|
||||||
|
import com.macro.mall.search.repository.EsProductRepository;
|
||||||
|
import com.macro.mall.search.service.EsProductService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品搜索管理Service实现类
|
||||||
|
* Created by macro on 2018/6/19.
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class EsProductServiceImpl implements EsProductService {
|
||||||
|
@Autowired
|
||||||
|
private EsProductDao productDao;
|
||||||
|
@Autowired
|
||||||
|
private EsProductRepository productRepository;
|
||||||
|
@Override
|
||||||
|
public Object importAll() {
|
||||||
|
List<EsProduct> esProductList = productDao.getAllEsProductList();
|
||||||
|
Iterable<EsProduct> esProductIterable = productRepository.save(esProductList);
|
||||||
|
return esProductIterable;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
#===server start===
|
||||||
|
server.port=8081
|
||||||
|
#===server end===
|
||||||
|
|
||||||
|
#===datasource start===
|
||||||
|
spring.datasource.url=jdbc:mysql://localhost:3306/mall
|
||||||
|
spring.datasource.username=root
|
||||||
|
spring.datasource.password=root
|
||||||
|
#===datasource end===
|
||||||
|
|
||||||
|
#===mybatis start===
|
||||||
|
mybatis.mapper-locations=classpath:dao/*.xml,classpath*:com/**/mapper/*.xml
|
||||||
|
#===mybatis end===
|
||||||
|
|
||||||
|
#===es start===
|
||||||
|
spring.data.elasticsearch.repositories.enabled = true
|
||||||
|
spring.data.elasticsearch.cluster-nodes = 127.0.0.1:9300
|
||||||
|
#===es end===
|
33
mall-search/src/main/resources/dao/EsProductDao.xml
Normal file
33
mall-search/src/main/resources/dao/EsProductDao.xml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<?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.macro.mall.search.dao.EsProductDao">
|
||||||
|
<resultMap id="esProductListMap" type="com.macro.mall.search.domain.EsProduct" autoMapping="true">
|
||||||
|
<id column="id" jdbcType="BIGINT" property="id" />
|
||||||
|
<collection property="attrValueList" columnPrefix="attr_" resultMap="com.macro.mall.mapper.PmsProductAttributeValueMapper.BaseResultMap">
|
||||||
|
</collection>
|
||||||
|
</resultMap>
|
||||||
|
<select id="getAllEsProductList" resultMap="esProductListMap">
|
||||||
|
select
|
||||||
|
p.id id,
|
||||||
|
p.product_sn productSn,
|
||||||
|
p.brand_id brandId,
|
||||||
|
p.brand_name brandName,
|
||||||
|
p.product_category_id productCategoryId,
|
||||||
|
p.product_category_name productCategoryName,
|
||||||
|
p.pic pic,
|
||||||
|
p.name name,
|
||||||
|
p.sub_title subTitle,
|
||||||
|
p.price price,
|
||||||
|
p.sale sale,
|
||||||
|
p.new_status newStatus,
|
||||||
|
p.recommand_status recommandStatus,
|
||||||
|
p.stock stock,
|
||||||
|
p.promotion_type promotionType,
|
||||||
|
p.sort sort,
|
||||||
|
a.id attr_id,
|
||||||
|
a.value attr_value
|
||||||
|
from pms_product p
|
||||||
|
left join pms_product_attribute_value a on p.id = a.product_id
|
||||||
|
where delete_status = 0 and publish_status = 1
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -1,16 +1,27 @@
|
|||||||
package com.macro.mall.search;
|
package com.macro.mall.search;
|
||||||
|
|
||||||
|
import com.macro.mall.search.dao.EsProductDao;
|
||||||
|
import com.macro.mall.search.domain.EsProduct;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@RunWith(SpringRunner.class)
|
@RunWith(SpringRunner.class)
|
||||||
@SpringBootTest
|
@SpringBootTest
|
||||||
public class MallSearchApplicationTests {
|
public class MallSearchApplicationTests {
|
||||||
|
@Autowired
|
||||||
|
private EsProductDao productDao;
|
||||||
@Test
|
@Test
|
||||||
public void contextLoads() {
|
public void contextLoads() {
|
||||||
}
|
}
|
||||||
|
@Test
|
||||||
|
public void testGetAllEsProductList(){
|
||||||
|
List<EsProduct> esProductList = productDao.getAllEsProductList();
|
||||||
|
System.out.print(esProductList);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user