From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 25 二月 2025 16:41:22 +0800
Subject: [PATCH] 淘宝转链接口更新

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/lable/QualityGoodsServiceImpl.java |  936 ++++++++++++++++++++++++++++------------------------------
 1 files changed, 453 insertions(+), 483 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 bb555f2..6de4a8c 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
@@ -1,483 +1,453 @@
-package com.yeshi.fanli.service.impl.lable;
-
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.stereotype.Service;
-import org.yeshi.utils.JsonUtil;
-import org.yeshi.utils.taobao.TbImgUtil;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.yeshi.fanli.dao.mybatis.TaoBaoClassRelationMapper;
-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;
-import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
-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;
-
-@Service
-public class QualityGoodsServiceImpl implements QualityGoodsService {
-
-	@Resource
-	private RedisManager redisManager;
-	@Resource
-	private QualityFactoryMapper qualityFactoryMapper;
-	@Resource
-	private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
-	@Resource
-	private LabelGoodsMapper labelGoodsMapper;
-	@Resource
-	private LabelService labelService;
-	@Resource
-	private TaoBaoGoodsBriefMapper taoBaoGoodsBriefMapper;
-	@Resource
-	private TaoBaoUnionConfigService taoBaoUnionConfigService;
-
-	@Resource
-	private TaoBaoClassRelationMapper taoBaoClassRelationMapper;
-
-	@Resource
-	private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
-	
-	@Resource
-	private HongBaoManageService hongBaoManageService;
-	
-	@Resource
-	private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
-	
-
-	@Override
-	@Cacheable(value = "qualityCache", key = "'listQueryByCouponAmount-'+#start+'-'+#key+'-'+#endAmount+'-'+#startPropor")
-	public List<QualityFactory> listQueryByCouponAmount(long start, int count, Integer key, Integer endAmount,
-			Integer startPropor) {
-		return qualityFactoryMapper.listQueryByCouponAmount(start, count, key, endAmount, startPropor);
-	}
-
-	@Override
-	@Cacheable(value = "qualityCache", key = "'countQueryByCouponAmount-'+#key+'-'+#endAmount+'-'+#startPropor")
-	public long countQueryByCouponAmount(Integer key, Integer endAmount, Integer startPropor) {
-		return qualityFactoryMapper.countQueryByCouponAmount(key, endAmount, startPropor);
-	}
-
-	@Override
-	@Cacheable(value = "qualityCache", key = "'listQueryByFlashSale-'+#start")
-	public List<QualityFactory> listQueryByFlashSale(long start, int count) {
-		return qualityFactoryMapper.listQueryByFlashSale(start, count);
-	}
-
-	@Override
-	// @Cacheable(value = "qualityCache",key="'countQueryByFlashSale-'")
-	public long countQueryByFlashSale() {
-		return qualityFactoryMapper.countQueryByFlashSale();
-	}
-
-	@Override
-	public List<QualityFactory> listFlashSaleRandGoods() {
-		return qualityFactoryMapper.listFlashSaleRandGoods();
-	}
-
-	/**
-	 * 灏忛噾棰濇煡璇細9.9/19.9/29.9/49.9
-	 * 
-	 * @param start
-	 * @param count
-	 * @param key
-	 * @param classId
-	 *            鍒嗙被id
-	 * @param labId
-	 *            鏍囩id
-	 * @return
-	 */
-	@Override
-	@Cacheable(value = "quality9K9Cache", key = "'get9k9ClassGoods-'+#start+'-'+#biz30day+'-'+#zkPrice+'-'+#minQuanPrice+'-'+#maxQuanPrice+'-'+#cids")
-	public List<QualityFactory> get9k9ClassGoods(long start, int count, Integer biz30day, BigDecimal zkPrice,
-			BigDecimal minQuanPrice, BigDecimal maxQuanPrice, String cids) {
-		return qualityFactoryMapper.get9k9ClassGoods(start, count, biz30day, zkPrice, minQuanPrice, maxQuanPrice, cids);
-	}
-
-	/**
-	 * 瀵瑰簲灏忛噾棰濇煡璇細9.9/19.9/29.9/49.9
-	 */
-	@Override
-	@Cacheable(value = "quality9K9Cache", key = "'count9k9ClassGoods-'+#biz30day+'-'+#zkPrice+'-'+#minQuanPrice+'-'+#maxQuanPrice+'-'+#cids")
-	public long count9k9ClassGoods(Integer biz30day, BigDecimal zkPrice, BigDecimal minQuanPrice,
-			BigDecimal maxQuanPrice, String cids) {
-		return qualityFactoryMapper.count9k9ClassGoods(biz30day, zkPrice, minQuanPrice, maxQuanPrice, cids);
-	}
-
-	/**
-	 * 鏌ヨ鏍囩
-	 * 
-	 * @param start
-	 * @param count
-	 * @param key
-	 * @param labId
-	 * @return
-	 */
-	public List<QualityFactory> listQueryByKeyAndlabIDs(long start, int count, String key, List<Long> listId,
-			Integer sort, Long systemCid, Integer hasQuan, Integer userType, Integer biz30day, Integer startprice,
-			Integer endprice) {
-		return qualityFactoryMapper.listQueryByKeyAndlabIDs(start, count, key, listId, sort, systemCid, hasQuan,
-				userType, biz30day, startprice, endprice);
-	}
-
-	public long countQueryKeyAndlabIDs(String key, List<Long> listId, Long systemCid, Integer hasQuan, Integer userType,
-			Integer biz30day, Integer startprice, Integer endprice) {
-		return qualityFactoryMapper.countQueryKeyAndlabIDs(key, listId, systemCid, hasQuan, userType, biz30day,
-				startprice, endprice);
-	}
-
-	/**
-	 * 鍏抽敭璇嶆悳绱�
-	 * 
-	 * @param start
-	 * @param count
-	 * @param key
-	 * @param labId
-	 * @return
-	 */
-	@Override
-	public List<QualityFactory> listQueryByKey(long start, int count, String key, Integer sort, Long systemCid,
-			Integer hasQuan, Integer userType, Integer biz30day, Integer startprice, Integer endprice) {
-		return qualityFactoryMapper.listQueryByKey(start, count, key, sort, systemCid, hasQuan, userType, biz30day,
-				startprice, endprice);
-	}
-
-	public long countQueryByKey(String key, Long systemCid, Integer hasQuan, Integer userType, Integer biz30day,
-			Integer startprice, Integer endprice) {
-
-		return qualityFactoryMapper.countQueryByKey(key, systemCid, hasQuan, userType, biz30day, startprice, endprice);
-	}
-
-	/**
-	 * 涓�绾у垎绫绘煡璇㈢簿閫夊簱鏁版嵁
-	 * 
-	 * @param start
-	 * @param count
-	 * @param key
-	 * @param labId
-	 * @return
-	 */
-	@Override
-	@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())
-				list.get(i).setTaoBaoGoodsBrief(goodsList.get(i));
-
-		}
-		return list;
-	}
-
-	@Override
-	@Cacheable(value = "qualityCache", key = "'countQueryClassId-'+#cid")
-	public long countQueryClassId(Long cid) {
-		return qualityFactoryMapper.countQuery(null, cid, null, null, 1);
-	}
-
-	@Override
-	@Cacheable(value = "qualityCache", key = "'listQueryByRebateAmount-'+#start+'-'+#proportion+'-'+#endAmount+'-'+#endAmount+'-'+#tkRate")
-	public List<QualityFactory> listQueryByRebateAmount(long start, int count, String proportion, Integer startAmount,
-			Integer endAmount, double tkRate) {
-		return qualityFactoryMapper.listQueryByRebateAmount(start, count, proportion, startAmount, endAmount, tkRate);
-	}
-
-	@Override
-	@Cacheable(value = "qualityCache", key = "'countQueryByRebateAmount-'+#proportion+'-'+#endAmount+'-'+#endAmount+'-'+#tkRate")
-	public long countQueryByRebateAmount(String proportion, Integer startAmount, Integer endAmount, double tkRate) {
-		return qualityFactoryMapper.countQueryByRebateAmount(proportion, startAmount, endAmount, tkRate);
-	}
-
-	@Override
-	// @Cacheable(value = "qualityCache",key="'queryToCouponColumn-'+#start")
-	@Cacheable(value = "taoBaoCouponCache", key = "'queryToCouponColumn'+#start")
-	public List<QualityFactory> queryToCouponColumn(long start, int count) {
-		return qualityFactoryMapper.queryToCouponColumn(start, count);
-	}
-
-	@Override
-	// @Cacheable(value = "qualityCache",key="'countQueryToCouponColumn'")
-	@Cacheable(value = "taoBaoCouponCache", key = "'countQueryToCouponColumn'")
-	public long countQueryToCouponColumn() {
-		return qualityFactoryMapper.countQueryToCouponColumn();
-	}
-
-	/**
-	 * 棣栭〉鏈�搴曢儴@鍟嗗搧淇℃伅娴�
-	 */
-	@Override
-	public List<QualityFactory> listRecommend(long start, int count, Double proportion, Integer commision,
-			Integer couponAmount, double tkRate, Double couponRatio) {
-		return qualityFactoryMapper.listRecommendToIndex(start, count, proportion, commision, couponAmount, tkRate,
-				couponRatio);
-	}
-	
-
-	@Override
-	public long countRecommend(Double proportion, Integer commision, Integer couponAmount, double tkRate,
-			Double couponRatio) {
-		return qualityFactoryMapper.countRecommendToIndex(proportion, commision, couponAmount, tkRate, couponRatio);
-	}
-
-	@Override
-	public List<QualityFactory> listRecommendBykey(long start, int count, String key, Integer hasQuan, Integer userType,
-			Double startprice, Double endprice, Double startTkRate, Double endTkRate, Integer sort) {
-		return qualityFactoryMapper.listRecommendBykey(start, count, key, hasQuan, userType, startprice, endprice,
-				startTkRate, endTkRate, sort);
-	}
-
-	@Override
-	public long countRecommendBykey(String key, Integer hasQuan, Integer userType, Double startprice, Double endprice,
-			Double startTkRate, Double endTkRate) {
-		return qualityFactoryMapper.countRecommendBykey(key, hasQuan, userType, startprice, endprice, startTkRate,
-				endTkRate);
-	}
-
-	/**
-	 * 棣栭〉鏈�搴曢儴@鍟嗗搧淇℃伅娴�
-	 */
-	@Override
-	@Cacheable(value = "qualityCache", key = "'listQueryToRecommend-'+#start+'-'+#proportion")
-	public JSONArray getRecommendToIndex(long start, int count, String proportion) {
-
-		// 杩斿埄閲戦2鍏冧互涓婏紱
-		Integer commision = 2;
-		// 浼樻儬鍒搁潰棰濋珮浜�5鍏冧互涓�
-		Integer couponAmount = 5;
-		// 浣i噾姣斾緥楂樼殑:5%浠ヤ笂锛�
-		double tkRate = 5.0;
-		// 浼樻儬鐜囬珮浜�10%浠ヤ笂锛堜紭鎯犵巼=浼樻儬鍒搁潰棰�/鍟嗗搧鍦ㄥ敭浠�*100%锛�
-		Double couponRatio = 10.0;
-
-		Double pop = 50.0;
-		if (!StringUtil.isNullOrEmpty(proportion)) {
-			pop = Double.parseDouble(proportion);
-		}
-
-		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) {
-		}
-
-		for (TaoBaoGoodsBrief taoBaoGoodsBrief : goodsList) {
-			int biz30day = taoBaoGoodsBrief.getBiz30day();
-			if (biz30day >= 10000) {
-				double sales = biz30day;
-				String salesCountMidea = String.format("%.1f", sales / 10000);
-				taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
-			} else {
-				taoBaoGoodsBrief.setSalesCount(biz30day + "");
-			}
-
-			// 鏀瑰彉鍥剧墖灏哄
-			String pictUrl = taoBaoGoodsBrief.getPictUrl();
-			if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
-				taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
-			}
-
-			array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, null)));
-		}
-
-		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) {
-
-		// 杩斿埄閲戦2鍏冧互涓婏紱
-		Integer commision = 2;
-		// 浼樻儬鍒搁潰棰濋珮浜�5鍏冧互涓�
-		Integer couponAmount = 5;
-		// 浣i噾姣斾緥楂樼殑:5%浠ヤ笂锛�
-		double tkRate = 5.0;
-		// 浼樻儬鐜囬珮浜�10%浠ヤ笂锛堜紭鎯犵巼=浼樻儬鍒搁潰棰�/鍟嗗搧鍦ㄥ敭浠�*100%锛�
-		Double couponRatio = 10.0;
-
-		Double pop = 50.0;
-		if (!StringUtil.isNullOrEmpty(proportion)) {
-			pop = Double.parseDouble(proportion);
-		}
-
-		return countRecommend(pop, commision, couponAmount, tkRate, couponRatio);
-	}
-
-	@Override
-	public List<QualityFactory> recommendByAuctionId(Long auctionId) {
-
-		List<Long> list = new ArrayList<Long>();
-		list.add(auctionId);
-		List<QualityFactory> listTaoBaoGoods = qualityFactoryMapper.listQueryByAuctionId(list);
-
-		if (listTaoBaoGoods == null || listTaoBaoGoods.size() == 0) {
-			return null;
-		}
-
-		QualityFactory qualityFactory = listTaoBaoGoods.get(0);
-		TaoBaoGoodsBrief goodsBrief = qualityFactory.getTaoBaoGoodsBrief();
-		if (goodsBrief == null) {
-			return null;
-		}
-
-		List<LabelGoods> listLab = labelGoodsMapper.queryByGoodsId(0, 200, goodsBrief.getId());
-		if (listLab == null || listLab.size() == 0) {
-			return null;
-		}
-
-		// 鏍囩id
-		List<Long> listId = new ArrayList<Long>();
-		for (LabelGoods labelGoods : listLab) {
-			Label label = labelGoods.getLabel();
-			if (label != null) {
-				listId.add(label.getId());
-			}
-		}
-
-		if (listId.size() == 0) {
-			return null;
-		}
-
-		return qualityFactoryMapper.listQueryBylabIDs(0, 10, listId, goodsBrief.getId(), qualityFactory.getSystemCid());
-	}
-
-	@Override
-	public List<QualityFactory> listFreeGoods(long start, int count) {
-		return qualityFactoryMapper.listFreeGoods(start, count);
-	}
-
-	@Override
-	public long countFreeGoods() {
-		return qualityFactoryMapper.countFreeGoods();
-	}
-
-	@Override
-	public List<QualityFactory> listByShopId(long start, int count, Long shopId) {
-		return qualityFactoryMapper.listByShopId(start, count, shopId);
-	}
-
-	@Override
-	public long countByShopId(Long shopId) {
-		return qualityFactoryMapper.countByShopId(shopId);
-	}
-
-	@Override
-	public List<QualityFactory> listQueryEverydayRob(long start, int count, BigDecimal zkPrice, BigDecimal minQuanPrice,
-			BigDecimal maxQuanPrice) {
-		return qualityFactoryMapper.listQueryEverydayRob(start, count, zkPrice, minQuanPrice, maxQuanPrice);
-	}
-
-	@Override
-	public long countQueryEverydayRob(BigDecimal zkPrice, BigDecimal minQuanPrice, BigDecimal maxQuanPrice) {
-		return qualityFactoryMapper.countQueryEverydayRob(zkPrice, minQuanPrice, maxQuanPrice);
-	}
-}
+package com.yeshi.fanli.service.impl.lable;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+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;
+import org.yeshi.utils.taobao.TbImgUtil;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.yeshi.fanli.dao.mybatis.lable.LabelGoodsMapper;
+import com.yeshi.fanli.dao.mybatis.lable.QualityFactoryMapper;
+import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
+import com.yeshi.fanli.entity.bus.lable.Label;
+import com.yeshi.fanli.entity.bus.lable.LabelGoods;
+import com.yeshi.fanli.entity.bus.lable.QualityFactory;
+import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
+import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
+import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
+import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service;
+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;
+
+@Service
+public class QualityGoodsServiceImpl implements QualityGoodsService {
+
+	@Resource
+	private QualityFactoryMapper qualityFactoryMapper;
+
+	@Resource
+	private LabelGoodsMapper labelGoodsMapper;
+
+	@Resource
+	private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
+
+	@Resource
+	private HongBaoManageService hongBaoManageService;
+	
+	@Resource
+	private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
+
+	@Resource
+	private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'listQueryByCouponAmount-'+#start+'-'+#key+'-'+#endAmount+'-'+#startPropor")
+	public List<QualityFactory> listQueryByCouponAmount(long start, int count, Integer key, Integer endAmount,
+			Integer startPropor) {
+		return qualityFactoryMapper.listQueryByCouponAmount(start, count, key, endAmount, startPropor);
+	}
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'countQueryByCouponAmount-'+#key+'-'+#endAmount+'-'+#startPropor")
+	public long countQueryByCouponAmount(Integer key, Integer endAmount, Integer startPropor) {
+		return qualityFactoryMapper.countQueryByCouponAmount(key, endAmount, startPropor);
+	}
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'listQueryByFlashSale-'+#start")
+	public List<QualityFactory> listQueryByFlashSale(long start, int count) {
+		return qualityFactoryMapper.listQueryByFlashSale(start, count);
+	}
+
+	@Override
+	// @Cacheable(value = "qualityCache",key="'countQueryByFlashSale-'")
+	public long countQueryByFlashSale() {
+		return qualityFactoryMapper.countQueryByFlashSale();
+	}
+
+	@Override
+	public List<QualityFactory> listFlashSaleRandGoods() {
+		return qualityFactoryMapper.listFlashSaleRandGoods();
+	}
+
+	/**
+	 * 灏忛噾棰濇煡璇細9.9/19.9/29.9/49.9
+	 * 
+	 * @param start
+	 * @param count
+	 *            鏍囩id
+	 * @return
+	 */
+	@Override
+	@Cacheable(value = "quality9K9Cache", key = "'get9k9ClassGoods-'+#start+'-'+#biz30day+'-'+#zkPrice+'-'+#minQuanPrice+'-'+#maxQuanPrice+'-'+#cids")
+	public List<QualityFactory> get9k9ClassGoods(long start, int count, Integer biz30day, BigDecimal zkPrice,
+			BigDecimal minQuanPrice, BigDecimal maxQuanPrice, String cids) {
+		return qualityFactoryMapper.get9k9ClassGoods(start, count, biz30day, zkPrice, minQuanPrice, maxQuanPrice, cids);
+	}
+
+	/**
+	 * 瀵瑰簲灏忛噾棰濇煡璇細9.9/19.9/29.9/49.9
+	 */
+	@Override
+	@Cacheable(value = "quality9K9Cache", key = "'count9k9ClassGoods-'+#biz30day+'-'+#zkPrice+'-'+#minQuanPrice+'-'+#maxQuanPrice+'-'+#cids")
+	public long count9k9ClassGoods(Integer biz30day, BigDecimal zkPrice, BigDecimal minQuanPrice,
+			BigDecimal maxQuanPrice, String cids) {
+		return qualityFactoryMapper.count9k9ClassGoods(biz30day, zkPrice, minQuanPrice, maxQuanPrice, cids);
+	}
+
+	/**
+	 * 鏌ヨ鏍囩
+	 * 
+	 * @param start
+	 * @param count
+	 * @param key
+	 * @return
+	 */
+	public List<QualityFactory> listQueryByKeyAndlabIDs(long start, int count, String key, List<Long> listId,
+			Integer sort, Long systemCid, Integer hasQuan, Integer userType, Integer biz30day, Integer startprice,
+			Integer endprice) {
+		return qualityFactoryMapper.listQueryByKeyAndlabIDs(start, count, key, listId, sort, systemCid, hasQuan,
+				userType, biz30day, startprice, endprice);
+	}
+
+	public long countQueryKeyAndlabIDs(String key, List<Long> listId, Long systemCid, Integer hasQuan, Integer userType,
+			Integer biz30day, Integer startprice, Integer endprice) {
+		return qualityFactoryMapper.countQueryKeyAndlabIDs(key, listId, systemCid, hasQuan, userType, biz30day,
+				startprice, endprice);
+	}
+
+	/**
+	 * 鍏抽敭璇嶆悳绱�
+	 * 
+	 * @param start
+	 * @param count
+	 * @param key
+	 * @return
+	 */
+	@Override
+	public List<QualityFactory> listQueryByKey(long start, int count, String key, Integer sort, Long systemCid,
+			Integer hasQuan, Integer userType, Integer biz30day, Integer startprice, Integer endprice) {
+		return qualityFactoryMapper.listQueryByKey(start, count, key, sort, systemCid, hasQuan, userType, biz30day,
+				startprice, endprice);
+	}
+
+	public long countQueryByKey(String key, Long systemCid, Integer hasQuan, Integer userType, Integer biz30day,
+			Integer startprice, Integer endprice) {
+
+		return qualityFactoryMapper.countQueryByKey(key, systemCid, hasQuan, userType, biz30day, startprice, endprice);
+	}
+
+	/**
+	 * 涓�绾у垎绫绘煡璇㈢簿閫夊簱鏁版嵁
+	 * 
+	 * @param start
+	 * @param count
+	 * @return
+	 */
+	@Override
+	@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 = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goodsList);// 杩囨护澶ф窐瀹㈡爣棰�
+		for (int i = 0; i < list.size(); i++) {
+			if (i < goodsList.size())
+				list.get(i).setTaoBaoGoodsBrief(goodsList.get(i));
+
+		}
+		return list;
+	}
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'countQueryClassId-'+#cid")
+	public long countQueryClassId(Long cid) {
+		return qualityFactoryMapper.countQuery(null, cid, null, null, 1);
+	}
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'listQueryByRebateAmount-'+#start+'-'+#proportion+'-'+#endAmount+'-'+#endAmount+'-'+#tkRate")
+	public List<QualityFactory> listQueryByRebateAmount(long start, int count, String proportion, Integer startAmount,
+			Integer endAmount, double tkRate) {
+		return qualityFactoryMapper.listQueryByRebateAmount(start, count, proportion, startAmount, endAmount, tkRate);
+	}
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'countQueryByRebateAmount-'+#proportion+'-'+#endAmount+'-'+#endAmount+'-'+#tkRate")
+	public long countQueryByRebateAmount(String proportion, Integer startAmount, Integer endAmount, double tkRate) {
+		return qualityFactoryMapper.countQueryByRebateAmount(proportion, startAmount, endAmount, tkRate);
+	}
+
+	@Override
+	// @Cacheable(value = "qualityCache",key="'queryToCouponColumn-'+#start")
+	@Cacheable(value = "taoBaoCouponCache", key = "'queryToCouponColumn'+#start")
+	public List<QualityFactory> queryToCouponColumn(long start, int count) {
+		return qualityFactoryMapper.queryToCouponColumn(start, count);
+	}
+
+	@Override
+	// @Cacheable(value = "qualityCache",key="'countQueryToCouponColumn'")
+	@Cacheable(value = "taoBaoCouponCache", key = "'countQueryToCouponColumn'")
+	public long countQueryToCouponColumn() {
+		return qualityFactoryMapper.countQueryToCouponColumn();
+	}
+
+	/**
+	 * 棣栭〉鏈�搴曢儴@鍟嗗搧淇℃伅娴�
+	 */
+	@Override
+	public List<QualityFactory> listRecommend(long start, int count, Double proportion, Integer commision,
+			Integer couponAmount, double tkRate, Double couponRatio) {
+		return qualityFactoryMapper.listRecommendToIndex(start, count, proportion, commision, couponAmount, tkRate,
+				couponRatio);
+	}
+
+	@Override
+	public long countRecommend(Double proportion, Integer commision, Integer couponAmount, double tkRate,
+			Double couponRatio) {
+		return qualityFactoryMapper.countRecommendToIndex(proportion, commision, couponAmount, tkRate, couponRatio);
+	}
+
+	@Override
+	public List<QualityFactory> listRecommendBykey(long start, int count, String key, Integer hasQuan, Integer userType,
+			Double startprice, Double endprice, Double startTkRate, Double endTkRate, Integer sort) {
+		return qualityFactoryMapper.listRecommendBykey(start, count, key, hasQuan, userType, startprice, endprice,
+				startTkRate, endTkRate, sort);
+	}
+
+	@Override
+	public long countRecommendBykey(String key, Integer hasQuan, Integer userType, Double startprice, Double endprice,
+			Double startTkRate, Double endTkRate) {
+		return qualityFactoryMapper.countRecommendBykey(key, hasQuan, userType, startprice, endprice, startTkRate,
+				endTkRate);
+	}
+
+	/**
+	 * 棣栭〉鏈�搴曢儴@鍟嗗搧淇℃伅娴�
+	 */
+	@Override
+	@Cacheable(value = "qualityCache", key = "'listQueryToRecommend-'+#start+'-'+#proportion")
+	public JSONArray getRecommendToIndex(long start, int count, String proportion) {
+
+		// 杩斿埄閲戦2鍏冧互涓婏紱
+		Integer commision = 2;
+		// 浼樻儬鍒搁潰棰濋珮浜�5鍏冧互涓�
+		Integer couponAmount = 5;
+		// 浣i噾姣斾緥楂樼殑:5%浠ヤ笂锛�
+		double tkRate = 5.0;
+		// 浼樻儬鐜囬珮浜�10%浠ヤ笂锛堜紭鎯犵巼=浼樻儬鍒搁潰棰�/鍟嗗搧鍦ㄥ敭浠�*100%锛�
+		Double couponRatio = 10.0;
+
+		Double pop = 50.0;
+		if (!StringUtil.isNullOrEmpty(proportion)) {
+			pop = Double.parseDouble(proportion);
+		}
+
+		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 = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goodsList);
+		} catch (Exception e) {
+		}
+
+		for (TaoBaoGoodsBrief taoBaoGoodsBrief : goodsList) {
+			int biz30day = taoBaoGoodsBrief.getBiz30day();
+			if (biz30day >= 10000) {
+				double sales = biz30day;
+				String salesCountMidea = String.format("%.1f", sales / 10000);
+				taoBaoGoodsBrief.setSalesCount(salesCountMidea + "涓�");
+			} else {
+				taoBaoGoodsBrief.setSalesCount(biz30day + "");
+			}
+
+			// 鏀瑰彉鍥剧墖灏哄
+			String pictUrl = taoBaoGoodsBrief.getPictUrl();
+			if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
+				taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
+			}
+
+			array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, null)));
+		}
+
+		return array;
+	}
+
+	/**
+	 * 棣栭〉鏈�搴曢儴@鍟嗗搧淇℃伅娴�
+	 */
+	@Override
+	@Cacheable(value = "qualityCache", key = "'getRecommendToIndexV2-'+#start+'-'+#platform+'-'+#version+'-'+#system")
+	public List<GoodsDetailVO> getRecommendToIndexV2(long start, int count, String platform, String version, SystemEnum system) {
+
+		// 杩斿埄閲戦2鍏冧互涓婏紱
+		Integer commision = 2;
+		// 浼樻儬鍒搁潰棰濋珮浜�5鍏冧互涓�
+		Integer couponAmount = 5;
+		// 浣i噾姣斾緥楂樼殑:5%浠ヤ笂锛�
+		double tkRate = 5.0;
+		// 浼樻儬鐜囬珮浜�10%浠ヤ笂锛堜紭鎯犵巼=浼樻儬鍒搁潰棰�/鍟嗗搧鍦ㄥ敭浠�*100%锛�
+		Double couponRatio = 10.0;
+
+		BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(system);
+		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;
+		}
+
+		List<GoodsDetailVO> voList=new ArrayList<>();
+		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 = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goodsList);
+		} catch (Exception e) {
+		}
+
+		GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(platform, version,system);
+
+		for (TaoBaoGoodsBrief taoBaoGoodsBrief : goodsList) {
+			GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
+			voList.add(detailVO);
+		}
+
+		return voList;
+	}
+
+	@Override
+	@Cacheable(value = "qualityCache", key = "'countRecommendToIndex-'+#proportion")
+	public long countRecommendToIndex(String proportion) {
+
+		// 杩斿埄閲戦2鍏冧互涓婏紱
+		Integer commision = 2;
+		// 浼樻儬鍒搁潰棰濋珮浜�5鍏冧互涓�
+		Integer couponAmount = 5;
+		// 浣i噾姣斾緥楂樼殑:5%浠ヤ笂锛�
+		double tkRate = 5.0;
+		// 浼樻儬鐜囬珮浜�10%浠ヤ笂锛堜紭鎯犵巼=浼樻儬鍒搁潰棰�/鍟嗗搧鍦ㄥ敭浠�*100%锛�
+		Double couponRatio = 10.0;
+
+		Double pop = 50.0;
+		if (!StringUtil.isNullOrEmpty(proportion)) {
+			pop = Double.parseDouble(proportion);
+		}
+
+		return countRecommend(pop, commision, couponAmount, tkRate, couponRatio);
+	}
+
+	@Override
+	public List<QualityFactory> recommendByAuctionId(String auctionId) {
+
+		List<String> list = new ArrayList<>();
+		list.add(auctionId);
+		List<QualityFactory> listTaoBaoGoods = qualityFactoryMapper.listQueryByAuctionId(list);
+
+		if (listTaoBaoGoods == null || listTaoBaoGoods.size() == 0) {
+			return null;
+		}
+
+		QualityFactory qualityFactory = listTaoBaoGoods.get(0);
+		TaoBaoGoodsBrief goodsBrief = qualityFactory.getTaoBaoGoodsBrief();
+		if (goodsBrief == null) {
+			return null;
+		}
+
+		List<LabelGoods> listLab = labelGoodsMapper.queryByGoodsId(0, 200, goodsBrief.getAuctionId());
+		if (listLab == null || listLab.size() == 0) {
+			return null;
+		}
+
+		// 鏍囩id
+		List<Long> listId = new ArrayList<Long>();
+		for (LabelGoods labelGoods : listLab) {
+			Label label = labelGoods.getLabel();
+			if (label != null) {
+				listId.add(label.getId());
+			}
+		}
+
+		if (listId.size() == 0) {
+			return null;
+		}
+
+		return qualityFactoryMapper.listQueryBylabIDs(0, 10, listId, goodsBrief.getId(), qualityFactory.getSystemCid());
+	}
+
+	@Override
+	public List<QualityFactory> listFreeGoods(long start, int count) {
+		return qualityFactoryMapper.listFreeGoods(start, count);
+	}
+
+	@Override
+	public long countFreeGoods() {
+		return qualityFactoryMapper.countFreeGoods();
+	}
+
+	@Override
+	public List<QualityFactory> listByShopId(long start, int count, Long shopId) {
+		return qualityFactoryMapper.listByShopId(start, count, shopId);
+	}
+
+	@Override
+	public long countByShopId(Long shopId) {
+		return qualityFactoryMapper.countByShopId(shopId);
+	}
+
+	@Override
+	public List<QualityFactory> listQueryEverydayRob(long start, int count, BigDecimal zkPrice, BigDecimal minQuanPrice,
+			BigDecimal maxQuanPrice) {
+		return qualityFactoryMapper.listQueryEverydayRob(start, count, zkPrice, minQuanPrice, maxQuanPrice);
+	}
+
+	@Override
+	public long countQueryEverydayRob(BigDecimal zkPrice, BigDecimal minQuanPrice, BigDecimal maxQuanPrice) {
+		return qualityFactoryMapper.countQueryEverydayRob(zkPrice, minQuanPrice, maxQuanPrice);
+	}
+}

--
Gitblit v1.8.0