yujian
2019-07-10 aad0554cc7f18a6ec05e2e5e646b5e501d41617d
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -41,6 +41,7 @@
import com.yeshi.fanli.entity.bus.user.Order;
import com.yeshi.fanli.entity.bus.user.ShamUser;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserMoneyExtra;
import com.yeshi.fanli.entity.common.ImageInfo;
import com.yeshi.fanli.entity.common.JumpDetail;
import com.yeshi.fanli.entity.common.JumpDetailV2;
@@ -81,6 +82,7 @@
import com.yeshi.fanli.service.inter.goods.TaoBaoCouponService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.goods.recommend.RecommendGoodsDeleteHistoryService;
import com.yeshi.fanli.service.inter.homemodule.DeviceSexService;
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.service.inter.homemodule.SuperSpecialService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
@@ -94,12 +96,17 @@
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import com.yeshi.fanli.service.inter.tlj.DeviceTaoLiJinRecordService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService;
import com.yeshi.fanli.service.inter.user.ShamUserService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserCustomSettingsService;
import com.yeshi.fanli.service.inter.user.UserGoodsStorageService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserMoneyExtraService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.RedisManager;
@@ -113,7 +120,9 @@
import com.yeshi.fanli.util.taobao.TaoBaoCouponUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.taobao.TaoLiJinUtil;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.tlj.SpreadHongBao;
import com.yeshi.fanli.vo.user.UserSettingsVO;
import net.sf.json.JSONArray;
@@ -230,6 +239,24 @@
   @Resource
   private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
   @Resource
   private UserMoneyExtraService userMoneyExtraService;
   @Resource
   private UserTaoLiJinOriginService userTaoLiJinOriginService;
   @Resource
   private ConfigTaoLiJinService configTaoLiJinService;
   @Resource
   private DeviceTaoLiJinRecordService deviceTaoLiJinRecordService;
   @Resource
   private DeviceSexService deviceSexService;
   @Resource
   private UserTaoLiJinRecordService userTaoLiJinRecordService;
   @Resource
   private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService;
@@ -628,7 +655,7 @@
         taoBaoGoodsBriefExtra.setAuctionUrl(tb.getAuctionUrl());
         if (uid != null && !"".equals(uid.trim())) {
            CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(Long.parseLong(uid),
                  Long.parseLong(id));
                  Long.parseLong(id), Constant.SOURCE_TYPE_TAOBAO);
            data.put("collection", collectionGoods != null ? true : false);
         }
@@ -888,7 +915,7 @@
      // 判断收藏
      if (!StringUtil.isNullOrEmpty(uid)) {
         CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(Long.parseLong(uid),
               Long.parseLong(id));
               Long.parseLong(id), Constant.SOURCE_TYPE_TAOBAO);
         data.put("collected", collectionGoods != null ? true : false);
      } else
         data.put("collected", false);
@@ -1154,7 +1181,7 @@
   // 获取浏览记录
   @RequestMapping(value = "getscanhistory", method = RequestMethod.POST)
   public void getScanHistory(AcceptData acceptData, String uid, int page, PrintWriter out) {
   public void getScanHistory(AcceptData acceptData, String uid, int page, Integer goodsType, PrintWriter out) {
      if (page < 0) {
         out.print(JsonUtil.loadFalseResult(1, "page不小于0"));
         return;
@@ -1166,10 +1193,13 @@
         out.print(JsonUtil.loadFalseResult(1, "不存在该系统"));
         return;
      }
      List<ScanHistoryV2> list = scanHistoryV2Service.getScanHistoryByDeviceOrUid(
            StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), page, 20);
            StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), page, 20, goodsType);
      long count = scanHistoryV2Service.getCountByDeviceOrUid(
            StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice());
                  StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), goodsType);
      JSONObject data = new JSONObject();
      data.put("count", count);
      JSONArray array = new JSONArray();
