904118851 7 months ago
parent
commit
4a1f45654a

+ 19 - 14
0_RECEIVE_FACTORY/RECEIVE_FACTORY.js

@@ -169,8 +169,20 @@ CMD.get_hy_passBackTemplate = function(res){
     })
 }
 
-CMD.get_fq_rechargeTemplate = function(res){
-    var distributorId = config.fanqie_config.distributorId;
+CMD.get_fq_callback_template = async function(res,distributor_id) {
+    let data = await require('../src/api/fq/get_fq_call_back_template').get_callback_template(distributor_id)
+    res.writeHead(200, {'Content-Type': 'application/json'});
+    if(data==null){
+        res.end(JSON.stringify({ message:"成功!",data:{},code:10000}));
+    }else{
+        console.log('get_fq_callback_template:', data);
+        res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
+    }
+}
+
+CMD.get_fq_rechargeTemplate = function(res,distributor_id){
+    // var distributorId = config.fanqie_config.distributorId;
+    var distributorId = distributor_id
     var secretKey = config.fanqie_config.secretKey;
     const postData = {
         distributor_id: distributorId,
@@ -248,16 +260,7 @@ CMD.get_qm_recharge_template = async function(res,category,mini_program_platform
     res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
 }
 
-CMD.get_fq_callback_template = async function(res) {
-    let data = await require('../src/api/fq/get_fq_call_back_template').get_callback_template()
-    res.writeHead(200, {'Content-Type': 'application/json'});
-    if(data==null){
-        res.end(JSON.stringify({ message:"成功!",data:{},code:10000}));
-    }else{
-        console.log('get_fq_callback_template:', data);
-        res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
-    }
-}
+
 
 var server = http.createServer(function(req,res){
 
@@ -320,7 +323,8 @@ var server = http.createServer(function(req,res){
                     }else if(jsonData['fun']=="passBackTemplate"&&jsonData['cmd']=="hy_link"){
                         CMD.get_hy_passBackTemplate(res) 
                     }else if(jsonData['fun']=="rechargeTemplate"&&jsonData['cmd']=="fq_link"){
-                        CMD.get_fq_rechargeTemplate(res) 
+                        let distributor_id = jsonData['data']['distributor_id']
+                        CMD.get_fq_rechargeTemplate(res,distributor_id) 
                     }else if(jsonData['fun']=="get_pull_token"&&jsonData['cmd']=="pull_data_config"){
                         CMD.get_pull_token(res) 
                     }else if(jsonData['fun']=="get_dz_book"&&jsonData['cmd']=="dz_link"){
@@ -340,7 +344,8 @@ var server = http.createServer(function(req,res){
                         let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
                         CMD.get_qm_callback_template(res,mini_program_platform_id) 
                     }else if(jsonData['fun']=="get_fq_callback_template"&&jsonData['cmd']=="fq_link"){
-                        CMD.get_fq_callback_template(res) 
+                        let distributor_id = jsonData['data']['distributor_id']
+                        CMD.get_fq_callback_template(res,distributor_id) 
                     } else{
                         res.writeHead(200, {'Content-Type': 'application/json'});
                         res.end(JSON.stringify({ message: 'fun 错误',code:100}));

+ 152 - 10
1_FILTER_FACTORY/FILTER_FACTORY.js

@@ -4,6 +4,7 @@ const redis_help = require('../src/use_redis');
 const origin_data_controllers = require('../src/data_manager/Controllers/origin_data_controllers');
 const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
 const helper = require('../src/helper');
+const config = require('../etc/config.json')
 async function createFilterData(result,FilterConfig) {
     
     let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
@@ -12,6 +13,7 @@ async function createFilterData(result,FilterConfig) {
 
     let filter_data = filter_and_insert(result.data,FilterConfig,PlatformConfig)
     if(filter_data!=null){
+        console.log("filter_data:",filter_data)
         filter_data.status = 0; //设置筛选的这个状态未定义
         let res =  await filter_data_controllers.createFilterData({
             video_id:filter_data.video_id,
@@ -56,6 +58,7 @@ async function processTask(){
             for (let index = 0; index < origin_data_list.length; index++) {
                 const origin_data_item = origin_data_list[index];
                 videoDataList[origin_data_item.video_id] = origin_data_item
+                console.log("origin_data_item:",origin_data_item)
                 if(helper.checkChannel(origin_data_item.guajian_link,"https://api.amemv.com/insights/lynx_web/anchor/preview?")){
                     wxIds.push(origin_data_item.id)
                 }else{
@@ -81,11 +84,17 @@ async function processTask(){
                 }
                 console.log("nonExistentIds:",nonExistentIds)
             }
-            let update_result =  await origin_data_controllers.updateOriginDataByIds({ids:Ids},{status:1})
-            if(update_result.success){
-                console.log(update_result.message)
+            let update_result
+            if(Ids.length>0){
+                update_result =  await origin_data_controllers.updateOriginDataByIds({ids:Ids},{status:1})
+                if(update_result.success){
+                    console.log(update_result.message)
+                }
+            }
+            if(wxIds.length>0){
+                update_result =  await origin_data_controllers.updateOriginDataByIds({ids:wxIds},{status:3,is_wx_guajian:1})
             }
-            update_result =  await origin_data_controllers.updateOriginDataByIds({ids:wxIds},{status:3,is_wx_guajian:1})
+            
         }
     }catch(e){
         console.log("筛选数据错误:",e)
@@ -100,13 +109,80 @@ CMD.init = function(){
     })
     processTask()
 }
+function getBookId(url) {
+    try {
+        if (!url.includes('bookId=')) {
+            return null; // 或者返回其他你想要的默认值
+        }
+        const bookId = url.split('bookId=')[1].split('&')[0];
+        return bookId;
+    } catch (error) {
+        return null; // 出现任何错误都返回null
+    }
+}
+
+function getKey(url) {
+    try {
+        if (!url.includes('key=')) {
+            return null; // 或者返回其他你想要的默认值
+        }
+        const bookId = url.split('key=')[1].split('&')[0];
+        return bookId;
+    } catch (error) {
+        return null; // 出现任何错误都返回null
+    }
+}
 
+function getName(url) {
+    try {
+        if (!url.includes('name=')) {
+            return null; // 或者返回其他你想要的默认值
+        }
+        const bookId = url.split('name=')[1].split('&')[0];
+        return bookId;
+    } catch (error) {
+        return null; // 出现任何错误都返回null
+    }
+}
+
+function getId(url) {
+    try {
+        if (!url.includes('id=')) {
+            return null; // 或者返回其他你想要的默认值
+        }
+        const bookId = url.split('id=')[1].split('&')[0];
+        return bookId;
+    } catch (error) {
+        return null; // 出现任何错误都返回null
+    }
+}
 
 function filter_and_insert(origin_data,tg_config,PlatformConfig){
     if(origin_data.guajian_link.length<=0){
         return null
     }
 
+    if(helper.checkChannel(origin_data.guajian_link,"wx_gua_jian=1")){
+        PlatformConfig = getWxPlatformConfig(PlatformConfig)
+        let  parent_platform_id = getWxChannel(tg_config.platform_select,origin_data.guajian_link,PlatformConfig)
+        if(parent_platform_id==null){
+            return null
+        }
+        let params = {}
+        let url = origin_data.guajian_link
+        params['bookId'] =  getBookId(url);
+        params['name'] =  getName(url);
+
+        if(parent_platform_id==config.platform_fanqie){
+            params['bookId'] = getKey(url);
+        }else if(parent_platform_id==config.platform_qimao){
+            params['bookId'] = getId(url);
+        }
+        let obj =  {video_id:origin_data.video_id,book_id:params['bookId'],source:params['name'],video_link:origin_data.video_link,
+            like_num:origin_data.like_num,kepp_num:origin_data.kepp_num ,shared_num:origin_data.shared_num,comment_num:origin_data.comment_num,tg_platform_id:parent_platform_id}
+        // console.log("obj:",obj)
+        return obj
+    }
     let obj = parsePromotion(origin_data.guajian_link,tg_config.source_filter,tg_config.platform_select,PlatformConfig)
     // console.log("obj::",obj)
     if(obj==null){
@@ -138,24 +214,82 @@ function filter_and_insert(origin_data,tg_config,PlatformConfig){
         tg_platform_id = 1
     }else if(obj.channel==3){ //"七猫"
         tg_platform_id = 3
+        if(obj.id==undefined||obj.id==null){
+            return null
+        }
         obj.book_id = obj.id
     }else if(obj.channel==4){ //"点众"
         tg_platform_id = 4
         obj.book_id = obj.book_id
+    }else if(obj.channel==5){ //"书旗-"
+        tg_platform_id = 5
+        obj.book_id = obj.book_id
+    }else if(obj.channel==6){ //"阅文"
+        tg_platform_id = 6
+        obj.book_id = obj.cbid
+    }else if(obj.channel==7){ //"番茄免費"
+        tg_platform_id = 7
+        obj.book_id = obj.code
     }
     // console.log("评论数正确")
     return {video_id:origin_data.video_id,book_id:obj.book_id,channel:obj.channel,source:obj.source,key:obj.key,video_link:origin_data.video_link,
         like_num:origin_data.like_num,kepp_num:origin_data.kepp_num ,shared_num:origin_data.shared_num,comment_num:origin_data.comment_num,tg_platform_id:tg_platform_id}
 }
 
+function getWxPlatformConfig(PlatformConfig){
+    let list = []
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.mini_program_platform_id==2){
+            list.push(element)
+        }
+    }
+    return list
+}
+
+function getDyPlatformConfig(PlatformConfig){
+    let list = []
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.mini_program_platform_id==1){
+            list.push(element)
+        }
+    }
+    return list
+}
+
+function getIsOpen(platform_select,tg_platform_id){
+    for (let index = 0; index < platform_select.length; index++) {
+        const id = platform_select[index];
+        if(tg_platform_id==id){
+            return true
+        }
+    }
+    return false
+}
+
+function getWxChannel(platform_select,promotion,PlatformConfig){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const platform_info = PlatformConfig[index];
+        let filter_guajian_logic_list = JSON.parse(platform_info.filter_guajian_logic_list)
+        if(getIsOpen(platform_select,platform_info.tg_platform_id)){
+            if(helper.checkChannelListKey(promotion,filter_guajian_logic_list)){
+                return platform_info.parent_platform_id
+            }
+        }
+    }
+    return null
+}
+
+
 function getChannel(start_page,platform_select,promotion,PlatformConfig){
     let isOpenHeiYan = false
     let isOpenFanQie = false
     let isOpenQiMao = false
     let isOpenDianZhong = false
     let kv = new Map()
-
-
+    PlatformConfig = getDyPlatformConfig(PlatformConfig)
+    console.log("PlatformConfig:",PlatformConfig)
     for (let index = 0; index < PlatformConfig.length; index++) {
         const platform_info = PlatformConfig[index];
         kv.set(platform_info.tg_platform_id,false)
@@ -181,12 +315,18 @@ function getChannel(start_page,platform_select,promotion,PlatformConfig){
         }
     }
 
+
     // console.log("PlatformConfig:",PlatformConfig,kv)
     for (let index = 0; index < PlatformConfig.length; index++) {
         const platform_info = PlatformConfig[index];
-        if(helper.checkChannel(promotion,platform_info.filter_guajian_logic)&&kv.get(platform_info.tg_platform_id)){
-            return platform_info.tg_platform_id
+        let filter_guajian_logic_list = JSON.parse(platform_info.filter_guajian_logic_list)
+        if(kv.get(platform_info.tg_platform_id)==true){
+            console.log("filter_guajian_logic_list:",promotion,filter_guajian_logic_list)
+            if(helper.checkChannelListKey(promotion,filter_guajian_logic_list)){
+                return platform_info.tg_platform_id
+            }
         }
+  
     }
     return null
     // console.log("start_page:",isOpenHeiYan,isOpenFanQie,start_page)
@@ -219,13 +359,15 @@ function parsePromotion(promotion,source_list,platform_select,PlatformConfig){
                 }
             }
             let channel = getChannel(params['start_page'],platform_select,promotion,PlatformConfig)
-            // console.log("source_list:",source_list,platform_select,channel,params['start_page'])
+            console.log("source_list:",source_list,platform_select,channel,params['start_page'])
             if(channel!=null){
+                console.log("channel:",channel,promotion)
                 let item_info = {}
                 item_info['book_id'] = params['bookId'];
                 item_info['channel'] = channel;
                 item_info['id'] = params['id']
-
+                item_info['cbid'] = params['cbid']
+                item_info['code'] = params['code']
                 const str = params['x-signature']
                 const regex = /"name":"([^"]+)"/;
                 const match = str.match(regex);

+ 82 - 46
2_PRODUCT_FACTORY/dz_batch_factory.js

@@ -188,6 +188,23 @@ CMD.isGenre = function(FilterConfig,genre){
 }
 
 
+CMD.getPlatformInfo = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+}
+CMD.getSharedPlatform = function(PlatformShared,platform_shared_id){
+    for (let index = 0; index < PlatformShared.length; index++) {
+        const element = PlatformShared[index];
+        if(element.id==platform_shared_id){
+            return JSON.parse(element.info)
+        }
+    }
+}
+
 CMD.update_filter_data = async function(FilterConfig,data) {
     let isGenre = CMD.isGenre(FilterConfig,data.genre)
     if(isGenre){
@@ -197,66 +214,85 @@ CMD.update_filter_data = async function(FilterConfig,data) {
 
         AppConfig = JSON.parse(AppConfig)
 
-        let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,data.tg_platform_id)
 
-        for (let j = 0; j < AppInfoList.length; j++) {
-            const AppInfo = AppInfoList[j];
-            data.app_id = AppInfo.app_id
+        let PlatformShared = await redis_help.getKeyValue("PlatformShared")
 
-            let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
+        PlatformShared = JSON.parse(PlatformShared)
+        
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
 
-            PlatformInfo = JSON.parse(PlatformInfo)
+        PlatformConfig = JSON.parse(PlatformConfig)
 
-            if(PlatformInfo==null){
-                return console.error("平台配置错误:",data)
-            }
+        let PlatformInfo = CMD.getPlatformInfo(PlatformConfig,config.platform_dianzhong)
 
-            let MainConfig = await redis_help.getKeyValue("MainConfig")
+        console.log("PlatformInfo:",PlatformInfo)
 
-            MainConfig = JSON.parse(MainConfig)
+        let all_platform_list = CMD.getSharedPlatform(PlatformShared,PlatformInfo.platform_shared_id)
 
-            let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+        for (let i = 0; i < all_platform_list.length; i++) {
 
-            if(list.length<0){
-                return console.error("获取主体错误:",data)
-            }
+            const tg_platform_id = all_platform_list[i];
 
-            let black_books = await redis_help.getKeyValue("all_black_books")
-            
-            if(black_books!=null){
-                black_books = JSON.parse(black_books)
-            }
-       
-            for (let index = 0; index < list.length; index++) {
-                const main_info = list[index];
-                data.main_id = main_info.id
-                data.main_name = main_info.main_name
-                if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
-                    console.error("主体配置推广链接错误:",main_info)
-                }else{
-                    if(!CMD.isBlackBook(black_books,data.book_id)){
-                        //符合标准进行创建表
-                        const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
-                        if(!result.success){
-                            //没有找到 可以创建
-                            await video_applet_product_controllers.createAppletProductData({
-                                book_platform:data.tg_platform_id,
-                                product_name:data.book_name,
-                                product_id:data.book_id,
-                                dy_small_program_start:"",
-                                dy_small_program_start_data:"",
-                                dy_small_applet_app_id:data.app_id,
-                                status:0,
-                                main_id:data.main_id,
-                                promotion_id:"",
-                                wait_status:0,
-                            })
+            let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,tg_platform_id)
+
+            for (let j = 0; j < AppInfoList.length; j++) {
+                const AppInfo = AppInfoList[j];
+                data.app_id = AppInfo.app_id
+
+                let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
+
+                PlatformInfo = JSON.parse(PlatformInfo)
+
+                if(PlatformInfo==null){
+                    return console.error("平台配置错误:",data)
+                }
+
+                let MainConfig = await redis_help.getKeyValue("MainConfig")
+
+                MainConfig = JSON.parse(MainConfig)
+
+                let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+
+                if(list.length<0){
+                    return console.error("获取主体错误:",data)
+                }
+
+                let black_books = await redis_help.getKeyValue("all_black_books")
+                
+                if(black_books!=null){
+                    black_books = JSON.parse(black_books)
+                }
+        
+                for (let index = 0; index < list.length; index++) {
+                    const main_info = list[index];
+                    data.main_id = main_info.id
+                    data.main_name = main_info.main_name
+                    if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
+                        console.error("主体配置推广链接错误:",main_info)
+                    }else{
+                        if(!CMD.isBlackBook(black_books,data.book_id)){
+                            //符合标准进行创建表
+                            const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
+                            if(!result.success){
+                                //没有找到 可以创建
+                                await video_applet_product_controllers.createAppletProductData({
+                                    book_platform:data.tg_platform_id,
+                                    product_name:data.book_name,
+                                    product_id:data.book_id,
+                                    dy_small_program_start:"",
+                                    dy_small_program_start_data:"",
+                                    dy_small_applet_app_id:data.app_id,
+                                    status:0,
+                                    main_id:data.main_id,
+                                    promotion_id:"",
+                                    wait_status:0,
+                                })
+                            }
                         }
                     }
                 }
             }
         }
-        
     }else{
         await other_book_controllers.createData({product_id:data.book_id,product_name:data.book_name,tg_platform_id:data.tg_platform_id})
         await filter_data_controllers.updateFilterData({id:data.id},{status:2,book_id:data.book_id,book_name:data.book_name,genre:data.genre,material_sync_status:2})

+ 87 - 47
2_PRODUCT_FACTORY/fq_factory.js

@@ -35,7 +35,7 @@ async function processTask(){
                     result.data.genre = fq_book_result.data.info.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
+                    result.data.words = fq_book_result.data.info.words
                     //获取商品库的商品
                     let product_result = await video_product_controllers.getProductData({ book_id: fq_book_result.data.book_id });
                     //如果商品库没有这个商品
@@ -201,75 +201,115 @@ CMD.isGenre = function(FilterConfig,genre){
     return is_need
 }
 
+CMD.getPlatformInfo = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+}
+CMD.getSharedPlatform = function(PlatformShared,platform_shared_id){
+    for (let index = 0; index < PlatformShared.length; index++) {
+        const element = PlatformShared[index];
+        if(element.id==platform_shared_id){
+            return JSON.parse(element.info)
+        }
+    }
+}
+
 CMD.update_filter_data = async function(FilterConfig,data) {
     let isGenre = CMD.isGenre(FilterConfig,data.genre)
     // console.log("data.genre:",data.genre,data,isGenre)
     if(isGenre){
         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,material_sync_status:0})
+        
         //创建一个小程序    
         let AppConfig = await redis_help.getKeyValue("AppConfig")
 
         AppConfig = JSON.parse(AppConfig)
 
-        let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,data.tg_platform_id)
 
-        for (let j = 0; j < AppInfoList.length; j++) {
-            const AppInfo = AppInfoList[j];
-            data.app_id = AppInfo.app_id
+        let PlatformShared = await redis_help.getKeyValue("PlatformShared")
 
-            let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
+        PlatformShared = JSON.parse(PlatformShared)
 
-            PlatformInfo = JSON.parse(PlatformInfo)
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
 
-            if(PlatformInfo==null){
-                return console.error("平台配置错误:",data)
-            }
+        PlatformConfig = JSON.parse(PlatformConfig)
 
-            let MainConfig = await redis_help.getKeyValue("MainConfig")
+        let PlatformInfo = CMD.getPlatformInfo(PlatformConfig,config.platform_fanqie)
 
-            MainConfig = JSON.parse(MainConfig)
+        console.log("PlatformInfo:",PlatformInfo)
 
-            let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+        let all_platform_list = CMD.getSharedPlatform(PlatformShared,PlatformInfo.platform_shared_id)
 
-            if(list.length<0){
-                return console.error("获取主体错误:",data)
-            }
+        for (let i = 0; i < all_platform_list.length; i++) {
 
-            let black_books = await redis_help.getKeyValue("all_black_books")
-            
-            if(black_books!=null){
-                black_books = JSON.parse(black_books)
-            }
-       
-            for (let index = 0; index < list.length; index++) {
-                const main_info = list[index];
-                data.main_id = main_info.id
-                data.main_name = main_info.main_name
-                if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
-                    console.error("主体配置推广链接错误:",main_info)
-                }else{
-                    if(!CMD.isBlackBook(black_books,data.book_id)){
-                        //符合标准进行创建表
-                        const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
-                        if(!result.success){
-                            //没有找到 可以创建
-                            await video_applet_product_controllers.createAppletProductData({
-                                book_platform:data.tg_platform_id,
-                                product_name:data.book_name,
-                                product_id:data.book_id,
-                                dy_small_program_start:"",
-                                dy_small_program_start_data:"",
-                                dy_small_applet_app_id:data.app_id,
-                                status:0,
-                                main_id:data.main_id,
-                                promotion_id:"",
-                                wait_status:0,
-                            })
+            const tg_platform_id = all_platform_list[i];
+
+            let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,tg_platform_id)
+            for (let j = 0; j < AppInfoList.length; j++) {
+
+                const AppInfo = AppInfoList[j];
+
+                data.app_id = AppInfo.app_id
+
+                let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
+
+                PlatformInfo = JSON.parse(PlatformInfo)
+
+                if(PlatformInfo==null){
+                    return console.error("平台配置错误:",data)
+                }
+
+                let MainConfig = await redis_help.getKeyValue("MainConfig")
+
+                MainConfig = JSON.parse(MainConfig)
+
+                let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+
+                if(list.length<0){
+                    return console.error("获取主体错误:",data)
+                }
+
+                let black_books = await redis_help.getKeyValue("all_black_books")
+                
+                if(black_books!=null){
+                    black_books = JSON.parse(black_books)
+                }
+        
+                for (let index = 0; index < list.length; index++) {
+                    const main_info = list[index];
+                    data.main_id = main_info.id
+                    data.main_name = main_info.main_name
+                    if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
+                        console.error("主体配置推广链接错误:",main_info)
+                    }else{
+                        if(!CMD.isBlackBook(black_books,data.book_id)){
+                            //符合标准进行创建表
+                            const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
+                            if(!result.success){
+                                //没有找到 可以创建
+                                await video_applet_product_controllers.createAppletProductData({
+                                    book_platform:data.tg_platform_id,
+                                    product_name:data.book_name,
+                                    product_id:data.book_id,
+                                    dy_small_program_start:"",
+                                    dy_small_program_start_data:"",
+                                    dy_small_applet_app_id:data.app_id,
+                                    status:0,
+                                    main_id:data.main_id,
+                                    promotion_id:"",
+                                    wait_status:0,
+                                })
+                            }
                         }
                     }
                 }
             }
         }
+
     }else{
         await other_book_controllers.createData({product_id:data.book_id,product_name:data.book_name,tg_platform_id:data.tg_platform_id})
         await filter_data_controllers.updateFilterData({id:data.id},{status:2,book_id:data.book_id,book_name:data.book_name,genre:data.genre,material_sync_status:2})
@@ -290,7 +330,7 @@ CMD.add_fq_book = async function(data,response){
     let book_name =  response.book_name
     let book_id = response.book_id
     let genre = response.genre
-    let words = response.word_number
+    let words = response.words
     data.genre = 0
     if(genre=="0"){
         data.genre = 1;

+ 79 - 45
2_PRODUCT_FACTORY/hy_batch_factory.js

@@ -241,6 +241,24 @@ CMD.isGenre = function(FilterConfig,genre){
 }
 
 
+CMD.getPlatformInfo = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+}
+CMD.getSharedPlatform = function(PlatformShared,platform_shared_id){
+    for (let index = 0; index < PlatformShared.length; index++) {
+        const element = PlatformShared[index];
+        if(element.id==platform_shared_id){
+            return JSON.parse(element.info)
+        }
+    }
+}
+
+
 CMD.update_filter_data = async function(FilterConfig,data) {
     let isGenre = CMD.isGenre(FilterConfig,data.genre)
     // console.log("data.genre:",data.genre,data,isGenre)
@@ -252,60 +270,76 @@ CMD.update_filter_data = async function(FilterConfig,data) {
 
         AppConfig = JSON.parse(AppConfig)
 
-        let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,data.tg_platform_id)
+        let PlatformShared = await redis_help.getKeyValue("PlatformShared")
 
-        for (let j = 0; j < AppInfoList.length; j++) {
-            const AppInfo = AppInfoList[j];
-            data.app_id = AppInfo.app_id
+        PlatformShared = JSON.parse(PlatformShared)
+        
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
 
-            let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
+        PlatformConfig = JSON.parse(PlatformConfig)
 
-            PlatformInfo = JSON.parse(PlatformInfo)
+        let PlatformInfo = CMD.getPlatformInfo(PlatformConfig,config.platform_heiyan)
 
-            if(PlatformInfo==null){
-                return console.error("平台配置错误:",data)
-            }
+        console.log("PlatformInfo:",PlatformInfo)
 
-            let MainConfig = await redis_help.getKeyValue("MainConfig")
+        let all_platform_list = CMD.getSharedPlatform(PlatformShared,PlatformInfo.platform_shared_id)
 
-            MainConfig = JSON.parse(MainConfig)
+        for (let i = 0; i < all_platform_list.length; i++) {
+            const tg_platform_id = all_platform_list[i];
+            let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,tg_platform_id)
+            for (let j = 0; j < AppInfoList.length; j++) {
+                const AppInfo = AppInfoList[j];
+                data.app_id = AppInfo.app_id
 
-            let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+                let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
 
-            if(list.length<0){
-                return console.error("获取主体错误:",data)
-            }
+                PlatformInfo = JSON.parse(PlatformInfo)
 
-            let black_books = await redis_help.getKeyValue("all_black_books")
-            
-            if(black_books!=null){
-                black_books = JSON.parse(black_books)
-            }
-       
-            for (let index = 0; index < list.length; index++) {
-                const main_info = list[index];
-                data.main_id = main_info.id
-                data.main_name = main_info.main_name
-                if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
-                    console.error("主体配置推广链接错误:",main_info)
-                }else{
-                    if(!CMD.isBlackBook(black_books,data.book_id)){
-                        //符合标准进行创建表
-                        const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
-                        if(!result.success){
-                            //没有找到 可以创建
-                            await video_applet_product_controllers.createAppletProductData({
-                                book_platform:data.tg_platform_id,
-                                product_name:data.book_name,
-                                product_id:data.book_id,
-                                dy_small_program_start:"",
-                                dy_small_program_start_data:"",
-                                dy_small_applet_app_id:data.app_id,
-                                status:0,
-                                main_id:data.main_id,
-                                promotion_id:"",
-                                wait_status:0,
-                            })
+                if(PlatformInfo==null){
+                    return console.error("平台配置错误:",data)
+                }
+
+                let MainConfig = await redis_help.getKeyValue("MainConfig")
+
+                MainConfig = JSON.parse(MainConfig)
+
+                let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+
+                if(list.length<0){
+                    return console.error("获取主体错误:",data)
+                }
+
+                let black_books = await redis_help.getKeyValue("all_black_books")
+                
+                if(black_books!=null){
+                    black_books = JSON.parse(black_books)
+                }
+        
+                for (let index = 0; index < list.length; index++) {
+                    const main_info = list[index];
+                    data.main_id = main_info.id
+                    data.main_name = main_info.main_name
+                    if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
+                        console.error("主体配置推广链接错误:",main_info)
+                    }else{
+                        if(!CMD.isBlackBook(black_books,data.book_id)){
+                            //符合标准进行创建表
+                            const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
+                            if(!result.success){
+                                //没有找到 可以创建
+                                await video_applet_product_controllers.createAppletProductData({
+                                    book_platform:data.tg_platform_id,
+                                    product_name:data.book_name,
+                                    product_id:data.book_id,
+                                    dy_small_program_start:"",
+                                    dy_small_program_start_data:"",
+                                    dy_small_applet_app_id:data.app_id,
+                                    status:0,
+                                    main_id:data.main_id,
+                                    promotion_id:"",
+                                    wait_status:0,
+                                })
+                            }
                         }
                     }
                 }

+ 75 - 46
2_PRODUCT_FACTORY/qm_batch_factory.js

@@ -203,76 +203,105 @@ CMD.isGenre = function(FilterConfig,genre){
     return is_need
 }
 
+CMD.getPlatformInfo = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+}
+CMD.getSharedPlatform = function(PlatformShared,platform_shared_id){
+    for (let index = 0; index < PlatformShared.length; index++) {
+        const element = PlatformShared[index];
+        if(element.id==platform_shared_id){
+            return JSON.parse(element.info)
+        }
+    }
+}
 
 CMD.update_filter_data = async function(FilterConfig,data) {
     let isGenre = CMD.isGenre(FilterConfig,data.genre)
-    // console.log("data.genre:",data.genre,data,isGenre)
     if(isGenre){
         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})
         //创建一个小程序    
+
+        let MainConfig = await redis_help.getKeyValue("MainConfig")
+
+        MainConfig = JSON.parse(MainConfig)
+
         let AppConfig = await redis_help.getKeyValue("AppConfig")
 
         AppConfig = JSON.parse(AppConfig)
 
-        let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,data.tg_platform_id)
+        let PlatformShared = await redis_help.getKeyValue("PlatformShared")
 
-        for (let j = 0; j < AppInfoList.length; j++) {
-            const AppInfo = AppInfoList[j];
-            data.app_id = AppInfo.app_id
+        PlatformShared = JSON.parse(PlatformShared)
+        
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
 
-            let PlatformInfo = await redis_help.getKeyValue("PlatformConfig")
+        PlatformConfig = JSON.parse(PlatformConfig)
 
-            PlatformInfo = JSON.parse(PlatformInfo)
+        let PlatformInfo = CMD.getPlatformInfo(PlatformConfig,config.platform_qimao)
 
-            if(PlatformInfo==null){
-                return console.error("平台配置错误:",data)
-            }
 
-            let MainConfig = await redis_help.getKeyValue("MainConfig")
+        let all_platform_list = CMD.getSharedPlatform(PlatformShared,PlatformInfo.platform_shared_id)
 
-            MainConfig = JSON.parse(MainConfig)
 
-            let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+        for (let i = 0; i < all_platform_list.length; i++) {
+            const tg_platform_id = all_platform_list[i];
 
-            if(list.length<0){
-                return console.error("获取主体错误:",data)
-            }
+            let AppInfoList = CMD.getAppInfoByPlatformId(AppConfig,tg_platform_id)
 
-            let black_books = await redis_help.getKeyValue("all_black_books")
-            
-            if(black_books!=null){
-                black_books = JSON.parse(black_books)
-            }
-       
-            for (let index = 0; index < list.length; index++) {
-                const main_info = list[index];
-                data.main_id = main_info.id
-                data.main_name = main_info.main_name
-                if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
-                    console.error("主体配置推广链接错误:",main_info)
-                }else{
-                    if(!CMD.isBlackBook(black_books,data.book_id)){
-                        //符合标准进行创建表
-                        const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
-                        if(!result.success){
-                            //没有找到 可以创建
-                            await video_applet_product_controllers.createAppletProductData({
-                                book_platform:data.tg_platform_id,
-                                product_name:data.book_name,
-                                product_id:data.book_id,
-                                dy_small_program_start:"",
-                                dy_small_program_start_data:"",
-                                dy_small_applet_app_id:data.app_id,
-                                status:0,
-                                main_id:data.main_id,
-                                promotion_id:"",
-                                wait_status:0,
-                            })
+
+            for (let j = 0; j < AppInfoList.length; j++) {
+                const AppInfo = AppInfoList[j];
+                data.app_id = AppInfo.app_id
+
+                let list = CMD.getMainInfoByAppid(MainConfig,data.app_id)
+
+                if(list.length<0){
+                    return console.error("获取主体错误:",data)
+                }
+
+                let black_books = await redis_help.getKeyValue("all_black_books")
+                
+                if(black_books!=null){
+                    black_books = JSON.parse(black_books)
+                }
+        
+                for (let index = 0; index < list.length; index++) {
+                    const main_info = list[index];
+                    data.main_id = main_info.id
+                    data.main_name = main_info.main_name
+                    if(main_info.tg_link_config==undefined||main_info.tg_link_config==null){
+                        console.error("主体配置推广链接错误:",main_info)
+                    }else{
+                        if(!CMD.isBlackBook(black_books,data.book_id)){
+                            //符合标准进行创建表
+                            const result = await video_applet_product_controllers.getAppletProductData({book_id:data.book_id,main_id:data.main_id})
+                            if(!result.success){
+                                //没有找到 可以创建
+                                await video_applet_product_controllers.createAppletProductData({
+                                    book_platform:data.tg_platform_id,
+                                    product_name:data.book_name,
+                                    product_id:data.book_id,
+                                    dy_small_program_start:"",
+                                    dy_small_program_start_data:"",
+                                    dy_small_applet_app_id:data.app_id,
+                                    status:0,
+                                    main_id:data.main_id,
+                                    promotion_id:"",
+                                    wait_status:0,
+                                })
+                            }
                         }
                     }
                 }
             }
         }
+
+        
         
     }else{
         await other_book_controllers.createData({product_id:data.book_id,product_name:data.book_name,tg_platform_id:data.tg_platform_id})

+ 4 - 2
5_CREATE_LINK_FACTORY/CREATE_LINK_FACTORY.js

@@ -67,9 +67,11 @@ async function processTask(){
                 })
                 throw "当前书在黑名单"
             }
+            let main_info = CMD.getMainInfoById(MainConfig,result.data.main_id)
 
             let PlatformInfo = null
-            PlatformInfo = CMD.getPlatformInfoById(PlatformConfig,result.data.book_platform)
+            
+            PlatformInfo = CMD.getPlatformInfoById(PlatformConfig,main_info.tg_platform_id)
             if(PlatformInfo==null){
                 await video_applet_product_controllers.updateData({id:result.data.id},{
                     status:2,
@@ -79,7 +81,7 @@ async function processTask(){
                 console.error("平台配置错误:",result)
                 throw "平台配置错误:"
             }
-            let main_info = CMD.getMainInfoById(MainConfig,result.data.main_id)
+  
 
             if(main_info==null&&result.data.is_close_execution==1){
                 let CloseMainConfig = await redis_help.getKeyValue("CloseMainConfig")

+ 151 - 0
5_CREATE_LINK_FACTORY/dz_create_link_factory.js

@@ -0,0 +1,151 @@
+const CMD = {}
+const time_count = 2000;
+const redis_help = require('../src/use_redis');
+const video_applet_product_controllers = require('../src/data_manager/Controllers/video_applet_product_controllers');
+var dz_create_link_task_list = []
+const config = require('../etc/config.json')
+let finish_call_back = async function(new_data,error_info=null){
+    try{
+        if(new_data.start_page != null && error_info==null){
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                dy_small_program_start:new_data.start_page,
+                dy_small_program_start_data:new_data.start_param,
+                promotion_id:new_data.promotion_id,
+                wait_status:1,
+                status:0
+            })
+        }else{
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                status:2,
+                wait_status:2,
+                error_info:JSON.stringify(error_info)
+            })
+        }
+  
+    }catch(e){
+        console.log("finish_call_back error:",e)
+    }
+   
+}
+CMD.isBlackBook = function(all_black_books,book_id){
+    if(all_black_books==null){
+        return false
+    }
+    for (let index = 0; index < all_black_books.length; index++) {
+        const black_book = all_black_books[index];
+        if(black_book.product_id==book_id){
+            return true
+        }
+    }
+    return false
+}
+async function processTask(){
+    try{
+        let MainConfig = await redis_help.getKeyValue("MainConfig")
+        MainConfig = JSON.parse(MainConfig)
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
+        PlatformConfig = JSON.parse(PlatformConfig)
+
+
+        let black_books = await redis_help.getKeyValue("all_black_books")
+        
+        if(black_books!=null){
+            black_books = JSON.parse(black_books)
+        }
+       
+        let result = await video_applet_product_controllers.getAppletProductDataByStatus({status:0,wait_status:0,book_platform:config.platform_dianzhong})
+
+        if(result.success){
+
+            if(CMD.isBlackBook(black_books,result.data.product_id)){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"当前书在黑名单"})
+                })
+                throw "当前书在黑名单"
+            }
+            let main_info = CMD.getMainInfoById(MainConfig,result.data.main_id)
+
+            let PlatformInfo = null
+            
+            PlatformInfo = CMD.getPlatformInfoById(PlatformConfig,main_info.tg_platform_id)
+            if(PlatformInfo==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"平台配置错误:"})
+                })
+                console.error("平台配置错误:",result)
+                throw "平台配置错误:"
+            }
+  
+
+            if(main_info==null&&result.data.is_close_execution==1){
+                let CloseMainConfig = await redis_help.getKeyValue("CloseMainConfig")
+                CloseMainConfig = JSON.parse(CloseMainConfig)
+                main_info = CMD.getMainInfoById(CloseMainConfig,result.data.main_id)
+            }
+
+            if(main_info==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"主体配置错误:"})
+                })
+                console.error("主体配置错误:",result)
+                throw "主体配置错误:"
+            }
+          
+            if(result.data.book_platform==config.platform_dianzhong){
+                dz_create_link_task_list.push({
+                    n_data:result.data,
+                    main_info:main_info,
+                    PlatformInfo:PlatformInfo
+                })
+            }
+        }
+        if(dz_create_link_task_list.length>0){
+            let dz_create_link_task = dz_create_link_task_list.pop()
+            require('./dz_create_link').runTask(dz_create_link_task.n_data
+                ,dz_create_link_task.main_info,
+                dz_create_link_task.PlatformInfo,finish_call_back)
+        }
+        await new Promise(resolve => setTimeout(resolve,100));
+
+    }catch(e){
+        console.log("CREATE_LINK_FACTORY error:",e)
+        finish_call_back(null,{"MESSAGE":"CREATE_LINK_FACTORY error:"})
+    } finally{
+        global.setTimeout(processTask,time_count)
+    }
+}
+CMD.init = function(){
+    redis_help.connect((results)=>{
+        if(results){
+        }
+    })
+    processTask()
+}
+
+CMD.getPlatformInfoById = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+    return null
+}
+
+CMD.getMainInfoById = function(MainConfig,main_id){
+    // console.log("MainConfig:",MainConfig)
+    for (let index = 0; index < MainConfig.length; index++) {
+        const element = MainConfig[index];
+        if(element.id==main_id){
+            return element
+        }
+    }
+    return null
+}
+CMD.init()

+ 3 - 2
5_CREATE_LINK_FACTORY/fq_create_link.js

@@ -39,7 +39,6 @@ CMD.runTask = async function(data,main_info,PlatformInfo,call_back){
     let huichuan_id = tg_link_config['huichuan_id']
     let chongzhi_list = JSON.parse(PlatformInfo.chongzhi)
     let huichuan_list = JSON.parse(PlatformInfo.huichuan)
-    let chongzhi_name = null
     let recharge_template_id = ""
     let ad_callback_config_id = ""
     for (let index = 0; index < chongzhi_list.length; index++) {
@@ -70,7 +69,9 @@ CMD.runTask = async function(data,main_info,PlatformInfo,call_back){
     try {
         let create_fanqie_book_link = require('../src/api/fq/create_fanqie_book_link')
         let remark  =  data.product_name.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, '')
-        await create_fanqie_book_link.send(data.product_id,1,remark,1,recharge_template_id,ad_callback_config_id,(start_page,start_param, info)=>{
+        console.log("main_info:",main_info)
+        let distributorId = main_info.distributor_id
+        await create_fanqie_book_link.send(distributorId,data.product_id,1,remark,1,recharge_template_id,ad_callback_config_id,(start_page,start_param, info)=>{
             if(start_page==null||start_param==null){
                 data.start_page = start_page
                 data.start_param = start_param

+ 155 - 0
5_CREATE_LINK_FACTORY/fq_create_link_factory.js

@@ -0,0 +1,155 @@
+const CMD = {}
+const time_count = 2000;
+const redis_help = require('../src/use_redis');
+const video_applet_product_controllers = require('../src/data_manager/Controllers/video_applet_product_controllers');
+var fq_create_link_task_list = []
+const config = require('../etc/config.json')
+let finish_call_back = async function(new_data,error_info=null){
+    try{
+        if(new_data.start_page != null && error_info==null){
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                dy_small_program_start:new_data.start_page,
+                dy_small_program_start_data:new_data.start_param,
+                promotion_id:new_data.promotion_id,
+                wait_status:1,
+                status:0
+            })
+        }else{
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                status:2,
+                wait_status:2,
+                error_info:JSON.stringify(error_info)
+            })
+        }
+  
+    }catch(e){
+        console.log("finish_call_back error:",e)
+    }
+   
+}
+CMD.isBlackBook = function(all_black_books,book_id){
+    if(all_black_books==null){
+        return false
+    }
+    for (let index = 0; index < all_black_books.length; index++) {
+        const black_book = all_black_books[index];
+        if(black_book.product_id==book_id){
+            return true
+        }
+    }
+    return false
+}
+async function processTask(){
+    try{
+        let MainConfig = await redis_help.getKeyValue("MainConfig")
+        MainConfig = JSON.parse(MainConfig)
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
+        PlatformConfig = JSON.parse(PlatformConfig)
+
+
+        let black_books = await redis_help.getKeyValue("all_black_books")
+        
+        if(black_books!=null){
+            black_books = JSON.parse(black_books)
+        }
+       
+        let result = await video_applet_product_controllers.getAppletProductDataByStatus({status:0,wait_status:0,book_platform:config.platform_fanqie})
+
+        if(result.success){
+
+            if(CMD.isBlackBook(black_books,result.data.product_id)){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"当前书在黑名单"})
+                })
+                throw "当前书在黑名单"
+            }
+            let main_info = CMD.getMainInfoById(MainConfig,result.data.main_id)
+
+            let PlatformInfo = null
+            
+            PlatformInfo = CMD.getPlatformInfoById(PlatformConfig,main_info.tg_platform_id)
+            if(PlatformInfo==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"平台配置错误:"})
+                })
+                console.error("平台配置错误:",result)
+                throw "平台配置错误:"
+            }
+  
+
+            if(main_info==null&&result.data.is_close_execution==1){
+                let CloseMainConfig = await redis_help.getKeyValue("CloseMainConfig")
+                CloseMainConfig = JSON.parse(CloseMainConfig)
+                main_info = CMD.getMainInfoById(CloseMainConfig,result.data.main_id)
+            }
+
+            if(main_info==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"主体配置错误:"})
+                })
+                console.error("主体配置错误:",result)
+                throw "主体配置错误:"
+            }
+
+            if(result.data.book_platform==config.platform_fanqie){
+                fq_create_link_task_list.push({
+                    n_data:result.data,
+                    main_info:main_info,
+                    PlatformInfo:PlatformInfo
+                })
+            }
+         
+        }
+
+        if(fq_create_link_task_list.length>0){
+            let fq_create_link_task = fq_create_link_task_list.pop()
+            require('./fq_create_link').runTask(fq_create_link_task.n_data
+                ,fq_create_link_task.main_info,
+                fq_create_link_task.PlatformInfo,finish_call_back)
+        }
+
+        await new Promise(resolve => setTimeout(resolve,100));
+
+    }catch(e){
+        console.log("CREATE_LINK_FACTORY error:",e)
+        finish_call_back(null,{"MESSAGE":"CREATE_LINK_FACTORY error:"})
+    } finally{
+        global.setTimeout(processTask,time_count)
+    }
+}
+CMD.init = function(){
+    redis_help.connect((results)=>{
+        if(results){
+        }
+    })
+    processTask()
+}
+
+
+CMD.getPlatformInfoById = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+    return null
+}
+
+CMD.getMainInfoById = function(MainConfig,main_id){
+    // console.log("MainConfig:",MainConfig)
+    for (let index = 0; index < MainConfig.length; index++) {
+        const element = MainConfig[index];
+        if(element.id==main_id){
+            return element
+        }
+    }
+    return null
+}
+CMD.init()

