admin
2021-05-14 ae2294be876ac4595d7b31b36c0057726d12354f
淘宝券后价计算方法名称修改
40个文件已修改
3个文件已添加
2135 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/ClientJspController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/QualityFactoryAdminController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoGoodsBriefAdminController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/apph5/AppH5QualityGoodsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/CommonContentController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/CommonContentControllerV2.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/web/TLJBuyGoodsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/web/TLJFreeBuyGoodsController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ShamUser.java 124 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/TaoLiJinJob.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityGoodsUpdateServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/CommonTemplateContentServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TLJFreeBuyGoodsUpdateServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsActivityServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinNewbiesServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/activity/ActivityUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOLijinFactory.java 633 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/suning/SuningUtil.java 180 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeScApiUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java 158 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/goods/CouponInfoVO.java 158 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/goods/MoneyInfoVO.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/goods/lijin/GoodsDetailVO.java 413 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/dubbo/consumer.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/ClientJspController.java
@@ -222,7 +222,7 @@
                // 有券
                if (!StringUtil.isNullOrEmpty(goods.getCouponInfo())) {
                    goodsJSON.put("finalPrice", TaoBaoUtil.getAfterUseCouplePrice(goods));
                    goodsJSON.put("finalPrice", TaoBaoUtil.getCouponPrice(goods));
                }
                data.put("goods", goodsJSON);
fanli/src/main/java/com/yeshi/fanli/controller/admin/QualityFactoryAdminController.java
@@ -416,7 +416,7 @@
                }
                /* 券后价--计算 */
                BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
                BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
                map.put("couponPrice", couponPrice);
                /* 预计收益: 公司、用户 */
fanli/src/main/java/com/yeshi/fanli/controller/admin/TaoBaoGoodsBriefAdminController.java
@@ -171,7 +171,7 @@
                }
                /* 券后价--计算 */
                BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
                BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
                map.put("couponPrice", couponPrice);
                /* 预计收益: 公司、用户 */
@@ -643,7 +643,7 @@
                     */
                    /* 券后价--计算 */
                    BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
                    BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
                    map.put("couponPrice", couponPrice);
                    /* 预计收益: 公司、用户 */
@@ -850,7 +850,7 @@
                map.put("goodsSource", 1);
                /* 券后价--计算 */
                BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
                BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
                map.put("couponPrice", couponPrice);
                /* 预计收益: 公司、用户 */
@@ -938,7 +938,7 @@
            map.put("goodsSource", 1);
            /* 券后价--计算 */
            BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
            BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
            map.put("couponPrice", couponPrice);
            /* 预计收益: 公司、用户 */
@@ -1069,7 +1069,7 @@
                map.put("goodsSource", 1);
                /* 券后价--计算 */
                BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
                BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
                map.put("couponPrice", couponPrice);
                /* 预计收益: 公司、用户 */
fanli/src/main/java/com/yeshi/fanli/controller/apph5/AppH5QualityGoodsController.java
@@ -1185,7 +1185,7 @@
                    }
                }
                BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
                BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
                if (couplePrice.compareTo(new BigDecimal("9.9")) == 1) {
                    continue; // 券后价大于10
                }
fanli/src/main/java/com/yeshi/fanli/controller/client/lijin/GoodsControllerLijin.java
New file
@@ -0,0 +1,160 @@
package com.yeshi.fanli.controller.client.lijin;
import com.yeshi.common.entity.taobao.TaoKeAppInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.exception.pdd.PDDApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.service.inter.pdd.PDDAuthService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.TaoBaoConstant;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
import com.yeshi.fanli.util.jd.JDApiUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
import com.yeshi.fanli.util.suning.SuningApiUtil;
import com.yeshi.fanli.util.suning.SuningUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.util.vipshop.VipShopApiUtil;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
@Controller
@RequestMapping("api/lijin/goods")
public class GoodsControllerLijin {
    @Resource
    private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
    @Resource
    private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
    @Resource
    private PDDAuthService pddAuthService;
    /**
     * 获取商品详情
     *
     * @param acceptData
     * @param goodsType
     * @param goodsId
     * @param from
     * @return
     */
    @RequestMapping("getGoodsDetail")
    @ResponseBody
    public String getGoodsDetail(AcceptData acceptData, int goodsType, String goodsId, Long uid, String from) {
        switch (goodsType) {
            case Constant
                    .SOURCE_TYPE_TAOBAO:
                TaoBaoGoodsBrief taobaoGoods = getTaoBaoGoods(Long.parseLong(goodsId));
                if (taobaoGoods == null) {
                }
                break;
            case Constant
                    .SOURCE_TYPE_JD:
                JDGoods jdGoods = getJDGoods(Long.parseLong(goodsId));
                break;
            case Constant
                    .SOURCE_TYPE_PDD:
                PDDGoodsDetail pddGoodsDetail = getPDDGoods(Long.parseLong(goodsId), uid);
                break;
            case Constant
                    .SOURCE_TYPE_VIP:
                VIPGoodsInfo vipGoodsInfo = VipShopApiUtil.getGoodsDetail(goodsId);
                break;
            case Constant
                    .SOURCE_TYPE_SUNING:
                String[] ids = SuningUtil.getGoodsIdDetail(goodsId);
                SuningGoodsInfo suningGoodsInfo = SuningApiUtil.getGoodsDetail(ids[1], ids[0]);
                break;
        }
        return null;
    }
    private TaoBaoGoodsBrief getTaoBaoGoods(Long id) {
        try {
            TaoBaoGoodsBrief goods = taoBaoGoodsCacheUtil.getCommonTaoBaoGoodsInfo(id);
            if (goods != null) {
                return goods;
            }
            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(id, app);
            final TaoBaoGoodsBrief finalGoods = goods;
            if (goods != null) {
                ThreadUtil.run(new Runnable() {
                    @Override
                    public void run() {
                        taoBaoGoodsCacheUtil.saveCommonTaoBaoGoodsInfo(finalGoods);
                    }
                });
            }
            return goods;
        } catch (TaobaoGoodsDownException e) {
            // 商品下架
            ThreadUtil.run(new Runnable() {
                public void run() {
                    taoBaoGoodsUpdateService.offlineTaoBaoGoods(id);
                }
            });
        }
        return null;
    }
    private JDGoods getJDGoods(Long id) {
        JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); // 高级接口
        if (jdGoods == null) {
            jdGoods = JDUtil.getGoodsDetail(id); // 爬取网页
            // jdGoods = JDApiUtil.getGoodsDetail(id); // 普通接口
        }
        return jdGoods;
    }
    private PDDGoodsDetail getPDDGoods(Long id, Long uid) {
        PDDGoodsDetail pddGoods = null;
        try {
            pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, pddAuthService.getFanliCustomParams(uid));
        } catch (PDDApiException e) {
            e.printStackTrace();
            if (e.getCode() == PDDApiException.CODE_NOT_AUTH) {
                try {
                    pddGoods = PinDuoDuoApiUtil.getGoodsDetail(id, PinDuoDuoApiUtil.PID_FANLI, Constant.PDD_SEARCH_CUSTOMER_PARAMS);
                } catch (PDDApiException e1) {
                }
            }
        }
        return pddGoods;
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/CommonContentController.java
@@ -111,8 +111,8 @@
            TaoBaoGoodsBriefExtra extra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, pro.toString(), "");
            if (CommonContentTypeEnum.valueOf(key) == CommonContentTypeEnum.mianDan)// 免单商品
            {
                extra.getTaoBaoHongBaoInfo().setRate("¥" + TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief));
                extra.getTaoBaoHongBaoInfo().setHongbao(TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief));
                extra.getTaoBaoHongBaoInfo().setRate("¥" + TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief));
                extra.getTaoBaoHongBaoInfo().setHongbao(TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief));
            }
            array.add(gson.toJson(extra));
        }
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -942,7 +942,7 @@
        goods.put("coupon", StringUtil.isNullOrEmpty(tb.getCouponInfo()) ? false : true);
        // 获取券信息
        if (!StringUtil.isNullOrEmpty(tb.getCouponInfo())) {
            BigDecimal quanPrice = TaoBaoUtil.getAfterUseCouplePrice(tb);
            BigDecimal quanPrice = TaoBaoUtil.getCouponPrice(tb);
            JSONObject couponInfo = new JSONObject();
            couponInfo.put("couponPrice", quanPrice.toString());
            // 服务端转链
@@ -2017,7 +2017,7 @@
        if (!StringUtil.isNullOrEmpty(tb.getCouponInfo()) && tb.getCouponAmount() != null
                && tb.getCouponAmount().compareTo(new BigDecimal(0)) > 0 && tb.getCouponEffectiveStartTime() != null
                && tb.getCouponEffectiveEndTime() != null) {
            BigDecimal quanPrice = TaoBaoUtil.getAfterUseCouplePrice(tb);
            BigDecimal quanPrice = TaoBaoUtil.getCouponPrice(tb);
            JSONObject couponInfo = new JSONObject();
            couponInfo.put("couponPrice", MoneyBigDecimalUtil.getWithNoZera(quanPrice).toString());
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/ShareController.java
@@ -241,7 +241,7 @@
                        .replace("{商品原价}", MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getZkPrice()) + "")
                        .replace("{优惠券面额}",
                                MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getCouponAmount()).toString())
                        .replace("{优惠券价}", TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + "");
                        .replace("{优惠券价}", TaoBaoUtil.getCouponPrice(taoBaoLink.getGoods()) + "");
            }
            shareText = shareText.replace("{店铺类型}", shopType)
