Просмотр исходного кода

精简搜索逻辑,接口数据接口调整

wangdy 8 лет назад
Родитель
Сommit
cfaccdb91c

+ 3 - 4
src/main/java/com/uas/platform/b2c/common/search/rpc/service/Impl/SearchServiceImpl.java

@@ -1,16 +1,15 @@
 package com.uas.platform.b2c.common.search.rpc.service.Impl;
 package com.uas.platform.b2c.common.search.rpc.service.Impl;
 
 
 
 
-import com.alibaba.fastjson.JSONArray;
 import com.uas.platform.b2c.common.search.constant.SearchUrl;
 import com.uas.platform.b2c.common.search.constant.SearchUrl;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.config.SysConf;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
 import com.uas.search.exception.SearchException;
 import com.uas.search.exception.SearchException;
-import com.uas.search.model.CollectField;
-import com.uas.search.model.PageParams;
-import com.uas.search.model.SPage;
+import com.uas.platform.b2c.common.search.util.CollectField;
+import com.uas.platform.b2c.common.search.util.PageParams;
+import com.uas.platform.b2c.common.search.util.SPage;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.commons.collections.map.HashedMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;

+ 3 - 3
src/main/java/com/uas/platform/b2c/common/search/rpc/service/SearchService.java

@@ -6,9 +6,9 @@ package com.uas.platform.b2c.common.search.rpc.service;
  * 通过http方式调用远端的搜索接口
  * 通过http方式调用远端的搜索接口
  */
  */
 import com.uas.search.exception.SearchException;
 import com.uas.search.exception.SearchException;
-import com.uas.search.model.CollectField;
-import com.uas.search.model.PageParams;
-import com.uas.search.model.SPage;
+import com.uas.platform.b2c.common.search.util.CollectField;
+import com.uas.platform.b2c.common.search.util.PageParams;
+import com.uas.platform.b2c.common.search.util.SPage;
 
 
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;

+ 11 - 11
src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java

@@ -19,10 +19,10 @@ import com.uas.platform.core.exception.SystemException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.model.PageParams;
 import com.uas.search.exception.SearchException;
 import com.uas.search.exception.SearchException;
