//同步黑岩免费的发布时间
const config = require("../etc/config.json");
const mysql = require('mysql2/promise');
const taskdbConfig = config.isDebug?config.debug_task_mysql:config.release_task_mysql
const redis_help = require('../src/use_redis');
const hy_search_book = require('../src/api/hy/hy_search_book'); 
const helper = require("../src/helper");
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 tools = require("../tools");
const CMD = {}
async function processTask(){
    let right_status = true
    let connection  = null
    try{
        connection = await mysql.createConnection({
            ...taskdbConfig,
            multipleStatements: true
        });
        //先获取100本没有发布时间的黑岩书籍
        let sql = `SELECT * FROM video_product WHERE book_platform = ${config.platform_heiyanmf} AND  publish_time IS NULL  LIMIT 500`
        console.log("sql:",sql)
        const [rows] = await connection.execute(
            sql
        );

        if(rows.length<=0){
            throw 0
        }

        for (let index = 0; index < rows.length; index++) {
            let video_product_info = rows[index]
     
            // let data = 
            // console.log("data:",data)
            let data = await CMD.search_parent_id(connection,video_product_info.product_parent_id)
            if(data!=null){
                let publish_time = helper.getDate7DaysBefore(data.publish_time,null,'YYYY-MM-DD') 
                await connection.execute(
                    `UPDATE video_product SET publish_time = ?  WHERE id = ${video_product_info.id} `,
                    [publish_time]
                );
            }else{

                let hy_book_data = await CMD.add_parent_book(video_product_info.product_parent_id)
                if(hy_book_data!=null){
                    let publish_time = hy_book_data.openTime
                    if(publish_time==undefined){
                        publish_time = hy_book_data.createTime
                    }
                    let words = hy_book_data.words
                    let book_name = hy_book_data.name;
                    let genre = 1
                    if(words>100000){
                        genre = 1;
                    }else{
                        genre = 3;
                    }
                    await CMD.insert_product({
                        tg_platform_id:config.platform_heiyan,
                        book_name:book_name,
                        genre:genre,
                        book_id:video_product_info.product_parent_id,
                        words:words,
                        publish_time:publish_time
                    })
                }else{
                    await connection.execute(
                         ` UPDATE video_product SET  publish_time = '2000-01-01 01:01:01' WHERE id = ${video_product_info.id}  `
                    );
                    console.error("查无此书:",video_product_info,hy_book_data)
                }
            }
        }


    }catch(e){
        if(e==0){
            right_status = false
        }
        console.error("processTask error:",e)
    } finally{
        if(connection!=null){
            connection.end()
        }
        global.setTimeout(processTask, 2000);
    }

}

CMD.add_parent_book = async function(product_id){
    let data = await hy_search_book.search_id(product_id)
    if(data==undefined||data==null){
        data = null
    }

    if(data!=null){
        if(data.rows==null||data.rows==undefined){
            data = null
        }
    }
    if(data!=null){
        if(data.rows.length<=0){
            data = null
        }
    }
    if(data!=null){
        return data.rows[0]
    }
    return data
}

CMD.search_parent_id = async function(connection,product_parent_id) {
    let sql = `SELECT * FROM video_product WHERE product_id = '${product_parent_id}' LIMIT 1`
    const [rows] = await connection.execute(
        sql
    );
    if(rows.length<=0){
        return null
    }
    return rows[0]
}
CMD.insert_product = async function(data){
    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,
        publish_time:data.publish_time
    })

    
}


CMD.init = async function(){
    redis_help.connect((results)=>{
        if(results){
            processTask();
        }
    })

}

CMD.init()