From 24a8d17e007545f7426c48352109aa1a9c6587ee Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 06 五月 2020 12:02:09 +0800
Subject: [PATCH] IOS上线隐藏我的界面的banner与超级会员升级信息

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDGoodsServiceImpl.java |  190 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 134 insertions(+), 56 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDGoodsServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDGoodsServiceImpl.java
index ce87ced..6810a25 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDGoodsServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDGoodsServiceImpl.java
@@ -1,60 +1,53 @@
 package com.yeshi.fanli.service.impl.jd;
 
-import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Resource;
 
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.yeshi.utils.JsonUtil;
 
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 import com.yeshi.fanli.dto.jd.JDFilter;
 import com.yeshi.fanli.dto.jd.JDSearchFilter;
 import com.yeshi.fanli.dto.jd.JDSearchResult;
 import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
 import com.yeshi.fanli.entity.jd.JDGoods;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
 import com.yeshi.fanli.exception.jd.JDGoodsException;
 import com.yeshi.fanli.service.inter.config.ConfigService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
 import com.yeshi.fanli.service.inter.jd.JDGoodsService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
 import com.yeshi.fanli.tag.PageEntity;
 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.jd.JDApiUtil;
 import com.yeshi.fanli.util.jd.JDUtil;
-import com.yeshi.fanli.vo.goods.GoodsDetailVO;
-
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
 
 @Service
 public class JDGoodsServiceImpl implements JDGoodsService {
-	
+
 	@Resource
 	private ConfigService configService;
-	
+
 	@Resource
 	private HongBaoManageService hongBaoManageService;
-	
-	
+
+	private Map<String, Long> countMap = new HashMap<String, Long>();
 	private static final Map<Long, String> cidMap = new HashMap<Long, String>();
-	private static final Map<String, Long> countMap = new HashMap<String, Long>();
 
 	static {
-		cidMap.put(1L, "nzjh");// 绮鹃��
+		cidMap.put(1L, "2,16,1,3");// 绮鹃��
 		cidMap.put(2L, "737");// 鐢靛櫒锛� 瀹剁敤鐢靛櫒
 		cidMap.put(3L, "652,670");// 鏁扮爜锛� 鏁扮爜/鐢佃剳銆佸姙鍏�
-		cidMap.put(4L, "9987");// 鎵嬫満锛氭墜鏈洪�氳 
+		cidMap.put(4L, "9987");// 鎵嬫満锛氭墜鏈洪�氳
 		cidMap.put(5L, "12218");// 鐢熼矞
-		cidMap.put(6L, "1315");// 鏈嶉グ锛� 鏈嶉グ鍐呰。 
-		cidMap.put(7L, "1319,6233");// 姣嶅┐锛� 姣嶅┐/鐜╁叿涔愬櫒 
+		cidMap.put(6L, "1315");// 鏈嶉グ锛� 鏈嶉グ鍐呰。
+		cidMap.put(7L, "1319,6233");// 姣嶅┐锛� 姣嶅┐/鐜╁叿涔愬櫒
 		cidMap.put(8L, "1713");// 鍥句功
 		cidMap.put(9L, "6196");// 鍘ㄥ叿
 		cidMap.put(10L, "1320");// 椋熷搧锛� 椋熷搧楗枡
@@ -68,7 +61,6 @@
 		cidMap.put(18L, "6728");// 姹借溅锛氭苯杞︾敤鍝�
 	}
 
-	
 	@Override
 	public List<GoodsClass> getSpecialClass() {
 		List<GoodsClass> list = new ArrayList<GoodsClass>();
@@ -90,69 +82,155 @@
 		list.add(new GoodsClass(16L, "瀹犵墿"));
 		list.add(new GoodsClass(17L, "瀹跺眳"));
 		list.add(new GoodsClass(18L, "姹借溅"));
-		return list; 
+		return list;
 	}
-	
+
+	@Cacheable(value = "jdSpecialCache", key = "'specialSearch-'+#page+'-'+#cid")
 	@Override
-	@Transactional
-	public JDSearchResult specialSearch(Integer page, Long cid) throws JDGoodsException{
+	@Transactional(rollbackFor=Exception.class)
+	public List<JDGoods> specialSearch(Integer page, Long cid) throws JDGoodsException {
 		if (cid == null) {
 			throw new JDGoodsException(1, "鍒嗙被id涓虹┖");
 		}
-		
+
 		String jdcid = cidMap.get(cid);
 		if (StringUtil.isNullOrEmpty(jdcid)) {
 			throw new JDGoodsException(1, "鍒嗙被id涓嶅瓨鍦�");
 		}
-		
-		Long jdCid1 = null;
-		Integer categoryId = null;
-		long totalCount = (long) (page * Constant.PAGE_SIZE);
-		
-		
-		if (jdcid.contains(",")) {
+
+		// 绮鹃��
+		if (cid == 1) {
+			Integer categoryId = null;
+			int pageTemp = 0;
+			long addCount = 0;
+			long totalCount = (long) (page * Constant.PAGE_SIZE);
 			String[] arrayId = jdcid.split(",");
 			for (int i = 0; i < arrayId.length; i++) {
-				Long count = countMap.get(cid + "" + arrayId[i]);
-				if (count != null && totalCount > count) {
+				String id = arrayId[i];
+				Long count = countMap.get(cid + "-" + id);
+				if (count != null) {
+					addCount += count;
+				}
+
+				if (count != null && totalCount > addCount) {
+					pageTemp = (int) (addCount / Constant.PAGE_SIZE);
 					continue; // 褰撳墠鍒嗙被鍟嗗搧涓嶈冻
 				} else {
-					jdCid1 =  Long.parseLong(jdcid);
-					categoryId = Integer.parseInt(jdcid);
+					page = page - pageTemp;
+					categoryId = Integer.parseInt(id);
+					break;
 				}
 			}
-		} else {
-			jdCid1 =  Long.parseLong(jdcid);
-			categoryId = Integer.parseInt(jdcid);
+
+			if (categoryId == null) {
+				return null;
+			}
+
+			JDSearchResult result = JDApiUtil.getJingFenGoods(page, categoryId);
+
+			long count = 0;
+			if (result != null) {
+				PageEntity pageEntity = result.getPageEntity();
+				if (pageEntity != null) {
+					count = pageEntity.getTotalCount();
+				}
+			}
+
+			long mcount = (count / Constant.PAGE_SIZE) * Constant.PAGE_SIZE;
+			if (mcount == 0) {
+				mcount = 20;
+			}
+			countMap.put(cid + "-" + categoryId, mcount);
+
+			if (result == null) {
+				return null;
+			} else {
+				return filterJDGoods(result.getGoodsList());
+			}
 		}
-		
-		
-		// 鎼滅储
+
+		if (!jdcid.contains(",")) {
+			return search(page, Constant.PAGE_SIZE, jdcid);
+		}
+
+		// 澶氫釜鍒嗙被id澶勭悊
+		List<JDGoods> list = new ArrayList<JDGoods>();
+		String[] arrayId = jdcid.split(",");
+		for (int i = 0; i < arrayId.length; i++) {
+			if (i >= 3) {
+				break;
+			}
+			List<JDGoods> listGoods = search(page, 10, arrayId[i]);
+			if (listGoods != null && listGoods.size() > 0) {
+				list.addAll(listGoods);
+			}
+		}
+		return filterJDGoods(list);
+	}
+
+	/**
+	 * 杩囨护鍟嗗搧
+	 * 
+	 * @param goodsList
+	 * @return
+	 */
+	private List<JDGoods> filterJDGoods(List<JDGoods> goodsList) {
+		List<Long> skuIds = new ArrayList<>();
+		for (JDGoods goods : goodsList) {
+			skuIds.add(goods.getSkuId());
+		}
+		List<JDGoods> newGoodsList = JDApiUtil.listGoodsDetail(skuIds);
+		if (newGoodsList != null && newGoodsList.size() > 0)
+			return newGoodsList;
+		return goodsList;
+	}
+
+	private List<JDGoods> search(int page, int pageSize, String jdcid) {
 		JDSearchResult result = null;
-		String way = configService.get("jd_api_search_key");
+		String way = configService.get(ConfigKeyEnum.jdApiSearchKey.getKey());
 		if ("1".equals(way)) { // API鎼滅储
 			JDFilter filterAPI = new JDFilter();
 			filterAPI.setPageIndex(page);
-			filterAPI.setPageSize(Constant.PAGE_SIZE);
-			filterAPI.setCid1(jdCid1);
+			filterAPI.setPageSize(pageSize);
+			filterAPI.setCid1(Long.parseLong(jdcid));
 			result = JDApiUtil.queryByKey(filterAPI);
 		} else { // 缃戦〉鐖彇
 			JDSearchFilter jdfilter = new JDSearchFilter();
 			jdfilter.setPageNo(page);
-			jdfilter.setPageSize(Constant.PAGE_SIZE);
-			jdfilter.setCategoryId(categoryId);
+			jdfilter.setPageSize(pageSize);
+			jdfilter.setCategoryId(Integer.parseInt(jdcid));
 			result = JDUtil.searchByKey(jdfilter);
 		}
-		
-		long count = 0;
-		if (result != null) {
-			PageEntity pageEntity = result.getPageEntity();
-			if (pageEntity != null) {
-				count = pageEntity.getTotalCount();
-			}
+
+		if (result == null) {
+			return null;
+		} else {
+			return result.getGoodsList();
 		}
-		countMap.put(cid + "" + jdCid1, count);
-		
+	}
+
+	@Cacheable(value = "jdCache", key = "'getIndexJDGoods-'+#page")
+	@Override
+	public JDSearchResult getIndexJDGoods(int page) {
+		JDSearchResult result = null;
+		String way = configService.get(ConfigKeyEnum.jdApiSearchKey.getKey());
+		// TODO 闇�瑕佽皟鏁磋鍒�
+		way = "0";
+		if ("1".equals(way)) {
+			JDFilter filterAPI = new JDFilter();
+			filterAPI.setPageIndex(page);
+			filterAPI.setPageSize(20);
+			result = JDApiUtil.queryByKey(filterAPI);
+		} else {
+			// 缃戦〉鐖彇
+			JDSearchFilter jdfilter = new JDSearchFilter();
+			jdfilter.setPageNo(page);
+			jdfilter.setPageSize(Constant.PAGE_SIZE);
+			result =JDApiUtil.getJingFenGoods(page,125); //JDUtil.searchByKey(jdfilter);
+		}
+		if (result != null && result.getGoodsList() != null)
+			Collections.shuffle(result.getGoodsList());
+
 		return result;
 	}
 

--
Gitblit v1.8.0