yujian
2019-07-10 6b1a7a75b06eafb0bbf7f20d950384a3fde4c8ef
Merge remote-tracking branch 'origin/master'

Conflicts:
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
3个文件已修改
482 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -53,6 +53,7 @@
import com.yeshi.fanli.entity.taobao.ClientTBPid;
import com.yeshi.fanli.entity.taobao.PidUser;
import com.yeshi.fanli.entity.taobao.SearchFilter;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
@@ -81,6 +82,7 @@
import com.yeshi.fanli.service.inter.goods.SuperRecommendSpecialService;
import com.yeshi.fanli.service.inter.goods.TaoBaoCouponService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.goods.recommend.HomeRecommendGoodsService;
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;
@@ -92,6 +94,7 @@
import com.yeshi.fanli.service.inter.monitor.MonitorService;
import com.yeshi.fanli.service.inter.order.OrderService;
import com.yeshi.fanli.service.inter.order.ShareGoodsActivityOrderService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
@@ -121,6 +124,7 @@
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.goods.taobao.TLJBuyHongBaoVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.tlj.SpreadHongBao;
import com.yeshi.fanli.vo.user.UserSettingsVO;
@@ -260,6 +264,12 @@
    @Resource
    private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService;
    @Resource
    private HomeRecommendGoodsService homeRecommendGoodsService;
    @Resource
    private TLJBuyGoodsService tljBuyGoodsService;
    @RequestMapping(value = "getHonestList")
    public void getHonestList(AcceptData acceptData, PrintWriter out) {
@@ -1180,8 +1190,9 @@
    }
    // 获取浏览记录
    @RequestMapping(value = "getscanhistory", method = RequestMethod.POST)
    @RequestMapping(value = "getscanhistory", method = RequestMethod.POST)
    public void getScanHistory(AcceptData acceptData, String uid, int page, Integer goodsType, PrintWriter out) {
        if (page < 0) {
            out.print(JsonUtil.loadFalseResult(1, "page不小于0"));
            return;
@@ -1193,13 +1204,13 @@
            out.print(JsonUtil.loadFalseResult(1, "不存在该系统"));
            return;
        }
        List<ScanHistoryV2> list = scanHistoryV2Service.getScanHistoryByDeviceOrUid(
                StringUtil.isNullOrEmpty(uid) ? null : Long.parseLong(uid), acceptData.getDevice(), page, 20, goodsType);
        long count = scanHistoryV2Service.getCountByDeviceOrUid(
        List<ScanHistoryV2> list = scanHistoryV2Service.getScanHistoryByDeviceOrUid(
                        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(), goodsType);
        JSONObject data = new JSONObject();
        data.put("count", count);
        JSONArray array = new JSONArray();
@@ -1288,16 +1299,16 @@
         * 防止请求频率过高
         * 
         */
        if (Constant.IS_OUTNET) {
            String key = "linkParse-" + acceptData.getDevice() + "-" + id;
        // if (Constant.IS_OUTNET) {
        String key = "linkParse-" + acceptData.getDevice() + "-" + id;
            String value = redisManager.getCommonString(key);
            if (!StringUtil.isNullOrEmpty(value)) {
                out.print(JsonUtil.loadFalseResult(11, "请求频率限制"));
                return;
            }
            redisManager.cacheCommonString(key, "1", 5);// 5s间隔
        String value = redisManager.getCommonString(key);
        if (!StringUtil.isNullOrEmpty(value)) {
            out.print(JsonUtil.loadFalseResult(11, "请求频率限制"));
            return;
        }
        redisManager.cacheCommonString(key, "1", 5);// 5s间隔
        // }
        TaoBaoGoodsBrief goods = null;
        try {
            goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(id));
@@ -1332,6 +1343,54 @@
        int pageSize = Constant.PAGE_SIZE;
        JSONArray array = new JSONArray();
        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
        if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion())) {
            List<TaoBaoGoodsBrief> goodsList = homeRecommendGoodsService.listGoodsByPage(null, acceptData.getDevice(),
                    imei, idfa, page);
            BigDecimal rate = hongBaoManageService.getFanLiRate();
            for (TaoBaoGoodsBrief goods : goodsList) {
                TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, rate + "", null);
                if (page < 3)
                    extra.setRecommend(true);
                try {
                    array.add(gson.toJson(extra));
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println(new Gson().toJson(goods));
                }
            }
            if (page == 1) {
                List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice());
                if (list != null && list.size() > 0)
                    for (int i = list.size() - 1; i >= 0; i--) {
                        TLJBuyGoods goods = list.get(i);
                        TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods.getGoods(),
                                TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE + "", null);
                        String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(),
                                TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
                        TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO();
                        vo.setLeft(goods.getLeftHongBaoCount());
                        vo.setMoney(hongBao);
                        vo.setTagName("付款立减 " + hongBao);
                        vo.setTip("");
                        vo.setTotal(goods.getTotalHongBaoCount());
                        extra.setTljBuyHongBao(vo);
                        extra.setPictureTag(new ClientTextStyleVO("立减TOP" + (i + 1), "#E5005C", "#FCE431", null));
                        extra.setRecommend(true);
                        extra.setSpreadMoney(vo.getTagName());
                        array.add(0, gson.toJson(extra));
                    }
            }
            JSONObject data = new JSONObject();
            data.put("data", array);
            data.put("count", 1000);
            out.print(JsonUtil.loadTrueResult(data));
            return;
        }
        // 从推荐来
        if (page <= 1) {
            array.clear();
@@ -1350,6 +1409,7 @@
                    // filter
                    try {
                        gList = daTaoKeGoodsDetailService.filterTaoBaoGoods(gList);
                    } catch (Exception e) {
                    }
@@ -1364,6 +1424,7 @@
                                TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods,
                                        proportion.toString(), "");
                                extra.setRecommend(true);
                                goodsList.add(extra);
                            }
