DetailData.php 7.52 KB
<?php

namespace LibModels\Wap\Product;

use Api\Sign;
use Api\Yohobuy;

/**
 * 商品详情相关的数据模型
 * 
 * @name DetailData
 * @package LibModels/Wap/Product
 * @copyright yoho.inc
 * @version 1.0 (2015-10-8 11:51:32)
 * @author fei.hong <fei.hong@yoho.cn>
 */
class DetailData
{

    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 int $uid 用户ID
     * @param int $udid 客户端唯一标识
     * @return array
     */
    public static function sizeInfo($productSkn, $uid, $udid)
    {
        $param = Yohobuy::param();
        $param['method'] = 'h5.product.intro';
        $param['productskn'] = $productSkn;
        if (!empty($uid)) {
            $param['uid'] = $uid;
        }
        $param['udid'] = $udid;

        $param['client_secret'] = Sign::getSign($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'] = 'app.comment.li';
        $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号
     * @param int $channel
     * @param int $brandId
     * @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);
    }

    /**
     * 获取限购商品详情
     *
     * @param int $uid 用户UID
     * @param string $productCode 限购商品商品码
     * @return mixed
     */
    public static function limitProductData($uid, $productCode)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.limitProduct.limitProductDetail';
        $param['limitProductCode'] = $productCode;
        if (!empty($uid)) {
            $param['uid'] = $uid;
        }
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 根据商品ID获得店铺列表
     *
     * @param $brandId
     * @return mixed
     */
    public static function queryShopsByBrandId($brandId)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.shop.queryShopsByBrandId';
        $param['brand_id'] = $brandId;
        $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); 
    }

    /**
     * 通过skn查询商品详情
     * @param {[string || array]} $productSkn 商品skn
     * @return {[array]}
     */
    public static function productBatch($productSkn) {
        $productSkn = is_array($productSkn) ? $productSkn : array($productSkn);
        $param = Yohobuy::param();
        $param['method'] = 'h5.product.batch';
        $param['productSkn'] = implode(',', $productSkn);
        $param['client_secret'] = Sign::getSign($param);

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