admin
2020-05-19 744594ef1a2f530fc3e86ea9dc48b62247f79420
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/BrandControllerV2.java
@@ -1,7 +1,6 @@
package com.yeshi.fanli.controller.client.v2;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -14,25 +13,44 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.brand.BrandGoodsCahe;
import com.yeshi.fanli.entity.brand.BrandInfo;
import com.yeshi.fanli.entity.brand.BrandInfoRecord;
import com.yeshi.fanli.entity.brand.BrandShopCahe;
import com.yeshi.fanli.entity.brand.TaoBaoShopHistory;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoShop;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.service.inter.brand.BrandClassService;
import com.yeshi.fanli.service.inter.brand.BrandClassShopService;
import com.yeshi.fanli.service.inter.brand.BrandGoodsCaheService;
import com.yeshi.fanli.service.inter.brand.BrandInfoRecordService;
import com.yeshi.fanli.service.inter.brand.BrandInfoService;
import com.yeshi.fanli.service.inter.brand.BrandShopCaheService;
import com.yeshi.fanli.service.inter.brand.TaoBaoShopHistoryService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.brand.BrandInfoVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.goods.ShopInfoVO;
import com.yeshi.fanli.vo.homemodule.BannerVO;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -54,17 +72,32 @@
   private TaoBaoShopHistoryService taoBaoShopHistoryService;
   @Resource
   private HongBaoManageService hongBaoManageService;
   private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
   @Resource
   private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
   @Resource
   private DaTaoKeGoodsService daTaoKeGoodsService;
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   @Resource
   private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
   @Resource
   private BrandInfoService brandInfoService;
   @Resource
   private SwiperPictureService swiperPictureService;
   @Resource
   private BrandInfoRecordService brandInfoRecordService;
   @Resource
   private BrandGoodsCaheService brandGoodsCaheService;
   @Resource
   private BrandShopCaheService brandShopCaheService;
   /**
    * 店铺列表
@@ -74,16 +107,91 @@
    */
   @RequestMapping(value = "getShopList", method = RequestMethod.POST)
   public void getShopList(AcceptData acceptData, Integer page, Long cid, PrintWriter out) {
      try {
         if (page == null || page < 1) {
            page = 1;
         }
         JSONObject data = brandClassShopService.listEffectiveCacheV2(page, cid);
         out.print(JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadFalseResult("查询失败"));
      if (page == null || page < 1) {
         page = 1;
      }
      JSONObject data = brandClassShopService.listEffectiveCacheV2(page, cid,acceptData.getPlatform(),acceptData.getVersion());
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 店铺足迹
    *
    * @param acceptData
    * @param type
    *            精选1, 足迹列表2
    * @param out
    */
   @RequestMapping(value = "getHistory", method = RequestMethod.POST)
   public void getHistory(AcceptData acceptData, Integer page, Long uid, Integer type, PrintWriter out) {
      if (type == null) {
         out.print(JsonUtil.loadFalseResult("类型不正确"));
         return;
      }
      if (page == null || page < 1) {
         page = 1;
      }
      int pageSize;
      if (type == 1) {
         pageSize = 4;
      } else {
         pageSize = Constant.PAGE_SIZE;
      }
      long count = 0;
      List<TaoBaoShopHistory> listHistory = null;
      if (uid == null || uid == 0) {
         String device = acceptData.getDevice();
         count = taoBaoShopHistoryService.countByDevice(device);
         if (count > 0) {
            listHistory = taoBaoShopHistoryService.listByDevice((page - 1) * pageSize, pageSize, device);
         }
      } else {
         count = taoBaoShopHistoryService.countByUid(uid);
         if (count > 0) {
            listHistory = taoBaoShopHistoryService.listByUid((page - 1) * pageSize, pageSize, uid);
         }
      }
      List<TaoBaoShop> list = new ArrayList<TaoBaoShop>();
      if (listHistory != null && listHistory.size() > 0) {
         for (TaoBaoShopHistory history : listHistory) {
            TaoBaoShop taoBaoShop = history.getTaoBaoShop();
            if (taoBaoShop != null) {
               Integer userType = taoBaoShop.getUserType();
               if (userType == null || userType == 0) {
                  taoBaoShop.setUserType(10);
               } else {
                  taoBaoShop.setUserType(11);
               }
               String shopLink = taoBaoShop.getShopLink();
               if (StringUtil.isNullOrEmpty(shopLink)) {
                  taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
               }
               String shopNameCustom = taoBaoShop.getShopNameCustom();
               if (!StringUtil.isNullOrEmpty(shopNameCustom)) {
                  taoBaoShop.setShopName(shopNameCustom);
               }
               String shopIconCustom = taoBaoShop.getShopIconCustom();
               if (!StringUtil.isNullOrEmpty(shopIconCustom)) {
                  taoBaoShop.setShopIcon(shopIconCustom);
               }
               list.add(taoBaoShop);
            }
         }
      }
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", JsonUtil.getApiCommonGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
@@ -94,24 +202,429 @@
    */
   @RequestMapping(value = "getShopInfo", method = RequestMethod.POST)
   public void getShopInfo(AcceptData acceptData, Integer page, Long sid, Long uid, PrintWriter out) {
      try {
         if (sid == null) {
            out.print(JsonUtil.loadFalseResult("缺失店铺id"));
      if (sid == null) {
         out.print(JsonUtil.loadFalseResult("缺失店铺id"));
         return;
      }
      JSONObject data = new JSONObject();
      if (page == 1) {
         TaoBaoShop taoBaoShop = taoBaoShopService.selectByPrimaryKey(sid);
         if (taoBaoShop == null) {
            out.print(JsonUtil.loadFalseResult("店铺信息获取失败"));
            return;
         }
         JSONObject data = new JSONObject();
         if (page == 1) {
            TaoBaoShop taoBaoShop = taoBaoShopService.selectByPrimaryKey(sid);
            if (taoBaoShop == null) {
               out.print(JsonUtil.loadFalseResult("店铺信息获取失败"));
               return;
         String shopLink = taoBaoShop.getShopLink();
         if (StringUtil.isNullOrEmpty(shopLink)) {
            taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
         }
         String shopNameCustom = taoBaoShop.getShopNameCustom();
         if (!StringUtil.isNullOrEmpty(shopNameCustom)) {
            taoBaoShop.setShopName(shopNameCustom);
         }
         String shopIconCustom = taoBaoShop.getShopIconCustom();
         if (!StringUtil.isNullOrEmpty(shopIconCustom)) {
            taoBaoShop.setShopIcon(shopIconCustom);
         }
         Integer userType = taoBaoShop.getUserType();
         if (userType == null || userType == 0) {
            taoBaoShop.setUserType(10);
         } else {
            taoBaoShop.setUserType(11);
         }
         data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop));
         ThreadUtil.run(new Runnable() {
            public void run() {
               // 添加足迹
               taoBaoShopHistoryService.addHistory(sid, uid, acceptData.getDevice());
            }
            String shopLink = taoBaoShop.getShopLink();
            if (StringUtil.isNullOrEmpty(shopLink)) {
               taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
         });
      }
      // 商品列表信息
      int pageSize = 50;
      List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
      // 先查询大淘客数据
      List<DaTaoKeDetailV2> listDaTaoKe = daTaoKeGoodsDetailV2Service.listBySellerId(0, pageSize, sid);
      if (listDaTaoKe != null && listDaTaoKe.size() > 0) {
         for (DaTaoKeDetailV2 daTaoKe : listDaTaoKe) {
            listGoodsBrief.add(TaoBaoUtil.convert(daTaoKe));
         }
      }
      // 不足50条数据、查询精选库
      if (listGoodsBrief.size() < pageSize) {
         int needCount = pageSize - listGoodsBrief.size();
         List<TaoBaoGoodsBrief> listGoods = taoBaoGoodsBriefService.listByShopId(0, needCount, sid);
         if (listGoods != null && listGoods.size() > 0) {
            if (listGoodsBrief.size() > 0) {
               for (int i = 0; i < listGoods.size(); i++) {
                  long id = listGoods.get(i).getAuctionId();
                  boolean isRepeat = false;
                  for (TaoBaoGoodsBrief goodsBrief : listGoodsBrief) {
                     long auctionId = goodsBrief.getAuctionId();
                     if (auctionId == id) {
                        isRepeat = true;
                        break;
                     }
                  }
                  if (isRepeat) {
                     listGoods.remove(i);
                     i--;
                  }
               }
            }
            listGoodsBrief.addAll(listGoods);
         }
      }
      JSONArray array = new JSONArray();
      if (listGoodsBrief.size() > 0) {
         List<Long> listGid = new ArrayList<Long>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
            listGid.add(taoBaoGoodsBrief.getAuctionId());
         }
         // API网络接口验证是否在售
         List<TaoBaoGoodsBrief> listTaoKeGoods = null;
         try {
            listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
         } catch (TaoKeApiException e) {
            e.printStackTrace();
         } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
         } catch (Exception e) {
            e.printStackTrace();
         }
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
               acceptData.getVersion());
         // 商品信息过滤
         listGoodsBrief = taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(listGoodsBrief);
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
            if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) {
               boolean stateSale = false; // 默认停售
               Long goodsId = taoBaoGoodsBrief.getAuctionId();
               for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
                  Long auctionId = taoKeGoods.getAuctionId();
                  if (goodsId == auctionId || goodsId.equals(auctionId)) {
                     stateSale = true; // 在售
                     break;
                  }
               }
               if (!stateSale) {
                  continue;
               }
            }
            GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
            array.add(gson.toJson(goodsDetailVO));
         }
      }
      data.put("count", array.size());
      data.put("list", array);
      out.print(JsonUtil.loadTrueResult(data));
      // 添加到更新列表
      taoBaoGoodsUpdateService.addUpdateQueueAsync(listGoodsBrief);
   }
   /**
    * 品牌列表列表
    *
    * @param acceptData
    * @param out
    */
   @RequestMapping(value = "getList", method = RequestMethod.POST)
   public void getList(AcceptData acceptData, Integer page, Long cid, Long uid, PrintWriter out) {
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
         if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
            getListV3(acceptData, page, cid, uid, out);
            return;
         }
      } else {
         if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
            getListV3(acceptData, page, cid, uid, out);
            return;
         }
      }
      if (page == null || page < 1) {
         out.print(JsonUtil.loadFalseResult("页码不正确"));
         return;
      }
      if (cid != null && cid == 0) {
         cid = null;
      }
      JSONObject data = new JSONObject();
      if (page == 1 && cid != null) {
         List<BrandInfo> brandlist = brandInfoService.listValidBrandInfoCache(cid);
         if(brandlist == null)
            brandlist = new ArrayList<BrandInfo>();
         data.put("brandlist", JsonUtil.getApiCommonGson().toJson(brandlist));
      }
      long count = brandInfoService.countBrandInfo(cid);
      List<BrandInfoVO> list = brandInfoService.listBrandInfoCache((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid,acceptData.getPlatform(),acceptData.getVersion());
      if (list == null)
         list = new ArrayList<BrandInfoVO>();
      GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
      gb.excludeFieldsWithoutExposeAnnotation();
      Gson gson = gb.create();
      data.put("count", count);
      data.put("list", gson.toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 店铺详情过渡页
    *
    * @param acceptData
    * @param out
    */
   @RequestMapping(value = "getShopInfoV2", method = RequestMethod.POST)
   public void getShopInfoV2(AcceptData acceptData, Integer page, Long id, Long uid, PrintWriter out) {
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
         if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
            getShopInfoV3(acceptData, page, id, uid, out);
            return;
         }
      } else {
         if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
            getShopInfoV3(acceptData, page, id, uid, out);
            return;
         }
      }
      if (id == null) {
         out.print(JsonUtil.loadFalseResult("缺失店铺id"));
         return;
      }
      List<TaoBaoShop> shopList = new ArrayList<TaoBaoShop>();
      List<BannerVO> topPicList = new ArrayList<>();
      JSONObject data = new JSONObject();
      if (page == 1) {
         // 2、顶部轮播图
         List<BannerVO> oldtopPicList = swiperPictureService.getByBannerCardAndVersion("brand_picture",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (oldtopPicList != null && oldtopPicList.size() > 0)
            topPicList.addAll(oldtopPicList);
         TaoBaoShop taoBaoShop = taoBaoShopService.selectByPrimaryKey(id);
         if (taoBaoShop == null) {
            out.print(JsonUtil.loadFalseResult("店铺信息获取失败"));
            return;
         }
         String shopLink = taoBaoShop.getShopLink();
         if (StringUtil.isNullOrEmpty(shopLink)) {
            taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId()));
         }
         String shopNameCustom = taoBaoShop.getShopNameCustom();
         if (!StringUtil.isNullOrEmpty(shopNameCustom)) {
            taoBaoShop.setShopName(shopNameCustom);
         }
         String shopIconCustom = taoBaoShop.getShopIconCustom();
         if (!StringUtil.isNullOrEmpty(shopIconCustom)) {
            taoBaoShop.setShopIcon(shopIconCustom);
         }
         Integer userType = taoBaoShop.getUserType();
         if (userType == null || userType == 0) {
            taoBaoShop.setUserType(10);
         } else {
            taoBaoShop.setUserType(11);
         }
         shopList.add(taoBaoShop);
         ThreadUtil.run(new Runnable() {
            public void run() {
               // 添加足迹
               taoBaoShopHistoryService.addHistory(id, uid, acceptData.getDevice());
            }
         });
      }
      data.put("picList", JsonUtil.getApiCommonGson().toJson(topPicList));
      data.put("shopList", JsonUtil.getApiCommonGson().toJson(shopList));
      // 商品列表信息
      int pageSize = 50;
      List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
      // 先查询大淘客数据
      List<DaTaoKeDetailV2> listDaTaoKe = daTaoKeGoodsDetailV2Service.listBySellerId(0, pageSize, id);
      if (listDaTaoKe != null && listDaTaoKe.size() > 0) {
         for (DaTaoKeDetailV2 daTaoKe : listDaTaoKe) {
            listGoodsBrief.add(TaoBaoUtil.convert(daTaoKe));
         }
      }
      // 不足50条数据、查询精选库
      if (listGoodsBrief.size() < pageSize) {
         int needCount = pageSize - listGoodsBrief.size();
         List<TaoBaoGoodsBrief> listGoods = taoBaoGoodsBriefService.listByShopId(0, needCount, id);
         if (listGoods != null && listGoods.size() > 0) {
            if (listGoodsBrief.size() > 0) {
               for (int i = 0; i < listGoods.size(); i++) {
                  long aid = listGoods.get(i).getAuctionId();
                  boolean isRepeat = false;
                  for (TaoBaoGoodsBrief goodsBrief : listGoodsBrief) {
                     long auctionId = goodsBrief.getAuctionId();
                     if (auctionId == aid) {
                        isRepeat = true;
                        break;
                     }
                  }
                  if (isRepeat) {
                     listGoods.remove(i);
                     i--;
                  }
               }
            }
            listGoodsBrief.addAll(listGoods);
         }
      }
      JSONArray array = new JSONArray();
      if (listGoodsBrief.size() > 0) {
         List<Long> listGid = new ArrayList<Long>();
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
            listGid.add(taoBaoGoodsBrief.getAuctionId());
         }
         // API网络接口验证是否在售
         List<TaoBaoGoodsBrief> listTaoKeGoods = null;
         try {
            listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
         } catch (TaoKeApiException e) {
            e.printStackTrace();
         } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
         } catch (Exception e) {
            e.printStackTrace();
         }
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
               acceptData.getVersion());
         // 商品信息过滤
         listGoodsBrief = taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(listGoodsBrief);
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
            if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) {
               boolean stateSale = false; // 默认停售
               Long goodsId = taoBaoGoodsBrief.getAuctionId();
               for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
                  Long auctionId = taoKeGoods.getAuctionId();
                  if (goodsId == auctionId || goodsId.equals(auctionId)) {
                     stateSale = true; // 在售
                     break;
                  }
               }
               if (!stateSale) {
                  continue;
               }
            }
            GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
            array.add(gson.toJson(goodsDetailVO));
         }
      }
      data.put("count", array.size());
      data.put("list", array);
      out.print(JsonUtil.loadTrueResult(data));
      // 添加到更新列表
      taoBaoGoodsUpdateService.addUpdateQueueAsync(listGoodsBrief);
   }
   /**
    * 店铺足迹
    *
    * @param acceptData
    * @param type
    *            精选1, 足迹列表2
    * @param out
    */
   @RequestMapping(value = "getHistoryV2", method = RequestMethod.POST)
   public void getHistoryV2(AcceptData acceptData, Integer page, Long uid, Integer type, PrintWriter out) {
      if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
         if (VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) {
            getHistoryV3(acceptData, page, uid, type, out);
            return;
         }
      } else {
         if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
            getHistoryV3(acceptData, page, uid, type, out);
            return;
         }
      }
      if (type == null) {
         out.print(JsonUtil.loadFalseResult("类型不正确"));
         return;
      }
      if (page == null || page < 1) {
         out.print(JsonUtil.loadFalseResult("页码不正确"));
         return;
      }
      int pageSize;
      if (type == 1) {
         pageSize = 4;
      } else {
         pageSize = Constant.PAGE_SIZE;
      }
      long count = 0;
      List<TaoBaoShopHistory> listHistory = null;
      if (uid == null || uid == 0) {
         String device = acceptData.getDevice();
         count = taoBaoShopHistoryService.countByDevice(device);
         if (count > 0) {
            listHistory = taoBaoShopHistoryService.listByDevice((page - 1) * pageSize, pageSize, device);
         }
      } else {
         count = taoBaoShopHistoryService.countByUid(uid);
         if (count > 0) {
            listHistory = taoBaoShopHistoryService.listByUid((page - 1) * pageSize, pageSize, uid);
         }
      }
      List<BrandInfo> list = new ArrayList<BrandInfo>();
      if (listHistory != null && listHistory.size() > 0) {
         for (TaoBaoShopHistory history : listHistory) {
            TaoBaoShop taoBaoShop = history.getTaoBaoShop();
            if (taoBaoShop == null)
               continue;
            String shopNameCustom = taoBaoShop.getShopNameCustom();
            if (!StringUtil.isNullOrEmpty(shopNameCustom)) {
               taoBaoShop.setShopName(shopNameCustom);
@@ -121,111 +634,183 @@
            if (!StringUtil.isNullOrEmpty(shopIconCustom)) {
               taoBaoShop.setShopIcon(shopIconCustom);
            }
            data.put("shop", JsonUtil.getApiCommonGson().toJson(taoBaoShop));
            
            ThreadUtil.run(new Runnable() {
               public void run() {
                  // 添加足迹
                  taoBaoShopHistoryService.addHistory(sid, uid, acceptData.getDevice());
               }
            });
            BrandInfo brandInfo = new BrandInfo();
            brandInfo.setId(taoBaoShop.getId());
            brandInfo.setName(taoBaoShop.getShopName());
            brandInfo.setIcon(taoBaoShop.getShopIcon());
             list.add(brandInfo);
         }
         // 商品列表信息
         int pageSize = 50;
         List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
         // 先查询大淘客数据
         List<DaTaoKeDetail> listDaTaoKe = daTaoKeGoodsService.listBySellerId(0, pageSize, sid);
         if (listDaTaoKe != null && listDaTaoKe.size() > 0) {
            for (DaTaoKeDetail daTaoKe: listDaTaoKe) {
               listGoodsBrief.add(TaoBaoUtil.convert(daTaoKe));
            }
         }
         // 不足50条数据、查询精选库
         if (listGoodsBrief.size() < pageSize) {
            int needCount = pageSize- listGoodsBrief.size();
            List<TaoBaoGoodsBrief> listGoods = taoBaoGoodsBriefService.listByShopId(0, needCount, sid);
            if (listGoods != null && listGoods.size() > 0) {
               if (listGoodsBrief.size() > 0) {
                  for (int i = 0; i< listGoods.size(); i ++) {
                     long id = listGoods.get(i).getAuctionId();
                     boolean isRepeat = false;
                     for (TaoBaoGoodsBrief goodsBrief: listGoodsBrief) {
                        long auctionId = goodsBrief.getAuctionId();
                        if (auctionId == id) {
                           isRepeat = true;
                           break;
                        }
                     }
                     if(isRepeat) {
                        listGoods.remove(i);
                        i--;
                     }
                  }
               }
               listGoodsBrief.addAll(listGoods);
            }
         }
         JSONArray array = new JSONArray();
         if (listGoodsBrief.size() > 0) {
            List<Long> listGid = new ArrayList<Long>();
            for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
               listGid.add(taoBaoGoodsBrief.getAuctionId());
            }
            // API网络接口验证是否在售
            List<TaoBaoGoodsBrief> listTaoKeGoods = null;
            try {
               listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
            } catch (TaoKeApiException e) {
               e.printStackTrace();
            } catch (TaobaoGoodsDownException e) {
               e.printStackTrace();
            } catch (Exception e) {
               e.printStackTrace();
            }
            Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                  .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
            BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
            BigDecimal shareRate = hongBaoManageService.getShareRate();
            for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
               if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) {
                  boolean stateSale = false; // 默认停售
                  Long goodsId = taoBaoGoodsBrief.getAuctionId();
                  for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
                     Long auctionId = taoKeGoods.getAuctionId();
                     if (goodsId == auctionId || goodsId.equals(auctionId)) {
                        stateSale = true; // 在售
                        break;
                     }
                  }
                  if (!stateSale) {
                     continue;
                  }
               }
               GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate);
               array.add(gson.toJson(goodsDetailVO));
            }
         }
         data.put("count", array.size());
         data.put("list", array);
         out.print(JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadFalseResult("查询失败"));
      }
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", JsonUtil.getApiCommonGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 品牌列表列表
    *
    * @param acceptData
    * @param out
    */
