LinkSubscribeController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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 Illuminate\Http\Request;
  7. use App\Http\Controllers\Controller;
  8. use App\Modules\Channel\Services\ChannelSubscribeSettingService;
  9. use Redis;
  10. use Cookie;
  11. use DB;
  12. class LinkSubscribeController extends Controller
  13. {
  14. public function index(Request $request)
  15. {
  16. $uid = $request->input('uid');
  17. $channel_id = $request->input('distribution_channel_id');
  18. $send_order_id = $request->input('send_order_id', 0);
  19. $appid = $request->input('appid');
  20. $bid = $request->input('bid', 0);
  21. $h5_scheme = env('H5_SCHEME', 'https');
  22. if (empty($uid) || empty($appid)) {
  23. $auth_url = $h5_scheme . '://' . _domain();
  24. } else {
  25. $sub_setting = ChannelSubscribeSettingService::getSubscribeTypeByAppId($appid);
  26. if ($sub_setting && strpos($sub_setting->force_subscribe_type, '3') !== false && !empty($sub_setting->resource_url)) {
  27. $url = $h5_scheme . '://' . _domain() . '/subauthback/?uid=' . $uid . '&distribution_channel_id=' . $channel_id . '&bid=' . $bid . '&send_order_id=' . $send_order_id . '&appid=' . $appid;
  28. $auth_url = env('QRCODE_AUTH_URL') . '?gzh_app_id=' . $appid . '&redirect_url=' . urlencode($url);
  29. } else {
  30. $auth_url = $h5_scheme . '://' . _domain();
  31. }
  32. }
  33. return redirect()->to($auth_url);
  34. }
  35. public function wxAuthCallBack(Request $request)
  36. {
  37. $uid = $request->input('uid');
  38. $bid = $request->input('bid', 0);
  39. $channel_id = $request->input('distribution_channel_id', 5);
  40. $openid = $request->input('openid');
  41. $appid = $request->input('appid');
  42. $send_order_id = $request->input('send_order_id', 0);
  43. $sub_setting = ChannelSubscribeSettingService::getSubscribeTypeByAppId($appid);
  44. if ($sub_setting && !empty($sub_setting->resource_url)) {
  45. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'uid', $uid);
  46. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'bid', $bid);
  47. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'time', time());
  48. Redis::hset('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 'send_order_id', $send_order_id);
  49. Redis::EXPIRE('book:linksubscribe:openid:' . $openid . ':channelid:' . $channel_id, 300);
  50. Redis::hset('force_subscribe_from_bid', $appid . '_' . $uid, $bid);
  51. Redis::hset('force_subscribe_from_send_order_id', $appid . '_' . $uid, $send_order_id);
  52. return redirect()->to($sub_setting->resource_url);
  53. } else {
  54. $h5_scheme = env('H5_SCHEME', 'https');
  55. $auth_url = $h5_scheme . '://site' . $channel_id . '.leyuee.com/';
  56. return redirect()->to($auth_url);
  57. }
  58. }
  59. public function subscribeView(Request $request)
  60. {
  61. $title = $request->input('title', '扫一扫');
  62. $img = $request->input('img');
  63. $head_img_pool = [
  64. 'https://cdn-novel.iycdm.com/h5/subscribe/headimg/1.png',
  65. 'https://cdn-novel.iycdm.com/h5/subscribe/headimg/2.png',
  66. 'https://cdn-novel.iycdm.com/h5/subscribe/headimg/3.png'
  67. ];
  68. //$head_img = $request->input('head_img','');
  69. $num = Cookie::get('sub_random_num');
  70. if (!$num) {
  71. $num = random_int(10, 20);
  72. Cookie::queue('sub_random_num', $num);
  73. }
  74. $uid = $request->get('uid');
  75. $head_img = array_random($head_img_pool);
  76. $domain = _domain();
  77. $distribution_channel_id = str_replace('site', '', explode('.', $domain)[0]);
  78. if (!is_numeric($distribution_channel_id)) {
  79. $distribution_channel_id = decodeDistributionChannelId($distribution_channel_id);
  80. }
  81. $new_sub_page = env('NEW_SUB_PAGE', -1);
  82. $template = 2;
  83. if (in_array($distribution_channel_id, [123, 211, 2, 14])) {
  84. if ($uid % 2 == 0) {
  85. $template = 3;
  86. }
  87. $this->userForceSubscribeTemplate($uid, $distribution_channel_id, $template);
  88. }
  89. if($this->appad($uid,$distribution_channel_id)){
  90. $this->userForceSubscribeTemplate($uid,$distribution_channel_id,4);
  91. return view('wap.subscribeV3', compact('title', 'img', 'head_img', 'num', 'template'));
  92. }else{
  93. return view('wap.subscribeV2', compact('title', 'img', 'head_img', 'num', 'template'));
  94. }
  95. }
  96. private function userForceSubscribeTemplate($uid, $distribution_channel_id, $template_type)
  97. {
  98. try {
  99. DB::table('user_force_subscribe_template')->insert([
  100. 'uid' => $uid,
  101. 'distribution_channel_id' => $distribution_channel_id,
  102. 'template_type' => $template_type,
  103. 'created_at' => date('Y-m-d H:i:s'),
  104. 'updated_at' => date('Y-m-d H:i:s'),
  105. ]);
  106. } catch (\Exception $e) {
  107. }
  108. }
  109. private function appad($uid, $distribution_channel_id)
  110. {
  111. if (!in_array($distribution_channel_id, explode(',', env('ADS_OPEN_SITE')))) {
  112. return false;
  113. }
  114. $force_subscribe_info = ForceSubscribeService::forceSubscribeUsersByUid(['uid' => $uid]);
  115. if (!$force_subscribe_info) {
  116. return false;
  117. }
  118. if ($force_subscribe_info->subscribe_time &&
  119. (time() - strtotime($force_subscribe_info->subscribe_time) >= 3 * 86400)
  120. && !OrderService::isPaidUser($uid) &&
  121. !AdvertiseUserQueueService::getUserAdvertise($uid)
  122. ) {
  123. return true;
  124. }
  125. return false;
  126. }
  127. }