Просмотр исходного кода

ADD:数据变为两sdk合并

cxyu 3 лет назад
Родитель
Сommit
2c79027db6
1 измененных файлов с 447 добавлено и 0 удалено
  1. 447 0
      app/game_data_sum/data_sum.py

+ 447 - 0
app/game_data_sum/data_sum.py

@@ -0,0 +1,447 @@
+from model.DateUtils import DateUtils
+from model.DataBaseUtils import MysqlUtils, CkUtils
+from datetime import datetime, timedelta, timezone
+import time
+import logging
+
+
+def h_member_sum(ymd):
+    print(f'开始迁移 h_member {ymd}')
+    datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
+    datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
+        days=1)).timetuple()
+
+    timestamp_ymd = time.mktime(datatime_ymd)
+    timestamp_tom = time.mktime(datatime_ymd_tom)
+
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+
+        sql = f'''
+        insert into GameDataSum.h_member_sum
+        select 
+        concat('{prefix}',toString(id)) id ,
+        `username` ,
+        `nickname` ,
+        `mobile_prefix` ,
+        `reg_mobile` ,
+        `reg_email` ,
+        `password` ,
+        `pay_pwd` ,
+        `email` ,
+        `mobile` ,
+        `from_device` ,
+        `device_id` ,
+        concat('{prefix}',toString(app_id)) app_id ,
+        `op_id`,
+        concat('{prefix}',toString(agent_id)) agent_id ,
+        `agent_game` ,
+        `status`,
+        `reg_ip` ,
+        `avatar` ,
+        concat('{prefix}',toString(parent_mem_id)) parent_mem_id ,
+        create_time ,
+        update_time ,
+        `real_name` ,
+        `identify_type` ,
+        `id_card` ,
+        `is_switch` ,
+         switch_time,
+        `switch_money` ,
+        `alipay_account` ,
+        concat('{prefix}',toString(vb_id)) vb_id 
+    from {database_name}.h_member hm 
+    where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
+    '''
+        print(sql)
+        ck.execute(sql)
+
+
+def h_mg_role_sum(ymd):
+    print(f'开始迁移 h_mg_role_sum {ymd}')
+    datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
+    datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
+        days=1)).timetuple()
+
+    timestamp_ymd = time.mktime(datatime_ymd)
+    timestamp_tom = time.mktime(datatime_ymd_tom)
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        sql = f'''
+        insert into GameDataSum.h_mg_role_sum
+        select 
+            concat('{prefix}',toString(id)) id ,
+            concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
+            concat('{prefix}',toString(app_id)) app_id ,
+            concat('{prefix}',toString(server_id)) server_id ,
+            `server_name` ,
+            concat('{prefix}',toString(role_id)) role_id ,
+            `role_name` ,
+            `role_level` ,
+            `role_vip` ,
+            `money` ,
+            `combat_num` ,
+            `ext` ,
+            `os` ,
+            `create_time` ,
+            `update_time` 
+        from {database_name}.h_mg_role
+        where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
+
+        '''
+        print(sql)
+        ck.execute(sql)
+
+
+def h_game_sum():
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        sql = f'''
+        insert into GameDataSum.h_game_sum
+        select 
+            concat('{prefix}',toString(id)) id ,
+            `name` ,
+            `en_name` ,
+            `en_abbr` ,
+            `app_key` ,
+            `tags` ,
+            `category` ,
+            `classify` ,
+            `icon` ,
+            `cp_payback_url` ,
+            `cp_id` ,
+            concat('{prefix}',toString(parent_id)) parent_id ,
+            `package_name` ,
+            `pay_switch` ,
+            `order_switch` ,
+            `pay_show` ,
+            `float_is_show` ,
+            `status` ,
+            `is_delete` ,
+            `delete_time` ,
+            `is_online` ,
+            `is_sdk` ,
+            `list_order` ,
+            `rise_order` ,
+            `hot_order` ,
+            `like_order` ,
+            `publicity` ,
+            `language` ,
+            `description` ,
+            `image` ,
+            `run_time` ,
+            `create_time` ,
+            `update_time` ,
+            `fine_order` ,
+            `promote_switch` ,
+            `apple_id` ,
+            `add_cp_time` ,
+            `is_bt` ,
+            `is_auth` ,
+            `single_tag` ,
+            `ext_info` ,
+            `jump_switch` ,
+            `is_push` ,
+            `is_exp` 
+            from {database_name}.h_game
+        '''
+        print(sql)
+        ck.execute(sql)
+
+
+def h_mem_game_sum(ymd):
+    print(f'开始迁移 h_mem_game_sum {ymd}')
+    datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
+    datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
+        days=1)).timetuple()
+
+    timestamp_ymd = time.mktime(datatime_ymd)
+    timestamp_tom = time.mktime(datatime_ymd_tom)
+
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        sql = f'''
+        insert into GameDataSum.h_mem_game_sum
+        select 
+        concat('{prefix}',toString(id)) id ,
+        concat('{prefix}',toString(mem_id)) mem_id ,
+        concat('{prefix}',toString(guided_agent_id)) guided_agent_id ,
+        concat('{prefix}',toString(app_id)) app_id ,
+        `nickname` ,
+        `create_time` ,
+        `update_time` ,
+        `is_default` ,
+        `like` ,
+        `star_cnt` ,
+        `status` ,
+        `sum_money` 
+          from {database_name}.h_mem_game
+        where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
+
+        '''
+        print(sql)
+        ck.execute(sql)
+
+
+def h_log_mem_login_sum(ymd):
+    def get_tables(database_name):
+        sql = f'''
+        select name from `system`.tables t 
+            where database ='{database_name}'
+            and name like 'h_log_mem_login_%'
+        '''
+        pd = ck.getData_pdv2(sql)
+        res_list = []
+        for _ in pd:
+            for name in pd[_]:
+                res_list.append(name)
+        return res_list
+
+    print(f'开始迁移 h_log_mem_login_sum {ymd}')
+    datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
+    datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
+        days=1)).timetuple()
+
+    timestamp_ymd = time.mktime(datatime_ymd)
+    timestamp_tom = time.mktime(datatime_ymd_tom)
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    # mp_mp_conf mp_conf_agent
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        table_names = get_tables(database_name)
+        for table_name in table_names:
+            sql = f'''
+            insert into GameDataSum.h_log_mem_login_sum
+            select 
+            concat('{prefix}','{table_name}',toString(id)) id ,
+            `date` ,
+            concat('{prefix}',toString(mem_id)) mem_id ,
+            concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
+            concat('{prefix}',toString(agent_id)) agent_id ,
+            `agent_game` ,
+            concat('{prefix}',toString(app_id)) app_id ,
+            `device_id` ,
+            `idfv` ,
+            `mac` ,
+            `ip` ,
+            `brand` ,
+            `model` ,
+            `os` ,
+            `os_version` ,
+            `screen` ,
+            `net` ,
+            `imsi` ,
+            `longitude` ,
+            `latitude` ,
+            `userua` ,
+            `from` ,
+            `reg_time` ,
+            `create_time` ,
+            `open_cnt` ,
+            concat('{prefix}',toString(reg_app_id)) reg_app_id 
+             from {database_name}.{table_name}
+                    where create_time>={timestamp_ymd} and create_time<={timestamp_tom}
+            '''
+            print(sql)
+            ck.execute(sql)
+
+
+def mp_mp_conf_sum():
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        sql = f'''
+        insert into GameDataSum.mp_mp_conf_sum
+        select 
+            concat('{prefix}',toString(id)) id ,
+            concat('{prefix}',toString(app_id)) app_id ,
+        `mp_id` ,
+        `app_secret` ,
+        `sand_key` ,
+        `type` ,
+        `email` ,
+        `password` ,
+        `master` ,
+        `company` ,
+        `mobile` ,
+        `wx_name` ,
+        `wx_intro` ,
+        `wx_logo` ,
+        `source_id` ,
+        `wx_account`,
+        `qr_code` ,
+        `ext_info` ,
+        `parent_id` ,
+        `is_delete` ,
+        `delete_time` ,
+        `create_time` ,
+        `update_time` 
+        from {database_name}.mp_mp_conf
+        '''
+        ck.execute(sql)
+
+
+def mp_conf_agent_sum():
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        sql = f'''
+            insert into GameDataSum.mp_conf_agent_sum
+             select 
+            concat('{prefix}',toString(id)) id ,
+            `conf_id`,
+            concat('{prefix}',toString(app_id)) app_id ,
+            concat('{prefix}',toString(agent_id)) agent_id ,    
+            concat('{prefix}',toString(advertiser_conf_id)) advertiser_conf_id ,    
+            `create_time` ,
+            `update_time` 
+            from  {database_name}.mp_conf_agent 
+            '''
+        ck.execute(sql)
+
+
+def h_pay_sum(ymd):
+    print(f'开始迁移 h_pay_sum {ymd}')
+    datatime_ymd = datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))).timetuple()
+    datatime_ymd_tom = (datetime.strptime(ymd, '%Y-%m-%d').astimezone(timezone(timedelta(hours=8))) + timedelta(
+        days=1)).timetuple()
+
+    timestamp_ymd = time.mktime(datatime_ymd)
+    timestamp_tom = time.mktime(datatime_ymd_tom)
+
+    database_infos = {('sdk_two_', 'GameDataTwoDbMpPart'), ('sdk_one_', 'GameDataOneDbMpPart')}
+    for database_info in database_infos:
+        prefix, database_name = database_info
+        sql = f'''
+        insert into GameDataSum.h_pay_sum
+        select 
+        concat('{prefix}',toString(id)) id ,
+        concat('{prefix}',toString(order_id)) order_id ,
+        concat('{prefix}',toString(cp_order_id)) cp_order_id ,
+        concat('{prefix}',toString(mem_id)) mem_id ,        
+        concat('{prefix}',toString(mg_mem_id)) mg_mem_id ,
+        concat('{prefix}',toString(agent_id)) agent_id ,
+        concat('{prefix}',toString(app_id)) app_id ,
+        `currency` ,
+        `amount` ,
+        `real_amount` ,
+        concat('{prefix}',toString(product_id)) product_id ,
+        `product_cnt` ,
+        `product_name` ,
+        `coupon_amount` ,
+        `ptb_amount` ,
+        `gm_amount` ,
+        `integral` ,
+        `integral_money` ,
+        `rebate_amount` ,
+        `rate` ,
+        `status` ,
+        `cp_status` ,
+        `payway`,
+        `mobile_prefix` ,
+        `is_handle` ,
+        `pay_time` ,
+        `create_time` ,
+        `update_time` ,
+        `is_distribute` ,
+        `notify_cnt` ,
+        `last_notify_time` ,
+        `ext` ,
+        `mem_note` ,
+        `admin_note` ,
+        `remark` ,
+        `is_switch` ,
+        `vb_id` 
+        from  {database_name}.h_pay 
+        where update_time>={timestamp_ymd} and update_time<={timestamp_tom}
+
+            '''
+        print(sql)
+        ck.execute(sql)
+
+
+def optimize_sql():
+    final_sql_h_pay_sum = ''' 
+        optimize table  GameDataSum.h_pay_sum final
+        '''
+    ck.execute(final_sql_h_pay_sum)
+
+    final_sql_mp_conf_agent_sum = ''' 
+        optimize table  GameDataSum.mp_conf_agent_sum final
+        '''
+    ck.execute(final_sql_mp_conf_agent_sum)
+
+    final_sql_mp_mp_conf_sum = ''' 
+        optimize table  GameDataSum.mp_mp_conf_sum final
+        '''
+    ck.execute(final_sql_mp_mp_conf_sum)
+
+    final_sql_h_log_mem_login_sum = ''' 
+        optimize table  GameDataSum.h_log_mem_login_sum final
+        '''
+    ck.execute(final_sql_h_log_mem_login_sum)
+
+    final_sql_h_mem_game_sum = ''' 
+        optimize table  GameDataSum.h_mem_game_sum final
+        '''
+    ck.execute(final_sql_h_mem_game_sum)
+
+    final_sql_h_game_sum = ''' 
+        optimize table  GameDataSum.h_game_sum final
+        '''
+    ck.execute(final_sql_h_game_sum)
+
+    final_sql_h_mg_role_sum = ''' 
+        optimize table  GameDataSum.h_mg_role_sum final
+        '''
+    ck.execute(final_sql_h_mg_role_sum)
+
+    final_sql_h_member_sum = ''' 
+        optimize table  GameDataSum.h_member_sum final
+        '''
+    ck.execute(final_sql_h_member_sum)
+
+
+def change_data_style(ymd):
+    h_member_sum(ymd)
+    h_mg_role_sum(ymd)
+    h_mem_game_sum(ymd)
+    h_log_mem_login_sum(ymd)
+    h_pay_sum(ymd)
+
+    mp_mp_conf_sum()
+    mp_conf_agent_sum()
+    h_game_sum()
+
+
+def change_data_style_hourly():
+    ymd = du.getNow()
+    change_data_style(ymd)
+    optimize_sql()
+
+
+def change_data_style_daily():
+    for i in du.getDateLists(du.get_n_days(-10), du.get_n_days(0)):
+        print(i)
+        change_data_style(i)
+    optimize_sql()
+
+
+def change_data_style_choice(st, et):
+    for i in du.getDateLists(st, et):
+        print(i)
+        change_data_style(i)
+    optimize_sql()
+
+
+ck = CkUtils()
+du = DateUtils()
+if __name__ == '__main__':
+    dt = DateUtils()
+    st = du.get_n_days(-30)
+    et = du.getNow()
+    change_data_style_choice(st, et)