LinkSubscribeController.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace App\Http\Controllers\Wap\Subscribe;
  3. use App\Modules\Cpa\Services\AdvertiseUserQueueService;
  4. use App\Modules\OfficialAccount\Services\ForceSubscribeService;
  5. use App\Modules\Subscribe\Services\OrderService;
  6. use App\Modules\User\Services\UserDivisionCpcPropertyService;
  7. use App\Modules\User\Services\UserService;
  8. use Illuminate\Http\Request;
  9. use App\Http\Controllers\Controller;
  10. use App\Modules\Channel\Services\ChannelSubscribeSettingService;
  11. use Redis;
  12. use Cookie;
  13. use DB;
  14. class LinkSubscribeController extends Controller
  15. {
  16. public function index(Request $request)
  17. {
  18. $uid = $request->input('uid');
  19. $channel_id = $request->input('distribution_channel_id');
  20. $send_order_id = $request->input('send_order_id', 0);
  21. $appid = $request->input('appid');
  22. $bid = $request->input('bid', 0);
  23. $h5_scheme = env('H5_SCHEME', 'https');
  24. if (empty($uid) || empty($appid)) {
  25. $auth_url = $h5_scheme . '://' . _domain();
  26. } else {
  27. $sub_setting = ChannelSubscribeSettingService::getSubscribeTypeByAppId($appid);
  28. if ($sub_setting && strpos($sub_setting->force_subscribe_type, '3') !== false && !empty($sub_setting->resource_url)) {
  29. $url = $h5_scheme . '://' . _domain() . '/subauthback/?uid=' . $uid . '&distribution_channel_id=' . $channel_id . '&bid=' . $bid . '&send_order_id=' . $send_order_id . '&appid=' . $appid;
  30. $auth_url = env('QRCODE_AUTH_URL') . '?gzh_app_id=' . $appid . '&redirect_url=' . urlencode($url);
  31. } else {
  32. $auth_url = $h5_scheme . '://' . _domain();
  33. }
  34. }
  35. return redirect()->to($auth_url);
  36. }
  37. public function wxAuthCallBack(Request $request)
  38. {
  39. $uid = $request->input('uid');
  40. $bid = $request->input('bid', 0);
  41. $channel_id = $request->input('distribution_channel_id', 5);
  42. $openid = $request->input('openid');
  43. $appid = $request->input('appid');
  44. $send_order_id = $request->input('send_order_id', 0);
  45. $sub_setting = ChannelSubscribeSettingService::getSubscribeTypeByAppId($appid);
  46. if ($sub_setting && !empty($sub_setting->resource_url)) {
  47. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'uid', $uid);
  48. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'bid', $bid);
  49. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'time', time());
  50. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'send_order_id', $send_order_id);
  51. Redis::EXPIRE('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 300);
  52. Redis::hset('force_subscribe_from_bid', $appid . '_' . $uid, $bid);
  53. Redis::hset('force_subscribe_from_send_order_id', $appid . '_' . $uid, $send_order_id);
  54. return redirect()->to($sub_setting->resource_url);
  55. } else {
  56. $h5_scheme = env('H5_SCHEME', 'https');
  57. $auth_url = $h5_scheme . '://site' . $channel_id . '.leyuee.com/';
  58. return redirect()->to($auth_url);
  59. }
  60. }
  61. public function subscribeView(Request $request)
  62. {
  63. $title = $request->input('title', '扫一扫');
  64. $img = $request->input('img');
  65. $head_img_pool = [
  66. 'https://cdn-novel.iycdm.com/h5/subscribe/headimg/1.png',
  67. 'https://cdn-novel.iycdm.com/h5/subscribe/headimg/2.png',
  68. 'https://cdn-novel.iycdm.com/h5/subscribe/headimg/3.png'
  69. ];
  70. //$head_img = $request->input('head_img','');
  71. $num = Cookie::get('sub_random_num');
  72. if (!$num) {
  73. $num = random_int(10, 20);
  74. Cookie::queue('sub_random_num', $num);
  75. }
  76. $uid = $request->get('uid');
  77. $head_img = array_random($head_img_pool);
  78. $domain = _domain();
  79. $distribution_channel_id = str_replace('site', '', explode('.', $domain)[0]);
  80. if (!is_numeric($distribution_channel_id)) {
  81. $distribution_channel_id = decodeDistributionChannelId($distribution_channel_id);
  82. }
  83. $new_sub_page = env('NEW_SUB_PAGE', -1);
  84. $template = 2;
  85. if (in_array($distribution_channel_id, [123, 211, 2, 14])) {
  86. if ($uid % 2 == 0) {
  87. $template = 3;
  88. }
  89. //$this->userForceSubscribeTemplate($uid, $distribution_channel_id, $template);
  90. }
  91. if($this->appad($uid,$distribution_channel_id)){
  92. return view('wap.subscribeV3', compact('title', 'img', 'head_img', 'num', 'template'));
  93. /*if($uid % 2 == 0){
  94. $this->userForceSubscribeTemplate($uid,$distribution_channel_id,6);
  95. return view('wap.subscribeV3', compact('title', 'img', 'head_img', 'num', 'template'));
  96. }else{
  97. $this->userForceSubscribeTemplate($uid,$distribution_channel_id,5);
  98. return view('wap.subscribeV2', compact('title', 'img', 'head_img', 'num', 'template'));
  99. }*/
  100. }else{
  101. return view('wap.subscribeV2', compact('title', 'img', 'head_img', 'num', 'template'));
  102. }
  103. }
  104. private function userForceSubscribeTemplate($uid, $distribution_channel_id, $template_type)
  105. {
  106. try {
  107. DB::table('user_force_subscribe_template')->insert([
  108. 'uid' => $uid,
  109. 'distribution_channel_id' => $distribution_channel_id,
  110. 'template_type' => $template_type,
  111. 'created_at' => date('Y-m-d H:i:s'),
  112. 'updated_at' => date('Y-m-d H:i:s'),
  113. ]);
  114. } catch (\Exception $e) {
  115. }
  116. }
  117. private function appad($uid, $distribution_channel_id)
  118. {
  119. /*$company = \App\Modules\Channel\Services\ChannelService::getCompanyIdByDistributionchannelid($distribution_channel_id);
  120. if(!in_array($company,[1,2,3,18,88,24])){
  121. return false;
  122. }*/
  123. if(!in_array($distribution_channel_id,[5,8,123,130,146,148,155,160,163,164,165,166,196,202,211,239,255,256,266,271,273,318,691,695,722,4025,4053,4126,4174,4236,4237,4241,4326,4334,4364,4426,4427,4487,4488,4556,4593,4742,4889,4891,5028,5204,5611,5793,5794,5817,5859,5905,5910,5911,5978,6014,6122,6123,6124,6126,6127,6129,6131,6134,6148,6157,6242,6262,6273,6274,6275,6279,6280,6309,6310,6342,6343,6373,6374,6382,6414,6415,6439,6447,6451,6458,6459,6463,6464,6465,6466,6472,6473,6630,6631,6687,6859,6870,6871,6929])){
  124. return false;
  125. }
  126. /*$ads_open_site = env('ADS_OPEN_SITE','');
  127. if($ads_open_site == 'all'){
  128. return UserService::isCpcUser($uid);
  129. }*/
  130. $cpc_status = Redis::hget('channel:setting:'.$distribution_channel_id,'cpc_status');
  131. if(is_null($cpc_status) || $cpc_status == 1){
  132. $prop = UserDivisionCpcPropertyService::getUserPropertyV2($uid);
  133. return $prop == 'none';
  134. }
  135. return false;
  136. /*if (!in_array($distribution_channel_id, explode(',', $ads_open_site))) {
  137. return false;
  138. }
  139. return UserService::isCpcUser($uid);*/
  140. }
  141. }