yujian
2019-04-22 b6c37e4bc38db88a360d0f2c6099183f9bb75bdc
fanli/src/main/java/com/yeshi/fanli/controller/apph5/AppH5QualityGoodsController.java
@@ -1,17 +1,17 @@
package com.yeshi.fanli.controller.apph5;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -19,15 +19,19 @@
import com.yeshi.fanli.entity.bus.lable.Label;
import com.yeshi.fanli.entity.bus.lable.MergeClass;
import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.bus.user.CollectionGoods;
import com.yeshi.fanli.entity.goods.CollectionGoodsV2;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.entity.taobao.TaoBaoHongBaoInfo;
import com.yeshi.fanli.entity.taobao.TaobaoMeterial;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.SystemService;
import com.yeshi.fanli.service.inter.goods.CollectionGoodsService;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.goods.CollectionGoodsV2Service;
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.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.lable.LabelService;
import com.yeshi.fanli.service.inter.lable.MergeClassService;
@@ -39,18 +43,23 @@
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.taobao.TbImgUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@Controller
@RequestMapping("api/apph5/v1/quality")
public class  AppH5QualityGoodsController {
public class AppH5QualityGoodsController {
   @Resource
   private LabelService labelService;
   @Resource
   private QualityFactoryService selectionGoodsService;
   @Resource
   private TaoBaoGoodsBriefService taoBaoGoodsBriefService;
   @Resource
   private TaobaoMeterialService taobaoMeterialService;
@@ -66,25 +75,26 @@
   @Resource
   private MergeClassService mergeClassService;
   @Resource
   private TaoBaoClassService taoBaoClassService;
   @Resource
   private SystemService systemService;
   @Resource
   private QualityGoodsService qualityGoodsService;
   @Resource
   private QualityFlashSaleService qualityFlashSaleService;
   @Resource
   private CollectionGoodsV2Service collectionGoodsV2Service;
   @Resource
   private HongBaoManageService hongBaoManageService;
   
   @Resource
   private CollectionGoodsService collectionGoodsService;
   private ConfigService configService;
   
   /**
    * 9.9商品
    * 
@@ -95,7 +105,6 @@
   public void get9k9(String callback, Integer page, Long mcid, PrintWriter out) {
      get9k9ClassGoods("9.9", callback, page, mcid, out);
   }
   /**
    * 19.9商品
@@ -130,13 +139,15 @@
      get9k9ClassGoods("49.9", callback, page, mcid, out);
   }
   /**
    *  9k9类型的商品查询
    * @param labName 标签名称
    * 9k9类型的商品查询
    *
    * @param labName
    *            标签名称
    * @param callback
    * @param page
    * @param mcid 对应类目id
    * @param mcid
    *            对应类目id
    * @param out
    */
   public void get9k9ClassGoods(String labName, String callback, Integer page, Long mcid, PrintWriter out) {
@@ -148,14 +159,14 @@
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
            return;
         }
         Long labId = labs.get(0).getId();
         if (page == null)
            page = 1;
         int pageSize = Constant.PAGE_SIZE;
         JSONObject jsonGoods = queryGoodsSmallAmount(page, pageSize, mcid, labId);
         if (jsonGoods == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
@@ -173,7 +184,7 @@
         }
      }
   }
   /**
    * 获取商品
    * 
@@ -196,7 +207,8 @@
      }
      // 根据标签id 查询数据
      List<QualityFactory> listQuery = qualityGoodsService.listQuerySmallAmount((page - 1) * pageSize, pageSize, null, labId, mergeCids);
      List<QualityFactory> listQuery = qualityGoodsService.listQuerySmallAmount((page - 1) * pageSize, pageSize, null,
            labId, mergeCids);
      // 总条数
      long count = qualityGoodsService.countQuerySmallAmount(null, labId, mergeCids);
@@ -205,11 +217,10 @@
      }
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
      BigDecimal proportion = hongBaoManageService.getFanLiRate();
      /* 遍历列表数据 */
      for (QualityFactory selectionGoods : listQuery) {
@@ -225,16 +236,16 @@
            String salesCountMidea = String.format("%.1f", sales / 10000);
            taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
         } else {
            taoBaoGoodsBrief.setSalesCount(count + "");
            taoBaoGoodsBrief.setSalesCount(biz30day + "");
         }
         // 改变图片尺寸
         // 改变图片尺寸
         String pictUrl = taoBaoGoodsBrief.getPictUrl();
         if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
            taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
         }
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
      }
      JSONObject data = new JSONObject();
