index.js 4.21 KB

let apiUrl = {
    brand: '/platform/getSellerBrandInfo',
    sort: '/platform/getSellerSortInfo',
    color: '/platform/querySellerProductColors',
    size: '/platform/querySortSize',
    addProduct: '/platform/addProduct',
    params: '/platform/queryProductParamBySortId',
    attr: '/platform/selectAttributes',
    material: '/platform/querySellerProductMaterial',
    updateNetInfo: '/platform/updateSellerProductNetSaleInfo',
    updateProduct: '/platform/updateProduct',
    getProduct: '/platform/getProduct'
};

const request = require('axios');

/**
 * 获得店铺关联品牌
 */
function getBrand() {
    return request.get(apiUrl.brand).then((result) => result.data);
}

/**
 * 根据品牌获得品类信息
 * @param brandId
 * @param level 可选参数:1, 2, 3
 * @param sortId 父级sortId
 */
function getSort(brandId, level, sortId) {
    let opts = {
        brandId: brandId,
        level: level
    };

    if (sortId) {
        Object.assign(opts, {sortId});
    }

    return request.get(apiUrl.sort, {
        params: opts
    }).then((result) => result.data);
}

/**
 * 获得品牌所支持的所有颜色
 */
function getColor() {
    return request.get(apiUrl.color).then((result) => result.data);
}

/**
 * 获得品类下所支持的尺码
 * @param smallSortId
 */
function getSize(smallSortId) {
    return request.get(apiUrl.size, {
        params: {
            sortId: smallSortId
        }
    }).then(result => result.data);
}

/**
 * 获得品类支持的商品相关参数
 * @param sortId
 */
function getProductParams(sortId) {
    return request.get(apiUrl.params, {
        params: {
            sortId
        }
    }).then(result => result.data);
}

/**
 * 获得品类的属性
 * @param sorId
 */
function getProductAttribute(sortId) {
    const saleType = 2;
    const displayPosition = 3;

    return request.get(apiUrl.attr, {
        params: {
            categoryId: sortId,
            saleType,
            displayPosition
        }
    }).then(result => result.data);
}

/**
 * 获得商品风格
 * @param sortId
 */
function getProductStyle(sortId) {
    const saleType = 2;
    const displayPosition = 2;

    return request.get(apiUrl.attr, {
        params: {
            categoryId: sortId,
            saleType,
            displayPosition
        }
    }).then(result => result.data);
}

/**
 * 获得品类下的所有材质
 * @param sortId 第一级sort
 */
function getMaterial(maxSortId) {
    return request.get(apiUrl.material, {
        params: {
            maxSortId: maxSortId
        }
    }).then(result => result.data);
}

/**
 * 获得所有属性
 * @param smallSortId
 * @param maxSortId
 */

function addModelAttr(attr) {
    attr.model = attr.inputType === 'checkbox' ? [] : '';
    return attr;
}

function getAllAttr(smallSortId, maxSortId) {
    return Promise.all([
        getProductParams(smallSortId).then(r => r.data).then(r => r.map(addModelAttr)),
        getProductAttribute(smallSortId).then(r => r.data).then(r => r.map(addModelAttr)),
        getProductStyle(smallSortId).then(r => r.data).then(r => r.map(addModelAttr)),
        getMaterial(maxSortId).then(r => r.data).then(r => addModelAttr(r)),
    ]);
}

/**
 * 更新商品网销信息
 * @param info
 */
function updateNetInfo(info) {
    return request.post(apiUrl.updateNetInfo, info)
        .then(result => result.data);
}

/**
 *  保存商品基本信息
 * @param product
 */
function saveBaseProductInfo(product) {
    return request.post(apiUrl.addProduct, product)
            .then(result => result.data);
}

/**
 * 查询商品所以有信息,包括网销信息
 * @param skn
 */
function getProductAllInfo(skn) {
    return request.get(apiUrl.getProduct, {
        params: {
            productSkn: skn
        }
    }).then(result => result.data);
}

/**
 * 更新商品信息,包括基础信息和网销信息
 * @param product
 */
function updateProductAllInfo(product) {
    return request.post(apiUrl.updateProduct, product)
        .then(result => result.data);
}

export default {
    getBrand,
    getSort,
    getColor,
    getSize,
    getProductParams,
    getProductAttribute,
    getMaterial,
    getProductStyle,
    getAllAttr,
    updateNetInfo,
    saveBaseProductInfo,
    getProductAllInfo,
    updateProductAllInfo
};