admin
2020-05-20 98b1a0affd69bbe63223c21fdd2c404e8bedfccb
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoGoodsBriefAdminController.java
@@ -3,7 +3,6 @@
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;
@@ -13,7 +12,6 @@
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;
@@ -29,21 +27,17 @@
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.entity.taobao.dataoke.DaTaoKeDetailV2;
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.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
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;
@@ -56,13 +50,10 @@
   @Resource
   private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
   @Resource
   private TaoBaoGoodsBriefRecordService taoBaoGoodsBriefRecordService;
   @Resource
   private RedisManager redisManager;
   @Resource
   private QualityFactoryService qualityFactoryService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
@@ -73,160 +64,9 @@
   @Resource
   private TaoBaoClassService taoBaoClassService;
   @RequestMapping(value = "getTBGoodsList", method = RequestMethod.POST)
   public void getTaoBaoGoodsBriefList(int pageIndex, String key, PrintWriter out) {
      List<TaoBaoGoodsBrief> 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<String, String> map = new HashMap<String, String>();
      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<TaoBaoGoodsBrief> 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<String> list = new ArrayList<String>();
      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<JSONObject> list = new ArrayList<JSONObject>();
      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<JSONObject> list = new ArrayList<JSONObject>();
      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<JSONObject> list = new ArrayList<JSONObject>();
      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("更新完成"));
   }
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   /**
    * 
@@ -250,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) {
@@ -382,9 +222,10 @@
      }
   }
   /**
    *  加入精选库商品
    * 加入精选库商品
    *
    * @param callback
    * @param pageIndex
    * @param key
@@ -416,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) {
@@ -456,10 +298,12 @@
               }
            }
         }
         AdminUser admin = (AdminUser) request.getSession().getAttribute(Constant.SESSION_ADMIN);
         // 插入精选库
         qualityFactoryService.addBatchTaoBaoGoods(listAddGoods, lableNames, admin);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("加入成功"));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMessage()));
@@ -470,6 +314,7 @@
   /**
    * 根据条件淘宝商品查询
    *
    * @param pageIndex
    * @param pageSize
    * @param key
@@ -494,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();
@@ -509,8 +354,8 @@
         GoodsClass rb = goodsClassService.getGoodsClass(tbClassId);
         if (rb == null) {
            throw new Exception("该类型已不存在,请刷新重试");
         }
         }
         // 淘宝类目id
         String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId);
         if (StringUtil.isNullOrEmpty(taoBaoCatIds)) {
@@ -519,6 +364,8 @@
            filter.setCateIds(taoBaoCatIds);
         }
      }
      if (!StringUtil.isNullOrEmpty(cids))
         filter.setCateIds(cids);
      // 查询条件和类目id不能同时为空
      if (StringUtil.isNullOrEmpty(key) && tbClassId == null) {
@@ -542,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);
      }
@@ -588,8 +436,7 @@
      if (npxLevel != null && npxLevel > 0 && npxLevel < 4) {
         filter.setNpxLevel(npxLevel);
      }
      boolean islink = false;
      Long auctionId = null;
      /* 判断是否是商品链接搜索 */
@@ -848,9 +695,6 @@
            data.put("listGoods", gson.toJson(listmap));
            JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
            // 插入本地数据-淘宝数据记录
            taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
         }
      } catch (Exception e) {
@@ -1051,14 +895,117 @@
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
         // 插入本地数据-淘宝数据记录
         taoBaoGoodsBriefRecordService.insertBatch(taoBaoGoodsBriefs);
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
   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<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.listSearchByTitleWithCid(key, cid, pageIndex,
               pageSize);
         long count = daTaoKeGoodsDetailV2Service.countSearchByTitleWithCid(key, cid);
         List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
         for (DaTaoKeDetailV2 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")
@@ -1151,7 +1098,6 @@
            }
            map.put("isExistence", existence);
            listmap.add(map);
         }
@@ -1166,10 +1112,6 @@
         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();