@@ -1205,10 +1235,10 @@
   }
   @RequestMapping(value = "deletescanhistory", method = RequestMethod.POST)
   public void deleteScanHistory(AcceptData acceptData, String type, String uid, String ids, PrintWriter out) {
   public void deleteScanHistory(AcceptData acceptData, String type, String uid, String ids,
         Integer goodsType, PrintWriter out) {
      BusinessSystem sys = businessSystemService.getBusinessSystem(acceptData.getPlatform(),
            acceptData.getPackages());
      if (sys == null) {
         out.print(JsonUtil.loadFalseResult(1, "系统不存在"));
         return;
@@ -1219,11 +1249,11 @@
         for (String auctionIdStr : idStr) {
            scanHistoryV2Service.deleteByAuctionIdAndDeviceOrUid(
                  StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(),
                  Long.parseLong(auctionIdStr));
                  Long.parseLong(auctionIdStr), goodsType);
         }
      } else {
         scanHistoryV2Service.deleteByDeviceOrUid(StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid),
               acceptData.getDevice());
               acceptData.getDevice(), goodsType);
      }
      out.print(JsonUtil.loadTrueResult(""));
@@ -1317,6 +1347,13 @@
               List<TaoBaoGoodsBrief> gList = recommendGoodsDeleteHistoryService
                     .filterGoods(acceptData.getDevice(), result.getTaoBaoGoodsBriefs());
               // filter
               try {
                  gList = daTaoKeGoodsDetailService.filterTaoBaoGoods(gList);
               } catch (Exception e) {
               }
               // 设备推荐
               if (gList != null)
                  for (TaoBaoGoodsBrief goods : gList) {
@@ -1593,8 +1630,11 @@
   @RequestMapping(value = "getRecommendIndex")
   public void getRecommendIndex(AcceptData acceptData, Long uid, PrintWriter out) {
      try {
         // 获取设备定义性别
         int deviceSex = deviceSexService.getDeviceSex(acceptData.getDevice());
         // 1、专题模块
         JSONObject root = specialService.listCacheSpecialToIndex(acceptData);
         JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex);
         // 2、顶部轮播图
         List<SwiperPicture> topPicList = getSwiperByCard("index_top");
@@ -1798,13 +1838,9 @@
    * @param out
    */
   @RequestMapping(value = "getgoodsinfo", method = RequestMethod.POST)
   public void getGoodsInfo(AcceptData acceptData, String id, String uid, String from, PrintWriter out) {
   public void getGoodsInfo(AcceptData acceptData, Long id, Long uid, String from, PrintWriter out) {
      if ("0".equalsIgnoreCase(uid)) {
         uid = "";
      }
      if (StringUtil.isNullOrEmpty(id)) {
      if (id == null) {
         out.print(JsonUtil.loadFalseResult(1, "请上传id"));
         return;
      }
@@ -1848,14 +1884,14 @@
      if (!convertInServer) {
         try {
            goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(Long.parseLong(id));
            goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(id);
            if (goods == null) {
               TaoKeAppInfo app = new TaoKeAppInfo();
               app.setAppKey(TaoBaoConstant.TAOBAO_COMMON_APPKEY);
               app.setAppSecret(TaoBaoConstant.TAOBAO_COMMON_APPSECRET);
               app.setPid(TaoBaoConstant.TAOBAO_COMMON_PID);
               app.setAdzoneId(TaoBaoConstant.TAOBAO_COMMON_PID.split("_")[3]);
               goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app);
               goods = TaoKeApiUtil.searchGoodsDetail(id, app);
               final TaoBaoGoodsBrief finalGoods = goods;
               if (goods != null) {
                  ThreadUtil.run(new Runnable() {
@@ -1870,7 +1906,7 @@
            // 商品下架
            ThreadUtil.run(new Runnable() {
               public void run() {
                  taoBaoGoodsUpdateService.offlineTaoBaoGoods(Long.parseLong(id));
                  taoBaoGoodsUpdateService.offlineTaoBaoGoods(id);
               }
            });
@@ -1887,7 +1923,7 @@
         app.setPid(clientPid);
         try {
            goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app);
            goods = TaoKeApiUtil.searchGoodsDetail(id, app);
            if (goods != null) {
               ticket.put("clickUrl", goods.getAuctionUrl());
               // 测试使用
@@ -1909,7 +1945,7 @@
         } catch (TaobaoGoodsDownException e) {
            ThreadUtil.run(new Runnable() {
               public void run() {
                  taoBaoGoodsUpdateService.offlineTaoBaoGoods(Long.parseLong(id));
                  taoBaoGoodsUpdateService.offlineTaoBaoGoods(id);
               }
            });
         }
@@ -1983,11 +2019,10 @@
      }
      // 判断收藏
      if (StringUtil.isNullOrEmpty(uid)) {
      if (uid == null) {
         data.put("collected", false);
      } else {
         CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(Long.parseLong(uid),
               Long.parseLong(id));
         CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id, Constant.SOURCE_TYPE_TAOBAO);
         data.put("collected", collectionGoods != null ? true : false);
      }
@@ -2033,8 +2068,7 @@
               redisManager.saveCommonTaoToken(tb.getAuctionId(), token);
            }
         }
         // 测试
         if (!Constant.IS_TEST)
         if (!VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
            tb.setCouponLinkTaoToken(token);
         // 服务端转链
@@ -2052,8 +2086,9 @@
               + tb.getCouponEffectiveEndTime().replace("-", "."));
         // 券的口令
         // 测试
         if (!Constant.IS_TEST)
         if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion()))
            couponInfo.put("couponToken", "");
         else
            couponInfo.put("couponToken", token);
         goodsJson.put("couponInfo", couponInfo);
@@ -2120,26 +2155,22 @@
         goodsJson.put("shopInfo", tbShopInfo);
      }
      goodsJson.put("fanliValid", true);// 是否有返利
      // 分享路径
      String shareUrl = String.format("%s?id=" + tb.getAuctionId(), Constant.systemCommonConfig.getAppShareInfoUrl());
      // 是否加入选品库: 0未加入 1 已加入
      boolean storageState = false;
      if (uid != null && uid.trim().length() > 0) {
         storageState = userGoodsStorageService.isExistStorage(Long.parseLong(uid), Long.parseLong(id));
      if (uid != null) {
         storageState = userGoodsStorageService.isExistStorage(uid, id, Constant.SOURCE_TYPE_TAOBAO);
      }
      data.put("storageState", storageState);
      data.put("shareUrl", shareUrl);
      data.put("goods", goodsJson);
      data.put("shareUsers", listShareUser);
      data.put("couponUsers", listCouponUser);
      data.put("detailWebUrl", "http://apph5.yeshitv.com/apppage/goods_img.html?id=" + id);
      data.put("noRebateHelpLink", configService.get("no_rebate_help_link"));
      String noRebateHelpLink = null;
      // 商品链接
      String h5Url = String.format("http://%s%s?id=%s&appType=flq", configService.getH5Host(),
@@ -2148,6 +2179,96 @@
         data.put("h5Url", HttpUtil.getShortLink(h5Url));
      } catch (Exception e) {
         data.put("h5Url", h5Url);
      }
      // 是否有返利
      boolean fanliValid = true;
      // 资金类型 1-返 2-奖
      int moneyType = 1;
      // 推广红包
      if (from != null && from.equals("taolijin")) {
         // 计算推广红包
         String warningRate = configTaoLiJinService.getValueByKey("warning_value");
         BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
         // 推广红包 不能小于1
         if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) {
            out.print(JsonUtil.loadFalseResult(2, "商品不存在"));
            return;
         }
         // 是否为新用户
         boolean isNewUser = userInfoExtraService.isNewUser(uid);
         if (isNewUser) {
            // 判定为老用户: 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。
            long countRecord = userTaoLiJinRecordService.countRecordByUid(uid);
            if (countRecord > 0) {
               isNewUser = false;
            }
         }
         SpreadHongBao spreadHongBao = new SpreadHongBao();
         if (isNewUser) {
            spreadHongBao.setMoney("1");
         } else {
            spreadHongBao.setMoney(spreadMoney.toString());
            moneyType = 2;
            fanliValid = false;
            ClientTextStyleVO textStyleVO1 = new ClientTextStyleVO();
            textStyleVO1.setContent("分享");
            textStyleVO1.setColor("#666666");
            ClientTextStyleVO textStyleVO2 = new ClientTextStyleVO();
            textStyleVO2.setContent("赚奖金");
            textStyleVO2.setColor("#F14242");
            ClientTextStyleVO textStyleVO3 = new ClientTextStyleVO();
            textStyleVO3.setContent(",好友");
            textStyleVO3.setColor("#666666");
            ClientTextStyleVO textStyleVO4 = new ClientTextStyleVO();
            textStyleVO4.setContent("领红包!");
            textStyleVO4.setColor("#F14242");
            List<ClientTextStyleVO> listText = new ArrayList<ClientTextStyleVO>();
            listText.add(textStyleVO1);
            listText.add(textStyleVO2);
            listText.add(textStyleVO3);
            listText.add(textStyleVO4);
            data.put("listTip", listText);
         }
         spreadHongBao.setTip("当日领取,当日内使用,过期失效。");
         goodsJson.put("spreadHongBao", spreadHongBao);
         // 用户剩余可以淘礼金验证
         UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid);
         if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) {
            data.put("userHongbao", new BigDecimal(0).setScale(2).toString());
         } else {
            data.put("userHongbao", userMoneyExtra.getTlj().setScale(2).toString());
         }
         noRebateHelpLink = configTaoLiJinService.getValueByKey("share_goods_help_link");
         if (Constant.IS_TEST) {
            fanliValid = true;
            goodsJson.put("shareValid", false);
            JSONObject tljNum = new JSONObject();
            tljNum.put("percent", "80");
            tljNum.put("num", "8825");
            goodsJson.put("tljNum", tljNum);
         }
      }
      goodsJson.put("moneyType", moneyType);
      goodsJson.put("fanliValid", fanliValid);
      data.put("goods", goodsJson);
      if (!StringUtil.isNullOrEmpty(noRebateHelpLink)) {
         data.put("noRebateHelpLink", noRebateHelpLink);
      } else {
         data.put("noRebateHelpLink", configService.get("no_rebate_help_link"));
      }
      // 取消分享活动
@@ -2170,15 +2291,12 @@
      out.print(JsonUtil.loadTrueResult(data));
      final String tempUid = uid;
      final TaoBaoGoodsBrief goodsInfo = tb;
      ThreadUtil.run(new Runnable() {
         public void run() {
            // 添加浏览记录
            try {
               scanHistoryV2Service.addScanHistory(
                     StringUtil.isNullOrEmpty(tempUid) ? null : Long.parseLong(tempUid), acceptData.getDevice(),
                     goodsInfo);
               scanHistoryV2Service.addScanHistory(uid, acceptData.getDevice(), goodsInfo);
            } catch (Exception e) {
               e.printStackTrace();
            }
@@ -2376,18 +2494,47 @@
      }
      try {
         List<Special> list = new ArrayList<Special>();
         // 专题活动
         String specialCard = "special_activities";
         List<Special> listSpecial = specialService.listPageBySystemAndCard(0, Integer.MAX_VALUE, specialCard,
               system.getId());
         if (listSpecial == null) {
            listSpecial = new ArrayList<Special>();
         if (listSpecial != null) {
            list.addAll(listSpecial);
         }
         for (int i = 0; i < list.size(); i++) {
            Special special = list.get(i);
            JumpDetailV2 jumpDetail = special.getJumpDetail();
            if (jumpDetail != null) {
               jumpDetail.setNeedLogin(special.isJumpLogin());
               special.setJumpDetail(jumpDetail);
            }
            String name = special.getName();
            if (StringUtil.isNullOrEmpty(name)) {
               continue;
            }
            // 是否需要弹出框
            if (name.equals("账户等级特权")) {
               if (!VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) {
                  list.remove(i);
                  i--;
               } else {
                  if (uid != null) {
                     special.setElastic(userTaoLiJinOriginService.hasRankHongBao(uid));
                  }
               }
            }
         }
         JSONObject root = new JSONObject();
         root.put("special", JsonUtil.getApiCommonGson().toJson(listSpecial));
         root.put("special", JsonUtil.getApiCommonGson().toJson(list));
         out.print(JsonUtil.loadTrueResult(root));
      } catch (Exception e) {