| | |
| | | package com.yeshi.fanli.service.impl.brand;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | |
| | | 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.dto.jd.JDShopInfo;
|
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
|
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
|
| | | import com.yeshi.fanli.dto.pdd.PDDSearchFilter;
|
| | | import com.yeshi.fanli.entity.brand.BrandGoodsCahe;
|
| | | import com.yeshi.fanli.entity.brand.BrandInfo;
|
| | | import com.yeshi.fanli.entity.jd.JDGoods;
|
| | | import com.yeshi.fanli.entity.system.ConfigKeyEnum;
|
| | | import com.yeshi.fanli.entity.taobao.SearchFilter;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.brand.BrandGoodsCaheService;
|
| | | import com.yeshi.fanli.service.inter.brand.BrandShopCaheService;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
|
| | | import com.yeshi.fanli.tag.PageEntity;
|
| | | import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.jd.JDApiUtil;
|
| | | import com.yeshi.fanli.util.jd.JDUtil;
|
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
|
| | |
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private BrandGoodsCaheDao brandGoodsCaheDao;
|
| | | |
| | | |
| | |
|
| | | @Resource
|
| | | private BrandShopCaheService brandShopCaheService;
|
| | |
|
| | | @Override
|
| | | public int addBrandGoods(BrandInfo brandInfo) {
|
| | | int count = 0;
|
| | | public BrandInfo addBrandGoods(BrandInfo brandInfo) {
|
| | | // 淘宝
|
| | | count += addBrandGoodsTB(brandInfo);
|
| | | BrandInfo goodsTB = addBrandGoodsTB(brandInfo);
|
| | | // 京东
|
| | | count += addBrandGoodsJD(brandInfo);
|
| | | BrandInfo goodsJD = addBrandGoodsJD(brandInfo);
|
| | | // 拼多多
|
| | | count += addBrandGoodsPDD(brandInfo);
|
| | | |
| | | return count;
|
| | | BrandInfo goodsPDD = addBrandGoodsPDD(brandInfo);
|
| | |
|
| | | int goodsTotal = goodsTB.getGoodsTotal() + goodsJD.getGoodsTotal() + goodsPDD.getGoodsTotal();
|
| | | int shopTotal = goodsTB.getShopTotal() + goodsJD.getShopTotal() + goodsPDD.getShopTotal();
|
| | | goodsTB.setGoodsTotal(goodsTotal);
|
| | | goodsTB.setShopTotal(shopTotal);
|
| | | return goodsTB;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | /**
|
| | | * 淘宝商品
|
| | | * |
| | | * @param brandInfo
|
| | | * @return
|
| | | */
|
| | | private int addBrandGoodsTB(BrandInfo brandInfo) {
|
| | | SearchFilter filter = new SearchFilter();
|
| | | filter.setKey(brandInfo.getName());
|
| | | filter.setPage(1);
|
| | | filter.setPageSize(50);
|
| | | filter.setTmall(true);
|
| | | filter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | TaoBaoSearchResult searchResult = TaoKeApiUtil.searchWuLiao(filter);
|
| | | if (searchResult == null || searchResult.getTaoBaoGoodsBriefs() == null |
| | | || searchResult.getTaoBaoGoodsBriefs().size() == 0)
|
| | | return 0;
|
| | | |
| | | BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
|
| | | BigDecimal shareRate = hongBaoManageService.getShareRate();
|
| | | List<TaoBaoGoodsBrief> listGoods = searchResult.getTaoBaoGoodsBriefs();
|
| | | for (TaoBaoGoodsBrief goods: listGoods) {
|
| | | BrandGoodsCahe brandGoods = new BrandGoodsCahe();
|
| | | brandGoods.setBrandId(brandInfo.getId());
|
| | | brandGoods.setWeight((int) (Math.random() * 1000));
|
| | | brandGoods.setGoods(GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate));
|
| | | brandGoods.setCreateTime(new Date());
|
| | | brandGoods.setUpdateTime(new Date());
|
| | | brandGoodsCaheDao.save(brandGoods);
|
| | | }
|
| | | return listGoods.size();
|
| | | }
|
| | | |
| | | |
| | | /**
|
| | | * 京东商品
|
| | | * |
| | | * @param brandInfo
|
| | | * @return
|
| | | */
|
| | | private int addBrandGoodsJD(BrandInfo brandInfo) {
|
| | | JDSearchResult result = null;
|
| | | String way = configService.get("jd_api_search_key");
|
| | | if ("1".equals(way)) {
|
| | | JDFilter filterAPI = new JDFilter();
|
| | | filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(brandInfo.getName()));
|
| | | filterAPI.setPageIndex(1);
|
| | | filterAPI.setPageSize(100);
|
| | | filterAPI.setSort(JDFilter.SORT_DESC);
|
| | | filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS);
|
| | | result = JDApiUtil.queryByKey(filterAPI);
|
| | | } else {
|
| | | // 网页爬取
|
| | | JDSearchFilter jdfilter = new JDSearchFilter();
|
| | | jdfilter.setKey(SearchFilterUtil.filterSearchContent(brandInfo.getName()));
|
| | | jdfilter.setPageNo(1);
|
| | | jdfilter.setPageSize(100);
|
| | | jdfilter.setSort(JDSearchFilter.SORT_DESC);
|
| | | jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
|
| | | result = JDUtil.searchByKey(jdfilter);
|
| | | }
|
| | | private BrandInfo addBrandGoodsTB(BrandInfo brandInfo) {
|
| | | Date date = new Date();
|
| | | BrandInfo numInfo = new BrandInfo();
|
| | | numInfo.setShopTotal(0);
|
| | | numInfo.setGoodsTotal(0);
|
| | | try {
|
| | | String shopKey = brandInfo.getShopKey();
|
| | | if (StringUtil.isNullOrEmpty(shopKey)) {
|
| | | // 删除之前的
|
| | | brandGoodsCaheDao.removeByDate(brandInfo.getId(), 1, date);
|
| | | // 删除店铺
|
| | | brandShopCaheService.removeByDateAndType(brandInfo.getId(), 11, date);
|
| | |
|
| | | int count = 0;
|
| | | if (result != null) {
|
| | | PageEntity pageEntity = result.getPageEntity();
|
| | | if (pageEntity != null) {
|
| | | count = (int) pageEntity.getTotalCount();
|
| | | return numInfo;
|
| | | }
|
| | |
|
| | | List<JDGoods> goodsList = result.getGoodsList();
|
| | | if (goodsList != null && goodsList.size() > 0) {
|
| | | BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
|
| | | BigDecimal shareRate = hongBaoManageService.getShareRate();
|
| | | for (JDGoods goods : goodsList) {
|
| | | BrandGoodsCahe brandGoods = new BrandGoodsCahe();
|
| | | brandGoods.setBrandId(brandInfo.getId());
|
| | | brandGoods.setWeight((int) (Math.random() * 1000));
|
| | | brandGoods.setGoods(GoodsDetailVOFactory.convertJDGoods(goods, fanLiRate, shareRate));
|
| | | brandGoods.setCreateTime(new Date());
|
| | | brandGoods.setUpdateTime(new Date());
|
| | | brandGoodsCaheDao.save(brandGoods);
|
| | | String searchKey = brandInfo.getSearchKey();
|
| | | if (StringUtil.isNullOrEmpty(searchKey))
|
| | | searchKey = brandInfo.getName();
|
| | |
|
| | | SearchFilter filter = new SearchFilter();
|
| | | filter.setKey(searchKey);
|
| | | filter.setPage(1);
|
| | | filter.setPageSize(100);
|
| | | filter.setTmall(true);
|
| | | filter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | TaoBaoSearchResult searchResult = TaoKeApiUtil.searchWuLiao(filter);
|
| | |
|
| | | // 删除店铺
|
| | | brandShopCaheService.removeByDateAndType(brandInfo.getId(), 11, date);
|
| | |
|
| | | // 组织商品 + 添加店铺
|
| | | int count = 0;
|
| | | int countShop = 0;
|
| | | if (searchResult != null && searchResult.getTaoBaoGoodsBriefs() != null
|
| | | && searchResult.getTaoBaoGoodsBriefs().size() > 0) {
|
| | | boolean addShop = true;
|
| | | List<TaoBaoGoodsBrief> listGoods = searchResult.getTaoBaoGoodsBriefs();
|
| | | for (TaoBaoGoodsBrief goods : listGoods) {
|
| | | // 添加店铺
|
| | | String shopTitle = goods.getShopTitle();
|
| | | if (addShop && !StringUtil.isNullOrEmpty(shopTitle) && shopTitle.contains("旗舰店")
|
| | | && shopTitle.toLowerCase().contains(shopKey.toLowerCase())) {
|
| | | addShop = brandShopCaheService.addBrandShopTB(brandInfo, goods.getAuctionId(),
|
| | | goods.getSellerId());
|
| | |
|
| | | if (!addShop)
|
| | | countShop = 1;
|
| | | }
|
| | |
|
| | | // 添加商品
|
| | | if (count < 50) {
|
| | | BrandGoodsCahe brandGoods = new BrandGoodsCahe();
|
| | | brandGoods.setBrandId(brandInfo.getId());
|
| | | brandGoods.setWeight((int) (Math.random() * 1000));
|
| | | brandGoods.setGoodsType(1);
|
| | | brandGoods.setGoodsTB(goods);
|
| | | brandGoods.setCreateTime(new Date());
|
| | | brandGoodsCaheDao.insert(brandGoods);
|
| | | count++;
|
| | | } else if (!addShop) {
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | // 删除之前的
|
| | | brandGoodsCaheDao.removeByDate(brandInfo.getId(), 1, date);
|
| | | numInfo.setShopTotal(countShop);
|
| | | numInfo.setGoodsTotal(count);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | return count;
|
| | | return numInfo;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | /**
|
| | | * 京东商品
|
| | | * |
| | | * @param brandInfo
|
| | | * @return
|
| | | */
|
| | | private BrandInfo addBrandGoodsJD(BrandInfo brandInfo) {
|
| | | Date date = new Date();
|
| | | BrandInfo numInfo = new BrandInfo();
|
| | | numInfo.setShopTotal(0);
|
| | | numInfo.setGoodsTotal(0);
|
| | |
|
| | | try {
|
| | | String shopKey = brandInfo.getShopKeyJD();
|
| | | if (StringUtil.isNullOrEmpty(shopKey)) {
|
| | | // 删除店铺
|
| | | brandShopCaheService.removeByDateAndType(brandInfo.getId(), 20, date);
|
| | | // 删除之前
|
| | | brandGoodsCaheDao.removeByDate(brandInfo.getId(), 2, date);
|
| | | return numInfo;
|
| | | }
|
| | |
|
| | | String searchKey = brandInfo.getSearchKeyJD();
|
| | | if (StringUtil.isNullOrEmpty(searchKey))
|
| | | searchKey = brandInfo.getName();
|
| | |
|
| | | int count = 0;
|
| | | int countShop = 0;
|
| | | JDSearchResult result = null;
|
| | | String way = configService.get(ConfigKeyEnum.jdApiSearchKey.getKey());
|
| | |
|
| | | // 删除店铺
|
| | | brandShopCaheService.removeByDateAndType(brandInfo.getId(), 20, date);
|
| | |
|
| | | boolean addShop = true;
|
| | | for (int i = 0; i < 2; i++) {
|
| | | if ("1".equals(way)) {
|
| | | JDFilter filterAPI = new JDFilter();
|
| | | filterAPI.setKeyword(SearchFilterUtil.filterSearchContent(searchKey));
|
| | | filterAPI.setPageIndex(1);
|
| | | filterAPI.setPageSize(30);
|
| | | filterAPI.setSort(JDFilter.SORT_DESC);
|
| | | filterAPI.setSortName(JDFilter.SORTNAME_ORDER_COUNT_30DAYS);
|
| | | result = JDApiUtil.queryByKey(filterAPI);
|
| | | } else {
|
| | | // 网页爬取
|
| | | JDSearchFilter jdfilter = new JDSearchFilter();
|
| | | jdfilter.setKey(SearchFilterUtil.filterSearchContent(searchKey));
|
| | | jdfilter.setPageNo(1);
|
| | | jdfilter.setPageSize(30);
|
| | | jdfilter.setSort(JDSearchFilter.SORT_DESC);
|
| | | jdfilter.setSortName(JDSearchFilter.SORTNAME_ORDER_COUNT_30DAYS);
|
| | | result = JDUtil.searchByKey(jdfilter);
|
| | | }
|
| | |
|
| | | if (result != null && result.getGoodsList() != null && result.getGoodsList().size() > 0) {
|
| | | List<JDGoods> goodsList = result.getGoodsList();
|
| | | for (JDGoods goods : goodsList) {
|
| | | BrandGoodsCahe brandGoods = new BrandGoodsCahe();
|
| | | brandGoods.setBrandId(brandInfo.getId());
|
| | | brandGoods.setWeight((int) (Math.random() * 1000));
|
| | | brandGoods.setGoodsJD(goods);
|
| | | brandGoods.setGoodsType(2);
|
| | | brandGoods.setCreateTime(new Date());
|
| | | brandGoodsCaheDao.insert(brandGoods);
|
| | |
|
| | | JDShopInfo shopInfo = goods.getShopInfo();
|
| | | if (addShop && shopInfo != null) {
|
| | | // 包含该品牌名称
|
| | | String shopName = shopInfo.getShopName();
|
| | | if (!StringUtil.isNullOrEmpty(shopName)
|
| | | && shopName.toLowerCase().contains(shopKey.toLowerCase())) {
|
| | | addShop = false;
|
| | | brandShopCaheService.addBrandShopJD(brandInfo, shopInfo);
|
| | | countShop = 1;
|
| | | }
|
| | | }
|
| | |
|
| | | count++;
|
| | | if (count >= 50) {
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | // 删除之前
|
| | | brandGoodsCaheDao.removeByDate(brandInfo.getId(), 2, date);
|
| | | numInfo.setShopTotal(countShop);
|
| | | numInfo.setGoodsTotal(count);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | return numInfo;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 拼多多商品
|
| | | * |
| | | * @param brandInfo
|
| | | * @return
|
| | | */
|
| | | private int addBrandGoodsPDD(BrandInfo brandInfo) {
|
| | | PDDSearchFilter pddfilter = new PDDSearchFilter();
|
| | | pddfilter.setKw(brandInfo.getName());
|
| | | pddfilter.setPage(1);
|
| | | pddfilter.setPageSize(50);
|
| | | pddfilter.setSortType(6);
|
| | | private BrandInfo addBrandGoodsPDD(BrandInfo brandInfo) {
|
| | | Date date = new Date();
|
| | | BrandInfo numInfo = new BrandInfo();
|
| | | numInfo.setShopTotal(0);
|
| | | numInfo.setGoodsTotal(0);
|
| | | try {
|
| | | String shopKey = brandInfo.getShopKeyPDD();
|
| | | if (StringUtil.isNullOrEmpty(shopKey)) {
|
| | | // 删除之前
|
| | | brandGoodsCaheDao.removeByDate(brandInfo.getId(), 3, date);
|
| | | // 删除之前店铺
|
| | | brandShopCaheService.removeByDateAndType(brandInfo.getId(), 30, date);
|
| | | return numInfo;
|
| | | }
|
| | |
|
| | | int count = 0;
|
| | | PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
|
| | | if (result != null) {
|
| | | count = result.getTotalCount();
|
| | | List<PDDGoodsDetail> goodsList = result.getGoodsList();
|
| | | if (goodsList != null && goodsList.size() > 0) {
|
| | | BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
|
| | | BigDecimal shareRate = hongBaoManageService.getShareRate();
|
| | | for (PDDGoodsDetail goods : goodsList) {
|
| | | BrandGoodsCahe brandGoods = new BrandGoodsCahe();
|
| | | brandGoods.setBrandId(brandInfo.getId());
|
| | | brandGoods.setWeight((int) (Math.random() * 1000));
|
| | | brandGoods.setGoods(GoodsDetailVOFactory.convertPDDGoods(goods, fanLiRate, shareRate));
|
| | | brandGoods.setCreateTime(new Date());
|
| | | brandGoods.setUpdateTime(new Date());
|
| | | brandGoodsCaheDao.save(brandGoods);
|
| | | String searchKey = brandInfo.getSearchKeyPDD();
|
| | | if (StringUtil.isNullOrEmpty(searchKey))
|
| | | searchKey = brandInfo.getName();
|
| | |
|
| | | PDDSearchFilter pddfilter = new PDDSearchFilter();
|
| | | pddfilter.setKw(searchKey);
|
| | | pddfilter.setPage(1);
|
| | | pddfilter.setPageSize(100);
|
| | | pddfilter.setSortType(6);
|
| | | PDDGoodsResult result = PinDuoDuoApiUtil.searchGoods(pddfilter);
|
| | |
|
| | | int count = 0;
|
| | |
|
| | | if (result != null) {
|
| | | List<PDDGoodsDetail> goodsList = result.getGoodsList();
|
| | | if (goodsList != null && goodsList.size() > 0) {
|
| | | for (PDDGoodsDetail goods : goodsList) {
|
| | | BrandGoodsCahe brandGoods = new BrandGoodsCahe();
|
| | | brandGoods.setBrandId(brandInfo.getId());
|
| | | brandGoods.setWeight((int) (Math.random() * 1000));
|
| | | brandGoods.setGoodsType(3);
|
| | | brandGoods.setGoodsPDD(goods);
|
| | | brandGoods.setCreateTime(new Date());
|
| | | brandGoodsCaheDao.insert(brandGoods);
|
| | | count++;
|
| | | if (count >= 50) {
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | // 删除之前
|
| | | brandGoodsCaheDao.removeByDate(brandInfo.getId(), 3, date);
|
| | | // 删除之前店铺
|
| | | brandShopCaheService.removeByDateAndType(brandInfo.getId(), 30, date);
|
| | | // 添加店铺
|
| | | int countShop = brandShopCaheService.addBrandShopPDD(brandInfo);
|
| | |
|
| | | numInfo.setShopTotal(countShop);
|
| | | numInfo.setGoodsTotal(count);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | return count;
|
| | | return numInfo;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<BrandGoodsCahe> getByBrandId(int start, int count, Long brandId) {
|
| | | return brandGoodsCaheDao.getByBrandId(start, count, brandId);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public long countByBrandId(Long brandId) {
|
| | | return brandGoodsCaheDao.countByBrandId(brandId);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void removeAgoByDate(Date createTime) {
|
| | | brandGoodsCaheDao.removeAgoByDate(createTime);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void removeByBrandId(Long brandId) {
|
| | | brandGoodsCaheDao.removeByBrandId(brandId);
|
| | | }
|
| | | }
|