//   @RequestMapping(value = "getList", method = RequestMethod.POST)
   public void getListV3(AcceptData acceptData, Integer page, Long cid, Long uid, PrintWriter out) {
      if (page == null || page < 1) {
         out.print(JsonUtil.loadFalseResult("页码不正确"));
         return;
      }
      if (cid != null && cid == 0) {
         cid = null;
      }
      JSONObject data = new JSONObject();
      if (page == 1  && cid == null) { // 精选页banner
         List<BannerVO> banners = swiperPictureService.getByBannerCardAndVersion("brand_banners",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (banners == null)
            banners = new ArrayList<>();
         data.put("banners", JsonUtil.getApiCommonGson().toJson(banners));
      }
      if (page == 1 && cid != null) {
         List<BrandInfo> brandlist = brandInfoService.listValidByCidToApp(cid);
         if(brandlist == null)
            brandlist = new ArrayList<BrandInfo>();
         data.put("brandlist", JsonUtil.getApiCommonGson().toJson(brandlist));
      }
      long count = brandInfoService.countValidByCidToApp(cid);
      List<BrandInfoVO> list = brandInfoService.listValidToApp((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid,acceptData.getPlatform(),acceptData.getVersion());
      if (list == null)
         list = new ArrayList<BrandInfoVO>();
      GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder());
      gb.excludeFieldsWithoutExposeAnnotation();
      Gson gson = gb.create();
      data.put("count", count);
      data.put("list", gson.toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 店铺详情过渡页
    *
    * @param acceptData
    * @param out
    */
//   @RequestMapping(value = "getShopInfoV2", method = RequestMethod.POST)
   public void getShopInfoV3(AcceptData acceptData, Integer page, Long id, Long uid, PrintWriter out) {
      if (id == null) {
         out.print(JsonUtil.loadFalseResult("缺失店铺id"));
         return;
      }
      // 添加足迹
      if (page == 1) {
         brandInfoRecordService.addRecord(id, uid, acceptData.getDevice());
      }
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      ConfigParamsDTO paramsDTO =  orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
            acceptData.getVersion());
      JSONArray array = new JSONArray();
      List<BrandGoodsCahe> listGoods = brandGoodsCaheService.getByBrandId((page - 1) * 50, 50,id);
      for (BrandGoodsCahe brandGoods: listGoods) {
         JDGoods goodsJD = brandGoods.getGoodsJD();
         if (goodsJD != null) {
            array.add(gson.toJson(GoodsDetailVOFactory.convertJDGoods(goodsJD, paramsDTO)));
            continue;
         }
         TaoBaoGoodsBrief goodsTB = brandGoods.getGoodsTB();
         if (goodsTB != null) {
            array.add(gson.toJson(GoodsDetailVOFactory.convertTaoBao(goodsTB, paramsDTO)));
            continue;
         }
         PDDGoodsDetail goodsPDD = brandGoods.getGoodsPDD();
         if (goodsPDD != null) {
            array.add(gson.toJson(GoodsDetailVOFactory.convertPDDGoods(goodsPDD, paramsDTO)));
            continue;
         }
      }
      JSONObject data = new JSONObject();
      if (page == 1 && array.size() > 0) {
         // 2、顶部轮播图
         List<BannerVO> topPicList = new ArrayList<>();
         List<BannerVO> oldtopPicList = swiperPictureService.getByBannerCardAndVersion("brand_picture",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (oldtopPicList != null && oldtopPicList.size() > 0)
            topPicList.addAll(oldtopPicList);
         List<ShopInfoVO> shopList = new ArrayList<ShopInfoVO>();
         List<BrandShopCahe> listshopCahe = brandShopCaheService.getByBrandId(id);
         if (listshopCahe != null && listshopCahe.size() > 0) {
            for (BrandShopCahe brandShopCahe: listshopCahe) {
               shopList.add(brandShopCahe.getShop());
            }
         }
         data.put("picList", JsonUtil.getApiCommonGson().toJson(topPicList));
         data.put("shopList", JsonUtil.getApiCommonGson().toJson(shopList));
      }
      data.put("count", array.size());
      data.put("list", array);
      out.print(JsonUtil.loadTrueResult(data));
   }
   /**
    * 店铺足迹
    *
    * @param acceptData
    * @param type
    *            精选1, 足迹列表2
    * @param out
    */
//   @RequestMapping(value = "getHistoryV2", method = RequestMethod.POST)
   public void getHistoryV3(AcceptData acceptData, Integer page, Long uid, Integer type, PrintWriter out) {
      if (type == null) {
         out.print(JsonUtil.loadFalseResult("类型不正确"));
         return;
      }
      if (page == null || page < 1) {
         out.print(JsonUtil.loadFalseResult("页码不正确"));
         return;
      }
      int pageSize;
      if (type == 1) {
         pageSize = 4;
      } else {
         pageSize = Constant.PAGE_SIZE;
      }
      List<BrandInfoRecord> listRecord = brandInfoRecordService.listRecord((page - 1) * pageSize, pageSize, uid, acceptData.getDevice());
      List<BrandInfo> list = new ArrayList<BrandInfo>();
      if (listRecord != null && listRecord.size() > 0) {
         for (BrandInfoRecord history : listRecord) {
            if (history.getBrandInfo() != null)
               list.add(history.getBrandInfo());
         }
      }
      JSONObject data = new JSONObject();
      data.put("count", brandInfoRecordService.countRecord(uid, acceptData.getDevice()));
      data.put("list", JsonUtil.getApiCommonGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
}