/public/module/player/player_carrer.php

https://github.com/karlom/gameadmin · PHP · 605 lines · 596 code · 6 blank · 3 comment · 85 complexity · 9d0ffa9a1567630a5d69385fe68fa472 MD5 · raw file

  1. <?php
  2. include_once '../../../protected/config/config.php';
  3. include_once SYSDIR_ADMIN_INCLUDE . '/global.php';
  4. global $lang;
  5. /*******配置******************************************************************/
  6. $key = 1;
  7. $method = 'activityplayercareer';
  8. $unixTime = time();
  9. $sign = md5($key.$method.$unixTime);
  10. /*******配置******************************************************************/
  11. //获取用于显示的数据,这个最好不要在本文件的代码写,这样的耦合度是最高的,最好是用接口的形式提供,现在只是模拟数据用来显示
  12. $viewData = json_decode(getCareerData($sign, $method, $unixTime), true);
  13. if ($viewData !== "UNKNOWN") {
  14. if($viewData[country_array]){
  15. $country_array = $viewData[country_array];
  16. }
  17. if($viewData[career_array]){
  18. $career_array = $viewData[career_array];
  19. }
  20. $level_range = $viewData[level_range];
  21. $top_level = $viewData[top_level];
  22. $max = $top_level/$level_range;
  23. $registerData = $viewData[registerData];
  24. $activityData = $viewData[activityData];
  25. $levelData = $viewData[levelData];
  26. $type = $viewData[type];
  27. $rd = array();
  28. $ad = array();
  29. $result = array();
  30. $rd_total = 0;
  31. $ad_total = 0;
  32. $ld_total = 0;
  33. $c = 0;
  34. if($type == 1){
  35. if($registerData){
  36. $total = 0;
  37. foreach($registerData as $key => $val){
  38. $country = $country_array[$val[country]];
  39. if(!isset($rd[$country][num])){
  40. $rd[$country][num] = $val[registerPlayerCount];
  41. }else{
  42. $rd[$country][num] += $val[registerPlayerCount];
  43. }
  44. $rd_total += $val[registerPlayerCount];
  45. }
  46. if($rd){
  47. foreach($rd as $key => $val){
  48. if($rd_total > 0){
  49. $rd[$key][percent] = round($val[num]/$rd_total*100, 2);
  50. }else{
  51. $rd[$key][percent] = 0;
  52. }
  53. }
  54. }
  55. }
  56. if($activityData){
  57. $total = 0;
  58. foreach($activityData as $key => $val){
  59. $country = $country_array[$val[country]];
  60. if(!isset($ad[$country][num])){
  61. $ad[$country][num] = $val[activityPlayerCount];
  62. }else{
  63. $ad[$country][num] += $val[activityPlayerCount];
  64. }
  65. $ad_total += $val[activityPlayerCount];
  66. }
  67. if($ad){
  68. foreach($ad as $key => $val){
  69. if($ad_total > 0){
  70. $ad[$key][percent] = round($val[num]/$ad_total*100, 2);
  71. }else{
  72. $ad[$key][percent] = 0;
  73. }
  74. }
  75. }
  76. }
  77. if($levelData){
  78. $total = 0;
  79. for($i=0; $i<$max; $i++){
  80. foreach($levelData as $key => $row){
  81. $country = $country_array[$row[country]];
  82. if($row[level]>$i*$level_range && $row[level] <= ($i+1)*$level_range){
  83. $result[$i][$country][num] += $row[levelPlayerCount];
  84. $result[$i][total] += $row[levelPlayerCount];
  85. }
  86. }
  87. }
  88. foreach($result as $key=>$row){
  89. foreach($row as $k=>$r){
  90. if($k !== "total"){
  91. if($row[total] == 0){
  92. $result[$key][$k][percent] = 0;
  93. }else{
  94. $result[$key][$k][percent] = round($r[num]/$row[total]*100, 2);
  95. }
  96. }
  97. }
  98. }
  99. $t = 0;
  100. foreach($result as $key=>$row){
  101. $t += $row[total];
  102. }
  103. $result[total] = $t;
  104. foreach($result as $key=>$row){
  105. if($key !== "total"){
  106. if($result[total] != 0){
  107. $result[$key][percent] = round($row[total]/$result[total]*100, 2);
  108. }else{
  109. $result[$key][percent] = 0;
  110. }
  111. }
  112. }
  113. if($result){
  114. foreach($result as $key => $row){
  115. if($key !== 'total'){
  116. $showData[$key][zg] = $row[total].'/'.$result[total].'('.$row[percent].'%)'.'<br/>';
  117. foreach($row as $k => $r){
  118. if($k !== 'total' && $k !== 'percent'){
  119. $showData[$key][$k] .= $r[num].'/'.$row[total].'('.$r[percent].'%)'.'<br/>';
  120. }
  121. }
  122. }
  123. }
  124. $count = count($country_array);
  125. $c = $count;
  126. $total_result[99][0] = $lang->player->level;
  127. $sort[0] = 0;
  128. $i = 1;
  129. foreach($country_array as $key => $row){
  130. $total_result[99][$i] = $row;
  131. $sort[$row] = $i;
  132. $i++;
  133. }
  134. $total_result[99][$i] = $lang->player->total;
  135. $sort[zg] = $count+1;
  136. foreach($showData as $key => $row){
  137. foreach($row as $k => $r){
  138. $total_result[$key][$sort[$k]] = $r;
  139. }
  140. for($a=1;$a<=$count;$a++){
  141. if(!isset($total_result[$key][$a])){
  142. $total_result[$key][$a] = '-';
  143. }
  144. }
  145. ksort($total_result[$key]);
  146. }
  147. }
  148. }
  149. }
  150. if($type == 2){
  151. if($registerData){
  152. $total = 0;
  153. foreach($registerData as $key => $val){
  154. $career = $career_array[$val[career]];
  155. if(!isset($rd[$career][num])){
  156. $rd[$career][num] = $val[registerPlayerCount];
  157. }else{
  158. $rd[$career][num] += $val[registerPlayerCount];
  159. }
  160. $rd_total += $val[registerPlayerCount];
  161. }
  162. if($rd){
  163. foreach($rd as $key => $val){
  164. if($rd_total > 0){
  165. $rd[$key][percent] = round($val[num]/$rd_total*100, 2);
  166. }else{
  167. $rd[$key][percent] = 0;
  168. }
  169. }
  170. }
  171. }
  172. if($activityData){
  173. $total = 0;
  174. foreach($activityData as $key => $val){
  175. $career = $career_array[$val[career]];
  176. if(!isset($ad[$career][num])){
  177. $ad[$career][num] = $val[activityPlayerCount];
  178. }else{
  179. $ad[$career][num] += $val[activityPlayerCount];
  180. }
  181. $ad_total += $val[activityPlayerCount];
  182. }
  183. if($ad){
  184. foreach($ad as $key => $val){
  185. if($ad_total > 0){
  186. $ad[$key][percent] = round($val[num]/$ad_total*100, 2);
  187. }else{
  188. $ad[$key][percent] = 0;
  189. }
  190. }
  191. }
  192. }
  193. if($levelData){
  194. $total = 0;
  195. for($i=0; $i<$max; $i++){
  196. foreach($levelData as $key => $row){
  197. $career = $career_array[$row[career]];
  198. if($row[level]>$i*$level_range && $row[level] <= ($i+1)*$level_range){
  199. $result[$i][$career][num] += $row[levelPlayerCount];
  200. $result[$i][total] += $row[levelPlayerCount];
  201. }
  202. }
  203. }
  204. foreach($result as $key=>$row){
  205. foreach($row as $k=>$r){
  206. if($k !== "total"){
  207. if($row[total] == 0){
  208. $result[$key][$k][percent] = 0;
  209. }else{
  210. $result[$key][$k][percent] = round($r[num]/$row[total]*100, 2);
  211. }
  212. }
  213. }
  214. }
  215. $t = 0;
  216. foreach($result as $key=>$row){
  217. $t += $row[total];
  218. }
  219. $result[total] = $t;
  220. foreach($result as $key=>$row){
  221. if($key !== "total"){
  222. if($result[total] != 0){
  223. $result[$key][percent] = round($row[total]/$result[total]*100, 2);
  224. }else{
  225. $result[$key][percent] = 0;
  226. }
  227. }
  228. }
  229. if($result){
  230. foreach($result as $key => $row){
  231. if($key !== 'total'){
  232. $showData[$key][zg] = $row[total].'/'.$result[total].'('.$row[percent].'%)'.'<br/>';
  233. foreach($row as $k => $r){
  234. if($k !== 'total' && $k !== 'percent'){
  235. $showData[$key][$k] .= $r[num].'/'.$row[total].'('.$r[percent].'%)'.'<br/>';
  236. }
  237. }
  238. }
  239. }
  240. $count = count($career_array);
  241. $c = $count;
  242. $total_result[99][0] = $lang->player->level;
  243. $sort[0] = 0;
  244. $i = 1;
  245. foreach($career_array as $key => $row){
  246. $total_result[99][$i] = $row;
  247. $sort[$row] = $i;
  248. $i++;
  249. }
  250. $total_result[99][$i] = $lang->player->total;
  251. $sort[zg] = $count+1;
  252. foreach($showData as $key => $row){
  253. foreach($row as $k => $r){
  254. $total_result[$key][$sort[$k]] = $r;
  255. }
  256. for($a=1;$a<=$count;$a++){
  257. if(!isset($total_result[$key][$a])){
  258. $total_result[$key][$a] = '-';
  259. }
  260. }
  261. ksort($total_result[$key]);
  262. }
  263. }
  264. }
  265. }
  266. if($type == 3){
  267. if($registerData){
  268. foreach($registerData as $key => $val){
  269. $career = $career_array[$val[career]];
  270. $country = $country_array[$val[country]];
  271. $rd[$country][$career][num] += $val[registerPlayerCount];
  272. $rd[$country][total] += $val[registerPlayerCount];
  273. $rd_total += $val[registerPlayerCount];
  274. }
  275. if($rd){
  276. foreach($rd as $key => $val){
  277. foreach($val as $k => $v){
  278. if($k !== 'total'){
  279. if($val[total] > 0){
  280. $rd[$key][$k][percent] = round($v[num]/$val[total]*100, 2);
  281. }else{
  282. $rd[$key][$k][percent] = 0;
  283. }
  284. }
  285. }
  286. if($rd_total > 0){
  287. $rd[$key][percent] = round($val[total]/$rd_total*100, 2);
  288. }else{
  289. $rd[$key][percent] = 0;
  290. }
  291. }
  292. }
  293. }
  294. if($activityData){
  295. foreach($activityData as $key => $val){
  296. $career = $career_array[$val[career]];
  297. $country = $country_array[$val[country]];
  298. $ad[$country][$career][num] += $val[activityPlayerCount];
  299. $ad[$country][total] += $val[activityPlayerCount];
  300. $ad_total += $val[activityPlayerCount];
  301. }
  302. if($ad){
  303. foreach($ad as $key => $val){
  304. foreach($val as $k => $v){
  305. if($k !== 'total'){
  306. if($val[total] > 0){
  307. $ad[$key][$k][percent] = round($v[num]/$val[total]*100, 2);
  308. }else{
  309. $ad[$key][$k][percent] = 0;
  310. }
  311. }
  312. }
  313. if($ad_total > 0){
  314. $ad[$key][percent] = round($val[total]/$ad_total*100, 2);
  315. }else{
  316. $ad[$key][percent] = 0;
  317. }
  318. }
  319. }
  320. }
  321. if($levelData){
  322. for($i=0; $i<$max; $i++){
  323. foreach($levelData as $key => $row){
  324. $career = $career_array[$row[career]];
  325. $country = $country_array[$row[country]];
  326. if($row[level]>$i*$level_range && $row[level] <= ($i+1)*$level_range){
  327. $result[$i][$career][$country][num] += $row[levelPlayerCount];
  328. $result[$i][$career][total] += $row[levelPlayerCount];
  329. $result[$i][total] += $row[levelPlayerCount];
  330. $ld_total += $row[levelPlayerCount];
  331. }
  332. }
  333. }
  334. if($result){
  335. foreach($result as $key=>$row){
  336. foreach($row as $k=>$r){
  337. if($k !== 'total'){
  338. foreach($r as $k1=>$r1){
  339. if($k1 !== "total"){
  340. if($r[total] == 0){
  341. $result[$key][$k][$k1][percent] = 0;
  342. }else{
  343. $result[$key][$k][$k1][percent] = round($r1[num]/$r[total]*100, 2);
  344. }
  345. }
  346. }
  347. if($row[total] > 0){
  348. $result[$key][$k][percent] = round($r[total]/$row[total]*100, 2);
  349. }else{
  350. $result[$key][$k][percent] = 0;
  351. }
  352. }
  353. }
  354. if($ld_total > 0){
  355. $result[$key][percent] = round($row[total]/$ld_total*100, 2);
  356. }else{
  357. $result[$key][percent] = 0;
  358. }
  359. }
  360. foreach($result as $key=>$row){
  361. $t = 0;
  362. foreach($row as $k=>$r){
  363. $t += $r[total];
  364. }
  365. $result[$key][total] = $t;
  366. }
  367. }
  368. if($result){
  369. foreach($result as $key => $row){
  370. $showData[$key][zg] = $row[total].'/'.$ld_total.'('.$row[percent].'%)'.'<br/>';
  371. foreach($row as $k => $r){
  372. if($k !== 'total' && $k !== 'percent'){
  373. foreach($r as $k1 => $r1){
  374. if($k1 !== 'total' && $k1 !== 'percent'){
  375. $showData[$key][$k] .= $k1.':'.$r1[num].'/'.$r[total].'('.$r1[percent].'%)'.'<br/>';
  376. }
  377. }
  378. }
  379. }
  380. }
  381. $count = count($career_array);
  382. $c = $count;
  383. $total_result[99][0] = $lang->player->level;
  384. $sort[0] = 0;
  385. $i = 1;
  386. foreach($career_array as $key => $row){
  387. $total_result[99][$i] = $row;
  388. $sort[$row] = $i;
  389. $i++;
  390. }
  391. $total_result[99][$i] = $lang->player->total;
  392. $sort[zg] = $count+1;
  393. foreach($showData as $key => $row){
  394. foreach($row as $k => $r){
  395. $total_result[$key][$sort[$k]] = $r;
  396. }
  397. for($a=1;$a<=$count;$a++){
  398. if(!isset($total_result[$key][$a])){
  399. $total_result[$key][$a] = '-';
  400. }
  401. }
  402. ksort($total_result[$key]);
  403. }
  404. }
  405. }
  406. }
  407. }
  408. $smarty->assign('type', $type);
  409. $smarty->assign('lang', $lang);
  410. $smarty->assign('rd', $rd);
  411. $smarty->assign('ad', $ad);
  412. $smarty->assign('c', $c);
  413. $smarty->assign('rd_total', $rd_total);
  414. $smarty->assign('ad_total', $ad_total);
  415. $smarty->assign('ld_total', $ld_total);
  416. $smarty->assign('level_range', $level_range);
  417. $smarty->assign('career_array', $career_array);
  418. $smarty->assign('country_array', $country_array);
  419. $smarty->assign('total_result', $total_result);
  420. $smarty->display('module/player/player_carrer.tpl');
  421. function getCareerData($sign, $method, $unixTime) {
  422. $data = array(
  423. 'type'=>3,
  424. 'country_array' => array(
  425. 1 => '蜀',
  426. 2 => '楚',
  427. 3 => '秦'
  428. ),
  429. 'career_array' => array(
  430. 1 => '尚武',
  431. 2 => '逍遥',
  432. 3 => '流星'
  433. ),
  434. 'level_range' => 10,
  435. 'top_level' => 120,
  436. 'registerData' => array(
  437. array(
  438. 'career' => 3,
  439. 'country' => 2,
  440. 'registerPlayerCount' => 240
  441. ),
  442. array(
  443. 'career' => 1,
  444. 'country' => 3,
  445. 'registerPlayerCount' => 300
  446. ),
  447. array(
  448. 'career' => 2,
  449. 'country' => 1,
  450. 'registerPlayerCount' => 330
  451. ),
  452. array(
  453. 'career' => 3,
  454. 'country' => 1,
  455. 'registerPlayerCount' => 230
  456. ),
  457. array(
  458. 'career' => 1,
  459. 'country' => 2,
  460. 'registerPlayerCount' => 270
  461. ),
  462. array(
  463. 'career' => 2,
  464. 'country' => 3,
  465. 'registerPlayerCount' => 305
  466. )
  467. ),
  468. 'activityData' => array(
  469. array(
  470. 'career' => 2,
  471. 'country' => 3,
  472. 'activityPlayerCount' => 120
  473. ),
  474. array(
  475. 'career' => 2,
  476. 'country' => 1,
  477. 'activityPlayerCount' => 100
  478. ),
  479. array(
  480. 'career' => 1,
  481. 'country' => 3,
  482. 'activityPlayerCount' => 150
  483. ),
  484. array(
  485. 'career' => 1,
  486. 'country' => 2,
  487. 'activityPlayerCount' => 120
  488. ),
  489. array(
  490. 'career' => 3,
  491. 'country' => 2,
  492. 'activityPlayerCount' => 130
  493. ),
  494. array(
  495. 'career' => 3,
  496. 'country' => 1,
  497. 'activityPlayerCount' => 170
  498. ),
  499. array(
  500. 'career' => 3,
  501. 'country' => 3,
  502. 'activityPlayerCount' => 140
  503. )
  504. ),
  505. 'levelData' => array(
  506. array(
  507. 'career' => 1,
  508. 'country' => 3,
  509. 'level' => 9,
  510. 'levelPlayerCount' => 12
  511. ),
  512. array(
  513. 'career' => 2,
  514. 'country' => 2,
  515. 'level' => 15,
  516. 'levelPlayerCount' => 15
  517. ),
  518. array(
  519. 'career' => 1,
  520. 'country' => 2,
  521. 'level' => 25,
  522. 'levelPlayerCount' => 14
  523. ),
  524. array(
  525. 'career' => 2,
  526. 'country' => 3,
  527. 'level' => 38,
  528. 'levelPlayerCount' => 13
  529. ),
  530. array(
  531. 'career' => 2,
  532. 'country' => 1,
  533. 'level' => 48,
  534. 'levelPlayerCount' => 36
  535. ),
  536. array(
  537. 'career' => 3,
  538. 'country' => 3,
  539. 'level' => 55,
  540. 'levelPlayerCount' => 23
  541. ),
  542. array(
  543. 'career' => 3,
  544. 'country' => 2,
  545. 'level' => 62,
  546. 'levelPlayerCount' => 15
  547. ),
  548. array(
  549. 'career' => 2,
  550. 'country' => 2,
  551. 'level' => 67,
  552. 'levelPlayerCount' => 18
  553. ),
  554. array(
  555. 'career' => 3,
  556. 'country' => 1,
  557. 'level' => 75,
  558. 'levelPlayerCount' => 26
  559. ),
  560. array(
  561. 'career' => 3,
  562. 'country' => 3,
  563. 'level' => 85,
  564. 'levelPlayerCount' => 16
  565. ),
  566. array(
  567. 'career' => 1,
  568. 'country' => 2,
  569. 'level' => 91,
  570. 'levelPlayerCount' => 12
  571. ),
  572. array(
  573. 'career' => 1,
  574. 'country' => 1,
  575. 'level' => 95,
  576. 'levelPlayerCount' => 11
  577. ),
  578. array(
  579. 'career' => 2,
  580. 'country' => 2,
  581. 'level' => 111,
  582. 'levelPlayerCount' => 21
  583. ),
  584. array(
  585. 'career' => 1,
  586. 'country' => 2,
  587. 'level' => 113,
  588. 'levelPlayerCount' => 11
  589. ),
  590. array(
  591. 'career' => 3,
  592. 'country' => 2,
  593. 'level' => 116,
  594. 'levelPlayerCount' => 3
  595. )
  596. )
  597. );
  598. return json_encode($data);
  599. }