admin
2019-07-17 0404963b52b72360a3a6660204f1e46e659ad12d
添加拼多多商品图文详情
1个文件已修改
5个文件已添加
505 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConfigControllerV2.java 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5PDDGoodsController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/pdd/PDDGoodsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/pdd/PDDGoodsService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/order/OrderParseConfigVO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/resource/ehcache.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/ConfigControllerV2.java
New file
@@ -0,0 +1,379 @@
package com.yeshi.fanli.controller.client.v2;
import java.io.PrintWriter;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.encrypt.DESUtil;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.homemodule.FloatAD;
import com.yeshi.fanli.entity.bus.msg.MsgDeviceReadState;
import com.yeshi.fanli.entity.bus.tlj.DeviceTaoLiJinRecord;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin.TaoLiJinOriginEnum;
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
import com.yeshi.fanli.entity.config.AppHomeFloatImg;
import com.yeshi.fanli.entity.taobao.ClientTBPid;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.homemodule.FloatADService;
import com.yeshi.fanli.service.inter.msg.MsgDeviceReadStateService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService;
import com.yeshi.fanli.service.inter.tlj.DeviceTaoLiJinRecordService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.user.TBPidService;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.ThreadUtil;
import com.yeshi.fanli.util.VersionUtil;
import net.sf.json.JSONObject;
/**
 * 动态
 *
 * @author Administrator
 *
 */
