From a6f34b99ee20e528b766c8ed5a61bd9c5aa0e7ae Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期六, 16 十一月 2019 18:10:33 +0800 Subject: [PATCH] 淘宝相似商品推荐接口优化,根据商品ID搜索商品基本信息优化 --- fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java | 80 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 80 insertions(+), 0 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java index e10a3ab..bb555f2 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java @@ -17,6 +17,7 @@ import com.yeshi.fanli.dao.mybatis.lable.LabelGoodsMapper; import com.yeshi.fanli.dao.mybatis.lable.QualityFactoryMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoGoodsBriefMapper; +import com.yeshi.fanli.dto.ConfigParamsDTO; import com.yeshi.fanli.entity.bus.lable.Label; import com.yeshi.fanli.entity.bus.lable.LabelGoods; import com.yeshi.fanli.entity.bus.lable.QualityFactory; @@ -24,11 +25,16 @@ import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.lable.LabelService; import com.yeshi.fanli.service.inter.lable.QualityGoodsService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService; +import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; 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.vo.goods.GoodsDetailVO; import net.sf.json.JSONArray; @@ -55,6 +61,13 @@ @Resource private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService; + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; + @Override @Cacheable(value = "qualityCache", key = "'listQueryByCouponAmount-'+#start+'-'+#key+'-'+#endAmount+'-'+#startPropor") @@ -172,9 +185,16 @@ @Cacheable(value = "qualityCache", key = "'listQueryByClassId-'+#start+'-'+#cid") public List<QualityFactory> listQueryByClassId(long start, int count, Long cid) { List<QualityFactory> list = qualityFactoryMapper.listQuery(start, count, null, cid, null, null, 1); + + if (list == null) { + list = new ArrayList<QualityFactory>(); + } + List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); for (QualityFactory qf : list) goodsList.add(qf.getTaoBaoGoodsBrief()); + //杩囨护鍟嗗搧淇℃伅 + goodsList=taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(goodsList); goodsList = daTaoKeGoodsDetailService.filterTaoBaoGoods(goodsList);// 杩囨护澶ф窐瀹㈡爣棰� for (int i = 0; i < list.size(); i++) { if (i < goodsList.size()) @@ -226,6 +246,7 @@ return qualityFactoryMapper.listRecommendToIndex(start, count, proportion, commision, couponAmount, tkRate, couponRatio); } + @Override public long countRecommend(Double proportion, Integer commision, Integer couponAmount, double tkRate, @@ -310,7 +331,66 @@ return array; } + + + + /** + * 棣栭〉鏈�搴曢儴@鍟嗗搧淇℃伅娴� + */ + @Override + @Cacheable(value = "qualityCache", key = "'getRecommendToIndexV2-'+#start") + public JSONArray getRecommendToIndexV2(long start, int count) { + + // 杩斿埄閲戦2鍏冧互涓婏紱 + Integer commision = 2; + // 浼樻儬鍒搁潰棰濋珮浜�5鍏冧互涓� + Integer couponAmount = 5; + // 浣i噾姣斾緥楂樼殑:5%浠ヤ笂锛� + double tkRate = 5.0; + // 浼樻儬鐜囬珮浜�10%浠ヤ笂锛堜紭鎯犵巼=浼樻儬鍒搁潰棰�/鍟嗗搧鍦ㄥ敭浠�*100%锛� + Double couponRatio = 10.0; + + BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); + Double pop = 50.0; + if (fanLiRate != null) { + pop = Double.parseDouble(fanLiRate.toString()); + } + + List<QualityFactory> listQuery = listRecommend(start, count, pop, commision, couponAmount, tkRate, couponRatio); + + if (listQuery == null || listQuery.size() == 0) { + return null; + } + + JSONArray array = new JSONArray(); + Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); + // 閬嶅巻鍒楄〃鏁版嵁 + // + List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); + for (QualityFactory quality : listQuery) { + if (quality.getTaoBaoGoodsBrief() != null) + goodsList.add(quality.getTaoBaoGoodsBrief()); + } + + try { + goodsList = daTaoKeGoodsDetailService.filterTaoBaoGoods(goodsList); + } catch (Exception e) { + } + + BigDecimal shareRate = hongBaoManageService.getShareRate(); + ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE); + + for (TaoBaoGoodsBrief taoBaoGoodsBrief : goodsList) { + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief,paramsDTO); + array.add(gson.toJson(detailVO)); + } + + return array; + } + + + @Override @Cacheable(value = "qualityCache", key = "'countRecommendToIndex-'+#proportion") public long countRecommendToIndex(String proportion) { -- Gitblit v1.8.0