904118851 8 kuukautta sitten
vanhempi
sitoutus
cb45495274

+ 188 - 0
2_PRODUCT_FACTORY/dz_factory.js

@@ -0,0 +1,188 @@
+const dz_search_book = require('../src/api/dz/dz_search_book');
+const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
+const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
+const redis_help = require('../src/use_redis');
+const axios = require('axios');
+const config = require('../etc/config.json');
+
+const task_queue = [];
+const DZ_FACTORY = {};
+
+DZ_FACTORY.processBook = async function(data) {
+    let dz_book_data = await dz_search_book.search_id(data.book_id);
+    if(dz_book_data === null) {
+        return {
+            ...data,
+            genre: 999
+        };
+    }
+    
+    return {
+        words: dz_book_data.words,
+        genre: dz_book_data.genre,
+        book_id: dz_book_data.book_id,
+        book_name: dz_book_data.book_name,
+        tg_platform_id: data.tg_platform_id
+    };
+}
+
+DZ_FACTORY.update_filter_data = async function(FilterConfig, data) {
+    let isGenre = data.genre !== 999;
+    if(isGenre) {
+        try {
+            await DZ_FACTORY.video_product_material(data);
+        } catch(e) {
+            console.log("video_product_material error:", e);
+        }
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 1,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre,
+                words: data.words
+            }
+        );
+    } else {
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 2,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre
+            }
+        );
+    }
+}
+
+DZ_FACTORY.insert_product = async function(data) {
+    return await video_product_controllers.createProductData({
+        book_platform: data.tg_platform_id,
+        product_name: data.book_name,
+        genre: data.genre,
+        product_id: data.book_id,
+        words: data.words
+    });
+}
+
+DZ_FACTORY.video_product_material = async function(data) {
+    let url = config.isDebug ? config.debug_supdate_config.host : config.release_supdate_config.host;
+    url = url + '/sapi/video_product_material/supdate';
+    const formData = new FormData();
+    formData.append('data', JSON.stringify({
+        dy_id: data.video_id,
+        dy_url: data.video_link,
+        product_id: data.book_id,
+        product_name: data.book_name,
+        d_z_number: data.like_num,
+        collect_number: data.kepp_num,
+        comment_number: data.comment_num,
+        forward_number: data.shared_num,
+        book_platform: data.tg_platform_id,
+        title: data.title,
+        yun_fabu_time: data.publish_time
+    }));
+    
+    return await axios.post(url, formData, {
+        headers: {
+            'Content-Type': 'multipart/form-data'
+        }
+    })
+    .then(response => {
+        if(response.data.code === 10000) {
+            console.log("插入任务表成功:", response.data);
+        } else {
+            console.log("插入任务表失败:", formData);
+        }
+    })
+    .catch(error => {
+        console.error("插入任务表失败:", error, formData);
+    });
+}
+
+// 处理任务队列
+async function processCreateTask() {
+    let result = null;
+    try {
+        if(task_queue.length > 0) {
+            let task_queue_item = task_queue.pop();
+            result = task_queue_item.result;
+            
+            let processedData = await DZ_FACTORY.processBook(result.data);
+            let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+            FilterConfig = JSON.parse(FilterConfig);
+            
+            if(processedData.genre !== 999) {
+                await DZ_FACTORY.insert_product(processedData);
+            }
+        }
+    } catch(error) {
+        console.error("点众平台处理创建任务出错:", error);
+    } finally {
+        setTimeout(processCreateTask, 2000);
+    }
+}
+
+// 独立运行任务
+async function processTask() {
+    let result = null;
+    try {
+        let isPauseTask = await redis_help.getKeyValue("isPauseTask");
+        if(isPauseTask == "true") {
+            return;
+        }
+
+        let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+        FilterConfig = JSON.parse(FilterConfig);
+        
+        // 获取点众平台的待处理数据
+        result = await filter_data_controllers.getFilterDataByStatus({ 
+            status: 0,
+            tg_platform_id: 4  // 点众平台ID
+        });
+
+        if(result.success) {
+            let isInsertTask = false;
+            // 判断是否存在这本书
+            let dz_book_result = await video_product_controllers.getProductData({ book_id: result.data.book_id });
+            if(dz_book_result.success) {
+                result.data.words = dz_book_result.data.words;
+                result.data.genre = dz_book_result.data.genre;
+                result.data.book_id = dz_book_result.data.product_id;
+                result.data.book_name = dz_book_result.data.product_name;
+            } else {
+                isInsertTask = true;
+                task_queue.push({result: result});
+            }
+
+            // 更新过滤数据状态
+            await DZ_FACTORY.update_filter_data(FilterConfig, result.data);
+        }
+    } catch(error) {
+        console.error("点众平台处理任务出错:", error);
+        if(result && result.data) {
+            await filter_data_controllers.updateFilterData(
+                { id: result.data.id },
+                { status: 2 }
+            );
+        }
+    } finally {
+        // 继续下一个任务
+        setTimeout(processTask, 500);
+    }
+}
+
+// 启动任务
+if(require.main === module) {
+    redis_help.connect((results) => {
+        if(results) {
+            console.log("点众平台任务启动");
+            processTask();
+            processCreateTask();
+        }
+    });
+}
+
+module.exports = DZ_FACTORY;

