admin
2019-06-14 1e92eff67b997263ecefa255c63eb6641c47b57f
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoGoodsBriefAdminController.java
@@ -27,12 +27,14 @@
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.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.service.inter.goods.GoodsClassService;
import com.yeshi.fanli.service.inter.goods.TaoBaoClassService;
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.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
@@ -51,7 +53,7 @@
   @Resource
   private QualityFactoryService qualityFactoryService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
@@ -62,7 +64,9 @@
   @Resource
   private TaoBaoClassService taoBaoClassService;
   @Resource
   private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
   /**
    * 
@@ -86,26 +90,26 @@
   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,
         Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel, String cid,
         PrintWriter out) {
      try {
         // 查询物料
         TaoBaoSearchResult result = getGoodsByWuLiao(pageIndex, pageSize, key, tbClassId, startPrice, endPrice, startTkRate, endTkRate, sort,
               istmall, hasCoupon, baoYou, startDsr, overseas, needPrepay,   includePayRate30, includeGoodRate,
               includeRfdRate, npxLevel);
         TaoBaoSearchResult result = getGoodsByWuLiao(pageIndex, pageSize, key, tbClassId, startPrice, endPrice,
               startTkRate, endTkRate, sort, istmall, hasCoupon, baoYou, startDsr, overseas, needPrepay,
               includePayRate30, includeGoodRate, includeRfdRate, npxLevel,cid);
         if (result == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
            return;
         }
         List<TaoBaoGoodsBrief> listTaoBaoGoods = result.getTaoBaoGoodsBriefs();
         if (listTaoBaoGoods == null || listTaoBaoGoods.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息"));
            return;
         }
         // 插入商品集合
         List<Long> listAuctionId = new ArrayList<Long>();
         for (TaoBaoGoodsBrief goodsBrief : listTaoBaoGoods) {
@@ -218,9 +222,10 @@
      }
   }
   /**
    *  加入精选库商品
    * 加入精选库商品
    *
    * @param callback
    * @param pageIndex
    * @param key
@@ -252,39 +257,40 @@
         }
         Gson gson2 = new Gson();
         List<Long> listTaoBaoId = gson2.fromJson(auctionIds, new TypeToken<ArrayList<Long>>() {}.getType());
         List<Long> listTaoBaoId = gson2.fromJson(auctionIds, new TypeToken<ArrayList<Long>>() {
         }.getType());
         if (listTaoBaoId == null || listTaoBaoId.size() == 0) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请选择正确的商品入库")));
            return;
         }
         // 查询物料
         TaoBaoSearchResult result = getGoodsByWuLiao(pageIndex, pageSize, key, tbClassId, startPrice, endPrice, startTkRate, endTkRate, sort,
               istmall, hasCoupon, baoYou, startDsr, overseas, needPrepay,   includePayRate30, includeGoodRate,
               includeRfdRate, npxLevel);
         TaoBaoSearchResult result = getGoodsByWuLiao(pageIndex, pageSize, key, tbClassId, startPrice, endPrice,
               startTkRate, endTkRate, sort, istmall, hasCoupon, baoYou, startDsr, overseas, needPrepay,
               includePayRate30, includeGoodRate, includeRfdRate, npxLevel,null);
         if (result == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未获取到淘宝商品信息"));
            return;
         }
         List<TaoBaoGoodsBrief> listTaoBaoGoods = result.getTaoBaoGoodsBriefs();
         if (listTaoBaoGoods == null || listTaoBaoGoods.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未查询到淘宝商品信息"));
            return;
         }
         List<TaoBaoGoodsBrief> listAddGoods = new ArrayList<TaoBaoGoodsBrief>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief: listTaoBaoGoods) {
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listTaoBaoGoods) {
            Long auctionId = taoBaoGoodsBrief.getAuctionId();
            if (listTaoBaoId.contains(auctionId)) {
               listAddGoods.add(taoBaoGoodsBrief);
               listTaoBaoId.remove(auctionId);
            }
         }
         if (listTaoBaoId != null && listTaoBaoId.size() > 0) {
            for (Long auctionId: listTaoBaoId) {
            for (Long auctionId : listTaoBaoId) {
               /* 根据auctionId 获取淘宝商品 */
               TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.searchGoodsDetail(auctionId);
               if (goodsBrief != null) {
@@ -292,11 +298,11 @@
               }
            }
         }
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         // 插入精选库
         qualityFactoryService.addBatchTaoBaoGoods(listAddGoods, lableNames, admin);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("加入成功"));
      } catch (Exception e) {
@@ -308,6 +314,7 @@
   /**
    * 根据条件淘宝商品查询
    *
    * @param pageIndex
    * @param pageSize
    * @param key
@@ -332,7 +339,7 @@
   public TaoBaoSearchResult getGoodsByWuLiao(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)
         Integer includePayRate30, Integer includeGoodRate, Integer includeRfdRate, Integer npxLevel, String cids)
         throws Exception {
      SearchFilter filter = new SearchFilter();
@@ -347,8 +354,8 @@
         GoodsClass rb = goodsClassService.getGoodsClass(tbClassId);
         if (rb == null) {
            throw new Exception("该类型已不存在,请刷新重试");
         }
         }
         // 淘宝类目id
         String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId);
         if (StringUtil.isNullOrEmpty(taoBaoCatIds)) {
@@ -357,6 +364,8 @@
            filter.setCateIds(taoBaoCatIds);
         }
      }
      if (!StringUtil.isNullOrEmpty(cids))
         filter.setCateIds(cids);
      // 查询条件和类目id不能同时为空
      if (StringUtil.isNullOrEmpty(key) && tbClassId == null) {
@@ -380,7 +389,8 @@
         int tkRate = (int) (Float.parseFloat(endTkRate) * 100);
         filter.setEndTkRate(tkRate);
      }
      // 排序字段 销量(total_sales)淘客佣金比率(tk_rate)累计推广量(tk_total_sales)总支出佣金(tk_total_commi)
      // 排序字段
      // 销量(total_sales)淘客佣金比率(tk_rate)累计推广量(tk_total_sales)总支出佣金(tk_total_commi)
      if (sort != null) {
         filter.setSort(sort);
      }
@@ -426,8 +436,7 @@
      if (npxLevel != null && npxLevel > 0 && npxLevel < 4) {
         filter.setNpxLevel(npxLevel);
      }
      boolean islink = false;
      Long auctionId = null;
      /* 判断是否是商品链接搜索 */
@@ -892,6 +901,112 @@
      }
   }
   private List<Map<String, Object>> filterTaoBaoGoodsWithQulity(List<TaoBaoGoodsBrief> goodsList) {
      // 插入商品集合
      List<Long> listAuctionId = new ArrayList<Long>();
      for (TaoBaoGoodsBrief goodsBrief : goodsList) {
         listAuctionId.add(goodsBrief.getAuctionId());
      }
      // 验证是否存在数据库
      List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
      List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
      for (TaoBaoGoodsBrief taoBaoGoodsBrief : goodsList) {
         taoBaoGoodsBrief.setId(null);
         Map<String, Object> map = new HashMap<String, Object>();
         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);
      }
      return listmap;
   }
   @RequestMapping(value = "searchDaTaoKe")
   public void searchDaTaoKe(String callback, Integer pageIndex, Integer pageSize, String key, Long cid,
         PrintWriter out) {
      try {
         key = StringUtil.isNullOrEmpty(key) ? "" : key;
         List<DaTaoKeDetail> list = daTaoKeGoodsDetailService.listSearchByTitleWithCid(key, cid, pageIndex,
               pageSize);
         long count = daTaoKeGoodsDetailService.countSearchByTitleWithCid(key, cid);
         List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
         for (DaTaoKeDetail detail : list) {
            goodsList.add(TaoBaoUtil.convert(detail));
         }
         List<Map<String, Object>> listmap = filterTaoBaoGoodsWithQulity(goodsList);
         PageEntity pe = new PageEntity(pageIndex, pageSize, (int) count,(int)(count%pageSize==0?count/pageSize:count/pageSize+1));
         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));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
   @RequestMapping(value = "getQiangGou")
   public void getQiangGou(String callback, Integer pageIndex, PrintWriter out) {