@@ -409,7 +409,7 @@
                        .replace("{优惠券面额}",
                                MoneyBigDecimalUtil.getWithNoZera(taoBaoLink.getGoods().getCouponAmount()).toString())
                        .replace("{淘礼金面额}", MoneyBigDecimalUtil.getWithNoZera(spreadMoney).toString())
                        .replace("{优惠券价}", TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + "");
                        .replace("{优惠券价}", TaoBaoUtil.getCouponPrice(taoBaoLink.getGoods()) + "");
            }
            shareText = shareText.replace("{店铺类型}", shopType)
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java
@@ -455,7 +455,7 @@
            if (goods == null) 
                return false;
            
            BigDecimal quanPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal quanPrice = TaoBaoUtil.getCouponPrice(goods);
            if (quanPrice.compareTo(priceLimit) <= 0)
                return true;
        } catch (TaobaoGoodsDownException e) {
@@ -469,7 +469,7 @@
        JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
        if (goods == null) 
            return false;
        BigDecimal quanPrice = JDUtil.getQuanPrice(goods);
        BigDecimal quanPrice = JDUtil.getCouponPrice(goods);
        if (quanPrice.compareTo(priceLimit) <= 0)
            return true;
     
@@ -480,7 +480,7 @@
        PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
        if (goods == null) 
            return false;
        BigDecimal quanPrice = PinDuoDuoUtil.getQuanPrice(goods);
        BigDecimal quanPrice = PinDuoDuoUtil.getCouponPrice(goods);
        if (quanPrice.compareTo(priceLimit) <= 0)
            return true;
     
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/h5/AppH5CouponController.java
@@ -134,7 +134,7 @@
                }
            }
            BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
            BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief);
            if (couplePrice.compareTo(new BigDecimal("9.9")) == 1) {
                continue; // 券后价大于10
            }
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/CommonContentControllerV2.java
@@ -171,8 +171,8 @@
            GoodsDetailVO vo = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
            if (type == CommonContentTypeEnum.mianDan)// 免单商品
            {
                vo.getMoneyInfo().setFanliMoney("¥" + TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief));
                vo.getMoneyInfo().setShareMoney("¥" + TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief));
                vo.getMoneyInfo().setFanliMoney("¥" + TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief));
                vo.getMoneyInfo().setShareMoney("¥" + TaoBaoUtil.getCouponPrice(taoBaoGoodsBrief));
                vo.getMoneyInfo().setMaxMoney(null);
            }
            array.add(gson.toJson(vo));
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ShareControllerV2.java
@@ -251,7 +251,7 @@
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】[券后价]元", "");
        } else {
            commentText = commentText.replace("[券后价]", TaoBaoUtil.getAfterUseCouplePrice(goods) + "");
            commentText = commentText.replace("[券后价]", TaoBaoUtil.getCouponPrice(goods) + "");
        }
        commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
@@ -418,7 +418,7 @@
                        .replace("{商品原价}", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + "")
                        .replace("{优惠券面额}", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                        .replace("{淘礼金面额}", MoneyBigDecimalUtil.getWithNoZera(spreadMoney).toString())
                        .replace("{优惠券价}", TaoBaoUtil.getAfterUseCouplePrice(goods) + "");
                        .replace("{优惠券价}", TaoBaoUtil.getCouponPrice(goods) + "");
            }
            shareText = shareText.replace("{店铺类型}", shopType)
@@ -649,7 +649,7 @@
                    commentText = commentText.replace("【券后价】[券后价]元", "");
                } else {
                    commentText = commentText.replace("[券后价]",
                            TaoBaoUtil.getAfterUseCouplePrice(taoBaoLink.getGoods()) + "");
                            TaoBaoUtil.getCouponPrice(taoBaoLink.getGoods()) + "");
                }
                if (StringUtil.isNullOrEmpty(taoBaoLink.getGoods().getCouponInfo())) {
@@ -829,7 +829,7 @@
                recommendText = recommendText.replace("[券面额]",
                        BigDecimalUtil.getWithNoZera(couponInfo.getDiscount()).toString());
                commentText = commentText.replace("[券后价]",
                        BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(jdGoods)).toString());
                        BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(jdGoods)).toString());
            }
            commentText = commentText.replace("[链接]", jumpLink);
        } else {
@@ -1017,7 +1017,7 @@
                recommendText = recommendText.replace("优惠券:[券面额]元", "");
            } else {
                commentText = commentText.replace("[券后价]",
                        BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString());
                        BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
                BigDecimal hundred = new BigDecimal(100);
                BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred);
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/TaoLiJinControllerV2.java
@@ -800,7 +800,7 @@
                continue;
            // 计算券后价 1<= n <= 2
            BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(goods);
            if (couplePrice.compareTo(new BigDecimal(1.0)) < 0 && couplePrice.compareTo(new BigDecimal(2.0)) > 0)
                continue;
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
@@ -199,7 +199,7 @@
        }
        // 券后价
        BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
        BigDecimal afterCouponPrice = TaoBaoUtil.getCouponPrice(goods);
        TaoBaoLink link = new TaoBaoLink();
        link.setTaoToken(token);
@@ -363,7 +363,7 @@
        }
        // 券后价
        BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
        BigDecimal afterCouponPrice = TaoBaoUtil.getCouponPrice(goods);
        TaoBaoLink link = new TaoBaoLink();
        link.setTaoToken(token);
@@ -486,7 +486,7 @@
        data.put("priceType", priceType);
        data.put("coupon", hasCoupon);
        data.put("couponAmount", discount);
        data.put("couponPrice", JDUtil.getQuanPrice(jdGoods));
        data.put("couponPrice", JDUtil.getCouponPrice(jdGoods));
        data.put("helpLink", configService.getValue("jd_share_h5_help_link",acceptData.getSystem()));
        data.put("jumpLink", jumpLink);
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
@@ -566,7 +566,7 @@
        data.put("zkPrice", MoneyBigDecimalUtil.div(new BigDecimal(pddGoods.getMinGroupPrice()), hundred).setScale(2));
        data.put("coupon", hasCoupon);
        data.put("couponAmount", amount);
        data.put("couponPrice", PinDuoDuoUtil.getQuanPrice(pddGoods));
        data.put("couponPrice", PinDuoDuoUtil.getCouponPrice(pddGoods));
        data.put("helpLink", configService.getValue("pdd_share_h5_help_link",acceptData.getSystem()));
        data.put("jumpLink", jumpLink);
        JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
