904118851 5 ヶ月 前
コミット
262c9d68f9

+ 4 - 3
0_RECEIVE_FACTORY/RECEIVE_FACTORY.js

@@ -112,7 +112,7 @@ CMD.test_fq_mf_book_sid_tt = async function(book_id,sid_tt){
     }
 
 }
-CMD.get_group_mapping = function(res,type){
+CMD.get_group_mapping = function(res,type,site){
     let get_hy_group_mapping = require('../src/api/hy/get_hy_group_mapping');
     get_hy_group_mapping.get_group_mapping((data)=>{
         res.writeHead(200, {'Content-Type': 'application/json'});
@@ -123,7 +123,7 @@ CMD.get_group_mapping = function(res,type){
             res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
         }
         console.log("get_hy_group_mapping:",data)
-    },type)
+    },type,site)
 }
 CMD.get_hy_rechargeTemplate = function(res){
     let get_hy_recharge_template = require('../src/api/hy/get_hy_recharge_template');
@@ -563,7 +563,8 @@ var server = http.createServer(function(req,res){
                       
                     }else if(jsonData['fun']=="groupMapping"&&jsonData['cmd']=="hy_link"){
                         let type = jsonData['data']['type']
-                        CMD.get_group_mapping(res,type) 
+                        let site = jsonData['data']['site']
+                        CMD.get_group_mapping(res,type,site) 
                     }else if(jsonData['fun']=="rechargeTemplate"&&jsonData['cmd']=="hy_link"){
                         CMD.get_hy_rechargeTemplate(res) 
                     }else if(jsonData['fun']=="get_hy_SiteTemplate"&&jsonData['cmd']=="hy_link"){

+ 4 - 9
2_PRODUCT_FACTORY/qm_factory.js

@@ -9,6 +9,8 @@ const config = require('../etc/config.json');
 const HttpClient = require('../src/HttpClient');
 const helper = require('../src/helper');
 const tools = require('../tools');
+const mysql = require('mysql2/promise');
+const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
 const time_count = 1000;
 const task_queue = []
 
@@ -226,14 +228,7 @@ CMD.update_filter_data = async function(FilterConfig,data) {
 }
 
 
-CMD.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
-    })
-}
+
+
 
 CMD.init()

+ 49 - 1
2_PRODUCT_FACTORY/qm_mf_batch_factory.js