@@ -2237,7 +2298,7 @@
                data.put("listTip", listText);
            }
            spreadHongBao.setTip("当日领取,当日内使用,过期失效。");
            spreadHongBao.setTip("当日领取,当日内使用,过期失效");
            goodsJson.put("spreadHongBao", spreadHongBao);
            // 用户剩余可以淘礼金验证
@@ -2259,6 +2320,27 @@
                goodsJson.put("tljNum", tljNum);
            }
        } else if (from != null && from.equals("taolijin_buy")) {
            noRebateHelpLink = configService.get("zigoulijian_nofanli_help");
            // 查询分享库
            TLJBuyGoods buyGoods = tljBuyGoodsService.selectByAuctionIdAndDay(goods.getAuctionId(),
                    TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"));
            if (buyGoods == null) {
                out.print(JsonUtil.loadFalseResult(2, "自购立减红包过期"));
                return;
            }
            fanliValid = true;
            goodsJson.put("shareValid", false);
            String tljHongBao = TaoBaoUtil.getGoodsHongBaoMoney(goods, new BigDecimal(70)).toString();
            TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO();
            vo.setLeft(buyGoods.getLeftHongBaoCount());
            vo.setMoney(tljHongBao);
            vo.setTagName("付款立减 ¥" + tljHongBao);
            vo.setTip("当日领取,当日内使用,过期失效");
            vo.setTotal(buyGoods.getTotalHongBaoCount());
            goodsJson.put("tljBuyHongBao", vo);
            moneyType = 2;
        }
        goodsJson.put("moneyType", moneyType);
@@ -2399,67 +2481,30 @@
        if (goodsList != null && goodsList.size() > 0)
            goodsList.parallelStream().forEach(goods -> {
                if (goods != null) {
                    // 获取详情
                    TaoBaoGoodsBrief taoBaoGoodsBrief = null;
                    try {
                        taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                // 获取详情
                TaoBaoGoodsBrief taoBaoGoodsBrief = null;
                try {
                    taoBaoGoodsBrief = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(goods.getAuctionId());
                } catch (Exception e) {
                    e.printStackTrace();
                    if (taoBaoGoodsBrief == null) {
                        TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app);
                        goods.setCouponInfo(newGoods.getCouponInfo());
                        goods.setCouponLink(newGoods.getCouponLink());
                        goods.setTkRate(newGoods.getTkRate());
                        taoBaoGoodsBrief = goods;
                    }
                    if (taoBaoGoodsBrief != null) {
                        listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), ""));
                    }
                }
                if (taoBaoGoodsBrief == null) {
                    TaoBaoGoodsBrief newGoods = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), app);
                    goods.setCouponInfo(newGoods.getCouponInfo());
                    goods.setCouponLink(newGoods.getCouponLink());
                    goods.setTkRate(newGoods.getTkRate());
                    taoBaoGoodsBrief = goods;
                }
                if (taoBaoGoodsBrief != null) {
                    listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), ""));
                }
            });
        List<TaoBaoGoodsBrief> listQuality = new ArrayList<TaoBaoGoodsBrief>();
        // 删除推荐
        //
        // try {
        // List<QualityFactory> listRecommend =
        // qualityGoodsService.recommendByAuctionId(id);
        //
        // if (listRecommend != null && listRecommend.size() > 1) {
        // for (QualityFactory quality : listRecommend) {
        //
        // TaoBaoGoodsBrief taoBaoGoodsBrief = quality.getTaoBaoGoodsBrief();
        // if (taoBaoGoodsBrief == null) {
        // continue;
        // }
        //
        // int biz30day = taoBaoGoodsBrief.getBiz30day();
        // if (biz30day >= 10000) {
        // double sales = biz30day;
        // String salesCountMidea = String.format("%.1f", sales / 10000);
        // taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
        // } else {
        // taoBaoGoodsBrief.setSalesCount(biz30day + "");
        // }
        //
        // // 改变图片尺寸
        // String pictUrl = taoBaoGoodsBrief.getPictUrl();
        // if (!StringUtil.isNullOrEmpty(pictUrl) &&
        // !pictUrl.contains("320x320")) {
        // taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
        // }
        //
        // listQuality.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
        // proportion.toString(), null));
        // }
        // }
        // } catch (Exception e2) {
        // e2.printStackTrace();
        // }
        // 取偶数个数据
        if (listExtra.size() % 2 != 0) {
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java
@@ -27,6 +27,7 @@
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
import com.yeshi.fanli.entity.bus.tlj.DeviceTaoLiJinRecord;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin;
@@ -34,18 +35,22 @@
import com.yeshi.fanli.entity.bus.user.UserMoneyExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.taobao.ShareHotGoods;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
import com.yeshi.fanli.exception.banner.SwiperPictureException;
import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsTextTemplateService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
import com.yeshi.fanli.service.inter.tlj.DeviceTaoLiJinRecordService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
@@ -58,13 +63,18 @@
import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoLiJinUtil;
<<<<<<< HEAD
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.goods.MoneyInfoVO;
import com.yeshi.fanli.vo.goods.OtherInfo;
=======
import com.yeshi.fanli.vo.goods.taobao.TLJBuyHongBaoVO;
>>>>>>> refs/remotes/origin/master
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import com.yeshi.fanli.vo.tlj.SpreadHongBao;
import com.yeshi.fanli.vo.tlj.TaoLiJinDetailVO;
@@ -109,35 +119,40 @@
    @Resource
    private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
    @Resource
    private UserTaoLiJinOriginService userTaoLiJinOriginService;
    @Resource
    private UserTaoLiJinDetailService userTaoLiJinDetailService;
    @Resource
    private UserMoneyExtraService userMoneyExtraService;
    @Resource
    private ConfigTaoLiJinService configTaoLiJinService;
    @Resource
    private QualityGoodsService qualityGoodsService;
    @Resource
    private DeviceTaoLiJinRecordService deviceTaoLiJinRecordService;
    @Resource
    private JumpDetailV2Service jumpDetailV2Service;
    @Resource(name = "taskExecutor")
    private TaskExecutor executor;
    @Resource
    private ShareHotGoodsService shareHotGoodsService;
    @Resource
    private TLJBuyGoodsService tljBuyGoodsService;
    @Resource
    private SwiperPictureService swiperPictureService;
    /**
     * 获取淘礼金分享记录
     * 
@@ -157,15 +172,15 @@
            page = 1;
        }
        int pageSize = Constant.PAGE_SIZE;
        List<UserTaoLiJinRecordVO> list = userTaoLiJinRecordService.getRecordByUid((page - 1) * pageSize, pageSize,    uid);
        List<UserTaoLiJinRecordVO> list = userTaoLiJinRecordService.getRecordByUid((page - 1) * pageSize, pageSize,
                uid);
        if (list == null) {
            list = new ArrayList<UserTaoLiJinRecordVO>();
        }
        }
        long count = userTaoLiJinRecordService.countShareRecordByUid(uid);
        GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
        gsonBuilder.registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
            @Override
@@ -177,18 +192,18 @@
                }
            }
        });
        Gson gson = gsonBuilder.create();
        JSONObject data = new JSONObject();
        data.put("count", count);
        data.put("list", gson.toJson(list));
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 统计淘礼金
     *
     * @param acceptData
     * @param uid
     * @param out
@@ -199,10 +214,10 @@
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        // 过期
        userTaoLiJinOriginService.overdueHongBao(uid);
        // 我的淘礼金
        BigDecimal tlj = null;
        UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid);
@@ -211,11 +226,10 @@
        } else {
            tlj = new BigDecimal(0);
        }
        // 今日分享个数
        long countShare = userTaoLiJinRecordService.countTodayNum(uid);
        // 获得
        BigDecimal todayWin = userTaoLiJinOriginService.countMoneyByDate(uid, 1);
        BigDecimal yesterdayWin = userTaoLiJinOriginService.countMoneyByDate(uid, 2);
@@ -230,9 +244,9 @@
        // 问号链接
        String helpLink = configTaoLiJinService.getValueByKey("hongbao_help_link");
        JSONObject data = new JSONObject();
        data.put("tlj",  tlj.setScale(2).toString());
        data.put("tlj", tlj.setScale(2).toString());
        data.put("helpLink", helpLink);
        data.put("countShare", countShare);
        data.put("todayWin", todayWin.setScale(2).toString());
@@ -243,8 +257,7 @@
        data.put("yesterdayUse", yesterdayUse.setScale(2).toString().replaceAll("-", ""));
        data.put("thisMonthUse", thisMonthUse.setScale(2).toString().replaceAll("-", ""));
        data.put("lastMonthUse", lastMonthUse.setScale(2).toString().replaceAll("-", ""));
        // IOS 分享个数
        ClientTextStyleVO textVo1 = new ClientTextStyleVO();
        textVo1.setContent("今日创建分享");
@@ -255,17 +268,16 @@
        ClientTextStyleVO textVo3 = new ClientTextStyleVO();
        textVo3.setContent("个");
        textVo3.setColor("#888888");
        List<ClientTextStyleVO> listCountShare = new ArrayList<ClientTextStyleVO>();
        listCountShare.add(textVo1);
        listCountShare.add(textVo2);
        listCountShare.add(textVo3);
        data.put("listShare", listCountShare);
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 获取淘礼金明细详情
     * 
@@ -301,12 +313,12 @@
            ca.add(Calendar.MONTH, 1);
            date = new Date(ca.getTimeInMillis() - 1);
        }
        // 查询列表
        List<TaoLiJinDetailVO> list = userTaoLiJinDetailService.listUserMoneyDetailForClient(uid, index, date);
        // 统计总条数
        long count = userTaoLiJinDetailService.countUserMoneyDetailForClient(uid, index, date);
        GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
        gsonBuilder.registerTypeAdapter(TaoLiJinDetailTypeEnum.class, new TypeAdapter<TaoLiJinDetailTypeEnum>() {
            @Override
@@ -341,9 +353,7 @@
                }
            }
        });
        Gson gson = gsonBuilder.create();
        JSONObject data = new JSONObject();
@@ -351,11 +361,10 @@
        data.put("data", gson.toJson(list));
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     *   红包领取详情
     * 红包领取详情
     *
     * @param acceptData
     * @param uid
     * @param type
@@ -363,13 +372,13 @@
     */
    @RequestMapping(value = "getHongbaoDetails", method = RequestMethod.POST)
    public void getHongbaoDetails(AcceptData acceptData, Long uid, String type, PrintWriter out) {
        if (StringUtil.isNullOrEmpty(type)) {
            out.print(JsonUtil.loadFalseResult(1, "类型不能为空"));
            return;
        }
        // 用户未登录时  设备领取新红包
        // 用户未登录时 设备领取新红包
        if (uid == null || uid <= 0) {
            BigDecimal money = null;
            DeviceTaoLiJinRecord deviceRecord = deviceTaoLiJinRecordService.getByDevice(acceptData.getDevice());
@@ -385,7 +394,7 @@
                money = new BigDecimal(value);
                deviceTaoLiJinRecordService.save(acceptData.getDevice(), money);
            }
            JSONObject data = new JSONObject();
            data.put("icon", configTaoLiJinService.getValueByKey("taolijin_system_icon"));
            data.put("title", "新人红包");
@@ -397,16 +406,15 @@
            data.put("jumpDetail", jumpDetailV2Service.getByTypeCache("share_goods_hot"));
            data.put("tip", configTaoLiJinService.getValueByKey("hongbao_newbies_tip"));
            data.put("rules", configTaoLiJinService.getValueByKey("newbies_rules_link"));
            out.print(JsonUtil.loadTrueResult(data));
            return;
        }
        }
        // 登录用户
        JSONObject data = new JSONObject();
        data.put("icon", configTaoLiJinService.getValueByKey("taolijin_system_icon"));
        if (type.equals(TaoLiJinOriginEnum.newbiesWin.name())) {
            BigDecimal hasMoney = null;
            UserTaoLiJinOrigin userTaoLiJin = userTaoLiJinOriginService.getByUidAndOrigin(uid, type);
@@ -421,7 +429,7 @@
                    return;
                }
            }
            data.put("title", "新人红包");
            data.put("content", "自购直接抵现,优惠真实可见!");
            data.put("type", 1);
