| | |
| | | package com.yeshi.fanli.service.impl.goods;
|
| | |
|
| | | import java.util.HashMap;
|
| | | import java.util.Map;
|
| | |
|
| | | import org.springframework.cache.annotation.Cacheable;
|
| | | import org.springframework.stereotype.Service;
|
| | |
|
| | | import com.yeshi.fanli.dto.common.JDCommonContentTypeEnum;
|
| | | import com.yeshi.fanli.dto.jd.JDSearchResult;
|
| | | import com.yeshi.fanli.service.inter.goods.JDCommonTemplateContentService;
|
| | | import com.yeshi.fanli.tag.PageEntity;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.jd.JDApiUtil;
|
| | |
|
| | | @Service
|
| | | public class JDCommonTemplateContentServiceImpl implements JDCommonTemplateContentService {
|
| | |
|
| | | private Map<String, Long> countMap = new HashMap<String, Long>();
|
| | | |
| | |
|
| | | @Cacheable(value = "jdCommonContentCache", key = "#type+'-'+#cid+'-'+#page+'-'+#pageSize")
|
| | | @Override
|
| | | public JDSearchResult getContentList(JDCommonContentTypeEnum type, String cid, int page, int pageSize) {
|
| | | if (type == JDCommonContentTypeEnum._9k9) {
|
| | | return get9K9Content(cid, page, pageSize);
|
| | | } else if (type == JDCommonContentTypeEnum.jdPeiSong) {
|
| | | return getJDPeiSongContent(cid, page, pageSize);
|
| | | } else if (type == JDCommonContentTypeEnum.jiaDian) {
|
| | | return getJiaDianContent(cid, page, pageSize);
|
| | | } else if (type == JDCommonContentTypeEnum.baiHuo) {
|
| | | return getBaiHuoContent(cid, page, pageSize);
|
| | | } else if (type == JDCommonContentTypeEnum.juJia) {
|
| | | return getJuJiaContent(cid, page, pageSize);
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | |
| | | private JDSearchResult get9K9Content(String cid, int page, int pageSize) {
|
| | | int[] arrayId = {10, 17};
|
| | | return getJingFenGoods(page, pageSize, "9k9-", arrayId);
|
| | | }
|
| | | |
| | | private JDSearchResult getJDPeiSongContent(String cid, int page, int pageSize) {
|
| | | int[] arrayId = {15, 18};
|
| | | return getJingFenGoods(page, pageSize, "peisong-", arrayId);
|
| | | }
|
| | | |
| | | private JDSearchResult getJiaDianContent(String cid, int page, int pageSize) {
|
| | | int[] arrayId = {5, 2};
|
| | | return getJingFenGoods(page, pageSize, "jiadian-", arrayId);
|
| | | }
|
| | | |
| | | private JDSearchResult getBaiHuoContent(String cid, int page, int pageSize) {
|
| | | int[] arrayId = {6, 3};
|
| | | return getJingFenGoods(page, pageSize, "baihuo-", arrayId);
|
| | | }
|
| | | |
| | | private JDSearchResult getJuJiaContent(String cid, int page, int pageSize) {
|
| | | int[] arrayId = {7, 4};
|
| | | return getJingFenGoods(page, pageSize, "jujia-", arrayId);
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 9快9包邮
|
| | | * |
| | | * @param cid
|
| | | * @param page
|
| | | * @param pageSize
|
| | | * @return
|
| | | */
|
| | | private JDSearchResult getJingFenGoods(int page, int pageSize, String mapKey, int[] arrayId) {
|
| | | int pageTemp = 0;
|
| | | long addCount = 0;
|
| | | Integer categoryId = null;
|
| | | long totalCount = (long) (page * Constant.PAGE_SIZE);
|
| | | for (int i = 0; i < arrayId.length; i++) {
|
| | | Long count = countMap.get(mapKey + arrayId[i]);
|
| | | if (count != null) {
|
| | | addCount += count;
|
| | | }
|
| | | |
| | | if (count != null && totalCount > addCount) {
|
| | | pageTemp = (int)(addCount / Constant.PAGE_SIZE);
|
| | | continue; // 当前分类商品不足
|
| | | } else {
|
| | | page = page - pageTemp; |
| | | categoryId = arrayId[i];
|
| | | break;
|
| | | }
|
| | | }
|
| | | |
| | | 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(mapKey + categoryId, mcount);
|
| | | return result;
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.service.impl.goods; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import com.yeshi.fanli.dto.common.JDCommonContentTypeEnum; |
| | | import com.yeshi.fanli.dto.jd.JDSearchResult; |
| | | import com.yeshi.fanli.entity.jd.JDGoods; |
| | | import com.yeshi.fanli.service.inter.goods.JDCommonTemplateContentService; |
| | | import com.yeshi.common.entity.PageEntity; |
| | | import com.yeshi.fanli.util.Constant; |
| | | import com.yeshi.fanli.util.jd.JDApiUtil; |
| | | |
| | | @Service |
| | | public class JDCommonTemplateContentServiceImpl implements JDCommonTemplateContentService { |
| | | |
| | | private Map<String, Long> countMap = new HashMap<String, Long>(); |
| | | |
| | | @Cacheable(value = "jdCommonContentCache", key = "#type+'-'+#cid+'-'+#page+'-'+#pageSize") |
| | | @Override |
| | | public JDSearchResult getContentList(JDCommonContentTypeEnum type, String cid, int page, int pageSize) { |
| | | if (type == JDCommonContentTypeEnum._9k9) { |
| | | return get9K9Content(cid, page, pageSize); |
| | | } else if (type == JDCommonContentTypeEnum.jdPeiSong) { |
| | | return getJDPeiSongContent(cid, page, pageSize); |
| | | } else if (type == JDCommonContentTypeEnum.jiaDian) { |
| | | return getJiaDianContent(cid, page, pageSize); |
| | | } else if (type == JDCommonContentTypeEnum.baiHuo) { |
| | | return getBaiHuoContent(cid, page, pageSize); |
| | | } else if (type == JDCommonContentTypeEnum.juJia) { |
| | | return getJuJiaContent(cid, page, pageSize); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private JDSearchResult get9K9Content(String cid, int page, int pageSize) { |
| | | int[] arrayId = { 10, 17 }; |
| | | JDSearchResult result = getJingFenGoods(page, pageSize, "9k9-", arrayId); |
| | | |
| | | return filterGoods(result); |
| | | } |
| | | |
| | | private JDSearchResult filterGoods(JDSearchResult result) { |
| | | List<String> skuIds = new ArrayList<>(); |
| | | if (result != null && result.getGoodsList() != null && result.getGoodsList().size() > 0) { |
| | | for (JDGoods goods : result.getGoodsList()) { |
| | | skuIds.add(goods.getItemId()); |
| | | } |
| | | List<JDGoods> goodsList = JDApiUtil.listGoodsDetail(skuIds); |
| | | result.setGoodsList(goodsList); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private JDSearchResult getJDPeiSongContent(String cid, int page, int pageSize) { |
| | | int[] arrayId = { 15, 18 }; |
| | | JDSearchResult result = getJingFenGoods(page, pageSize, "peisong-", arrayId); |
| | | return filterGoods(result); |
| | | } |
| | | |
| | | private JDSearchResult getJiaDianContent(String cid, int page, int pageSize) { |
| | | int[] arrayId = { 24}; |
| | | JDSearchResult result = getJingFenGoods(page, pageSize, "jiadian-", arrayId); |
| | | return filterGoods(result); |
| | | } |
| | | |
| | | private JDSearchResult getBaiHuoContent(String cid, int page, int pageSize) { |
| | | int[] arrayId = { 25 }; |
| | | JDSearchResult result = getJingFenGoods(page, pageSize, "baihuo-", arrayId); |
| | | return filterGoods(result); |
| | | } |
| | | |
| | | private JDSearchResult getJuJiaContent(String cid, int page, int pageSize) { |
| | | int[] arrayId = { 27 }; |
| | | JDSearchResult result = getJingFenGoods(page, pageSize, "jujia-", arrayId); |
| | | return filterGoods(result); |
| | | } |
| | | |
| | | /** |
| | | * 9快9包邮 |
| | | * |
| | | * @param cid |
| | | * @param page |
| | | * @param pageSize |
| | | * @return |
| | | */ |
| | | private JDSearchResult getJingFenGoods(int page, int pageSize, String mapKey, int[] arrayId) { |
| | | int pageTemp = 0; |
| | | long addCount = 0; |
| | | Integer categoryId = null; |
| | | long totalCount = (long) (page * Constant.PAGE_SIZE); |
| | | for (int i = 0; i < arrayId.length; i++) { |
| | | Long count = countMap.get(mapKey + arrayId[i]); |
| | | if (count != null) { |
| | | addCount += count; |
| | | } |
| | | |
| | | if (count != null && totalCount > addCount) { |
| | | pageTemp = (int) (addCount / Constant.PAGE_SIZE); |
| | | continue; // 当前分类商品不足 |
| | | } else { |
| | | page = page - pageTemp; |
| | | categoryId = arrayId[i]; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | 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(mapKey + categoryId, mcount); |
| | | return result; |
| | | } |
| | | |
| | | } |