@RequestMapping("api/v2/config")
public class ConfigControllerV2 {
    @Resource
    private ConfigService configService;
    @Resource
    private TBPidService tbPidService;
    @Resource
    private TaoBaoUnionConfigService taoBaoUnionConfigService;
    @Resource
    private UserInfoExtraService userInfoExtraService;
    @Resource
    private FloatADService floatADService;
    @Resource
    private JumpDetailV2Service jumpDetailV2Service;
    @Resource
    private MsgDeviceReadStateService msgDeviceReadStateService;
    @Resource
    private UserTaoLiJinOriginService uerTaoLiJinOriginService;
    @Resource
    private DeviceTaoLiJinRecordService deviceTaoLiJinRecordService;
    @Resource
    private UserActiveLogService userActiveLogService;
    /**
     * s 首页配置信息
     *
     * @param acceptData
     * @param out
     */
    @RequestMapping(value = "getHomeConfig", method = RequestMethod.POST)
    public void getHomeConfig(AcceptData acceptData, Long uid, PrintWriter out) {
        if (uid != null && uid == 0L)
            uid = null;
        AppHomeFloatImg appHomeFloatImg = configService.getAppHomeFloatImg();
        if ("ios".equalsIgnoreCase(acceptData.getPlatform()) && !Constant.IS_TEST) {
            appHomeFloatImg = null;
        }
        JSONObject data = new JSONObject();
        if (appHomeFloatImg != null) {
            data.put("floatImg", appHomeFloatImg);
        }
        String notifyImg = configService.getAppHomeFloatNotifyImg();
        if (!StringUtil.isNullOrEmpty(notifyImg)) {
            data.put("floatNotifyImg", notifyImg);
        }
        FloatAD floatAD = null;
        if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) {
            if (uid == null) {
                DeviceTaoLiJinRecord deviceRecord = deviceTaoLiJinRecordService.getByDevice(acceptData.getDevice());
                if (deviceRecord == null) {
                    floatAD = floatADService.getEffectiveFloatAD(FloatAD.POSITION_INDEX, 1);
                }
            } else {
                UserTaoLiJinOrigin userTaoLiJin = uerTaoLiJinOriginService.getByUidAndOrigin(uid,
                        TaoLiJinOriginEnum.newbiesWin.name());
                if (userTaoLiJin == null) {
                    floatAD = floatADService.getEffectiveFloatAD(FloatAD.POSITION_INDEX, 1);
                }
            }
        }
        // 无新人弹框 则查询默认
        if (floatAD == null) {
            floatAD = floatADService.getEffectiveFloatAD(FloatAD.POSITION_INDEX, 0);
        }
        if (floatAD != null) {
            JSONObject detail = new JSONObject();
            detail.put("img", floatAD.getPicture());
            detail.put("jumpDetail", floatAD.getJumpDetail());
            detail.put("params", floatAD.getParams());
            detail.put("showTime", floatAD.getShowMode());
            detail.put("accountLogin", floatAD.isJumpNeedLogin());
            data.put("floatImgDetail", detail);
        }
        // 领券帮助链接,1.5.2后生效
        String couponHelp = configService.get("taobao_coupon_help");
        data.put("couponHelpUrl", couponHelp);
        // 底部网页链接
        String platform = acceptData.getPlatform();
        if ("android".equalsIgnoreCase(platform)) {
            data.put("htmlLink", configService.get("index_html_link_android"));
        }
        // 判断新老用户
        UserActiveLog da = null;
        if (uid != null)
            da = userActiveLogService.getFirstActiveInfo(uid);
        // 新人
        if (da == null || (System.currentTimeMillis() - da.getCreateTime().getTime()) <= 1000 * 60 * 60 * 24 * 15L) {
            data.put("userTimeType", 0);
        } else {// 老人
            data.put("userTimeType", 1);
        }
        data.put("hotFuctionLink", configService.get("hot_function_url"));
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 消息中心弹框
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getMSGConfig", method = RequestMethod.POST)
    public void getMSGConfig(AcceptData acceptData, Long uid, PrintWriter out) {
        JSONObject data = new JSONObject();
        boolean show = false;
        if (uid != null) {
            show = uerTaoLiJinOriginService.hasRankHongBao(uid);
        }
        if (show) {
            FloatAD floatAD = floatADService.getEffectiveFloatAD(FloatAD.POSITION_MSGCENTER, null);
            if (floatAD != null) {
                JSONObject detail = new JSONObject();
                detail.put("img", floatAD.getPicture());
                detail.put("jumpDetail", floatAD.getJumpDetail());
                detail.put("params", floatAD.getParams());
                detail.put("showTime", floatAD.getShowMode());
                detail.put("accountLogin", floatAD.isJumpNeedLogin());
                data.put("floatImgDetail", detail);
            }
        }
        out.print(JsonUtil.loadTrueResult(data));
    }
    @RequestMapping(value = "getTaoBaoCartConfig", method = RequestMethod.POST)
    public void getTaoBaoCartConfig(AcceptData acceptData, String position, Long uid, PrintWriter out) {
        if (uid == null || uid <= 0) {
            out.print(JsonUtil.loadFalseResult("用户尚未登录"));
            return;
        }
        // 是否需要购物城转链
        boolean convert = "0".equalsIgnoreCase(configService.get("show_taobao_cart_convert")) ? false : true;
        if (!"cart".equalsIgnoreCase(position) && !convert) {
            out.print(JsonUtil.loadFalseResult(""));
            return;
        }
        ClientTBPid clientTBPid = null;
        if ("ios".equalsIgnoreCase(acceptData.getPlatform())) {
            clientTBPid = tbPidService.getIOSDefault();
        } else {
            clientTBPid = tbPidService.getAndroidDefault();
        }
        String cartJS = configService.get("taobao_cart_js");
        String cartUrl = configService.get("taobao_cart_link");
        if (!convert)// 不转链
        {
            cartUrl = "http://";
            cartJS = "-";
        }
        String js = null;
        String link = null;
        try {
            js = DESUtil.encode(cartJS, StringUtil.getBase64String("YeShiFANLI889*+"),
                    StringUtil.getBase64String("*M#34f?,"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            link = DESUtil.encode(cartUrl, StringUtil.getBase64String("YeShiFANLI889*+"),
                    StringUtil.getBase64String("*M#34f?,"));
        } catch (Exception e) {
            e.printStackTrace();
        }
        JSONObject data = new JSONObject();
        data.put("js", js);
        data.put("link", link);
        data.put("tbPidInfo", clientTBPid);
        out.print(JsonUtil.loadTrueResult(data));
    }
    @RequestMapping(value = "getWebConfig", method = RequestMethod.POST)
    public void getWebConfig(AcceptData acceptData, String url, PrintWriter out) {
        JSONObject data = new JSONObject();
        if (url != null && (url.contains("s.click") || url.contains("taobao.com") || url.contains("tmall.com")
                || url.contains("m.tb.cn"))) {
            data.put("baichuan", true);// 采用阿里百川的方式加载webview
            data.put("goodsDetail", true);// 需要拦截商品详情
        } else {
            data.put("baichuan", false);// 不需要采用阿里百川的方式加载webview
            data.put("goodsDetail", false);// 不需要拦截商品详情
        }
        out.print(JsonUtil.loadTrueResult(data));
    }
    /**
     * 获取账号绑定中的配置信息
     *
     * @param acceptData
     * @param uid
     * @param out
     */
    @RequestMapping(value = "getBindAccountConfig", method = RequestMethod.POST)
    public void getBindAccountConfig(AcceptData acceptData, PrintWriter out) {
        String alipayHelpUrl = configService.get("alipay_help");// 支付宝帮助
        String alipayBindFailUrl = configService.get("alipay_bind_fail_reason");// 支付宝绑定失败原因
        JSONObject data = new JSONObject();
        data.put("alipayHelp", alipayHelpUrl);
        data.put("alipayBindFailReason", alipayBindFailUrl);
        out.print(JsonUtil.loadTrueResult(data));
    }
    @RequestMapping(value = "getUserConfig", method = RequestMethod.POST)
    public void getUserConfig(AcceptData acceptData, PrintWriter out) {
        try {
            // 用户协议链接
            String serviceProtocol = configService.get("service_protocol_link");
            // 隐私条款链接
            String privacyProtocol = configService.get("privacy_protocol_link");
            JSONObject data = new JSONObject();
            data.put("serviceProtocolLink", serviceProtocol);
            data.put("privacyProtocolLink", privacyProtocol);
            // 购物车跳转方式(包含jumpDetail与params)
            JSONObject source = JSONObject.fromObject(configService.get("taobao_cart_jump_detail"));
            data.put("taoBaoCart", source);
            out.print(JsonUtil.loadTrueResult(data));
        } catch (Exception e) {
            out.print(JsonUtil.loadFalseResult("获取失败"));
            e.printStackTrace();
        }
    }
    /**
     * 订单解析配置
     *
     * @param acceptData
     * @param out
     */
    @RequestMapping(value = "getOrderParseConfig", method = RequestMethod.POST)
    public void getOrderParseConfig(AcceptData acceptData, int type, PrintWriter out) {
        switch (type) {
        case Constant.SOURCE_TYPE_TAOBAO:
            if ("0".equalsIgnoreCase(configService.get("auto_find_taobao_order")))
                out.print(JsonUtil.loadFalseResult(1, "暂不支持"));
            else {
                String orderJS = configService.get("taobao_order_parse_js");
                JSONObject data = new JSONObject();
                try {
                    data.put("orderJS", DESUtil.encode(orderJS, StringUtil.getBase64String("YeShiFANLI889*+"),
                            StringUtil.getBase64String("*M#34f?,")));
                    data.put("orderUrl",
                            DESUtil.encode("https://buyertrade.taobao.com/trade/itemlist/list_bought_items.htm",
                                    StringUtil.getBase64String("YeShiFANLI889*+"),
                                    StringUtil.getBase64String("*M#34f?,")));
                } catch (Exception e) {
                    e.printStackTrace();
                }
                out.print(JsonUtil.loadTrueResult(data));
            }
            break;
        case Constant.SOURCE_TYPE_JD: {
        }
            break;
        case Constant.SOURCE_TYPE_PDD: {
        }
            break;
        }
    }
    /**
     * 获取订单配置
     *
     * @param acceptData
     * @param out
     */
    @RequestMapping(value = "getOrderConfig", method = RequestMethod.POST)
    public void getOrderConfig(AcceptData acceptData, PrintWriter out) {
        JSONObject data = new JSONObject();
        // 测试
        data.put("showTaoBaoOrder", "0".equalsIgnoreCase(configService.get("show_taobao_order").trim()) ? false : true);
        data.put("taoBaoOrderUrl", "https://main.m.taobao.com/olist/index.html");
        out.print(JsonUtil.loadTrueResult(data));
    }
    @RequestMapping(value = "getKeFuConfig", method = RequestMethod.POST)
    public void getKeFuConfig(AcceptData acceptData, PrintWriter out) {
        JSONObject data = new JSONObject();
        data.put("meiqia", "1".equalsIgnoreCase(configService.get("kefu_meiqia")) ? true : false);// 是否跳转美洽,不跳转美洽就用原来的
        out.print(JsonUtil.loadTrueResult(data));
        // 设置消息已读
        ThreadUtil.run(new Runnable() {
            @Override
            public void run() {
                msgDeviceReadStateService.setDeviceMsgRead(MsgDeviceReadState.TYPE_KEFU, acceptData.getDevice(),
                        "android".equalsIgnoreCase(acceptData.getPlatform()) ? 1 : 2);
            }
        });
    }
    /**
     * 获取邀请码帮助链接
     *
     * @param acceptData
     * @param out
     */
    @RequestMapping(value = "getInviteCodeInputHelp", method = RequestMethod.POST)
    public void getInviteCodeInputHelp(AcceptData acceptData, PrintWriter out) {
        JSONObject data = new JSONObject();
        data.put("helpUrl", configService.get("invite_code_input_help"));
        out.print(JsonUtil.loadTrueResult(data));
    }
}
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5PDDGoodsController.java
New file
@@ -0,0 +1,41 @@
package com.yeshi.fanli.controller.h5;
import java.io.PrintWriter;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.service.inter.pdd.PDDGoodsService;
@Controller
@RequestMapping("api/h5/v1/pddgoods")
public class H5PDDGoodsController {
    @Resource
    private PDDGoodsService pddGoodsService;
    /**
     * 获取拼多多的图文详情
     *
     * @param acceptData
     * @param callback
     * @param id
     * @param out
     */
    @RequestMapping(value = "getImageList", method = RequestMethod.GET)
    public void getCouponList(AcceptData acceptData, String callback, Long id, PrintWriter out) {
        if (id == null || id == 0) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请上传商品ID")));
            return;
        }
        List<String> list = pddGoodsService.getDetailImageList(id);
        out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(list)));
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/pdd/PDDGoodsServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.yeshi.fanli.service.impl.pdd;
import java.util.List;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.yeshi.fanli.service.inter.pdd.PDDGoodsService;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
@Service
public class PDDGoodsServiceImpl implements PDDGoodsService {
    @Cacheable(value = "pddCache", key = "'getDetailImageList'+#id")
    @Override
    public List<String> getDetailImageList(Long id) {
        return PinDuoDuoUtil.getDetailImages(id);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/pdd/PDDGoodsService.java
New file
@@ -0,0 +1,21 @@
package com.yeshi.fanli.service.inter.pdd;
import java.util.List;
/**
 * 拼多多商品服务
 *
 * @author Administrator
 *
 */
public interface PDDGoodsService {
    /**
     * 获取商品详情图片列表
     *
     * @param id
     * @return
     */
    public List<String> getDetailImageList(Long id);
}
fanli/src/main/java/com/yeshi/fanli/vo/order/OrderParseConfigVO.java
New file
@@ -0,0 +1,37 @@
package com.yeshi.fanli.vo.order;
/**
 * 订单解析配置
 *
 * @author Administrator
 *
 */
public class OrderParseConfigVO {
    private boolean valid;// 是否可以解析
    private String orderUrl;
    private String orderJS;
    public boolean isValid() {
        return valid;
    }
    public void setValid(boolean valid) {
        this.valid = valid;
    }
    public String getOrderUrl() {
        return orderUrl;
    }
    public void setOrderUrl(String orderUrl) {
        this.orderUrl = orderUrl;
    }
    public String getOrderJS() {
        return orderJS;
    }
    public void setOrderJS(String orderJS) {
        this.orderJS = orderJS;
    }
}
fanli/src/main/resource/ehcache.xml
@@ -217,5 +217,12 @@
        memoryStoreEvictionPolicy="LRU" />
    <!-- 拼多多缓存 -->
    <cache name="pddCache" maxElementsInMemory="1000"
        maxElementsOnDisk="5000" eternal="false" timeToIdleSeconds="3600"
        timeToLiveSeconds="3600" overflowToDisk="true"
        memoryStoreEvictionPolicy="LRU" />
</ehcache>