AutoApkController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Facade\TableName;
  4. use App\Game\Services\RouteService;
  5. use App\Game\WebChannelConfig;
  6. use App\Http\Controllers\Controller;
  7. use App\IpLocation;
  8. use App\Models\AgentClickLog;
  9. use App\Models\WithdrawalChannelPositionConfig;
  10. use App\Util;
  11. use GuzzleHttp\Client;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\DB;
  14. use Illuminate\Support\Facades\Redis;
  15. class AutoApkController extends Controller
  16. {
  17. public function index()
  18. {
  19. }
  20. public function h5jump(Request $request){
  21. $url="https://cdn.24680.com/client/orgbr/index.html";
  22. Util::WriteLog("h5","");
  23. $redirect_url=$url.'?'.http_build_query($request->all());
  24. header("Location: $redirect_url", true, 302);
  25. exit();
  26. // return redirect($url.'?'.http_build_query($request->all()));
  27. }
  28. public function channelConfig(Request $request)
  29. {
  30. $config = WebChannelConfig::getByChannel($request->input('c','100'));
  31. return response()->json(['apkurl'=>$config->LightApk]);
  32. }
  33. public function jumpApkByConfig(Request $request)
  34. {
  35. $config = WebChannelConfig::getByChannel($request->input('c','100'));
  36. return redirect($config->LightApk);
  37. }
  38. public function health(Request $request){
  39. // 从Redis读取系统健康状态配置
  40. $healthConfig = Redis::get('system:health');
  41. if (!$healthConfig) {
  42. // 如果Redis中没有配置,则返回默认值
  43. return ['status' => 1, 'pay' => 1, 'cashout' => 1, 'notice' => '','other'=>json_decode($healthConfig, true)];
  44. }
  45. // 返回Redis中的配置
  46. return json_decode($healthConfig, true);
  47. }
  48. public function inside(Request $request){
  49. // 读取文件内容
  50. $file_path = public_path('inside.htm');
  51. $content = file_get_contents($file_path);
  52. // 替换 URL
  53. $old_url = 'https://saapi.24680.org';
  54. $new_url = env('APP_URL');
  55. $updated_content = str_replace($old_url, $new_url, $content);
  56. $updated_content = str_replace('BRL', env('CONFIG_24680_CURRENCY','BRL'), $updated_content);
  57. // 替换 URL
  58. $old_url = 'domain=brapi.24680.org';
  59. $new_url = 'domain='.$_SERVER['HTTP_HOST'];
  60. $updated_content = str_replace($old_url, $new_url, $updated_content);
  61. $old_url = 'domain=.24680.org';
  62. $new_url = 'domain='.$_SERVER['HTTP_HOST'];
  63. $updated_content = str_replace($old_url, $new_url, $updated_content);
  64. $UserID=$request->uid??0;
  65. if($UserID) {
  66. AgentClickController::checkClick($UserID);
  67. }
  68. return $updated_content; // 返回结果
  69. }
  70. public function findUrlSign(Request $request){
  71. $packageName = $request->input('packageName')??$request->input('PackageName');
  72. $packageConfig=DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('PackageName',$packageName)->first()->toArray();
  73. if(!$packageConfig){
  74. return apiReturnFail();
  75. }
  76. return apiReturnSuc($packageConfig);
  77. }
  78. /////模板包资源 //包体 pack/input/apks //签名 pack/input/keystore //替换目录 pack/input/res/ //输出目录 临时制作目录 pack/output //工具 解包 签名 pack/tools
  79. //
  80. ////最终包输出目录 app/public/apks/
  81. //
  82. //接口 get post api/getApk //包名 packageName //app名字 appName //icon url 名字随意 iconUrl //圆icon url 名字随意 iconRoundUrl //指定制作配置 默认ouro777 不更改可不传 pkey
  83. //
  84. public function createApk(Request $request)
  85. {
  86. $packageName = $request->input('packageName');
  87. //投放标识
  88. $channelName = $request->input('channelName');
  89. $appName = $request->input('appName');
  90. $iconUrl = $request->input('iconUrl');
  91. $iconRoundUrl = $request->input('iconRoundUrl');
  92. $adminSign=$request->input('adminSign',"dk");
  93. $pkey=env('DEFAULT_APK_PKEY','ouro777');
  94. $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'];
  95. if($request->has('config')){
  96. $config = preg_replace('/[^a-zA-Z_]+$/', '', trim($request->input('config')));
  97. $pkey=$configToPkey[$config]??$pkey;
  98. }
  99. $params=compact('packageName','appName','iconUrl','iconRoundUrl','pkey');
  100. $api='getApk';
  101. if($request->input('rebuild',0)==1){
  102. $api='rebuildApk';
  103. }
  104. // dd('http://15.228.201.93/api/'.$api.'?' . http_build_query($params));
  105. try {
  106. $url='http://15.228.201.93/api/'.$api.'?' . http_build_query($params);
  107. $client = new Client(['timeout'=>60]);
  108. $response = $client->get($url, [
  109. 'timeout' => 60
  110. ]);
  111. $result = $response->getBody();
  112. }catch (\Exception $e){
  113. Util::WriteLog('autoapk',$e->getMessage().$e->getTraceAsString());
  114. return apiReturnFail(__('messages.api.auto_apk.please_wait'));
  115. }
  116. $result=json_decode($result,true);
  117. if($result['code']!=200){
  118. $result['makeurl']='http://15.228.201.93/api/'.$api.'?' . http_build_query($params);
  119. return $result;
  120. }
  121. Util::WriteLog('autoapk',$result);
  122. //制作成功,建立数据
  123. $packageUrl=$result['data']['packageUrl'];
  124. $packageUrl=str_replace('http://18.228.154.186/','https://d388b4gb9i0dwg.cloudfront.net/',$packageUrl);
  125. $packageConfig=$this->autoCreateChannel($packageName,$channelName,$adminSign);
  126. $signConfigs=[
  127. 'dk'=>['david_view','david','xidu','kele','liang','newapk','desheng'],
  128. 'xidu'=>['david_view','david','xidu','kele','liang','newapk','desheng'],
  129. // 'xidu'=>['xidu','kele','liang','newapk_ours','desheng'],
  130. ];
  131. //修改后台权限
  132. $Channel=$packageConfig['Channel'];
  133. DB::connection('mysql')->table('dcat-admin.admin_users')->whereIn('username',$signConfigs[$adminSign])->orderBy('username')->each(function($item) use ($Channel) {
  134. $item=(array)$item;
  135. $channels=json_decode($item['channel'],true);
  136. if(!in_array($Channel,$channels))$channels[]=$Channel;
  137. DB::connection('mysql')->table('dcat-admin.admin_users')->where('username',$item['username'])->update(['channel'=>json_encode($channels)]);
  138. });
  139. $urlSign=$packageConfig['AppKey'];
  140. $data=['packageUrl'=>$packageUrl,'packageName'=>$packageName,'channel'=>$packageConfig['Channel'],'urlSign'=>$urlSign];
  141. return apiReturnSuc($data);
  142. }
  143. public function autoCreateChannel($packageName, $channelName,$adminSign='dk')
  144. {
  145. $packageConfig=DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('PackageName',$packageName)->first();
  146. $UnionSign=0;
  147. if($adminSign=='dk'){
  148. //联运通道
  149. $UnionSign=1;
  150. $channelName='联'.$channelName;
  151. }
  152. if(!$packageConfig){
  153. $sample=DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->where('Channel',100)->orderBy('ID')->first();
  154. $post=(array)$sample;
  155. unset($post['ID']);
  156. $post['Remarks'] = $post['AliasName']=$channelName;
  157. $post['UnionSign']=$UnionSign;
  158. $post['PackageName'] = $packageName;
  159. $post['AppKey']= Util::generateRandomString();
  160. $post['Sort'] = 100;
  161. while(DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->where('AppKey', $post['AppKey'])->exists()) {
  162. $post['AppKey'] = Util::generateRandomString();
  163. }
  164. $maxChannel=DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')->max('Channel');
  165. $post['Channel']=$Channel = $maxChannel+1;
  166. DB::connection('write')->table('QPPlatformDB.dbo.ChannelPackageName')
  167. ->insert($post);
  168. if($Channel){
  169. $createConfig = function () use($Channel) {
  170. $config = new WithdrawalChannelPositionConfig();
  171. $config->channel = $Channel;
  172. return $config;
  173. };
  174. $config = WithdrawalChannelPositionConfig::query()->where('channel', $Channel)->first() ?: $createConfig();
  175. $config->save();
  176. }
  177. }else{
  178. $packageConfig=(array)$packageConfig;
  179. if($packageConfig['Remarks']!=$channelName||$packageConfig['AliasName']!=$channelName){
  180. DB::table('QPPlatformDB.dbo.ChannelPackageName')->where('PackageName',$packageName)->update(['Remarks'=>$channelName,'AliasName'=>$channelName]);
  181. WebChannelConfig::where('Channel', $packageConfig['Channel'])->update(['Remarks' => $channelName,'PackageName'=>$packageName]);
  182. }
  183. $Channel=$packageConfig['Channel'];
  184. $post=$packageConfig;
  185. }
  186. if(WebChannelConfig::where('Channel', $Channel)->exists()) {
  187. WebChannelConfig::where('Channel', $Channel)->update(['Remarks' => $channelName,'PackageName'=>$packageName]);
  188. }else {
  189. $config = WebChannelConfig::getByChannel(50)->toArray();
  190. $config['Remarks'] = $channelName;
  191. $config['Channel'] = $Channel;
  192. $config['PackageName'] = $packageName;
  193. unset($config['ID']);
  194. WebChannelConfig::insert($config);
  195. }
  196. $dcatChannel=DB::connection('mysql')->table('dcat-admin.channel')->where('channel',$Channel);
  197. if($dcatChannel->exists()){
  198. $dcatChannel->update(['channel_name'=>$channelName]);
  199. }else{
  200. DB::connection('mysql')->table('dcat-admin.channel')->insert(['channel'=>$Channel,'channel_name'=>$channelName,'package_name'=>'','remark'=>'']);
  201. }
  202. $dcatChannel=DB::connection('mysql')->table('dcat-admin.channel_ownership')->where('channel',$Channel);
  203. if($dcatChannel->exists()){
  204. $dcatChannel->update(['name'=>$channelName]);
  205. }else{
  206. DB::connection('mysql')->table('dcat-admin.channel_ownership')->insert(['channel'=>$Channel,'name'=>$channelName]);
  207. }
  208. return $post;
  209. }
  210. }