detail-consult-service.js 1.44 KB
/**
 * Created by TaoHuang on 2016/6/14.
 */

'use strict';

const Promise = require('bluebird');
const _ = require('lodash');
const co = Promise.coroutine;

const Api = require('./detail-consult-api');
const detailHelper = require('./detail-helper');

module.exports = class extends global.yoho.BaseModel {

    constructor(ctx) {
        super(ctx);
        this.api = new Api(ctx);
        this.createAsync = this.api.createAsync.bind(this.api);
        this.likeAsync = this.api.likeAsync.bind(this.api);
        this.usefulAsync = this.api.usefulAsync.bind(this.api);
    }
    indexAsync(uid, pid, page, size) {
        return co(function *() {
            let consultList = yield this.api.indexAsync(uid, pid, page, size);

            if (!consultList.code || consultList.code !== 200) {
                return [];
            }
            return _.get(consultList, 'data.list', []).map(value => {
                return {
                    avatar: detailHelper.DEFAULT_AVATAR_ICO,
                    question: value.ask,
                    date: value.ask_time,
                    answer: value.answer,
                    id: value.id,
                    isLike: value.is_like === 'Y',
                    like: parseInt(value.like, 10),
                    isUseful: value.is_useful === 'Y',
                    useful: parseInt(value.useful, 10),
                    total: value.total
                };
            });

        }).bind(this)();
    }
};