Browse Source

HTTP 接口 filters 参数改为 JSONObject 类型

sunyj 8 years ago
parent
commit
032e923f03
1 changed files with 29 additions and 49 deletions
  1. 29 49
      src/main/java/com/uas/search/controller/SearchController.java

+ 29 - 49
src/main/java/com/uas/search/controller/SearchController.java

@@ -89,7 +89,7 @@ public class SearchController {
 
 	@RequestMapping("/componentIds")
 	@ResponseBody
-	public Map<String, Object> searchComponentIds(String keyword, Integer page, Integer size, String filters,
+	public Map<String, Object> searchComponentIds(String keyword, Integer page, Integer size, JSONObject filters,
 			HttpServletRequest request) {
 		PageParams pageParams = new PageParams();
 		if (page != null) {
@@ -99,9 +99,8 @@ public class SearchController {
 			pageParams.setSize(size);
 		}
 		Map<FilterField, Object> filtersMap = new HashMap<>();
-		if (!StringUtils.isEmpty(filters)) {
-			JSONObject json = JSONObject.parseObject(filters);
-			Set<Entry<String, Object>> entrySet = json.entrySet();
+		if (filters != null) {
+			Set<Entry<String, Object>> entrySet = filters.entrySet();
 			for (Entry<String, Object> entry : entrySet) {
 				FilterField field = FilterField.valueOf(entry.getKey().toUpperCase());
 				filtersMap.put(field, entry.getValue());
@@ -116,7 +115,7 @@ public class SearchController {
 
 	@RequestMapping("/components")
 	@ResponseBody
-	public List<Component> searchComponents(String keyword, Integer page, Integer size, String filters,
+	public List<Component> searchComponents(String keyword, Integer page, Integer size, JSONObject filters,
 			HttpServletRequest request) {
 		@SuppressWarnings("unchecked")
 		List<Long> ids = (List<Long>) searchComponentIds(keyword, page, size, filters, request).get("componentIds");
@@ -204,7 +203,7 @@ public class SearchController {
 
 	@RequestMapping("/goodsIds")
 	@ResponseBody
-	public Map<String, Object> getGoodsIds(String keyword, Integer page, Integer size, String filters, String sort,
+	public Map<String, Object> getGoodsIds(String keyword, Integer page, Integer size, JSONObject filters, String sort,
 			HttpServletRequest request) {
 		PageParams pageParams = new PageParams();
 		if (page != null) {
@@ -213,30 +212,7 @@ public class SearchController {
 		if (size != null) {
 			pageParams.setSize(size);
 		}
-		Map<FilterField, Object> filtersMap = new HashMap<>();
-		if (!StringUtils.isEmpty(filters)) {
-			JSONObject json = JSONObject.parseObject(filters);
-			Set<Entry<String, Object>> entrySet = json.entrySet();
-			for (Entry<String, Object> entry : entrySet) {
-				FilterField field = FilterField.valueOf(entry.getKey());
-				String value = entry.getValue().toString();
-				switch (field) {
-				case GOODS_KINDID:
-				case GOODS_BRANDID:
-				case GOODS_STORE_TYPE:
-				case GOODS_CRNAME:
-					String[] strs = value.split(",");
-					List<Object> values = new ArrayList<>();
-					for (String str : strs) {
-						values.add(str);
-					}
-					filtersMap.put(field, values);
-					break;
-				default:
-					filtersMap.put(field, value);
-				}
-			}
-		}
+		Map<FilterField, Object> filtersMap = parseFilters(filters);
 		pageParams.setFilters(filtersMap);
 		if (!StringUtils.isEmpty(sort)) {
 			JSONArray jsonArray = JSONObject.parseArray(sort);
@@ -258,34 +234,38 @@ public class SearchController {
 
 	@RequestMapping("/collectBySearchGoods")
 	@ResponseBody
-	public List<Map<String, Object>> collectBySearchGoods(String keyword, String collectedField, String filters,
+	public List<Map<String, Object>> collectBySearchGoods(String keyword, String collectedField, JSONObject filters,
 			HttpServletRequest request) {
-		Map<FilterField, Object> filtersMap = new HashMap<>();
-		if (!StringUtils.isEmpty(filters)) {
-			JSONObject json = JSONObject.parseObject(filters);
+		Map<FilterField, Object> filtersMap = parseFilters(filters);
+		return searchService.collectBySearchGoods(keyword, CollectField.valueOf(collectedField.toUpperCase()),
+				filtersMap);
+	}
+
+	public Map<FilterField, Object> parseFilters(JSONObject json){
+		Map<FilterField, Object> filters = new HashMap<>();
+		if(json != null){
 			Set<Entry<String, Object>> entrySet = json.entrySet();
 			for (Entry<String, Object> entry : entrySet) {
 				FilterField field = FilterField.valueOf(entry.getKey());
 				String value = entry.getValue().toString();
 				switch (field) {
-				case GOODS_KINDID:
-				case GOODS_BRANDID:
-				case GOODS_STORE_TYPE:
-				case GOODS_CRNAME:
-					String[] strs = value.split(",");
-					List<Object> values = new ArrayList<>();
-					for (String str : strs) {
-						values.add(str);
-					}
-					filtersMap.put(field, values);
-					break;
-				default:
-					filtersMap.put(field, value);
+					case GOODS_KINDID:
+					case GOODS_BRANDID:
+					case GOODS_STORE_TYPE:
+					case GOODS_CRNAME:
+						String[] strs = value.split(",");
+						List<Object> values = new ArrayList<>();
+						for (String str : strs) {
+							values.add(str);
+						}
+						filters.put(field, values);
+						break;
+					default:
+						filters.put(field, value);
 				}
 			}
 		}
-		return searchService.collectBySearchGoods(keyword, CollectField.valueOf(collectedField.toUpperCase()),
-				filtersMap);
+		return filters;
 	}
 
 	@RequestMapping("/kind/{id}")