consult-comment.js 2.48 KB
/**
 * 商品详情相关models
 * @author: yyq<yanqing.yang@yoho.cn>
 * @date: 2016/6/27
 */

'use strict';

const api = global.yoho.API;
const helpers = global.yoho.helpers;
const headerModel = require('../../../doraemon/models/header'); // 头部model
const _ = require('lodash');

const _getCommonConsult = () => {
    let params = {
        method: 'app.consult.common'
    };

    return api.get('', params, {
        code: 200
    }).then(result => {
        let data = {};

        if (result.data) {
            data.faq = result.data;
        }

        return data;
    });
};

const _formatConsultsList = (data) => {
    let list = [];

    if (data.length) {
        _.forEach(data, (value) => {
            list.push({
                question: value.ask,
                time: value.ask_time,
                answer: value.answer,
                id: value.id,
                isLike: value.is_like === 'Y',
                like: _.toNumber(value.like),
                isUseful: value.is_useful === 'Y',
                useful: _.toNumber(value.useful)
            });
        });
    }

    return list;
};

const _getConsults = (id, page, limit) => {
    let params = {
        method: 'app.consult.li',
        product_id: id,
        page: page ? page : 1,
        limit: limit ? limit : 10
    };

    return api.get('', params, {
        code: 200
    }).then(result => {
        let data = {};

        if (result.data && result.data.list) {
            Object.assign(data, {
                list: _formatConsultsList(result.data.list),
                pageTotal: result.data.page_total,
                total: result.data.total
            });
        }

        return data;
    });
};

let consults = (params) => {
    let title = '购买咨询';

    return api.all([
        headerModel.setNav({
            navTitle: title
        }),
        _getCommonConsult(),
        _getConsults(params.product_id, 1, 10)
    ]).then(result => {
        let data = {
            pageHeader: result[0],
            link: helpers.urlFormat('/product/detail/consultform', {
                product_id: params.product_id
            })
        };

        Object.assign(data, result[1]);

        if (result[2].list && result[2].list.length) {
            if (result[2].total) {
                data.pageHeader.navTitle += `(${result[2].total})`;
            }
            data.consults = result[2].list;
        }

        return data;
    });
};

module.exports = {
    consults  // 商品详情相关-购买咨询
};