fanli/src/main/java/com/yeshi/fanli/controller/web/TLJBuyGoodsController.java
@@ -93,7 +93,7 @@
            if (goods != null && goods.getCouponAmount() != null
                    && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {
                if (TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate())
                if (TaoBaoUtil.getCouponPrice(goods).multiply(goods.getTkRate())
                        .compareTo(new BigDecimal("143")) >= 0) {
                    count++;
                    goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods();
fanli/src/main/java/com/yeshi/fanli/controller/web/TLJFreeBuyGoodsController.java
@@ -84,7 +84,7 @@
            if (goods != null && goods.getCouponAmount() != null
                    && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {
                // 券后价  1-2元
                BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
                BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(goods);
                if (couplePrice.compareTo(new BigDecimal(1.0)) >= 0 && couplePrice.compareTo(new BigDecimal(2.0)) <= 0) {
                    count++;
                    tljFreeBuyGoodsService.addGoods(new TLJFreeBuyGoods(day, goods));
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ShamUser.java
@@ -7,83 +7,89 @@
//假用户
@org.yeshi.utils.mybatis.Table("yeshi_ec_sham_user")
public class ShamUser {
    @Column(name = "`id`")
    private long id;
    @Column(name = "`id`")
    private long id;
    @Expose
    @Column(name = "`name`")
    private String name;
    @Expose
    @Column(name = "`name`")
    private String name;
    @Expose
    @Column(name = "`picUrl`")
    private String picUrl;
    @Expose
    @Column(name = "`picUrl`")
    private String picUrl;
    @Expose
    @Transient
    private String msg;
    @Expose
    @Transient
    private String msg;
    @Expose
    @Transient
    private String showId;
    @Expose
    @Transient
    private String showId;
    @Expose
    @Transient
    private String shareBonusPic;
    @Expose
    @Transient
    private String shareBonusPic;
    public ShamUser() {
    }
    public ShamUser() {
    }
    public ShamUser(long id) {
        super();
        this.id = id;
    }
    public ShamUser(long id) {
        super();
        this.id = id;
    }
    public long getId() {
        return id;
    }
    public ShamUser(String name, String picUrl) {
        super();
        this.name = name;
        this.picUrl = picUrl;
    }
    public void setId(long id) {
        this.id = id;
    }
    public long getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public void setId(long id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public String getPicUrl() {
        return picUrl;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }
    public String getPicUrl() {
        return picUrl;
    }
    public String getMsg() {
        return msg;
    }
    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getMsg() {
        return msg;
    }
    public String getShowId() {
        return showId;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public void setShowId(String showId) {
        this.showId = showId;
    }
    public String getShowId() {
        return showId;
    }
    public String getShareBonusPic() {
        return shareBonusPic;
    }
    public void setShowId(String showId) {
        this.showId = showId;
    }
    public void setShareBonusPic(String shareBonusPic) {
        this.shareBonusPic = shareBonusPic;
    }
    public String getShareBonusPic() {
        return shareBonusPic;
    }
    public void setShareBonusPic(String shareBonusPic) {
        this.shareBonusPic = shareBonusPic;
    }
}
fanli/src/main/java/com/yeshi/fanli/job/QualityFactoryJob.java
@@ -504,7 +504,7 @@
        if (startPrice == null && endPrice == null) {
            
        } else {
            BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(goodsBrief);
            BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(goodsBrief);
            if (startPrice != null && endPrice != null
                    && (couponPrice.compareTo(startPrice) < 0 || couponPrice.compareTo(endPrice) > 0)) {
                return false;
fanli/src/main/java/com/yeshi/fanli/job/TaoLiJinJob.java
@@ -97,9 +97,9 @@
                    && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {
                // 淘礼金的金额位于1-10块之间 必须是天猫
                if (TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate())
                if (TaoBaoUtil.getCouponPrice(goods).multiply(goods.getTkRate())
                        .compareTo(new BigDecimal("143")) >= 0
                        && TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate())
                        && TaoBaoUtil.getCouponPrice(goods).multiply(goods.getTkRate())
                                .compareTo(new BigDecimal("1430")) <= 0
                        && goods.getUserType() == 1) {
                    goods = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(goods).getGoods();
@@ -180,7 +180,7 @@
                int n = random.nextInt(list.size());
                TaoBaoGoodsBrief goods = list.get(n);
                if (goods.getCouponAmount() != null && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) {
                    BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
                    BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(goods);
                    if (couplePrice.compareTo(new BigDecimal(1.0)) >= 0 && couplePrice.compareTo(new BigDecimal(2.0)) <= 0) {
                        tljFreeBuyGoodsService.addGoods(new TLJFreeBuyGoods(day, goods));
                        count ++;
fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityGoodsUpdateServiceImpl.java
@@ -25,7 +25,7 @@
        List<RecommendActivityTaoBaoGoods> list = recommendActivityTaoBaoGoodsMapper
                .selectByAuctionId(goods.getAuctionId());
        BigDecimal d = TaoBaoUtil.getAfterUseCouplePrice(goods);
        BigDecimal d = TaoBaoUtil.getCouponPrice(goods);
        RecommendActivityTaoBaoGoods updateGoods = new RecommendActivityTaoBaoGoods();
        if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) {
fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java
@@ -861,7 +861,7 @@
        List<RecommendActivityTaoBaoGoods> list = recommendActivityTaoBaoGoodsMapper
                .selectByAuctionId(goods.getAuctionId());
        BigDecimal d = TaoBaoUtil.getAfterUseCouplePrice(goods);
        BigDecimal d = TaoBaoUtil.getCouponPrice(goods);
        RecommendActivityTaoBaoGoods updateGoods = new RecommendActivityTaoBaoGoods();
        if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) {
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/CommonTemplateContentServiceImpl.java
@@ -737,7 +737,7 @@
        for (int i = 0; i < goodsList.size(); i++) {
            TaoBaoGoodsBrief goods = goodsList.get(i);
            BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal price = TaoBaoUtil.getCouponPrice(goods);
            if (price.compareTo(new BigDecimal(10)) >= 0) {
                goodsList.remove(i--);
            }
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java
@@ -478,7 +478,7 @@
            commentText = commentText.replace("领券抢购", "抢购");
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}", TaoBaoUtil.getAfterUseCouplePrice(goods) + "");
            commentText = commentText.replace("{券后价}", TaoBaoUtil.getCouponPrice(goods) + "");
        }
        return deleteBlankLine(commentText);
    }
@@ -492,7 +492,7 @@
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(goods)).toString());
                    BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
@@ -507,7 +507,7 @@
            commentText = commentText.replace("【券后价】{券后价}元", "");
        } else {
            commentText = commentText.replace("{券后价}",
                    BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString());
                    BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
        }
        return deleteBlankLine(commentText);
    }
@@ -620,7 +620,7 @@
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{淘礼金面额}", BigDecimalUtil.getWithNoZera(spreadMoney).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getAfterUseCouplePrice(goods)).toString())
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
@@ -638,7 +638,7 @@
                    .replace("{淘口令}", token)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString())
                    .replace("{优惠券价}",
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getAfterUseCouplePrice(goods)).toString())
                            BigDecimalUtil.getWithNoZera(TaoBaoUtil.getCouponPrice(goods)).toString())
                    .replace("{店铺类型}", goods.getUserType() == 1 ? TaoBaoConstant.SHARE_PRICE_TM
                            : TaoBaoConstant.SHARE_PRICE_TAOBAO);
        }
@@ -663,7 +663,7 @@
                    .replace("{月销量}", JDUtil.getSaleCount(goods.getInOrderCount30Days())).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}",
                            BigDecimalUtil.getWithNoZera(JDUtil.getShowCouponInfo(goods).getDiscount()).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(goods)).toString());
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(goods)).toString());
        }
        if (pinGouInfo != null) {
@@ -694,7 +694,7 @@
                    .replace("{商品原价}", BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink)
                    .replace("{优惠券面额}", BigDecimalUtil.getWithNoZera(amount).toString())
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString());
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString());
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多,免费领券", "点击链接,打开拼多多,免费领券");
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TLJFreeBuyGoodsUpdateServiceImpl.java
@@ -45,7 +45,7 @@
            }
            
            // 计算券后价  1<= n <= 2
            BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(goods);
            if (couplePrice.compareTo(new BigDecimal(1.0)) < 0 || couplePrice.compareTo(new BigDecimal(2.0)) > 0) {
                for (TLJFreeBuyGoods tljGoods : list) {
                    tljFreeBuyGoodsDao.delete(tljGoods.getId());
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/TaoBaoGoodsActivityServiceImpl.java
@@ -31,7 +31,7 @@
                SuperTaoBaoGoods sg = new SuperTaoBaoGoods();
                sg.setAuctionId(goods.getAuctionId());
                sg.setGoods(goods);
                sg.setFinalPrice(TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(new BigDecimal(100)).intValue());
                sg.setFinalPrice(TaoBaoUtil.getCouponPrice(goods).multiply(new BigDecimal(100)).intValue());
                sg.setUpdateTime(System.currentTimeMillis());
                superTaoBaoGoodsDao.save(sg);
            }
fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinNewbiesServiceImpl.java
@@ -273,7 +273,7 @@
        }
        
        // 验证券后价 是否在 1-2元
        BigDecimal money = TaoBaoUtil.getAfterUseCouplePrice(goods);
        BigDecimal money = TaoBaoUtil.getCouponPrice(goods);
        if (money.compareTo(new BigDecimal(1.0)) < 0 || money.compareTo(new BigDecimal(2.0)) > 0) {
            executor.execute(new Runnable() {
                @Override
fanli/src/main/java/com/yeshi/fanli/service/impl/user/cloud/UserCloudServiceImpl.java
@@ -884,7 +884,7 @@
        String couponAmount = "";
        if (coupon) {
            description = goods.getDescription();
            quanPrice = TaoBaoUtil.getAfterUseCouplePrice(goods) + "";
            quanPrice = TaoBaoUtil.getCouponPrice(goods) + "";
            couponAmount = MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount()).toString();
        }
        String sales = TaoBaoUtil.getSaleCount(goods.getBiz30day());
@@ -941,7 +941,7 @@
        String quanPrice = "";
        String couponAmount = "";
        if (coupon) {
            quanPrice = BigDecimalUtil.getWithNoZera(JDUtil.getQuanPrice(jdGoods)).toString() + "";
            quanPrice = BigDecimalUtil.getWithNoZera(JDUtil.getCouponPrice(jdGoods)).toString() + "";
            couponAmount = BigDecimalUtil.getWithNoZera(couponInfo.getDiscount()).toString();
        }
@@ -1003,7 +1003,7 @@
            BigDecimal hundred = new BigDecimal(100);
            BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred);
            quanPrice = BigDecimalUtil.getWithNoZera(amount).toString();
            couponAmount = BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString();
            couponAmount = BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getCouponPrice(goods)).toString();
        }
        String sales = goods.getSalesTip();
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
@@ -1420,7 +1420,7 @@
            // 画第一张
            for (int i = 0; i < goodsList.size(); i++) {
                TaoBaoGoodsBrief goods = goodsList.get(i);
                BigDecimal couplePrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
                BigDecimal couplePrice = TaoBaoUtil.getCouponPrice(goods);
                // 第一张图需要有价格信息
                if (i == 0) {
                    int topX = 50;
@@ -1958,7 +1958,7 @@
        g2d.drawImage(picImage, 50, 207, null);
        // 画价格
        BigDecimal money = TaoBaoUtil.getAfterUseCouplePrice(goods);
        BigDecimal money = TaoBaoUtil.getCouponPrice(goods);
        money = MoneyBigDecimalUtil.getWithNoZera(money);
        g2d.setColor(new Color(240, 66, 66));
fanli/src/main/java/com/yeshi/fanli/util/activity/ActivityUtil.java
@@ -7,7 +7,7 @@
    public static String getGoodsShowPrice(TaoBaoGoodsBrief tb) {
        if (tb != null)
            return "券后价:¥" + TaoBaoUtil.getAfterUseCouplePrice(tb);
            return "券后价:¥" + TaoBaoUtil.getCouponPrice(tb);
        else
            return "";
    }
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
@@ -439,7 +439,7 @@
                    .setMaxMoney("¥" + buyCommission.add(MoneyBigDecimalUtil.mul(buyCommission, params.getMaxRewardRate())));
        else {// 只有有VIP后的版本才会显示返利比
            BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal price = TaoBaoUtil.getCouponPrice(goods);
            BigDecimal rate = MoneyBigDecimalUtil.div(buyCommission.multiply(new BigDecimal(100)), price);
            moneyInfoVO.setRateInfo("返利比 " + rate + "%");
@@ -630,7 +630,7 @@
            moneyInfoVO
                    .setMaxMoney("¥" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
        else {
            BigDecimal price = JDUtil.getQuanPrice(goods);
            BigDecimal price = JDUtil.getCouponPrice(goods);
            BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price);
            moneyInfoVO.setRateInfo("返利比 " + rate + "%");
@@ -655,7 +655,7 @@
        if (couponInfo != null) {
            BigDecimal discount = couponInfo.getDiscount();
            // 计算券后价
            goodsInfo.setCouponPrice(JDUtil.getQuanPrice(goods));
            goodsInfo.setCouponPrice(JDUtil.getCouponPrice(goods));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            CouponInfoVO coupon = new CouponInfoVO();
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOLijinFactory.java
New file
@@ -0,0 +1,633 @@
package com.yeshi.fanli.util.factory.goods;
import com.yeshi.common.vo.ClientTextStyleVO;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.dto.jd.JDPingouInfo;
import com.yeshi.fanli.dto.jd.JDShopInfo;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.dto.suning.SuningGoodsImg;
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.suning.SuningUtil;
import com.yeshi.fanli.util.taobao.TaoBaoCouponUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.vipshop.VipShopUtil;
import com.yeshi.fanli.vo.goods.CouponInfoVO;
import com.yeshi.fanli.vo.goods.MoneyInfoVO;
import com.yeshi.fanli.vo.goods.ShopInfoVO;
import com.yeshi.fanli.vo.goods.lijin.GoodsDetailVO;
import com.yeshi.fanli.vo.goods.lijin.GoodsDetailVO.GoodsInfoVO;
import com.yeshi.fanli.vo.goods.lijin.GoodsDetailVO.GoodsRightsVO;
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import org.yeshi.utils.MoneyBigDecimalUtil;
import org.yeshi.utils.TimeUtil;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * 商品加工
 *
 * @author Administrator
 */
public class GoodsDetailVOLijinFactory {
    public static GoodsInfoVO convertTaoBao(TaoBaoGoodsBrief goods, ConfigParamsDTO params) {
        GoodsInfoVO goodsInfo = new GoodsInfoVO();
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
        goodsInfo.setGoodsId(goods.getAuctionId() + "");
        goodsInfo.setTitle(goods.getTitle());
        goodsInfo.setSalesType(1); // 默认月销量
        String provcity = goods.getProvcity();
        if (!StringUtil.isNullOrEmpty(provcity)) {
            String[] arr = provcity.split("\\s+");
            goodsInfo.setAddress(arr[arr.length - 1]);
        }
        List<String> imgList = goods.getImgList();
        if (imgList != null) {
            goodsInfo.setImgList(imgList);
        } else {
            imgList = new ArrayList<String>();
            imgList.add(goods.getPictUrl());
            goodsInfo.setImgList(imgList);
        }
        Integer state = goods.getState();
        if (state == null) {
            goodsInfo.setState(0);
        } else {
            goodsInfo.setState(state);
        }
        goodsInfo.setSalesCount(TaoBaoUtil.getSaleCount(goods.getBiz30day()));
        Integer shopType = goods.getUserType();
        if (shopType != null && shopType == 1) {
            goodsInfo.setShopType(11); // 天猫
        } else {
            goodsInfo.setShopType(10); // 淘宝
        }
        goodsInfo.setZkPrice(getMoneyDesc(goods.getZkPrice()));
        //-----------资金信息--------------
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        //非返利商品库商品走分享比例
        boolean isSpecialGoods = TaoBaoUtil.isSpecialGoods(goods.getMaterialLibType());
        BigDecimal buyCommission = TaoBaoUtil.getGoodsHongBaoMoney(goods, params.getFanLiRate(), !isSpecialGoods);
        moneyInfoVO.setFanliMoney("¥" + buyCommission);
        moneyInfoVO.setFinalMoney(getMoneyDesc(TaoBaoUtil.getCouponPrice(goods).subtract(buyCommission)));
        goodsInfo.setMoneyInfo(moneyInfoVO);
//        moneyInfoVO.setShareMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, params.getShareRate(), true));
        // 券信息
        if (goods.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) {
            // 计算券后价
            List<CouponInfoVO> couponInfoVOList = new ArrayList<>();
            CouponInfoVO coupon = new CouponInfoVO();
            coupon.setAmount(goods.getCouponAmount());
            coupon.setLeftCount(goods.getCouponLeftCount());
            coupon.setTotalCount(goods.getCouponTotalCount());
            if (goods.getCouponEffectiveEndTime() != null) {
                coupon.setEndTime(goods.getCouponEffectiveEndTime().replace("-", "."));
            }
            if (goods.getCouponEffectiveStartTime() != null) {
                coupon.setStartTime(goods.getCouponEffectiveStartTime().replace("-", "."));
            }
            if (!StringUtil.isNullOrEmpty(goods.getCouponLink()))
                coupon.setLink(goods.getCouponLink());
            else
                coupon.setLink(
                        TaoBaoCouponUtil.getCoupleUrl(goods.getCouponActivityId(), null, goods.getAuctionId() + ""));
            coupon.setStartFee(goods.getCouponStartFee());
            coupon.setShopCoupon(goods.isShopCoupon());
            couponInfoVOList.add(coupon);
            goodsInfo.setCouponInfoList(couponInfoVOList);
        }
        // 店铺信息
        if (!StringUtil.isNullOrEmpty(goods.getShopTitle())) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(goods.getShopTitle());
            if (goods.getSellerId() != null)
                shop.setId(goods.getSellerId().toString());
            if (shopType != null && shopType == 1) {
                shop.setUserType(11);
            } else {
                shop.setUserType(10);
            }
            goodsInfo.setShopInfo(shop);
        }
        if (TaoBaoUtil.isYUShou(goods)) {// 预售商品
            goodsInfo = loadYuShouInfo(goodsInfo, goods, null, params.getFanLiRate(), params.getShareRate());
        }
        if (Constant.IS_TEST) {
            // 添加标签
            List<ClientTextStyleVO> labels = goodsInfo.getLabels();
            if (labels == null)
                labels = new ArrayList<>();
            labels.add(new ClientTextStyleVO("预售", "#FF2B4E"));
            labels.add(new ClientTextStyleVO("爆款", "#FF2B4E"));
            labels.add(new ClientTextStyleVO("超级划算", "#FF2B4E"));
            goodsInfo.setLabels(labels);
        }
        return fillFanliPrice(fillRights(goodsInfo), false);
    }
    private static GoodsInfoVO loadYuShouInfo(GoodsInfoVO goodsInfo, TaoBaoGoodsBrief goods, String pid,
                                              BigDecimal fanLiRate, BigDecimal shareRate) {
        if (goodsInfo != null && goods != null) {
            // 添加标签
            if (goodsInfo.getLabels() == null)
                goodsInfo.setLabels(new ArrayList<>());
            goodsInfo.getLabels().add(new ClientTextStyleVO("预售", "#FF2B4E"));
        }
        return goodsInfo;
    }
    private static CouponInfoVO convertJDCouponInfo(JDCouponInfo couponInfo) {
        CouponInfoVO coupon = new CouponInfoVO();
        coupon.setAmount(couponInfo.getDiscount());
        coupon.setLink(couponInfo.getLink());
        coupon.setStartFee(couponInfo.getQuota());
        if (couponInfo.getGetStartTime() != null) {
            coupon.setStartTime(TimeUtil.getGernalTime(couponInfo.getGetStartTime(), "yyyy.MM.dd"));
        }
        if (couponInfo.getGetEndTime() != null) {
            coupon.setEndTime(TimeUtil.getGernalTime(couponInfo.getGetEndTime(), "yyyy.MM.dd"));
        }
        return coupon;
    }
    private static List<CouponInfoVO> filterCouponInfo(List<CouponInfoVO> couponList) {
        if (couponList == null)
            return null;
        long currentTime = System.currentTimeMillis();
        Set<String> sets = new HashSet<>();
        // 过滤掉过期券
        for (int i = 0; i < couponList.size(); i++) {
            if (couponList.get(i).getStartTime() != null && couponList.get(i).getEndTime() != null) {
                long startTime = TimeUtil.convertToTimeTemp(couponList.get(i).getStartTime(), "yyyy.MM.dd");
                long endTime = TimeUtil.convertToTimeTemp(couponList.get(i).getEndTime(), "yyyy.MM.dd")
                        + 1000 * 60 * 60 * 24L;
                if (currentTime < startTime || currentTime >= endTime) {
                    couponList.remove(i--);
                    continue;
                }
            }
            // 过滤掉面值相同与起始金额相同的
            String key = couponList.get(i).getStartFee() + "-" + couponList.get(i).getAmount();
            if (!sets.contains(key))
                sets.add(key);
            else {
                couponList.remove(i--);
                continue;
            }
        }
        return couponList;
    }
    public static GoodsInfoVO convertJDGoods(JDGoods goods, ConfigParamsDTO params) {
        GoodsInfoVO goodsInfo = new GoodsInfoVO();
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_JD);
        goodsInfo.setGoodsId(goods.getSkuId() + "");
        goodsInfo.setTitle(goods.getSkuName());
        goodsInfo.setSalesType(1); // 默认月销量
        goodsInfo.setImgList(goods.getImageList());
        goodsInfo.setState(0);
        String salesCountMidea = null;
        Long count = goods.getInOrderCount30Days();
        if (count < 10000) {
            salesCountMidea = count + "";
        } else {
            double sales = count;
            salesCountMidea = String.format("%.1f", sales / 10000);
            salesCountMidea = salesCountMidea + "万";
        }
        goodsInfo.setSalesCount(salesCountMidea);
        BigDecimal zkPrice = null;
        JDPingouInfo pinGouInfo = goods.getPinGouInfo();
        if (pinGouInfo == null) {
            zkPrice = goods.getPrice();
        } else {
            zkPrice = pinGouInfo.getPingouPrice();
        }
        goodsInfo.setZkPrice(getMoneyDesc(zkPrice));
        // 资金信息
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        BigDecimal commission = JDUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
        moneyInfoVO.setFanliMoney("¥" + commission);
        moneyInfoVO.setFinalMoney(getMoneyDesc(JDUtil.getCouponPrice(goods).subtract(commission)));
//        moneyInfoVO.setShareMoney("¥" + JDUtil.getGoodsFanLiMoney(goods, params.getShareRate()));
        //获取当前商品的最优券
        JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(goods);
        if (couponInfo != null) {
            BigDecimal discount = couponInfo.getDiscount();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            CouponInfoVO coupon = new CouponInfoVO();
            coupon.setAmount(discount);
            coupon.setLink(couponInfo.getLink());
            coupon.setStartFee(couponInfo.getQuota());
            if (couponInfo.getGetStartTime() != null) {
                coupon.setStartTime(sdf.format(new Date(couponInfo.getGetStartTime())));
            }
            if (couponInfo.getGetEndTime() != null) {
                coupon.setEndTime(sdf.format(new Date(couponInfo.getGetEndTime())));
            }
            goodsInfo.setTempCoupon(coupon);
        }
        goodsInfo.setMoneyInfo(moneyInfoVO);
        if (goods.getCouponInfoList() != null && goods.getCouponInfoList().size() > 0) {
            List<CouponInfoVO> couponList = new ArrayList<>();
            for (JDCouponInfo jdCoupon : goods.getCouponInfoList()) {
                couponList.add(convertJDCouponInfo(jdCoupon));
            }
            goodsInfo.setCouponInfoList(filterCouponInfo(couponList));
        }
        List<ClientTextStyleVO> labels = goodsInfo.getLabels();
        // 京东自营标签
        String owner = goods.getOwner();
        if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
            goodsInfo.setShopType(21); // 京东自营
            if (labels == null) {
                labels = new ArrayList<ClientTextStyleVO>();
            }
            ClientTextStyleVO textStyleVO = new ClientTextStyleVO();
            textStyleVO.setContent("京东自营");
            textStyleVO.setColor("#E42219");
            labels.add(textStyleVO);
        } else {
            goodsInfo.setShopType(20); // 京东
        }
        if (pinGouInfo != null) {
            if (labels == null) {
                labels = new ArrayList<>();
            }
            ClientTextStyleVO textStyleVO = new ClientTextStyleVO();
            textStyleVO.setContent("拼购");
            textStyleVO.setColor("#E42219");
            labels.add(textStyleVO);
        }
        goodsInfo.setLabels(labels);
        // 店铺信息
        JDShopInfo shopInfo = goods.getShopInfo();
        if (shopInfo != null && !StringUtil.isNullOrEmpty(shopInfo.getShopName())) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(shopInfo.getShopName());
            shop.setId(shopInfo.getShopId().toString());
            if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
                shop.setUserType(20);
            } else {
                shop.setUserType(21);
            }
            goodsInfo.setShopInfo(shop);
        }
        return fillFanliPrice(fillRights(goodsInfo), false);
    }
    public static GoodsInfoVO convertPDDGoods(PDDGoodsDetail goods, ConfigParamsDTO params) {
        boolean bijia = false;
        GoodsInfoVO goodsInfo = new GoodsInfoVO();
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_PDD);
        goodsInfo.setGoodsId(goods.getGoodsId() + "");
        goodsInfo.setTitle(goods.getGoodsName());
        goodsInfo.setSalesType(4); // 总销量
        goodsInfo.setShopType(30); // 拼多多
        String[] goodsGalleryUrls = goods.getGoodsGalleryUrls();
        if (goodsGalleryUrls != null) {
            goodsInfo.setImgList(Arrays.asList(goodsGalleryUrls));
        }
        Integer state = goods.getState();
        if (state == null) {
            goodsInfo.setState(0);
        } else {
            goodsInfo.setState(goods.getState());
        }
        // 总销量
        String salesTip = goods.getSalesTip();
        if (StringUtil.isNullOrEmpty(salesTip)) {
            salesTip = "0";
        }
        goodsInfo.setSalesCount(salesTip);
        // 资金信息
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        BigDecimal commission = PinDuoDuoUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
        BigDecimal shareCommission = PinDuoDuoUtil.getGoodsShareMoney(goods, params.getFanLiRate());
        moneyInfoVO.setFanliMoney("¥" + commission);
        moneyInfoVO.setFinalMoney(getMoneyDesc(PinDuoDuoUtil.getCouponPrice(goods).subtract(commission)));
//        moneyInfoVO.setShareMoney("¥" + shareCommission);
        BigDecimal zkPrice = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2);
        goodsInfo.setZkPrice(getMoneyDesc(zkPrice));
        Boolean hasCoupon = goods.getHasCoupon();
        if (hasCoupon != null && hasCoupon) {
            BigDecimal hundred = new BigDecimal(100);
            BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred).setScale(2);
            BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred).setScale(2);
            BigDecimal startFree = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponMinOrderAmount()), hundred)
                    .setScale(2);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
            List<CouponInfoVO> couponInfoVOList = new ArrayList<>();
            CouponInfoVO coupon = new CouponInfoVO();
            coupon.setAmount(amount);
            coupon.setStartFee(startFree);
            if (goods.getCouponStartTime() != null) {
                coupon.setStartTime(sdf.format(new Date(goods.getCouponStartTime() * 1000)));
            }
            if (goods.getCouponEndTime() != null) {
                coupon.setEndTime(sdf.format(new Date(goods.getCouponEndTime() * 1000)));
            }
            if (goods.getCouponTotalQuantity() != null)
                coupon.setTotalCount(Integer.parseInt(goods.getCouponTotalQuantity().toString()));
            if (goods.getCouponRemainQuantity() != null)
                coupon.setLeftCount(Integer.parseInt(goods.getCouponRemainQuantity().toString()));
            goodsInfo.setTempCoupon(coupon);
            couponInfoVOList.add(coupon);
            goodsInfo.setCouponInfoList(couponInfoVOList);
        }
        if (goods.getPromotionRate() > 0 && (goods.getPredictPromotionRate() != null && goods.getPredictPromotionRate().compareTo(new BigDecimal(0)) == 0)) {
            //TODO 比价
            bijia = true;
        }
        goodsInfo.setMoneyInfo(moneyInfoVO);
        // 店铺信息
        String mallName = goods.getMallName();
        if (!StringUtil.isMobile(mallName)) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(mallName);
            if (goods.getMallId() != null) {
                shop.setId(goods.getMallId().toString());
            }
            shop.setUserType(30);
            goodsInfo.setShopInfo(shop);
        }
        return fillFanliPrice(fillRights(goodsInfo), bijia);
    }
    public static GoodsInfoVO convertVIPGoods(VIPGoodsInfo goods, ConfigParamsDTO params) {
        GoodsInfoVO goodsInfo = new GoodsInfoVO();
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_VIP);
        goodsInfo.setGoodsId(Long.parseLong(goods.getGoodsId()) + "");
        goodsInfo.setTitle(goods.getGoodsName());
        goodsInfo.setSalesType(5); // 无销量
        goodsInfo.setShopType(CommonGoods.SHOP_TYPE_VIP);
        goodsInfo.setImgList(goods.getGoodsDetailPictures());
        Integer state = goods.getStatus();
        if (state == null) {
            goodsInfo.setState(0);
        } else {
            goodsInfo.setState(goods.getStatus() == 1 ? CommonGoods.STATE_OFFLINE : CommonGoods.STATE_NORMAL);
        }
        goodsInfo.setSalesCount("");
        goodsInfo.setZkPrice(getMoneyDesc(new BigDecimal(goods.getVipPrice())));
        // 资金信息
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        BigDecimal commission = VipShopUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
        moneyInfoVO.setFanliMoney("¥" + commission);
