From 744594ef1a2f530fc3e86ea9dc48b62247f79420 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 19 五月 2020 17:13:23 +0800 Subject: [PATCH] 饿了么绘图,添加口碑 --- fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java | 262 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 255 insertions(+), 7 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java index 12d9bdc..2bbc453 100644 --- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java +++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java @@ -12,18 +12,40 @@ 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.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; +import com.yeshi.fanli.entity.bus.clazz.GoodsSubClass; +import com.yeshi.fanli.entity.bus.clazz.TaoBaoClass; +import com.yeshi.fanli.entity.bus.lable.QualityFactory; +import com.yeshi.fanli.entity.taobao.SearchFilter; +import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.clazz.GoodsSubClassLabelService; import com.yeshi.fanli.service.inter.goods.GoodsClassService; +import com.yeshi.fanli.service.inter.goods.GoodsSubClassService; +import com.yeshi.fanli.service.inter.goods.TaoBaoClassService; +import com.yeshi.fanli.service.inter.lable.LabelClassService; +import com.yeshi.fanli.service.inter.lable.QualityGoodsService; +import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService; +import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.fanli.vo.goods.GoodsSubClassLabelVO; +import net.sf.json.JSONArray; import net.sf.json.JSONObject; @Controller @RequestMapping("api/v2/class") public class GoodsClassControllerV2 { - @Resource private GoodsClassService goodsClassService; @@ -31,19 +53,40 @@ @Resource private GoodsSubClassLabelService goodsSubClassLabelService; + @Resource + private GoodsSubClassService goodsSubClassService; @Resource(name = "taskExecutor") private TaskExecutor executor; + @Resource + private QualityGoodsService qualityGoodsService; + + @Resource + private TaoKeGoodsService taoKeGoodsService; + + @Resource + private TaoBaoClassService taoBaoClassService; + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; + + @Resource + private LabelClassService labelClassService; + + @Resource + private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; + /** * 涓�绾у垎绫� + * * @param acceptData * @param out */ @RequestMapping(value = "listClass", method = RequestMethod.POST) public void listClass(AcceptData acceptData, PrintWriter out) { - List<GoodsClass> list =goodsClassService.getEffectiveClassCache(); - if (list == null ) { + List<GoodsClass> list = goodsClassService.getEffectiveClassCache(); + if (list == null) { list = new ArrayList<GoodsClass>(); } @@ -61,21 +104,226 @@ */ @RequestMapping(value = "listSubMap", method = RequestMethod.POST) public void listSubMap(AcceptData acceptData, Long cid, PrintWriter out) { - if(cid == null) { + if (cid == null) { out.print(JsonUtil.loadFalseResult("鍙傛暟涓嶈兘涓虹┖")); return; } - + List<GoodsSubClassLabelVO> list = goodsSubClassLabelService.listSubMapCache(cid); if (list == null) { list = new ArrayList<GoodsSubClassLabelVO>(); } - + JSONObject data = new JSONObject(); data.put("list", JsonUtil.getApiCommonGson().toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } + /** + * 鍒嗙被涓嬬殑绮鹃�夊晢鍝� + */ + @RequestMapping("getClassGoods") + public void getClassGoods(AcceptData acceptData, long gcid, int page, PrintWriter out) { + GoodsClass goodsClass = goodsClassService.getGoodsClassCache(gcid); + if (goodsClass == null) { + out.print(JsonUtil.loadFalseResult("涓嶅瓨鍦ㄨ鍒嗙被")); + return; + } - + if (page < 1) + page = 1; + + int pageSize = Constant.PAGE_SIZE; + + List<QualityFactory> listQuery = qualityGoodsService.listQueryByClassId((page - 1) * pageSize, pageSize, gcid); + // 鎬绘潯鏁� + long counttotal = 5000; + + List<TaoBaoGoodsBrief> updateGoodsList = new ArrayList<>(); + + // 绮鹃�夊簱鏁版嵁灏忎簬10鏃讹紝缃戠粶杩涜鏌ヨ + if (listQuery == null || listQuery.size() < 10) { + long count = qualityGoodsService.countQueryClassId(gcid); + int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + page = page - totalPage; + if (page < 1) + page = 1; + + // 娣樺疂绫荤洰id + String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(gcid); + + SearchFilter filter = null; + + String searchParam = goodsClass.getSearchParam(); + if (!StringUtil.isNullOrEmpty(searchParam)) { + Gson gs = new Gson(); + filter = gs.fromJson(searchParam, SearchFilter.class); + } else { + filter = new SearchFilter(); + } + + filter.setMaterialId("6707"); + filter.setPage(page); + filter.setPageSize(pageSize); + filter.setCateIds(taoBaoCatIds); + + JSONObject result = taoKeGoodsService.searchWuLiaoV2(filter,acceptData.getPlatform(),acceptData.getVersion()); + out.print(JsonUtil.loadTrueResult(result)); + return; + } + + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); + + ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion()); + + // 绮鹃�夊簱鏁版嵁 + JSONArray array = new JSONArray(); + for (QualityFactory selectionGoods : listQuery) { + TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief(); + if (taoBaoGoodsBrief == null) { + continue; + } + updateGoodsList.add(taoBaoGoodsBrief); + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO); + array.add(gson.toJson(goodsDetailVO)); + } + + JSONObject data = new JSONObject(); + data.put("nav", null); + data.put("count", counttotal); + data.put("result", array); + out.print(JsonUtil.loadTrueResult(data)); + try { + taoBaoGoodsUpdateService.addUpdateQueueAsync(updateGoodsList); + } catch (Exception e) { + } + } + + /** + * 鑾峰彇浜岀骇鍒嗙被鍟嗗搧 + * + * @param acceptData + * @param page + * @param scid + * @param filter + * @param order + * 鏉ユ簮锛氥�愭帹鑽愶細0 | 缁煎悎锛�4 銆佺患鍚堝彧鐪嬫湁鍒� 1 銆佺患鍚堝彧鐪嬪ぉ鐚� 1 | 浠锋牸锛氫綆鍒伴珮3 楂樺埌浣�2 | 閿�閲忥細1銆� + * 鎺掑簭鍊硷細銆愰攢閲忕敱楂樺埌浣�: 1 锛� 閿�閲忕敱浣庡埌楂� 5锛� 浠锋牸浠庨珮鍒颁綆: 2 锛� 浠锋牸浠庝綆鍒伴珮:3 锛� 鎺ㄥ箍閲忛珮鍒颁綆:4 锛� + * 鍏朵粬榛樿锛� 閿�閲忕敱楂樺埌浣庛�� + * + * @param startprice + * 璧峰浠锋牸 + * @param endprice + * 缁撴潫浠锋牸 + * @param fastFilter + * fastFilter 鏈夊埜 [{"type":"quantype"}] 澶╃尗鍟嗗搧 [{"type":"shoptype"}] + * @param totalSales + * 閿�閲忎互涓� + * @param out + */ + @RequestMapping(value = "getSubGoods", method = RequestMethod.POST) + public void getSecondClassGoods(AcceptData acceptData, int page, long scid, String filter, String order, + String startprice, String endprice, String fastFilter, Integer totalSales, PrintWriter out) { + + try { + GoodsSubClass goodsSubClass = goodsSubClassService.getSubClassByPrimaryKeyCache(scid); + if (goodsSubClass == null) { + out.print(JsonUtil.loadFalseResult("涓嶅瓨鍦ㄨ鍒嗙被")); + return; + } + + // 缁熻鐐瑰嚮閲� + if (page == 1) { + goodsSubClassService.countClick(acceptData, goodsSubClass); + } + + SearchFilter sf = new SearchFilter(); + String catesId = ""; + // 鏌ヨ鏄惁鏈夋窐瀹濆垎绫籌D + List<TaoBaoClass> tbClassList = taoBaoClassService.listBySystemSubCid(0, 10, goodsSubClass.getId()); + if (tbClassList != null && tbClassList.size() > 0) + for (TaoBaoClass tbc : tbClassList) { + catesId += tbc.getCategoryId() + ","; + } + if (catesId.endsWith(",")) + catesId = catesId.substring(0, catesId.length() - 1); + sf.setCateIds(catesId); + + // 鎸夊垎绫诲悕绉版悳绱� + if (!StringUtil.isNullOrEmpty(catesId)) { + String searchParam = goodsSubClass.getSearchJson(); + Gson gs = new Gson(); + SearchFilter searchfilter = gs.fromJson(searchParam, SearchFilter.class); + searchfilter.setCateIds(catesId); + searchfilter.setPage(page); + searchfilter.setPageSize(20); + if (Integer.parseInt(order) == 0) + searchfilter.setMaterialId("6707"); + taoKeGoodsService.setSearchFilter(searchfilter, filter, order, startprice, endprice, fastFilter, + totalSales); + TaoBaoSearchResult searchResult = TaoKeApiUtil.searchWuLiao(searchfilter); + long count = searchResult.getPageEntity().getTotalCount(); + + List<TaoBaoGoodsBrief> resultGoodsList = searchResult.getTaoBaoGoodsBriefs(); + // 鏌ヨ鏄惁瓒呰繃浜嗘渶澶х殑鍟嗗搧鏁� + if ((resultGoodsList == null || resultGoodsList.size() < 20) + && !StringUtil.isNullOrEmpty(goodsSubClass.getKey())) { + if (resultGoodsList == null) + resultGoodsList = new ArrayList<>(); + + // 闇�瑕佹牴鎹叧閿瓧鏌ヨ + searchfilter.setCateIds(null); + searchfilter.setPage((int) (count % 20 == 0 ? count / 20 - 1 : count / 20)); + searchfilter.setPageSize(20); + searchfilter.setKey(goodsSubClass.getKey()); + TaoBaoSearchResult searchResult2 = TaoKeApiUtil.searchWuLiao(searchfilter); + if (searchResult2 != null) { + List<TaoBaoGoodsBrief> resultListTemp = searchResult2.getTaoBaoGoodsBriefs(); + if (resultListTemp != null) + resultGoodsList.addAll(resultListTemp); + } + } + + Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().create(); + + JSONArray array = new JSONArray(); + if (resultGoodsList != null) { + ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(), + acceptData.getVersion()); + for (TaoBaoGoodsBrief goods : resultGoodsList) { + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); + array.add(gson2.toJson(goodsDetailVO)); + } + } + JSONObject result = new JSONObject(); + result.put("result", array); + result.put("count", result.optLong("count") + count); + out.print(JsonUtil.loadTrueResult(result)); + return; + } else { + String searchParam = goodsSubClass.getSearchJson(); + Gson gs = new Gson(); + SearchFilter searchfilter = gs.fromJson(searchParam, SearchFilter.class); + searchfilter.setCateIds(catesId); + searchfilter.setPage(page); + searchfilter.setPageSize(20); + if (Integer.parseInt(order) == 0) + searchfilter.setMaterialId("6707"); + searchfilter.setKey(goodsSubClass.getKey()); + taoKeGoodsService.setSearchFilter(searchfilter, filter, order, startprice, endprice, fastFilter, + totalSales); + + JSONObject result = taoKeGoodsService.searchWuLiaoV2(searchfilter,acceptData.getPlatform(),acceptData.getVersion()); + out.print(JsonUtil.loadTrueResult(result)); + return; + } + } catch (Exception e) { + out.print(JsonUtil.loadFalseResult("鏁版嵁寮傚父")); + LogHelper.errorDetailInfo(e); + } + } + } -- Gitblit v1.8.0