$mysql_conf['host'], 'port' => $mysql_conf['port'], 'user' => $mysql_conf['user'], 'passwd' => $mysql_conf['passwd'], 'dbname' => 'gamedb2001_' . $mysql_conf['instance_id'] )); return $conn; } protected function getActivityConfig($activity_id) { $g_conf_activity_cluster = require('../res/activity@activity.php'); $activity_conf = getActivityConfig($g_conf_activity_cluster, $activity_id); $a = array( 'id' => $activity_conf['id'], 'name' => $activity_conf['name'], 'des' => $activity_conf['des'], 'start_date' => $activity_conf['start_date'], 'end_date' => $activity_conf['end_date'], ); return $a; } protected function getActivityRewardConfig($activityReward_id) { $g_conf_activityReward_cluster = require('../res/activityReward@activityReward.php'); $activityReward_conf = getActivityRewardConfig($g_conf_activityReward_cluster, $activityReward_id); $act = array( 'id' => $activityReward_conf['id'], 'activity_id' => $activityReward_conf['activity_id'], 'condition' => $activityReward_conf['condition'], 'parameter' => $activityReward_conf['parameter'], 'start_end_time' => $activityReward_conf['start_end_time'], 'activity_reward' => $activityReward_conf['activity_reward'], 'exchange_num' => $activityReward_conf['exchange_num'], 'exchange_item' => $activityReward_conf['exchange_item'] ); return $act; } protected function getExplode($string) { $delim = "|"; $drop_multiply = explode($delim, $string); $delim1 = ":"; $arr = array(); for ($i = 0; $i < count($drop_multiply); $i++) { $mul = explode($delim1, $drop_multiply[$i]); array_push($arr, $mul); } return $arr; } public function activityInfo() { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); if (!$login) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $conn = $this->getMysql($account_id); $activity_list = array(); $activity_skin_list = array(); $activity_quest_list = array(); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } //活动列表 $g_conf_activity_cluster = require('../res/activity@activity.php'); for ($i = 1; $i <= count($g_conf_activity_cluster); $i++) { $start_status = 0; $a = $this->getActivityConfig($i); if (time() >= $a['start_date'] && time() < $a['end_date']) { $start_status = 1; } else { $ret = $conn->execScript('UPDATE skin SET fragment_num=:fragment_num, modify_time=:modify_time ' . ' WHERE accountid=:accountid AND skin_type=2;', array( ':accountid' => $account_id, ':fragment_num' => 0, ':modify_time' => time() )); if(!$ret){ die(); return; } } array_push($activity_list, array( 'activity_id' => $a['id'], 'start_time' => $a['start_date'], 'end_time' => $a['end_date'], 'status' => $start_status )); } //求生庆典活动 $rowSkin = $conn->execQuery('SELECT * FROM skin WHERE accountid=:accountid AND skin_type=:skin_type;', array( ':accountid' => $account_id, ':skin_type' => 2 )); foreach ($rowSkin as $skin) { array_push($activity_skin_list, array( 'id' => $skin['skin_id'], 'num' => $skin['fragment_num'], 'exchange_status' => $skin['skin_status'], 'collect_status' => $skin['fragment_status'] )); } //分享好礼活动 $row = $conn->execQueryOne('SELECT act_share_status, act_share_time FROM user WHERE accountid=:accountid;', array( ':accountid' => $account_id )); if (!$row) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $receive_status = $row['act_share_status']; if (phpcommon\getdayseconds(time()) - phpcommon\getdayseconds($row['act_share_time']) > 0 && $row['act_share_status'] == 1) { $receive_status = 0; $ret = $conn->execScript('UPDATE user SET act_share_status=:act_share_status, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $account_id, ':act_share_status' => $receive_status, ':modify_time' => time() )); if (!$ret) { die(); return; } } //任务活动 $rows = $conn->execQuery('SELECT * FROM quest WHERE accountid=:accountid AND quest_type=:quest_type;', array( ':accountid' => $account_id, ':quest_type' => 3 )); foreach ($rows as $r) { array_push($activity_quest_list, array( 'id' => $r['quest_id'], 'num' => $r['quest_num'], 'status' => $r['quest_state'] )); } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', 'activity_list' => $activity_list, 'activity_id1' => 1, 'activity_skin_list' => $activity_skin_list, 'activity_id2' => 2, 'receive_status' => $receive_status, 'activity_id3' => 3, 'activity_quest_list' => $activity_quest_list )); } public function triggerActivity() { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); if (!$login) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $conn = $this->getMysql($account_id); $activity_id = $_REQUEST['activity_id']; $type = $_REQUEST['type']; if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $act = $this->getActivityRewardConfig($activity_id); $array = $this->getExplode($act['activity_reward']); switch ($type) { case 1: //活动皮肤碎片收集 { $item_id = $array[0][0]; $item_num = $array[0][1]; $rowSkin = $conn->execQueryOne('SELECT * FROM skin WHERE accountid=:accountid AND fragment_id=:fragment_id;', array( ':accountid' => $account_id, ':fragment_id' => $item_id )); if ($rowSkin['fragment_status'] != 0) { phpcommon\sendError(ERR_USER_BASE + 2, '今天已收集'); return; } if ($rowSkin['fragment_num'] + $item_num >= $act['exchange_num']) { $skin_status = 2; } else { $skin_status = 3; } $ret = $conn->execScript('UPDATE skin SET fragment_num=:fragment_num, skin_status=:skin_status, fragment_status=1, modify_time=:modify_time ' . ' WHERE accountid=:accountid AND fragment_id=:fragment_id;', array( ':accountid' => $account_id, ':skin_status' => $skin_status, ':fragment_id' => $item_id, ':fragment_num' => $item_num + $rowSkin['fragment_num'], ':modify_time' => time() )); if (!$ret) { die(); return; } break; } case 2: //活动皮肤兑换 { $arr = $this->getExplode($act['exchange_item']); $row = $conn->execQueryOne('SELECT * FROM skin WHERE accountid = :account_id AND skin_id = :skin_id;', array( ':account_id' => $account_id, ':skin_id' => $arr[0][0] )); if(!$row){ phpcommon\sendError(ERR_USER_BASE + 1,'没有这个皮肤'); return; } if ($row['skin_status'] == 2) { $fragment_num = $row['fragment_num'] - $act['exchange_num']; $time = time(); $ret = $conn->execScript('UPDATE skin SET fragment_num=:fragment_num, skin_status=1, active_time=:active_time, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND skin_id=:skin_id;', array( ':account_id' => $account_id, ':skin_id' => $arr[0][0], ':active_time' => $time, ':fragment_num' => $fragment_num, ':modify_time' => time() )); if(!$ret){ die(); return; } } break; } case 3: //活动补给箱领取 { $ret = $conn->execScript('UPDATE user SET act_share_status=1, act_share_time=:act_share_time, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $account_id, ':act_share_time' => time(), ':modify_time' => time() )); if (!$ret) { die(); return; } for ($i = 0; $i < count($array); $i++) { $item_id = $array[$i][0]; $item_num = $array[$i][1]; $row = $conn->execQueryOne('SELECT * FROM supplybox WHERE accountid=:account_id AND box_id=:box_id;', array( ':account_id' => $account_id, ':box_id' => $item_id )); if (!$row) { $ret = $conn->execScript('INSERT INTO supplybox(accountid, box_id, box_num, buy_times, last_buy_time, create_time, modify_time) ' . ' VALUES(:accountid, :box_id, :box_num, 0, 0, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:accountid, box_id=:box_id, box_num=:box_num, buy_times=0, last_buy_time=0, modify_time=:modify_time;', array( ':accountid' => $account_id, ':box_id' => $item_id, ':box_num' => 1, ':create_time' => time(), ':modify_time' => time() )); if (!$ret) { die(); return; } } else { $ret = $conn->execScript('UPDATE supplybox SET box_num=:box_num, modify_time=:modify_time ' . ' WHERE accountid=:accountid AND box_id=:box_id;', array( ':accountid' => $account_id, ':box_id' => $item_id, ':box_num' => $row['box_num'] + $item_num, ':modify_time' => time() )); if (!$ret) { die(); return; } } } break; } case 4: //活动任务奖励 { $row = $conn->execQueryOne('SELECT * FROM quest WHERE accountid=:accountid AND quest_id=:quest_id AND quest_type=:quest_type;', array( ':accountid' => $account_id, ':quest_id' => $activity_id, ':quest_type' => 3 )); if (!$row) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个任务'); return; } if ($row['quest_state'] == 1) { $ret = $conn->execScript('UPDATE quest SET quest_state=:quest_state, modify_time=:modify_time ' . ' WHERE accountid=:accountid AND quest_id =:quest_id AND quest_type=:quest_type;', array( ':accountid' => $account_id, ':quest_id' => $activity_id, ':quest_type' => 3, ':quest_state' => 2, ':modify_time' => time() )); if (!$ret) { die(); return; } $item_id = $array[0][0]; $item_num = $array[0][1]; $row1 = $conn->execQueryOne('SELECT * FROM user WHERE accountid=:accountid;', array( ':accountid' => $account_id )); $ret = $conn->execScript('UPDATE user SET coin_num=:coin_num, modify_time=:modify_time' . ' WHERE accountid=:accountid;', array( ':accountid' => $account_id, ':coin_num' => $item_num + $row1['coin_num'], ':modify_time' => time() )); if (!$ret) { die(); return; } } break; } default: break; } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', )); } } ?>