admin
2024-01-23 81da61b828e29b7745e1382dfbbaeb685dc083ef
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoGoodsBriefAdminController.java
@@ -1,1123 +1,1111 @@
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.goods.facade.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.goods.facade.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.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.goods.facade.service.DaTaoKeGoodsDetailV2Service;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import org.yeshi.utils.MoneyBigDecimalUtil;
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 QualityFactoryService qualityFactoryService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
   private TaobaoMeterialService taobaoMeterialService;
   @Resource
   private GoodsClassService goodsClassService;
   @Resource
   private TaoBaoClassService taoBaoClassService;
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   /**
    *
    * @param callback
    * @param pageIndex
    * @param key
    *            关键词
    * @param startPrice
    *            价格小值
    * @param endPrice
    *            价格大值
    * @param startTkRate
    *            佣金小值
    * @param endTkRate
    *            佣金大值
    * @param sort
    *            排序
    * @param out
    */
   @RequestMapping(value = "queryOnSale")
   public void queryOnSale(AdminAcceptData acceptData, 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, 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,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) {
            listAuctionId.add(goodsBrief.getAuctionId());
         }
         // 验证是否存在数据库
         List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
         List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listTaoBaoGoods) {
            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("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));
      } 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 = "addTBGoodsFactory")
   public void addTBGoodsFactory(AdminAcceptData acceptData,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,
         String auctionIds, String lableNames, HttpServletRequest request, PrintWriter out) {
      try {
         if (StringUtil.isNullOrEmpty(auctionIds)) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请选择正确的商品入库")));
            return;
         }
         Gson gson2 = new Gson();
         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,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) {
            Long auctionId = taoBaoGoodsBrief.getAuctionId();
            if (listTaoBaoId.contains(auctionId)) {
               listAddGoods.add(taoBaoGoodsBrief);
               listTaoBaoId.remove(auctionId);
            }
         }
         if (listTaoBaoId != null && listTaoBaoId.size() > 0) {
            for (Long auctionId : listTaoBaoId) {
               /* 根据auctionId 获取淘宝商品 */
               TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.searchGoodsDetail(auctionId);
               if (goodsBrief != null) {
                  listAddGoods.add(goodsBrief);
               }
            }
         }
         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()));
         e.printStackTrace();
      }
   }
   /**
    * 根据条件淘宝商品查询
    *
    * @param pageIndex
    * @param pageSize
    * @param key
    * @param tbClassId
    * @param startPrice
    * @param endPrice
    * @param startTkRate
    * @param endTkRate
    * @param sort
    * @param istmall
    * @param hasCoupon
    * @param baoYou
    * @param startDsr
    * @param overseas
    * @param needPrepay
    * @param includePayRate30
    * @param includeGoodRate
    * @param includeRfdRate
    * @param npxLevel
    * @throws Exception
    */
   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, String cids)
         throws Exception {
      SearchFilter filter = new SearchFilter();
      filter.setPageSize(pageSize);
      filter.setPage(pageIndex);
      // 查询词 key------ 不能为空---------
      if (!StringUtil.isNullOrEmpty(key))
         filter.setKey(key);
      if (tbClassId != null) {
         GoodsClass rb = goodsClassService.getGoodsClass(tbClassId);
         if (rb == null) {
            throw new Exception("该类型已不存在,请刷新重试");
         }
         // 淘宝类目id
         String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId);
         if (StringUtil.isNullOrEmpty(taoBaoCatIds)) {
            throw new Exception("该类型淘宝id为空,请通知相关人员进行维护");
         } else {
            filter.setCateIds(taoBaoCatIds);
         }
      }
      if (!StringUtil.isNullOrEmpty(cids))
         filter.setCateIds(cids);
      // 查询条件和类目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;
      if (!islink) {
         /* 淘宝物料搜索 */
         result = TaoKeApiUtil.searchWuLiao(filter,null,null);
      } else {
         /* 商品链接搜索 */
         TaoBaoGoodsBrief searchGoodsDetail = TaoKeApiUtil.searchGoodsDetail(auctionId);
         if (searchGoodsDetail != null) {
            List<TaoBaoGoodsBrief> listGoods = new ArrayList<>();
            listGoods.add(searchGoodsDetail);
            result = new TaoBaoSearchResult();
            result.setTaoBaoGoodsBriefs(listGoods);
            PageEntity pageEntity = new PageEntity(pageIndex, pageSize, 1, 1);
            result.setPageEntity(pageEntity);
         }
      }
      return result;
   }
   /**
    *
    * @param callback
    * @param pageIndex
    * @param key
    *            关键词
    * @param startPrice
    *            价格小值
    * @param endPrice
    *            价格大值
    * @param startTkRate
    *            佣金小值
    * @param endTkRate
    *            佣金大值
    * @param sort
    *            排序
    * @param out
    */
   @RequestMapping(value = "searchAlimamaWeb")
   public void searchAlimamaWeb(AdminAcceptData acceptData,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<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
         /* 淘宝网络 爬取 */
         TaoBaoSearchResult result = TaoBaoUtil.searchAlimamaWeb(filter, config.get(0), searchType);
         List<TaoBaoGoodsBrief> 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<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
            for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
               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("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<TaoBaoGoodsBrief> taoBaoGoodsBriefList = taoBaoGoodsBriefService
                        .queryByAuctionId(localAuctionId);
                  if (taoBaoGoodsBriefList != null && taoBaoGoodsBriefList.size() > 0) {
                     TaoBaoGoodsBrief goodsBrief = taoBaoGoodsBriefList.get(0);
                     if (goodsBrief != null) {
                        Long id = goodsBrief.getId();
                        // 查询精选库
                        Long has = qualityFactoryService.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));
         }
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
   /**
    * 获取淘宝高佣查询类目
    *
    * @param callback
    * @param out
    */
   @RequestMapping(value = "getNavList")
   public void getNavList(AdminAcceptData acceptData,String callback, PrintWriter out) {
      try {
         SearchFilter filter = new SearchFilter();
         filter.setPageSize(10);
         filter.setPage(1);
         List<TaoBaoUnionConfig> 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<TaoBaoSearchNav> 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(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String subName, String superName,
         PrintWriter out) {
      try {
         List<TaobaoMeterial> 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<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
         if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         // 插入商品集合
         List<Long> listAuctionId = new ArrayList<Long>();
         for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) {
            listAuctionId.add(goodsBrief.getAuctionId());
         }
         // 验证是否存在数据库
         List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
         List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
            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);
         }
         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));
      } 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(AdminAcceptData acceptData,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")
   public void getQiangGou(AdminAcceptData acceptData,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<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
         if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         // 插入商品集合
         List<Long> listAuctionId = new ArrayList<Long>();
         for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) {
            listAuctionId.add(goodsBrief.getAuctionId());
         }
         // 验证是否存在数据库
         List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
         List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
            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);
         }
         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));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
}
package com.yeshi.fanli.controller.admin;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.yeshi.fanli.entity.accept.AdminAcceptData;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.common.AdminUser;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.goods.facade.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.goods.facade.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.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.goods.facade.service.DaTaoKeGoodsDetailV2Service;
import com.yeshi.common.entity.PageEntity;
import com.yeshi.fanli.util.Constant;
import org.yeshi.utils.MoneyBigDecimalUtil;
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 QualityFactoryService qualityFactoryService;
   @Resource
   private TaoBaoUnionConfigService taoBaoUnionConfigService;
   @Resource
   private TaobaoMeterialService taobaoMeterialService;
   @Resource
   private GoodsClassService goodsClassService;
   @Resource
   private TaoBaoClassService taoBaoClassService;
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   /**
    *
    * @param callback
    * @param pageIndex
    * @param key
    *            关键词
    * @param startPrice
    *            价格小值
    * @param endPrice
    *            价格大值
    * @param startTkRate
    *            佣金小值
    * @param endTkRate
    *            佣金大值
    * @param sort
    *            排序
    * @param out
    */
   @RequestMapping(value = "queryOnSale")
   public void queryOnSale(AdminAcceptData acceptData, 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, 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,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<String> listAuctionId = new ArrayList<>();
         for (TaoBaoGoodsBrief goodsBrief : listTaoBaoGoods) {
            listAuctionId.add(goodsBrief.getAuctionId());
         }
         // 验证是否存在数据库
         List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
         List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listTaoBaoGoods) {
            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("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.getCouponPrice(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;
            /* 查询商品是否已存在商品精选库中 */
            String localAuctionId = taoBaoGoodsBrief.getAuctionId();
            if (localAuctionId != null) {
               if (listHas != null && listHas.size() > 0) {
                  for (QualityFactory selectionGoods : listHas) {
                     TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
                     String hasId = hasgoodsBrief.getAuctionId();
                     if (TaoBaoUtil.isEqual( 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));
      } 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 = "addTBGoodsFactory")
   public void addTBGoodsFactory(AdminAcceptData acceptData,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,
         String auctionIds, String lableNames, HttpServletRequest request, PrintWriter out) {
      try {
         if (StringUtil.isNullOrEmpty(auctionIds)) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请选择正确的商品入库")));
            return;
         }
         Gson gson2 = new Gson();
         List<String> listTaoBaoId = gson2.fromJson(auctionIds, new TypeToken<ArrayList<String>>() {
         }.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,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<>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listTaoBaoGoods) {
            String auctionId = taoBaoGoodsBrief.getAuctionId();
            if (listTaoBaoId.contains(auctionId)) {
               listAddGoods.add(taoBaoGoodsBrief);
               listTaoBaoId.remove(auctionId);
            }
         }
         if (listTaoBaoId != null && listTaoBaoId.size() > 0) {
            for (String auctionId : listTaoBaoId) {
               /* 根据auctionId 获取淘宝商品 */
               TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.searchGoodsDetail(auctionId);
               if (goodsBrief != null) {
                  listAddGoods.add(goodsBrief);
               }
            }
         }
         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()));
         e.printStackTrace();
      }
   }
   /**
    * 根据条件淘宝商品查询
    *
    * @param pageIndex
    * @param pageSize
    * @param key
    * @param tbClassId
    * @param startPrice
    * @param endPrice
    * @param startTkRate
    * @param endTkRate
    * @param sort
    * @param istmall
    * @param hasCoupon
    * @param baoYou
    * @param startDsr
    * @param overseas
    * @param needPrepay
    * @param includePayRate30
    * @param includeGoodRate
    * @param includeRfdRate
    * @param npxLevel
    * @throws Exception
    */
   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, String cids)
         throws Exception {
      SearchFilter filter = new SearchFilter();
      filter.setPageSize(pageSize);
      filter.setPage(pageIndex);
      // 查询词 key------ 不能为空---------
      if (!StringUtil.isNullOrEmpty(key))
         filter.setKey(key);
      if (tbClassId != null) {
         GoodsClass rb = goodsClassService.getGoodsClass(tbClassId);
         if (rb == null) {
            throw new Exception("该类型已不存在,请刷新重试");
         }
         // 淘宝类目id
         String taoBaoCatIds = taoBaoClassService.getTaoBaoCatIds(tbClassId);
         if (StringUtil.isNullOrEmpty(taoBaoCatIds)) {
            throw new Exception("该类型淘宝id为空,请通知相关人员进行维护");
         } else {
            filter.setCateIds(taoBaoCatIds);
         }
      }
      if (!StringUtil.isNullOrEmpty(cids))
         filter.setCateIds(cids);
      // 查询条件和类目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;
      String 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 = id;
               islink = true;
            }
         }
      }
      TaoBaoSearchResult result = null;
      if (!islink) {
         /* 淘宝物料搜索 */
         result = TaoKeApiUtil.searchWuLiaoNew(filter,null,null);
      } else {
         /* 商品链接搜索 */
         TaoBaoGoodsBrief searchGoodsDetail = TaoKeApiUtil.searchGoodsDetail(auctionId);
         if (searchGoodsDetail != null) {
            List<TaoBaoGoodsBrief> listGoods = new ArrayList<>();
            listGoods.add(searchGoodsDetail);
            result = new TaoBaoSearchResult();
            result.setTaoBaoGoodsBriefs(listGoods);
            PageEntity pageEntity = new PageEntity(pageIndex, pageSize, 1, 1);
            result.setPageEntity(pageEntity);
         }
      }
      return result;
   }
   /**
    *
    * @param callback
    * @param pageIndex
    * @param key
    *            关键词
    * @param startPrice
    *            价格小值
    * @param endPrice
    *            价格大值
    * @param startTkRate
    *            佣金小值
    * @param endTkRate
    *            佣金大值
    * @param sort
    *            排序
    * @param out
    */
   @RequestMapping(value = "searchAlimamaWeb")
   public void searchAlimamaWeb(AdminAcceptData acceptData,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<TaoBaoUnionConfig> config = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID);
         /* 淘宝网络 爬取 */
         TaoBaoSearchResult result = TaoBaoUtil.searchAlimamaWeb(filter, config.get(0), searchType);
         List<TaoBaoGoodsBrief> 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<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
            for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
               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("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.getCouponPrice(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;
               /* 查询商品是否已存在商品精选库中 */
               String localAuctionId = taoBaoGoodsBrief.getAuctionId();
               if (localAuctionId != null) {
                  List<TaoBaoGoodsBrief> taoBaoGoodsBriefList = taoBaoGoodsBriefService
                        .queryByAuctionId(localAuctionId);
                  if (taoBaoGoodsBriefList != null && taoBaoGoodsBriefList.size() > 0) {
                     TaoBaoGoodsBrief goodsBrief = taoBaoGoodsBriefList.get(0);
                     if (goodsBrief != null) {
                        String id = goodsBrief.getAuctionId();
                        // 查询精选库
                        Long has = qualityFactoryService.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));
         }
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
   /**
    * 获取淘宝高佣查询类目
    *
    * @param callback
    * @param out
    */
   @RequestMapping(value = "getNavList")
   public void getNavList(AdminAcceptData acceptData,String callback, PrintWriter out) {
      try {
         SearchFilter filter = new SearchFilter();
         filter.setPageSize(10);
         filter.setPage(1);
         List<TaoBaoUnionConfig> 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<TaoBaoSearchNav> 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 out
    */
   @RequestMapping(value = "searchMaterial")
   public void searchMaterial(AdminAcceptData acceptData,String callback, Integer pageIndex, Integer pageSize, String subName, String superName,
         PrintWriter out) {
      try {
         List<TaobaoMeterial> 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<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
         if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         // 插入商品集合
         List<String> listAuctionId = new ArrayList<>();
         for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) {
            listAuctionId.add(goodsBrief.getAuctionId());
         }
         // 验证是否存在数据库
         List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
         List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
            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.getCouponPrice(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;
            /* 查询商品是否已存在商品精选库中 */
            String localAuctionId = taoBaoGoodsBrief.getAuctionId();
            if (localAuctionId != null) {
               if (listHas != null && listHas.size() > 0) {
                  for (QualityFactory selectionGoods : listHas) {
                     TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
                     String hasId = hasgoodsBrief.getAuctionId();
                     if (TaoBaoUtil.isEqual(  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));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
   private List<Map<String, Object>> filterTaoBaoGoodsWithQulity(List<TaoBaoGoodsBrief> goodsList) {
      // 插入商品集合
      List<String> listAuctionId = new ArrayList<>();
      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.getCouponPrice(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;
         /* 查询商品是否已存在商品精选库中 */
         String localAuctionId = taoBaoGoodsBrief.getAuctionId();
         if (localAuctionId != null) {
            if (listHas != null && listHas.size() > 0) {
               for (QualityFactory selectionGoods : listHas) {
                  TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
                  String hasId = hasgoodsBrief.getAuctionId();
                  if (TaoBaoUtil.isEqual(localAuctionId,hasId)) {
                     existence = 1; // 存在商品中
                  }
               }
            }
         }
         map.put("isExistence", existence);
         listmap.add(map);
      }
      return listmap;
   }
   @RequestMapping(value = "searchDaTaoKe")
   public void searchDaTaoKe(AdminAcceptData acceptData,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")
   public void getQiangGou(AdminAcceptData acceptData,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<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
         if (taoBaoGoodsBriefs == null || taoBaoGoodsBriefs.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无相关数据"));
            return;
         }
         // 插入商品集合
         List<String> listAuctionId = new ArrayList<>();
         for (TaoBaoGoodsBrief goodsBrief : taoBaoGoodsBriefs) {
            listAuctionId.add(goodsBrief.getAuctionId());
         }
         // 验证是否存在数据库
         List<QualityFactory> listHas = qualityFactoryService.listQueryByAuctionId(listAuctionId);
         List<Map<String, Object>> listmap = new ArrayList<Map<String, Object>>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
            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.getCouponPrice(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;
            /* 查询商品是否已存在商品精选库中 */
            String localAuctionId = taoBaoGoodsBrief.getAuctionId();
            if (localAuctionId != null) {
               if (listHas != null && listHas.size() > 0) {
                  for (QualityFactory selectionGoods : listHas) {
                     TaoBaoGoodsBrief hasgoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
                     String hasId = hasgoodsBrief.getAuctionId();
                     if ( TaoBaoUtil.isEqual(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));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询异常"));
         e.printStackTrace();
      }
   }
}