from model.DingTalkUtils import DingTalkUtils
from model.DateUtils import DateUtils
from model.DataBaseUtils import MysqlUtils, CkUtils
import logging

du = DateUtils()
db = MysqlUtils()
ck = CkUtils()


def src_book_info():
    logging.info('书籍卡点信息,开始')
    logging.info("run> src_book_info")
    sql = """
            SELECT  date_format(a.effect_day,'%Y-%m-%d'),
            case a.type when 'mp' then 'MP' when 'gdt' then 'GDT' end type,
            b.book_name,c.platform_name,a.node_price from t_zx_book_ratio a 
            left join t_zx_book b on a.zx_book_id=b.id 
            left join t_platform_info c on b.platform_id=c.id  
            """

    data = db.zx_platform.getData(sql)

    di = {}
    for i in data:
        thedate = i[0]
        while True:
            if thedate > du.get_n_days(0):
                break
            else:
                di[thedate + ',' + i[1] + ',' + i[2] + ',' + i[3]] = i[4]
                thedate = du.add_days(thedate, 1)
    li = []
    for i, j in di.items():
        li.append(i.split(',') + [j])
    # db.dm.execute("truncate table src_book_info")
    db.dm.executeMany("replace into src_book_info(dt,type,book,platform,node) values (%s,%s,%s,%s,%s)", li)
    logging.info('src_book_info success')
    logging.info('书籍卡点信息,结束')


if __name__ == '__main__':
    try:
        src_book_info()
    except Exception as e:
        DingTalkUtils().send(str(e))