@@ -431,8 +439,8 @@
            data.put("jumpDetail", jumpDetailV2Service.getByTypeCache("share_goods_hot"));
            data.put("tip", configTaoLiJinService.getValueByKey("hongbao_newbies_tip"));
            data.put("rules", configTaoLiJinService.getValueByKey("newbies_rules_link"));
        } else if(type.equals(TaoLiJinOriginEnum.rankWin.name())) {
        } else if (type.equals(TaoLiJinOriginEnum.rankWin.name())) {
            boolean isRank = false;
            BigDecimal hasMoney = null;
            UserTaoLiJinOrigin userTaoLiJin = userTaoLiJinOriginService.getRankByThisMonth(uid, type);
@@ -456,7 +464,7 @@
                    }
                }
            }
            // 等级不足
            if (!isRank) {
                data.put("title", "账户等级福利");
@@ -480,19 +488,18 @@
                data.put("tip", configTaoLiJinService.getValueByKey("hongbao_rank_tip"));
                data.put("rules", configTaoLiJinService.getValueByKey("rank_rules_link"));
            }
        } else {
            out.print(JsonUtil.loadFalseResult(1, "类型不匹配"));
            return;
        }
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 分享爆款商品-限于淘礼金
     *
     * @param acceptData
     * @param uid
     * @param out
