AutoApkController.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Facade\TableName;
  4. use App\Game\WebChannelConfig;
  5. use App\Http\Controllers\Controller;
  6. use App\IpLocation;
  7. use App\Models\AgentClickLog;
  8. use App\Models\WithdrawalChannelPositionConfig;
  9. use App\Util;
  10. use GuzzleHttp\Client;
  11. use Illuminate\Http\Request;
  12. use Illuminate\Support\Facades\DB;
  13. use Illuminate\Support\Facades\Redis;
  14. class AutoApkController extends Controller
  15. {
  16. public function index()
  17. {
  18. }
  19. public function h5jump(Request $request){
  20. $url="https://cdn.24680.com/client/orgbr/index.html";
  21. Util::WriteLog("h5","");
  22. $redirect_url=$url.'?'.http_build_query($request->all());
  23. header("Location: $redirect_url", true, 302);
  24. exit();
  25. // return redirect($url.'?'.http_build_query($request->all()));
  26. }
  27. public function iosJump(Request $request)
  28. {
  29. $ios1='https://apps.apple.com/br/app/id6448916752?l=pt-br';
  30. $ios2='https://apps.apple.com/br/app/id6449389054?l=pt-br';
  31. $jumpToUrl=['ios1'=>$ios1,'ios2'=>$ios2];
  32. $url_sign=$request->input('ios');
  33. $url=$jumpToUrl[$url_sign]??$jumpToUrl['ios1'];
  34. $api=env('APP_URL');
  35. $jss=<<<JS
  36. <!DOCTYPE html>
  37. <html lang="en" >
  38. <head>
  39. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  40. <meta name="referrer" content="origin">
  41. <meta name="viewport" content="width=device-width, initial-scale=1">
  42. <meta name="mobile-web-app-capable" content="yes">
  43. <meta name="apple-mobile-web-app-capable" content="yes">
  44. <script>
  45. let params={};
  46. const url = new URLSearchParams(location.search);
  47. for (const [key, value] of url.entries()) {
  48. params[key]=value
  49. }
  50. !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');
  51. let pixid=params.pixel;
  52. fbq('init', params.pixel);
  53. fbq('set', 'autoConfig', false, pixid);
  54. fbq('track', 'PageView');
  55. setTimeout(function(){
  56. let url="{$api}/api/apk/savenew?" + new URLSearchParams({data: document.cookie,params:JSON.stringify(params),type:'fb', us: '$url_sign' , locale :navigator.language||navigator.userLanguage}).toString()
  57. let Http = new XMLHttpRequest();
  58. Http.open("GET", url);
  59. Http.onreadystatechange = function () {
  60. window.location='$url'
  61. };
  62. Http.send();
  63. },50)
  64. </script></head><body></body></html>
  65. JS;
  66. return $jss;
  67. return redirect($url);
  68. }
  69. public function health(Request $request){
  70. // 从Redis读取系统健康状态配置
  71. $healthConfig = Redis::get('system:health');
  72. if (!$healthConfig) {
  73. // 如果Redis中没有配置,则返回默认值
  74. return ['status' => 1, 'pay' => 1, 'cashout' => 1, 'notice' => '','other'=>json_decode($healthConfig, true)];
  75. }
  76. // 返回Redis中的配置
  77. return json_decode($healthConfig, true);
  78. }
  79. public function inside(Request $request){
  80. // 读取文件内容
  81. $file_path = public_path('inside.htm');
  82. $content = file_get_contents($file_path);
  83. // 替换 URL
  84. $old_url = 'https://saapi.24680.org';
  85. $new_url = env('APP_URL');
  86. $updated_content = str_replace($old_url, $new_url, $content);
  87. $updated_content = str_replace('BRL', env('CONFIG_24680_CURRENCY','BRL'), $updated_content);
  88. // 替换 URL
  89. $old_url = 'domain=brapi.24680.org';
  90. $new_url = 'domain='.$_SERVER['HTTP_HOST'];
  91. $updated_content = str_replace($old_url, $new_url, $updated_content);
  92. $old_url = 'domain=.24680.org';
  93. $new_url = 'domain='.$_SERVER['HTTP_HOST'];
  94. $updated_content = str_replace($old_url, $new_url, $updated_content);
  95. $UserID=$request->uid??0;
  96. if($UserID) {
  97. AgentClickController::checkClick($UserID);
  98. }
  99. return $updated_content; // 返回结果
  100. }
  101. public function findUrlSign(Request $request){
  102. $packageName = $request->input('packageName')??$request->input('PackageName');
  103. $packageConfig=DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('PackageName',$packageName)->first()->toArray();
  104. if(!$packageConfig){
  105. return apiReturnFail();
  106. }
  107. return apiReturnSuc($packageConfig);
  108. }
  109. /////模板包资源 //包体 pack/input/apks //签名 pack/input/keystore //替换目录 pack/input/res/ //输出目录 临时制作目录 pack/output //工具 解包 签名 pack/tools
  110. //
  111. ////最终包输出目录 app/public/apks/
  112. //
  113. //接口 get post api/getApk //包名 packageName //app名字 appName //icon url 名字随意 iconUrl //圆icon url 名字随意 iconRoundUrl //指定制作配置 默认ouro777 不更改可不传 pkey
  114. //
  115. public function createApk(Request $request)
  116. {
  117. $packageName = $request->input('packageName');
  118. //投放标识
  119. $channelName = $request->input('channelName');
  120. $appName = $request->input('appName');
  121. $iconUrl = $request->input('iconUrl');
  122. $iconRoundUrl = $request->input('iconRoundUrl');
  123. $adminSign=$request->input('adminSign',"dk");
  124. $pkey=env('DEFAULT_APK_PKEY','ouro777');
  125. $configToPkey=['bxorg'=>'ouro777','mxorg'=>'ouro777_mx','bx_skin2_nftd'=>'BR_SKIN1_NewFirstPay','bx_org_nftd'=>'BR_ORG_NewFirstPay','colperu_org'=>'oro777_sa','bx24680'=>'red24680','pakistan_org'=>'pakistan'];
  126. if($request->has('config')){
  127. $config = preg_replace('/[^a-zA-Z_]+$/', '', trim($request->input('config')));
  128. $pkey=$configToPkey[$config]??$pkey;
  129. }
  130. $params=compact('packageName','appName','iconUrl','iconRoundUrl','pkey');
  131. $api='getApk';
  132. if($request->input('rebuild',0)==1){
  133. $api='rebuildApk';
  134. }
  135. // dd('http://15.228.201.93/api/'.$api.'?' . http_build_query($params));
  136. try {
  137. $url='http://15.228.201.93/api/'.$api.'?' . http_build_query($params);
  138. $client = new Client(['timeout'=>60]);
  139. $response = $client->get($url, [
  140. 'timeout' => 60
  141. ]);
  142. $result = $response->getBody();
  143. }catch (\Exception $e){
  144. Util::WriteLog('autoapk',$e->getMessage().$e->getTraceAsString());
  145. return apiReturnFail(__('messages.api.auto_apk.please_wait'));
  146. }
  147. $result=json_decode($result,true);
  148. if($result['code']!=200){
  149. $result['makeurl']='http://15.228.201.93/api/'.$api.'?' . http_build_query($params);
  150. return $result;
  151. }
  152. Util::WriteLog('autoapk',$result);
  153. //制作成功,建立数据
  154. $packageUrl=$result['data']['packageUrl'];
  155. $packageUrl=str_replace('http://18.228.154.186/','https://d388b4gb9i0dwg.cloudfront.net/',$packageUrl);
  156. $packageConfig=$this->autoCreateChannel($packageName,$channelName,$adminSign);
  157. $signConfigs=[
  158. 'dk'=>['david_view','david','xidu','kele','liang','newapk','desheng'],
  159. 'xidu'=>['david_view','david','xidu','kele','liang','newapk','desheng'],
  160. // 'xidu'=>['xidu','kele','liang','newapk_ours','desheng'],
  161. ];
  162. //修改后台权限
  163. $Channel=$packageConfig['Channel'];
  164. DB::connection('mysql')->table('dcat-admin.admin_users')->whereIn('username',$signConfigs[$adminSign])->orderBy('username')->each(function($item) use ($Channel) {
  165. $item=(array)$item;
  166. $channels=json_decode($item['channel'],true);
  167. if(!in_array($Channel,$channels))$channels[]=$Channel;
  168. DB::connection('mysql')->table('dcat-admin.admin_users')->where('username',$item['username'])->update(['channel'=>json_encode($channels)]);
  169. });
  170. $urlSign=$packageConfig['AppKey'];
  171. $data=['packageUrl'=>$packageUrl,'packageName'=>$packageName,'channel'=>$packageConfig['Channel'],'urlSign'=>$urlSign];
  172. return apiReturnSuc($data);
  173. }
  174. public function autoCreateChannel($packageName, $channelName,$adminSign='dk')
  175. {
  176. $packageConfig=DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('PackageName',$packageName)->first();
  177. $UnionSign=0;
  178. if($adminSign=='dk'){
  179. //联运通道
  180. $UnionSign=1;
  181. $channelName='联'.$channelName;
  182. }
  183. if(!$packageConfig){
  184. $sample=DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->where('Channel',100)->orderBy('ID')->first();
  185. $post=(array)$sample;
  186. unset($post['ID']);
  187. $post['Remarks'] = $post['AliasName']=$channelName;
  188. $post['UnionSign']=$UnionSign;
  189. $post['PackageName'] = $packageName;
  190. $post['AppKey']= Util::generateRandomString();
  191. $post['Sort'] = 100;
  192. while(DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->where('AppKey', $post['AppKey'])->exists()) {
  193. $post['AppKey'] = Util::generateRandomString();
  194. }
  195. $maxChannel=DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->max('Channel');
  196. $post['Channel']=$Channel = $maxChannel+1;
  197. DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')
  198. ->insert($post);
  199. if($Channel){
  200. $createConfig = function () use($Channel) {
  201. $config = new WithdrawalChannelPositionConfig();
  202. $config->channel = $Channel;
  203. return $config;
  204. };
  205. $config = WithdrawalChannelPositionConfig::query()->where('channel', $Channel)->first() ?: $createConfig();
  206. $config->save();
  207. }
  208. }else{
  209. $packageConfig=(array)$packageConfig;
  210. if($packageConfig['Remarks']!=$channelName||$packageConfig['AliasName']!=$channelName){
  211. DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('PackageName',$packageName)->update(['Remarks'=>$channelName,'AliasName'=>$channelName]);
  212. WebChannelConfig::where('Channel', $packageConfig['Channel'])->update(['Remarks' => $channelName,'PackageName'=>$packageName]);
  213. }
  214. $Channel=$packageConfig['Channel'];
  215. $post=$packageConfig;
  216. }
  217. if(WebChannelConfig::where('Channel', $Channel)->exists()) {
  218. WebChannelConfig::where('Channel', $Channel)->update(['Remarks' => $channelName,'PackageName'=>$packageName]);
  219. }else {
  220. $config = WebChannelConfig::getByChannel(50)->toArray();
  221. $config['Remarks'] = $channelName;
  222. $config['Channel'] = $Channel;
  223. $config['PackageName'] = $packageName;
  224. unset($config['ID']);
  225. WebChannelConfig::insert($config);
  226. }
  227. $dcatChannel=DB::connection('mysql')->table('dcat-admin.channel')->where('channel',$Channel);
  228. if($dcatChannel->exists()){
  229. $dcatChannel->update(['channel_name'=>$channelName]);
  230. }else{
  231. DB::connection('mysql')->table('dcat-admin.channel')->insert(['channel'=>$Channel,'channel_name'=>$channelName,'package_name'=>'','remark'=>'']);
  232. }
  233. $dcatChannel=DB::connection('mysql')->table('dcat-admin.channel_ownership')->where('channel',$Channel);
  234. if($dcatChannel->exists()){
  235. $dcatChannel->update(['name'=>$channelName]);
  236. }else{
  237. DB::connection('mysql')->table('dcat-admin.channel_ownership')->insert(['channel'=>$Channel,'name'=>$channelName]);
  238. }
  239. return $post;
  240. }
  241. }