+ 155 - 0
5_CREATE_LINK_FACTORY/hy_create_link_factory.js

@@ -0,0 +1,155 @@
+const CMD = {}
+const time_count = 2000;
+const redis_help = require('../src/use_redis');
+const video_applet_product_controllers = require('../src/data_manager/Controllers/video_applet_product_controllers');
+var hy_create_link_task_list = []
+const config = require('../etc/config.json')
+let finish_call_back = async function(new_data,error_info=null){
+    try{
+        if(new_data.start_page != null && error_info==null){
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                dy_small_program_start:new_data.start_page,
+                dy_small_program_start_data:new_data.start_param,
+                promotion_id:new_data.promotion_id,
+                wait_status:1,
+                status:0
+            })
+        }else{
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                status:2,
+                wait_status:2,
+                error_info:JSON.stringify(error_info)
+            })
+        }
+  
+    }catch(e){
+        console.log("finish_call_back error:",e)
+    }
+   
+}
+CMD.isBlackBook = function(all_black_books,book_id){
+    if(all_black_books==null){
+        return false
+    }
+    for (let index = 0; index < all_black_books.length; index++) {
+        const black_book = all_black_books[index];
+        if(black_book.product_id==book_id){
+            return true
+        }
+    }
+    return false
+}
+async function processTask(){
+    try{
+        let MainConfig = await redis_help.getKeyValue("MainConfig")
+        MainConfig = JSON.parse(MainConfig)
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
+        PlatformConfig = JSON.parse(PlatformConfig)
+
+
+        let black_books = await redis_help.getKeyValue("all_black_books")
+        
+        if(black_books!=null){
+            black_books = JSON.parse(black_books)
+        }
+       
+        let result = await video_applet_product_controllers.getAppletProductDataByStatus({status:0,wait_status:0,book_platform:config.platform_heiyan})
+
+        if(result.success){
+
+            if(CMD.isBlackBook(black_books,result.data.product_id)){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"当前书在黑名单"})
+                })
+                throw "当前书在黑名单"
+            }
+            let main_info = CMD.getMainInfoById(MainConfig,result.data.main_id)
+
+            let PlatformInfo = null
+            
+            PlatformInfo = CMD.getPlatformInfoById(PlatformConfig,main_info.tg_platform_id)
+            if(PlatformInfo==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"平台配置错误:"})
+                })
+                console.error("平台配置错误:",result)
+                throw "平台配置错误:"
+            }
+  
+
+            if(main_info==null&&result.data.is_close_execution==1){
+                let CloseMainConfig = await redis_help.getKeyValue("CloseMainConfig")
+                CloseMainConfig = JSON.parse(CloseMainConfig)
+                main_info = CMD.getMainInfoById(CloseMainConfig,result.data.main_id)
+            }
+
+            if(main_info==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"主体配置错误:"})
+                })
+                console.error("主体配置错误:",result)
+                throw "主体配置错误:"
+            }
+            if(result.data.book_platform==config.platform_heiyan){
+                hy_create_link_task_list.push({
+                    n_data:result.data,
+                    main_info:main_info,
+                    PlatformInfo:PlatformInfo
+                })
+            }
+         
+           
+        }
+
+        if(hy_create_link_task_list.length>0){
+            let hy_create_link_task = hy_create_link_task_list.pop()
+            require('./hy_create_link').runTask(hy_create_link_task.n_data
+                ,hy_create_link_task.main_info,
+                hy_create_link_task.PlatformInfo,finish_call_back)
+        }
+
+        await new Promise(resolve => setTimeout(resolve,100));
+
+    }catch(e){
+        console.log("CREATE_LINK_FACTORY error:",e)
+        finish_call_back(null,{"MESSAGE":"CREATE_LINK_FACTORY error:"})
+    } finally{
+        global.setTimeout(processTask,time_count)
+    }
+}
+CMD.init = function(){
+    redis_help.connect((results)=>{
+        if(results){
+        }
+    })
+    processTask()
+}
+
+
+CMD.getPlatformInfoById = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+    return null
+}
+
+CMD.getMainInfoById = function(MainConfig,main_id){
+    // console.log("MainConfig:",MainConfig)
+    for (let index = 0; index < MainConfig.length; index++) {
+        const element = MainConfig[index];
+        if(element.id==main_id){
+            return element
+        }
+    }
+    return null
+}
+CMD.init()