-import com.uas.search.model.CollectField;
-import com.uas.search.model.PageParams.FilterField;
-import com.uas.search.model.SPage;
-import com.uas.search.model.Sort;
+import com.uas.platform.b2c.common.search.util.CollectField;
+import com.uas.platform.b2c.common.search.util.PageParams.FilterField;
+import com.uas.platform.b2c.common.search.util.SPage;
+import com.uas.platform.b2c.common.search.util.Sort;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -303,7 +303,7 @@ public class SearcherServiceImpl implements SearcherService {
 		List<Map<String, Object>> collectResult = new ArrayList<>();
 		List<Map<String, Object>> collectResult = new ArrayList<>();
 		JSONObject jsonObject = FastjsonUtils.parseObject(paramJSON);
 		JSONObject jsonObject = FastjsonUtils.parseObject(paramJSON);
 		Set<Entry<String,Object>> paramEntry = jsonObject.entrySet();
 		Set<Entry<String,Object>> paramEntry = jsonObject.entrySet();
-		Map<com.uas.search.model.PageParams.FilterField,Object> param= new LinkedHashMap<>();
+		Map<com.uas.platform.b2c.common.search.util.PageParams.FilterField,Object> param= new LinkedHashMap<>();
 		for (Entry<String, Object> entry : paramEntry) {
 		for (Entry<String, Object> entry : paramEntry) {
 			param.put(FilterField.valueOf(entry.getKey().toUpperCase()), entry.getValue());
 			param.put(FilterField.valueOf(entry.getKey().toUpperCase()), entry.getValue());
 		}
 		}
@@ -355,9 +355,9 @@ public class SearcherServiceImpl implements SearcherService {
 	 * @param params
 	 * @param params
 	 * @return
 	 * @return
 	 */
 	 */
-	private com.uas.search.model.PageParams convertPageParams(PageParams params) {
+	private com.uas.platform.b2c.common.search.util.PageParams convertPageParams(PageParams params) {
 		PageInfo pageinfo = new PageInfo(params);
 		PageInfo pageinfo = new PageInfo(params);
-		com.uas.search.model.PageParams pageParams = new com.uas.search.model.PageParams();
+		com.uas.platform.b2c.common.search.util.PageParams pageParams = new com.uas.platform.b2c.common.search.util.PageParams();
 		pageParams.setPage(params.getPage());
 		pageParams.setPage(params.getPage());
 		pageParams.setSize(params.getCount());
 		pageParams.setSize(params.getCount());
 		if (!StringUtils.isEmpty(params.getFilter())) {
 		if (!StringUtils.isEmpty(params.getFilter())) {
@@ -370,17 +370,17 @@ public class SearcherServiceImpl implements SearcherService {
 		if (!StringUtils.isEmpty(params.getSorting())){
 		if (!StringUtils.isEmpty(params.getSorting())){
 			//com.alibaba.fastjson.JSONObject sort = FastjsonUtils.parseObject(params.getSorting());
 			//com.alibaba.fastjson.JSONObject sort = FastjsonUtils.parseObject(params.getSorting());
 			Iterator<org.springframework.data.domain.Sort.Order> iterator = pageinfo.getSort().iterator();
 			Iterator<org.springframework.data.domain.Sort.Order> iterator = pageinfo.getSort().iterator();
-			List<Sort> psort = new ArrayList<>();
+			com.uas.platform.b2c.common.search.util.Sort sort = new com.uas.platform.b2c.common.search.util.Sort();
+			Sort newSort = null;
 			while (iterator.hasNext()){
 			while (iterator.hasNext()){
 				org.springframework.data.domain.Sort.Order order = iterator.next();
 				org.springframework.data.domain.Sort.Order order = iterator.next();
 				boolean reverse= false;
 				boolean reverse= false;
 				if ( "DESC".equals( order.getDirection().toString())){
 				if ( "DESC".equals( order.getDirection().toString())){
 					reverse = true;
 					reverse = true;
 				}
 				}
-				Sort b= new Sort( Sort.Field.valueOf(order.getProperty()),reverse);
-				psort.add(b);
+				newSort= new Sort( Sort.Field.valueOf(order.getProperty()),reverse);
 			}
 			}
-			pageParams.setSort(psort);
+			pageParams.setSort(newSort);
 		}
 		}
 		return pageParams;
 		return pageParams;
 	}
 	}

+ 32 - 0
src/main/java/com/uas/platform/b2c/common/search/util/CollectField.java

@@ -0,0 +1,32 @@
+package com.uas.platform.b2c.common.search.util;
+
+
+/**
+ * 统计信息时需要的字段
+ *
+ * @author sunyj
+ * @since 2017年7月12日 上午9:03:29
+ */
+public enum CollectField {
+
+    // 批次统计
+    /**
+     * 类目
+     */
+    GOODS_KIND,
+
+    /**
+     * 品牌
+     */
+    GOODS_BRAND,
+
+    /**
+     * 货源
+     */
+    GOODS_STORE_TYPE,
+
+    /**
+     * 货币
+     */
+    GOODS_CRNAME;
+}

+ 235 - 0
src/main/java/com/uas/platform/b2c/common/search/util/PageParams.java

@@ -0,0 +1,235 @@
+package com.uas.platform.b2c.common.search.util;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 分页参数
+ *
+ * @author suntg
+ * @since 2016年8月3日下午9:10:47
+ */
+public class PageParams implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 页码
+     */
+    private int page;
+
+    /**
+     * 页大小
+     */
+    private int size;
+
+    /**
+     * 过滤
+     */
+    private Map<FilterField, Object> filters;
+
+    /**
+     * 排序
+     */
+    private Sort sort;
+
+    public PageParams() {
+    }
+
+    /**
+     * @param page
+     *            页码
+     * @param size
+     *            页大小
+     */
+    public PageParams(int page, int size) {
+        this.page = page;
+        this.size = size;
+    }
+
+    /**
+     * @return 页码
+     */
+    public int getPage() {
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    /**
+     * @return 页大小
+     */
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+
+    /**
+     * @return 过滤
+     */
+    public Map<FilterField, Object> getFilters() {
+        return filters;
+    }
+
+    public void setFilters(Map<FilterField, Object> filters) {
+        this.filters = filters;
+    }
+
+    public void filter(FilterField key, Object value) {
+        if (this.filters == null) {
+            this.filters = new HashMap<FilterField, Object>();
+        }
+        this.filters.put(key, value);
+    }
+
+    public void removeFilter(FilterField key) {
+        if (this.filters != null) {
+            this.filters.remove(key);
+        }
+    }
+
+    /**
+     * @return 排序
+     */
+    public Sort getSort() {
+        return sort;
+    }
+
+    public void setSort(Sort sort) {
+        this.sort = sort;
+    }
+
+    @Override
+    public String toString() {
+        return "PageParams [page=" + page + ", size=" + size + ", filters=" + filters + ", sort=" + sort + "]";
+    }
+
+    /**
+     * 过滤的字段
+     *
+     * @author sunyj
+     * @since 2017年7月8日 下午5:00:55
+     */
+    public enum FilterField {
+
+        // 器件搜索
+        /**
+         * 类目id
+         */
+        COMPONENT_KINDID,
+
+        /**
+         * 品牌id
+         */
+        COMPONENT_BRANDID,
+
+        /**
+         * 属性信息
+         */
+        COMPONENT_PROPERTIES,
+
+        /**
+         * 有库存
+         */
+        COMPONENT_HAS_RESERVE,
+
+        /**
+         * 有样品
+         */
+        COMPONENT_HAS_SAMPLE,
+
+        /**
+         * 有现货
+         */
+        COMPONENT_HAS_ORIGINAL,
+
+        /**
+         * 有呆滞库存
+         */
+        COMPONENT_HAS_INACTION_STOCK,
+
+        // 批次搜索
+        /**
+         * 类目id
+         */
+        GOODS_KINDID,
+
+        /**
+         * 品牌id
+         */
+        GOODS_BRANDID,
+
+        /**
+         * 货源
+         */
+        GOODS_STORE_TYPE,
+
+        /**
+         * 货币
+         */
+        GOODS_CRNAME,
+
+        /**
+         * 状态
+         */
+        GOODS_STATUS,
+
+        /**
+         * 价格区间过滤:人民币最低价格
+         */
+        GOODS_MINPRICERMB,
+
+        /**
+         * 价格区间过滤:人民币最高价格
+         */
+        GOODS_MAXPRICERMB,
+
+        /**
+         * 价格区间过滤:美元最低价格
+         */
+        GOODS_MINPRICEUSD,
+
+        /**
+         * 价格区间过滤:美元最高价格
+         */
+        GOODS_MAXPRICEUSD,
+
+        // 以下字段用于单据搜索
+
+        /**
+         * 订单状态
+         */
+        ORDER_STATUS,
+
+        /**
+         * 买方个人uu号
+         */
+        ORDER_BUYER_UU,
+
+        /**
+         * 买方企业UU号
+         */
+        ORDER_BUYER_EN_UU,
+
+        /**
+         * 卖方企业UU号
+         */
+        ORDER_SELLER_EN_UU,
+
+        /**
+         * 单据搜索时,若限定时间范围,可以键值对的形式传递参数,该键代表最小(远)时间
+         */
+        ORDER_MIN_TIME,
+
+        /**
+         * 单据搜索时,若限定时间范围,可以键值对的形式传递参数,该键代表最大(近)时间
+         */
+        ORDER_MAX_TIME;
+    }
+}

+ 100 - 0
src/main/java/com/uas/platform/b2c/common/search/util/SPage.java

@@ -0,0 +1,100 @@
+package com.uas.platform.b2c.common.search.util;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class SPage<T> implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private int totalPage;
+
+    private long totalElement;
+
+    private int page;
+
+    private int size;
+
+    private boolean first;
+
+    private boolean last;
+
+    private List<T> content;
+
+    public SPage() {
+        super();
+    }
+
+    public SPage(int totalPage, long totalElement, int page, int size, boolean first, boolean last) {
+        super();
+        this.totalPage = totalPage;
+        this.totalElement = totalElement;
+        this.page = page;
+        this.size = size;
+        this.first = first;
+        this.last = last;
+    }
+
+    public int getTotalPage() {
+        return totalPage;
+    }
+
+    public void setTotalPage(int totalPage) {
+        this.totalPage = totalPage;
+    }
+
+    public long getTotalElement() {
+        return totalElement;
+    }
+
+    public void setTotalElement(long totalElement) {
+        this.totalElement = totalElement;
+    }
+
+    public int getPage() {
+        return page;
+    }
+
+    public void setPage(int page) {
+        this.page = page;
+    }
+
+    public int getSize() {
+        return size;
+    }
+
+    public void setSize(int size) {
+        this.size = size;
+    }
+
+    public boolean isFirst() {
+        return first;
+    }
+
+    public void setFirst(boolean first) {
+        this.first = first;
+    }
+
+    public boolean isLast() {
+        return last;
+    }
+
+    public void setLast(boolean last) {
+        this.last = last;
+    }
+
+    public List<T> getContent() {
+        return content;
+    }
+
+    public void setContent(List<T> content) {
+        this.content = content;
+    }
+
+    @Override
+    public String toString() {
+        return "SPage [totalPage=" + totalPage + ", totalElement=" + totalElement + ", page=" + page + ", size=" + size
+                + ", first=" + first + ", last=" + last + ", content=" + content + "]";
+    }
+
+}

+ 96 - 0
src/main/java/com/uas/platform/b2c/common/search/util/Sort.java

@@ -0,0 +1,96 @@
+package com.uas.platform.b2c.common.search.util;
+
+import java.io.Serializable;
+
+/**
+ * 排序
+ *
+ * @author sunyj
+ * @since 2016年11月23日 下午1:47:44
+ */
+public class Sort implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 排序的字段
+     */
+    private Field field;
+
+    /**
+     * 排序默认为升序,若为true,则进行反转
+     */
+    private boolean reverse = false;
+
+    /**
+     * @param field
+     *            排序的字段
+     * @param reverse
+     *            如果为true,则反转默认的升序
+     */
+    public Sort(Field field, boolean reverse) {
+        this.field = field;
+        this.reverse = reverse;
+    }
+
+    /**
+     * @param field
+     *            排序的字段
+     */
+    public Sort(Field field) {
+        this(field, false);
+    }
+
+    public Sort() {
+
+    }
+
+    /**
+     * @return 排序的字段
+     */
+    public Field getField() {
+        return field;
+    }
+
+    public void setField(Field field) {
+        this.field = field;
+    }
+
+    /**
+     * 排序是否应该被反转
+     *
+     * @return 如果为true,则反转默认的升序
+     */
+    public boolean isReverse() {
+        return reverse;
+    }
+
+    public void setReverse(boolean reverse) {
+        this.reverse = reverse;
+    }
+
+    @Override
+    public String toString() {
+        return "Sort [field=" + field + ", reverse=" + reverse + "]";
+    }
+
+    /**
+     * 排序的字段
+     *
+     * @author sunyj
+     * @since 2017年7月8日 下午5:12:07
+     */
+    public enum Field {
+
+        /**
+         * 库存
+         */
+        RESERVE,
+
+        /**
+         * 价格(人民币)
+         */
+        PRICE
+    }
+
+}

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentGoodsServiceImpl.java

@@ -9,8 +9,8 @@ import com.uas.platform.b2c.prod.product.kind.service.KindService;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
-import com.uas.search.model.PageParams;
-import com.uas.search.model.PageParams.FilterField;
+import com.uas.platform.b2c.common.search.util.PageParams;
+import com.uas.platform.b2c.common.search.util.PageParams.FilterField;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentServiceImpl.java

@@ -30,8 +30,8 @@ import com.uas.platform.core.model.Type;
 import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
-import com.uas.search.model.PageParams;
-import com.uas.search.model.PageParams.FilterField;
+import com.uas.platform.b2c.common.search.util.PageParams;
+import com.uas.platform.b2c.common.search.util.PageParams.FilterField;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;