/** * actionCashierGetInfo * @author cq * @date 2014/07/01 * @param * id:uid或者pid * @return * s * info * uid * create_t * pid * istest * sections * s1 * name * level * vip * gem * defaul * s2 * ... * payment_config * 系统的payment_config */ public function actionCashierGetInfo() { $now = getApp()->now; //$ip = getApp()->getClientIP(); //验证消息来源是否合法 $valid_ip_list = array('115.29.193.89', '115.29.225.243', '115.29.229.132', '115.29.229.113', '117.121.10.35'); /* if(!in_array($ip, $valid_ip_list)){ return array('s'=>StatusCode::invalid_ip); }*/ $id = $_POST['id']; if (empty($id)) { echo json_encode(array('s' => StatusCode::invalid_param)); return; } $mon = new PL_Db_Mongo(DbConfig::getMongodb('userlogin')); $um = $mon->findOne(array('email' => $id)); if (!$um) { $um = $mon->findOne(array('pid' => $id)); } if (!$um) { echo json_encode(array('s' => StatusCode::invalid_param)); return; } $ret = array(); $ret['s'] = StatusCode::ok; //获取用户登录信息 $ret['info'] = array(); $ret['info']['uid'] = $um['_id']; //接口中需要添加pid by zhangjun $ret['info']['pid'] = $um['pid']; $ret['info']['create_t'] = $um['_ct']; $ret['info']['istest'] = 0; $ret['info']['istest'] = $um['istest'] ? 'istest' : 0; $ret['info']['istest'] = $um['isdev'] ? 'isdev' : $ret['info']['istest']; //获取用户各个分区信息 $section_config = getApp()->getSectionConfig(); $ret['info']['sections'] = array(); if (isset($um['secs'])) { foreach ($um['secs'] as $sec => $last_t) { $um_mc = new model_Player($um['_id'], $sec); $um_data = $um_mc->getFields(array('name', 'level', 'vip', 'gem', '_it')); $um_data['vip'] = $um_data['vip']['lvl']; $um_data['default'] = $sec == $um['_ld']['sec'] ? 1 : 0; $um_data['section_name'] = $section_config[$sec]['name']; $ret['info']['sections'][$sec] = $um_data; } } //获取支付信息 $ret['payment_config'] = getApp()->getPaymentConifg(); //NULL, $um['source']); $ret['payment_unit'] = '元宝'; $list = $ret['payment_config']; //添加自定义支付项 $max_product_config = array('cash' => -1); foreach ($ret['payment_config'] as $index => $p_config) { //修改一下提示信息 $trans_config = PL_Config_Numeric::get('translate', $p_config['desc']); $ret['payment_config'][$index]['desc'] = $trans_config['zh_CN']; if ($p_config['cash'] > $max_product_config['cash']) { $max_product_config = $p_config; $product_config_list[] = $p_config; } } $ret['payment_config'] = array(); $max_product = 1000; if ($max_product_config['cash'] > 0) { $custom_config = array('type' => 'define', 'gt' => $max_product, 'inputdesc' => '首次充值翻倍额度以游戏内最高可充值额度为准', 'gemcalc' => "Math.ceil(cash*10 + cash*1300/998)", 'product_id' => 'custom'); $ret['payment_config'][] = $custom_config; } foreach ($list as $k => $v) { //if($v['gemaward'] > 0 && !isset($v['hide'])){ if (isset($v['forweb'])) { $ret['payment_config'][] = $v; } } echo json_encode($ret); }
/** * @auther lifei@playcarb.com * 发放燕子坞活动 未领奖励 */ public static function action_award_yanziwu() { $app = getApp(); $now = $app->now; //活动界面关闭后才发送奖励 $config = $app->getActivityConfig('act_yanziwuqiangqin_20130425'); if ($now <= $config['end_t']) { //self::showError("",__LINE__); self::showError("activity not finished!", __LINE__); } $sections = array_keys(getApp()->getSectionConfig()); if (empty($sections)) { self::showError("get section config error!", __LINE__); } $start_md = date('md', $config['start_t']); $redis = DbConfig::getRedis('rank'); //时间肯定超过12、21、24了不判断时间 //所有区 foreach ($sections as $sec) { echo "===============分区:{$sec}==========================\n"; //检查各个时段的排行榜奖励 for ($i = 1; $i <= 3; $i++) { $redis_key = "act_yanziwuqiangqin_" . $start_md . "_" . $sec . "_" . $i; //查询各个时段排行榜 $list = self::getQiangQinRank(0, 19, $redis, $redis_key, $config, $sec); if (empty($list)) { echo "warning:第{$i}段,分区:{$sec}的排行为空!\n"; continue; } echo "=============当前时段:{$i}============="; echo $redis_key . "\n"; print_r($list); foreach ((array) $list as $v) { //判断玩家是否领取过 $uid = $user_key = $v['id']; $player = new model_Player($uid, $sec); //玩家存的是带年的 $start_ymd = date('Ymd', $config['start_t']); $player_data = $player->getFields(array('qiyu.yanziwuqiangqin_' . $start_ymd)); $player_pos = $player_data['qiyu']['yanziwuqiangqin_' . $start_ymd]; if (!empty($player_pos[$i])) { //领过了 echo "warning:====玩家{$uid}/{$sec}领过第{$i}段奖励了!\n"; continue; } //判断奖励 //玩家自己的排名 $rank = $redis->zrevrank($redis_key, "{$user_key}"); echo "====玩家{$uid}/{$sec}===当前排名:{$rank}\n"; if ($rank === false) { echo "warning:====玩家{$uid}/{$sec}排名错误为假!\n"; continue; } // 确定该玩家是否在前20,计算并列20的情况 $my_num = 0; if ($rank >= 20) { // 玩家自己的积分 $my_num = $redis->zscore($redis_key, $user_key); // 玩家正好与第20名的积分相同 if ($my_num == $list[count($list) - 1]['num']) { // 奖励list中最后一名相同的奖励 $award_config = PL_Config_Numeric::get('yanziwuaward', $list[count($list) - 1]['rank'], false); } } else { // 如果在前20名,那么list中一定存在该玩家信息 foreach ($list as $val) { if ($val['id'] == $uid) { $my_rank = $val['rank']; $my_num = $val['num']; } } $award_config = PL_Config_Numeric::get('yanziwuaward', $my_rank, false); } //24点必须大于2000 if ($i == 3 && $my_num < 2000) { continue; } echo "{$sec}=={$uid}开始发第{$i}段奖..\n"; $log['action'] = __CLASS__ . '.' . __FUNCTION__; //print_r($award_config); self::awardQiangQin($award_config, $i, $my_num, $player_pos, &$player, $config, &$log, $rank, $uid, $sec); // 标记已经领取 $player_pos[$i] = 1; $player->objectPut('qiyu', 'yanziwuqiangqin_' . date('Ymd', $config['start_t']), $player_pos); $result = $player->commit(); $log['ret'] = $result; glog::stat($log); } //print_r($list); } } }