@@ -244,11 +255,7 @@
      return data;
   }
   /**
    * 9.9商品-每日必抢
    * 
@@ -293,9 +300,9 @@
      get9k9ClassToDayRob("49.9", callback, page, mcid, out, 1.0, 50.0);
   }
   /**
    * 9k9类型商品对应的每日必抢
    *
    * @param labName
    * @param callback
    * @param page
@@ -334,8 +341,7 @@
         }
      }
   }
   /**
    * 每日必抢
    * 
@@ -345,36 +351,37 @@
    * @return
    * @throws Exception
    */
   public JSONObject queryEverydayRob(Integer page, Long labId, int sortField, Double startCouponAmount, Double endCouponAmount) throws Exception {
   public JSONObject queryEverydayRob(Integer page, Long labId, int sortField, Double startCouponAmount,
         Double endCouponAmount) throws Exception {
      if (page == null)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      if (page > 3 ) {
      if (page > 3) {
         return null;// 20 条一页请求到3页结束今日新品
      }
      // 根据标签id 查询数据
      List<QualityFactory> listQuery = qualityGoodsService.listQueryEverydayRob((page - 1) * pageSize, pageSize, null, labId, sortField, startCouponAmount, endCouponAmount);
      //  只取前50条数
      // 根据标签id 查询数据
      List<QualityFactory> listQuery = qualityGoodsService.listQueryEverydayRob((page - 1) * pageSize, pageSize, null,
            labId, sortField, startCouponAmount, endCouponAmount);
      // 只取前50条数
      long count = 50;
      //long count = qualityGoodsService.countQueryEverydayRob(null, labId, startCouponAmount, endCouponAmount);
      // long count = qualityGoodsService.countQueryEverydayRob(null, labId,
      // startCouponAmount, endCouponAmount);
      if (listQuery == null || listQuery.size() == 0) {
         return null;
      }
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
      BigDecimal proportion = manageService.getFanLiRate();
      /* 遍历列表数据 */
      for (QualityFactory selectionGoods : listQuery) {
@@ -390,16 +397,16 @@
            String salesCountMidea = String.format("%.1f", sales / 10000);
            taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
         } else {
            taoBaoGoodsBrief.setSalesCount(count + "");
            taoBaoGoodsBrief.setSalesCount(biz30day + "");
         }
         // 改变图片尺寸
         // 改变图片尺寸
         String pictUrl = taoBaoGoodsBrief.getPictUrl();
         if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
            taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
         }
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
      }
      JSONObject data = new JSONObject();
@@ -409,7 +416,6 @@
      return data;
   }
   /**
    * 品牌购 (官方推荐【品牌券】接口)
@@ -440,19 +446,18 @@
            page = 1;
         int pageSize = Constant.PAGE_SIZE;
         JSONObject jsonObject = taoKeGoodsService.getBrandsGoods(materialId, page, pageSize);
         if (jsonObject == null) {
            JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult(2, "没有更多了"));
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
            return;
         }
         JsonUtil.printMode(out, callback,JsonUtil.loadTrueResult(jsonObject));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(jsonObject));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("查询失败"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
@@ -460,7 +465,7 @@
         }
      }
   }
   /**
    * 品牌购 (官方推荐【品牌券】接口)
    * 
@@ -490,19 +495,18 @@
            page = 1;
         int pageSize = Constant.PAGE_SIZE;
         JSONObject jsonObject = taoKeGoodsService.getBrandsShops(materialId, page, pageSize);
         if (jsonObject == null) {
            JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult(2, "没有更多了"));
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
            return;
         }
         JsonUtil.printMode(out, callback,JsonUtil.loadTrueResult(jsonObject));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(jsonObject));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("查询失败"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
@@ -570,7 +574,8 @@
      try {
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperNameCache(null, "有好货");
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperNameCache(null,
               "有好货");
         if (taobaoMeterials == null || taobaoMeterials.size() == 0) {
            out.print(JsonUtil.loadFalseResult("暂无数据"));
@@ -606,13 +611,13 @@
         }
      }
   }
   /**
    * 今日新品【(官方推荐【好券直播】接口)
    * 
    * @param page
    * @param subName 子类名称
    * @param subName
    *            子类名称
    */
   @RequestMapping(value = "todayNew")
   public void todayNew(String callback, Integer page, String subName, String uid, PrintWriter out) {
@@ -638,51 +643,50 @@
         int pageSize = Constant.PAGE_SIZE;
         List<TaoBaoGoodsBrief> listMaterial = taoKeGoodsService.listByMaterial(materialId, page, pageSize);
         if (listMaterial == null || listMaterial.size() == 0) {
            JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult(2,"没有更多了"));
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
            return;
         }
         JSONArray array = new JSONArray();
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         Map<String, String> map = manageService.convertMap();
         String proportion = map.get("hongbao_goods_proportion");
         String fcRate = map.get("hongbao_fc_ratio");
         BigDecimal proportion =manageService.getFanLiRate();
         /* 遍历列表数据 */
         for (TaoBaoGoodsBrief taoBaoGoodsBrief : listMaterial) {
            int count = taoBaoGoodsBrief.getBiz30day();
            if (count >= 10000) {
               double sales = count;
            int biz30day = taoBaoGoodsBrief.getBiz30day();
            if (biz30day >= 10000) {
               double sales = biz30day;
               String salesCountMidea = String.format("%.1f", sales / 10000);
               taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
            } else {
               taoBaoGoodsBrief.setSalesCount(count + "");
               taoBaoGoodsBrief.setSalesCount(biz30day + "");
            }
            // 改变图片尺寸  大图更清晰
            // 改变图片尺寸 大图更清晰
            String pictUrl = taoBaoGoodsBrief.getPictUrl();
            pictUrl = pictUrl.replaceAll("320x320", "640x640");
            taoBaoGoodsBrief.setPictUrl(pictUrl);
            int collected = 0;
            // 判断收藏
            if (!StringUtil.isNullOrEmpty(uid)) {
               CollectionGoods collectionGoods = collectionGoodsService.findByUidAndAuctionId(Long.parseLong(uid),
                     taoBaoGoodsBrief.getAuctionId());
               CollectionGoodsV2 collectionGoods = collectionGoodsV2Service
                     .findByUidAndAuctionId(Long.parseLong(uid), taoBaoGoodsBrief.getAuctionId());
               if (collectionGoods != null) {
                  collected = 1;
               }
            }
            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null);
            TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
                  proportion.toString(), null);
            taoBaoGoodsBriefExtra.setCollected(collected);
            array.add(gson.toJson(taoBaoGoodsBriefExtra));
         }
