Browse Source

增加Goods、Products规格书排序

wangyc 6 years ago
parent
commit
c050a2fa8e

+ 3 - 0
mall-search/src/main/java/com/uas/search/constant/SearchConstants.java

@@ -181,6 +181,7 @@ public class SearchConstants {
 	// 批次索引字段的key
 	public static final String GOODS_GO_ID_FIELD = "go_id";
 	public static final String GOODS_GO_RESERVE_FIELD = "go_reserve";
+	public static final String GOODS_GO_ATTACH_FIELD = "cmp_attach";
 	public static final String GOODS_GO_STATUS_FIELD = "go_status";
 	public static final String GOODS_GO_MINPRICERMB_FIELD = "go_minpricermb";
 	public static final String GOODS_GO_MINPRICEUSD_FIELD = "go_minpriceusd";
@@ -324,6 +325,8 @@ public class SearchConstants {
 	public static final String PRODUCT_PRIVATE_ENUU_FIELD = "pr_enuu";
 	// 1标准  0非标准
 	public static final String PRODUCT_PRIVATE_STANDARD_FIELD = "pr_standard";
+	// 1标准  0非标准
+	public static final String PRODUCT_PRIVATE_ATTACH_FIELD = "pr_attach";
 	// 1可用  0 不可用
 	public static final String PRODUCT_PRIVATE_B2CENABLED_FIELD = "pr_b2cenabled";
 	// 1可卖  0 不可

+ 16 - 0
mall-search/src/main/java/com/uas/search/model/TradeGoods.java

@@ -43,6 +43,12 @@ public class TradeGoods implements RowMapper, Serializable {
 	@Column(name = "go_status")
 	private Long status;
 
+	/**
+	 * 器件的附件URL
+	 */
+	@Column(name = "cmp_attach")
+	private String attach;
+
 	/**
 	 * 批次的人民币价格
 	 */
@@ -121,6 +127,14 @@ public class TradeGoods implements RowMapper, Serializable {
 		this.status = status;
 	}
 
+	public String getAttach() {
+		return attach;
+	}
+
+	public void setAttach(String attach) {
+		this.attach = attach;
+	}
+
 	public Double getMinPriceRMB() {
 		return minPriceRMB;
 	}
@@ -199,6 +213,7 @@ public class TradeGoods implements RowMapper, Serializable {
                 "id=" + id +
                 ", reserve=" + reserve +
                 ", status=" + status +
+				", attach=" + attach +
                 ", minPriceRMB=" + minPriceRMB +
                 ", minPriceUSD=" + minPriceUSD +
                 ", crName='" + crName + '\'' +
@@ -222,6 +237,7 @@ public class TradeGoods implements RowMapper, Serializable {
 		goods.setMinPriceUSD(rs.getDouble("go_minpriceusd"));
 		goods.setReserve(rs.getDouble("go_reserve"));
 		goods.setStatus(rs.getLong("go_status"));
+		goods.setAttach(rs.getString("cmp_attach"));
 		goods.setStoreId(rs.getString("go_storeid"));
 		goods.setUpdateDate(rs.getTimestamp("go_update_date"));
 		goods.setProductId(rs.getLong("go_productid"));

+ 16 - 0
mall-search/src/main/java/com/uas/search/model/V_Products.java

@@ -97,6 +97,12 @@ public class V_Products implements RowMapper, Serializable {
     @Column(name = "pr_standard")
     private Short standard;
 
+    /**
+     * 规格书
+     */
+    @Column(name = "pr_attach")
+    private String attach;
+
     /**
      * 是否可用(0不可用,非0可用)
      */
@@ -232,6 +238,14 @@ public class V_Products implements RowMapper, Serializable {
         this.standard = standard;
     }
 
+    public String getAttach() {
+        return attach;
+    }
+
+    public void setAttach(String attach) {
+        this.attach = attach;
+    }
+
     public Short getB2cEnabled() {
         return b2cEnabled;
     }
@@ -304,6 +318,7 @@ public class V_Products implements RowMapper, Serializable {
                 ", pCmpCode='" + pCmpCode + '\'' +
                 ", pBrandEn='" + pBrandEn + '\'' +
                 ", pBrandCn='" + pBrandCn + '\'' +
+                ", attach='" + attach + '\'' +
                 ", standard=" + standard + '\'' +
                 ", b2cEnabled=" + b2cEnabled + '\'' +
                 ", isSale=" + isSale +  '\'' +
@@ -327,6 +342,7 @@ public class V_Products implements RowMapper, Serializable {
         products.setpBrandEn(rs.getString("pr_pbranden"));
         products.setpBrandCn(rs.getString("pr_pbrand"));
         products.setpCmpCode(rs.getString("pr_pcmpcode"));
+        products.setAttach(rs.getString("pr_attach"));
         products.setStandard(rs.getShort("pr_standard"));
         products.setTitle(rs.getString("pr_title"));
         products.setIsSale(rs.getShort("pr_issale"));

+ 11 - 5
mall-search/src/main/java/com/uas/search/service/impl/SearchServiceImpl.java

@@ -554,19 +554,24 @@ public class SearchServiceImpl implements SearchService {
 		if (Boolean.valueOf(duplicate)) {
             DuplicateFilter duplicateFilter = new DuplicateFilter(SearchConstants.PRODUCT_PRIVATE_PCMPCODE_FIELD);
             logger.info(booleanQuery.toString());
-            return getDocuments(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME, booleanQuery, new Sort(sortProduct(keyword)), page, size, duplicateFilter);
+            return getDocuments(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME, booleanQuery, new Sort(sortProduct()), page, size, duplicateFilter);
         } else {
             logger.info(booleanQuery.toString());
-            return getDocuments(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME, booleanQuery, new Sort(sortProduct(keyword)), page, size);
+            return getDocuments(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME, booleanQuery, new Sort(sortProduct()), page, size);
         }
 	}
 
 	/**
 	 * @return 物料排序规则
 	 */
-	private SortField sortProduct(String keyword) {
+	private SortField[] sortProduct() {
+        List<SortField> sortFieldList = new ArrayList<>();
 		// id
-		return new SortField(SearchConstants.PRODUCT_PRIVATE_ID_FIELD, Type.LONG, true);
+        sortFieldList.add(new SortField(SearchConstants.PRODUCT_PRIVATE_ID_FIELD, Type.LONG, true));
+        sortFieldList.add(new SortField(SearchConstants.PRODUCT_PRIVATE_ATTACH_FIELD, Type.DOUBLE, true));
+        SortField[] sortFields = new SortField[sortFieldList.size()];
+        sortFieldList.toArray(sortFields);
+		return sortFields;
 	}
 
 	@Override
@@ -1858,7 +1863,7 @@ public class SearchServiceImpl implements SearchService {
 
 		BooleanQuery booleanQuery = queryProducts(keyword, keywordFields, tokenized);
 		logger.info(booleanQuery.toString());
-		SPage<Document> documents =  getDocuments(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME, booleanQuery, new Sort(sortProduct(keyword)), pageParams.getPage(), pageParams.getSize());
+		SPage<Document> documents =  getDocuments(SearchConstants.PRODUCTS_PRIVATE_TABLE_NAME, booleanQuery, new Sort(sortProduct()), pageParams.getPage(), pageParams.getSize());
 
 		SPage<Long> sPage = new SPage<>(documents.getTotalPage(), documents.getTotalElement(), documents.getPage(), documents.getSize(), documents.isFirst(), documents.isLast());
 		List<Long> productIds = new ArrayList<>();
@@ -2062,6 +2067,7 @@ public class SearchServiceImpl implements SearchService {
                 new SortField(SearchConstants.GOODS_PR_KIND_FIELD, new StringFieldComparatorSource(keyword, false)),
                 new SortField(SearchConstants.GOODS_CMP_CODE_FIELD, new StringFieldComparatorSource(keyword, false)),
 //                new SortField(SearchConstants.GOODS_KI_NAME_CN_UNTOKENIZED_FIELD, new StringFieldComparatorSource(keyword, false)),
+                new SortField(SearchConstants.GOODS_GO_ATTACH_FIELD, Type.DOUBLE, true),
                 sortField(SearchConstants.GOODS_GO_UPDATE_DATE_FIELD, Type.LONG, true, Long.MIN_VALUE)
         ));
         SortField[] sortFields = new SortField[sortFieldList.size()];

+ 6 - 0
mall-search/src/main/java/com/uas/search/util/DocumentToObjectUtils.java

@@ -73,6 +73,9 @@ public class DocumentToObjectUtils {
         if (!StringUtils.isEmpty(document.get(SearchConstants.PRODUCT_PRIVATE_KIND_FIELD))) {
             products.setKind(document.get(SearchConstants.PRODUCT_PRIVATE_KIND_FIELD));
         }
+        if (!StringUtils.isEmpty(document.get(SearchConstants.PRODUCT_PRIVATE_ATTACH_FIELD))) {
+            products.setAttach(String.valueOf(document.get(SearchConstants.PRODUCT_PRIVATE_ATTACH_FIELD)));
+        }
         products.setEnUU(Long.valueOf(document.get(SearchConstants.PRODUCT_PRIVATE_ENUU_FIELD)));
         // 标准型号和英文标准品牌为空时不建立索引
         products.setpBrandEn(document.get(SearchConstants.PRODUCT_PRIVATE_PBRANDEN_FIELD));
@@ -301,6 +304,9 @@ public class DocumentToObjectUtils {
             if (!StringUtils.isEmpty(document.get(SearchConstants.GOODS_GO_STATUS_FIELD))) {
                 tradeGoods.setStatus(Long.valueOf(document.get(SearchConstants.GOODS_GO_STATUS_FIELD)));
             }
+            if (!StringUtils.isEmpty(document.get(SearchConstants.GOODS_GO_ATTACH_FIELD))) {
+                tradeGoods.setAttach(String.valueOf(document.get(SearchConstants.GOODS_GO_ATTACH_FIELD)));
+            }
             if (!StringUtils.isEmpty(document.get(SearchConstants.GOODS_GO_MINPRICERMB_FIELD))) {
                 tradeGoods.setMinPriceRMB(Double.valueOf(document.get(SearchConstants.GOODS_GO_MINPRICERMB_FIELD)));
             }

+ 13 - 0
mall-search/src/main/java/com/uas/search/util/ObjectToDocumentUtils.java

@@ -152,6 +152,14 @@ public class ObjectToDocumentUtils {
         if (!StringUtils.isEmpty(product.getpCmpCode())) {
 			document.add(new StringField(SearchConstants.PRODUCT_PRIVATE_PCMPCODE_FIELD, product.getpCmpCode().toLowerCase(), Store.YES));
 		}
+
+		// 规格书
+		if (!StringUtils.isEmpty(product.getAttach())) {
+			document.add(new DoubleField(SearchConstants.PRODUCT_PRIVATE_ATTACH_FIELD, 1, Store.YES));
+		} else {
+			document.add(new DoubleField(SearchConstants.PRODUCT_PRIVATE_ATTACH_FIELD, 0, Store.YES));
+		}
+
 		if (product.getStandard() != null) {
 			document.add(new StringField(SearchConstants.PRODUCT_PRIVATE_STANDARD_FIELD, String.valueOf(product.getStandard()), Store.YES));
 		} else {
@@ -455,6 +463,11 @@ public class ObjectToDocumentUtils {
 			if (tradeGoods.getStatus() != null) {
 				document.add(new StringField(SearchConstants.GOODS_GO_STATUS_FIELD, String.valueOf(tradeGoods.getStatus()), Store.YES));
 			}
+			if (!StringUtils.isEmpty(tradeGoods.getAttach())) {
+				document.add(new DoubleField(SearchConstants.GOODS_GO_ATTACH_FIELD, 1, Store.YES));
+			} else {
+				document.add(new DoubleField(SearchConstants.GOODS_GO_ATTACH_FIELD, 0, Store.YES));
+			}
 			if (tradeGoods.getMinPriceRMB() != null) {
 				document.add(
 						new DoubleDocValuesField(SearchConstants.GOODS_GO_MINPRICERMB_FIELD, tradeGoods.getMinPriceRMB()));