dws_user_content_order.py 13.2 KB
# -*- coding: utf-8 -*-


'''
内容订单数据(全量同步,订单量多了,再用增量),定时任务,每10分钟运行一次
'''
import logging
import os
import sys
from common.mysql_uitl import fetch_all, save_result, save_etl_log
from common.time_util import now_str, YMDHMS_FORMAT


logging.basicConfig(format="%(asctime)s %(name)s:%(levelname)s:%(message)s", datefmt="%Y-%m-%d %H:%M:%S", level=logging.INFO)
file_name = sys.argv[0]
task_file = os.path.split(__file__)[-1].split(".")[0]


def dws_user_content_order(data_dt):
    # 新课程订单
    course_order_dict = query_dws_course_order()
    row1 = save_result('tamp_data_dws', 'dws_user_content_order', course_order_dict, file_name)

    # 老课程订单
    old_course_order_dict = query_dws_old_course_order()
    row2 = save_result('tamp_data_dws', 'dws_user_content_order', old_course_order_dict, file_name)

    # 购买探普贝
    recharge_order_dict = query_dws_recharge_order()
    row3 = save_result('tamp_data_dws', 'dws_user_content_order', recharge_order_dict, file_name)

    # 直播订单
    live_order_dict = query_dws_live_order()
    row4 = save_result('tamp_data_dws', 'dws_user_content_order', live_order_dict, file_name)

    # 购买栏目订单
    column_order_dict = query_dws_column_order()
    row5 = save_result('tamp_data_dws', 'dws_user_content_order', column_order_dict, file_name)

    # 购买新课程课件
    course_ware_order_dict = query_dws_course_ware_order()
    row6 = save_result('tamp_data_dws', 'dws_user_content_order', course_ware_order_dict, file_name)

    # 购买附件
    file_order_dict = query_dws_file_order()
    row7 = save_result('tamp_data_dws', 'dws_user_content_order', file_order_dict, file_name)

    # 线下活动订单
    offline_activity_order_dict = query_dws_offline_activity_order()
    row8 = save_result('tamp_data_dws', 'dws_user_content_order', offline_activity_order_dict, file_name)

    row = row1 + row2 + row3 + row4 + row5 + row6 + row7 + row8
    now_time = now_str(YMDHMS_FORMAT)
    save_etl_log('tamp_data_dws', 'dws_user_content_order', data_dt, row, 'done', task_file, now_time)


def query_dws_course_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id
                ,c.main_title as res_name
                ,o.payment_amount  
                ,o.ab_pay_mode     
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type    
                ,o.order_status  
                ,o.transaction_no   
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_course.course_package c
        on  	o.res_id = c.id
        where   o.res_type = '300'
        order   by o.data_dt desc 
    '''
    course_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return course_order_dict


# 购买老课程订单
def query_dws_old_course_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id
                ,c.title as res_name
                ,o.payment_amount       
                ,o.ab_pay_mode     
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type  
                ,o.order_status 
                ,o.transaction_no           
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_user.curriculum_res c
        on  	o.res_id = c.id
        where   o.res_type in ('4', '5')
        order   by o.data_dt desc 
    '''
    old_course_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return old_course_order_dict


# 购买探普贝,充值订单
def query_dws_recharge_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id 
                ,'' as res_name 
                ,o.payment_amount 
                ,o.ab_pay_mode           
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type   
                ,o.order_status 
                ,o.transaction_no                
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        where   o.res_type = '6'
        order   by o.data_dt desc 
    '''
    course_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return course_order_dict


# 直播订单
def query_dws_live_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id 
                ,c.zt_name as res_name
                ,o.payment_amount  
                ,o.ab_pay_mode          
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type  
                ,o.order_status  
                ,o.transaction_no                
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_zhibo.zhibo_theme c
        on  	o.res_id = c.id
        where   o.res_type = '3'
        order   by o.data_dt desc 
    '''
    course_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return course_order_dict


# 栏目订单
def query_dws_column_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id 
                ,c.title as res_name
                ,o.payment_amount  
                ,o.ab_pay_mode          
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type   
                ,o.order_status
                ,o.transaction_no                 
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_user.curriculum_column c
        on  	o.res_id = c.id
        where   o.res_type = '1'
        order   by o.data_dt desc 
    '''
    course_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return course_order_dict


# 购买新课程课件
def query_dws_course_ware_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id 
                ,c.original_name as res_name
                ,o.payment_amount
                ,o.ab_pay_mode            
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type    
                ,o.order_status   
                ,o.transaction_no             
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_user.cs_file_record c
        on  	o.res_id = c.guid
        where   o.res_type = '305'
        order   by o.data_dt desc 
    '''
    course_ware_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return course_ware_order_dict


def query_dws_file_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id 
                ,c.remark as res_name
                ,o.payment_amount    
                ,o.ab_pay_mode        
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type    
                ,o.order_status 
                ,o.transaction_no               
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_zhibo.zhibo_file c
        on  	o.res_id = c.id
        where   o.res_type = '7'
        order   by o.data_dt desc 
    '''
    file_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return file_order_dict


# 线下活动订单
def query_dws_offline_activity_order():
    function_name = sys._getframe().f_code.co_name
    logging.info(f'{function_name} start')
    sql = '''
        select  o.id
                ,o.order_id         
                ,o.data_dt          
                ,o.user_id          
                ,o.real_name        
                ,o.user_name        
                ,o.nickname         
                ,o.team_id          
                ,o.telephone        
                ,o.res_id 
                ,c.activity_title as res_name
                ,o.payment_amount
                ,o.ab_pay_mode            
                ,o.pay_mode         
                ,o.res_type   
                ,o.res_type_name       
                ,o.order_type  
                ,o.order_status 
                ,o.transaction_no                 
                ,o.present_status   
                ,o.group_buy_status 
                ,o.order_number     
                ,o.create_time      
                ,o.pay_time         
                ,o.complete_time   
        from    tamp_data_dwd.dwd_user_content_order o
        inner   join tamp_jifen.offline_activity_config c
        on  	o.res_id = c.activity_id
        where   o.res_type = '323'
        order   by o.data_dt desc 
    '''
    file_order_dict = fetch_all(sql, None)
    logging.info(f'{function_name} success')
    return file_order_dict


if __name__ == '__main__':
    import datetime
    begin = datetime.date(2021, 9, 15)
    end = datetime.date(2021, 9, 22)
    data_dt = begin
    delta = datetime.timedelta(days=1)
    while data_dt <= end:
        print(data_dt.strftime("%Y-%m-%d"))
        dws_user_content_order(data_dt)
        data_dt += delta