//        moneyInfoVO.setShareMoney("¥" + commission);
        moneyInfoVO.setFinalMoney(getMoneyDesc(VipShopUtil.getCouponPrice(goods).subtract(commission)));
        goodsInfo.setMoneyInfo(moneyInfoVO);
        // 店铺信息
        String mallName = goods.getBrandName();
        if (!StringUtil.isNullOrEmpty(mallName)) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(mallName);
            if (goods.getBrandId() != null) {
                shop.setId(goods.getBrandId().toString());
            }
            shop.setUserType(30);
            goodsInfo.setShopInfo(shop);
        }
        // 折扣信息
//        goodsInfo.setDiscount(MoneyBigDecimalUtil
//                .getWithNoZera(MoneyBigDecimalUtil.mul(new BigDecimal(goods.getDiscount()), new BigDecimal(10))) + "折");
        goodsInfo.setShopInfo(null);
        return fillFanliPrice(fillRights(goodsInfo), false);
    }
    public static GoodsInfoVO convertSuningGoods(SuningGoodsInfo goods, ConfigParamsDTO params) {
        GoodsInfoVO goodsInfo = new GoodsInfoVO();
        goodsInfo.setGoodsType(Constant.SOURCE_TYPE_SUNING);
        goodsInfo.setGoodsId(SuningUtil.getConcatGoodsIId(goods.getCommodityInfo().getSupplierCode(),
                goods.getCommodityInfo().getCommodityCode()));
        goodsInfo.setTitle(goods.getCommodityInfo().getCommodityName());
        goodsInfo.setSalesType(1); // 月销
        String zkPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(zkPrice)) {
            zkPrice = goods.getCommodityInfo().getSnPrice();
        }
        goodsInfo.setZkPrice(getMoneyDesc(new BigDecimal(zkPrice)));
        goodsInfo.setShopType(CommonGoods.SHOP_TYPE_SUNING);
        List<String> imgList = new ArrayList<>();
        for (SuningGoodsImg img : goods.getCommodityInfo().getPictureUrl()) {
            imgList.add(img.getPicUrl());
        }
        goodsInfo.setImgList(imgList);
        goodsInfo.setState(0);
        String salesCountMidea = "";
        Integer count = Integer.parseInt(goods.getCommodityInfo().getMonthSales());
        if (count < 10000) {
            salesCountMidea = count + "";
        } else {
            double sales = count;
            salesCountMidea = String.format("%.1f", sales / 10000);
            salesCountMidea = salesCountMidea + "万";
        }
        goodsInfo.setSalesCount(salesCountMidea);
        // 券信息
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {// 有券
            List<CouponInfoVO> couponInfoVOList = new ArrayList<>();
            CouponInfoVO coupon = new CouponInfoVO();
            coupon.setAmount(new BigDecimal(goods.getCouponInfo().getCouponValue()));
            if (StringUtil.isNullOrEmpty(goods.getCouponInfo().getBounsLimit())) {
                coupon.setStartFee(new BigDecimal(goods.getCouponInfo().getCouponValue()));
            } else
                coupon.setStartFee(new BigDecimal(goods.getCouponInfo().getBounsLimit()));
            if (goods.getCouponInfo().getCouponStartTime() != null) {
                coupon.setStartTime(goods.getCouponInfo().getCouponStartTime());
            }
            if (goods.getCouponInfo().getCouponEndTime() != null) {
                coupon.setEndTime(goods.getCouponInfo().getCouponEndTime());
            }
            if (goods.getCouponInfo().getCouponCount() != null)
                coupon.setTotalCount(Integer.parseInt(goods.getCouponInfo().getCouponCount()));
            if (goods.getCouponInfo().getCouponCount() != null)
                coupon.setLeftCount(Integer.parseInt(goods.getCouponInfo().getCouponCount()));
            goodsInfo.setTempCoupon(coupon);
            couponInfoVOList.add(coupon);
            goodsInfo.setCouponInfoList(couponInfoVOList);
        }
        // 资金信息
        MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
        moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6
        BigDecimal commission = SuningUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
        moneyInfoVO.setFanliMoney("¥" + commission);
