package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; import com.yeshi.fanli.entity.bus.lable.QualityFactory; import com.yeshi.fanli.entity.taobao.PidUser; import com.yeshi.fanli.entity.taobao.SearchFilter; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav; import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.entity.taobao.TaobaoMeterial; import com.yeshi.fanli.exception.ExistObjectException; import com.yeshi.fanli.exception.NotExistObjectException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.service.inter.goods.GoodsClassService; import com.yeshi.fanli.service.inter.goods.TaoBaoClassService; import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefRecordService; import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; import com.yeshi.fanli.service.inter.lable.QualityFactoryService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.taobao.TaobaoMeterialService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.GsonUtil; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import net.sf.json.JSONObject; @Controller @RequestMapping("admin/new/api/v1/taobao") public class TaoBaoGoodsBriefAdminController { @Resource private TaoBaoGoodsBriefService taoBaoGoodsBriefService; @Resource private TaoBaoGoodsBriefRecordService taoBaoGoodsBriefRecordService; @Resource private RedisManager redisManager; @Resource private QualityFactoryService selectionGoodsService; @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; @Resource private TaobaoMeterialService taobaoMeterialService; @Resource private GoodsClassService goodsClassService; @Resource private TaoBaoClassService taoBaoClassService; @RequestMapping(value = "getTBGoodsList", method = RequestMethod.POST) public void getTaoBaoGoodsBriefList(int pageIndex, String key, PrintWriter out) { List taoBaoGoodsBriefList = taoBaoGoodsBriefService.getTBList(pageIndex - 1, key); int count = taoBaoGoodsBriefService.getCount(key); int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1; PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage); Map map = new HashMap(); map.put("key", key); pe.setParams(map); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("taoBaoGoodsBriefList", GsonUtil.toDFJson(taoBaoGoodsBriefList)); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "getInvalidTaoBaoGoods", method = RequestMethod.POST) public void getInvalidTaoBaoGoods(int pageIndex, PrintWriter out) { List taoBaoGoodsBriefList = taoBaoGoodsBriefService.getInvalidTB(pageIndex); int count = taoBaoGoodsBriefService.getInvalidCount(); int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1; PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("taoBaoGoodsBriefList", GsonUtil.toDFJson(taoBaoGoodsBriefList)); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "getTaobaoGoods", method = RequestMethod.POST) public void getTaoBaoGoodsBrief(long id, PrintWriter out) { TaoBaoGoodsBrief taobao = taoBaoGoodsBriefService.getTaoBao(id); if (taobao == null) { out.append(JsonUtil.loadFalseResult("不存在该商品")); return; } JSONObject data = new JSONObject(); data.put("taobao", GsonUtil.toDFJson(taobao)); List list = new ArrayList(); list = TaoBaoUtil.getTbImg(taobao.getAuctionId() + ""); data.put("imgList", list); out.append(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "updateTaoBaoGoodsBrief", method = RequestMethod.POST) public void updateTaoBaoGoodsBrief(TaoBaoGoodsBrief tb, PrintWriter out) { try { taoBaoGoodsBriefService.updateTBGoods(tb); } catch (NotExistObjectException e) { out.append(JsonUtil.loadFalseResult(e.getMessage())); return; } out.append(JsonUtil.loadTrueResult("修改成功")); } @RequestMapping(value = "deleteTaoBaoGoods", method = RequestMethod.POST) public void deleteTaoBaoGoods(long[] ids, PrintWriter out) { for (long id : ids) { taoBaoGoodsBriefService.deleteTaoBaoGoods(id); } out.append(JsonUtil.loadTrueResult("删除成功")); } @RequestMapping(value = "addTaoBaoGoodsBrief", method = RequestMethod.POST) public void addTaoBaoGoodsBrief(String[] ids, PrintWriter out) { List list = new ArrayList(); JSONObject data = null; for (String id : ids) { data = new JSONObject(); TaoBaoGoodsBrief taoBaoGoodsBrief = null; try { taoBaoGoodsBrief = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id)); taoBaoGoodsBrief.setUpdatetime(new Date()); taoBaoGoodsBrief.setCreatetime(new Date()); } catch (NumberFormatException e1) { e1.printStackTrace(); } catch (TaobaoGoodsDownException e1) { e1.printStackTrace(); } try { taoBaoGoodsBriefService.insertSelective(taoBaoGoodsBrief); // taoBaoGoodsBriefService.save(taoBaoGoodsBrief); data.put("id", id); data.put("msg", "添加成功"); } catch (Exception e) { data.put("id", id); data.put("msg", e.getMessage()); } list.add(data); } JSONObject dataAll = new JSONObject(); dataAll.put("list", list); out.print(JsonUtil.loadTrueResult(dataAll)); } @RequestMapping(value = "addRecommendSectionGoods", method = RequestMethod.POST) public void addRecommendSectionGoods(long rsid, String tbids, PrintWriter out) { String[] tbidStrArr = tbids.split(","); long[] tbidArr = StringUtil.parseLong(tbidStrArr); List list = new ArrayList(); JSONObject data = null; for (long tbid : tbidArr) { data = new JSONObject(); try { taoBaoGoodsBriefService.addRecommendSectionGoods(rsid, tbid); data.put("id", tbid); data.put("msg", "添加成功"); } catch (NotExistObjectException e) { data.put("id", tbid); data.put("msg", e.getMessage()); } catch (ExistObjectException e) { data.put("id", tbid); data.put("msg", e.getMessage()); } list.add(data); } JSONObject dataAll = new JSONObject(); dataAll.put("list", list); out.print(JsonUtil.loadTrueResult(dataAll)); } @RequestMapping(value = "addClassRecommendGoods", method = RequestMethod.POST) public void addClassRecommendGoods(long gcid, String tbids, PrintWriter out) { String[] tbidStrArr = tbids.split(","); long[] tbidArr = StringUtil.parseLong(tbidStrArr); List list = new ArrayList(); JSONObject data = null; for (long tbid : tbidArr) { data = new JSONObject(); try { taoBaoGoodsBriefService.addClassRecommendGoods(gcid, tbid); data.put("id", tbid); data.put("msg", "添加成功"); } catch (NotExistObjectException e) { data.put("id", tbid); data.put("msg", e.getMessage()); } catch (ExistObjectException e) { data.put("id", tbid); data.put("msg", e.getMessage()); } list.add(data); } JSONObject dataAll = new JSONObject(); dataAll.put("list", list); out.print(JsonUtil.loadTrueResult(dataAll)); } @RequestMapping(value = "updateAllTaoBaoGoods", method = RequestMethod.POST) public void updateAllTaoBaoGoods(PrintWriter out) { taoBaoGoodsBriefService.getUpdateTaoBao(); out.print(JsonUtil.loadTrueResult("更新完成")); } /** * * @param callback * @param pageIndex * @param key * 关键词 * @param startPrice * 价格小值 * @param endPrice * 价格大值 * @param startTkRate * 佣金小值 * @param endTkRate * 佣金大值 * @param sort * 排序 * @param out */ @RequestMapping(value = "queryOnSale") public void queryOnSale(String callback, Integer pageIndex, Integer pageSize, String key, Long tbClassId, Integer startPrice, Integer endPrice, String startTkRate, String endTkRate, Integer sort, Integer istmall, Integer hasCoupon, Integer baoYou, Integer startDsr, Integer overseas, Integer needPrepay, Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel, PrintWriter out) { try { SearchFilter filter = new SearchFilter(); // 页大小,默认20,1~100 if (pageSize == null || pageSize < 1) pageSize = Constant.PAGE_SIZE; filter.setPageSize(pageSize); // 第几页,默认:1 if (pageIndex == null || pageIndex < 1) pageIndex = 1; filter.setPage(pageIndex); // 查询词 key------ 不能为空--------- if (!StringUtil.isNullOrEmpty(key)) filter.setKey(key); if (tbClassId != null) { GoodsClass rb = goodsClassService.getGoodsClass(tbClassId); if (rb == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类型已不存在,请刷新重试")); return; } else { // 淘宝类目id String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId); if (StringUtil.isNullOrEmpty(taoBaoCatIds)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类型淘宝id为空,请通知相关人员进行维护")); return; } else { filter.setCateIds(taoBaoCatIds); } } } // 查询条件和类目id不能同时为空 if (StringUtil.isNullOrEmpty(key) && tbClassId == null) { filter.setKey("女装"); } // 折扣价范围下限 if (startPrice != null) filter.setStartPrice(new BigDecimal(startPrice)); // 折扣价范围上限 if (endPrice != null && endPrice > 0) filter.setEndPrice(new BigDecimal(endPrice)); // 淘客佣金比率下限 如:1234表示12.34% if (!StringUtil.isNullOrEmpty(startTkRate)) { int tkRate = (int) (Float.parseFloat(startTkRate) * 100); filter.setStartTkRate(tkRate); } // 淘客佣金比率上限 如:1234表示12.34% if (!StringUtil.isNullOrEmpty(endTkRate)) { int tkRate = (int) (Float.parseFloat(endTkRate) * 100); filter.setEndTkRate(tkRate); } // 排序字段 // 销量(total_sales)淘客佣金比率(tk_rate)累计推广量(tk_total_sales)总支出佣金(tk_total_commi) if (sort != null) filter.setSort(sort); // 查询天猫 1 true if (istmall != null && istmall == 1) filter.setTmall(true); // 是否有券 1 true if (hasCoupon != null && hasCoupon == 1) filter.setQuan(1); // 是否包邮,true表示包邮,空或false表示不限 if (baoYou != null && baoYou == 1) { filter.setBaoYou(true); // filter.setIp("113.251.22.10");// 重庆 filter.setIp("218.72.111.105");// 杭州 } // 店铺dsr评分 if (startDsr != null && startDsr >= 0 && startDsr <= 50000) filter.setStartDsr(startDsr); // 是否海外商品 if (overseas != null && overseas == 1) filter.setOverseas(true); // 是否加入消费者保障, if (needPrepay != null && needPrepay == 1) filter.setNeedPrepay(true); // 成交转化是否高于行业均值 if (includePayRate30 != null && includePayRate30 == 1) filter.setIncludePayRate30(true); // 好评率是否高于行业均值 if (includeGoodRate != null && includeGoodRate == 1) filter.setIncludeGoodRate(true); // 退款率是否低于行业均值 if (includeRfdRate != null && includeRfdRate == 1) filter.setIncludeRfdRate(true); // 牛皮癣程度,取值:1:不限,2:无,3:轻微 if (npxLevel != null && npxLevel > 0 && npxLevel < 4) filter.setNpxLevel(npxLevel); boolean islink = false; Long auctionId = null; /* 判断是否是商品链接搜索 */ if (key != null && key.contains("//") && key.contains("&")) { String[] keyArray = key.split("\\?")[1].split("&"); if (keyArray != null && keyArray.length > 0) { String id = keyArray[0].replace("id=", "").trim(); if (!StringUtil.isNullOrEmpty(id)) { auctionId = Long.parseLong(id); islink = true; } } } TaoBaoSearchResult result = null; List taoBaoGoodsBriefs = null; if (!islink) { /* 淘宝物料搜索 */ result = TaoKeApiUtil.searchWuLiao(filter); if (result == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息")); return; } else { taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); } } else { /* 商品链接搜索 */ TaoBaoGoodsBrief searchGoodsDetail = TaoKeApiUtil.searchGoodsDetail(auctionId); if (searchGoodsDetail == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息")); return; } else { taoBaoGoodsBriefs = new ArrayList<>(); taoBaoGoodsBriefs.add(searchGoodsDetail); result = new TaoBaoSearchResult(); result.setTaoBaoGoodsBriefs(taoBaoGoodsBriefs); PageEntity pageEntity = new PageEntity(pageIndex, pageSize, 0, 0); result.setPageEntity(pageEntity); } } if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息")); return; } // 插入商品集合 List listAuctionId = new ArrayList(); for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) { listAuctionId.add(goodsBrief.getAuctionId()); } // 验证是否存在数据库 List listHas = selectionGoodsService.listQueryByAuctionId(listAuctionId); List> listmap = new ArrayList>(); for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) { taoBaoGoodsBrief.setId(null); Map map = new HashMap(); map.put("pictUrl", taoBaoGoodsBrief.getPictUrl()); map.put("title", taoBaoGoodsBrief.getTitle()); map.put("auctionId", taoBaoGoodsBrief.getAuctionId()); map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl()); map.put("shopTitle", taoBaoGoodsBrief.getShopTitle()); map.put("zkPrice", taoBaoGoodsBrief.getZkPrice()); map.put("biz30day", taoBaoGoodsBrief.getBiz30day()); map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo()); map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount()); map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount()); map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime()); map.put("tkRate", taoBaoGoodsBrief.getTkRate()); /* 商品销售状态: 0 在售 此获取的淘宝信息均为在售商品 */ map.put("saleStae", 0); // 来源 0 无 1淘宝 2 京东 map.put("goodsSource", 1); /* 1 定向计划 2 营销返利 、高佣 3 普佣 */ Integer includeDxjh = taoBaoGoodsBrief.getIncludeDxjh(); String tkMktStatus = taoBaoGoodsBrief.getTkMktStatus(); boolean include = false; if (includeDxjh != null) { if (includeDxjh == 1) { // 定向计划 map.put("yongjinType", 1); include = true; } } if (!include) { if ("1".equals(tkMktStatus)) { // 营销返利 、高佣 map.put("yongjinType", 2); } else { // 普佣 map.put("yongjinType", 3); } } /* 券后价--计算 */ BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief); map.put("couponPrice", couponPrice); /* 预计收益: 公司、用户 */ BigDecimal tkRate = taoBaoGoodsBrief.getTkRate(); BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice(); BigDecimal profit = MoneyBigDecimalUtil.mul(tkRate, zkPrice); // 计算结果 BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100")); // 预计收益 map.put("estimateProfit", estimateProfit); int existence = 0; /* 查询商品是否已存在商品精选库中 */ Long localAuctionId = taoBaoGoodsBrief.getAuctionId(); if (localAuctionId != null) { if (listHas != null && listHas.size() > 0) { for (QualityFactory selectionGoods : listHas) { TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief(); Long hasId = hasgoodsBrief.getAuctionId(); if (localAuctionId.equals(hasId) || localAuctionId == hasId) { existence = 1; // 存在商品中 } } } } map.put("isExistence", existence); listmap.add(map); } PageEntity pe = result.getPageEntity(); JSONObject data = new JSONObject(); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); // 重点 Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create(); data.put("pe", pe); data.put("listGoods", gson.toJson(listmap)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); // 插入本地数据-淘宝数据记录 taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常")); e.printStackTrace(); } } /** * * @param callback * @param pageIndex * @param key * 关键词 * @param startPrice * 价格小值 * @param endPrice * 价格大值 * @param startTkRate * 佣金小值 * @param endTkRate * 佣金大值 * @param sort * 排序 * @param out */ @RequestMapping(value = "searchAlimamaWeb") public void searchAlimamaWeb(String callback, Integer pageIndex, Integer pageSize, String key, Integer startPrice, Integer endPrice, String startTkRate, String endTkRate, Integer sort, Integer istmall, Integer hasCoupon, Integer searchType, Integer baoYou, String startBiz30day, String catIds, PrintWriter out) { try { SearchFilter filter = new SearchFilter(); // 页大小,默认20,1~100 if (pageSize == null || pageSize < 1) pageSize = Constant.PAGE_SIZE; filter.setPageSize(pageSize); // 第几页,默认:1 if (pageIndex == null || pageIndex < 1) pageIndex = 1; filter.setPage(pageIndex); // 筛选条件 优先筛选查询词 if (!StringUtil.isNullOrEmpty(key)) { filter.setKey(key); } else { // 高佣id if (!StringUtil.isNullOrEmpty(catIds)) { // 男装+ 类目id String[] split = catIds.split(","); filter.setCateIds(split[1]); } } // 折扣价范围下限 if (startPrice != null) filter.setStartPrice(new BigDecimal(startPrice)); // 折扣价范围上限 if (endPrice != null) filter.setEndPrice(new BigDecimal(endPrice)); // 佣金比率下限 if (!StringUtil.isNullOrEmpty(startTkRate)) { filter.setStartTkRate(Integer.parseInt(startTkRate)); } // 比率上限 if (!StringUtil.isNullOrEmpty(endTkRate)) { filter.setEndTkRate(Integer.parseInt(endTkRate)); } // 排序字段 if (sort != null) filter.setSort(sort); // 查询天猫 1 true if (istmall != null && istmall == 1) filter.setTmall(true); // 是否有券 1 true if (hasCoupon != null && hasCoupon == 1) filter.setQuan(1); // 是否包邮,true表示包邮,空或false表示不限 if (baoYou != null && baoYou == 1) filter.setBaoYou(true); // 销量 if (!StringUtil.isNullOrEmpty(startBiz30day)) filter.setStartBiz30day(startBiz30day); List config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); /* 淘宝网络 爬取 */ TaoBaoSearchResult result = TaoBaoUtil.searchAlimamaWeb(filter, config.get(0), searchType); List taoBaoGoodsBriefs = null; if (result == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息")); return; } else { taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); } if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息")); return; } else { List> listmap = new ArrayList>(); for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) { taoBaoGoodsBrief.setId(null); Map map = new HashMap(); map.put("pictUrl", taoBaoGoodsBrief.getPictUrl()); map.put("title", taoBaoGoodsBrief.getTitle()); map.put("auctionId", taoBaoGoodsBrief.getAuctionId()); map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl()); map.put("shopTitle", taoBaoGoodsBrief.getShopTitle()); map.put("zkPrice", taoBaoGoodsBrief.getZkPrice()); map.put("biz30day", taoBaoGoodsBrief.getBiz30day()); map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo()); map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount()); map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount()); map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime()); /* 佣金取较大的值 */ String eventRate = taoBaoGoodsBrief.getEventRate(); BigDecimal rate; BigDecimal tkRate2 = taoBaoGoodsBrief.getTkRate(); if (!StringUtil.isNullOrEmpty(eventRate)) { BigDecimal eRate = new BigDecimal(eventRate); int a = eRate.compareTo(tkRate2); if (a >= 0) { rate = eRate; } else { rate = tkRate2; } } else { rate = tkRate2; } map.put("tkRate", rate); /* 商品销售状态: 0 在售 此获取的淘宝信息均为在售商品 */ map.put("saleStae", 0); // 来源 0 无 1淘宝 2 京东 map.put("goodsSource", 1); /* 1 定向计划 2 营销返利 、高佣 3 普佣 */ // Integer includeDxjh = taoBaoGoodsBrief.getIncludeDxjh(); // String tkMktStatus = taoBaoGoodsBrief.getTkMktStatus(); /* * boolean include = false; if (includeDxjh != null) { if * (includeDxjh == 1) { // 定向计划 map.put("yongjinType",1); * include = true; } } */ /* * if (!include){ * * if ("1".equals(tkMktStatus)) { // 营销返利 、高佣 * map.put("yongjinType",2); } else { // 普佣 * map.put("yongjinType",3); } } */ /* 券后价--计算 */ BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief); map.put("couponPrice", couponPrice); /* 预计收益: 公司、用户 */ BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice(); BigDecimal profit = MoneyBigDecimalUtil.mul(rate, zkPrice); // 计算结果 BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100")); // 预计收益 map.put("estimateProfit", estimateProfit); int existence = 0; /* 查询商品是否已存在商品精选库中 */ Long localAuctionId = taoBaoGoodsBrief.getAuctionId(); if (localAuctionId != null) { List taoBaoGoodsBriefList = taoBaoGoodsBriefService .queryByAuctionId(localAuctionId); if (taoBaoGoodsBriefList != null && taoBaoGoodsBriefList.size() > 0) { TaoBaoGoodsBrief goodsBrief = taoBaoGoodsBriefList.get(0); if (goodsBrief != null) { Long id = goodsBrief.getId(); // 查询精选库 Long has = selectionGoodsService.queryCountByGoodsId(id); if (has != null && has > 0l) { existence = 1; // 存在商品中 } } } } map.put("isExistence", existence); listmap.add(map); } PageEntity pe = result.getPageEntity(); JSONObject data = new JSONObject(); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); // 重点 Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create(); data.put("pe", pe); data.put("listGoods", gson.toJson(listmap)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); // 插入本地数据-淘宝数据记录 taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs); } } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常")); e.printStackTrace(); } } /** * 获取淘宝高佣查询类目 * * @param callback * @param out */ @RequestMapping(value = "getNavList") public void getNavList(String callback, PrintWriter out) { try { SearchFilter filter = new SearchFilter(); filter.setPageSize(10); filter.setPage(1); List config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); /* 淘宝网络 爬取 */ TaoBaoSearchResult result = TaoBaoUtil.searchAlimamaWeb(filter, config.get(0), 3); if (result == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淘宝列表获取失败")); return; } List navList = result.getNavList(); if (navList == null || navList.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("淘宝列表获取失败")); return; } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("navList", gson.toJson(navList)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常")); e.printStackTrace(); } } /** * * @param callback * @param pageIndex * @param key * 关键词 * @param startPrice * 价格小值 * @param endPrice * 价格大值 * @param startTkRate * 佣金小值 * @param endTkRate * 佣金大值 * @param sort * 排序 * @param out */ @RequestMapping(value = "searchMaterial") public void searchMaterial(String callback, Integer pageIndex, Integer pageSize, String subName, String superName, PrintWriter out) { try { List taobaoMeterials = null; if (!StringUtil.isNullOrEmpty(subName) && !StringUtil.isNullOrEmpty(superName)) { taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperName(subName, superName); } else if (!StringUtil.isNullOrEmpty(superName)) { taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperName(null, superName); } else { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择筛选类目")); return; } if (taobaoMeterials == null || taobaoMeterials.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("类目信息不存在")); return; } TaobaoMeterial taobaoMeterial = taobaoMeterials.get(0); Integer materialId = taobaoMeterial.getMaterialId(); if (materialId == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该类目物料ID不存在")); return; } // 页大小,默认20,1~100 if (pageSize == null || pageSize < 1) pageSize = Constant.PAGE_SIZE; // 第几页,默认:1 if (pageIndex == null || pageIndex < 1) pageIndex = 1; TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize); if (result == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂未获取到相关数据")); return; } List taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据")); return; } // 插入商品集合 List listAuctionId = new ArrayList(); for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) { listAuctionId.add(goodsBrief.getAuctionId()); } // 验证是否存在数据库 List listHas = selectionGoodsService.listQueryByAuctionId(listAuctionId); List> listmap = new ArrayList>(); for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) { taoBaoGoodsBrief.setId(null); Map map = new HashMap(); map.put("pictUrl", taoBaoGoodsBrief.getPictUrl()); map.put("title", taoBaoGoodsBrief.getTitle()); map.put("auctionId", taoBaoGoodsBrief.getAuctionId()); map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl()); map.put("zkPrice", taoBaoGoodsBrief.getZkPrice()); map.put("biz30day", taoBaoGoodsBrief.getBiz30day()); map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo()); map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount()); map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount()); map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime()); map.put("tkRate", taoBaoGoodsBrief.getTkRate()); // 来源 0 无 1淘宝 2 京东 map.put("goodsSource", 1); /* 券后价--计算 */ BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief); map.put("couponPrice", couponPrice); /* 预计收益: 公司、用户 */ BigDecimal tkRate = taoBaoGoodsBrief.getTkRate(); BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice(); BigDecimal profit = MoneyBigDecimalUtil.mul(tkRate, zkPrice); // 计算结果 BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100")); // 预计收益 map.put("estimateProfit", estimateProfit); int existence = 0; /* 查询商品是否已存在商品精选库中 */ Long localAuctionId = taoBaoGoodsBrief.getAuctionId(); if (localAuctionId != null) { if (listHas != null && listHas.size() > 0) { for (QualityFactory selectionGoods : listHas) { TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief(); Long hasId = hasgoodsBrief.getAuctionId(); if (localAuctionId.equals(hasId) || localAuctionId == hasId) { existence = 1; // 存在商品中 } } } } map.put("isExistence", existence); listmap.add(map); } PageEntity pe = result.getPageEntity(); JSONObject data = new JSONObject(); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); // 重点 Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create(); data.put("pe", pe); data.put("listGoods", gson.toJson(listmap)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); // 插入本地数据-淘宝数据记录 taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常")); e.printStackTrace(); } } @RequestMapping(value = "getQiangGou") public void getQiangGou(String callback, Integer pageIndex, PrintWriter out) { try { int pageSize = 40; // 第几页,默认:1 if (pageIndex == null || pageIndex < 1) pageIndex = 1; String startTime = "2018-09-17 09:00:00"; String endTime = "2018-09-17 16:00:00"; TaoBaoSearchResult result = TaoKeApiUtil.taoQiangGou(pageIndex, pageSize, startTime, endTime); if (result == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂未获取到相关数据")); return; } List taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据")); return; } // 插入商品集合 List listAuctionId = new ArrayList(); for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) { listAuctionId.add(goodsBrief.getAuctionId()); } // 验证是否存在数据库 List listHas = selectionGoodsService.listQueryByAuctionId(listAuctionId); List> listmap = new ArrayList>(); for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) { taoBaoGoodsBrief.setId(null); Map map = new HashMap(); map.put("pictUrl", taoBaoGoodsBrief.getPictUrl()); map.put("title", taoBaoGoodsBrief.getTitle()); map.put("auctionId", taoBaoGoodsBrief.getAuctionId()); map.put("auctionUrl", taoBaoGoodsBrief.getAuctionUrl()); map.put("zkPrice", taoBaoGoodsBrief.getZkPrice()); map.put("biz30day", taoBaoGoodsBrief.getBiz30day()); map.put("couponInfo", taoBaoGoodsBrief.getCouponInfo()); map.put("couponTotalCount", taoBaoGoodsBrief.getCouponTotalCount()); map.put("couponLeftCount", taoBaoGoodsBrief.getCouponLeftCount()); map.put("couponEffectiveEndTime", taoBaoGoodsBrief.getCouponEffectiveEndTime()); map.put("tkRate", taoBaoGoodsBrief.getTkRate()); // 来源 0 无 1淘宝 2 京东 map.put("goodsSource", 1); /* 券后价--计算 */ BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief); map.put("couponPrice", couponPrice); /* 预计收益: 公司、用户 */ BigDecimal tkRate = taoBaoGoodsBrief.getTkRate(); BigDecimal zkPrice = taoBaoGoodsBrief.getZkPrice(); BigDecimal profit = MoneyBigDecimalUtil.mul(tkRate, zkPrice); // 计算结果 BigDecimal estimateProfit = MoneyBigDecimalUtil.div(profit, new BigDecimal("100")); // 预计收益 map.put("estimateProfit", estimateProfit); int existence = 0; /* 查询商品是否已存在商品精选库中 */ Long localAuctionId = taoBaoGoodsBrief.getAuctionId(); if (localAuctionId != null) { if (listHas != null && listHas.size() > 0) { for (QualityFactory selectionGoods : listHas) { TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief(); Long hasId = hasgoodsBrief.getAuctionId(); if (localAuctionId.equals(hasId) || localAuctionId == hasId) { existence = 1; // 存在商品中 } } } } map.put("isExistence", existence); listmap.add(map); } PageEntity pe = result.getPageEntity(); JSONObject data = new JSONObject(); GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); // 重点 Gson gson = gsonBuilder.setDateFormat("yyyy-MM-dd").create(); data.put("pe", pe); data.put("listGoods", gson.toJson(listmap)); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); // // 插入本地数据-淘宝数据记录 taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常")); e.printStackTrace(); } } }