@@ -503,18 +510,17 @@
            out.print(JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis());
        List<ShareHotGoods> listHot = shareHotGoodsService.listByDay(day);
        if (listHot == null) {
            listHot = new ArrayList<ShareHotGoods>();
            listHot = new ArrayList<ShareHotGoods>();
        }
        JSONArray array = new JSONArray();
        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
        boolean isNewUser = userInfoExtraService.isNewUser(uid);
        if (isNewUser) {
            // 判定为老用户: 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。
@@ -523,39 +529,39 @@
                isNewUser = false;
            }
        }
        BigDecimal proportion = hongBaoManageService.getFanLiRate();
        for (ShareHotGoods hotGoods : listHot) {
            TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods();
            if (taoBaoGoodsBrief == null) {
                continue;
            }
            // 计算推广红包
            String warningRate = configTaoLiJinService.getValueByKey("warning_value");
            BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, taoBaoGoodsBrief);
            // 推广红包 不能小于1
            if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) {
                continue;
            }
            TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null);
            TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(),
                    null);
            // 去掉标签
            extra.setLabels(null);
            // 显示类型
            if (isNewUser) {
                extra.setMoneyType(1);
                extra.setSpreadMoney("推广红包 ¥"+ 1);
                extra.setSpreadMoney("推广红包 ¥" + 1);
            } else {
                extra.setMoneyType(2);
                extra.setSpreadMoney("推广红包 ¥"+ spreadMoney);
                extra.setSpreadMoney("推广红包 ¥" + spreadMoney);
            }
            array.add(gson.toJson(extra));
        }
        executor.execute(new Runnable() {
            @Override
            public void run() {
@@ -563,7 +569,7 @@
                userTaoLiJinOriginService.overdueHongBao(uid);
            }
        });
        JSONObject data = new JSONObject();
        data.put("count", array.size());
        data.put("list", array);
