rss.js 4.03 KB
/**
 * 逛rss订阅models
 * @author: chenfeng<feng.chen@yoho.cn>
 * @date: 2016/09/13
 */
'use strict';
const serviceAPI = global.yoho.ServiceAPI;
const mRoot = '../models';
const indexModel = require(`${mRoot}/index`);
const infoModel = require(`${mRoot}/info`);
const guangProcess = require(`${global.utils}/guang-process`);
const htmlProcess = require(`${global.utils}/html-process`);
const helpers = global.yoho.helpers;

/**
 * [获取订阅的资讯文章列表]
 * @param  {[int]} gender [性别参数(1,3表示男, 2,3表示女, 默认为所有)]
 * @return {[array]}
 */
const getRssArticle = (gender) => {
	                                        let result = [],
		                                        article = {},
		                                        articlePromise;

    switch (gender) {
        case '1,3':
            articlePromise = indexModel.getArticleList('1,3', 0, 0, '', 1, null, null, 100, false);
            break;
        case '2,3':
            articlePromise = indexModel.getArticleList('2,3', 0, 0, '', 1, null, null, 100, false);
            break;
        default:
            articlePromise = indexModel.getArticleList('1,2,3', 0, 0, '', 1, null, null, 100, false);
            break;
    }
    return articlePromise.then((article) => {
    	// 内容列表
	                                                                                    if (article.data.list.artList) {
	                                                let build = {};

	                                                let artListFunc = (i, len, resolve) => {
	        	                                        if (i < len) {
	        		                                        let value = article.data.list.artList[i];
			                                                if (typeof value.id !== 'undefined') {
		        		                                        build = guangProcess.formatArticle(value, false, false, true);
		        		                                        build.author.name = build.author.name || '';
		        		                                        return _genIntro(value.id).then((intro) => {
		        			                                        build.intro = intro;
		        			                                        result.push(build);
		        			                                        artListFunc(++i, len, resolve);
		        		});
		        	}
	        	} else {
	        		                                        resolve(result);
	        	}
	        };
	                                                return new Promise((resolve) => {
	        	                                        artListFunc(0, article.data.list.artList.length, resolve);
	        });

	    }
    });
};

/**
 * [构建信息内容]
 * @param  {[int]} id [资讯id]
 * @return {[string]}
 */
const _genIntro = (id) => {
	                                        let result = '';

	                                        return infoModel.intro(id).then((resData) => {
		                                        if (resData.data) {
			                                        resData.data.forEach((value) => {
	                                                    if (value.text) { // 文字
	                                                        result += htmlProcess.removeHtml(htmlProcess.escapeToHtml(value.text.data.text)) + '<br/>';
	            } else if (value.singleImage) { // 单张图
	                                                        result += `<img src="${helpers.image(value.singleImage.data[0].src, 640, 640)}"/><br/>`;
	            } else if (value.smallPic && value.smallPic.data) { // 多张小图
	            	                                        value.smallPic.data.forEach((small) => {
	            		                                        result += `<img src="${helpers.image(small.src, 315, 420)}"/>`;
	            	});
	                                                        result += '<br/>';
	            }
			});
			                                        return result;
		}
	});

};
module.exports = {
	                                        getRssArticle
};