+ 266 - 0
2_PRODUCT_FACTORY/fq_factory.js

@@ -0,0 +1,266 @@
+const HttpClient = require('../src/HttpClient');
+const helper = require('../src/helper');
+const tools = require('../tools');
+const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
+const get_fq_book_tab_controllers = require('../src/data_manager/Controllers/get_fq_book_tab_controllers');
+const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
+const redis_help = require('../src/use_redis');
+const axios = require('axios');
+const config = require('../etc/config.json');
+
+const task_queue = [];
+const FQ_FACTORY = {};
+
+FQ_FACTORY.getFqGenre = function(genre) {
+    if(genre=="0") return 1;
+    if(genre=="8") return 3;
+    if(genre=="202") return 202;
+    return 999;
+}
+
+FQ_FACTORY.processBook = async function(data) {
+    let client = new HttpClient();
+    let sid_tt = await tools.getFqSidtt();
+    let response = await client.proxyRequest(helper.getFqRequestOpt(data.book_id, sid_tt));
+    let obj = response['data'];
+    let book_name = obj['novel_data'].book_name;
+    let book_id = obj['novel_data'].book_id;
+    let genre = FQ_FACTORY.getFqGenre(obj['novel_data'].genre);
+    let words = obj['novel_data'].word_number;
+    
+    let fq_book_data = {
+        book_name: book_name,
+        book_id: book_id,
+        genre: genre,
+        words: words,
+        info: JSON.stringify(obj['novel_data'])
+    };
+    
+    let fq_book = {
+        key: data.book_id,
+        tg_platform_id: data.tg_platform_id
+    };
+    
+    await FQ_FACTORY.add_fq_book(fq_book, fq_book_data);
+    
+    return {
+        words: words,
+        genre: fq_book_data.genre,
+        book_id: fq_book_data.book_id,
+        book_name: fq_book_data.book_name,
+        tg_platform_id: data.tg_platform_id
+    };
+}
+
+FQ_FACTORY.add_fq_book = async function(data, response) {
+    let tab = {
+        book_key: data.key,
+        book_id: response.book_id,
+        info: response.info
+    };
+    
+    if(tab.book_id === undefined) {
+        throw "tab.book_id==undefined";
+    }
+    
+    return await get_fq_book_tab_controllers.createData(tab);
+}
+
+FQ_FACTORY.update_filter_data = async function(FilterConfig, data) {
+    let isGenre = FQ_FACTORY.getFqGenre(data.genre) !== 999;
+    if(isGenre) {
+        try {
+            await FQ_FACTORY.video_product_material(data);
+        } catch(e) {
+            console.log("video_product_material error:", e);
+        }
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 1,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre,
+                words: data.words
+            }
+        );
+    } else {
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 2,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre
+            }
+        );
+    }
+}
+
+FQ_FACTORY.insert_product = async function(data) {
+    return await video_product_controllers.createProductData({
+        book_platform: data.tg_platform_id,
+        product_name: data.book_name,
+        genre: data.genre,
+        product_id: data.book_id,
+        words: data.words
+    });
+}
+
+FQ_FACTORY.video_product_material = async function(data) {
+    let url = config.isDebug ? config.debug_supdate_config.host : config.release_supdate_config.host;
+    url = url + '/sapi/video_product_material/supdate';
+    const formData = new FormData();
+    formData.append('data', JSON.stringify({
+        dy_id: data.video_id,
+        dy_url: data.video_link,
+        product_id: data.book_id,
+        product_name: data.book_name,
+        d_z_number: data.like_num,
+        collect_number: data.kepp_num,
+        comment_number: data.comment_num,
+        forward_number: data.shared_num,
+        book_platform: data.tg_platform_id,
+        title: data.title,
+        yun_fabu_time: data.publish_time
+    }));
+    
+    return await axios.post(url, formData, {
+        headers: {
+            'Content-Type': 'multipart/form-data'
+        }
+    })
+    .then(response => {
+        if(response.data.code === 10000) {
+            console.log("插入任务表成功:", response.data);
+        } else {
+            console.log("插入任务表失败:", formData);
+        }
+    })
+    .catch(error => {
+        console.error("插入任务表失败:", error, formData);
+    });
+}
+
+// 处理任务队列
+async function processCreateTask() {
+    let result = null;
+    try {
+        if(task_queue.length > 0) {
+            let task_queue_item = task_queue.pop();
+            result = task_queue_item.result;
+            
+            let client = new HttpClient();
+            let sid_tt = await tools.getFqSidtt();
+            let response = await client.proxyRequest(helper.getFqRequestOpt(result.data.book_id, sid_tt));
+            let obj = response['data'];
+            let book_name = obj['novel_data'].book_name;
+            let book_id = obj['novel_data'].book_id;
+            let genre = FQ_FACTORY.getFqGenre(obj['novel_data'].genre);
+            let words = obj['novel_data'].word_number;
+            
+            let fq_book_data = {
+                book_name: book_name,
+                book_id: book_id,
+                genre: genre,
+                words: words,
+                info: JSON.stringify(obj['novel_data'])
+            };
+            
+            let fq_book = {
+                key: result.data.book_id,
+                tg_platform_id: result.data.tg_platform_id
+            };
+            
+            await FQ_FACTORY.add_fq_book(fq_book, fq_book_data);
+            
+            let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+            FilterConfig = JSON.parse(FilterConfig);
+            
+            if(FQ_FACTORY.getFqGenre(genre) !== 999) {
+                await FQ_FACTORY.insert_product({
+                    book_platform: result.data.tg_platform_id,
+                    product_name: book_name,
+                    genre: genre,
+                    product_id: book_id,
+                    words: words
+                });
+            }
+        }
+    } catch(error) {
+        console.error("番茄平台处理创建任务出错:", error);
+    } finally {
+        setTimeout(processCreateTask, 2000);
+    }
+}
+
+// 独立运行任务
+async function processTask() {
+    let result = null;
+    try {
+        let isPauseTask = await redis_help.getKeyValue("isPauseTask");
+        if(isPauseTask == "true") {
+            return;
+        }
+
+        let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+        FilterConfig = JSON.parse(FilterConfig);
+        
+        // 获取番茄平台的待处理数据
+        result = await filter_data_controllers.getFilterDataByStatus({ 
+            status: 0,
+            tg_platform_id: 2  // 番茄平台ID
+        });
+
+        if(result.success) {
+            let isInsertTask = false;
+            // 获取番茄书库的书
+            let fq_book_result = await get_fq_book_tab_controllers.getData({ book_id: result.data.book_id });
+            if(fq_book_result.success) {
+                result.data.genre = fq_book_result.data.genre;
+                result.data.book_id = fq_book_result.data.book_id;
+                result.data.book_name = fq_book_result.data.info.book_name;
+                result.data.words = fq_book_result.data.info.word_number;
+
+                // 获取商品库的商品
+                let product_result = await video_product_controllers.getProductData({ book_id: fq_book_result.data.book_id });
+                if(!product_result.success) {
+                    // 如果商品库没有这个商品
+                    if(FQ_FACTORY.getFqGenre(result.data.genre) !== 999) {
+                        await FQ_FACTORY.insert_product(result.data);
+                    }
+                }
+            } else {
+                isInsertTask = true;
+                task_queue.push({result: result});
+            }
+
+            // 更新过滤数据状态
+            await FQ_FACTORY.update_filter_data(FilterConfig, result.data);
+        }
+    } catch(error) {
+        console.error("番茄平台处理任务出错:", error);
+        if(result && result.data) {
+            await filter_data_controllers.updateFilterData(
+                { id: result.data.id },
+                { status: 2 }
+            );
+        }
+    } finally {
+        // 继续下一个任务
+        setTimeout(processTask, 500);
+    }
+}
+
+// 启动任务
+if(require.main === module) {
+    redis_help.connect((results) => {
+        if(results) {
+            console.log("番茄平台任务启动");
+            processTask();
+            processCreateTask();
+        }
+    });
+}
+
+module.exports = FQ_FACTORY; 