//        moneyInfoVO.setShareMoney("¥" + commission);
        moneyInfoVO.setFinalMoney(getMoneyDesc(SuningUtil.getCouponPrice(goods).subtract(commission)));
        goodsInfo.setMoneyInfo(moneyInfoVO);
        // 店铺信息
        String mallName = goods.getCommodityInfo().getSupplierName();
        if (!StringUtil.isMobile(mallName)) {
            ShopInfoVO shop = new ShopInfoVO();
            shop.setShopName(mallName);
            if (goods.getCommodityInfo().getSupplierCode() != null) {
                shop.setId(goods.getCommodityInfo().getSupplierCode());
            }
            shop.setUserType(30);
            goodsInfo.setShopInfo(shop);
        }
        return fillFanliPrice(fillRights(goodsInfo), false);
    }
    private static GoodsInfoVO fillRights(GoodsInfoVO goodsInfoVO) {
        if (goodsInfoVO.getCouponInfoList() != null) {
            List<GoodsRightsVO> rightsVOS = new ArrayList<>();
            for (CouponInfoVO couponInfoVO : goodsInfoVO.getCouponInfoList()) {
                String desc = "";
                if (couponInfoVO.getStartFee() == null || couponInfoVO.getStartFee().compareTo(new BigDecimal(0)) <= 0) {
                    desc = "无门槛领取";
                } else {
                    desc = String.format("满%s减%s", MoneyBigDecimalUtil.getWithNoZera(couponInfoVO.getStartFee()).toString(), MoneyBigDecimalUtil.getWithNoZera(couponInfoVO.getAmount()).toString());
                }
                rightsVOS.add(new GoodsRightsVO(1, "¥" + MoneyBigDecimalUtil.getWithNoZera(couponInfoVO.getAmount()).toString(), desc));
            }
            goodsInfoVO.setRights(rightsVOS);
        }
        return goodsInfoVO;
    }
    private static GoodsInfoVO fillFanliPrice(GoodsInfoVO goodsInfoVO, boolean bijia) {
        List<GoodsDetailVO.GoodsHongBaoListVO> priceList = new ArrayList<>();
        GoodsDetailVO.GoodsHongBaoListVO price = new GoodsDetailVO.GoodsHongBaoListVO();
        price.setType(4);
        String desc = "";
        switch (goodsInfoVO.getGoodsType()) {
            case Constant.SOURCE_TYPE_JD:
                desc = "注:京东puls会员返利以实际反馈数据为准。";
                break;
            case Constant.SOURCE_TYPE_TAOBAO:
                if (bijia) {
                    desc = "注:本次为比价返利,1个小时后购买可提高100%";
                }
                break;
            case Constant.SOURCE_TYPE_PDD:
                if (bijia) {
                    desc = "注:本次为比价返利,1个小时后购买可提高100%";
                }
                break;
        }
        price.setDesc(desc);
        price.setSubMoney(goodsInfoVO.getMoneyInfo().getFanliMoney());
        price.setSubMoneyDesc("(等待返利)");
        price.setFinalMoney(goodsInfoVO.getMoneyInfo().getFinalMoney());
        List<GoodsDetailVO.GoodsHongBaoListVO.PriceInfo> priceInfos = new ArrayList<>();
        priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("原价", goodsInfoVO.getZkPrice()));
        if (goodsInfoVO.getTempCoupon() != null) {
            priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("优惠券", "-¥" + MoneyBigDecimalUtil.getWithNoZera(goodsInfoVO.getTempCoupon().getAmount()).toString()));
        }
        priceInfos.add(new GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("返利", "-" + goodsInfoVO.getMoneyInfo().getFanliMoney()));
        price.setPriceDetails(priceInfos);
        priceList.add(price);
        goodsInfoVO.setPriceList(priceList);
        return goodsInfoVO;
    }
    private static String getMoneyDesc(BigDecimal money) {
        return "¥" + MoneyBigDecimalUtil.getWithNoZera(money);
    }
}
fanli/src/main/java/com/yeshi/fanli/util/jd/JDUtil.java
@@ -453,7 +453,7 @@
     * @param goodsBrief
     * @return
     */
    public static BigDecimal getQuanPrice(JDGoods jdGoods) {
    public static BigDecimal getCouponPrice(JDGoods jdGoods) {
        BigDecimal price = null;
        JDPingouInfo pinGouInfo = jdGoods.getPinGouInfo();
        if (pinGouInfo == null) {
fanli/src/main/java/com/yeshi/fanli/util/pinduoduo/PinDuoDuoUtil.java
@@ -99,13 +99,15 @@
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    /**
     * 计算商品券后价,没有券则返回原价
     *
     * @param goodsBrief
     * @return
     */
    public static BigDecimal getQuanPrice(PDDGoodsDetail goods) {
    public static BigDecimal getCouponPrice(PDDGoodsDetail goods) {
        BigDecimal hundred = new BigDecimal(100);
        BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred);
        Boolean hasCoupon = goods.getHasCoupon();
fanli/src/main/java/com/yeshi/fanli/util/suning/SuningUtil.java
@@ -10,101 +10,113 @@
import com.yeshi.fanli.util.StringUtil;
public class SuningUtil {
    public static BigDecimal getGoodsFanLiMoney(SuningGoodsInfo goods, BigDecimal rate) {
    public static BigDecimal getGoodsFanLiMoney(SuningGoodsInfo goods, BigDecimal rate) {
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        BigDecimal afterUseCouponPrice = getCouponPrice(goods);
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        BigDecimal commission = MoneyBigDecimalUtil.mul(afterUseCouponPrice, MoneyBigDecimalUtil.div(new BigDecimal(goods.getCommodityInfo().getRate()), new BigDecimal(100), 5));
        BigDecimal afterUseCouponPrice = new BigDecimal(commodityPrice);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {
            // 有券
            BigDecimal startPrice = null;
            if (StringUtil.isNullOrEmpty(goods.getCouponInfo().getBounsLimit())) {
                startPrice = new BigDecimal(goods.getCouponInfo().getCouponValue());
            } else
                startPrice = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            if (afterUseCouponPrice.compareTo(startPrice) >= 0) {
                afterUseCouponPrice = afterUseCouponPrice.subtract(new BigDecimal(goods.getCouponInfo().getCouponValue()));
            }
        }
        BigDecimal commission=MoneyBigDecimalUtil.mul(afterUseCouponPrice,MoneyBigDecimalUtil.div(new BigDecimal(goods.getCommodityInfo().getRate()), new BigDecimal(100),5));
        BigDecimal money = MoneyBigDecimalUtil.mul(commission,
                rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
        BigDecimal money = MoneyBigDecimalUtil.mul(commission,
                rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    /**
     * 获取券后价
     *
     * @param goods
     * @return
     */
    /**
     * 获取拼接的商品ID
     * @Title: getConcatGoodsIId
     * @Description:
     * @param supplierCode
     * @param goodsId
     * @return
     * String 返回类型
     * @throws
     */
    public static String getConcatGoodsIId(String supplierCode, String goodsId) {
    public static BigDecimal getCouponPrice(SuningGoodsInfo goods) {
        String commodityPrice = goods.getCommodityInfo().getCommodityPrice();
        if (StringUtil.isNullOrEmpty(commodityPrice)) {
            commodityPrice = goods.getCommodityInfo().getSnPrice();
        }
        return supplierCode + "-" + goodsId;
    }
        BigDecimal afterUseCouponPrice = new BigDecimal(commodityPrice);
        if (goods.getCouponInfo() != null && !StringUtil.isNullOrEmpty(goods.getCouponInfo().getCouponUrl())) {
            // 有券
            BigDecimal startPrice = null;
            if (StringUtil.isNullOrEmpty(goods.getCouponInfo().getBounsLimit())) {
                startPrice = new BigDecimal(goods.getCouponInfo().getCouponValue());
            } else
                startPrice = new BigDecimal(goods.getCouponInfo().getBounsLimit());
            if (afterUseCouponPrice.compareTo(startPrice) >= 0) {
                afterUseCouponPrice = afterUseCouponPrice.subtract(new BigDecimal(goods.getCouponInfo().getCouponValue()));
            }
        }
        return afterUseCouponPrice;
    }
    public static String getFullSupplierCode(String supplierCode) {
        for (int i = 0; i < 10; i++) {
            if (supplierCode.length() < 10)
                supplierCode = "0" + supplierCode;
        }
    /**
     * 获取拼接的商品ID
     *
     * @param supplierCode
     * @param goodsId
     * @return String 返回类型
     * @throws
     * @Title: getConcatGoodsIId
     * @Description:
     */
    public static String getConcatGoodsIId(String supplierCode, String goodsId) {
        return supplierCode;
    }
        return supplierCode + "-" + goodsId;
    }
    /**
     * 通过拼接的商品ID解析出来正确的商品ID
     * @Title: getGoodsIdDetail
     * @Description:
     * @param concatGoodsId
     * @return
     * String[] 返回类型
     * @throws
     */
    public static String[] getGoodsIdDetail(String concatGoodsId) {
        String[] sts = concatGoodsId.split("-");
        String supplierCode = sts[0];
        for (int i = 0; i < 10; i++) {
            if (supplierCode.length() < 10)
                supplierCode = "0" + supplierCode;
        }
        return new String[] { supplierCode, sts[1] };
    }
    public static String getFullSupplierCode(String supplierCode) {
        for (int i = 0; i < 10; i++) {
            if (supplierCode.length() < 10)
                supplierCode = "0" + supplierCode;
        }
    public static String getProductUrl(String supplierCode, String goodsId) {
        return supplierCode;
    }
        return String.format("https://product.suning.com/%s/%s.html", supplierCode, goodsId);
    }
    /**
     * 通过拼接的商品ID解析出来正确的商品ID
     *
     * @param concatGoodsId
     * @return String[] 返回类型
     * @throws
     * @Title: getGoodsIdDetail
     * @Description:
     */
    public static String[] getGoodsIdDetail(String concatGoodsId) {
        String[] sts = concatGoodsId.split("-");
        String supplierCode = sts[0];
        for (int i = 0; i < 10; i++) {
            if (supplierCode.length() < 10)
                supplierCode = "0" + supplierCode;
        }
        return new String[]{supplierCode, sts[1]};
    }
    public static String parseGoodsIdByUrl(String url) {
        try {
            if (url.contains(".suning.com/")
                    && (url.contains(".suning.com/product/") || url.contains("product.suning.com/"))) {
                String preUrl = url.split("\\?")[0];
                String[] sts = preUrl.split("/");
                if (sts.length > 2) {
                    String goodsId = sts[sts.length - 1].replace(".html", "").replace(".htm", "");
                    String supplierCode = sts[sts.length - 2];
                    if (NumberUtil.isNumeric(goodsId) && NumberUtil.isNumeric(supplierCode)) {
                        return supplierCode + "-" + goodsId;
                    }
                }
            }
        } catch (Exception e) {
        }
        return null;
    }
    public static String getProductUrl(String supplierCode, String goodsId) {
        return String.format("https://product.suning.com/%s/%s.html", supplierCode, goodsId);
    }
    public static String parseGoodsIdByUrl(String url) {
        try {
            if (url.contains(".suning.com/")
                    && (url.contains(".suning.com/product/") || url.contains("product.suning.com/"))) {
                String preUrl = url.split("\\?")[0];
                String[] sts = preUrl.split("/");
                if (sts.length > 2) {
                    String goodsId = sts[sts.length - 1].replace(".html", "").replace(".htm", "");
                    String supplierCode = sts[sts.length - 2];
                    if (NumberUtil.isNumeric(goodsId) && NumberUtil.isNumeric(supplierCode)) {
                        return supplierCode + "-" + goodsId;
                    }
                }
            }
        } catch (Exception e) {
        }
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java
@@ -653,7 +653,7 @@
    public static DaTaoKeDetailV2 filterDaTaoKe(TaoBaoGoodsBrief goods, DaTaoKeDetailV2 detail) {
        if (goods != null) {
            BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal price = TaoBaoUtil.getCouponPrice(goods);
            detail.setOriginalPrice(goods.getZkPrice());
            detail.setActualPrice(price);
            if (goods.getCouponStartFee() != null)
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoBaoUtil.java
@@ -1499,7 +1499,7 @@
     * @param goodsBrief
     * @return
     */
    public static BigDecimal getAfterUseCouplePrice(TaoBaoGoodsBrief goodsBrief) {
    public static BigDecimal getCouponPrice(TaoBaoGoodsBrief goodsBrief) {
        if (StringUtil.isNullOrEmpty(goodsBrief.getCouponInfo()) || "无".equals(goodsBrief.getCouponInfo())) {
            return goodsBrief.getZkPrice();
@@ -2013,7 +2013,7 @@
            return false;
        // 券后价不能大于150
        if (getAfterUseCouplePrice(goods).compareTo(new BigDecimal(150)) > 0)
        if (getCouponPrice(goods).compareTo(new BigDecimal(150)) > 0)
            return false;
        return true;
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -911,6 +911,11 @@
            map.put("relation_id", relationId);
        }
        if (app != null && app.getPid() != null) {
            map.put("adzone_id", app.getPid().split("_")[3]);
        }
        String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, app);
        JSONObject data = JSONObject.fromObject(resultStr);
        if (data.optJSONObject("tbk_dg_material_optional_response") != null
fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeScApiUtil.java
@@ -694,7 +694,7 @@
            e.printStackTrace();
        }
        System.out.println(data);
        System.out.println(data.toString());
        if (data.optJSONObject("tbk_dg_material_optional_response") != null
                && data.optJSONObject("tbk_dg_material_optional_response").optJSONObject("result_list") != null) {
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java
@@ -11,93 +11,97 @@
public class VipShopUtil {
    private static String getBase64Str(String str) {
        try {
            return StringUtil.getBase64String(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
    private static String getBase64Str(String str) {
        try {
            return StringUtil.getBase64String(str);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
        return null;
    }
    /**
     * 获取分享的渠道标识
     * @Title: getShareChanTag
     * @Description:
     * @param uid
     * @return
     * String 返回类型
     * @throws
     */
    public static String getShareChanTag(Long uid) {
        return getBase64Str("share#" + uid);
    }
    /**
     * 获取分享的渠道标识
     *
     * @param uid
     * @return String 返回类型
     * @throws
     * @Title: getShareChanTag
     * @Description:
     */
    public static String getShareChanTag(Long uid) {
        return getBase64Str("share#" + uid);
    }
    /**
     * 获取自购的渠道标识
     * @Title: getBuyChanTag
     * @Description:
     * @param uid
     * @return
     * String 返回类型
     * @throws
     */
    public static String getBuyChanTag(Long uid) {
        return getBase64Str("buy#" + uid);
    /**
     * 获取自购的渠道标识
     *
     * @param uid
     * @return String 返回类型
     * @throws
     * @Title: getBuyChanTag
     * @Description:
     */
    public static String getBuyChanTag(Long uid) {
        return getBase64Str("buy#" + uid);
    }
    }
    public static String getCouponChanTag() {
        return getBase64Str("coupon");
    public static String getCouponChanTag() {
        return getBase64Str("coupon");
    }
    }
    public static String getUidFromChanTag(String tag) {
        String decodeTag = StringUtil.getFromBase64(tag);
        return decodeTag.split("#")[1];
    }
    public static String getUidFromChanTag(String tag) {
        String decodeTag = StringUtil.getFromBase64(tag);
        return decodeTag.split("#")[1];
    }
    public static String getTypeFromChanTag(String tag) {
        String decodeTag = StringUtil.getFromBase64(tag);
        return decodeTag.split("#")[0];
    }
    public static String getTypeFromChanTag(String tag) {
        String decodeTag = StringUtil.getFromBase64(tag);
        return decodeTag.split("#")[0];
    }
    public static BigDecimal getGoodsFanLiMoney(VIPGoodsInfo goods, BigDecimal rate) {
        BigDecimal money = null;
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        money = MoneyBigDecimalUtil.mul(new BigDecimal(goods.getCommission()), rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    public static BigDecimal getGoodsFanLiMoney(VIPGoodsInfo goods, BigDecimal rate) {
        BigDecimal money = null;
        BigDecimal hundred = new BigDecimal(100);
        rate = MoneyBigDecimalUtil.div(rate, hundred);
        money = MoneyBigDecimalUtil.mul(new BigDecimal(goods.getCommission()), rate);
        return BigDecimalUtil.getWithNoZera(money).setScale(2);
    }
    /**
     * 获取订单详情的唯一标识
     * @Title: getOrderDetailIdentifyCode
     * @Description:
     * @param orderSn
     * @param goodsId
     * @param sizeId
     * @return
     * String 返回类型
     * @throws
     */
    public static String getOrderDetailIdentifyCode(String orderSn, String goodsId, String sizeId) {
    public static BigDecimal getCouponPrice(VIPGoodsInfo goods) {
        return new BigDecimal(goods.getVipPrice());
    }
        return StringUtil.Md5(orderSn + "#" + goodsId + "#" + sizeId);
    }
    /**
     * 获取订单详情的唯一标识
     *
     * @param orderSn
     * @param goodsId
     * @param sizeId
     * @return String 返回类型
     * @throws
     * @Title: getOrderDetailIdentifyCode
     * @Description:
     */
    public static String getOrderDetailIdentifyCode(String orderSn, String goodsId, String sizeId) {
    public static String parseGoodsIdByUrl(String url) {
        try {
            if (url.contains(".vip.com/") && (url.contains("detail-") || url.contains("product-"))) {
                String preUrl = url.split("\\?")[0];
                String goodsId = preUrl.split("-")[preUrl.split("-").length - 1].replace(".html", "").replace(".htm",
                        "");
                if (NumberUtil.isNumeric(goodsId))
                    return goodsId;
            }
        } catch (Exception e) {
        }
        return null;
    }
        return StringUtil.Md5(orderSn + "#" + goodsId + "#" + sizeId);
    }
    public static String parseGoodsIdByUrl(String url) {
        try {
            if (url.contains(".vip.com/") && (url.contains("detail-") || url.contains("product-"))) {
                String preUrl = url.split("\\?")[0];
                String goodsId = preUrl.split("-")[preUrl.split("-").length - 1].replace(".html", "").replace(".htm",
                        "");
                if (NumberUtil.isNumeric(goodsId))
                    return goodsId;
            }
        } catch (Exception e) {
        }
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/vo/goods/CouponInfoVO.java
@@ -4,108 +4,110 @@
import java.math.BigDecimal;
import com.google.gson.annotations.Expose;
import org.yeshi.utils.MoneyBigDecimalUtil;
/**
 * 券信息
 *
 * @author Administrator
 *
 * @author Administrator
 */
public class CouponInfoVO implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Expose
    private int totalCount;// 总数量
    @Expose
    private int leftCount;// 剩余数量
    @Expose
    private BigDecimal amount;// 券面额
    @Expose
    private BigDecimal startFee;// 使用开始金额
    @Expose
    private String startTime;// 开始时间
    @Expose
    private String endTime;// 结束时间
    @Expose
    private String link;// 券链接
    @Expose
    private String token; // 券口令
    @Expose
    private boolean shopCoupon;// 是否为店铺券
    @Expose
    private int totalCount;// 总数量
    @Expose
    private int leftCount;// 剩余数量
    @Expose
    private BigDecimal amount;// 券面额
    @Expose
    private BigDecimal startFee;// 使用开始金额
    @Expose
    private String startTime;// 开始时间
    @Expose
    private String endTime;// 结束时间
    @Expose
    private String link;// 券链接
    @Expose
    private String token; // 券口令
    @Expose
    private boolean shopCoupon;// 是否为店铺券
    public boolean isShopCoupon() {
        return shopCoupon;
    }
    public void setShopCoupon(boolean shopCoupon) {
        this.shopCoupon = shopCoupon;
    }
    public int getTotalCount() {
        return totalCount;
    }
    public boolean isShopCoupon() {
        return shopCoupon;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public void setShopCoupon(boolean shopCoupon) {
        this.shopCoupon = shopCoupon;
    }
    public int getLeftCount() {
        return leftCount;
    }
    public int getTotalCount() {
        return totalCount;
    }
    public void setLeftCount(int leftCount) {
        this.leftCount = leftCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public int getLeftCount() {
        return leftCount;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
    public void setLeftCount(int leftCount) {
        this.leftCount = leftCount;
    }
    public BigDecimal getStartFee() {
        return startFee;
    }
    public BigDecimal getAmount() {
        return amount;
    }
    public void setStartFee(BigDecimal startFee) {
        this.startFee = startFee;
    }
    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }
    public String getStartTime() {
        return startTime;
    }
    public BigDecimal getStartFee() {
        return startFee;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public void setStartFee(BigDecimal startFee) {
        this.startFee = startFee;
    }
    public String getEndTime() {
        return endTime;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getLink() {
        return link;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setLink(String link) {
        this.link = link;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getToken() {
        return token;
    }
    public String getLink() {
        return link;
    }
    public void setToken(String token) {
        this.token = token;
    }
    public void setLink(String link) {
        this.link = link;
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
}
fanli/src/main/java/com/yeshi/fanli/vo/goods/MoneyInfoVO.java
@@ -5,99 +5,121 @@
import com.google.gson.annotations.Expose;
public class MoneyInfoVO implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Expose
    private String fanliMoney;// 返利金额
    @Expose
    private int moneyType;// 资金类型
    @Expose
    private String shareMoney;// 分享奖金
    @Expose
    private String maxMoney;// 最高返回
    @Expose
    private String rateInfo;// 比例信息
    @Expose
    private String rateInfoHelpUrl;// 比例帮助链接
    @Expose
    private String compositionInfo;// 构成信息
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Expose
    private String fanliMoney;// 返利金额
    @Expose
    private int moneyType;// 资金类型
    @Expose
    private String shareMoney;// 分享奖金
    @Expose
    private String maxMoney;// 最高返回
    @Expose
    private String rateInfo;// 比例信息
    @Expose
    private String rateInfoHelpUrl;// 比例帮助链接
    @Expose
    private String compositionInfo;// 构成信息
    @Expose
    private String hongBaoMoney;
    private String maxRateInfo;// 最大比例信息
    private String maxCompositionInfo;//最大构成信息
    private String finalMoney;//最终价格
    public String getMaxCompositionInfo() {
        return maxCompositionInfo;
    }
    public void setMaxCompositionInfo(String maxCompositionInfo) {
        this.maxCompositionInfo = maxCompositionInfo;
    }
    private String maxRateInfo;// 最大比例信息
    public String getCompositionInfo() {
        return compositionInfo;
    }
    private String maxCompositionInfo;//最大构成信息
    public void setCompositionInfo(String compositionInfo) {
        this.compositionInfo = compositionInfo;
    }
    public String getMaxRateInfo() {
        return maxRateInfo;
    }
    public String getFinalMoney() {
        return finalMoney;
    }
    public void setMaxRateInfo(String maxRateInfo) {
        this.maxRateInfo = maxRateInfo;
    }
    public void setFinalMoney(String finalMoney) {
        this.finalMoney = finalMoney;
    }
    public String getRateInfo() {
        return rateInfo;
    }
    public String getMaxCompositionInfo() {
        return maxCompositionInfo;
    }
    public void setRateInfo(String rateInfo) {
        this.rateInfo = rateInfo;
    }
    public void setMaxCompositionInfo(String maxCompositionInfo) {
        this.maxCompositionInfo = maxCompositionInfo;
    }
    public String getRateInfoHelpUrl() {
        return rateInfoHelpUrl;
    }
    public String getCompositionInfo() {
        return compositionInfo;
    }
    public void setRateInfoHelpUrl(String rateInfoHelpUrl) {
        this.rateInfoHelpUrl = rateInfoHelpUrl;
    }
    public void setCompositionInfo(String compositionInfo) {
        this.compositionInfo = compositionInfo;
    }
    public String getFanliMoney() {
        return fanliMoney;
    }
    public String getMaxRateInfo() {
        return maxRateInfo;
    }
    public void setFanliMoney(String fanliMoney) {
        this.fanliMoney = fanliMoney;
    }
    public void setMaxRateInfo(String maxRateInfo) {
        this.maxRateInfo = maxRateInfo;
    }
    public int getMoneyType() {
        return moneyType;
    }
    public String getRateInfo() {
        return rateInfo;
    }
    public void setMoneyType(int moneyType) {
        this.moneyType = moneyType;
    }
    public void setRateInfo(String rateInfo) {
        this.rateInfo = rateInfo;
    }
    public String getShareMoney() {
        return shareMoney;
    }
    public String getRateInfoHelpUrl() {
        return rateInfoHelpUrl;
    }
    public void setShareMoney(String shareMoney) {
        this.shareMoney = shareMoney;
    }
    public void setRateInfoHelpUrl(String rateInfoHelpUrl) {
        this.rateInfoHelpUrl = rateInfoHelpUrl;
    }
    public String getMaxMoney() {
        return maxMoney;
    }
    public String getFanliMoney() {
        return fanliMoney;
    }
    public void setMaxMoney(String maxMoney) {
        this.maxMoney = maxMoney;
    }
    public void setFanliMoney(String fanliMoney) {
        this.fanliMoney = fanliMoney;
    }
    public int getMoneyType() {
        return moneyType;
    }
    public void setMoneyType(int moneyType) {
        this.moneyType = moneyType;
    }
    public String getShareMoney() {
        return shareMoney;
    }
    public void setShareMoney(String shareMoney) {
        this.shareMoney = shareMoney;
    }
    public String getMaxMoney() {
        return maxMoney;
    }
    public void setMaxMoney(String maxMoney) {
        this.maxMoney = maxMoney;
    }
    public String getHongBaoMoney() {
        return hongBaoMoney;
    }
    public void setHongBaoMoney(String hongBaoMoney) {
        this.hongBaoMoney = hongBaoMoney;
    }
}
fanli/src/main/java/com/yeshi/fanli/vo/goods/lijin/GoodsDetailVO.java
New file
@@ -0,0 +1,413 @@
package com.yeshi.fanli.vo.goods.lijin;
import com.yeshi.common.vo.ClientTextStyleVO;
import com.yeshi.fanli.entity.bus.user.ShamUser;
import com.yeshi.fanli.vo.goods.CouponInfoVO;
import com.yeshi.fanli.vo.goods.MoneyInfoVO;
import com.yeshi.fanli.vo.goods.ShopInfoVO;
import java.util.List;
public class GoodsDetailVO {
    private GoodsInfoVO goods;
    private GoodsExtraVO extra;
    public GoodsInfoVO getGoods() {
        return goods;
    }
    public void setGoods(GoodsInfoVO goods) {
        this.goods = goods;
    }
    public GoodsExtraVO getExtra() {
        return extra;
    }
    public void setExtra(GoodsExtraVO extra) {
        this.extra = extra;
    }
    public static class GoodsInfoVO {
        private String goodsId;
        private String title;// 标题
        private List<String> imgList;
        private int state; // 0-正常 1-商品下架
        private List<CouponInfoVO> couponInfoList;// 所有券信息
        //临时券信息
        private CouponInfoVO tempCoupon;
        private int goodsType;// 商品类型 1-淘宝 2-京东 3-拼多多
        private int shopType;// 店铺类型: 1-淘宝 2-天猫 3-京东 4-拼多多
        private List<ClientTextStyleVO> labels;// 标签
        private int salesType;
        private String salesCount;
        private String address;
        private ShopInfoVO shopInfo;
        private List<GoodsRightsVO> rights;
        private MoneyInfoVO moneyInfo;
        private List<GoodsHongBaoListVO> priceList;
        private String zkPrice;
        public String getZkPrice() {
            return zkPrice;
        }
        public void setZkPrice(String zkPrice) {
            this.zkPrice = zkPrice;
        }
        public List<GoodsHongBaoListVO> getPriceList() {
            return priceList;
        }
        public void setPriceList(List<GoodsHongBaoListVO> priceList) {
            this.priceList = priceList;
        }
        public CouponInfoVO getTempCoupon() {
            return tempCoupon;
        }
        public void setTempCoupon(CouponInfoVO tempCoupon) {
            this.tempCoupon = tempCoupon;
        }
        public MoneyInfoVO getMoneyInfo() {
            return moneyInfo;
        }
        public void setMoneyInfo(MoneyInfoVO moneyInfo) {
            this.moneyInfo = moneyInfo;
        }
        public String getGoodsId() {
            return goodsId;
        }
        public void setGoodsId(String goodsId) {
            this.goodsId = goodsId;
        }
        public String getSalesCount() {
            return salesCount;
        }
        public void setSalesCount(String salesCount) {
            this.salesCount = salesCount;
        }
        public String getTitle() {
            return title;
        }
        public void setTitle(String title) {
            this.title = title;
        }
        public List<String> getImgList() {
            return imgList;
        }
        public void setImgList(List<String> imgList) {
            this.imgList = imgList;
        }
        public int getState() {
            return state;
        }
        public void setState(int state) {
            this.state = state;
        }
        public List<CouponInfoVO> getCouponInfoList() {
            return couponInfoList;
        }
        public void setCouponInfoList(List<CouponInfoVO> couponInfoList) {
            this.couponInfoList = couponInfoList;
        }
        public int getGoodsType() {
            return goodsType;
        }
        public void setGoodsType(int goodsType) {
            this.goodsType = goodsType;
        }
        public int getShopType() {
            return shopType;
        }
        public void setShopType(int shopType) {
            this.shopType = shopType;
        }
        public List<ClientTextStyleVO> getLabels() {
            return labels;
        }
        public void setLabels(List<ClientTextStyleVO> labels) {
            this.labels = labels;
        }
        public int getSalesType() {
            return salesType;
        }
        public void setSalesType(int salesType) {
            this.salesType = salesType;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        public ShopInfoVO getShopInfo() {
            return shopInfo;
        }
        public void setShopInfo(ShopInfoVO shopInfo) {
            this.shopInfo = shopInfo;
        }
        public List<GoodsRightsVO> getRights() {
            return rights;
        }
        public void setRights(List<GoodsRightsVO> rights) {
            this.rights = rights;
        }
    }
    public static class GoodsExtraVO {
        private boolean fanliValid;
        private boolean buyValid;
        private String detailUrl;
        private List<ShamUser> listCouponUser;
        private boolean collected;
        public boolean isCollected() {
            return collected;
        }
        public void setCollected(boolean collected) {
            this.collected = collected;
        }
        public boolean isFanliValid() {
            return fanliValid;
        }
        public void setFanliValid(boolean fanliValid) {
            this.fanliValid = fanliValid;
        }
        public boolean isBuyValid() {
            return buyValid;
        }
        public void setBuyValid(boolean buyValid) {
            this.buyValid = buyValid;
        }
        public String getDetailUrl() {
            return detailUrl;
        }
        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }
        public List<ShamUser> getListCouponUser() {
            return listCouponUser;
        }
        public void setListCouponUser(List<ShamUser> listCouponUser) {
            this.listCouponUser = listCouponUser;
        }
    }
    public static class GoodsRightsVO {
        //1-券  2-红包  3-首单礼金 4-返利
        private int type;
        private String money;
        private String desc;
        private String descLink;
        public GoodsRightsVO(int type, String money, String desc) {
            this.type = type;
            this.money = money;
            this.desc = desc;
        }
        public int getType() {
            return type;
        }
        public void setType(int type) {
            this.type = type;
        }
        public String getMoney() {
            return money;
        }
        public void setMoney(String money) {
            this.money = money;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
        public String getDescLink() {
            return descLink;
        }
        public void setDescLink(String descLink) {
            this.descLink = descLink;
        }
    }
    public static class GoodsHongBaoListVO {
        // 2-红包  4-返利
        private int type;
        private String subMoney;
        private String subMoneyDesc;
        private String finalMoney;
        //价格详情
        private List<PriceInfo> priceDetails;
        private UserLevelVO userLevel;
        private String desc;
        public int getType() {
            return type;
        }
        public void setType(int type) {
            this.type = type;
        }
        public String getSubMoney() {
            return subMoney;
        }
        public void setSubMoney(String subMoney) {
            this.subMoney = subMoney;
        }
        public String getSubMoneyDesc() {
            return subMoneyDesc;
        }
        public void setSubMoneyDesc(String subMoneyDesc) {
            this.subMoneyDesc = subMoneyDesc;
        }
        public String getFinalMoney() {
            return finalMoney;
        }
        public void setFinalMoney(String finalMoney) {
            this.finalMoney = finalMoney;
        }
        public List<PriceInfo> getPriceDetails() {
            return priceDetails;
        }
        public void setPriceDetails(List<PriceInfo> priceDetails) {
            this.priceDetails = priceDetails;
        }
        public UserLevelVO getUserLevel() {
            return userLevel;
        }
        public void setUserLevel(UserLevelVO userLevel) {
            this.userLevel = userLevel;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
        static class UserLevelVO {
            //VIP等级 0-初级  1-青铜 2-白银 3-铂金
            private int vipRank;
            private String desc;
            private String link;
            public int getVipRank() {
                return vipRank;
            }
            public void setVipRank(int vipRank) {
                this.vipRank = vipRank;
            }
            public String getDesc() {
                return desc;
            }
            public void setDesc(String desc) {
                this.desc = desc;
            }
            public String getLink() {
                return link;
            }
            public void setLink(String link) {
                this.link = link;
            }
        }
        public static class PriceInfo {
            private String name;
            private String money;
            public PriceInfo(String name, String money) {
                this.name = name;
                this.money = money;
            }
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public String getMoney() {
                return money;
            }
            public void setMoney(String money) {
                this.money = money;
            }
        }
    }
}
fanli/src/main/resource/dubbo/consumer.xml
@@ -9,7 +9,7 @@
        <dubbo:parameter key="qos.port" value="33333"></dubbo:parameter>
    </dubbo:application>
    <dubbo:registry  address="zookeeper://172.16.16.26:2181"/>
    <dubbo:registry  address="zookeeper://193.112.35.168:2181"/>
    <!-- url=dubbo://192.168.3.122:20882/com.yeshi.goods.facade.service.TaoBaoCouponCacheService -->