FavoriteData.php 9.32 KB
<?php

namespace LibModels\Web\Product;

use Api\Yohobuy;
use Api\Sign;

/**
 * FavoriteData
 * 
 * 收藏相关接口
 */
class FavoriteData
{

    const URL_PRODUCT_FAVORITE = 'shops/service/v1/favorite/';
    const URL_ARTICLE_FAVORITE = '/guang/api/v1/favorite/';
    const URL_ARTICLE_FAVORITE_BRAND = '/guang/service/v2/favorite/toggleBrand';

    /**
     * 根据uid和商品的id查询是否被用户收藏
     * @param int $uid
     * @param int $productId
     * @param boolean $isOnlyUrl 是否指返回链接
     * @return boolean 收藏 true 未收藏 false
     */

    public static function getUidProductFav($uid, $productId, $isOnlyUrl = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.favorite.isFavorite';
        $param['id'] = $productId;
        $param['uid'] = $uid;
        $param['type'] = 'product';
        $param['client_secret'] = Sign::getSign($param);
        //只是返回链接
        if ($isOnlyUrl) {
            return Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);
        }
        return Yohobuy::get(Yohobuy::API_URL, $param);
//      return Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE, 'getUidProductFav', array($uid, $productSkn));
    }

    /**
     * 根据uid和一组商品的skn列表查询是否被用户收藏
     * 
     * @param int $uid 用户ID
     * @param array $productIdList 商品ID列表
     * @return boolean 收藏 true,未收藏 false
     */
    public static function getUidProductFavList($uid, $productIdList)
    {
//        $result = array();
//
//        foreach ($productSknList as $skn) {
//            Yohobuy::yarConcurrentCall(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE, 'getUidProductFav', array($uid, $skn), function($retval) use(&$result, $skn) {
//                $result[$skn] = empty($retval['data']) ? false : $retval['data'];
//            });
//        }
//        Yohobuy::yarConcurrentLoop();
//
//        return $result;

        $urlList = array();
        $param = array();

        foreach ($productIdList as $productId) {
            $param = Yohobuy::param();
            $param['method'] = 'app.favorite.isFavorite';
            $param['id'] = $productId;
            $param['uid'] = $uid;
            $param['type'] = 'product';
            $param['client_secret'] = Sign::getSign($param);
            $urlList[$productId] = Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);
        }

        return Yohobuy::getMulti($urlList);
    }

    /**
     * 根据uid和商品的skn收藏商品
     * @param $uid
     * @param $productId
     * @return bool
     */
    public static function addUidProductFav($uid, $productId, $isBrand = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.favorite.add';
        $param['id'] = $productId;
        $param['uid'] = $uid;
        $param['type'] = $isBrand ? 'brand' : 'product';
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 根据uid和商品的skn取消收藏商品
     * @param $uid
     * @param $productId
     * @return bool
     */
    public static function delUidProductFav($uid, $productId, $isBrand = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.favorite.cancel';
        $param['fav_id'] = $productId;
        $param['uid'] = $uid;
        $param['type'] = $isBrand ? 'brand' : 'product';
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 取消商品或品牌或店铺收藏
     * @param type $uid 用户uid
     * @param type $productId 商品id或品牌id或店铺id
     * @param type $isBrand 商品或品牌
     * @param type $isShop 是否是店铺
     * @return type
     */
    public static function cancelProductFav($uid, $productId, $isBrand = false, $isShop = false)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.favorite.cancel';
        $param['favIds'] = $productId;
        $param['uid'] = $uid;
        if ($isShop) {
            $param['type'] = 'shop';
        } else {
            $param['type'] = $isBrand ? 'brand' : 'product';
        }
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 根据uid和品牌ID添加或取消收藏品牌
     * @param int $uid
     * @param string $brandId
     * @return bool
     */
    public static function changeFavoriteBrand($uid, $brandId)
    {
        $param = Yohobuy::param();
        $param['uid'] = $uid;
        $param['brand_id'] = $brandId;
        $param['client_secret'] = Sign::getSign($param);
        return Yohobuy::get(Yohobuy::SERVICE_URL. self::URL_ARTICLE_FAVORITE_BRAND, $param);
        
        //return Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE, 'toggleBrandFav', array($uid, $brandId));
    }

    /**
     * 根据uid和品牌id判断品牌是否收藏
     * @param $uid
     * @param $brandId
     * @return bool
     */
    public static function isFavoriteBrand($uid, $brandId)
    {
        $param = Yohobuy::param();
        $param['uid'] = $uid;
        $param['brandId'] = $brandId;
        $param['client_secret'] = Sign::getSign($param);
        return Yohobuy::get(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE.'getUidBrandFav', $param);
       // return Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE, 'getUidBrandFav', array($uid, $brandId));
    }

    /**
     * 收藏商品列表
     * @param type $uid 用户id
     * @param type $limit 最多显示500条
     * @return type
     */
    public static function getFavoriteProductList($uid, $limit = 500)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.favorite.product';
        $param['uid'] = $uid;
        $param['limit'] = $limit;
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 收藏的品牌数据
     *
     * @param int $uid 用户ID
     * @param int $page 第几页,默认1
     * @param int $limit 限制读取的数目,默认10
     * @return array 收藏的品牌接口返回的数据
     */
    public static function favoriteBrandData($uid, $page = 1, $limit = 10)
    {
        $param = Yohobuy::param();
        $param['method'] = 'app.favorite.brand';
        $param['uid'] = $uid;
        $param['page'] = $page;
        $param['limit'] = $limit;
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 文章收藏列表
     * @param type $uid  用户id
     * @param type $udid 用户客户端唯一标识
     * @param type $page 当前页
     * @param type $limit 每页显示数量
     * @return type array
     */
    public static function favoriteArticleData($uid, $udid, $page, $limit)
    {
        $param = Yohobuy::param();
        $param['uid'] = $uid;
        $param['udid'] = $udid;
        $param['page'] = $page;
        $param['limit'] = $limit;
        $param['client_secret'] = Sign::getSign($param);
        return Yohobuy::get(Yohobuy::SERVICE_URL . self::URL_ARTICLE_FAVORITE. 'getUserFavArticleList', $param);
    }

    /**
     * 取消文章收藏
     * @param type $article_id 文章id
     * @param type $uid 用户id
     * @return type
     */
    public static function changeFavoriteArticle($article_id, $uid)
    {
        $param = Yohobuy::param();
        $param['uid'] = $uid;
        $param['article_id'] = $article_id;
        $param['client_secret'] = Sign::getSign($param);

        return Yohobuy::get(Yohobuy::SERVICE_URL . self::URL_ARTICLE_FAVORITE. 'cancelFavorite',$param);   
    }

    /**
     * 订阅降价通知(手机通知)
     * @param type $uid 用户id
     * @param type $mobile 手机号
     * @param type $productId 商品id
     */
    public static function redutionAdd($uid, $mobile, $productId)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.redution.add';
        $param['uid'] = $uid;
        $param['mobile'] = $mobile;
        $param['productId'] = $productId;
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 已订阅降价通知数量
     * @param type $uid
     */
    public static function redutionCount($uid)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.redution.count';
        $param['uid'] = $uid;
        $param['client_secret'] = Sign::getSign($param);

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

    /**
     * 取消订阅通知
     * @param type $uid 用户id
     * @param type $mobile 手机号
     * @param type $productId 商品id
     */
    public static function redutionCancel($uid, $productId)
    {
        $param = Yohobuy::param();
        $param['method'] = 'web.redution.cancel';
        $param['uid'] = $uid;
        $param['productIds'] = $productId;
        $param['client_secret'] = Sign::getSign($param);

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

}