Exemple #1
0
 private function _cal_invest_remain_time()
 {
     $fund_issue_time = Cache_Const::getInstance()->get_const('fund_issue_time');
     $server_start_time = strtotime(SERVER_FIRST_START_TIME);
     if (empty($fund_issue_time)) {
         # 无法获取功能发布时间,无法区分新服老服,只能使用开服时间
         $deadline = Com_Util::get_date_end($server_start_time) + ($this->fund_valid_deposit_day - 1) * 86400;
     } else {
         if ($server_start_time > $fund_issue_time) {
             # 新服
             $deadline = Com_Util::get_date_end($server_start_time) + ($this->fund_valid_deposit_day - 1) * 86400;
         } else {
             # 老服,使用功能发布时间
             $deadline = Com_Util::get_date_end($fund_issue_time) + ($this->fund_valid_deposit_day - 1) * 86400;
         }
     }
     $remain_time = max(0, $deadline - $this->current_time);
     return $remain_time;
 }
Exemple #2
0
 public function do_async_deal_event_log($event_log_info)
 {
     if (empty($event_log_info)) {
         return false;
     }
     $event_log_info = json_decode($event_log_info, true);
     $date = date('Y-m-d H:i:s');
     try {
         echo "=========[AsyncDealEventLog:date={$date}|" . json_encode($event_log_info) . "=========\n";
         switch ($event_log_info['log_type']) {
             case 'login':
                 $re = $this->get_data('Event')->record_player_event_log_login($event_log_info);
                 break;
             case 'pub':
                 $re = $this->get_data('Event')->record_player_event_log_pub($event_log_info);
                 break;
             case 'shop':
                 $re = $this->get_data('Event')->record_player_event_log_shop($event_log_info);
                 break;
             case 'sign':
                 $re = $this->get_data('Event')->record_player_event_log_sign($event_log_info);
                 break;
             case 'item_consume':
                 #$re = $this->get_data('Event')->record_player_event_log_item_consume($event_log_info);
                 $re = $this->get_data('Event')->record_player_event_log_item_consume_other($event_log_info);
                 break;
             case 'coin_exchange':
                 $re = $this->get_data('Event')->record_player_event_log_coin_exchange($event_log_info);
                 break;
             case 'daily_active':
                 $event_log_info['reg_time'] = Com_Util::get_date_end($event_log_info['reg_time']);
                 # 替换记录时间为当前结束时间戳
                 $re = $this->get_data('Event')->record_player_event_log_daily_active($event_log_info);
                 break;
             case 'grabmine':
                 $re = $this->get_data('Event')->record_player_event_log_grabmine($event_log_info);
                 break;
             case 'world_boss':
                 $re = $this->get_data('Event')->record_player_event_log_world_boss($event_log_info);
                 break;
             case 'world_boss_treasure':
                 $re = $this->get_data('Event')->record_player_event_log_world_boss_treasure($event_log_info);
                 break;
             case 'athena':
                 $re = $this->get_data('Event')->record_player_event_log_athena($event_log_info);
                 break;
         }
     } catch (Exception $e) {
         echo $e->getMessage();
     }
 }
Exemple #3
0
 public function _cal_login_refer($player_id, $event_date_head = 0, $event_date_tail = 0)
 {
     $login_series_max = $login_acc = 0;
     if (empty($player_id) || empty($event_date_head) || empty($event_date_tail)) {
         return array($login_series_max, $login_acc);
     }
     # 没有定义活动周期
     # 出于效率考虑,日志查询仅执行1次
     $event_logs = $this->get_data('Event')->get_player_event_log_login($player_id, $event_date_head, $event_date_tail);
     if (empty($event_logs)) {
         return array($login_series_max, $login_acc);
     }
     $login_status = array();
     # 轮询活动所跨日期区间
     $event_date_end = Com_Util::get_date_end($event_date_tail);
     $loop_time = $event_date_head;
     while ($loop_time < $event_date_end) {
         $day_stt = Com_Util::get_date_start($loop_time);
         # 当前起始时间戳
         $day_end = Com_Util::get_date_end($loop_time);
         # 当前结束时间戳
         #$day_stt_correct = max($day_stt, $event_date_head);	# 修正,由于日志记录严格按照活动时间获取,故没必要修正
         #$day_end_corrent = min($day_end, $event_date_tail);	# 修正,由于日志记录严格按照活动时间获取,故没必要修正
         foreach ($event_logs as $event_log) {
             if ($event_log['login_time'] >= $day_stt && $event_log['login_time'] <= $day_end) {
                 # 当天有登录,结束循环
                 $login_status[$day_stt] = 1;
                 break;
             } elseif ($event_log['logout_time'] >= $day_stt && $event_log['logout_time'] <= $day_end) {
                 # 当天有登出,则也算有登录
                 $login_status[$day_stt] = 1;
                 break;
             }
         }
         $loop_time += 86400;
     }
     $login_acc = count($login_status);
     $login_series = 0;
     # 当前计数连续登录天数
     $pre_day_time = 0;
     # 前一天当前时间戳
     if (!empty($login_status)) {
         foreach ($login_status as $day_time => $status) {
             if (empty($login_series)) {
                 $login_series = 1;
             } else {
                 if ($day_time - $pre_day_time == 86400) {
                     $login_series += 1;
                 } else {
                     $login_series_max = max($login_series_max, $login_series);
                     $login_series = 0;
                 }
             }
             $pre_day_time = $day_time;
         }
     }
     return array($login_series_max, $login_acc);
 }