@@ -5,6 +5,8 @@ const video_applet_product_controllers = require('../src/data_manager/Controller
 const other_book_controllers = require('../src/data_manager/Controllers/other_book_controllers');
 const redis_help = require('../src/use_redis');
 const config = require('../etc/config.json');
+const mysql = require('mysql2/promise');
+const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
 const time_count = 1000;
 const task_queue = []
 
@@ -316,13 +318,59 @@ CMD.update_filter_data = async function(FilterConfig,data) {
 
 
 CMD.insert_product = async function(data){
-    return await video_product_controllers.createProductData({
+    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
     })
+
+    //如果七猫库里有对应的免费的书,那么检测是否有此免费的书,如果没有则插入
+    let connection  = null
+    try{
+        connection = await mysql.createConnection({
+            ...dbConfig,
+            multipleStatements: true
+        });
+        const [rows] = await connection.execute(
+            `SELECT * FROM qm_iap_lib WHERE book_id = ${data.book_id} AND is_have_iaa = 1  LIMIT 1`
+        );
+        if(rows.length<=0){
+
+        }else{
+            let qm_iap_book_info = rows[0]
+            let iaa_book_id = await CMD.getQMMFVideoProduct(connection,qm_iap_book_info.iaa_book_id)
+            if(iaa_book_id==null){
+                await CMD.addQMMFVideoProduct(connection,iaa_book_id,iaa_book_id.book_id)
+            }
+        }
+    }catch(e){
+        console.error("insert_product:",e)
+    }finally{
+        if(connection!=null){
+            await connection.end();
+        }
+    }
+   
+}
+
+//插入
+CMD.addQMMFVideoProduct = async function(connection,product_id,product_parent_id){
+    let qm_book_data = await require('../src/api/qm_mf/qm_mf_search_book').search_id(product_id)
+    await connection.execute(
+        `INSERT INTO video_product (product_name,product_id,book_platform,genre,words,words,product_parent_id)  VALUES (${qm_book_data.book_name},${product_id},${config.platform_qmmf},${qm_book_data.genre},${qm_book_data.words},${product_parent_id})`
+    );
+}
+
+CMD.getQMMFVideoProduct = async function(connection,product_id){
+    const [rows] = await connection.execute(
+        `SELECT * FROM video_product WHERE product_id = ${product_id} AND book_platform = ${config.platform_qmmf}  LIMIT 1`
+    );
+    if(rows.length<=0){
+        return null
+    }
+    return rows[0]
 }
 
 CMD.init()

+ 4 - 4
logs/combined.log

@@ -1,4 +1,4 @@
-2025-03-20T17:42:29: 
-2025-03-20T17:42:29: > heiyan@1.0.0 start
-2025-03-20T17:42:29: > node tg_factory_main.js
-2025-03-20T17:42:29: 
+2025-03-24T14:56:12: 
+2025-03-24T14:56:12: > heiyan@1.0.0 start
+2025-03-24T14:56:12: > node tg_factory_main.js
+2025-03-24T14:56:12: 

+ 4 - 4
logs/out.log

@@ -1,4 +1,4 @@
-2025-03-20T17:42:29: 
-2025-03-20T17:42:29: > heiyan@1.0.0 start
-2025-03-20T17:42:29: > node tg_factory_main.js
-2025-03-20T17:42:29: 
+2025-03-24T14:56:12: 
+2025-03-24T14:56:12: > heiyan@1.0.0 start
+2025-03-24T14:56:12: > node tg_factory_main.js
+2025-03-24T14:56:12: 

+ 5 - 4
src/api/hy/create_heiyan_book_link.js

@@ -187,9 +187,10 @@ const DzSpider = class {
       console.error('Error adPassBackTemplate:', error);
     }
   }
-  async groupMapping(call_back,type) {
+  //site=5(抖小)  site=7(微小)
+  async groupMapping(call_back,type,site) {
     try {
-      const response = await this.session.get(`/manage/distribution/groupMapping?site=5&type=${type}`, {
+      const response = await this.session.get(`/manage/distribution/groupMapping?site=${site}&type=${type}`, {
         headers: {
           'Authorization': `Bearer ${await tools.getHyToken()}`
         }
@@ -287,9 +288,9 @@ function get_paid_point(bookId,call_back){
   spider.getChapterList(bookId,call_back)
 }
 
-function get_groupMapping(call_back,type){
+function get_groupMapping(call_back,type,site){
   const spider = new DzSpider();
-  spider.groupMapping(call_back,type)
+  spider.groupMapping(call_back,type,site)
 }
 
 function get_SiteMapping(call_back){

+ 2 - 2
src/api/hy/get_hy_group_mapping.js

@@ -1,7 +1,7 @@
 const CMD = {}
 // 获取小程序组
-CMD.get_group_mapping = function(call_back,type){
+CMD.get_group_mapping = function(call_back,type,site){
     let create_heiyan_book_link = require('./create_heiyan_book_link')
-    create_heiyan_book_link.get_groupMapping(call_back,type)
+    create_heiyan_book_link.get_groupMapping(call_back,type,site)
 }
 module.exports = CMD;

BIN
src/api/hy/qr.gif


BIN
src/api/hy/qr_resized.gif


+ 128 - 0
task_script/get_qm_mf_for_iap.js

@@ -0,0 +1,128 @@
+const config = require("../etc/config.json");
+const helper = require("../src/helper");
+const HttpClient = require("../src/HttpClient");
+const redis_help = require('../src/use_redis');
+const mysql = require('mysql2/promise');
+const tools = require("../tools");
+const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
+const dbConfig = config.isDebug?config.debug_mysql:config.release_mysql
+const CMD = {}
+let page_index = 1;
+
+async function processTask(){
+    let right_status = true
+    let connection  = null
+    try{
+        connection = await mysql.createConnection({
+            ...dbConfig,
+            multipleStatements: true
+        });
+        let postData =  {
+            "cmd":"video_product",
+            "fun":"search_book_data",
+            "data":{
+                "product_id":"",
+                "product_name":"",
+                "tg_platform_id":config.platform_qimao,
+                "is_auto":"",
+                "page_size":500,
+                "page_number":page_index,
+                "oce_material_id":"",
+                "genre":"",
+                "is_store":"",
+                "alias_name":"",
+                "stat_cost":"",
+                "min_book_word":"",
+                "max_book_word":""
+            }
+        };
+    
+        console.log("发送请求数据:", postData);
+
+        let client = tools.getOneNewClinet()
+        let response = await client.post('http://127.0.0.1:9100/tg/back/api', postData, {
+            headers: {
+                'Content-Type': 'application/json',
+                'X-Request-Type': 'API', // 标记 API 请求
+            }
+        });
+
+        response = response.data
+        // 检查响应数据结构
+        if (!response || !response.data || !Array.isArray(response.data)) {
+            console.log("响应数据无效或格式错误");
+            throw 0;
+        }
+
+        // 检查是否有数据
+        if (response.data.length <= 0) {
+            console.log("没有更多数据");
+            throw 0;
+        }
+
+        let info = response.data
+        let total = info.total;
+        let sync_main_task_item = info.data
+        let product_list = sync_main_task_item.data;
+        for (let index = 0; index < product_list.length; index++) {
+            const element = product_list[index];
+            const [rows] = await connection.execute(
+                `SELECT * FROM qm_iap_lib WHERE book_id = ${element.product_id} AND is_have_iaa = 1  LIMIT 1`
+            );
+            if(rows.length<=0){
+
+            }else{
+                let qm_iap_book_info = rows[0]
+                let iaa_book_id = await CMD.getQMMFVideoProduct(connection,qm_iap_book_info.iaa_book_id)
+                if(iaa_book_id==null){
+                    await CMD.addQMMFVideoProduct(connection,iaa_book_id,iaa_book_id.book_id)
+                }
+            }
+        }
+    }catch(e){
+        if(e==0){
+            right_status = false
+        }
+        console.error("processTask error:",e)
+    } finally{
+        if(right_status){
+            page_index++;
+            global.setTimeout(processTask, 1000);
+        }
+
+    }
+
+}
+
+//获取
+CMD.getQMMFVideoProduct = async function(connection,product_id){
+    const [rows] = await connection.execute(
+        `SELECT * FROM video_product WHERE product_id = ${product_id} AND book_platform = ${config.platform_qmmf}  LIMIT 1`
+    );
+
+    if(rows.length<=0){
+        return null
+    }
+
+    return rows[0]
+}
+
+//插入
+CMD.addQMMFVideoProduct = async function(connection,product_id,product_parent_id){
+    let qm_book_data = await require('../src/api/qm_mf/qm_mf_search_book').search_id(product_id)
+    await connection.execute(
+        `INSERT INTO video_product (product_name,product_id,book_platform,genre,words,words,product_parent_id)  VALUES (${qm_book_data.book_name},${product_id},${config.platform_qmmf},${qm_book_data.genre},${qm_book_data.words},${product_parent_id})`
+    );
+
+}
+
+CMD.init = async function(){
+    redis_help.connect((results)=>{
+        if(results){
+            processTask();
+        }
+    })
+
+}
+
+CMD.init()