yujian
2020-01-18 f4a0f2acc63d7785eab108419a4e16f5f688cb95
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java
@@ -15,6 +15,7 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.DateUtil;
import org.yeshi.utils.JsonUtil;
import com.google.gson.Gson;
@@ -26,15 +27,19 @@
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinNewbies;
import com.yeshi.fanli.entity.bus.user.UserMoneyExtra;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TLJFreeBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.exception.tlj.UserTaoLiJinRecordException;
import com.yeshi.fanli.exception.user.UserInfoException;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
@@ -45,8 +50,10 @@
import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.inter.redpack.UserTaoLiJinNewbiesService;
import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService;
import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
@@ -66,6 +73,7 @@
import com.yeshi.fanli.vo.goods.OtherInfo;
import com.yeshi.fanli.vo.goods.taobao.TLJBuyHongBaoVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.redpack.TaoLiJinWinDetailVO;
import com.yeshi.fanli.vo.tlj.ReduceHongBao;
import com.yeshi.fanli.vo.tlj.SpreadHongBao;
import com.yeshi.fanli.vo.tlj.TaoLiJinDetailVO;
@@ -140,6 +148,13 @@
   @Resource
   private SwiperPictureService swiperPictureService;
   @Resource
   private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService;
   @Resource
   private TLJFreeBuyGoodsService tljFreeBuyGoodsService;
   /**
    * 获取淘礼金分享记录
@@ -473,9 +488,10 @@
            isNewUser = false;
         }
      }
       ConfigParamsDTO paramsDTO =  hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
            acceptData.getVersion());
      BigDecimal fanLiRate = hongBaoManageService.getTLJShareRate(System.currentTimeMillis());
      BigDecimal shareRate = hongBaoManageService.getTLJShareRate(System.currentTimeMillis());
      for (ShareHotGoods hotGoods : listHot) {
         TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods();
         if (taoBaoGoodsBrief == null) {
@@ -491,7 +507,7 @@
            continue;
         }
         GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate);
         GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
         
         // 大于1.6.5的才会显示福利价
         if (com.yeshi.fanli.util.VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
@@ -600,14 +616,14 @@
      data.put("count", array.size());
      data.put("list", array);
      if (page == 1) {
         List<SwiperPicture> bannerList = swiperPictureService.getByBannerCard("zigoulijian_banner");
         List<SwiperPicture> bannerList = swiperPictureService.getByBannerCardAndVersion("zigoulijian_banner",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (bannerList != null && bannerList.size() > 0)
            data.put("topPicture", bannerList.get(0).getSrc());
         else
            data.put("topPicture", "");
         data.put("ruleUrl", configService.get("zigoulijian_rule"));
         data.put("ruleUrl", configService.get(ConfigKeyEnum.zigoulijianRule.getKey()));
      }
      out.print(JsonUtil.loadTrueResult(data));
   }
@@ -633,6 +649,7 @@
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      BigDecimal proportion = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE;
      ConfigParamsDTO paramsDTO = new ConfigParamsDTO(proportion, proportion, Constant.MAX_REWARD_RATE,hongBaoManageService.getVIPFanLiRate());
      for (TLJBuyGoods hotGoods : listHot) {
         TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods();
         if (taoBaoGoodsBrief == null) {
@@ -647,7 +664,7 @@
            continue;
         }
         GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, proportion, proportion);
         GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
         // 大于1.6.5的才会显示福利价
         if (com.yeshi.fanli.util.VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
@@ -686,14 +703,14 @@
      data.put("count", array.size());
      data.put("list", array);
      if (page == 1) {
         List<SwiperPicture> bannerList = swiperPictureService.getByBannerCard("zigoulijian_banner");
         List<SwiperPicture> bannerList = swiperPictureService.getByBannerCardAndVersion("zigoulijian_banner",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         if (bannerList != null && bannerList.size() > 0)
            data.put("topPicture", bannerList.get(0).getSrc());
         else
            data.put("topPicture", "");
         data.put("ruleUrl", configService.get("zigoulijian_rule"));
         data.put("ruleUrl", configService.get(ConfigKeyEnum.zigoulijianRule.getKey()));
      }
      out.print(JsonUtil.loadTrueResult(data));
   }
@@ -708,17 +725,131 @@
    */
   @RequestMapping(value = "giveTLJ", method = RequestMethod.POST)
   public void giveTLJ(AcceptData acceptData, Long uid, BigDecimal amount, PrintWriter out) {
      out.print(JsonUtil.loadFalseResult(1, "抱歉,推广红包相关功能已下线!"));
   }
   /**
    * 新人红包详情
    *
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "getWinDetail", method = RequestMethod.POST)
   public void getWinDetail(AcceptData acceptData, Long uid, PrintWriter out) {
      if (uid == null || uid <= 0) {
         out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      try {
         String tips = userTaoLiJinRecordService.giveTaolijin(uid, amount);
         out.print(JsonUtil.loadTrueResult(tips));
      } catch (UserTaoLiJinRecordException e) {
         out.print(JsonUtil.loadFalseResult(1, e.getMsg()));
         TaoLiJinWinDetailVO winDetail = userTaoLiJinNewbiesService.receiveReward(uid);
         if (winDetail == null) {
            out.print(JsonUtil.loadFalseResult(1, "红包已被抢光"));
            return;
         }
         // 2、顶部轮播图
         List<SwiperPicture> oldtopPicList = swiperPictureService.getByBannerCardAndVersion("redpack_win_detail_banner",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
         List<SwiperPicture> topPicList = new ArrayList<>();
         if (oldtopPicList != null && oldtopPicList.size() > 0)
            topPicList.addAll(oldtopPicList);
         JSONObject data = new JSONObject();
         data.put("detail", JsonUtil.getApiCommonGson().toJson(winDetail));
         data.put("banner", JsonUtil.getApiCommonGson().toJson(topPicList));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (Exception e) {
         out.print(JsonUtil.loadFalseResult(1, "红包已被抢光啦"));
      }
   }
   /**
    * 新人免单列表
    * @param acceptData
    * @param uid
    * @param out
    */
   @RequestMapping(value = "gerFreeList")
   public void gerFreeList(String callback, AcceptData acceptData, int page, Long uid, PrintWriter out) {
      if (uid == null || uid <= 0) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
      }
      String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis());
      List<TLJFreeBuyGoods> listFree = tljFreeBuyGoodsService.listByDay(day);
      if (listFree == null) {
         listFree = new ArrayList<TLJFreeBuyGoods>();
      }
      JSONArray array = new JSONArray();
      Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
            .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
            acceptData.getVersion());
      for (TLJFreeBuyGoods freeGoods : listFree) {
         TaoBaoGoodsBrief goods = freeGoods.getGoods();
         if (goods == null)
            continue;
         // 计算券后价  1<= n <= 2
         BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
         if (couplePrice.compareTo(new BigDecimal(1.0)) < 0 && couplePrice.compareTo(new BigDecimal(2.0)) > 0)
            continue;
         GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
         // 专属标签
         List<ClientTextStyleVO> labels = new ArrayList<ClientTextStyleVO>();
         labels.add(new ClientTextStyleVO("新人专属", "#FE0014"));
         labels.add(new ClientTextStyleVO("实付0元", "#FF9600"));
         detailVO.setLabels(labels);
         array.add(gson.toJson(detailVO));
      }
      if (page > 1)
         array.clear();
      JSONObject data = new JSONObject();
      data.put("count", array.size());
      data.put("list", array);
      if (page == 1) {
         try {
            data.put("portrait", userInfoService.getUserInfo(uid).getPortrait());
         } catch (UserInfoException e) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, e.getMsg()));
            return;
         }
         String state = "已过期";
         BigDecimal balance = new BigDecimal(0);
         UserTaoLiJinNewbies winDetail = userTaoLiJinNewbiesService.selectByPrimaryKey(uid);
         if (winDetail != null) {
            balance = winDetail.getMoney() ;
            if (winDetail.getEndTime().getTime() > java.lang.System.currentTimeMillis()) {
               try {
                  String remaining = DateUtil.dateDiff2(new Date(), winDetail.getEndTime());
                  if (!remaining.equals("0分"))
                     state = "剩" + remaining + "过期";
               } catch (Exception e) {
                  e.printStackTrace();
               }
            }
         }
         String rule = configTaoLiJinService.getValueByKey("new_user_free_buy_list_rule");
         rule = rule.replace("{链接}", configService.get(ConfigKeyEnum.customerServiceLink.getKey()));
         data.put("state", state);
         data.put("balance","新人红包:" + balance.setScale(2) + "元");
         data.put("rule", rule);
      }
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
}