+ 26 - 3
5_CREATE_LINK_FACTORY/qm_create_link.js

@@ -2,6 +2,7 @@
 const fetch = require('node-fetch'); // Node.js 18以下版本需要安装 node-fetch
 const tools = require('../tools');
 const helper = require('../src/helper');
+const config = require('../etc/config.json')
 const CMD = {}
 CMD.runTask = async function (data,main_info,PlatformInfo,call_back) {
     let timestamp = helper.getCurrentUnixTimestamp()
@@ -60,18 +61,39 @@ CMD.runTask = async function (data,main_info,PlatformInfo,call_back) {
     const params = new URLSearchParams(postData);
 
     // 请求头
-    const headers = {
+    var dy_headers = {
         'accept': 'application/json, text/plain, */*',
         'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
         'app-external-id': '4c6e8d8709c14de9a4397b6cbb978f85',
         'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0MDg4MjI1LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0MTc0NjI1LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQwODgyMjUsIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.LaEHd147NoCt1Wfo9ZZlCs4pludA7D3LajN4xff2H5o',
         'project': 'reader_paid_dyminiapp',
-         "Content-Type": "application/json;charset=UTF-8",
+            "Content-Type": "application/json;charset=UTF-8",
         'signature': 'b4782a395b0d0de3f78bb5c8157cb35ab0d6c51f3677a1cfb4b5390c39f63169',
         'target-id': '544180064332673816',
         'cookie': 'sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%7D; sajssdk_2015_new_user_new-media-fx_qimao_com=1; acw_tc=1a0c380f17341043811111513e003f4b4a7b61bafaac1abb4e5d21e565003f; sa_jssdk_2015_new-media-fx_qimao_com=%7B%22distinct_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzYmRjMTI0NjQ1ZTItMGNiZWFlZTE3MmQ0Y2U4LTRjNjU3YjU4LTkyMTYwMC0xOTNiZGMxMjQ2NTU2NyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%7D',
         'Referer': 'https://new-media-fx.qimao.com/backend/postback-configuration/index?projectId=reader_paid_dyminiapp&appId=4c6e8d8709c14de9a4397b6cbb978f85&accountId=544180064332673816'
     };
+
+    var wx_headers = {
+        'accept': 'application/json, text/plain, */*',
+        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
+        'app-external-id': '9a2737aabb8f11ef93f90293e6ac97a2',
+        'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0MDg4MjI1LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0MTc0NjI1LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQwODgyMjUsIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.LaEHd147NoCt1Wfo9ZZlCs4pludA7D3LajN4xff2H5o',
+        'project': 'reader_paid_wxminiapp',
+        "Content-Type": "application/json;charset=UTF-8",
+        'signature': 'b4782a395b0d0de3f78bb5c8157cb35ab0d6c51f3677a1cfb4b5390c39f63169',
+        'target-id': '544180064332673816',
+        'cookie': 'sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%7D; sajssdk_2015_new_user_new-media-fx_qimao_com=1; acw_tc=1a0c380f17341043811111513e003f4b4a7b61bafaac1abb4e5d21e565003f; sa_jssdk_2015_new-media-fx_qimao_com=%7B%22distinct_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzYmRjMTI0NjQ1ZTItMGNiZWFlZTE3MmQ0Y2U4LTRjNjU3YjU4LTkyMTYwMC0xOTNiZGMxMjQ2NTU2NyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%7D',
+        'Referer': 'https://new-media-fx.qimao.com/backend/postback-configuration/index?projectId=reader_paid_dyminiapp&appId=4c6e8d8709c14de9a4397b6cbb978f85&accountId=544180064332673816'
+    };
+
+    let headers = ""
+    if(PlatformInfo.mini_program_platform_id==config.wx){
+        headers = wx_headers
+    }else if(PlatformInfo.mini_program_platform_id==config.dy){
+        headers = dy_headers
+    }
+
     headers['authorization'] = await tools.getQMToken()
     try {
         const response = await fetch(`${url}?${params}`, {
@@ -86,7 +108,8 @@ CMD.runTask = async function (data,main_info,PlatformInfo,call_back) {
         }
         console.log('响应状态:', response.status);
         console.log('响应数据:', result);
-        let n_data = await require("../src/api/qm/get_qm_promotion").getPromotionList(postData.promotion_name)
+        
+        let n_data = await require("../src/api/qm/get_qm_promotion").getPromotionList(postData.promotion_name,PlatformInfo.mini_program_platform_id)
         if(n_data==null){
             throw result
         }

+ 147 - 0
5_CREATE_LINK_FACTORY/qm_create_link_factory.js

@@ -0,0 +1,147 @@
+const CMD = {}
+const time_count = 2000;
+const redis_help = require('../src/use_redis');
+const video_applet_product_controllers = require('../src/data_manager/Controllers/video_applet_product_controllers');
+var qm_create_link_task_list = []
+const config = require('../etc/config.json')
+let finish_call_back = async function(new_data,error_info=null){
+    try{
+        if(new_data.start_page != null && error_info==null){
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                dy_small_program_start:new_data.start_page,
+                dy_small_program_start_data:new_data.start_param,
+                promotion_id:new_data.promotion_id,
+                wait_status:1,
+                status:0
+            })
+        }else{
+            const result = await video_applet_product_controllers.updateData({id:new_data.id},{
+                status:2,
+                wait_status:2,
+                error_info:JSON.stringify(error_info)
+            })
+        }
+  
+    }catch(e){
+        console.log("finish_call_back error:",e)
+    }
+   
+}
+CMD.isBlackBook = function(all_black_books,book_id){
+    if(all_black_books==null){
+        return false
+    }
+    for (let index = 0; index < all_black_books.length; index++) {
+        const black_book = all_black_books[index];
+        if(black_book.product_id==book_id){
+            return true
+        }
+    }
+    return false
+}
+async function processTask(){
+    try{
+        let MainConfig = await redis_help.getKeyValue("MainConfig")
+        MainConfig = JSON.parse(MainConfig)
+        let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
+        PlatformConfig = JSON.parse(PlatformConfig)
+        let black_books = await redis_help.getKeyValue("all_black_books")
+        if(black_books!=null){
+            black_books = JSON.parse(black_books)
+        }
+        let result = await video_applet_product_controllers.getAppletProductDataByStatus({status:0,wait_status:0,book_platform:config.platform_qimao})
+        if(result.success){
+            if(CMD.isBlackBook(black_books,result.data.product_id)){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"当前书在黑名单"})
+                })
+                throw "当前书在黑名单"
+            }
+            let main_info = CMD.getMainInfoById(MainConfig,result.data.main_id)
+
+            let PlatformInfo = null
+            
+            PlatformInfo = CMD.getPlatformInfoById(PlatformConfig,main_info.tg_platform_id)
+            if(PlatformInfo==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"平台配置错误:"})
+                })
+                console.error("平台配置错误:",result)
+                throw "平台配置错误:"
+            }
+  
+
+            if(main_info==null&&result.data.is_close_execution==1){
+                let CloseMainConfig = await redis_help.getKeyValue("CloseMainConfig")
+                CloseMainConfig = JSON.parse(CloseMainConfig)
+                main_info = CMD.getMainInfoById(CloseMainConfig,result.data.main_id)
+            }
+
+            if(main_info==null){
+                await video_applet_product_controllers.updateData({id:result.data.id},{
+                    status:2,
+                    wait_status:2,
+                    error_info:JSON.stringify({msg:"主体配置错误:"})
+                })
+                console.error("主体配置错误:",result)
+                throw "主体配置错误:"
+            }
+
+            if(result.data.book_platform==config.platform_qimao){
+                qm_create_link_task_list.push({
+                    n_data:result.data,
+                    main_info:main_info,
+                    PlatformInfo:PlatformInfo
+                })
+            }
+
+        }
+
+        if(qm_create_link_task_list.length>0){
+            let qm_create_link_task = qm_create_link_task_list.pop()
+            require('./qm_create_link').runTask(qm_create_link_task.n_data
+                ,qm_create_link_task.main_info,
+                qm_create_link_task.PlatformInfo,finish_call_back)
+        }
+    }catch(e){
+        console.log("qm_create_link_factory error:",e)
+        finish_call_back(null,{"MESSAGE":"qm_create_link_factory error:"})
+    } finally{
+        global.setTimeout(processTask,time_count)
+    }
+}
+CMD.init = function(){
+    redis_help.connect((results)=>{
+        if(results){
+        }
+    })
+    processTask()
+}
+
+
+
+CMD.getPlatformInfoById = function(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+    return null
+}
+
+CMD.getMainInfoById = function(MainConfig,main_id){
+    // console.log("MainConfig:",MainConfig)
+    for (let index = 0; index < MainConfig.length; index++) {
+        const element = MainConfig[index];
+        if(element.id==main_id){
+            return element
+        }
+    }
+    return null
+}
+CMD.init()