@@ -690,11 +694,10 @@
         data.put("result_list", array);
         data.put("count", 1000);
         JsonUtil.printMode(out, callback,JsonUtil.loadTrueResult(data));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback,JsonUtil.loadFalseResult("查询失败"));
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("查询失败"));
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
@@ -703,9 +706,6 @@
      }
   }
   /**
    * 潮品热卖(官方推荐中的【潮流范】)
    * 
@@ -717,8 +717,8 @@
      try {
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperNameCache(null, "潮流范");
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperNameCache(null,
               "潮流范");
         if (taobaoMeterials == null || taobaoMeterials.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
@@ -735,7 +735,7 @@
         if (page == null) {
            page = 1;
         }
         int pageSize = Constant.PAGE_SIZE;
         JSONObject jsonObject = queryMaterialGoods(page, pageSize, materialId);
@@ -768,8 +768,9 @@
   public void getPregnantBaby(AcceptData acceptData, String callback, Integer page, String subName, PrintWriter out) {
      try {
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperNameCache(subName, "母婴主题");
         List<TaobaoMeterial> taobaoMeterials = taobaoMeterialService.selectByClassNameAndSuperNameCache(subName,
               "母婴主题");
         if (taobaoMeterials == null || taobaoMeterials.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("暂无数据"));
@@ -825,31 +826,30 @@
      }
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
      BigDecimal proportion = manageService.getFanLiRate();
      /* 遍历列表数据 */
      for (TaoBaoGoodsBrief taoBaoGoodsBrief : listBrands) {
         int count = taoBaoGoodsBrief.getBiz30day();
         if (count >= 10000) {
            double sales = count;
         int biz30day = taoBaoGoodsBrief.getBiz30day();
         if (biz30day >= 10000) {
            double sales = biz30day;
            String salesCountMidea = String.format("%.1f", sales / 10000);
            taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
         } else {
            taoBaoGoodsBrief.setSalesCount(count + "");
            taoBaoGoodsBrief.setSalesCount(biz30day + "");
         }
         // 改变图片尺寸
         // 改变图片尺寸
         String pictUrl = taoBaoGoodsBrief.getPictUrl();
         if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
            taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
         }
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
      }
      JSONObject data = new JSONObject();
