/web/api/get_user_info.php

https://gitlab.com/xusasuke6/Slg_php · PHP · 198 lines · 165 code · 23 blank · 10 comment · 25 complexity · 9bc605258c159f6dfe0d254446e53580 MD5 · raw file

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: tonyzhang
  5. * Date: 2015/10/21
  6. * Time: 13:43
  7. */
  8. define('IN_DATANG_SYSTEM', true);
  9. include "../config/config.php";
  10. include SYSDIR_ROOT_CLIENT.'config/config.key.php';
  11. include SYSDIR_ADMIN.'/include/api_global.php';
  12. global $db;
  13. $agentId = $AGENT_ID;
  14. //内侧
  15. if($agentId == 1){
  16. }
  17. elseif($agentId == 2) //多玩
  18. {
  19. $arr = array();
  20. $account = $_REQUEST['account'];
  21. $time = $_REQUEST['time'];
  22. $game = $_REQUEST['game'];
  23. $server = $_REQUEST['server'];
  24. $sign = $_REQUEST['sign'];
  25. $key = $API_SECURITY_TICKEY_LOGIN;
  26. if(empty($account) || empty($game)|| empty($time) || empty($sign) || empty($server))
  27. {
  28. $arr = array(
  29. "retcode" => -1
  30. );
  31. echo json_encode($arr);
  32. exit;
  33. }
  34. else
  35. {
  36. $token = strtoupper(md5($account.$game.$server.$time.$key));
  37. if($token != $sign )
  38. {
  39. $arr = array(
  40. "retcode" => -2
  41. );
  42. echo json_encode($arr);
  43. exit;
  44. }
  45. }
  46. $sql = "select A.role_id from db_role_attr_p A left join db_role_base_p B on A.role_id=B.role_id where B.account_name={$account}";
  47. $data = $db->fetchOne($sql);
  48. $role_id = $data['role_id'];
  49. $url = $erlangWebAdminHost."usermsg/get_user_msg_simple/?role_id={$role_id}";
  50. $result = getJsonErlang($url);
  51. $sql_mag = "SELECT A.sex, A.role_name as nickname, A.class_id as profession, FROM_UNIXTIME(A.create_time, '%Y-%m-%d %H:%i:%S') as createTime, A.role_id as roleId ".
  52. "FROM db_role_base_p A, db_role_ext_p B, db_role_attr_p C ".
  53. "WHERE A.role_id = B.role_id AND A.role_id = C.role_id";
  54. if ($account == '') {
  55. $sql_mag = $sql_mag . " order by A.account_name ";
  56. }else{
  57. $sql_mag = $sql_mag . " AND A.account_name = '" . $account . "'" . " AND A.server_id='{$GAME_SERVER}'";
  58. }
  59. $accountInfo = GFetchRowSet($sql_mag);
  60. if(empty($accountInfo)){
  61. $arr = array(
  62. "retcode" => -2
  63. );
  64. echo json_encode($arr);
  65. exit;
  66. }
  67. $request = array();
  68. if($accountInfo[0]['sex']== 1){
  69. $request[0]['sex']= 'm';
  70. }else{
  71. $request[0]['sex'] = 'f';
  72. }
  73. if($accountInfo[0]['profession'] == 2){
  74. $accountInfo[0]['profession'] = '谋士';
  75. }elseif($accountInfo[0]['profession'] == 1){
  76. $accountInfo[0]['profession'] = '战士';
  77. }elseif($accountInfo[0]['profession'] == 3){
  78. $accountInfo[0]['profession'] = '方士';
  79. }
  80. $level = $result[0]['level'];
  81. $reincarnation = $result[0]['reincarnation'];
  82. $request[0]['nickname'] = urlencode($accountInfo[0]['nickname']);
  83. $request[0]['profession'] = urlencode($accountInfo[0]['profession']);
  84. $request[0]['createTime'] = $accountInfo[0]['createTime'];
  85. $request[0]['roleId'] = $accountInfo[0]['roleId'];
  86. $request[0]['grade'] = $level + $reincarnation*10000;
  87. $arr['retcode'] = 0;
  88. $arr['roleinfo'] = $request;
  89. $json_result = json_encode($arr);
  90. echo $json_result;
  91. }
  92. elseif($agentId == 5)
  93. {
  94. //sign=8233981F757CE608539E972E52FF6D91, timestamp=2015-10-28 16:17:09, server_id=s1, api_key=50945ab501509b5572d300b4a2b97ca7, user_id=123
  95. $sign = $_REQUEST['sign'];
  96. $timestamp = $_REQUEST['timestamp'];
  97. $serverId = $_REQUEST['server_id'];
  98. $apiKey = $_REQUEST['api_key'];
  99. $userId = $_REQUEST['user_id'];
  100. $secret_key = $API_SECURITY_TICKEY_LOGIN;
  101. $str = $secret_key."api_key".$apiKey."server_id".$serverId."timestamp".$timestamp."user_id".$userId;
  102. $token = strtoupper(md5($str));
  103. $request = array();
  104. if($token != $sign){
  105. $request = array(
  106. "errCode" => 'ERROR_-100',
  107. "errMsg" => '传入参数不符合规则'
  108. );
  109. echo json_encode(url_encode($request));
  110. die();
  111. }
  112. else
  113. {
  114. $sql = "select A.role_id,B.role_name from db_role_attr_p A left join db_role_base_p B on A.role_id=B.role_id where B.account_name={$userId}";
  115. $data = $db->fetchOne($sql);
  116. if(empty($data)){
  117. $request = array(
  118. 'errCode' => "ERROR_-1406",
  119. "errMsg" => "角色不存在"
  120. );
  121. echo json_encode(url_encode($request));
  122. die();
  123. }
  124. $role_id = $data['role_id'];
  125. $url = $erlangWebAdminHost."usermsg/get_user_msg_simple/?role_id={$role_id}";
  126. $result = getJsonErlang($url);
  127. $sql_ext = "select last_login_time,last_offline_time from db_role_ext_p where role_id = {$role_id}";
  128. $ext = $db->fetchOne($sql_ext);
  129. $lastLoginTime = $ext['last_login_time'];
  130. $lastOfflineTime = $ext['last_offline_time'];
  131. if($lastLoginTime > $lastOfflineTime){
  132. $level = $result[0]['level'];
  133. $onlineTime = floor((time() - $lastLoginTime)/60);
  134. $role_name = $data['role_name'];
  135. $request = array(
  136. "userInfo" => array(
  137. 0 => array(
  138. 'roleName' => $role_name,
  139. 'roleLevel' => $level,
  140. 'onlineTime' => $onlineTime
  141. )
  142. )
  143. );
  144. echo json_encode(url_encode($request));
  145. }
  146. else
  147. {
  148. $request = array(
  149. "errCode" => 'ERROR_-100',
  150. "errMsg" => '传入参数不符合规则'
  151. );
  152. echo json_encode(url_encode($request));
  153. die();
  154. }
  155. }
  156. }
  157. // ====================================================== 华丽分割线 ======================================================
  158. function getJsonErlang($url) {
  159. $result = @ file_get_contents($url);
  160. if ($result) {
  161. return json_decode($result, true);
  162. }
  163. die();
  164. }
  165. //递归实现数组内所有元素urlencode
  166. function url_encode($str) {
  167. if(is_array($str)) {
  168. foreach($str as $key=>$value) {
  169. $str[urlencode($key)] = url_encode($value);
  170. }
  171. } else {
  172. $str = urlencode($str);
  173. }
  174. return $str;
  175. }