+ 181 - 0
2_PRODUCT_FACTORY/hy_factory.js

@@ -0,0 +1,181 @@
+const collect_hy_book = require('./collect_hy_book');
+const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
+const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
+const redis_help = require('../src/use_redis');
+const axios = require('axios');
+const config = require('../etc/config.json');
+
+const task_queue = [];
+const HY_FACTORY = {};
+
+HY_FACTORY.processBook = async function(data) {
+    let hy_book_data = await collect_hy_book.runTask(data);
+    return {
+        words: hy_book_data.words,
+        genre: hy_book_data.genre,
+        book_id: hy_book_data.book_id,
+        book_name: hy_book_data.book_name,
+        tg_platform_id: data.tg_platform_id
+    };
+}
+
+HY_FACTORY.update_filter_data = async function(FilterConfig, data) {
+    let isGenre = data.genre !== 999;
+    if(isGenre) {
+        try {
+            await HY_FACTORY.video_product_material(data);
+        } catch(e) {
+            console.log("video_product_material error:", e);
+        }
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 1,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre,
+                words: data.words
+            }
+        );
+    } else {
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 2,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre
+            }
+        );
+    }
+}
+
+HY_FACTORY.insert_product = async function(data) {
+    return await video_product_controllers.createProductData({
+        book_platform: data.tg_platform_id,
+        product_name: data.book_name,
+        genre: data.genre,
+        product_id: data.book_id,
+        words: data.words
+    });
+}
+
+HY_FACTORY.video_product_material = async function(data) {
+    let url = config.isDebug ? config.debug_supdate_config.host : config.release_supdate_config.host;
+    url = url + '/sapi/video_product_material/supdate';
+    const formData = new FormData();
+    formData.append('data', JSON.stringify({
+        dy_id: data.video_id,
+        dy_url: data.video_link,
+        product_id: data.book_id,
+        product_name: data.book_name,
+        d_z_number: data.like_num,
+        collect_number: data.kepp_num,
+        comment_number: data.comment_num,
+        forward_number: data.shared_num,
+        book_platform: data.tg_platform_id,
+        title: data.title,
+        yun_fabu_time: data.publish_time
+    }));
+    
+    return await axios.post(url, formData, {
+        headers: {
+            'Content-Type': 'multipart/form-data'
+        }
+    })
+    .then(response => {
+        if(response.data.code === 10000) {
+            console.log("插入任务表成功:", response.data);
+        } else {
+            console.log("插入任务表失败:", formData);
+        }
+    })
+    .catch(error => {
+        console.error("插入任务表失败:", error, formData);
+    });
+}
+
+// 处理任务队列
+async function processCreateTask() {
+    let result = null;
+    try {
+        if(task_queue.length > 0) {
+            let task_queue_item = task_queue.pop();
+            result = task_queue_item.result;
+            
+            let processedData = await HY_FACTORY.processBook(result.data);
+            let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+            FilterConfig = JSON.parse(FilterConfig);
+            
+            if(processedData.genre !== 999) {
+                await HY_FACTORY.insert_product(processedData);
+            }
+        }
+    } catch(error) {
+        console.error("火言平台处理创建任务出错:", error);
+    } finally {
+        setTimeout(processCreateTask, 2000);
+    }
+}
+
+// 独立运行任务
+async function processTask() {
+    let result = null;
+    try {
+        let isPauseTask = await redis_help.getKeyValue("isPauseTask");
+        if(isPauseTask == "true") {
+            return;
+        }
+
+        let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+        FilterConfig = JSON.parse(FilterConfig);
+        
+        // 获取火言平台的待处理数据
+        result = await filter_data_controllers.getFilterDataByStatus({ 
+            status: 0,
+            tg_platform_id: 1  // 火言平台ID
+        });
+
+        if(result.success) {
+            let isInsertTask = false;
+            // 判断是否存在这本书
+            let hy_book_result = await video_product_controllers.getProductData({ book_id: result.data.book_id });
+            if(hy_book_result.success) {
+                result.data.words = hy_book_result.data.words;
+                result.data.genre = hy_book_result.data.genre;
+                result.data.book_id = hy_book_result.data.product_id;
+                result.data.book_name = hy_book_result.data.product_name;
+            } else {
+                isInsertTask = true;
+                task_queue.push({result: result});
+            }
+
+            // 更新过滤数据状态
+            await HY_FACTORY.update_filter_data(FilterConfig, result.data);
+        }
+    } catch(error) {
+        console.error("火言平台处理任务出错:", error);
+        if(result && result.data) {
+            await filter_data_controllers.updateFilterData(
+                { id: result.data.id },
+                { status: 2 }
+            );
+        }
+    } finally {
+        // 继续下一个任务
+        setTimeout(processTask, 500);
+    }
+}
+
+// 启动任务
+if(require.main === module) {
+    redis_help.connect((results) => {
+        if(results) {
+            console.log("火言平台任务启动");
+            processTask();
+            processCreateTask();
+        }
+    });
+}
+
+module.exports = HY_FACTORY; 

