From 14eeeef06983c6098340ce8ae46e4826275bf99b Mon Sep 17 00:00:00 2001
From: Caps <279205343@qq.com>
Date: Fri, 6 Dec 2019 16:37:32 +0800
Subject: [PATCH 1/2] =?UTF-8?q?elasticSearch=E5=BC=95=E5=85=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 5 +-
.../polaris/commons/dto/PmsSearchCrumb.java | 12 ++
.../polaris/commons/dto/PmsSearchParam.java | 15 ++
.../polaris/commons/dto/PmsSearchSkuInfo.java | 24 +++
.../polaris/entity/ShopProductVariant.java | 36 ++--
.../mapper/ShopProductVariantMapper.java | 4 +-
.../model/ShopProductVariantEntity.java | 200 ------------------
.../hxtec/polaris/service/SearchService.java | 14 ++
.../service/impl/CartItemServiceImpl.java | 2 +-
.../service/impl/SearchServiceImpl.java | 123 +++++++++++
src/main/resources/application.yml | 8 +
.../mapper/ShopProductVariantMapper.xml | 20 +-
.../polaris/service/elasticSearchTest.java | 124 +++++++++++
13 files changed, 356 insertions(+), 231 deletions(-)
create mode 100644 src/main/java/com/hxtec/polaris/commons/dto/PmsSearchCrumb.java
create mode 100644 src/main/java/com/hxtec/polaris/commons/dto/PmsSearchParam.java
create mode 100644 src/main/java/com/hxtec/polaris/commons/dto/PmsSearchSkuInfo.java
delete mode 100644 src/main/java/com/hxtec/polaris/model/ShopProductVariantEntity.java
create mode 100644 src/main/java/com/hxtec/polaris/service/SearchService.java
create mode 100644 src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java
create mode 100644 src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java
diff --git a/pom.xml b/pom.xml
index 0a2dbbb..5941c5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -184,20 +184,19 @@
spring-boot-starter-cache
-
+
io.searchbox
jest
5.3.3
-
-
net.java.dev.jna
jna
4.5.1
+
diff --git a/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchCrumb.java b/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchCrumb.java
new file mode 100644
index 0000000..14a783d
--- /dev/null
+++ b/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchCrumb.java
@@ -0,0 +1,12 @@
+package com.hxtec.polaris.commons.dto;
+
+import lombok.Data;
+
+@Data
+public class PmsSearchCrumb {
+
+ private String valueId;
+ private String valueName;
+ private String urlParam;
+
+}
diff --git a/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchParam.java b/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchParam.java
new file mode 100644
index 0000000..51694c9
--- /dev/null
+++ b/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchParam.java
@@ -0,0 +1,15 @@
+package com.hxtec.polaris.commons.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+@Data
+public class PmsSearchParam implements Serializable{
+
+ private String catalogId;
+
+ private String keyword;
+
+ private String[] valueId;
+
+}
diff --git a/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchSkuInfo.java b/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchSkuInfo.java
new file mode 100644
index 0000000..b6ce774
--- /dev/null
+++ b/src/main/java/com/hxtec/polaris/commons/dto/PmsSearchSkuInfo.java
@@ -0,0 +1,24 @@
+package com.hxtec.polaris.commons.dto;
+
+import com.hxtec.polaris.entity.ShopProductVariantAttrValue;
+import lombok.Data;
+
+import javax.persistence.Id;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.List;
+@Data
+public class PmsSearchSkuInfo implements Serializable{
+ private long sku;
+ private String skuName;
+ private String description;
+ private String categoryId;
+ private BigDecimal price;
+ private String image;
+ private String spu;
+ private double hotScore;
+ private Double weight;
+ private List skuSaleAttrValueList;
+
+}
diff --git a/src/main/java/com/hxtec/polaris/entity/ShopProductVariant.java b/src/main/java/com/hxtec/polaris/entity/ShopProductVariant.java
index 73410de..2f61c54 100644
--- a/src/main/java/com/hxtec/polaris/entity/ShopProductVariant.java
+++ b/src/main/java/com/hxtec/polaris/entity/ShopProductVariant.java
@@ -4,19 +4,22 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
+import java.util.Date;import java.util.List;
import javax.persistence.*;
import lombok.Data;
/**
* @author Caps
- * @date 2019/11/29
+ * @date 2019/12/6
*/
@ApiModel(value = "com.hxtec.polaris.entity.ShopProductVariant")
@Data
@Table(name = "shop_product_variant")
public class ShopProductVariant implements Serializable {
+ @Transient
+ List skuSaleAttrValueList;
+ @Transient
+ List skuImageList;
/**
* 商品sku
*/
@@ -33,6 +36,20 @@ public class ShopProductVariant implements Serializable {
@ApiModelProperty(value = "商品spu")
private Integer spu;
+ /**
+ * 产品名称
+ */
+ @Column(name = "sku_name")
+ @ApiModelProperty(value = "产品名称")
+ private String skuName;
+
+ /**
+ * 商品分类id
+ */
+ @Column(name = "category_id")
+ @ApiModelProperty(value = "商品分类id")
+ private Integer categoryId;
+
/**
* 商品原价
*/
@@ -68,13 +85,6 @@ public class ShopProductVariant implements Serializable {
@ApiModelProperty(value = "上下架状态")
private String state;
- /**
- * 产品规格
- */
- @Column(name = "attribute_name")
- @ApiModelProperty(value = "产品规格")
- private String attributeName;
-
/**
* 产品描述
*/
@@ -124,11 +134,5 @@ public class ShopProductVariant implements Serializable {
@ApiModelProperty(value = "备用字段3")
private String comment3;
- @Transient
- List skuSaleAttrValueList;
-
- @Transient
- List skuImageList;
-
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
diff --git a/src/main/java/com/hxtec/polaris/mapper/ShopProductVariantMapper.java b/src/main/java/com/hxtec/polaris/mapper/ShopProductVariantMapper.java
index fc0fa01..9d32e53 100644
--- a/src/main/java/com/hxtec/polaris/mapper/ShopProductVariantMapper.java
+++ b/src/main/java/com/hxtec/polaris/mapper/ShopProductVariantMapper.java
@@ -1,11 +1,11 @@
package com.hxtec.polaris.mapper;
import com.hxtec.polaris.entity.ShopProductVariant;
-import tk.mybatis.mapper.MyMapper;import java.util.List;import java.util.Map;
+import tk.mybatis.mapper.MyMapper;import java.util.List;
/**
* @author Caps
- * @date 2019/11/29
+ * @date 2019/12/6
*/
public interface ShopProductVariantMapper extends MyMapper {
List selectSkuSaleAttrValueListBySpu(Integer spu);
diff --git a/src/main/java/com/hxtec/polaris/model/ShopProductVariantEntity.java b/src/main/java/com/hxtec/polaris/model/ShopProductVariantEntity.java
deleted file mode 100644
index 218220d..0000000
--- a/src/main/java/com/hxtec/polaris/model/ShopProductVariantEntity.java
+++ /dev/null
@@ -1,200 +0,0 @@
-package com.hxtec.polaris.model;
-
-import javax.persistence.*;
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-
-/**
- * @Author Marcus lv
- * @create 2019/11/28 5:54 下午
- */
-@Entity
-@Table(name = "shop_product_variant", schema = "hx_tec_shop", catalog = "")
-public class ShopProductVariantEntity {
- private long sku;
- private String spu;
- private BigDecimal price;
- private String image;
- private String state;
- private String attributeName;
- private String description;
- private Timestamp createTime;
- private Timestamp updateTime;
- private Double weight;
- private String comment1;
- private String comment2;
- private String comment3;
-
- @Id
- @Column(name = "sku")
- public long getSku() {
- return sku;
- }
-
- public void setSku(long sku) {
- this.sku = sku;
- }
-
- @Basic
- @Column(name = "spu")
- public String getSpu() {
- return spu;
- }
-
- public void setSpu(String spu) {
- this.spu = spu;
- }
-
- @Basic
- @Column(name = "price")
- public BigDecimal getPrice() {
- return price;
- }
-
- public void setPrice(BigDecimal price) {
- this.price = price;
- }
-
- @Basic
- @Column(name = "image")
- public String getImage() {
- return image;
- }
-
- public void setImage(String image) {
- this.image = image;
- }
-
- @Basic
- @Column(name = "state")
- public String getState() {
- return state;
- }
-
- public void setState(String state) {
- this.state = state;
- }
-
- @Basic
- @Column(name = "attribute_name")
- public String getAttributeName() {
- return attributeName;
- }
-
- public void setAttributeName(String attributeName) {
- this.attributeName = attributeName;
- }
-
- @Basic
- @Column(name = "description")
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- @Basic
- @Column(name = "create_time")
- public Timestamp getCreateTime() {
- return createTime;
- }
-
- public void setCreateTime(Timestamp createTime) {
- this.createTime = createTime;
- }
-
- @Basic
- @Column(name = "update_time")
- public Timestamp getUpdateTime() {
- return updateTime;
- }
-
- public void setUpdateTime(Timestamp updateTime) {
- this.updateTime = updateTime;
- }
-
- @Basic
- @Column(name = "weight")
- public Double getWeight() {
- return weight;
- }
-
- public void setWeight(Double weight) {
- this.weight = weight;
- }
-
- @Basic
- @Column(name = "comment1")
- public String getComment1() {
- return comment1;
- }
-
- public void setComment1(String comment1) {
- this.comment1 = comment1;
- }
-
- @Basic
- @Column(name = "comment2")
- public String getComment2() {
- return comment2;
- }
-
- public void setComment2(String comment2) {
- this.comment2 = comment2;
- }
-
- @Basic
- @Column(name = "comment3")
- public String getComment3() {
- return comment3;
- }
-
- public void setComment3(String comment3) {
- this.comment3 = comment3;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- ShopProductVariantEntity that = (ShopProductVariantEntity) o;
-
- if (sku != that.sku) return false;
- if (spu != null ? !spu.equals(that.spu) : that.spu != null) return false;
- if (price != null ? !price.equals(that.price) : that.price != null) return false;
- if (image != null ? !image.equals(that.image) : that.image != null) return false;
- if (state != null ? !state.equals(that.state) : that.state != null) return false;
- if (attributeName != null ? !attributeName.equals(that.attributeName) : that.attributeName != null)
- return false;
- if (description != null ? !description.equals(that.description) : that.description != null) return false;
- if (createTime != null ? !createTime.equals(that.createTime) : that.createTime != null) return false;
- if (updateTime != null ? !updateTime.equals(that.updateTime) : that.updateTime != null) return false;
- if (weight != null ? !weight.equals(that.weight) : that.weight != null) return false;
- if (comment1 != null ? !comment1.equals(that.comment1) : that.comment1 != null) return false;
- if (comment2 != null ? !comment2.equals(that.comment2) : that.comment2 != null) return false;
- if (comment3 != null ? !comment3.equals(that.comment3) : that.comment3 != null) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- int result = (int) (sku ^ (sku >>> 32));
- result = 31 * result + (spu != null ? spu.hashCode() : 0);
- result = 31 * result + (price != null ? price.hashCode() : 0);
- result = 31 * result + (image != null ? image.hashCode() : 0);
- result = 31 * result + (state != null ? state.hashCode() : 0);
- result = 31 * result + (attributeName != null ? attributeName.hashCode() : 0);
- result = 31 * result + (description != null ? description.hashCode() : 0);
- result = 31 * result + (createTime != null ? createTime.hashCode() : 0);
- result = 31 * result + (updateTime != null ? updateTime.hashCode() : 0);
- result = 31 * result + (weight != null ? weight.hashCode() : 0);
- result = 31 * result + (comment1 != null ? comment1.hashCode() : 0);
- result = 31 * result + (comment2 != null ? comment2.hashCode() : 0);
- result = 31 * result + (comment3 != null ? comment3.hashCode() : 0);
- return result;
- }
-}
diff --git a/src/main/java/com/hxtec/polaris/service/SearchService.java b/src/main/java/com/hxtec/polaris/service/SearchService.java
new file mode 100644
index 0000000..a79f8ef
--- /dev/null
+++ b/src/main/java/com/hxtec/polaris/service/SearchService.java
@@ -0,0 +1,14 @@
+package com.hxtec.polaris.service;
+
+import com.hxtec.polaris.commons.dto.PmsSearchParam;
+import com.hxtec.polaris.commons.dto.PmsSearchSkuInfo;
+
+import java.util.List;
+
+/**
+ * @author Caps
+ * @date 2019/12/5
+ */
+public interface SearchService {
+ List list(PmsSearchParam pmsSearchParam);
+}
diff --git a/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java b/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java
index 0b8d850..2bc3adf 100644
--- a/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java
+++ b/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java
@@ -68,7 +68,7 @@ public class CartItemServiceImpl implements CartItemService {
.deleteStatus(0)
.productCategoryId(spuInfo.getCategoryId())
.productId(skuInfo.getSpu())
- .productName(skuInfo.getAttributeName())
+ .productName(skuInfo.getSkuName())
.productSkuId(skuInfo.getSku())
.productPic(skuInfo.getImage())
.productSubTitle(skuInfo.getDescription())
diff --git a/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java b/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java
new file mode 100644
index 0000000..22b26e7
--- /dev/null
+++ b/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java
@@ -0,0 +1,123 @@
+/*
+package com.hxtec.polaris.service.impl;
+
+import com.hxtec.polaris.commons.dto.PmsSearchParam;
+import com.hxtec.polaris.commons.dto.PmsSearchSkuInfo;
+import com.hxtec.polaris.service.SearchService;
+import io.searchbox.client.JestClient;
+import io.searchbox.core.Search;
+import io.searchbox.core.SearchResult;
+import org.apache.commons.lang3.StringUtils;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.MatchQueryBuilder;
+import org.elasticsearch.index.query.TermQueryBuilder;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
+import org.elasticsearch.search.sort.SortOrder;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+*/
+/**
+ * @author Caps
+ * @date 2019/12/5
+ *//*
+
+public class SearchServiceImpl implements SearchService {
+
+ @Autowired
+ private JestClient jestClient;
+
+ @Override
+ public List list(PmsSearchParam pmsSearchParam) {
+ String dslStr = getSearchDsl(pmsSearchParam);
+ System.err.println(dslStr);
+ // 用api执行复杂查询
+ List pmsSearchSkuInfos = new ArrayList<>();
+ Search search = new Search.Builder(dslStr).addIndex("hxtec").addType("PmsSkuInfo").build();
+ SearchResult execute = null;
+ try {
+ execute = jestClient.execute(search);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ List> hits = execute.getHits(PmsSearchSkuInfo.class);
+ for (SearchResult.Hit hit : hits) {
+ PmsSearchSkuInfo source = hit.source;
+
+ Map> highlight = hit.highlight;
+ if(highlight!=null){
+ String skuName = highlight.get("skuName").get(0);
+ source.setAttributeName(skuName);
+ }
+ pmsSearchSkuInfos.add(source);
+ }
+
+ System.out.println(pmsSearchSkuInfos.size());
+ return pmsSearchSkuInfos;
+ }
+
+
+ private String getSearchDsl(PmsSearchParam pmsSearchParam) {
+
+ String[] skuAttrValueList = pmsSearchParam.getValueId();
+ String keyword = pmsSearchParam.getKeyword();
+ String catalog3Id = pmsSearchParam.getCatalog3Id();
+
+ // jest的dsl工具
+ SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+ // bool
+ BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
+
+ // filter
+ if(StringUtils.isNotBlank(catalog3Id)){
+ TermQueryBuilder termQueryBuilder = new TermQueryBuilder("catalog3Id",catalog3Id);
+ boolQueryBuilder.filter(termQueryBuilder);
+ }
+ if(skuAttrValueList!=null){
+ for (String pmsSkuAttrValue : skuAttrValueList) {
+ TermQueryBuilder termQueryBuilder = new TermQueryBuilder("skuAttrValueList.valueId",pmsSkuAttrValue);
+ boolQueryBuilder.filter(termQueryBuilder);
+ }
+ }
+
+ // must
+ if(StringUtils.isNotBlank(keyword)){
+ MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("skuName",keyword);
+ boolQueryBuilder.must(matchQueryBuilder);
+ }
+
+ // query
+ searchSourceBuilder.query(boolQueryBuilder);
+
+ // highlight
+ HighlightBuilder highlightBuilder = new HighlightBuilder();
+ highlightBuilder.preTags("");
+ highlightBuilder.field("skuName");
+ highlightBuilder.postTags("");
+ searchSourceBuilder.highlighter(highlightBuilder);
+ // sort
+ searchSourceBuilder.sort("id", SortOrder.DESC);
+ // from
+ searchSourceBuilder.from(0);
+ // size
+ searchSourceBuilder.size(20);
+
+
+ // aggs
+ TermsAggregationBuilder groupby_attr = AggregationBuilders.terms("groupby_attr").field("skuAttrValueList.valueId");
+
+ searchSourceBuilder.aggregation(groupby_attr);
+
+
+ return searchSourceBuilder.toString();
+
+ }
+}
+*/
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 40d88b4..255ab02 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -18,6 +18,10 @@ spring:
connection-timeout: 30000
connection-test-query: SELECT 1
+ elasticsearch:
+ jest:
+ uris: http://47.100.220.7:9200
+ read-timeout: 10000
aop:
proxy-target-class: true
@@ -65,5 +69,9 @@ security:
resource:
token-info-uri: http://127.0.0.1:9101/oauth/check_token
+management:
+ health:
+ elasticsearch:
+ enabled: false
diff --git a/src/main/resources/mapper/ShopProductVariantMapper.xml b/src/main/resources/mapper/ShopProductVariantMapper.xml
index f4f1864..c791598 100644
--- a/src/main/resources/mapper/ShopProductVariantMapper.xml
+++ b/src/main/resources/mapper/ShopProductVariantMapper.xml
@@ -2,15 +2,16 @@
-
+
+
+
-
@@ -19,9 +20,10 @@
-
-
- sp.`name`,sp.detail,sv.sku,sv.media_container_code as containerCode,sv.price,sv.image,sv.state,sv.attribute_name as attributeName,sv.description, sv.comment1,sv.comment2,sv.comment3
+
+
+ sku, spu, sku_name, category_id, price, discount_price, discount, image, `state`,
+ description, create_time, update_time, weight, comment1, comment2, comment3
@@ -41,10 +43,10 @@
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java b/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java
new file mode 100644
index 0000000..99a7feb
--- /dev/null
+++ b/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java
@@ -0,0 +1,124 @@
+/*
+package com.hxtec.polaris.com.hxtec.polaris.service;
+
+import com.hxtec.polaris.commons.dto.PmsSearchSkuInfo;
+import com.hxtec.polaris.entity.ShopProductVariant;
+import com.hxtec.polaris.mapper.ShopProductVariantMapper;
+import io.searchbox.client.JestClient;
+import io.searchbox.core.Index;
+import io.searchbox.core.Search;
+import io.searchbox.core.SearchResult;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.MatchQueryBuilder;
+import org.elasticsearch.index.query.TermQueryBuilder;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+*/
+/**
+ * @author Caps
+ * @date 2019/12/5
+ *//*
+
+@SpringBootTest
+*/
+/*
+@RunWith(SpringRunner.class)
+*//*
+
+public class elasticSearchTest {
+ @Autowired
+ private JestClient jestClient;
+
+ @Resource
+ private ShopProductVariantMapper shopProductVariantMapper;
+
+ @Test
+ public void contextLoads() throws IOException {
+ put();
+ }
+
+ public void put() throws IOException {
+
+ // 查询mysql数据
+ List pmsSkuInfoList = new ArrayList<>();
+
+ pmsSkuInfoList = shopProductVariantMapper.selectAll();
+
+ // 转化为es的数据结构
+ List pmsSearchSkuInfos = new ArrayList<>();
+
+ for (ShopProductVariant pmsSkuInfo : pmsSkuInfoList) {
+ PmsSearchSkuInfo pmsSearchSkuInfo = new PmsSearchSkuInfo();
+
+ BeanUtils.copyProperties(pmsSkuInfo,pmsSearchSkuInfo);
+
+ pmsSearchSkuInfo.setSku(pmsSkuInfo.getSku());
+
+ pmsSearchSkuInfos.add(pmsSearchSkuInfo);
+
+ }
+
+ // 导入es
+ for (PmsSearchSkuInfo pmsSearchSkuInfo : pmsSearchSkuInfos) {
+ Index put = new Index.Builder(pmsSearchSkuInfo).index("hxtec").type("PmsSkuInfo").id(pmsSearchSkuInfo.getSku()+"").build();
+ jestClient.execute(put);
+ }
+
+ }
+
+
+
+ @Test
+ public void get() throws IOException {
+
+ // jest的dsl工具
+ SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+ // bool
+ BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
+ // filter
+ TermQueryBuilder termQueryBuilder = new TermQueryBuilder("skuAttrValueList.valueId","1");
+ boolQueryBuilder.filter(termQueryBuilder);
+ // must
+ MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("attributeName","女");
+ boolQueryBuilder.must(matchQueryBuilder);
+ // query
+ searchSourceBuilder.query(boolQueryBuilder);
+ // from
+ searchSourceBuilder.from(0);
+ // size
+ searchSourceBuilder.size(20);
+ // highlight
+ searchSourceBuilder.highlighter(null);
+
+ String dslStr = searchSourceBuilder.toString();
+
+ System.err.println(dslStr);
+
+
+ // 用api执行复杂查询
+ List pmsSearchSkuInfos = new ArrayList<>();
+
+ Search search = new Search.Builder(dslStr).addIndex("hxtec").addType("PmsSkuInfo").build();
+
+ SearchResult execute = jestClient.execute(search);
+
+ List> hits = execute.getHits(PmsSearchSkuInfo.class);
+
+ for (SearchResult.Hit hit : hits) {
+ PmsSearchSkuInfo source = hit.source;
+
+ pmsSearchSkuInfos.add(source);
+ }
+
+ System.out.println(pmsSearchSkuInfos.size());
+ }
+}
+*/
--
Gitee
From d30b8940d8943eec895699509200daf8a4e4a6d8 Mon Sep 17 00:00:00 2001
From: Caps <279205343@qq.com>
Date: Tue, 10 Dec 2019 20:58:41 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../polaris/controller/CartController.java | 11 ++++--
.../polaris/service/CartItemService.java | 2 +
.../service/impl/CartItemServiceImpl.java | 39 ++++++++++++++++++-
.../service/impl/ProductServiceImpl.java | 12 ------
.../service/impl/SearchServiceImpl.java | 12 ++----
.../polaris/service/elasticSearchTest.java | 14 ++-----
6 files changed, 54 insertions(+), 36 deletions(-)
diff --git a/src/main/java/com/hxtec/polaris/controller/CartController.java b/src/main/java/com/hxtec/polaris/controller/CartController.java
index ea865d7..d8ff623 100644
--- a/src/main/java/com/hxtec/polaris/controller/CartController.java
+++ b/src/main/java/com/hxtec/polaris/controller/CartController.java
@@ -34,10 +34,6 @@ public class CartController {
@Autowired
private CartItemService cartService;
- @Autowired
- private StockService stockService;
-
-
@ApiOperation(value = "根据sku获取商品详添加购物车")
@PostMapping("addToCart/{sku}/{quantity}")
@ApiImplicitParams({
@@ -56,5 +52,12 @@ public class CartController {
List cartItemList= cartService.getCartList();
return Result.ok(cartItemList);
}
+
+ @ApiOperation(value = "获取购物车列表")
+ @PostMapping("checkCart")
+ public Result> checkCart(String cartIdData){
+ Map map = cartService.checkCart(cartIdData);
+ return Result.ok(map);
+ }
}
diff --git a/src/main/java/com/hxtec/polaris/service/CartItemService.java b/src/main/java/com/hxtec/polaris/service/CartItemService.java
index a17b365..bcdfa8b 100644
--- a/src/main/java/com/hxtec/polaris/service/CartItemService.java
+++ b/src/main/java/com/hxtec/polaris/service/CartItemService.java
@@ -23,5 +23,7 @@ public interface CartItemService {
List getCartList();
void delCart();
+
+ Map checkCart(String ids);
}
diff --git a/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java b/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java
index 2bc3adf..9d9f576 100644
--- a/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java
+++ b/src/main/java/com/hxtec/polaris/service/impl/CartItemServiceImpl.java
@@ -128,11 +128,48 @@ public class CartItemServiceImpl implements CartItemService {
*/
@Override
public void delCart() {
+ String phone="12345678900";
+ ShopUser userInfo=userService.getUserInfoByPhone(phone);
Example example=new Example(ShopCartItem.class);
- example.createCriteria().andEqualTo("isChecked","Y");
+ example.createCriteria().andEqualTo("isChecked","Y")
+ .andEqualTo("memberId",userInfo.getId());
cartItemMapper.deleteByExample(example);
}
+ @Override
+ public Map checkCart(String ids) {
+ String phone="12345678900";
+ Map map=new HashMap<>();
+ //未登录
+ if(StringUtils.equals("anonymousUser",phone)){
+ map.put(CommonContants.STATUS,"error");
+ map.put(CommonContants.MESSAGE,"userError");
+ return map;
+ }
+ String[] cartIds=ids.split(",");
+ List idList = Arrays.asList(cartIds);
+ idList.forEach(id->{
+ Example example=new Example(ShopCartItem.class);
+ example.createCriteria().andEqualTo("memberId","6")
+ .andEqualTo("id",id);
+ List shopCartItemList = cartItemMapper.selectByExample(example);
+ if (null !=shopCartItemList && 0!=shopCartItemList.size()){
+ shopCartItemList.forEach(cartItem -> {
+ cartItem.setIsChecked("Y");
+ Integer i = cartItemMapper.updateByPrimaryKeySelective(cartItem);
+ if(! i.equals(1)){
+ map.put(CommonContants.STATUS,"updateError");
+ }
+ });
+ }
+ });
+ if(map.size()>0){
+ return map;
+ }
+ map.put(CommonContants.STATUS,"success");
+ return map;
+ }
+
private String getUser(){
return SecurityContextHolder.getContext().getAuthentication().getName();
diff --git a/src/main/java/com/hxtec/polaris/service/impl/ProductServiceImpl.java b/src/main/java/com/hxtec/polaris/service/impl/ProductServiceImpl.java
index d96e5fb..5fee525 100644
--- a/src/main/java/com/hxtec/polaris/service/impl/ProductServiceImpl.java
+++ b/src/main/java/com/hxtec/polaris/service/impl/ProductServiceImpl.java
@@ -50,18 +50,6 @@ public class ProductServiceImpl implements ProductService {
* @param sku
* @return
*/
- /* @Override
- public ShopProductVariant getSkuProductBySkuFromDb(Integer sku) {
- //商品
- ShopProductVariant shopProductVariant = skuMapper.selectByPrimaryKey(sku);
- Example example=new Example(ShopProductVariantImage.class);
- example.createCriteria().andEqualTo("skuId",sku);
- //图片列表
- List shopProductVariantImages = imageMapper.selectByExample(example);
- shopProductVariant.setSkuImageList(shopProductVariantImages);
- return shopProductVariant;
- }*/
-
@Override
public ShopProductVariant getSkuProductBySku(Integer sku) {
//商品
diff --git a/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java b/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java
index 22b26e7..c6e89ec 100644
--- a/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java
+++ b/src/main/java/com/hxtec/polaris/service/impl/SearchServiceImpl.java
@@ -1,4 +1,3 @@
-/*
package com.hxtec.polaris.service.impl;
import com.hxtec.polaris.commons.dto.PmsSearchParam;
@@ -23,11 +22,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-*/
-/**
- * @author Caps
- * @date 2019/12/5
- *//*
+
public class SearchServiceImpl implements SearchService {
@@ -54,7 +49,7 @@ public class SearchServiceImpl implements SearchService {
Map> highlight = hit.highlight;
if(highlight!=null){
String skuName = highlight.get("skuName").get(0);
- source.setAttributeName(skuName);
+ source.setSkuName(skuName);
}
pmsSearchSkuInfos.add(source);
}
@@ -68,7 +63,7 @@ public class SearchServiceImpl implements SearchService {
String[] skuAttrValueList = pmsSearchParam.getValueId();
String keyword = pmsSearchParam.getKeyword();
- String catalog3Id = pmsSearchParam.getCatalog3Id();
+ String catalog3Id = pmsSearchParam.getCatalogId();
// jest的dsl工具
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
@@ -120,4 +115,3 @@ public class SearchServiceImpl implements SearchService {
}
}
-*/
diff --git a/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java b/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java
index 99a7feb..2d988c3 100644
--- a/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java
+++ b/src/test/java/com/hxtec/polaris/com/hxtec/polaris/service/elasticSearchTest.java
@@ -1,4 +1,3 @@
-/*
package com.hxtec.polaris.com.hxtec.polaris.service;
import com.hxtec.polaris.commons.dto.PmsSearchSkuInfo;
@@ -13,25 +12,21 @@ import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-*/
-/**
- * @author Caps
- * @date 2019/12/5
- *//*
@SpringBootTest
-*/
-/*
@RunWith(SpringRunner.class)
-*//*
+
public class elasticSearchTest {
@Autowired
@@ -121,4 +116,3 @@ public class elasticSearchTest {
System.out.println(pmsSearchSkuInfos.size());
}
}
-*/
--
Gitee