ItemData.php 9.97 KB
<?php
namespace LibModels\Web\Product;
use Api\Yohobuy;
use Api\Sign;
class ItemData
{
    const PRODUCT_BASE_INFO = 'product/queryProductDetailByProductId';
    const PRODUCT_SIZE_INFO = 'product/queryProductIntroBySkn';
    const PRODUCT_CONSULT_LIST = 'consult/queryConsults';
    const PRODUCT_COMMENT_LIST = 'sns/comments/commentList';
    
    /**
     * 商品基本信息
     *
     * @param int $productId 商品ID
     * @param int $uid 用户ID
     * @param int $productSkn SKN
     * @return array
     */
    public static function baseInfo($productId, $uid, $productSkn = null)
    {
        $param = Yohobuy::param();
        $param['method'] = 'h5.product.data';
        if ($productId !== null) {
            $param['productId'] = $productId;
        } elseif ($productSkn !== null) {
            $param['product_skn'] = $productSkn;
        }
        if (!empty($uid)) {
            $param['uid'] = $uid;
        }
    
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 商品尺码信息
     *
     * @param int $productSkn 商品SKN号
     * @param boolean $isOnlyUrl 是否指返回链接
     * @return array
     */
    public static function sizeInfo($productSkn, $isOnlyUrl = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'h5.product.intro';
        $param['productskn'] = $productSkn;
        $param['client_secret'] = Sign::getSign($param);
        if($isOnlyUrl) {
            return Yohobuy::httpBuildQuery(API_URL, $param);
        }
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 咨询内容列表
     *
     * @param int $uid 用户ID
     * @param int $productId 产品ID
     * @param int $pageNum 页码数
     * @param int $pageSize 每页显示个数
     * @return array
     */
    public static function consultList($uid, $productId, $pageNum, $pageSize)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.consult.li';
        $param['product_id'] = $productId;
    
        if (!empty($uid)) {
            $param['uid'] = $uid;
        }
    
        $param['page'] = $pageNum;
        $param['limit'] = $pageSize;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 常见问题列表
     *
     * @return array
     */
    public static function commonConsultList()
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.consult.common';
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 评论内容列表
     *
     * @param int $productId 产品ID
     * @param int $pageNum 页码数
     * @param int $pageSize 每页显示个数
     * @return array
     */
    public static function commentList($productId, $pageNum, $pageSize)
    {
        $param = Yohobuy::param();
        $param['method'] = 'show.productShareOrderList';
        $param['product_id'] = $productId;
        $param['page'] = $pageNum;
        $param['limit'] = $pageSize;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 为你优选的商品列表
     *
     * @param int $productSkn 商品SKN号
     * @return array
     */
    public static function preference($productSkn, $channel, $brandId)
    {
        $param = Yohobuy::param();
        $param['method'] = 'h5.preference.Search';
        $param['productskn'] = $productSkn;
        $param['yhchannel'] = $channel;
        $param['brandId'] = $brandId;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param, 3600); // 缓存1小时
    }
    
    /**
     * 添加咨询
     *
     * @param int $uid 用户ID
     * @param int $productId 商品ID
     * @return array
     */
    public static function addConsult($uid, $productId, $content)
    {
        $param = Yohobuy::param();
        $param['method'] = 'h5.consult.add';
        $param['product_id'] = $productId;
        $param['content'] = $content;
        $param['uid'] = $uid;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::post(API_URL, $param);
    }
    
    /**
     * 商品信息
     *
     * @param int $productSkn 商品SKN号
     * @return array
     */
    public static function product($productSkn)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.product.data';
        $param['product_skn'] = $productSkn;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 咨询点赞
     *
     * @param int $uid 用户ID
     * @param int $id 咨询ID
     * @return array
     */
    public static function upvoteConsult($uid, $id)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.consult.like';
        $param['id'] = $id;
        $param['uid'] = $uid;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 咨询有用
     *
     * @param int $uid 用户ID
     * @param int $id 咨询ID
     * @return array
     */
    public static function usefulConsult($uid, $id)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.consult.useful';
        $param['id'] = $id;
        $param['uid'] = $uid;
        $param['client_secret'] = Sign::getSign($param);
    
        return Yohobuy::get(API_URL, $param);
    }
    /**
     * 获取详情页的活动Banner
     * 
     * @param int $productId
     * @param string $client_type
     * @param boolean $isOnlyUrl 是否指返回链接
     * @return array
     */
    public static function getProductBanner($productId, $client_type ='web', $isOnlyUrl = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.productBanner.data';
        $param['product_id'] = $productId;
        $param['client_type'] = $client_type;
        $param['private_key'] = Yohobuy::$privateKeyList[$client_type];
        $param['client_secret'] = Sign::getSign($param);
        //只是返回链接
        if($isOnlyUrl) {
            return Yohobuy::httpBuildQuery(API_URL, $param);
        }
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 获取商品的热区
     * 
     * @param int $productId
     * @return array
     */
    public static function getProductHotArea($productId) 
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.productCollocation.list';
        $param['product_id'] = $productId;
        $param['client_secret'] = Sign::getSign($param);
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 获取模特卡信息
     * 
     * @param int $productId
     * @param boolean $isOnlyUrl 是否指返回链接
     * @return array
     */
    public static function getProductModelCard($productId, $isOnlyUrl = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.productModelcard.list';
        $param['product_id'] = $productId;
        $param['client_secret'] = Sign::getSign($param);
        if($isOnlyUrl) {
            return Yohobuy::httpBuildQuery(API_URL, $param);
        }
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 获取商品舒适度
     * 
     * @param int $productId
     * @param boolean $isOnlyUrl 是否指返回链接
     * @return array 
     */
    public static function getProductComfort($productId, $isOnlyUrl = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.productComfort.data';
        $param['product_id'] = $productId;
        $param['client_secret'] = Sign::getSign($param);
        if($isOnlyUrl) {
            return Yohobuy::httpBuildQuery(API_URL, $param);
        }
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 获取模特试穿
     * 
     * @param string $productSkn
     * @param boolean $isOnlyUrl 是否指返回链接
     * @param string $isOnlyUrl
     */
    public static function getProductModelTry($productSkn, $isOnlyUrl = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.productModelTry.data';
        $param['product_skn'] = $productSkn;
        $param['client_secret'] = Sign::getSign($param);
        if($isOnlyUrl) {
            return Yohobuy::httpBuildQuery(API_URL, $param);
        }
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 清除商品详情页的sku相关缓存
     * 
     * @param string $productSkn
     * @return array
     */
    public static function clearProductCache($productSkn)
    {
        $param = Yohobuy::param();
        $param['method'] = 'clear.productCache';
        $param['product_skn'] = $productSkn;
        $param['client_secret'] = Sign::getSign($param);
        return Yohobuy::get(API_URL, $param);
    }
    
    /**
     * 清除商品详情页的详情缓存
     * 
     * @param string $productSkn
     * @return array
     */
    public static function clearProductInfoCache($productSkn)
    {
        $param = Yohobuy::param();
        $param['method'] = 'clear.memcache';
        $param['key'] = sprintf("yh_gw:queryProductIntro:%s", $productSkn);
        $param['client_secret'] = Sign::getSign($param);
        return Yohobuy::get(API_URL, $param);
    }

    /**
     * 商品促销信息
     * @param $skn 商品 skn
     * @return mixed
     */
    public static function promotion($skn)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.product.promotion';
        $param['product_skn'] = $skn;
        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(API_URL, $param);
    }
}