admin
2020-03-12 57f52b2a80ec5ee1fc140ea72420ff475f21880f
粘贴板分析修改,
邀请拿奖金日志添加
4个文件已修改
261 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/WXMPDynamicInfoServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/OrderMoneyRecievedMessageListener.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/WXMPDynamicInfoServiceImpl.java
@@ -12,6 +12,7 @@
import com.yeshi.fanli.dao.dynamic.WXMPDynamicInfoDao;
import com.yeshi.fanli.entity.dynamic.WXMPDynamicInfo;
import com.yeshi.fanli.exception.dynamic.WXMPDynamicInfoException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.dynamic.WXMPDynamicInfoService;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
@@ -67,6 +68,7 @@
            convertContent = convertLinkManager.convertLinkFromText(info.getContent(), uid, true);
        } catch (Exception e) {
            e.printStackTrace();
            LogHelper.errorDetailInfo(e);
            throw new WXMPDynamicInfoException(2, "转链出错");
        }
        wxmpDynamicInfoDao.addShareCount(id);
fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
@@ -21,11 +21,14 @@
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.taobao.TaoBaoTokenParseException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.exception.user.TokenRecordException;
import com.yeshi.fanli.service.inter.user.TokenRecordService;
import com.yeshi.fanli.service.manger.goods.jd.JDGoodsLinkParseManager;
import com.yeshi.fanli.service.manger.goods.tb.TaoBaoTokenAuctionIdMapManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.DouYinUtil;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TokenUtil;
import com.yeshi.fanli.util.Utils;
@@ -58,6 +61,9 @@
    @Resource
    private TaoBaoTokenAuctionIdMapManager taoBaoTokenAuctionIdMapManager;
    @Resource
    private RedisManager redisManager;
    /**
     * @Title: parseContentType @Description: 解析文本的类型 @param text @return Set
@@ -320,12 +326,131 @@
     */
    public CommonGoods parseLink(String link) {
        SimpleCommonGoods simpleGoods = parseGoodsIdFromLink(link);
        if (simpleGoods == null) {
            return null;
        }
        CommonGoods commonGoods = null;
        if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
            TaoBaoGoodsBrief goods = null;
            try {
                goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(simpleGoods.getGoodsId()));
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (TaobaoGoodsDownException e) {
                e.printStackTrace();
            }
            if (goods != null) {
                commonGoods = CommonGoodsFactory.create(goods);
            } else {
                goods = TaoBaoUtil.getTmallGoodsInfo(simpleGoods.getGoodsId());
                if (goods != null) {
                    commonGoods = new CommonGoods();
                    commonGoods.setTitle(goods.getTitle());
                    commonGoods.setPicture(goods.getPictUrl());
                } else {
                    // TODO 根据淘宝商品ID解析标题与图片
                }
            }
        } else if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_JD) {
            // 优先采用高级接口请求数据
            JDGoods jdGoods = null;
            try {
                // 防止高级接口被收回
                jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(simpleGoods.getGoodsId()));
            } catch (Exception e) {
            }
            if (jdGoods == null) {
                jdGoods = JDApiUtil.getGoodsDetail(Long.parseLong(simpleGoods.getGoodsId()));
            }
            if (jdGoods != null) {
                commonGoods = CommonGoodsFactory.create(jdGoods);
            } else {// 商品并未参与推广
                jdGoods = JDUtil.getSimpleGoodsInfo(simpleGoods.getGoodsId());
                if (jdGoods != null) {
                    commonGoods = new CommonGoods();
                    commonGoods.setTitle(jdGoods.getSkuName());
                    commonGoods.setPicture(jdGoods.getPicUrl());
                }
            }
        } else if (simpleGoods.getGoodsType() == Constant.SOURCE_TYPE_PDD) {
            PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(simpleGoods.getGoodsId()));
            if (goods != null) {
                commonGoods = CommonGoodsFactory.create(goods);
            } else {
                goods = PinDuoDuoUtil.getPDDGoodsInfo(simpleGoods.getGoodsId());
                if (goods != null) {
                    commonGoods = new CommonGoods();
                    commonGoods.setTitle(goods.getGoodsName());
                    commonGoods.setPicture(goods.getGoodsThumbnailUrl());
                }
            }
        }
        return commonGoods;
    }
    /**
     * 从链接中解析商品ID
     *
     * @return
     */
    public SimpleCommonGoods parseGoodsIdFromLink(String link) {
        String jdId = parseJDSkuIdFromLink(link);
        if (!StringUtil.isNullOrEmpty(jdId)) {
            return new SimpleCommonGoods(jdId, Constant.SOURCE_TYPE_JD);
        }
        // 解析拼多多
        String pddId = PinDuoDuoUtil.getPDDGoodsId(link);
        if (!StringUtil.isNullOrEmpty(pddId)) {
            return new SimpleCommonGoods(pddId, Constant.SOURCE_TYPE_PDD);
        }
        // 解析淘宝
        String auctionId = parseTBAuctionIdFromLink(link);
        if (!StringUtil.isNullOrEmpty(auctionId)) {
            return new SimpleCommonGoods(auctionId, Constant.SOURCE_TYPE_TAOBAO);
        }
        return null;
    }
    /**
     * 从链接中解析京东商品的SKUID
     *
     * @param link
     * @return
     */
    public String parseJDSkuIdFromLink(String link) {
        // 解析其他商品
        String jdId = JDUtil.getJDGoodsId(link);
        // 微信链接
        if (StringUtil.isNullOrEmpty(jdId)) {
            jdId = JDUtil.getJDGoodsIdByWeiXin(link);
        }
        // 领券短连接
        if (StringUtil.isNullOrEmpty(jdId) && link.contains("u.jd.com")) {
            jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(link);
        }
        return jdId;
    }
    public String parseTBAuctionIdFromLink(String link) {
        TaoBaoGoodsBrief tb = null;
        String auctionId = null;
        if (link.startsWith("https://a.m.taobao.com/i"))// 淘宝账号未登录状态
        {
            link = link.substring("https://a.m.taobao.com/i".length(), link.indexOf(".htm"));
            if (NumberUtil.isNumeric(link)) {
                tb = TaoBaoUtil.isAlimama(link);
                auctionId = link + "";
            }
        } else if (link.contains("ju.taobao.com") || link.contains(".juhuasuan.com")) {// 聚划算
            int index = link.indexOf("item_id");
@@ -338,108 +463,36 @@
                else {
                    id = link.substring(link.indexOf("=" + 1));
                }
                tb = TaoBaoUtil.isAlimama(id);
                if (tb == null) {
                    tb = new TaoBaoGoodsBrief(Long.parseLong(id));
                }
                auctionId = id;
            }
        } else if (link.contains("http://zmnxbc.com")) { // 手机端天猫APP分享
            tb = TaoBaoUtil.parsePhoneShareUrlByTM(link);
            if (tb != null)
                auctionId = tb.getAuctionId() + "";
        } else if (link.contains("h5.m.taobao") || link.contains("detail.m.tmall") || link.contains("item.taobao")
                || link.contains("detail.tmall")) { // 手机页面和电脑页面
            Map<String, String> map = Utils.parseURL(link);
            String id = "";
            id = map.get("id").replace("}", "");
            tb = TaoBaoUtil.isAlimama(id);
            if (tb == null) {
                tb = new TaoBaoGoodsBrief(Long.parseLong(id));
            }
            auctionId = id;
        } else if (link.contains("v.douyin.com")) { // 抖音
            tb = analysisDouYin(link);
            if (tb != null) {
                if (!StringUtil.isNullOrEmpty(tb.getAuctionUrl())) {// 抖音解析到淘宝商品链接
                    return parseLink(tb.getAuctionUrl());
                    CommonGoods goods = parseLink(tb.getAuctionUrl());
                    if (goods != null) {
                        auctionId = goods.getGoodsId() + "";
                    }
                }
            }
        } else {
            tb = TaoBaoUtil.parsePhoneShareUrlByTB(link);
            if (tb != null)
                auctionId = tb.getAuctionId() + "";
        }
        // 没解析到淘宝相关商品
        if (tb == null) {
            String goodsId = TaoBaoUtil.getGoodsIdByPhoneShareUrl(link);
            if (!StringUtil.isNullOrEmpty(goodsId)) {
                tb = TaoBaoUtil.isAlimama(goodsId);
                if (tb == null) {
                    tb = new TaoBaoGoodsBrief(Long.parseLong(goodsId));
                }
            }
        }
        return auctionId;
        CommonGoods commonGoods = null;
        // 淘宝商品解析结束
        if (tb != null) {
            if (StringUtil.isNullOrEmpty(tb.getTitle())) {
                tb = TaoBaoUtil.getTaoBaoGoodsBriefNotInPub(tb.getId());
                if (tb != null) {
                    commonGoods = new CommonGoods();
                    commonGoods.setPicture(tb.getPictUrl());
                    commonGoods.setTitle(tb.getTitle());
                }
            } else {
                commonGoods = CommonGoodsFactory.create(tb);
            }
        } else {
            // 解析其他商品
            String jdId = JDUtil.getJDGoodsId(link);
            // 微信链接
            if (StringUtil.isNullOrEmpty(jdId)) {
                jdId = JDUtil.getJDGoodsIdByWeiXin(link);
            }
            // 领券短连接
            if (StringUtil.isNullOrEmpty(jdId) && link.contains("u.jd.com")) {
                jdId = jdGoodsLinkParseManager.parseGoodsIdByJDShortUrl(link);
            }
            if (!StringUtil.isNullOrEmpty(jdId)) {
                JDGoods goods = JDApiUtil.getGoodsDetail(Long.parseLong(jdId));
                if (goods != null) {
                    // 高级接口 -- 信息更完整
                    JDGoods jdGoods = JDApiUtil.queryGoodsDetail(Long.parseLong(jdId));
                    if (jdGoods != null) {
                        commonGoods = CommonGoodsFactory.create(jdGoods);
                    } else {
                        commonGoods = CommonGoodsFactory.create(goods);
                    }
                } else {
                    goods = JDUtil.getSimpleGoodsInfo(jdId);
                    if (goods != null) {
                        commonGoods = new CommonGoods();
                        commonGoods.setTitle(goods.getSkuName());
                        commonGoods.setPicture(goods.getPicUrl());
                    }
                }
            } else {
                String pddId = PinDuoDuoUtil.getPDDGoodsId(link);
                if (!StringUtil.isNullOrEmpty(pddId)) {
                    PDDGoodsDetail goods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(pddId));
                    if (goods != null) {
                        commonGoods = CommonGoodsFactory.create(goods);
                    } else {
                        goods = PinDuoDuoUtil.getPDDGoodsInfo(pddId);
                        if (goods != null) {
                            commonGoods = new CommonGoods();
                            commonGoods.setTitle(goods.getGoodsName());
                            commonGoods.setPicture(goods.getGoodsThumbnailUrl());
                        }
                    }
                }
            }
        }
        return commonGoods;
    }
    private CommonGoods parseTaoBaoToken(String token) throws TaoBaoTokenParseException {
@@ -498,6 +551,32 @@
            return true;
        return false;
    }
    class SimpleCommonGoods {
        private String goodsId;
        private int goodsType;
        public SimpleCommonGoods(String goodsId, int goodsType) {
            this.goodsId = goodsId;
            this.goodsType = goodsType;
        }
        public String getGoodsId() {
            return goodsId;
        }
        public void setGoodsId(String goodsId) {
            this.goodsId = goodsId;
        }
        public int getGoodsType() {
            return goodsType;
        }
        public void setGoodsType(int goodsType) {
            this.goodsType = goodsType;
        }
    }
}
/**
fanli/src/main/java/com/yeshi/fanli/util/rocketmq/consumer/order/OrderMoneyRecievedMessageListener.java
@@ -16,6 +16,7 @@
import com.aliyun.openservices.ons.api.Message;
import com.aliyun.openservices.ons.api.MessageListener;
import com.aliyun.openservices.ons.api.Producer;
import com.google.gson.Gson;
import com.yeshi.fanli.dto.mq.order.OrderTopicTagEnum;
import com.yeshi.fanli.dto.mq.order.body.OrderMoneyRecievedMQMsg;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
@@ -84,6 +85,7 @@
                            mainHongBaoId = v2.getParent().getId();
                        HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByHongBaoId(mainHongBaoId);
                        if (hongBaoOrder != null && hongBaoOrder.getCommonOrder() != null) {
                            // 按订单号与用户统计资金
                            String mapKey = String.format("%s#%s#%s#%s", hongBaoOrder.getCommonOrder().getOrderNo(),
                                    hongBaoOrder.getCommonOrder().getSourceType(), v2.getUserInfo().getId(),
                                    getHongBaoType(v2.getType()));
@@ -104,6 +106,7 @@
                    OrderMoneyRecievedMQMsg msg = new OrderMoneyRecievedMQMsg(Integer.parseInt(type),
                            Long.parseLong(uid), Integer.parseInt(sourceType), orderNo, moneyMap.get(mapKey),
                            new Date(), 0);
                    LogHelper.test(String.format("批量返利到账订单分发:\n key值:%s  \n 内容:", key, new Gson().toJson(msg)));
                    producer.send(MQMsgBodyFactory.create(MQTopicName.TOPIC_ORDER,
                            OrderTopicTagEnum.orderFanLiSeparateByOrderNo, msg));
                }
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -2002,14 +2002,14 @@
            if (elements.size() >= 0) {
                for (int i = 0; i < elements.size(); i++) {
                    String content = elements.get(i).toString();
                    if (content.contains("var _DATA_Mdskip")) {
                    if (content.contains("var _DATA_Detail")) {
                        content = content.replace("<script>", "");
                        content = content.replace("</script>", "");
                        if (content.contains("videoDetail")) {
                            content += ";function getData(){ var json={title:_DATA_Mdskip.item.title,pictUrl:_DATA_Mdskip.item.videoDetail.videoThumbnailURL};   return JSON.stringify(json);}";
                            content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
                        } else {
                            content += ";function getData(){ var json={title:_DATA_Mdskip.item.title,pictUrl:_DATA_Mdskip.item.videos[0].videoThumbnailURL};   return JSON.stringify(json);}";
                            content += ";function getData(){ var json={title:_DATA_Detail.item.title,pictUrl:_DATA_Detail.item.images[0]};   return JSON.stringify(json);}";
                        }
                        ScriptEngineManager manager = new ScriptEngineManager();
@@ -2024,6 +2024,9 @@
                            taoBaoGoodsBrief = new TaoBaoGoodsBrief();
                            taoBaoGoodsBrief.setTitle(title.toString());
                            taoBaoGoodsBrief.setPictUrl(pictUrl.toString());
                            if (!pictUrl.toString().startsWith("http")) {
                                taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize220Img("http:" + pictUrl.toString()));
                            }
                        }
                        break;