/** * 女神相册 actionGoddessPhoto * * @param int $user_id * @param int $goddess_id * @param int $token * */ public function actionGoddessPhoto() { // 参数检查 if (!isset($_REQUEST['goddess_id'])) { $this->_return('MSG_ERR_LESS_PARAM'); } $now = date("Y-m-d H:i:s"); $user_id = trim(Yii::app()->request->getParam('user_id')); $token = trim(Yii::app()->request->getParam('token')); $goddess_id = trim(Yii::app()->request->getParam('goddess_id')); //判断女神id if (!is_numeric($goddess_id)) { $this->_return('MSG_ERR_FAIL_PARAM'); } if (!Goddess::model()->isExitsGoddess($goddess_id)) { //不存在此女神 $this->_return("MSG_ERR_NO_EXIST_GODDESS"); } if (isset($_REQUEST['user_id'])) { if (!is_numeric($user_id)) { $this->_return('MSG_ERR_FAIL_PARAM'); } //用户不存在 返回错误 if ($user_id < 1) { $this->_return('MSG_ERR_NO_USER'); } //验证token if (!Token::model()->verifyToken($user_id, $token, $GLOBALS['__APPID'])) { //token 错误 $this->_return('MSG_ERR_TOKEN'); } $photos = Goddess::model()->getGoddessPhoto($user_id, $goddess_id); } else { $photos = Photo::model()->heroinePhotos($goddess_id); $imgUrl = Yii::app()->params['img_url_base']; foreach ($photos as $k => $v) { $photos[$k]['id'] = (int) $v['photo_id']; $photos[$k]['goddess_id'] = (int) $v['heroine_id']; $photos[$k]['lock'] = 0; $photos[$k]['praised'] = 0; $photos[$k]['url'] = $imgUrl . $v['url']; $photos[$k]['thumb'] = $imgUrl . $v['thumb']; $liking = Liking::model()->getLikingLvRow($v['level']); $photos[$k]['gold'] = (int) $liking['gold']; $photos[$k]['praisednum'] = (int) $v['praised_counts']; unset($photos[$k]['photo_id'], $photos[$k]['heroine_id'], $photos[$k]['praised_counts'], $photos[$k]['create_ts'], $photos[$k]['devit']); } } // var_dump($photos);exit; $result = array(); $info = array(); if (is_array($photos)) { foreach ($photos as $key => $p) { switch ($p['level']) { case '1': $info['1'][] = $p; break; case '2': $info['2'][] = $p; break; case '3': $info['3'][] = $p; break; case '4': $info['4'][] = $p; break; case '5': $info['5'][] = $p; break; case '6': $info['6'][] = $p; break; case '7': $info['7'][] = $p; break; case '8': $info['8'][] = $p; break; case '9': $info['9'][] = $p; break; case '10': $info['10'][] = $p; break; } } } foreach ($info as $k_lv => $v_arr) { $tmp = array(); $num = 0; $tmp['level'] = $k_lv; foreach ($v_arr as $pt) { $num = $pt['lock'] == 1 ? $num + 1 : $num; } $tmp['lock_num'] = $num; $tmp['count_num'] = count($v_arr); $tmp['images'] = $v_arr; $result[] = $tmp; } //排序 if (!empty($result)) { $sorting = array(); foreach ($result as $k => $v) { $sorting[$k] = $v['level']; } array_multisort($result, SORT_NUMERIC, $sorting); } $this->_return('MSG_SUCCESS', $result); }
/** * 查询用户成功解锁几位女神 * @param unknown $user_id * @param unknown $level */ public function getUserFollowLevel($user_id, $level = 5) { $liking = Liking::model()->getLikingLvRow($level); $con_characters = Yii::app()->db_characters; $table_name = sprintf('follow', dechex($user_id % 256)); $count = $con_characters->createCommand()->select('count(*) as c')->from($table_name)->where("user_id = :user_id AND liking >= :liking AND followed='1'", array(':user_id' => $user_id, ':liking' => $liking['max']))->queryRow(); if (isset($count['c'])) { return $count['c']; } else { return 0; } }
/** * 根据规则 抽一张图 * @param unknown $user_id * @param unknown $goddess_id * @param unknown $liking * @return number|multitype:number Ambigous <number, unknown> Ambigous <number, mixed, unknown> */ public function getGuess($user_id, $goddess_id, $liking) { $con_game = Yii::app()->db_game; $table_name = sprintf('guess_%02s', dechex($user_id % 256)); //根据女神ID 查询解锁照片数 总照片数 解锁照片ID $user_photos = Photo::model()->unlockPhotosIds($user_id, $goddess_id); if (count($user_photos) > 0) { $heroine_photoIds_temp = array(); for ($i = 1; $i <= 10; $i++) { $heroine_photoIds = Photo::model()->heroinePhotosIds($goddess_id, $i); $all_num = count($heroine_photoIds); $ids = Common::model()->array_dif($heroine_photoIds, $user_photos); if (count($ids) != 0) { $temp = $i; break; } } $unlock_num = count($ids); } else { $i = 0; $heroine_photoIds = Photo::model()->heroinePhotosIds($goddess_id, 1); $all_num = count($heroine_photoIds); $ids = $heroine_photoIds; $unlock_num = count($ids); } if (count($heroine_photoIds) == 0) { return array('err' => -6); } //判定好感等级, 不到等级 不能参加 猜牌 if ((int) $liking['level'] < (int) $i) { return array('err' => -3); } foreach ($ids as $k => $v) { $temp = $v; break; } $photo_id = (int) $temp['photo_id']; $photo_info = Photo::model()->photoInfo($photo_id); //查询这张照片已经猜图几次 每多一次 增加5% 几率; $guess_res = $con_game->createCommand()->select('count(*) as count')->from($table_name)->where('photo_id=:ID AND status=1 AND user_id=:USERID AND game_type = 0')->bindParam(':ID', $photo_id, PDO::PARAM_INT, 11)->bindParam(':USERID', $user_id, PDO::PARAM_INT, 11)->queryRow(); $add_rate = 0; if ($guess_res['count'] != 0) { $sel_guess_res = $con_game->createCommand()->select('*')->from($table_name)->where('photo_id=:ID AND status=0 AND card_type = 8 AND user_id=:USERID')->bindParam(':ID', $photo_id, PDO::PARAM_INT, 11)->bindParam(':USERID', $user_id, PDO::PARAM_INT, 11)->queryRow(); if ($sel_guess_res) { $sel_guess_res['unlock_num'] = $unlock_num; $sel_guess_res['all_num'] = $all_num; $sel_guess_res['url'] = $photo_info['url']; $sel_guess_res['thumb'] = $photo_info['url']; return array('err' => -5, 'result' => $sel_guess_res); } //查询是否猜牌是否5的倍数 如果是5次,查询是否已经擦涂过 if ($guess_res['count'] % 5 == 0) { $num = $guess_res['count'] / 5; $guess_res = $con_game->createCommand()->select('count(id) as count')->from($table_name)->where('photo_id=:ID AND status=1 AND card_type = 8 AND user_id=:USERID')->bindParam(':ID', $photo_id, PDO::PARAM_INT, 11)->bindParam(':USERID', $user_id, PDO::PARAM_INT, 11)->queryRow(); if ($num > $guess_res['count']) { $guess = array('image_id' => (int) $photo_id, 'unlock_num' => $unlock_num, 'all_num' => $all_num, 'url' => $photo_info['url'], 'thumb' => $photo_info['url'], 'type' => 3, 'vit' => 0, 'liking' => 0, 'gold' => 0, 'flowers' => 0); return array('err' => -4, 'result' => $guess); } } $add_rate = $guess_res['count'] % 5 * 5; } $liking = Liking::model()->getLikingRow($photo_info['level']); //按等级抽女神牌几率 $rate = $liking['rate'] + $add_rate; //剩余牌几率 $status_rate = 100 - (int) $rate; //0 空牌 1目标牌 2效果牌 $prize_arr = array('1' => $rate, '2' => $status_rate); $type = Common::model()->get_rand($prize_arr); $card_type = $type; $card_val = 0; $vit = 0; $liking = 0; $gold = 0; $flowers = 0; $i = rand(1, 2); //随机取效果牌 0无效牌 3体力 4好感 5获得金币 6盗走金币 7获得玫瑰花 $return_arr[0]['url'] = $photo_info['url']; $url_thumb = $photo_info['url']; if ($type == 1) { $return_arr[0]['url'] = $photo_info['url']; $return_arr[0]['type'] = 1; } $status_arr = Yii::app()->params['game_arr'][$GLOBALS['__APPID']]['status_card']; $r_1 = rand(1, 17); switch ($r_1) { case 1: case 2: $random_arr_1 = 3; break; case 3: case 4: case 5: $random_arr_1 = 4; break; case 6: case 7: case 8: $random_arr_1 = 5; break; case 9: case 10: case 11: $random_arr_1 = 6; break; case 12: case 13: case 14: $random_arr_1 = 7; break; case 15: case 16: case 17: $random_arr_1 = 2; break; } unset($status_arr[$random_arr_1]); $random_arr_2 = array_rand($status_arr, 1); $random[0] = $random_arr_1; $random[1] = $random_arr_2; $return_arr[1] = $this->getRandomCard($random[0]); $return_arr[2] = $this->getRandomCard($random[1]); if ($type == 2) { if ($random[0] == 2) { $type = 0; } $card_type = $random[0]; $card_val = $return_arr[1]['val']; $vit = $return_arr[1]['vit']; $liking = $return_arr[1]['liking']; $gold = $return_arr[1]['gold']; $flowers = $return_arr[1]['flowers']; $url = $return_arr[1]['url']; if ($i == 1) { $return_arr[0]['type'] = $return_arr[1]['type']; $return_arr[0]['url'] = $return_arr[1]['url']; $return_arr[1]['type'] = 1; $return_arr[1]['url'] = $photo_info['url']; } if ($i == 2) { $return_arr[0]['type'] = $return_arr[1]['type']; $return_arr[0]['url'] = $return_arr[1]['url']; $return_arr[1]['type'] = $return_arr[2]['type']; $return_arr[1]['url'] = $return_arr[2]['url']; $return_arr[2]['type'] = 1; $return_arr[2]['url'] = $photo_info['url']; } } unset($return_arr[1]['val']); unset($return_arr[1]['vit']); unset($return_arr[1]['liking']); unset($return_arr[1]['gold']); unset($return_arr[1]['flowers']); unset($return_arr[2]['val']); unset($return_arr[2]['vit']); unset($return_arr[2]['liking']); unset($return_arr[2]['gold']); unset($return_arr[2]['flowers']); // var_dump($return_arr);exit; if ($GLOBALS['__VERSION'] > '1.0') { $guess = array('cards' => $return_arr, 'image_id' => (int) $photo_id, 'thumb' => $url_thumb, 'unlock_num' => $unlock_num, 'all_num' => $all_num, 'type' => $type, 'card_type' => $card_type, 'val' => $card_val, 'vit' => $vit, 'liking' => $liking, 'gold' => $gold, 'flowers' => $flowers); } else { $url = $return_arr[0]['url']; $guess = array('image_id' => (int) $photo_id, 'url' => $url, 'thumb' => $url_thumb, 'unlock_num' => $unlock_num, 'all_num' => $all_num, 'type' => $type, 'card_type' => $card_type, 'val' => $card_val, 'vit' => $vit, 'liking' => $liking, 'gold' => $gold, 'flowers' => $flowers); } return $guess; }
/** * 好感等级信息 * */ public function actionLevelLiking() { $info = Liking::model()->wholeLikingAround(); if (!is_array($info)) { $this->_return('MSG_ERR_UNKOWN'); } $this->_return('MSG_SUCCESS', $info); }