+ 17 - 0
MESSAGE_DISPATCH/MESSAGE_DISPATCH.js

@@ -81,6 +81,7 @@ CMD.updatePlatformConfig = async function(){
     let client = tools.getOneNewClinet()
     client.post('http://127.0.0.1:9100/tg/back/api', postData)
     .then(response => {
+        CMD.updatePlatformShared()
         redis_help.setKeyValue("PlatformConfig",JSON.stringify(response.data.data))
     })
     .catch(error => {
@@ -88,6 +89,22 @@ CMD.updatePlatformConfig = async function(){
     });
 }
 
+CMD.updatePlatformShared = async function(){
+    const postData = {
+        cmd:"platform_shared",
+        fun:"gePlatformSharedList",
+        data:{}
+    };
+    let client = tools.getOneNewClinet()
+    client.post('http://127.0.0.1:9100/tg/back/api', postData)
+    .then(response => {
+        redis_help.setKeyValue("PlatformShared",JSON.stringify(response.data.data))
+    })
+    .catch(error => {
+      console.error('PlatformShared error!', error);
+    });
+}
+
 CMD.updateFqKeyList = async function(){
     const postData = {
         cmd:"fq_book",

+ 27 - 10
WX_GUA_JIAN_PARSE/WX_GUA_JIAN_PARSE.js

@@ -1,5 +1,5 @@
 const CMD = {}
-const time_count = 1000;
+const time_count = 2000;
 const redis_help = require('../src/use_redis');
 const origin_data_controllers = require('../src/data_manager/Controllers/origin_data_controllers');
 const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
@@ -9,7 +9,7 @@ async function processTask(){
     try{
         let FilterConfig = await redis_help.getKeyValue("FilterConfig")
         FilterConfig = JSON.parse(FilterConfig)
-        let Ids = []
+        let meaningless_Ids = []
         const result = await origin_data_controllers.getOriginDataByStatusAndLimit({status:3},500)
         if(result.success){
             let origin_data_list = result.data
@@ -18,15 +18,32 @@ async function processTask(){
             }
             for (let index = 0; index < origin_data_list.length; index++) {
                 const element = origin_data_list[index];
-                let d = await require('./parse_wx_guajian').fetchData(element.guajian_link)
-                await new Promise(resolve => setTimeout(resolve, 200));
-                console.log("d:",d)
-                Ids.push(element.id)
+                if(helper.checkChannel(element.guajian_link,'title=%')){
+                    let d = await require('./parse_wx_guajian').fetchData(element.guajian_link)
+                    console.log("d:",d)
+                    if(d!=null){
+                        let guajian_link = `wx_gua_jian=1$${d.wechat_microapp_jump_url}&name=${d.wechat_microapp_title}`
+                        await origin_data_controllers.updateOriginData({id:element.id},{status:0,guajian_link:guajian_link})
+                    }else{
+                        console.log("element:",element.id)
+                        meaningless_Ids.push(element.id)
+                    }
+                    await new Promise(resolve => setTimeout(resolve, 500));
+                }else{
+                    meaningless_Ids.push(element.id)
+                }
             }
-            // let update_result =  await origin_data_controllers.updateOriginDataByIds({ids:Ids},{status:0})
-            // if(update_result.success){
-            //     console.log(update_result.message)
-            // }
+
+            console.log("meaningless_Ids:",meaningless_Ids)
+            
+            if(meaningless_Ids.length>0){
+                console.log("meaningless_Ids:",meaningless_Ids)
+                let update_result =  await origin_data_controllers.updateOriginDataByIds({ids:meaningless_Ids},{status:4})
+                if(update_result.success){
+                    console.log(update_result.message)
+                }
+            }
+
           
         }
     }catch(e){

+ 4 - 1
WX_GUA_JIAN_PARSE/parse_wx_guajian.js

@@ -46,9 +46,12 @@ async function fetchData(url1) {
 
         const jsonData = await response.json();
         const anchorData = JSON.parse(jsonData.anchor_page.data);
-        
         if (anchorData && anchorData.length > 0) {
             const item = anchorData[0];
+            if(item.wechat_microapp_title==undefined||item.wechat_microapp_jump_url==undefined||item.wechat_microapp_jump_url.length<=0||item.wechat_microapp_title.length<=0){
+                console.log("item:",item)
+                return null
+            }
             return {
                 wechat_microapp_jump_url: item.wechat_microapp_jump_url || '',
                 wechat_microapp_title: item.wechat_microapp_title || '',

BIN
dump.rdb


+ 5 - 4
logs/combined.log

@@ -1,4 +1,5 @@
-2025-01-02T21:36:04: 
-2025-01-02T21:36:04: > heiyan@1.0.0 start
-2025-01-02T21:36:04: > node tg_factory_main.js
-2025-01-02T21:36:04: 
+2025-01-09T10:50:57: 
+2025-01-09T10:50:57: > heiyan@1.0.0 start
+2025-01-09T10:50:57: > node tg_factory_main.js
+2025-01-09T10:50:57: 
+2025-01-09T10:50:59: Connected to Redis

+ 5 - 4
logs/out.log

@@ -1,4 +1,5 @@
-2025-01-02T21:36:04: 
-2025-01-02T21:36:04: > heiyan@1.0.0 start
-2025-01-02T21:36:04: > node tg_factory_main.js
-2025-01-02T21:36:04: 
+2025-01-09T10:50:57: 
+2025-01-09T10:50:57: > heiyan@1.0.0 start
+2025-01-09T10:50:57: > node tg_factory_main.js
+2025-01-09T10:50:57: 
+2025-01-09T10:50:59: Connected to Redis

+ 60 - 0
pm2createlink.json

@@ -0,0 +1,60 @@
+{
+    "apps": [
+        {
+            "name": "hy_create_link_factory",
+            "script": "./5_CREATE_LINK_FACTORY/hy_create_link_factory.js",
+            "node_args": "--max-old-space-size=8192 --expose-gc",
+            "max_memory_restart": "4G",
+            "args": ["--type=data"],
+            "cwd": "/home/tg_factory",
+            "log_date_format": "YYYY-MM-DD HH:mm:ss",
+            "error_file": "./logs/create_link/hy_create_link_factory_error.log",
+            "out_file": "./logs/create_link/hy_create_link_factory_out.log",
+            "merge_logs": true,
+            "exec_mode": "fork",
+            "autorestart": true
+        },
+        {
+            "name": "fq_create_link_factory",
+            "script": "./5_CREATE_LINK_FACTORY/fq_create_link_factory.js",
+            "node_args": "--max-old-space-size=8192 --expose-gc",
+            "max_memory_restart": "4G",
+            "args": ["--type=data"],
+            "cwd": "/home/tg_factory",
+            "log_date_format": "YYYY-MM-DD HH:mm:ss",
+            "error_file": "./logs/create_link/fq_create_link_factory_error.log",
+            "out_file": "./logs/create_link/fq_create_link_factory_out.log",
+            "merge_logs": true,
+            "exec_mode": "fork",
+            "autorestart": true
+        },
+        {
+            "name": "dz_create_link_factory",
+            "script": "./5_CREATE_LINK_FACTORY/dz_create_link_factory.js",
+            "node_args": "--max-old-space-size=8192 --expose-gc",
+            "max_memory_restart": "4G",
+            "args": ["--type=data"],
+            "cwd": "/home/tg_factory",
+            "log_date_format": "YYYY-MM-DD HH:mm:ss",
+            "error_file": "./logs/create_link/dz_create_link_factory_error.log",
+            "out_file": "./logs/create_link/dz_create_link_factory_out.log",
+            "merge_logs": true,
+            "exec_mode": "fork",
+            "autorestart": true
+        },
+        {
+            "name": "qm_create_link_factory",
+            "script": "./5_CREATE_LINK_FACTORY/qm_create_link_factory.js",
+            "node_args": "--max-old-space-size=8192 --expose-gc",
+            "max_memory_restart": "4G",
+            "args": ["--type=data"],
+            "cwd": "/home/tg_factory",
+            "log_date_format": "YYYY-MM-DD HH:mm:ss",
+            "error_file": "./logs/create_link/qm_create_link_factory_error.log",
+            "out_file": "./logs/create_link/qm_create_link_factory_out.log",
+            "merge_logs": true,
+            "exec_mode": "fork",
+            "autorestart": true
+        }
+    ]
+}

+ 0 - 14
pm2json.json

@@ -111,20 +111,6 @@
             "exec_mode": "fork",
             "autorestart": true
         },
-        {
-            "name": "5_CREATE_LINK_FACTORY",
-            "script": "./5_CREATE_LINK_FACTORY/CREATE_LINK_FACTORY.js",
-            "node_args": "--max-old-space-size=8192 --expose-gc",
-            "max_memory_restart": "4G",
-            "args": ["--type=data"],
-            "cwd": "/home/tg_factory",
-            "log_date_format": "YYYY-MM-DD HH:mm:ss",
-            "error_file": "./logs/5_CREATE_LINK_FACTORY_error.log",
-            "out_file": "./logs/5_CREATE_LINK_FACTORY_out.log",
-            "merge_logs": true,
-            "exec_mode": "fork",
-            "autorestart": true
-        },
         {
             "name": "7_CHECK_AND_CREATE_URL_FACTORY",
             "script": "./7_CHECK_AND_CREATE_URL_FACTORY/CHECK_AND_CREATE_URL_FACTORY.js",

+ 10 - 0
run_create_link.sh

@@ -0,0 +1,10 @@
+#!/bin/bash
+cd /home/tg_factory
+mkdir -p logs
+chmod 755 logs
+
+sleep 1
+/home/node/node-v20.17.0-linux-x64/lib/node_modules/pm2/bin/pm2 start pm2createlink.json
+
+# sleep 1
+# bash /home/tg_factory/MESSAGE_DISPATCH/run_py.sh

+ 5 - 2
src/api/fq/create_fanqie_book_link.js

@@ -6,8 +6,8 @@ const CMD = {}
 //index=第几章开始生成推广链。
 //promotion_name=推广链接名称
 //media_source=快应用:1 字节、2 腾讯、6 vivo,不填默认字节;H5:不需要填写 短剧:1 字节、3 快手 4 微信
-CMD.send = async function(book_id,index=1,promotion_name="",media_source=1,recharge_template_id,ad_callback_config_id,call_back){
-    var distributorId = config.fanqie_config.distributorId;
+CMD.send = async function(distributorId,book_id,index=1,promotion_name="",media_source=1,recharge_template_id,ad_callback_config_id,call_back){
+    // var distributorId = config.fanqie_config.distributorId;
     var secretKey = config.fanqie_config.secretKey;
     const postData = {
         distributor_id: distributorId,
@@ -24,6 +24,9 @@ CMD.send = async function(book_id,index=1,promotion_name="",media_source=1,recha
     if(postData.ad_callback_config_id!=""){
         ad_callback_config_id_param = `&ad_callback_config_id=${postData.ad_callback_config_id}`
     }
+
+    console.log("postData:",postData)
+    
     var url = config.fanqie_config.create_link_host
     var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}`
     var other_params = `&book_id=${postData.book_id}&index=${postData.index}&promotion_name=${postData.promotion_name}&media_source=${postData.media_source}&recharge_template_id=${postData.recharge_template_id}${ad_callback_config_id_param}`

+ 2 - 2
src/api/fq/get_fq_call_back_template.js

@@ -3,9 +3,9 @@ const helper = require('../../helper');
 const config = require('../../../etc/config.json');
 const { default: axios } = require('axios');
 const CMD = {}
-CMD.get_callback_template = async function () {
+CMD.get_callback_template = async function (distributorId) {
     try{
-        var distributorId = config.fanqie_config.distributorId;
+        // var distributorId = config.fanqie_config.distributorId;
         var secretKey = config.fanqie_config.secretKey;
         const postData = {
             distributor_id: distributorId,

BIN
src/api/hy/qr.gif


BIN
src/api/hy/qr_resized.gif


+ 1 - 1
src/api/qm/get_qm_call_back_template.js

@@ -34,7 +34,7 @@ CMD.get_callback_template = async function (mini_program_platform_id=config.dy)
         'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0MDg4MjI1LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0MTc0NjI1LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQwODgyMjUsIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.LaEHd147NoCt1Wfo9ZZlCs4pludA7D3LajN4xff2H5o',
         'project': 'reader_paid_wxminiapp',
         'signature': 'b4782a395b0d0de3f78bb5c8157cb35ab0d6c51f3677a1cfb4b5390c39f63169',
-        'target-id': '546233830666047938',
+        'target-id': '544180064332673816',
         'cookie': 'sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%7D; sajssdk_2015_new_user_new-media-fx_qimao_com=1; acw_tc=1a0c380f17341043811111513e003f4b4a7b61bafaac1abb4e5d21e565003f; sa_jssdk_2015_new-media-fx_qimao_com=%7B%22distinct_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzYmRjMTI0NjQ1ZTItMGNiZWFlZTE3MmQ0Y2U4LTRjNjU3YjU4LTkyMTYwMC0xOTNiZGMxMjQ2NTU2NyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%7D',
         'Referer': 'https://new-media-fx.qimao.com/backend/postback-configuration/index?projectId=reader_paid_dyminiapp&appId=4c6e8d8709c14de9a4397b6cbb978f85&accountId=544180064332673816'
     };

+ 40 - 7
src/api/qm/get_qm_promotion.js

@@ -1,20 +1,36 @@
 const fetch = require('node-fetch');
 const tools = require('../../../tools');
-
-
-async function getPromotionInfo(promotion_id) {
+const config =  require('../../../etc/config.json')
+async function getPromotionInfo(promotion_id,mini_program_platform_id=config.dy) {
     try {
         const url = new URL('https://new-media-fx.qimao.com/api/promotion/info');
         url.searchParams.append('promotion_id', promotion_id);
         url.searchParams.append('env', '');
         url.searchParams.append('t', Date.now());
-        let headers = {
+
+        // 请求头
+        const dy_headers = {
             'accept': 'application/json, text/plain, */*',
             'app-external-id': '4c6e8d8709c14de9a4397b6cbb978f85',
             'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0NDI1MjU5LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0NTExNjU5LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQ0MjUyNTksIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.KFEAi-QJcMXzSYokQmtF2-RsdfjiSEIRBM34hBuDjLY',
             'project': 'reader_paid_dyminiapp',
             'signature': '5aeeeff44f700540bb47ed41301fcbceefc342101818c1157cf7ef9331973d6e',
             'target-id': '544180064332673816'
+        };
+
+        const wx_headers = {
+            'accept': 'application/json, text/plain, */*',
+            'app-external-id': '9a2737aabb8f11ef93f90293e6ac97a2',
+            'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0NDI1MjU5LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0NTExNjU5LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQ0MjUyNTksIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.KFEAi-QJcMXzSYokQmtF2-RsdfjiSEIRBM34hBuDjLY',
+            'project': 'reader_paid_wxminiapp',
+            'signature': '5aeeeff44f700540bb47ed41301fcbceefc342101818c1157cf7ef9331973d6e',
+            'target-id': '544180064332673816'
+        };
+        let headers = ""
+        if(mini_program_platform_id==config.wx){
+            headers = wx_headers
+        }else if(mini_program_platform_id==config.dy){
+            headers = dy_headers
         }
         headers['authorization'] = await tools.getQMToken()
         const response = await fetch(url.toString(), {
@@ -38,7 +54,7 @@ async function getPromotionInfo(promotion_id) {
     }
 }
 
-async function getPromotionList(promotion_name) {
+async function getPromotionList(promotion_name,mini_program_platform_id=config.dy) {
     try {
         const url = new URL('https://new-media-fx.qimao.com/api/promotion/list');
         url.searchParams.append('promotion_name', promotion_name);
@@ -47,13 +63,30 @@ async function getPromotionList(promotion_name) {
         url.searchParams.append('env', '');
         url.searchParams.append('t', Date.now());
    
-        var headers =  {
+        // 请求头
+        const dy_headers = {
             'accept': 'application/json, text/plain, */*',
             'app-external-id': '4c6e8d8709c14de9a4397b6cbb978f85',
             'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0NDI1MjU5LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0NTExNjU5LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQ0MjUyNTksIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.KFEAi-QJcMXzSYokQmtF2-RsdfjiSEIRBM34hBuDjLY',
             'project': 'reader_paid_dyminiapp',
             'signature': '545831eb8ed618a0d16a04f9553c6285e896eda5ff7b01df5e4e9ba6715fe149',
             'target-id': '544180064332673816'
+        };
+
+        const wx_headers = {
+            'accept': 'application/json, text/plain, */*',
+            'app-external-id': '9a2737aabb8f11ef93f90293e6ac97a2',
+            'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0NDI1MjU5LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0NTExNjU5LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQ0MjUyNTksIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.KFEAi-QJcMXzSYokQmtF2-RsdfjiSEIRBM34hBuDjLY',
+            'project': 'reader_paid_wxminiapp',
+            'signature': '545831eb8ed618a0d16a04f9553c6285e896eda5ff7b01df5e4e9ba6715fe149',
+            'target-id': '544180064332673816'
+        };
+
+        let headers = ""
+        if(mini_program_platform_id==config.wx){
+            headers = wx_headers
+        }else if(mini_program_platform_id==config.dy){
+            headers = dy_headers
         }
         headers['authorization'] = await tools.getQMToken()
 
@@ -76,7 +109,7 @@ async function getPromotionList(promotion_name) {
         }
 
         let promotion_id = data.data.list[0].promotion_id
-        let info = await getPromotionInfo(promotion_id)
+        let info = await getPromotionInfo(promotion_id,mini_program_platform_id)
         info.promotion_id = promotion_id
         return info;
     } catch (error) {

+ 1 - 1
src/api/qm/get_qm_recharge_template.js

@@ -37,7 +37,7 @@ CMD.get_recharge_template = async function (category,mini_program_platform_id=co
         'authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SUQiOjU0NDA1NjQxNjM3MTI4MjExMSwiQWNjb3VudE5hbWUiOiJ6aHVveXVlIiwiVGltZVN0YW1wIjoxNzM0MDg4MjI1LCJDbGllbnRJUCI6IjIxOS43Ny4yMzYuMTgwIiwiQnVmZmVyVGltZSI6MCwiZXhwIjoxNzM0MTc0NjI1LCJpc3MiOiJxbV9uZXdfbWVkaWFfZngiLCJuYmYiOjE3MzQwODgyMjUsIkVudiI6InJlbGVhc2UiLCJJc1NpbXVsYXRpb25Mb2dpbiI6ZmFsc2V9.LaEHd147NoCt1Wfo9ZZlCs4pludA7D3LajN4xff2H5o',
         'project': 'reader_paid_wxminiapp',
         'signature': 'b4782a395b0d0de3f78bb5c8157cb35ab0d6c51f3677a1cfb4b5390c39f63169',
-        'target-id': '546233830666047938',
+        'target-id': '544180064332673816',
         'cookie': 'sensorsdata2015jssdkcross=%7B%22%24device_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%7D; sa_jssdk_2015_new-media-fx_qimao_com=%7B%22distinct_id%22%3A%22193bdc124645e2-0cbeaee172d4ce8-4c657b58-921600-193bdc12465567%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E5%BC%95%E8%8D%90%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC%22%2C%22%24latest_referrer%22%3A%22http%3A%2F%2F120.79.128.142%3A4999%2F%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTkzYmRjMTI0NjQ1ZTItMGNiZWFlZTE3MmQ0Y2U4LTRjNjU3YjU4LTkyMTYwMC0xOTNiZGMxMjQ2NTU2NyJ9%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%22%2C%22value%22%3A%22%22%7D%7D',
         'Referer': 'https://new-media-fx.qimao.com/backend/recharge-configuration/index?projectId=reader_paid_wxminiapp&appId=9a2737aabb8f11ef93f90293e6ac97a2&accountId=546233830666047938'
     };

+ 1 - 1
src/data_manager/Controllers/other_book_controllers.js

@@ -6,7 +6,7 @@ class other_book_controllers {
         try {
             // 参数验证
             if (!params?.product_id) {
-                throw  'get_fq_book_tab_controllers:book_id ID is required';
+                throw  'other_book_controllers:book_id ID is required';
             }
 
             const product_id = params.product_id;

+ 10 - 0
src/helper.js

@@ -9,6 +9,16 @@ helper.base64 = function(str){
 helper.checkChannel = function(url,key) {
     return url.includes(key);
 }
+
+helper.checkChannelListKey = function(url,key_list) {
+    for (let index = 0; index < key_list.length; index++) {
+        const key = key_list[index];
+        if(!this.checkChannel(url,key)){
+            return false
+        }
+    }
+    return true
+}
 helper.capitalize_string = function(K) {
     // 将字符串按 "-" 分割,对每个单词首字母大写,然后重新用 "-" 连接
     return K.split("-")

+ 4 - 0
stopAllcreateLink.sh

@@ -0,0 +1,4 @@
+/home/node/node-v20.17.0-linux-x64/lib/node_modules/pm2/bin/pm2 stop hy_create_link_factory
+/home/node/node-v20.17.0-linux-x64/lib/node_modules/pm2/bin/pm2 stop fq_create_link_factory
+/home/node/node-v20.17.0-linux-x64/lib/node_modules/pm2/bin/pm2 stop dz_create_link_factory
+/home/node/node-v20.17.0-linux-x64/lib/node_modules/pm2/bin/pm2 stop qm_create_link_factory

+ 39 - 19
tg_factory_main.js

@@ -10,32 +10,52 @@ const config = require('./etc/config.json')
 const hy_search_book = require('./src/api/hy/hy_search_book'); 
 
 const axios = require('axios');
-// function getPlatformInfoByI(PlatformConfig,tg_platform_id){
-//     for (let index = 0; index < PlatformConfig.length; index++) {
-//         const element = PlatformConfig[index];
-//         if(element.tg_platform_id==tg_platform_id){
-//             return element
-//         }
-//     }
-//     return null
-// }
+function getPlatformInfoByI(PlatformConfig,tg_platform_id){
+    for (let index = 0; index < PlatformConfig.length; index++) {
+        const element = PlatformConfig[index];
+        if(element.tg_platform_id==tg_platform_id){
+            return element
+        }
+    }
+    return null
+}
 
-// function getMainInfoById(MainConfig,main_id){
-//     // console.log("MainConfig:",MainConfig)
-//     for (let index = 0; index < MainConfig.length; index++) {
-//         const element = MainConfig[index];
-//         if(element.id==main_id){
-//             return element
-//         }
-//     }
-//     return null
-// }
+function getMainInfoById(MainConfig,main_id){
+    // console.log("MainConfig:",MainConfig)
+    for (let index = 0; index < MainConfig.length; index++) {
+        const element = MainConfig[index];
+        if(element.id==main_id){
+            return element
+        }
+    }
+    return null
+}
 let isInit = false
 // config.isDebug
 if(config.isDebug){
     redis_help.connect( async (results)=>{
         if(results){
             isInit = true
+
+            // let MainConfig = await redis_help.getKeyValue("MainConfig")
+            // MainConfig = JSON.parse(MainConfig)
+            // let PlatformConfig = await redis_help.getKeyValue("PlatformConfig")
+            // PlatformConfig = JSON.parse(PlatformConfig)
+
+            // let PlatformInfo =  getPlatformInfoByI(PlatformConfig,3)
+
+            // let main_info = getMainInfoById(MainConfig,162)
+
+            // let data = {
+            //     product_id:"393425",
+            //     product_name:"转学生自称苗疆圣子,可我才是真圣子"
+            // }
+ 
+            // let {promotion_name} = await require("./5_CREATE_LINK_FACTORY/qm_create_link").runTask(data,main_info,PlatformInfo,()=>{
+
+            // })
+            // console.log("promotion_name:",promotion_name)
+
             // let res = await require('./src/api/dz/dz_new_search_book').search_id("11010292075")
             // console.log("res:",res)
                 // let response =  helper.resolveDomain("sdksaleapi.hubeidehuic.com")