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