+ 188 - 0
2_PRODUCT_FACTORY/qm_factory.js

@@ -0,0 +1,188 @@
+const qm_search_book = require('../src/api/qm/qm_search_book');
+const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
+const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
+const redis_help = require('../src/use_redis');
+const axios = require('axios');
+const config = require('../etc/config.json');
+
+const task_queue = [];
+const QM_FACTORY = {};
+
+QM_FACTORY.processBook = async function(data) {
+    let qm_book_data = await qm_search_book.search_id(data.book_id);
+    if(qm_book_data === null) {
+        return {
+            ...data,
+            genre: 999
+        };
+    }
+    
+    return {
+        words: qm_book_data.words,
+        genre: qm_book_data.genre,
+        book_id: qm_book_data.book_id,
+        book_name: qm_book_data.book_name,
+        tg_platform_id: data.tg_platform_id
+    };
+}
+
+QM_FACTORY.update_filter_data = async function(FilterConfig, data) {
+    let isGenre = data.genre !== 999;
+    if(isGenre) {
+        try {
+            await QM_FACTORY.video_product_material(data);
+        } catch(e) {
+            console.log("video_product_material error:", e);
+        }
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 1,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre,
+                words: data.words
+            }
+        );
+    } else {
+        await filter_data_controllers.updateFilterData(
+            { id: data.id },
+            {
+                status: 2,
+                book_id: data.book_id,
+                book_name: data.book_name,
+                genre: data.genre
+            }
+        );
+    }
+}
+
+QM_FACTORY.insert_product = async function(data) {
+    return await video_product_controllers.createProductData({
+        book_platform: data.tg_platform_id,
+        product_name: data.book_name,
+        genre: data.genre,
+        product_id: data.book_id,
+        words: data.words
+    });
+}
+
+QM_FACTORY.video_product_material = async function(data) {
+    let url = config.isDebug ? config.debug_supdate_config.host : config.release_supdate_config.host;
+    url = url + '/sapi/video_product_material/supdate';
+    const formData = new FormData();
+    formData.append('data', JSON.stringify({
+        dy_id: data.video_id,
+        dy_url: data.video_link,
+        product_id: data.book_id,
+        product_name: data.book_name,
+        d_z_number: data.like_num,
+        collect_number: data.kepp_num,
+        comment_number: data.comment_num,
+        forward_number: data.shared_num,
+        book_platform: data.tg_platform_id,
+        title: data.title,
+        yun_fabu_time: data.publish_time
+    }));
+    
+    return await axios.post(url, formData, {
+        headers: {
+            'Content-Type': 'multipart/form-data'
+        }
+    })
+    .then(response => {
+        if(response.data.code === 10000) {
+            console.log("插入任务表成功:", response.data);
+        } else {
+            console.log("插入任务表失败:", formData);
+        }
+    })
+    .catch(error => {
+        console.error("插入任务表失败:", error, formData);
+    });
+}
+
+// 处理任务队列
+async function processCreateTask() {
+    let result = null;
+    try {
+        if(task_queue.length > 0) {
+            let task_queue_item = task_queue.pop();
+            result = task_queue_item.result;
+            
+            let processedData = await QM_FACTORY.processBook(result.data);
+            let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+            FilterConfig = JSON.parse(FilterConfig);
+            
+            if(processedData.genre !== 999) {
+                await QM_FACTORY.insert_product(processedData);
+            }
+        }
+    } catch(error) {
+        console.error("七猫平台处理创建任务出错:", error);
+    } finally {
+        setTimeout(processCreateTask, 2000);
+    }
+}
+
+// 独立运行任务
+async function processTask() {
+    let result = null;
+    try {
+        let isPauseTask = await redis_help.getKeyValue("isPauseTask");
+        if(isPauseTask == "true") {
+            return;
+        }
+
+        let FilterConfig = await redis_help.getKeyValue("FilterConfig");
+        FilterConfig = JSON.parse(FilterConfig);
+        
+        // 获取七猫平台的待处理数据
+        result = await filter_data_controllers.getFilterDataByStatus({ 
+            status: 0,
+            tg_platform_id: 3  // 七猫平台ID
+        });
+
+        if(result.success) {
+            let isInsertTask = false;
+            // 判断是否存在这本书
+            let qm_book_result = await video_product_controllers.getProductData({ book_id: result.data.book_id });
+            if(qm_book_result.success) {
+                result.data.words = qm_book_result.data.words;
+                result.data.genre = qm_book_result.data.genre;
+                result.data.book_id = qm_book_result.data.product_id;
+                result.data.book_name = qm_book_result.data.product_name;
+            } else {
+                isInsertTask = true;
+                task_queue.push({result: result});
+            }
+
+            // 更新过滤数据状态
+            await QM_FACTORY.update_filter_data(FilterConfig, result.data);
+        }
+    } catch(error) {
+        console.error("七猫平台处理任务出错:", error);
+        if(result && result.data) {
+            await filter_data_controllers.updateFilterData(
+                { id: result.data.id },
+                { status: 2 }
+            );
+        }
+    } finally {
+        // 继续下一个任务
+        setTimeout(processTask, 500);
+    }
+}
+
+// 启动任务
+if(require.main === module) {
+    redis_help.connect((results) => {
+        if(results) {
+            console.log("七猫平台任务启动");
+            processTask();
+            processCreateTask();
+        }
+    });
+}
+
+module.exports = QM_FACTORY; 

+ 4 - 0
assistant_snippet_eXu7ONXdWn.txt

@@ -0,0 +1,4 @@
+1|node fq_factory.js  # 处理番茄平台
+2|node hy_factory.js  # 处理火言平台
+3|node qm_factory.js  # 处理七猫平台
+4|node dz_factory.js  # 处理点众平台 

+ 1 - 1
src/PullDataService.js

@@ -62,7 +62,7 @@ class PullDataService {
                     interval_minute = cur_timeRange.interval_minute
                 }
                 // const fiveMinutesAgo = new Date(now - 5 * 60 * 1000); // 5分钟前的时间
-                const fiveMinutesAgo = new Date(now - interval_minute * interval_minute * 1000); // 60分钟前的时间
+                const fiveMinutesAgo = new Date(now - interval_minute * 60 * 1000); // 60分钟前的时间
                 let data = {
                     startTime:fiveMinutesAgo.getTime(),
                     endTime:now.getTime(),