Ejemplo n.º 1
0
 /**
  * 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);
 }
Ejemplo n.º 2
0
 /**
  * @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);
         }
     }
 }