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