123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- const CMD = {}
- const video_product_controllers = require('../src/data_manager/Controllers/video_product_controllers');
- const filter_data_controllers = require('../src/data_manager/Controllers/filter_data_controllers');
- const video_applet_product_controllers = require('../src/data_manager/Controllers/video_applet_product_controllers');
- const redis_help = require('../src/use_redis');
- const axios = require('axios');
- const config = require('../etc/config.json');
- const time_count = 1000;
- const task_queue = []
- function getProductById(product_list,product_id){
- for (let index = 0; index < product_list.length; index++) {
- const product_item = product_list[index];
- if(product_item.product_id==product_id){
- return product_item
- }
- }
- return null
- }
- async function processTask(){
- let result = null
- try{
- let isPauseTask = await redis_help.getKeyValue("isPauseTask")
- if(isPauseTask=="true"){
- return
- }
- let FilterConfig = await redis_help.getKeyValue("FilterConfig")
- FilterConfig = JSON.parse(FilterConfig)
- // result = await filter_data_controllers.getFilterDataByStatusAndLimit({ status: 0 , tg_platform_id: config.platform_dianzhong },500);
- // if(result.success){
- // let ProductIds = []
- // let FilterList = []
- // for (let index = 0; index < result.data.length; index++) {
- // let filter_item = result.data[index];
- // ProductIds.push(filter_item.book_id)
- // FilterList[filter_item.book_id] = filter_item
- // }
- // console.log("ProductIds:",ProductIds)
- // let product_list_result = await video_product_controllers.findNonExistentProductIds(ProductIds);
- // if(product_list_result.success){
- // for (let index = 0; index < result.data.length; index++) {
- // let filter_item = result.data[index];
- // if(product_list_result.data.existingProductIds.has(filter_item.book_id)){
- // let info = FilterList[filter_item.book_id];
- // let product_item = getProductById(product_list_result.data.existingRecords,filter_item.book_id)
- // if (!info) {
- // throw `No filter info found for book_id: ${filter_item.book_id}`
- // }
- // if (!product_item) {
- // throw `product_item is null: ${filter_item.book_id}`
- // }
- // info.words = product_item.words
- // info.genre = product_item.genre
- // info.book_id = product_item.product_id
- // info.book_name = product_item.product_name
- // await CMD.update_filter_data(FilterConfig,info)
- // await new Promise(resolve => setTimeout(resolve,100));
- // }
- // }
- // let Ids = []
- // for (let index = 0; index < product_list_result.data.nonExistentIds.length; index++) {
- // const product_id = product_list_result.data.nonExistentIds[index];
- // Ids.push(FilterList[product_id].id)
- // task_queue.push({result:{data:FilterList[product_id]}})
- // }
- // console.log("Ids:",Ids)
- // if(Ids.length>0){
- // await filter_data_controllers.updateFilterDataByIds({ids:Ids},{status:1})
- // }
-
- // }
-
- // }
- // }catch(e){
- // console.error("processTask:",e)
- // } finally{
- // global.setTimeout(processTask, 100);
- // }
- let isInsertTask = false
- result = await filter_data_controllers.getFilterDataByStatus({ status: 0 , tg_platform_id: config.platform_dianzhong });
- if(result.success){
- let tg_platform_id = result.data.tg_platform_id
- //判断是否存在这本书
- if(tg_platform_id==config.platform_dianzhong){ //点众
- let dz_book_result = await video_product_controllers.getProductData({ book_id: result.data.book_id });
- if(dz_book_result.success){
- result.data.words = dz_book_result.data.words
- result.data.genre = dz_book_result.data.genre
- result.data.book_id = dz_book_result.data.product_id
- result.data.book_name = dz_book_result.data.product_name
- }else{
- isInsertTask = true
- }
- }
- if(!isInsertTask){
- await CMD.update_filter_data(FilterConfig,result.data)
- }else{
- await filter_data_controllers.updateFilterData({id:result.data.id},{status:1})
- task_queue.push({result:result})
- }
- }
- }catch(e){
- console.error("processTask error:",e)
- // if(result!=null&&result!=undefined){
- // await filter_data_controllers.updateFilterData({id:result.data.id},{status:2})
- // }
- } finally{
- global.setTimeout(processTask, 100);
- }
- }
- async function processCreateTask(){
- let result = null
- try{
- if(task_queue.length>0){
- let task_queue_item = task_queue.pop()
- let product = await video_product_controllers.getProductData({ book_id: task_queue_item.result.data.book_id });
- let FilterConfig = await redis_help.getKeyValue("FilterConfig")
- FilterConfig = JSON.parse(FilterConfig)
- if(!product.success){
- result = task_queue_item.result
- let tg_platform_id = result.data.tg_platform_id
- if(tg_platform_id==config.platform_dianzhong){ //点众
- let dz_book_data = await require('../src/api/dz/dz_search_book').search_id(result.data.book_id)
- if(dz_book_data==null){
- result.data.genre = 999
- }else{
- dz_book_data.tg_platform_id = result.data.tg_platform_id
- if(CMD.isGenre(FilterConfig,dz_book_data.genre)){
- await CMD.insert_product(dz_book_data)
- }
- result.data.words = dz_book_data.words
- result.data.genre = dz_book_data.genre
- result.data.book_id = dz_book_data.book_id
- result.data.book_name = dz_book_data.book_name
- }
-
- }
- }
- await CMD.update_filter_data(FilterConfig,result.data)
- }
- }catch(e){
- console.log("error::",e)
- if(result!=null){
- await filter_data_controllers.updateFilterData({id:result.data.id},{status:2})
- }
- console.log("processCreateTask:",e)
- } finally{
- global.setTimeout(processCreateTask, time_count);
- }
- }
- CMD.init = async function(){
- redis_help.connect((results)=>{
- if(results){
- }
- })
- processTask();
- processCreateTask();
- }
- CMD.getAppInfoByPlatformId = function(AppConfig,tg_platform_id){
- let temp = []
- for (let index = 0; index < AppConfig.length; index++) {
- const element = AppConfig[index];
- if(element.tg_platform_id==tg_platform_id){
- temp.push(element)
- }
- }
- return temp
- }
- 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
- }
- CMD.getMainInfoByAppid = function(MainConfig,app_id){
- let list = []
- for (let index = 0; index < MainConfig.length; index++) {
- const element = MainConfig[index];
- if(element.app_id==app_id){
- list.push(element)
- }
- }
- return list
- }
- CMD.isGenre = function(FilterConfig,genre){
- let is_need = false
- //判断长篇短篇是否是要的数据
- for (let index = 0; index < FilterConfig.genre.length; index++) {
- const element = FilterConfig.genre[index];
- if(genre==element){
- is_need = true
- break
- }
- }
- return is_need
- }
- 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 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 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 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})
- }
- }
- CMD.insert_product = async function(data){
- return await video_product_controllers.createProductData({
- book_platform:data.tg_platform_id,
- product_name:data.book_name,
- genre:data.genre,
- product_id:data.book_id,
- words:data.words
- })
- }
- CMD.init()
|