From 2147d023563a7c9d05d97547c00d6b0162c0644c Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 09 十一月 2020 18:37:24 +0800 Subject: [PATCH] 刷单风险规则优化 --- fanli/src/main/java/com/yeshi/fanli/service/impl/lable/TaoKeGoodsServiceImpl.java | 114 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 94 insertions(+), 20 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/TaoKeGoodsServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/TaoKeGoodsServiceImpl.java index 13e3adf..7193d26 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/TaoKeGoodsServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/TaoKeGoodsServiceImpl.java @@ -9,6 +9,7 @@ import javax.annotation.Resource; +import com.yeshi.fanli.entity.SystemEnum; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.yeshi.utils.JsonUtil; @@ -16,20 +17,24 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.yeshi.fanli.dto.ConfigParamsDTO; 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.TaoBaoGoodsBriefExtra; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBriefExtra; import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; -import com.yeshi.fanli.entity.taobao.TaoBaoShopInfo; -import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; +import com.yeshi.common.entity.taobao.TaoBaoShopInfo; 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.order.config.HongBaoManageService; import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -38,7 +43,10 @@ public class TaoKeGoodsServiceImpl implements TaoKeGoodsService { @Resource - private HongBaoManageService manageService; + private HongBaoManageService hongBaoManageService; + + @Resource + private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; @Resource private TaoBaoShopService taoBaoShopService; @@ -61,7 +69,7 @@ @Override @Cacheable(value = "taoKeMaterialCache", key = "'getBrandsGoods-'+#materialId +'-'+#pageIndex") - public JSONObject getBrandsGoods(Integer materialId, int pageIndex, int pageSize) throws Exception { + public JSONObject getBrandsGoods(Integer materialId, int pageIndex, int pageSize, SystemEnum system) throws Exception { TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize); @@ -78,7 +86,7 @@ Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - BigDecimal proportion = manageService.getFanLiRate(); + BigDecimal proportion = hongBaoManageService.getFanLiRate(system); listGoods.parallelStream().forEach(taoBaoGoodsBrief -> { @@ -184,11 +192,11 @@ } @Override - @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiao-'+#sf") - public JSONObject searchWuLiao(SearchFilter sf) { + @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiao-'+#sf+'-'+system") + public JSONObject searchWuLiao(SearchFilter sf,SystemEnum system) { // 娣樺疂鐗╂枡鎺ュ彛鏌ヨ - TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf); + TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf,null,null); List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav(); if (result.getNavList() != null) @@ -205,7 +213,7 @@ int fh = sf.getHongbao(); boolean ft = sf.isTmall(); - BigDecimal proportion = manageService.getFanLiRate(); + BigDecimal proportion = hongBaoManageService.getFanLiRate(system); if (fq == 0 && fh == 0 && !ft) { if (result != null && result.getTaoBaoGoodsBriefs() != null) @@ -271,13 +279,79 @@ } - @Override - @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoList-'+#sf") - public List<TaoBaoGoodsBrief> searchWuLiaoList(SearchFilter sf) { + @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoV2-'+#sf+'-'+#platform+'-'+#version+'-'+#system") + public JSONObject searchWuLiaoV2(SearchFilter sf,String platform,String version,SystemEnum system) { // 娣樺疂鐗╂枡鎺ュ彛鏌ヨ - TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf); + TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf,null,null); + + List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav(); + if (result.getNavList() != null) + navList.addAll(result.getNavList()); + + Gson gson = new GsonBuilder().create(); + JSONObject data = new JSONObject(); + data.put("nav", gson.toJson(navList)); + + List<GoodsDetailVO> re = new ArrayList<GoodsDetailVO>(); + List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); + + int fq = sf.getQuan(); + int fh = sf.getHongbao(); + boolean ft = sf.isTmall(); + + ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(platform, version,system); + + if (fq == 0 && fh == 0 && !ft) { + if (result != null && result.getTaoBaoGoodsBriefs() != null) + for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) { + int count = bf.getBiz30day(); + + String startBiz30day = sf.getStartBiz30day(); + if (!StringUtil.isNullOrEmpty(startBiz30day)) { + int biz30day = Integer.parseInt(startBiz30day); + if (count < biz30day) { + continue; + } + } + + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(bf, paramsDTO); + re.add(goodsDetailVO); + } + } else { + if (taoBaoGoodsBriefs != null) + for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) { + + int count = taoBaoGoodsBrief.getBiz30day(); + String startBiz30day = sf.getStartBiz30day(); + if (!StringUtil.isNullOrEmpty(startBiz30day)) { + int biz30day = Integer.parseInt(startBiz30day); + if (count < biz30day) { + break; + } + } + GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO); + re.add(goodsDetailVO); + } + } + + Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) + .excludeFieldsWithoutExposeAnnotation().create(); + + data.put("result", gson2.toJson(re)); + data.put("count", result.getTaoBaoHead().getDocsfound()); + + return data; + } + + + + @Override + @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoList-'+#sf+'-'+system") + public List<TaoBaoGoodsBrief> searchWuLiaoList(SearchFilter sf,SystemEnum system) { + // 娣樺疂鐗╂枡鎺ュ彛鏌ヨ + TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf,null,null); if (result == null) return null; @@ -286,7 +360,7 @@ @Override public JSONObject listByWuLiao(int page, String key, String cateIds, String filterParams, String order, - String startprice, String endprice, String searchParam) { + String startprice, String endprice, String searchParam,SystemEnum system) { SearchFilter sf = new SearchFilter(); sf.setKey(key); @@ -397,7 +471,7 @@ } // 娣樺疂鐗╂枡鎺ュ彛鏌ヨ - TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf); + TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf,null,null); List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav(); if (result.getNavList() != null) @@ -414,7 +488,7 @@ int fh = sf.getHongbao(); boolean ft = sf.isTmall(); - BigDecimal proportion = manageService.getFanLiRate(); + BigDecimal proportion = hongBaoManageService.getFanLiRate(system); if (fq == 0 && fh == 0 && !ft) { if (result != null && result.getTaoBaoGoodsBriefs() != null) @@ -562,13 +636,13 @@ @Override public JSONObject listQualityGoods(List<QualityFactory> listQuality, List<TaoBaoGoodsBrief> searchWuLiaoList, - Map<String, String> map) { + Map<String, String> map,SystemEnum system) { JSONArray array = new JSONArray(); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); - BigDecimal proportion = manageService.getFanLiRate(); + BigDecimal proportion = hongBaoManageService.getFanLiRate(system); /* 閬嶅巻鍒楄〃鏁版嵁 */ for (QualityFactory selectionGoods : listQuality) { -- Gitblit v1.8.0