@@ -660,4 +666,83 @@
        data.put("list", array);
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 分享爆款商品-限于淘礼金
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getBuyGoods", method = RequestMethod.POST)
    public void getBuyGoods(AcceptData acceptData, int page, PrintWriter out) {
        String day = TimeUtil.getGernalTime(java.lang.System.currentTimeMillis());
        List<TLJBuyGoods> listHot = tljBuyGoodsService.listByDay(day);
        if (listHot == null) {
            listHot = new ArrayList<TLJBuyGoods>();
        }
        JSONArray array = new JSONArray();
        Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
        BigDecimal proportion = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE;
        for (TLJBuyGoods hotGoods : listHot) {
            TaoBaoGoodsBrief taoBaoGoodsBrief = hotGoods.getGoods();
            if (taoBaoGoodsBrief == null) {
                continue;
            }
            // 计算推广红包
            BigDecimal spreadMoney = TaoBaoUtil.getGoodsHongBaoMoney(taoBaoGoodsBrief, proportion);
            // 推广红包 不能小于1
            if (spreadMoney.compareTo(new BigDecimal(1.0)) < 0) {
                continue;
            }
            TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(),
                    null);
            // 去掉标签
            extra.setLabels(null);
            String hongBao = spreadMoney.toString();
            TLJBuyHongBaoVO vo = new TLJBuyHongBaoVO();
            vo.setLeft(hotGoods.getLeftHongBaoCount());
            vo.setMoney(hongBao);
            vo.setTagName("付款立减  ¥" + hongBao);
            vo.setTip("");
            vo.setTotal(hotGoods.getTotalHongBaoCount());
            extra.setTljBuyHongBao(vo);
            // 显示类型
            extra.setMoneyType(2);
            extra.setSpreadMoney("付款立减 ¥" + spreadMoney);
            array.add(gson.toJson(extra));
        }
        if (page > 1)
            array.clear();
        JSONObject data = new JSONObject();
        data.put("count", array.size());
        data.put("list", array);
        if (page == 1) {
            try {
                List<SwiperPicture> bannerList = swiperPictureService.getByBannerCard("zigoulijian_banner");
                if (bannerList != null && bannerList.size() > 0)
                    data.put("topPicture", bannerList.get(0).getSrc());
                else
                    data.put("topPicture", "");
            } catch (SwiperPictureException e) {
                e.printStackTrace();
            }
            data.put("ruleUrl", configService.get("zigoulijian_rule"));
        }
        out.print(JsonUtil.loadTrueResult(data));
    }
}
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
@@ -1,11 +1,24 @@
package com.yeshi.fanli.util.pinduoduo;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.yeshi.utils.BigDecimalUtil;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class PinDuoDuoUtil {
@@ -80,4 +93,49 @@
        return salesCountMidea;
    }
    
    public static List<String> getDetailImages(Long id) {
        List<String> imgList = new ArrayList<>();
        try {
            Document doc = Jsoup.connect("http://yangkeduo.com/goods.html?goods_id="+id)
                    .userAgent(
                            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36")
                    .get();
            Elements els = doc.getElementsByTag("script");
            for (int i = 0; i < els.size(); i++) {
                if (els.get(i).html().contains("window.rawData")) {
                    String dataJS = els.get(i).html().replace("window.", "var ");
                    dataJS += "function getData(){return JSON.stringify(rawData);}";
                    ScriptEngineManager manager = new ScriptEngineManager();
                    ScriptEngine engine = manager.getEngineByName("javascript");
                    try {
                        engine.eval(dataJS);
                        if (engine instanceof Invocable) {
                            Invocable in = (Invocable) engine;
                            String jsonStr = in.invokeFunction("getData").toString();
                            JSONObject json = JSONObject.fromObject(jsonStr);
                            JSONArray array = json.optJSONObject("store").optJSONObject("initDataObj")
                                    .optJSONObject("goods").optJSONArray("detailGallery");
                            for (int j = 0; j < array.size(); j++) {
                                imgList.add("http:" + array.optJSONObject(j).optString("url"));
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    break;
                }
            }
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        return imgList;
    }
}