common.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <?php
  2. use think\Env;
  3. if(!function_exists('GetIP')) {
  4. // 取得当前IP
  5. function GetIP($type=0){
  6. if(!empty($_SERVER["HTTP_CLIENT_IP"])) {
  7. $cip = $_SERVER["HTTP_CLIENT_IP"];
  8. } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
  9. $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  10. } else if(!empty($_SERVER["REMOTE_ADDR"])) {
  11. $cip = $_SERVER["REMOTE_ADDR"];
  12. } else {
  13. $cip = "";
  14. }
  15. preg_match("/[\d\.]{7,15}/", $cip, $cips);
  16. $cip = $cips[0] ? $cips[0] : 'unknown';
  17. unset($cips);
  18. if ($type==1) $cip = myip2long($cip);
  19. return $cip;
  20. }
  21. }
  22. if(!function_exists('myip2long')) {
  23. //转换IP
  24. function myip2long($ip){
  25. // $ip_arr = split('\.',$ip);
  26. $ip_arr = explode('.', $ip);
  27. $iplong = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]);
  28. $iplong = sprintf("%u",$iplong);
  29. return $iplong;
  30. }
  31. }
  32. /**
  33. * 获取游戏icon, 没有图片时,给个默认icon
  34. * @param $url
  35. * @return string
  36. */
  37. function getGameIcon($url,$use_small_icon=1){
  38. if ( empty($url) ) {
  39. return '/static/images/aoyou_game.png';
  40. }
  41. $smallIconExt = '?x-image-process=style/small';
  42. if ( strpos($url, 'platform/') === 0 || strpos($url, 'image/') === 0 ) {
  43. if(substr(STATIC_DOMAIN,-1)=='/' && substr($url,0,1)=='/'){
  44. return $use_small_icon?STATIC_DOMAIN.'/'.$url.$smallIconExt:STATIC_DOMAIN.'/'.$url;
  45. }
  46. else if(substr(STATIC_DOMAIN,-1)<>'/' && substr($url,0,1)<>'/'){
  47. return $use_small_icon?substr(STATIC_DOMAIN,0,strlen(STATIC_DOMAIN)-1).$url.$smallIconExt:substr(STATIC_DOMAIN,0,strlen(STATIC_DOMAIN)-1).$url;
  48. }
  49. else{
  50. return $use_small_icon?STATIC_DOMAIN.$url.$smallIconExt:STATIC_DOMAIN.$url;
  51. }
  52. return $use_small_icon?STATIC_DOMAIN.'/'.$url.$smallIconExt:STATIC_DOMAIN.'/'.$url;
  53. }
  54. if(substr(STATIC_DOMAIN,-1)=='/'){
  55. return $use_small_icon?STATIC_DOMAIN.'image/'.$url.$smallIconExt:STATIC_DOMAIN.'image/'.$url;
  56. }
  57. else{
  58. return $use_small_icon?STATIC_DOMAIN.'/image/'.$url.$smallIconExt:STATIC_DOMAIN.'/image/'.$url;
  59. }
  60. }
  61. /**
  62. * 获取游戏下载地址
  63. * @return string
  64. */
  65. function getDownload($game) {
  66. if ($game['filename']) {
  67. return APK_DOWN_DOMAIN.'/sygame/'.$game['pinyin'].'/'.$game['filename'];
  68. } else {
  69. return '';
  70. }
  71. }
  72. /**
  73. * 获取开发厂商
  74. * @return string
  75. */
  76. function getDeveloper($p_developer='') {
  77. return $p_developer ? $p_developer : '未知';
  78. }
  79. /**
  80. * 获取游戏类型
  81. * @return string
  82. */
  83. function getTypename($p_type_name='') {
  84. return $p_type_name ? $p_type_name : '未知';
  85. }
  86. /**
  87. * 获取游戏题材
  88. * @return string
  89. */
  90. function getSubjectname($p_subject_name='') {
  91. return $p_subject_name ? $p_subject_name : '未知';
  92. }
  93. /**
  94. * 账号密码加解密
  95. */
  96. if(!function_exists('auth_code')) {
  97. function auth_code($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  98. $ckey_length = 0;
  99. $key = md5($key ? $key : Env::get('auth_key') );
  100. $keya = md5(substr($key, 0, 16));
  101. $keyb = md5(substr($key, 16, 16));
  102. $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
  103. $cryptkey = $keya.md5($keya.$keyc);
  104. $key_length = strlen($cryptkey);
  105. $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
  106. $string_length = strlen($string);
  107. $result = '';
  108. $box = range(0, 255);
  109. // $box = 100;
  110. $rndkey = array();
  111. for($i = 0; $i <= 255; $i++) {
  112. $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  113. }
  114. for($j = $i = 0; $i < 256; $i++) {
  115. $j = ($j + $box[$i] + $rndkey[$i]) % 256;
  116. $tmp = $box[$i];
  117. $box[$i] = $box[$j];
  118. $box[$j] = $tmp;
  119. }
  120. for($a = $j = $i = 0; $i < $string_length; $i++) {
  121. $a = ($a + 1) % 256;
  122. $j = ($j + $box[$a]) % 256;
  123. $tmp = $box[$a];
  124. $box[$a] = $box[$j];
  125. $box[$j] = $tmp;
  126. $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
  127. }
  128. if($operation == 'DECODE') {
  129. if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
  130. return substr($result, 26);
  131. } else {
  132. return '';
  133. }
  134. } else {
  135. return $keyc.str_replace('=', '', base64_encode($result));
  136. }
  137. }
  138. }
  139. /**
  140. * 获取充值方式
  141. * @return string
  142. */
  143. function getRechargeType($p_type=1) {
  144. $rechargeType = "";
  145. if($p_type == 1){
  146. $rechargeType = "申请";
  147. }
  148. elseif ($p_type == 2){
  149. $rechargeType = "直充";
  150. }
  151. else if($p_type == 3){
  152. $rechargeType = "结算币充值";
  153. }
  154. return $rechargeType;
  155. }
  156. /**
  157. * 获取充值支付类型
  158. * @return string
  159. */
  160. function getRechargePaytype($p_paytype='') {
  161. $paytype = "";
  162. if($p_type == 'zfb'){
  163. $paytype = "支付宝";
  164. }
  165. elseif ($p_type == 'wxpay'){
  166. $paytype = "微信";
  167. }
  168. return $paytype;
  169. }
  170. /**
  171. * 获取充值支付类型
  172. * @return string
  173. */
  174. function getRechargeStatus($p_status=0) {
  175. $rechargeStatus = "";
  176. if($p_status == 0){
  177. $rechargeStatus = "审核中";
  178. }
  179. elseif ($p_status == 1){
  180. $rechargeStatus = "已支付";
  181. }
  182. elseif ($p_status == 2){
  183. $rechargeStatus = "审核通过";
  184. }
  185. elseif ($p_status == 3){
  186. $rechargeStatus = "审核不通过";
  187. }
  188. return $rechargeStatus;
  189. }
  190. function chkTransferPlayer($channel_id,$account='',$game_id=0){
  191. $errorCode = 1;
  192. $errorMsg = '校验成功';
  193. $retData = array();
  194. if(!$account || !$game_id){
  195. $errorCode = 0;
  196. $errorMsg = "玩家账号与游戏ID不能为空";
  197. }
  198. else{
  199. $memberInfo = model('Members')->where(['username' => $account])->field('id,username,flag')->find();
  200. $gameInfo = model('Game')->where(['id' => $game_id])->field('id,name,game_kind')->find();
  201. if(!$memberInfo){
  202. $errorCode = 0;
  203. $errorMsg = "'".$account."' 该玩家账号不存在;";
  204. }
  205. else if(!$gameInfo){
  206. $errorCode = 0;
  207. $errorMsg = "游戏不存在;";
  208. }
  209. else if($gameInfo['game_kind']<>2){
  210. $errorCode = 0;
  211. $errorMsg = "'".$gameInfo['name']."' 为非混服游戏,该游戏不支持平台币。";
  212. }
  213. else{
  214. $allChildIds = get_child_channel_arr($channel_id);
  215. $memberGameChannelInfo = model('MemberChannelGame')->where(['member_id' => $memberInfo['id'], 'game_id' => $game_id])->find();
  216. if(!$memberGameChannelInfo){
  217. $errorCode = 0;
  218. $errorMsg = "'".$account."' 该玩家在游戏'".$gameInfo['name']."'中尚未绑定推广员,您不能对其进行转账;";
  219. }
  220. else if(!in_array($memberGameChannelInfo['channel_id'],$allChildIds) && $memberGameChannelInfo['channel_id']<>$channel_id){
  221. $errorCode = 0;
  222. $errorMsg = "'".$account."' 该玩家在游戏'".$gameInfo['name']."'中所属推广员不在您的公会下,您不能对其进行转账;";
  223. }
  224. else{
  225. $retData['game_id'] = $game_id;
  226. $retData['userid'] = $memberInfo['id'];
  227. $retData['username'] = $memberInfo['username'];
  228. $retData['cuser_id'] = $memberGameChannelInfo['channel_id'];
  229. }
  230. }
  231. }
  232. return array("errorCode"=>$errorCode,"errorMsg"=>$errorMsg,"retData"=>$retData);
  233. }
  234. function chkTransferChannel($channel_id,$account=''){
  235. $errorCode = 1;
  236. $errorMsg = '校验成功';
  237. $retData = array();
  238. if(!$account){
  239. $errorCode = 0;
  240. $errorMsg = "收款账号不能为空";
  241. }
  242. else{
  243. $channelInfo = model('Channel')->where(['name' => $account])->field('id,name,status,level')->find();
  244. if(!$channelInfo){
  245. $errorCode = 0;
  246. $errorMsg = "'".$account."' 该收款账号不存在;";
  247. }
  248. else if($channelInfo['level']<>2){
  249. $errorCode = 0;
  250. $errorMsg = "'".$account."' 该收款账号非子公会账号,不能进行转账操作;";
  251. }
  252. else{
  253. $allChildIds = get_child_channel_arr($channel_id,1);
  254. if(!in_array($channelInfo['id'],$allChildIds)){
  255. $errorCode = 0;
  256. $errorMsg = "'".$account."' 该收款账号非您下属子公会,您不能对其进行转账;";
  257. }
  258. else{
  259. $retData['userid'] = $channelInfo['id'];
  260. $retData['username'] = $channelInfo['name'];
  261. }
  262. //是否需要判断可以发币????
  263. }
  264. }
  265. return array("errorCode"=>$errorCode,"errorMsg"=>$errorMsg,"retData"=>$retData);
  266. }