@@ -860,47 +860,64 @@
   }
   /**
    * 限时抢购
    *
    * @param callback
    * @param page
    * @param out
    */
   @RequestMapping("getFlashSale")
   public void getFlashSale(String callback, Integer page, PrintWriter out) {
   public void getFlashSale(String callback, Integer page, Long auctionId, PrintWriter out) {
      if (page == null)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      int type = qualityFlashSaleService.getNowType();
      
      List<QualityFactory> listQuery = qualityGoodsService.listQueryByFlashSale((page - 1) * pageSize, pageSize);
      TaoBaoGoodsBrief goodsBrief = null;
      if (page == 1 && auctionId != null) {
         List<TaoBaoGoodsBrief> list = taoBaoGoodsBriefService.queryByAuctionId(auctionId);
         if (list != null && list.size() > 0) {
            goodsBrief = list.get(0);
         }
      }
      if (goodsBrief != null) {
         pageSize = pageSize -1;
      }
      
       //精选库数据为空
      List<QualityFactory> listQuery = qualityGoodsService.listQueryByFlashSale((page - 1) * pageSize, pageSize);
      // 精选库数据为空
      if (listQuery == null || listQuery.size() == 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
         return;
      }
      long count = 3000;
       // 精选库数据处理返回 前端
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
      long count = 3000;
      // 精选库数据处理返回 前端
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      BigDecimal proportion = manageService.getFanLiRate();
      if (goodsBrief != null) {
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null)));
      }
      
       //遍历列表数据
      // 遍历列表数据
      for (QualityFactory quality : listQuery) {
         TaoBaoGoodsBrief taoBaoGoodsBrief = quality.getTaoBaoGoodsBrief();
         if (taoBaoGoodsBrief == null) {
            continue;
         }
         if (goodsBrief != null && auctionId.equals(taoBaoGoodsBrief.getAuctionId())) {
            continue;
         }
@@ -910,29 +927,29 @@
            String salesCountMidea = String.format("%.1f", sales / 10000);
            taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
         } else {
            taoBaoGoodsBrief.setSalesCount(count + "");
            taoBaoGoodsBrief.setSalesCount(biz30day + "");
         }
         // 改变图片尺寸
         // 改变图片尺寸
         String pictUrl = taoBaoGoodsBrief.getPictUrl();
         if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
            taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
         }
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
      }
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("type", type);
      data.put("result_list", array);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
   /**
    * 大额券(券面值范围)
    *
    * @param callback
    * @param amount
    * @param page
@@ -940,17 +957,15 @@
    */
   @RequestMapping("choiceCouponAmount")
   public void choiceCouponAmount(String callback, Integer amount, Integer page, PrintWriter out) {
      if (page == null)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      Integer startAmount = null;
      Integer endAmount =  null ;
      Integer endAmount = null;
      if (amount.equals(1)) {
         startAmount = 5;
         endAmount = 10;
@@ -963,29 +978,26 @@
      } else if (amount.equals(4)) {
         startAmount = 50;
      }
      Integer startPropor = 20;
      List<QualityFactory> listQuery = qualityGoodsService.listQueryByCouponAmount((page - 1) * pageSize,
            pageSize, startAmount, endAmount, startPropor);
      List<QualityFactory> listQuery = qualityGoodsService.listQueryByCouponAmount((page - 1) * pageSize, pageSize,
            startAmount, endAmount, startPropor);
      if (listQuery == null || listQuery.size() == 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
         return;
      }
      long count = qualityGoodsService.countQueryByCouponAmount(startAmount, endAmount, startPropor);
       // 精选库数据处理返回 前端
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
       //遍历列表数据
      long count = qualityGoodsService.countQueryByCouponAmount(startAmount, endAmount, startPropor);
      // 精选库数据处理返回 前端
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      BigDecimal proportion = manageService.getFanLiRate();
      // 遍历列表数据
      for (QualityFactory selectionGoods : listQuery) {
         TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
@@ -1000,16 +1012,16 @@
            String salesCountMidea = String.format("%.1f", sales / 10000);
            taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
         } else {
            taoBaoGoodsBrief.setSalesCount(count + "");
            taoBaoGoodsBrief.setSalesCount(biz30day + "");
         }
         // 改变图片尺寸
         // 改变图片尺寸
         String pictUrl = taoBaoGoodsBrief.getPictUrl();
         if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
            taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
         }
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
      }
      JSONObject data = new JSONObject();
