From 5e7b0ed4a154ad067cbcf4aa1a1c7cce32f9864c Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 26 四月 2024 18:02:17 +0800
Subject: [PATCH] 唯品会链接解析升级

---
 fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/SearchController.java | 1156 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 584 insertions(+), 572 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/SearchController.java b/fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/SearchController.java
index 9d98fc2..3004e50 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/SearchController.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/wxmp/v1/SearchController.java
@@ -1,572 +1,584 @@
-package com.yeshi.fanli.controller.wxmp.v1;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpSession;
-
-import org.springframework.core.task.TaskExecutor;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.yeshi.utils.JsonUtil;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.yeshi.fanli.dto.ConfigParamsDTO;
-import com.yeshi.fanli.dto.WXMPAcceptData;
-import com.yeshi.fanli.dto.jd.JDFilter;
-import com.yeshi.fanli.dto.jd.JDSearchFilter;
-import com.yeshi.fanli.dto.jd.JDSearchResult;
-import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
-import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
-import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.bus.search.HotSearch;
-import com.yeshi.fanli.entity.goods.CommonGoods;
-import com.yeshi.fanli.entity.jd.JDGoods;
-import com.yeshi.fanli.entity.system.ConfigKeyEnum;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.brand.BrandInfoService;
-import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.config.HotSearchService;
-import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
-import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager;
-import com.yeshi.fanli.tag.PageEntity;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.factory.CommonGoodsFactory;
-import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
-import com.yeshi.fanli.util.jd.JDApiUtil;
-import com.yeshi.fanli.util.jd.JDUtil;
-import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
-import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
-import com.yeshi.fanli.util.taobao.SearchFilterUtil;
-import com.yeshi.fanli.util.taobao.TaoBaoUtil;
-import com.yeshi.fanli.vo.goods.GoodsDetailVO;
-
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-
-@Controller("WXMPSearchController")
-@RequestMapping("/wxmp/api/v1/search")
-public class SearchController {
-
-	@Resource
-	private ConfigService configService;
-
-	@Resource
-	private HongBaoManageService hongBaoManageService;
-
-	@Resource(name = "taskExecutor")
-	private TaskExecutor executor;
-
-	@Resource
-	private BrandInfoService brandInfoService;
-
-	@Resource
-	private JDGoodsLinkParseManager jdGoodsLinkParseManager;
-
-	@Resource
-	private HotSearchService hotSearchService;
-
-	/**
-	 * 绮樿创鏉夸俊鎭帹鑽�
-	 * 
-	 * @param acceptData
-	 * @param url
-	 *            鍟嗗搧閾炬帴
-	 * @param out
-	 */
-	@RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST)
-	public void getRecommendInfo(WXMPAcceptData acceptData, String text, Long uid, PrintWriter out) {
-		if (StringUtil.isNullOrEmpty(text)) {
-			out.print(JsonUtil.loadFalseResult("鍊间负绌�"));
-			return;
-		}
-
-		// 鍘婚櫎鍓嶅悗绌烘牸
-		int type = 1;
-		text = text.trim();
-		String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
-		Pattern p = Pattern.compile(URL_REGEX);
-		Matcher matcher = p.matcher(text);
-		if (!matcher.find()) {// 涓嶅寘鍚摼鎺�
-			if (text.length() > 256) {
-				out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
-				return;
-			}
-			String pattern = "^[A-Za-z0-9-]+$";
-			if (Pattern.matches(pattern, text.replace(" ", ""))) {// 鍒犻櫎绌烘牸
-				out.println(JsonUtil.loadFalseResult("涓嶆敮鎸佹帹鑽�"));
-				return;
-			}
-
-			LogHelper.test("鏍规嵁绮樿创鏉挎帹鑽�:" + text);
-			if (text.length() > 80) {
-				out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
-				return;
-			}
-
-			if (!StringUtil.isNullOrEmpty(TaoBaoUtil.parseSystemTaoToken(text))) {
-				out.print(JsonUtil.loadFalseResult("涓嶆敮鎸佹帹鑽�"));
-				return;
-			}
-			JSONObject data = new JSONObject();
-			data.put("type", type);
-			data.put("title", text);
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		type = 2;
-		CommonGoods commonGoods = null;
-		text = matcher.group();
-		String jdId = JDUtil.getJDGoodsId(text);
-		if (StringUtil.isNullOrEmpty(jdId)) {
-			jdId = JDUtil.getJDGoodsIdByWeiXin(text); // 寰俊閾炬帴
-			if (StringUtil.isNullOrEmpty(jdId) && text.contains("u.jd.com")) {
-				jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(text); // 棰嗗埜鐭繛鎺�
-			}
-		}
-		if (!StringUtil.isNullOrEmpty(jdId)) {
-			JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId));
-			if (goods != null) {
-				// 楂樼骇鎺ュ彛 -- 淇℃伅鏇村畬鏁�
-				JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId));
-				if (jdGoods != null) {
-					commonGoods = CommonGoodsFactory.create(jdGoods);
-				} else {
-					commonGoods = CommonGoodsFactory.create(goods);
-				}
-			} else {
-				type = 3;
-				goods = JDUtil.getSimpleGoodsInfo(jdId);
-				if (goods != null) {
-					commonGoods = new CommonGoods();
-					commonGoods.setTitle(goods.getSkuName());
-					commonGoods.setPicture(goods.getPicUrl());
-				}
-			}
-		} else {
-			String pddId = PinDuoDuoUtil.getPDDGoodsId(text);
-			if (!StringUtil.isNullOrEmpty(pddId)) {
-				PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId));
-				if (goods != null) {
-					commonGoods = CommonGoodsFactory.create(goods);
-				} else {
-					type = 3;
-					goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId);
-					if (goods != null) {
-						commonGoods = new CommonGoods();
-						commonGoods.setTitle(goods.getGoodsName());
-						commonGoods.setPicture(goods.getGoodsThumbnailUrl());
-					}
-				}
-			}
-		}
-
-		if (commonGoods == null) {
-			out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
-			return;
-		}
-
-		if (type == 3) {
-			JSONObject data = new JSONObject();
-			JSONObject goodsJSON = new JSONObject();
-			goodsJSON.put("title", commonGoods.getTitle());
-			goodsJSON.put("pictUrl", commonGoods.getPicture());
-			data.put("type", type);
-			data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅");
-			data.put("goods", goodsJSON);
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		JSONObject data = new JSONObject();
-		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-				.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-		data.put("type", type);
-		data.put("goods", gson.toJson(GoodsDetailVOFactory.convertCommonGoods(commonGoods,
-				hongBaoManageService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion()))));
-		out.print(JsonUtil.loadTrueResult(data));
-		return;
-	}
-
-	/**
-	 * 鐑棬鎼滅储
-	 * 
-	 * @param acceptData
-	 * @param goodsType
-	 * @param out
-	 */
-	@RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
-	public void getHotSearch(AcceptData acceptData, Integer goodsType, PrintWriter out) {
-		// 榛樿娣樺疂
-		if (goodsType == null) {
-			goodsType = Constant.SOURCE_TYPE_TAOBAO;
-		}
-
-		List<HotSearch> list = hotSearchService.getHotSearchCache(goodsType);
-		if (list == null || list.size() == 0) {
-			out.print(JsonUtil.loadFalseResult("娌℃湁鏁版嵁"));
-			return;
-		}
-		List<String> hotSearchList = new ArrayList<String>();
-		if(list!=null)
-		for (HotSearch hot : list)
-			hotSearchList.add(hot.getName());
-
-		JSONObject data = new JSONObject();
-		data.put("count", list.size());
-		data.put("hotSearchList", hotSearchList);
-		data.put("helpLink", configService.get(ConfigKeyEnum.newerGonglue.getKey()));
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	/**
-	 * 鎼滅储鍊欓�夎瘝
-	 * 
-	 * @param acceptData
-	 * @param kw
-	 * @param out
-	 */
-	@RequestMapping(value = "suggestSearch", method = RequestMethod.POST)
-	public void getSugguestSearch(WXMPAcceptData acceptData, String kw, Integer goodsType, PrintWriter out) {
-		if (goodsType == null) {
-			out.print(JsonUtil.loadFalseResult("骞冲彴绫诲瀷涓嶈兘涓虹┖"));
-			return;
-		}
-
-		List<String> list = null;
-		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
-			list = TaoBaoUtil.getSuguestSearch(kw);
-		} else if (goodsType == Constant.SOURCE_TYPE_JD) {
-			list = JDUtil.suggestSearch(kw);
-		} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
-			list = PinDuoDuoUtil.suggestSearch(kw);
-		}
-
-		if (list == null || list.size() == 0) {
-			out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
-			return;
-		}
-
-		JSONArray array = new JSONArray();
-		for (String words : list) {
-			array.add(words);
-		}
-		out.print(JsonUtil.loadTrueResult(array));
-	}
-
-	/**
-	 * 鎼滅储-鏂扮増
-	 * 
-	 * @param acceptData
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 *            閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5
-	 *            銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20
-	 * @param startprice
-	 * @param endprice
-	 * @param fastFilter
-	 * @param out
-	 */
-	@RequestMapping(value = "searchGoods")
-	public void searchGoods(WXMPAcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
-			Integer order, Long uid, HttpSession session, PrintWriter out) {
-		if (goodsType == null || goodsType < 2 || goodsType > 3) {
-			out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�"));
-			return;
-		}
-
-		if (StringUtil.isNullOrEmpty(key)) {
-			out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�"));
-			return;
-		}
-
-		if (page == null || page < 1) {
-			page = 1;
-		}
-
-		final String searchkey = key.trim();
-		if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
-			JSONObject data = new JSONObject();
-			data.put("count", 0);
-			data.put("list", new JSONArray());
-			out.print(JsonUtil.loadTrueResult(data));
-			return;
-		}
-
-		/*--------- 浜笢鍟嗗搧  -------*/
-		if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
-			searchJDGoods(acceptData, searchkey, page, filter, order, out);
-			return;
-		}
-
-		/*-------- 鎷煎澶氬晢鍝�  -------*/
-		if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
-			searchPDDGoods(acceptData, searchkey, page, filter, order, out);
-			return;
-		}
-	}
-
-	/**
-	 * 浜笢
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private void searchJDGoods(WXMPAcceptData acceptData, String key, Integer page, String filter, Integer order,
-			PrintWriter out) {
-
-		JDSearchResult result = null;
-		boolean hasCoupon = false;
-		String way = configService.get(ConfigKeyEnum.jdApiSearchKey.getKey());
-		if ("1".equals(way)) {
-			JDFilter filterAPI = new JDFilter();
-			filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key));
-			filterAPI.setPageIndex(page);
-			filterAPI.setPageSize(Constant.PAGE_SIZE);
-
-			if (order != null) {
-				int sort = order.intValue();
-				switch (sort) {
-				case 1: // 閿�閲� desc
-					filterAPI.setSort(JDFilter.SORT_DESC);
-					filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS);
-					break;
-				case 2: // 浠锋牸鈥攄esc
-					filterAPI.setSort(JDFilter.SORT_DESC);
-					filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
-					break;
-				case 3: // 浠锋牸鈥攁sc
-					filterAPI.setSort(JDFilter.SORT_ASC);
-					filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
-					break;
-				case 4: // 杩斿埄姣斺�擠ESC
-					filterAPI.setSort(JDFilter.SORT_DESC);
-					filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE);
-					break;
-				default:
-					break;
-				}
-			}
-
-			if (!StringUtil.isNullOrEmpty(filter)) {
-				JSONObject jsonfilter = JSONObject.fromObject(filter);
-				Boolean coupon = jsonfilter.optBoolean("coupon");
-				if (coupon != null && coupon) {
-					hasCoupon = true;
-					filterAPI.setIsCoupon(1); // 鏈夊埜
-				}
-
-				Boolean zy = jsonfilter.optBoolean("zy");
-				if (zy != null && zy) {
-					filterAPI.setOwner("g"); // 鑷惀
-				}
-
-				String minPrice = jsonfilter.optString("minPrice");
-				if (!StringUtil.isNullOrEmpty(minPrice)) {
-					filterAPI.setPricefrom(Double.parseDouble(minPrice));
-				}
-
-				String maxPrice = jsonfilter.optString("maxPrice");
-				if (!StringUtil.isNullOrEmpty(maxPrice)) {
-					filterAPI.setPriceto(Double.parseDouble(maxPrice));
-				}
-			}
-
-			result = JDApiUtil.queryByKey(filterAPI);
-		} else {
-			// 缃戦〉鐖彇
-			JDSearchFilter jdfilter = new JDSearchFilter();
-			jdfilter.setKey(SearchFilterUtil.filterSearchContent(key));
-			jdfilter.setPageNo(page);
-			jdfilter.setPageSize(Constant.PAGE_SIZE);
-
-			if (order != null) {
-				int sort = order.intValue();
-				switch (sort) {
-				case 1: // 閿�閲� desc
-					jdfilter.setSort(JDSearchFilter.SORT_DESC);
-					jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
-					break;
-				case 2: // 浠锋牸鈥攄esc
-					jdfilter.setSort(JDSearchFilter.SORT_DESC);
-					jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
-					break;
-				case 3: // 浠锋牸鈥攁sc
-					jdfilter.setSort(JDSearchFilter.SORT_ASC);
-					jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
-					break;
-				case 4: // 杩斿埄姣斺�擠ESC
-					jdfilter.setSort(JDSearchFilter.SORT_DESC);
-					jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE);
-					break;
-				default:
-					break;
-				}
-			}
-
-			if (!StringUtil.isNullOrEmpty(filter)) {
-				JSONObject jsonfilter = JSONObject.fromObject(filter);
-				Boolean coupon = jsonfilter.optBoolean("coupon");
-				if (coupon != null && coupon) {
-					hasCoupon = true;
-					jdfilter.setHasCoupon(1); // 鏈夊埜
-				}
-
-				Boolean zy = jsonfilter.optBoolean("zy");
-				if (zy != null && zy) {
-					jdfilter.setIsZY(1); // 鑷惀
-				}
-
-				Boolean delivery = jsonfilter.optBoolean("delivery");
-				if (delivery != null && delivery) {
-					jdfilter.setDeliveryType(1); // 浜笢閰嶉��
-				}
-
-				String minPrice = jsonfilter.optString("minPrice");
-				if (!StringUtil.isNullOrEmpty(minPrice)) {
-					if (minPrice.contains(".")) {
-						minPrice = minPrice.replace(".", "-");
-						minPrice = minPrice.split("-")[0];
-					}
-					jdfilter.setFromPrice(Integer.parseInt(minPrice));
-				}
-
-				String maxPrice = jsonfilter.optString("maxPrice");
-				if (!StringUtil.isNullOrEmpty(maxPrice)) {
-					if (maxPrice.contains(".")) {
-						maxPrice = maxPrice.replace(".", "-");
-						maxPrice = maxPrice.split("-")[0];
-					}
-					jdfilter.setToPrice(Integer.parseInt(maxPrice));
-				}
-			}
-			result = JDUtil.searchByKey(jdfilter);
-
-		}
-
-		long count = 0;
-		JSONObject data = new JSONObject();
-		JSONArray array = new JSONArray();
-		if (result != null) {
-			PageEntity pageEntity = result.getPageEntity();
-			if (pageEntity != null) {
-				count = pageEntity.getTotalCount();
-			}
-
-			List<JDGoods> goodsList = result.getGoodsList();
-			if (goodsList != null && goodsList.size() > 0) {
-				Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
-						.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-				ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
-						acceptData.getVersion());
-				for (JDGoods goods : goodsList) {
-					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO);
-					if (hasCoupon) {
-						if (goodsDetailVO.isHasCoupon()) {
-							array.add(gson.toJson(goodsDetailVO));
-						}
-					} else {
-						array.add(gson.toJson(goodsDetailVO));
-					}
-				}
-			}
-		}
-
-		data.put("count", count);
-		data.put("list", array);
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-
-	/**
-	 * 鎷煎澶�
-	 * 
-	 * @param kw
-	 * @param page
-	 * @param filter
-	 * @param order
-	 * @param startprice
-	 * @param endprice
-	 * @return
-	 */
-	private void searchPDDGoods(WXMPAcceptData acceptData, String key, Integer page, String filter, Integer order,
-			PrintWriter out) {
-		PDDSearchFilter pddfilter = new PDDSearchFilter();
-		pddfilter.setKw(SearchFilterUtil.filterSearchContent(key));
-		pddfilter.setPage(page);
-		pddfilter.setPageSize(Constant.PAGE_SIZE);
-
-		if (order != null) {
-			int sort = order.intValue();
-			switch (sort) {
-			case 1: // 閿�閲� desc
-				pddfilter.setSortType(6);
-				break;
-			case 2: // 浠锋牸鈥攄esc
-				pddfilter.setSortType(4);
-				break;
-			case 3: // 浠锋牸鈥攁sc
-				pddfilter.setSortType(3);
-				break;
-			case 4: // 杩斿埄姣斺�攄esc
-				pddfilter.setSortType(2);
-				break;
-			default: // 缁煎悎鎺掑簭
-				pddfilter.setSortType(0);
-				break;
-			}
-		}
-
-		if (!StringUtil.isNullOrEmpty(filter)) {
-			JSONObject jsonfilter = JSONObject.fromObject(filter);
-			Boolean coupon = jsonfilter.optBoolean("coupon");
-			if (coupon != null && coupon) {
-				pddfilter.setHasCoupon(true); // 鏈夊埜
-			}
-
-			Boolean brand = jsonfilter.optBoolean("brand");
-			if (brand != null && brand) {
-				pddfilter.setIsBrand(true); // 鏄惁鏄搧鐗�
-			}
-		}
-
-		int count = 0;
-		JSONObject data = new JSONObject();
-		JSONArray array = new JSONArray();
-
-		PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
-		if (result != null) {
-			count = result.getTotalCount();
-			Gson gson = JsonUtil.getApiCommonGson();
-			List<PDDGoodsDetail> goodsList = result.getGoodsList();
-			if (goodsList != null && goodsList.size() > 0) {
-				ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
-						acceptData.getVersion());
-
-				for (PDDGoodsDetail goods : goodsList) {
-					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
-					array.add(gson.toJson(goodsDetailVO));
-				}
-			}
-		}
-
-		data.put("count", count);
-		data.put("list", array);
-		out.print(JsonUtil.loadTrueResult(data));
-	}
-}
+package com.yeshi.fanli.controller.wxmp.v1;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpSession;
+
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.exception.pdd.PDDApiException;
+import com.yeshi.fanli.util.SystemInfoUtil;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.yeshi.utils.JsonUtil;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
+import com.yeshi.fanli.dto.WXMPAcceptData;
+import com.yeshi.fanli.dto.jd.JDFilter;
+import com.yeshi.fanli.dto.jd.JDSearchFilter;
+import com.yeshi.fanli.dto.jd.JDSearchResult;
+import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
+import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
+import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.search.HotSearch;
+import com.yeshi.fanli.entity.goods.CommonGoods;
+import com.yeshi.fanli.entity.jd.JDGoods;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.brand.BrandInfoService;
+import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.config.HotSearchService;
+import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager;
+import com.yeshi.common.entity.PageEntity;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.factory.CommonGoodsFactory;
+import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
+import com.yeshi.fanli.util.jd.JDApiUtil;
+import com.yeshi.fanli.util.jd.JDUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
+import com.yeshi.fanli.util.taobao.SearchFilterUtil;
+import com.yeshi.fanli.util.taobao.TaoBaoUtil;
+import com.yeshi.fanli.vo.goods.GoodsDetailVO;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
+@Controller("WXMPSearchController")
+@RequestMapping("/wxmp/api/v1/search")
+public class SearchController {
+
+	@Resource
+	private ConfigService configService;
+
+	@Resource
+	private HongBaoManageService hongBaoManageService;
+	
+	@Resource
+	private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
+
+	@Resource(name = "taskExecutor")
+	private TaskExecutor executor;
+
+	@Resource
+	private BrandInfoService brandInfoService;
+
+	@Resource
+	private JDGoodsLinkParseManager jdGoodsLinkParseManager;
+
+	@Resource
+	private HotSearchService hotSearchService;
+
+	/**
+	 * 绮樿创鏉夸俊鎭帹鑽�
+	 * 
+	 * @param acceptData
+	 * @param url
+	 *            鍟嗗搧閾炬帴
+	 * @param out
+	 */
+	@RequestMapping(value = "getRecommendInfo", method = RequestMethod.POST)
+	public void getRecommendInfo(WXMPAcceptData acceptData, String text, Long uid, PrintWriter out) {
+		if (StringUtil.isNullOrEmpty(text)) {
+			out.print(JsonUtil.loadFalseResult("鍊间负绌�"));
+			return;
+		}
+
+		// 鍘婚櫎鍓嶅悗绌烘牸
+		int type = 1;
+		text = text.trim();
+		String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
+		Pattern p = Pattern.compile(URL_REGEX);
+		Matcher matcher = p.matcher(text);
+		if (!matcher.find()) {// 涓嶅寘鍚摼鎺�
+			if (text.length() > 256) {
+				out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
+				return;
+			}
+			String pattern = "^[A-Za-z0-9-]+$";
+			if (Pattern.matches(pattern, text.replace(" ", ""))) {// 鍒犻櫎绌烘牸
+				out.println(JsonUtil.loadFalseResult("涓嶆敮鎸佹帹鑽�"));
+				return;
+			}
+
+			LogHelper.test("鏍规嵁绮樿创鏉挎帹鑽�:" + text);
+			if (text.length() > 80) {
+				out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
+				return;
+			}
+
+			if (!StringUtil.isNullOrEmpty(TaoBaoUtil.parseSystemTaoToken(text))) {
+				out.print(JsonUtil.loadFalseResult("涓嶆敮鎸佹帹鑽�"));
+				return;
+			}
+			JSONObject data = new JSONObject();
+			data.put("type", type);
+			data.put("title", text);
+			out.print(JsonUtil.loadTrueResult(data));
+			return;
+		}
+
+		type = 2;
+		CommonGoods commonGoods = null;
+		text = matcher.group();
+		String jdId = JDUtil.getJDGoodsId(text);
+		if (StringUtil.isNullOrEmpty(jdId)) {
+			jdId = JDUtil.getJDGoodsIdByWeiXin(text); // 寰俊閾炬帴
+			if (StringUtil.isNullOrEmpty(jdId) && text.contains("u.jd.com")) {
+				jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(text); // 棰嗗埜鐭繛鎺�
+			}
+		}
+		if (!StringUtil.isNullOrEmpty(jdId)) {
+			JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId));
+			if (goods != null) {
+				// 楂樼骇鎺ュ彛 -- 淇℃伅鏇村畬鏁�
+				JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId));
+				if (jdGoods != null) {
+					commonGoods = CommonGoodsFactory.create(jdGoods);
+				} else {
+					commonGoods = CommonGoodsFactory.create(goods);
+				}
+			} else {
+				type = 3;
+				goods = JDUtil.getSimpleGoodsInfo(jdId);
+				if (goods != null) {
+					commonGoods = new CommonGoods();
+					commonGoods.setTitle(goods.getSkuName());
+					commonGoods.setPicture(goods.getPicUrl());
+				}
+			}
+		} else {
+			String pddId = PinDuoDuoUtil.getPDDGoodsId(text);
+			if (!StringUtil.isNullOrEmpty(pddId)) {
+				PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId));
+				if (goods != null) {
+					commonGoods = CommonGoodsFactory.create(goods);
+				} else {
+					type = 3;
+					goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId);
+					if (goods != null) {
+						commonGoods = new CommonGoods();
+						commonGoods.setTitle(goods.getGoodsName());
+						commonGoods.setPicture(goods.getGoodsThumbnailUrl());
+					}
+				}
+			}
+		}
+
+		if (commonGoods == null) {
+			out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
+			return;
+		}
+
+		if (type == 3) {
+			JSONObject data = new JSONObject();
+			JSONObject goodsJSON = new JSONObject();
+			goodsJSON.put("title", commonGoods.getTitle());
+			goodsJSON.put("pictUrl", commonGoods.getPicture());
+			data.put("type", type);
+			data.put("desc", "璇ュ晢鍝佹棤鎺ㄥ箍淇℃伅");
+			data.put("goods", goodsJSON);
+			out.print(JsonUtil.loadTrueResult(data));
+			return;
+		}
+
+		JSONObject data = new JSONObject();
+		Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+				.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+		data.put("type", type);
+		data.put("goods", gson.toJson(GoodsDetailVOFactory.convertCommonGoods(commonGoods,
+				orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), acceptData.getVersion(),acceptData.getSystem()))));
+		out.print(JsonUtil.loadTrueResult(data));
+		return;
+	}
+
+	/**
+	 * 鐑棬鎼滅储
+	 * 
+	 * @param acceptData
+	 * @param goodsType
+	 * @param out
+	 */
+	@RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
+	public void getHotSearch(AcceptData acceptData, Integer goodsType, PrintWriter out) {
+		// 榛樿娣樺疂
+		if (goodsType == null) {
+			goodsType = Constant.SOURCE_TYPE_TAOBAO;
+		}
+
+		List<HotSearch> list = hotSearchService.getHotSearchCache(goodsType,acceptData.getSystem());
+		if (list == null || list.size() == 0) {
+			out.print(JsonUtil.loadFalseResult("娌℃湁鏁版嵁"));
+			return;
+		}
+		List<String> hotSearchList = new ArrayList<String>();
+		if(list!=null)
+		for (HotSearch hot : list)
+			hotSearchList.add(hot.getName());
+
+		JSONObject data = new JSONObject();
+		data.put("count", list.size());
+		data.put("hotSearchList", hotSearchList);
+		data.put("helpLink", configService.getValue(ConfigKeyEnum.newerGonglue.getKey(), SystemInfoUtil.getSystem(acceptData)));
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 鎼滅储鍊欓�夎瘝
+	 * 
+	 * @param acceptData
+	 * @param kw
+	 * @param out
+	 */
+	@RequestMapping(value = "suggestSearch", method = RequestMethod.POST)
+	public void getSugguestSearch(WXMPAcceptData acceptData, String kw, Integer goodsType, PrintWriter out) {
+		if (goodsType == null) {
+			out.print(JsonUtil.loadFalseResult("骞冲彴绫诲瀷涓嶈兘涓虹┖"));
+			return;
+		}
+
+		List<String> list = null;
+		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+			list = TaoBaoUtil.getSuguestSearch(kw);
+		} else if (goodsType == Constant.SOURCE_TYPE_JD) {
+			list = JDUtil.suggestSearch(kw);
+		} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
+			list = PinDuoDuoUtil.suggestSearch(kw);
+		}
+
+		if (list == null || list.size() == 0) {
+			out.print(JsonUtil.loadFalseResult("鏆傛棤寤鸿鍐呭"));
+			return;
+		}
+
+		JSONArray array = new JSONArray();
+		for (String words : list) {
+			array.add(words);
+		}
+		out.print(JsonUtil.loadTrueResult(array));
+	}
+
+	/**
+	 * 鎼滅储-鏂扮増
+	 * 
+	 * @param acceptData
+	 * @param kw
+	 * @param page
+	 * @param filter
+	 * @param order
+	 *            閿�閲忕敱楂樺埌浣�:1 銆� 浠锋牸浠庨珮鍒颁綆:2 銆� 浠锋牸浠庝綆鍒伴珮:3 銆� 鎺ㄥ箍閲忛珮鍒颁綆:4锛堢患鍚堥粯璁わ級銆佽繑鍒╂瘮楂樺埌浣�:5
+	 *            銆佽繑鍒╂瘮浣庡埌楂�:6 銆佹帹鑽�20
+	 * @param startprice
+	 * @param endprice
+	 * @param fastFilter
+	 * @param out
+	 */
+	@RequestMapping(value = "searchGoods")
+	public void searchGoods(WXMPAcceptData acceptData, Integer goodsType, String key, Integer page, String filter,
+			Integer order, Long uid, HttpSession session, PrintWriter out) {
+		if (goodsType == null || goodsType < 2 || goodsType > 3) {
+			out.print(JsonUtil.loadFalseResult(1, "璇蜂紶閫掓纭钩鍙板弬鏁�"));
+			return;
+		}
+
+		if (StringUtil.isNullOrEmpty(key)) {
+			out.print(JsonUtil.loadFalseResult(1, "璇疯緭鍏ユ悳绱㈠唴瀹�"));
+			return;
+		}
+
+		if (page == null || page < 1) {
+			page = 1;
+		}
+
+		final String searchkey = key.trim();
+		if (searchkey.startsWith("http://") || searchkey.startsWith("https://")) {
+			JSONObject data = new JSONObject();
+			data.put("count", 0);
+			data.put("list", new JSONArray());
+			out.print(JsonUtil.loadTrueResult(data));
+			return;
+		}
+
+		/*--------- 浜笢鍟嗗搧  -------*/
+		if (goodsType.intValue() == Constant.SOURCE_TYPE_JD) {
+			searchJDGoods(acceptData, searchkey, page, filter, order, out);
+			return;
+		}
+
+		/*-------- 鎷煎澶氬晢鍝�  -------*/
+		if (goodsType.intValue() == Constant.SOURCE_TYPE_PDD) {
+			searchPDDGoods(acceptData, searchkey, page, filter, order, out);
+			return;
+		}
+	}
+
+	/**
+	 * 浜笢
+	 * 
+	 * @param kw
+	 * @param page
+	 * @param filter
+	 * @param order
+	 * @param startprice
+	 * @param endprice
+	 * @return
+	 */
+	private void searchJDGoods(WXMPAcceptData acceptData, String key, Integer page, String filter, Integer order,
+			PrintWriter out) {
+		SystemEnum system= SystemInfoUtil.getSystemByWXCXCAppId(acceptData.getAppId());
+		JDSearchResult result = null;
+		boolean hasCoupon = false;
+		String way = configService.getValue(ConfigKeyEnum.jdApiSearchKey.getKey(), system);
+		if ("1".equals(way)) {
+			JDFilter filterAPI = new JDFilter();
+			filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(key));
+			filterAPI.setPageIndex(page);
+			filterAPI.setPageSize(Constant.PAGE_SIZE);
+
+			if (order != null) {
+				int sort = order.intValue();
+				switch (sort) {
+				case 1: // 閿�閲� desc
+					filterAPI.setSort(JDFilter.SORT_DESC);
+					filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS);
+					break;
+				case 2: // 浠锋牸鈥攄esc
+					filterAPI.setSort(JDFilter.SORT_DESC);
+					filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
+					break;
+				case 3: // 浠锋牸鈥攁sc
+					filterAPI.setSort(JDFilter.SORT_ASC);
+					filterAPI.setSortName(JDFilter.SORTNAME_PRICE);
+					break;
+				case 4: // 杩斿埄姣斺�擠ESC
+					filterAPI.setSort(JDFilter.SORT_DESC);
+					filterAPI.setSortName(JDFilter.SORTNAME_COMMISSION_SHARE);
+					break;
+				default:
+					break;
+				}
+			}
+
+			if (!StringUtil.isNullOrEmpty(filter)) {
+				JSONObject jsonfilter = JSONObject.fromObject(filter);
+				Boolean coupon = jsonfilter.optBoolean("coupon");
+				if (coupon != null && coupon) {
+					hasCoupon = true;
+					filterAPI.setIsCoupon(1); // 鏈夊埜
+				}
+
+				Boolean zy = jsonfilter.optBoolean("zy");
+				if (zy != null && zy) {
+					filterAPI.setOwner("g"); // 鑷惀
+				}
+
+				String minPrice = jsonfilter.optString("minPrice");
+				if (!StringUtil.isNullOrEmpty(minPrice)) {
+					filterAPI.setPricefrom(Double.parseDouble(minPrice));
+				}
+
+				String maxPrice = jsonfilter.optString("maxPrice");
+				if (!StringUtil.isNullOrEmpty(maxPrice)) {
+					filterAPI.setPriceto(Double.parseDouble(maxPrice));
+				}
+			}
+
+			result = JDApiUtil.queryByKey(filterAPI);
+		} else {
+			// 缃戦〉鐖彇
+			JDSearchFilter jdfilter = new JDSearchFilter();
+			jdfilter.setKey(SearchFilterUtil.filterSearchContent(key));
+			jdfilter.setPageNo(page);
+			jdfilter.setPageSize(Constant.PAGE_SIZE);
+
+			if (order != null) {
+				int sort = order.intValue();
+				switch (sort) {
+				case 1: // 閿�閲� desc
+					jdfilter.setSort(JDSearchFilter.SORT_DESC);
+					jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
+					break;
+				case 2: // 浠锋牸鈥攄esc
+					jdfilter.setSort(JDSearchFilter.SORT_DESC);
+					jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
+					break;
+				case 3: // 浠锋牸鈥攁sc
+					jdfilter.setSort(JDSearchFilter.SORT_ASC);
+					jdfilter.setSortName(JDSearchFilter.SORTNAME_PRICE);
+					break;
+				case 4: // 杩斿埄姣斺�擠ESC
+					jdfilter.setSort(JDSearchFilter.SORT_DESC);
+					jdfilter.setSortName(JDSearchFilter.SORTNAME_COMMISSION_SHARE);
+					break;
+				default:
+					break;
+				}
+			}
+
+			if (!StringUtil.isNullOrEmpty(filter)) {
+				JSONObject jsonfilter = JSONObject.fromObject(filter);
+				Boolean coupon = jsonfilter.optBoolean("coupon");
+				if (coupon != null && coupon) {
+					hasCoupon = true;
+					jdfilter.setHasCoupon(1); // 鏈夊埜
+				}
+
+				Boolean zy = jsonfilter.optBoolean("zy");
+				if (zy != null && zy) {
+					jdfilter.setIsZY(1); // 鑷惀
+				}
+
+				Boolean delivery = jsonfilter.optBoolean("delivery");
+				if (delivery != null && delivery) {
+					jdfilter.setDeliveryType(1); // 浜笢閰嶉��
+				}
+
+				String minPrice = jsonfilter.optString("minPrice");
+				if (!StringUtil.isNullOrEmpty(minPrice)) {
+					if (minPrice.contains(".")) {
+						minPrice = minPrice.replace(".", "-");
+						minPrice = minPrice.split("-")[0];
+					}
+					jdfilter.setFromPrice(Integer.parseInt(minPrice));
+				}
+
+				String maxPrice = jsonfilter.optString("maxPrice");
+				if (!StringUtil.isNullOrEmpty(maxPrice)) {
+					if (maxPrice.contains(".")) {
+						maxPrice = maxPrice.replace(".", "-");
+						maxPrice = maxPrice.split("-")[0];
+					}
+					jdfilter.setToPrice(Integer.parseInt(maxPrice));
+				}
+			}
+			result = JDUtil.searchByKey(jdfilter);
+
+		}
+
+		long count = 0;
+		JSONObject data = new JSONObject();
+		JSONArray array = new JSONArray();
+		if (result != null) {
+			PageEntity pageEntity = result.getPageEntity();
+			if (pageEntity != null) {
+				count = pageEntity.getTotalCount();
+			}
+
+			List<JDGoods> goodsList = result.getGoodsList();
+			if (goodsList != null && goodsList.size() > 0) {
+				Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+						.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+				GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+						acceptData.getVersion(),acceptData.getSystem());
+				for (JDGoods goods : goodsList) {
+					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO);
+					if (hasCoupon) {
+						if (goodsDetailVO.isHasCoupon()) {
+							array.add(gson.toJson(goodsDetailVO));
+						}
+					} else {
+						array.add(gson.toJson(goodsDetailVO));
+					}
+				}
+			}
+		}
+
+		data.put("count", count);
+		data.put("list", array);
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+
+	/**
+	 * 鎷煎澶�
+	 * 
+	 * @param kw
+	 * @param page
+	 * @param filter
+	 * @param order
+	 * @param startprice
+	 * @param endprice
+	 * @return
+	 */
+	private void searchPDDGoods(WXMPAcceptData acceptData, String key, Integer page, String filter, Integer order,
+			PrintWriter out) {
+		PDDSearchFilter pddfilter = new PDDSearchFilter();
+		pddfilter.setKw(SearchFilterUtil.filterSearchContent(key));
+		pddfilter.setPage(page);
+		pddfilter.setPageSize(Constant.PAGE_SIZE);
+
+		if (order != null) {
+			int sort = order.intValue();
+			switch (sort) {
+			case 1: // 閿�閲� desc
+				pddfilter.setSortType(6);
+				break;
+			case 2: // 浠锋牸鈥攄esc
+				pddfilter.setSortType(4);
+				break;
+			case 3: // 浠锋牸鈥攁sc
+				pddfilter.setSortType(3);
+				break;
+			case 4: // 杩斿埄姣斺�攄esc
+				pddfilter.setSortType(2);
+				break;
+			default: // 缁煎悎鎺掑簭
+				pddfilter.setSortType(0);
+				break;
+			}
+		}
+
+		if (!StringUtil.isNullOrEmpty(filter)) {
+			JSONObject jsonfilter = JSONObject.fromObject(filter);
+			Boolean coupon = jsonfilter.optBoolean("coupon");
+			if (coupon != null && coupon) {
+				pddfilter.setHasCoupon(true); // 鏈夊埜
+			}
+
+			Boolean brand = jsonfilter.optBoolean("brand");
+			if (brand != null && brand) {
+				pddfilter.setIsBrand(true); // 鏄惁鏄搧鐗�
+			}
+		}
+
+		int count = 0;
+		JSONObject data = new JSONObject();
+		JSONArray array = new JSONArray();
+
+		PDDGoodsResult result = null;
+		try {
+			result = PinDuoDuoApiUtil.searchGoods(pddfilter,"437032");
+		} catch (PDDApiException e) {
+			e.printStackTrace();
+		}
+		if (result != null) {
+			count = result.getTotalCount();
+			Gson gson = JsonUtil.getApiCommonGson();
+			List<PDDGoodsDetail> goodsList = result.getGoodsList();
+			if (goodsList != null && goodsList.size() > 0) {
+				GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
+						acceptData.getVersion(),acceptData.getSystem());
+
+				for (PDDGoodsDetail goods : goodsList) {
+					GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
+					array.add(gson.toJson(goodsDetailVO));
+				}
+			}
+		}
+
+		data.put("count", count);
+		data.put("list", array);
+		out.print(JsonUtil.loadTrueResult(data));
+	}
+}

--
Gitblit v1.8.0