incre-relation-task.js 1.37 KB
/**
 * 每天定时增量更新,UFO新增的商品到爬虫关系表中
 */

const {logger} = require('../../libs/logger');
const {mysqlPool} = require('../../libs/mysql');
const {ProductRelationModel, DuDataModel, ShenjianModel} = require('../../models');
const _ = require('lodash');

module.exports = async() => {
  const [products, duProducts, sjProduct] = await Promise.all([
    ProductRelationModel.findAll(),
    DuDataModel.findAll(),
    ShenjianModel.findAll(),
  ]);
  const maxProduct = _.maxBy(products, 'productId');

  const newProducts = await mysqlPool.query(`
  select
    p.id,p.product_name,p.product_code
  from
    product p
  where
    p.id > ${maxProduct ? maxProduct.productId : 0}
  `);

  const newRelations = newProducts.map(product => {
    const duFind = duProducts.find(dp => dp.articleNumber === product.product_code);
    const sjFinds = sjProduct.filter(dp => dp.model === product.product_code);

    return {
      productId: product.id,
      productName: product.product_name,
      productCode: product.product_code,
      third: {
        ufo: {
          productId: product.id
        },
        du: duFind ? {
          productId: duFind.productId
        } : void 0,
        sj: sjFinds.map(f => f.id)
      }
    };
  });

  logger.info(`[incre-relation-task] incre-relation ${newRelations.length}`);

  await ProductRelationModel.insert(...newRelations);
};