@@ -1017,11 +1029,10 @@
      data.put("result", array);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
   /**
    * 超高奖金
    *
    * @param callback
    * @param page
    * @param type
@@ -1029,16 +1040,15 @@
    */
   @RequestMapping("choiceRebate")
   public void choiceRebate(String callback, Integer page, Integer type, PrintWriter out) {
      if (page == null)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      Integer startAmount = null;
      Integer endAmount =  null ;
      Integer endAmount = null;
      if (type.equals(1)) {
         startAmount = 1;
         endAmount = 5;
@@ -1051,30 +1061,26 @@
      } else if (type.equals(4)) {
         startAmount = 15;
      }
      double tkRate = 20.00;
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
      BigDecimal proportion = manageService.getFanLiRate();
      List<QualityFactory> listQuery = qualityGoodsService.listQueryByRebateAmount((page - 1) * pageSize, pageSize,
            proportion, startAmount, endAmount, tkRate);
            proportion.toString(), startAmount, endAmount, tkRate);
      if (listQuery == null || listQuery.size() == 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
         return;
      }
      long count = qualityGoodsService.countQueryByRebateAmount(proportion, startAmount, endAmount, tkRate);
       // 精选库数据处理返回 前端
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
       //遍历列表数据
      long count = qualityGoodsService.countQueryByRebateAmount(proportion.toString(), startAmount, endAmount, tkRate);
      // 精选库数据处理返回 前端
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      // 遍历列表数据
      for (QualityFactory quality : listQuery) {
         TaoBaoGoodsBrief taoBaoGoodsBrief = quality.getTaoBaoGoodsBrief();
@@ -1089,27 +1095,28 @@
            String salesCountMidea = String.format("%.1f", sales / 10000);
            taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
         } else {
            taoBaoGoodsBrief.setSalesCount(count + "");
            taoBaoGoodsBrief.setSalesCount(biz30day + "");
         }
         // 改变图片尺寸
         // 改变图片尺寸
         String pictUrl = taoBaoGoodsBrief.getPictUrl();
         if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
            taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
         }
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion, fcRate, null)));
         array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
      }
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("result_list", array);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
   /**
    * 超高奖金
    *
    * @param callback
    * @param page
    * @param type
@@ -1117,34 +1124,146 @@
    */
   @RequestMapping("recommendToIndex")
   public void recommendToIndex(String callback, Integer page, PrintWriter out) {
      if (page == null)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      Map<String, String> map = manageService.convertMap();
      String proportion = map.get("hongbao_goods_proportion");
      String fcRate = map.get("hongbao_fc_ratio");
      JSONArray array = qualityGoodsService.getRecommendToIndex((page - 1) * pageSize, pageSize,
            proportion, fcRate);
      BigDecimal proportion = manageService.getFanLiRate();
      JSONArray array = qualityGoodsService.getRecommendToIndex((page - 1) * pageSize, pageSize, proportion.toString());
      if (array == null) {
         out.print(JsonUtil.loadFalseResult("没有更多了"));
         return;
      }
      long count = qualityGoodsService.countRecommendToIndex(proportion);
      long count = qualityGoodsService.countRecommendToIndex(proportion.toString());
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("result_list", array);
      out.print(JsonUtil.loadTrueResult(data));
      return;
   }
   /**
    * 超高奖金
    *
    * @param callback
    * @param page
    * @param type
    * @param out
    */
   @RequestMapping("freeGoods")
   public void freeGoods(String callback, Integer page, PrintWriter out) {
      if (page == null || page < 1)
         page = 1;
      int pageSize = Constant.PAGE_SIZE;
      double tkRate = 20;
      String lableName = "9.9";
      try {
         List<QualityFactory> listQuery = qualityGoodsService.listFreeGoods((page - 1) * pageSize, pageSize, tkRate,
               lableName);
         if (listQuery == null || listQuery.size() == 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(2, "没有更多了"));
            return;
         }
         List<Long> listGid = new ArrayList<Long>();
         for (QualityFactory qualityFactory : listQuery) {
            TaoBaoGoodsBrief taoBaoGoodsBrief = qualityFactory.getTaoBaoGoodsBrief();
            if (taoBaoGoodsBrief == null) {
               continue;
            }
            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();
         }
         JSONArray array = new JSONArray();
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         BigDecimal proportion = manageService.getFanLiRate();
         /* 遍历列表数据 */
         for (QualityFactory selectionGoods : listQuery) {
            TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
            if (taoBaoGoodsBrief == null) {
               continue;
            }
            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;
               }
            }
            BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
            if (couplePrice.compareTo(new BigDecimal("9.9")) == 1) {
               continue; // 券后价大于10
            }
            TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
                  proportion.toString(), null);
            // 将返利改为券后价
            TaoBaoHongBaoInfo taoBaoHongBaoInfo = extra.getTaoBaoHongBaoInfo();
            if (taoBaoHongBaoInfo != null) {
               taoBaoHongBaoInfo.setHongbao(extra.getQuanPrice());
               taoBaoHongBaoInfo.setRate("¥" + extra.getQuanPrice());
            }
            array.add(gson.toJson(extra));
         }
         long count = qualityGoodsService.countFreeGoods(tkRate, lableName);
         JSONObject data = new JSONObject();
         if (page == 1) {
            // 抽奖规则
            String rules = configService.get("free_goods_rule");
            data.put("ruleLink", rules);
         }
         data.put("count", count);
         data.put("result_list", array);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作失败"));
         e.printStackTrace();
      }
   }
}