index.js 3.97 KB
'use strict';

const moment = require('moment');
const SeoIndexModel = require('../../models/seo/index');
const BaiduLinkSubmit = require('../../models/seo/baidu-link-submit');
const XmlNews = require('../../models/xml/news');
const urlReq = require('url');

const index = (req, res) => {
    if (global.IS_GOODS_XML_RUN) {
        return res.json({code: 201, message: '上一个任务正在运行中...'});
    }

    global.IS_GOODS_XML_RUN = true;

    req.ctx(SeoIndexModel).writerGoodsXml(req.params).then(() => {
        global.IS_GOODS_XML_RUN = false;
    });

    return res.json({
        code: 200,
        data: `${req.protocol}://${req.hostname}/xml-data/goods-xml/goods-${req.params.start || 1}.xml`,
        message: '任务创建成功,开始运行...'
    });
};

const autoGoodsXml = (req, res) => {
    if (global.IS_GOODS_XML_RUN) {
        return res.json({code: 201, message: '上一个任务正在运行中...'});
    }

    global.IS_GOODS_XML_RUN = true;

    req.ctx(SeoIndexModel).autoGoodsXml({start: 1});

    res.json({code: 200, message: '任务创建成功,开始运行...'});
};

const goodsUrl = (req, res) => {
    return req.ctx(BaiduLinkSubmit).goodsUrl().then(result => {
        return res.json(result);
    });
};

const guangUrl = (req, res) => {
    return req.ctx(BaiduLinkSubmit).guangUrl().then(result => {
        return res.json(result);
    });
};

const yohoBoysUrl = (req, res) => {
    return req.ctx(BaiduLinkSubmit).yohoBoys(req.query).then(result => {
        return res.json(result);
    });
};

const yohoGirlsUrl = (req, res) => {
    return req.ctx(BaiduLinkSubmit).yohoGirls(req.query).then(result => {
        return res.json(result);
    });
};

const setTask = (req, res) => {
    return req.ctx(SeoIndexModel).setTask(req.query).then(result => {
        return res.json(result);
    });
};

const delTask = (req, res) => {
    return req.ctx(SeoIndexModel).delTask(req.query).then(result => {
        return res.json(result);
    });
};

const demoXml = (req, res) => {
    res.setHeader('Content-Type', 'text/xml; charset=utf-8');
    res.render('seo/demo-xml');
};

const demoXsd = (req, res) => {
    res.setHeader('Content-Type', 'text/xml; charset=utf-8');
    res.render('seo/demo-xsd');
};

const siteMapXml = (req, res) => {
    req.ctx(SeoIndexModel).getGoodsPage().then(result => {
        let date = moment(new Date()).format('YYYY-MM-DD');
        let sitemap = new Array(result).fill().map((val, k) => {
            return {url: `${req.protocol}://${req.hostname}/xml-data/goods-xml/goods-${k + 1}.xml`, date: date};
        });

        res.setHeader('Content-Type', 'text/xml; charset=utf-8');
        return res.render('seo/site-map', {sitemap});
    });
};

const newsSitemap = (req, res) => {
    let sitemapUrl = req.query.url || '';

    if (!sitemapUrl) {
        return res.json({code: 400, data: {}, message: 'url is empty'});
    }

    let url = urlReq.resolve(sitemapUrl, '/');
    let XmlNewsModel = req.ctx(XmlNews);

    XmlNewsModel.delRedisSitemap(url).then(() => {
        XmlNewsModel.getSitemap(sitemapUrl, url).then(result => {
            return res.json(result);
        });
    });
};

const yohoGirlsAll = (req, res) => {
    return req.ctx(BaiduLinkSubmit).yohoGirlsAll(req.query).then(result => {
        return res.json(result);
    });
};

const yohoBoysAll = (req, res) => {
    return req.ctx(BaiduLinkSubmit).yohoBoysAll(req.query).then(result => {
        return res.json(result);
    });
};

const marsAll = (req, res) => {
    return req.ctx(BaiduLinkSubmit).marsAll(req.query).then(result => {
        return res.json(result);
    });
};

const marsReal = (req, res) => {
    return req.ctx(BaiduLinkSubmit).marsReal(req.query).then(result => {
        return res.json(result);
    });
};

module.exports = {
    index,
    autoGoodsXml,
    siteMapXml,
    goodsUrl,
    guangUrl,
    yohoBoysUrl,
    yohoGirlsUrl,
    setTask,
    delTask,
    newsSitemap,
    yohoGirlsAll,
    yohoBoysAll,
    marsAll,
    marsReal,
    demoXsd,
    demoXml
};