detail-product-api.js 3.67 KB
/**
 * Created by TaoHuang on 2016/6/14.
 */

'use strict';

const config = global.yoho.config;
const redis = global.yoho.redis;

module.exports = class extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    /**
     * 商品的 banner
     */
    getProductBannerAsync(pid) {
        return this.get({data: {
            method: 'web.productBanner.data',
            product_id: pid
        }, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 商品尺寸
     */
    sizeInfoAsync(skn) {
        return this.get({data: {
            method: 'h5.product.intro',
            productskn: skn
        }, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 特殊商品退换货
     */
    isSupportReturnedSale(skn) {
        return this.get({data: {
            method: 'web.product.refundExchange',
            product_skn: skn
        }, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 商品舒适度
     */
    getProductComfortAsync(pid) {
        return this.get({data: {
            method: 'web.productComfort.data',
            product_id: pid
        }, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 模特试穿
     */
    getProductModelTryAsync(skn) {
        return this.get({data: {
            method: 'web.productModelTry.data',
            product_skn: skn
        }, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 获得产品信息
     */
    getProductAsync(id, uid, isStudents, vipLevel) {

        let data = {
            method: 'app.product.data'
        };

        if (id.skn) {
            data.product_skn = id.skn;
        }

        if (id.pid) {
            data.product_id = id.pid;
        }

        if (uid) {
            data.uid = uid;
        }

        if (isStudents) {
            data.is_student = isStudents;
        }

        if (vipLevel) {
            data.current_vip_level = vipLevel;
        }

        return this.get({data, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 促销信息
     */
    getPromotionAsync(skn) {
        let data = {
            method: 'app.product.promotion',
            product_skn: skn
        };

        return this.get({data, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 限购商品
     */
    getLimitedProductStatusAsync(code, uid, skn) {
        let data = {
            method: 'app.limitProduct.productStatus',
            limitProductCode: code
        };

        if (uid) {
            data.uid = uid;
        }

        if (skn) {
            data.product_skn = skn;
        }

        return this.get({data, params: {
            cache: config.apiCache
        }});
    }

    /**
     * 店铺推荐
     */
    getShopRecommendAsync(skn, page, limit) {
        return this.get({
            method: 'web.product.shopRecommend',
            product_skn: skn,
            page: page || 1,
            limit: limit || 20
        });
    }

    /**
     * 套餐和量贩
     */
    getBundleAsync(skn) {
        return this.get({data: {
            method: 'app.query.bundleSkn',
            product_skn: skn
        }});
    }

    /**
     * 找相似
     */
    getLikeAsync(skn, limit) {
        return this.get({data: {
            method: 'app.search.findLike',
            limit: limit || 10,
            product_skn: skn
        }});
    }

    // 根据small_sort从redis获取分类下的关键词
    getRecommendKeywords(smallSort) {
        return redis.all([['get', `golobal:yoho:seo:keywords:sortId:${smallSort}`]]).then(res => {
            return res[0];
        });
    }
};