From ed390c70bfbafb399fe20e8b89efc02ca5be008d Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期二, 30 七月 2019 15:32:40 +0800
Subject: [PATCH] config
---
fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDGoodsServiceImpl.java | 160 +++++++++++++++++++++++++++++++++++-----------------
1 files changed, 107 insertions(+), 53 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..dac16bf 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,6 +1,5 @@
package com.yeshi.fanli.service.impl.jd;
-import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -8,12 +7,10 @@
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;
@@ -26,35 +23,29 @@
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 +59,6 @@
cidMap.put(18L, "6728");// 姹借溅锛氭苯杞︾敤鍝�
}
-
@Override
public List<GoodsClass> getSpecialClass() {
List<GoodsClass> list = new ArrayList<GoodsClass>();
@@ -90,69 +80,133 @@
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{
+ 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 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 list;
+ }
+
+ private List<JDGoods> search(int page, int pageSize, String jdcid) {
JDSearchResult result = null;
String way = configService.get("jd_api_search_key");
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("jd_api_search_key");
+ 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 = JDUtil.searchByKey(jdfilter);
+ }
return result;
}
--
Gitblit v1.8.0