ActivityController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. namespace App\Http\Controllers\Wap\Web;
  3. use App\Modules\Activity\Services\ActivityService;
  4. use App\Modules\Product\Services\ProductService;
  5. use Illuminate\Http\Request;
  6. use App\Http\Controllers\Wap\BaseController;
  7. use Redis;
  8. use DB;
  9. class ActivityController extends BaseController
  10. {
  11. //渠道自定义活动 可以多少充值
  12. public function channelCustomActivity(Request $request)
  13. {
  14. $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
  15. $token = $request->input('token');
  16. $activity_info = ActivityService::getByToken($token);
  17. $img = 'https://cdn-novel.iycdm.com/h5/activity-chanel-custom/btn48.jpg';
  18. if ($activity_info && $activity_info->product_id) {
  19. $customer_activity_info = DB::table('channel_custom_activity')->where('product_id', $activity_info->product_id)->select('setting')->first();
  20. if ($customer_activity_info && $customer_activity_info->setting) {
  21. $img = json_decode($customer_activity_info->setting, 1)['img'];
  22. }
  23. $from = $request->input('fromtype', 'main');
  24. $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
  25. $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
  26. $uv_key = sprintf($uv_key_format, $activity_info->id, $this->distribution_channel_id, date('Y-m-d'));
  27. $pv_key = sprintf($pv_key_format, $activity_info->id, $this->distribution_channel_id);
  28. Redis::sadd($uv_key, $this->uid);
  29. Redis::hincrby($pv_key, date('Y-m-d'), 1);
  30. //$order = Order::where('uid',$this->uid)->where('status','PAID')->where('activity_id',$activity_info->id)->count();
  31. //渠道不符合
  32. if ($activity_info->distribution_channel_id != $this->distribution_channel_id) {
  33. return view('pay.activity.ChannelCustomerV1', ['url' => '###', 'img' => $img, 'code' => -1, 'start_time' => date('Y-m-d', time() - 86400 * 2), 'end_time' => date('Y-m-d', time() - 86400)]);
  34. }
  35. //活动未开始
  36. if (time() < strtotime($activity_info->start_time)) {
  37. return view('pay.activity.ChannelCustomerV1', ['url' => '###', 'img' => $img, 'code' => -3, 'start_time' => date('Y-m-d', strtotime($activity_info->start_time)), 'end_time' => date('Y-m-d', strtotime($activity_info->end_time) - 100)]);
  38. }
  39. //活动结束
  40. if (time() > strtotime($activity_info->end_time)) {
  41. return view('pay.activity.ChannelCustomerV1', ['url' => '###', 'img' => $img, 'code' => -1, 'start_time' => date('Y-m-d', strtotime($activity_info->start_time)), 'end_time' => date('Y-m-d', strtotime($activity_info->end_time) - 100)]);
  42. }
  43. if (time() > strtotime($activity_info->start_time) && time() < strtotime($activity_info->end_time)) {
  44. $param = [
  45. 'uid' => $this->uid,
  46. 'distribution_channel_id' => $this->distribution_channel_id,
  47. 'product_id' => $activity_info->product_id,
  48. 'activity_id' => $activity_info->id,
  49. 'fromtype' => $from,
  50. 'limit' => 100,
  51. 'pay_redirect_url' => env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person'
  52. ];
  53. $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  54. return view('pay.activity.ChannelCustomerV1', ['url' => $url, 'img' => $img, 'code' => 0, 'start_time' => date('Y-m-d', strtotime($activity_info->start_time)), 'end_time' => date('Y-m-d', strtotime($activity_info->end_time) - 100)]);
  55. }
  56. }
  57. return view('pay.activity.ChannelCustomerV1', ['url' => '###', 'img' => $img, 'code' => -1, 'start_time' => date('Y-m-d', time() - 86400 * 2), 'end_time' => date('Y-m-d', time() - 86400)]);
  58. }
  59. public function commonActivity(Request $request)
  60. {
  61. $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
  62. $token = $request->input('token');
  63. $activity_info = ActivityService::getByToken($token);
  64. if ($activity_info && isset($activity_info->setting) && empty(!$activity_info->setting)) {
  65. $imgs = json_decode($activity_info->setting, 1);
  66. $from = $request->input('fromtype', 'main');
  67. $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
  68. $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
  69. $uv_key = sprintf($uv_key_format, $activity_info->id, $this->distribution_channel_id, date('Y-m-d'));
  70. $pv_key = sprintf($pv_key_format, $activity_info->id, $this->distribution_channel_id);
  71. $redirect_url = env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person';
  72. if ($request->input('redirect_url')) {
  73. $redirect_url = $request->input('redirect_url');
  74. $redirect_url = urldecode($redirect_url);
  75. }
  76. $product_id = $activity_info->product_id;
  77. if ($activity_info->id == 6000) {
  78. $imgs['page_bd_img'] = 'https://cdn-novel.iycdm.com/h5/activity-2019-04-29/bg2.jpg';
  79. $product_id = 5788;
  80. }
  81. if (time() > strtotime($activity_info->start_time) && time() < strtotime($activity_info->end_time)) {
  82. Redis::sadd($uv_key, $this->uid);
  83. Redis::hincrby($pv_key, date('Y-m-d'), 1);
  84. $param = [
  85. 'uid' => $this->uid,
  86. 'distribution_channel_id' => $this->distribution_channel_id,
  87. 'product_id' => $product_id,
  88. 'activity_id' => $activity_info->id,
  89. 'fromtype' => $from,
  90. 'pay_redirect_url' => $redirect_url,
  91. 'limit' => 100,
  92. ];
  93. $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  94. return view('pay.order.common', ['url' => $url, 'code' => 0, 'img' => $imgs]);
  95. } else if (time() <= strtotime($activity_info->start_time)) {
  96. return view('pay.order.common', ['url' => [], 'code' => 1, 'img' => $imgs]);
  97. } else {
  98. return view('pay.order.common', ['url' => [], 'code' => 2, 'img' => $imgs]);
  99. }
  100. }
  101. $default_url = env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/';
  102. return redirect()->to($default_url);
  103. }
  104. public function crmActivity(Request $request)
  105. {
  106. $default_url = env('H5_SCHEME', 'https') . '://site' . $this->en_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/';
  107. $token = $request->input('token');
  108. if (!$token) {
  109. return redirect()->to($default_url);
  110. }
  111. $activity_info = ActivityService::getByToken($token);
  112. if (!$activity_info) {
  113. return redirect()->to($default_url);
  114. }
  115. $img = \GuzzleHttp\json_decode($activity_info->setting, 1);
  116. $param = [
  117. 'uid' => $this->uid,
  118. 'distribution_channel_id' => $this->distribution_channel_id,
  119. 'product_id' => $activity_info->product_id,
  120. 'activity_id' => $activity_info->id,
  121. 'fromtype' => 'crm',
  122. 'pay_redirect_url' => $default_url . 'person',
  123. 'limit' => 100,
  124. ];
  125. $product_info = ProductService::getProductSingle($activity_info->product_id);
  126. $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  127. $fee = $product_info->price * 100 + $product_info->given;
  128. return view('crm.crmActivity', ['url' => $url, 'img' => $img['button'], 'fee' => $fee]);
  129. }
  130. //端午活动
  131. public function ragonBoatActivity(Request $request)
  132. {
  133. $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
  134. $a_id = 1;
  135. $activity_info = ActivityService::getById($a_id);
  136. if (!$activity_info) {
  137. $default_url = env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/';
  138. return redirect()->to($default_url);
  139. }
  140. $from = $request->input('fromtype', 'main');
  141. $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
  142. $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
  143. $uv_key = sprintf($uv_key_format, $activity_info->id, $this->distribution_channel_id, date('Y-m-d'));
  144. $pv_key = sprintf($pv_key_format, $activity_info->id, $this->distribution_channel_id);
  145. $redirect_url = env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person';
  146. if ($request->input('redirect_url')) {
  147. $redirect_url = $request->input('redirect_url');
  148. $redirect_url = urldecode($redirect_url);
  149. }
  150. //$product_id = $activity_info->product_id;
  151. if (in_array($this->distribution_channel_id, [123, 211, 146, 155, 255, 256, 691, 722, 4364, 4427, 695, 4174, 4025, 4593, 4426, 4889, 4891, 4742, 4053, 4334, 4487, 5611, 6122, 6123, 6124, 8, 5, 160, 4236, 4237, 4241, 273, 148, 266, 202, 271])) {
  152. if (time() > strtotime($activity_info->start_time) && time() < strtotime($activity_info->end_time)) {
  153. Redis::sadd($uv_key, $this->uid);
  154. Redis::hincrby($pv_key, date('Y-m-d'), 1);
  155. $url = [];
  156. $product_ids = [6172, 6173, 6174];
  157. foreach ($product_ids as $item) {
  158. $param = [
  159. 'uid' => $this->uid,
  160. 'distribution_channel_id' => $this->distribution_channel_id,
  161. 'product_id' => $item,
  162. 'activity_id' => $activity_info->id,
  163. 'fromtype' => $from,
  164. 'pay_redirect_url' => $redirect_url,
  165. 'limit' => 100,
  166. ];
  167. $url[] = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  168. }
  169. return view('pay.activity.ragonBoatInnerActivity', ['url' => $url, 'code' => 0]);
  170. } elseif (time() <= strtotime($activity_info->start_time)) {
  171. return view('pay.activity.ragonBoatInnerActivity', ['url' => [], 'code' => 1]);
  172. } else {
  173. return view('pay.activity.ragonBoatInnerActivity', ['url' => [], 'code' => 2]);
  174. }
  175. } else {
  176. if (time() > strtotime($activity_info->start_time) && time() < strtotime($activity_info->end_time)) {
  177. Redis::sadd($uv_key, $this->uid);
  178. Redis::hincrby($pv_key, date('Y-m-d'), 1);
  179. return view('pay.activity.ragonBoatActivity', ['url' => [], 'code' => 0]);
  180. } elseif (time() <= strtotime($activity_info->start_time)) {
  181. return view('pay.activity.ragonBoatActivity', ['url' => [], 'code' => 1]);
  182. } else {
  183. return view('pay.activity.ragonBoatActivity', ['url' => [], 'code' => 2]);
  184. }
  185. }
  186. }
  187. }