Beispiel #1
0
def stat(Db,
         start_time,
         end_time,
         cursor=None,
         Host="localhost",
         User="******",
         Passwd="123456"):
    ## 检测每个渠道告警配置
    sql = 'select config from admin_game_alarm_config where id = 1'
    try:
        print base_stat.fetchall(cursor, sql)
        config = base_stat.fetchall(cursor, sql)[0][0]
        conf = json.loads(config)
    except:
        print "no check_alarm config"
        return

    last_check_time = start_time
    if start_time - base_stat.today0() < 30 * 60:
        last_check_time = base_stat.today0()

    ## 针对每个配置进行处理
    for alarm_type, alarm_val in conf.items():
        alarm_val = int(alarm_val)
        if int(alarm_type) == ALARM_PLAYER_STAKE_COIN:
            check_player_stake_coin(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_OUTPUT_COIN:
            check_player_output_coin(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_OUTPUT_COIN_TODAY:
            check_player_output_coin_today(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_REG_SAME_IP:
            check_reg_same_ip(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_REG_SAME_DEVICE:
            check_reg_same_device(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_OUT_STAKE_COIN_RATE:
            check_player_out_stake_coin_rate(cursor, alarm_val,
                                             last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_RECHARGE:
            check_player_recharge(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_RECHARGE_TODAY:
            check_player_recharge_today(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_WITHDRAW:
            check_player_withdraw(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_WITHDRAW_TODAY:
            check_player_withdraw_today(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_PRESENT:
            check_player_present(cursor, alarm_val, last_check_time)
        elif int(alarm_type) == ALARM_PLAYER_PRESENT_TODAY:
            check_player_present_today(cursor, alarm_val, last_check_time)
        else:
            pass

    print "check_alarm succ: ", start_time
Beispiel #2
0
def check_reg_same_device(cursor, alarm_val, last_check_time):
    sql = '''
        select did, val
        from
            (select did, count(1) as val
            from player
            where reg_time >= %d
            and did not in 
                (select distinct pid from admin_game_alarm where time >= %d and stype = %d)
            group by did)
        where val >= %d
    ''' % (base_stat.today0(), base_stat.today0(), ALARM_REG_SAME_DEVICE,
           alarm_val)
    for did, count in base_stat.fetchall(cursor, sql):
        sql = '''
            insert into admin_game_alarm (id, pid, time, stype, val, state, relate_id) 
            values (0, %d, %d, %d, '%s', %d, 0)
        ''' % (did, now_sec(), ALARM_REG_SAME_DEVICE, join([count, alarm_val
                                                            ]), STATE_UNREAD)
        cursor.execute(sql)
Beispiel #3
0
def check_player_present_today(cursor, alarm_val, last_check_time):
    sql = '''
        select give_id, val
        from
            (select give_id, sum(money) as val
            from log_bank_give
            where give_agent = 0
            and time >= %d
            and give_id not in 
                (select pid from admin_game_alarm where time >= %d and stype = %d)
            group by give_id)
        where val >= %d
    ''' % (base_stat.today0(), base_stat.today0(), ALARM_PLAYER_PRESENT_TODAY,
           alarm_val)
    for pid, money in base_stat.fetchall(cursor, sql):
        sql = '''
            insert into admin_game_alarm (id, pid, time, stype, val, state, relate_id) 
            values (0, %d, %d, %d, '%s', %d, 0)
        ''' % (pid, now_sec(), ALARM_PLAYER_PRESENT_TODAY,
               join([int(money / 100), alarm_val]), STATE_UNREAD)
        cursor.execute(sql)
Beispiel #4
0
def check_player_withdraw_today(cursor, alarm_val, last_check_time):
    sql = '''
        select pid, val
        from
            (select pid, sum(withdraw_deposit_money) as val
            from admin_withdraw
            where application_time >= %d
            and pid not in 
                (select pid from admin_game_alarm where time >= %d and stype = %d)
            group by pid) t
        where val >= %d
    ''' % (base_stat.today0(), base_stat.today0(), ALARM_PLAYER_WITHDRAW_TODAY,
           alarm_val)
    print sql
    for pid, money in base_stat.fetchall(cursor, sql):
        sql = '''
            insert into admin_game_alarm (id, pid, time, stype, val, state, relate_id) 
            values (0, %d, %d, %d, '%s', %d, 0)
        ''' % (pid, now_sec(), ALARM_PLAYER_WITHDRAW_TODAY,
               join([int(money / 100), alarm_val]), STATE_UNREAD)
        cursor.execute(sql)
Beispiel #5
0
def check_player_recharge_today(cursor, alarm_val, last_check_time):
    sql = '''
        select pid, val
        from
            (select pid, sum(cost) as val
            from admin_recharge
            where time >= %d
            and state = %d
            and pid not in 
                (select pid from admin_game_alarm where time >= %d and stype = %d)
            group by pid)
        where val >= %d
    ''' % (base_stat.today0(), PAY_STATE_SUCC, base_stat.today0(),
           ALARM_PLAYER_RECHARGE_TODAY, alarm_val)
    for pid, cost in base_stat.fetchall(cursor, sql):
        sql = '''
            insert into admin_game_alarm (id, pid, time, stype, val, state, relate_id) 
            values (0, %d, %d, %d, '%s', %d, 0)
        ''' % (pid, now_sec(), ALARM_PLAYER_RECHARGE_TODAY,
               join([int(cost / 100), alarm_val]), STATE_UNREAD)
        cursor.execute(sql)
Beispiel #6
0
def check_player_output_coin_today(cursor, alarm_val, last_check_time):
    sql = '''
        select pid, val
        from
            (select pid, sum(output_coin - stake_coin) as val
            from %s 
            where time >= %d
            and pid not in 
                (select distinct pid from admin_game_alarm where time >= %d and stype == %d)
            group by pid) t
        where val >= %d        
    ''' % (base_stat.get_table_log_player_subgame(
        now_sec()), base_stat.today0(), base_stat.today0(),
           ALARM_PLAYER_OUTPUT_COIN_TODAY, alarm_val)
    for pid, win_coin in base_stat.fetchall(cursor, sql):
        sql = '''
            insert into admin_game_alarm (id, pid, time, stype, val, state, relate_id) 
            values (0, %d, %d, %d, '%s', %d, 0)
        ''' % (pid, time, ALARM_PLAYER_OUTPUT_COIN_TODAY,
               join([win_coin, alarm_val]), STATE_UNREAD)
        cursor.execute(sql)
Beispiel #7
0
     pump, game_count in base_stat.fetchall(cursor, sql):
        sql = '''
    		insert into t_player_subgame 
    			(time, pid, gameid, roomtype, game_count, 
    			stake_coin, output_coin, pump)
    		values 
    			(%d, %d, %d, %d, %d,
    			%d, %d, %d)
    	''' % (tjdate, pid, gameid, roomtype, game_count, total_stake_coin,
            total_output_coin, pump)
        cursor.execute(sql)
        if cursor._result.warning_count > 0:
            print "sql err...", sql
            raise "sql err"

    print "player_subgame_stat succ:", time.strftime(
        "%Y-%m-%d %H:%M:%S", time.localtime(int(time.time())))


if __name__ == "__main__":
    end_time = base_stat.today0()
    start_time = end_time - 86400
    import sys

    db_name = "server_1"
    if len(sys.argv) > 1:
        db_name = sys.argv[1]
    if len(sys.argv) > 2:
        start_time = int(sys.argv[2])
        end_time = start_time + 86400
    stat(db_name, start_time, end_time)