ActivityController.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace App\Http\Controllers\Wap\Web;
  3. use App\Modules\Activity\Services\ActivityService;
  4. use Illuminate\Http\Request;
  5. use App\Http\Controllers\Wap\BaseController;
  6. use Redis;
  7. use DB;
  8. class ActivityController extends BaseController
  9. {
  10. //渠道自定义活动 可以多少充值
  11. public function channelCustomActivity(Request $request){
  12. $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
  13. $token = $request->input('token');
  14. $activity_info = ActivityService::getByToken($token);
  15. $img = 'https://cdn-novel.iycdm.com/h5/activity-chanel-custom/btn48.jpg';
  16. if ($activity_info && $activity_info->product_id) {
  17. $customer_activity_info = DB::table('channel_custom_activity')->where('product_id',$activity_info->product_id)->select('setting')->first();
  18. if($customer_activity_info && $customer_activity_info->setting){
  19. $img = json_decode($customer_activity_info->setting,1)['img'];
  20. }
  21. $from = $request->input('fromtype', 'main');
  22. $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
  23. $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
  24. $uv_key = sprintf($uv_key_format, $activity_info->id, $this->distribution_channel_id, date('Y-m-d'));
  25. $pv_key = sprintf($pv_key_format, $activity_info->id, $this->distribution_channel_id);
  26. Redis::sadd($uv_key, $this->uid);
  27. Redis::hincrby($pv_key, date('Y-m-d'), 1);
  28. //$order = Order::where('uid',$this->uid)->where('status','PAID')->where('activity_id',$activity_info->id)->count();
  29. //渠道不符合
  30. if ($activity_info->distribution_channel_id != $this->distribution_channel_id) {
  31. 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)]);
  32. }
  33. //活动未开始
  34. if (time() < strtotime($activity_info->start_time)) {
  35. 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)]);
  36. }
  37. //活动结束
  38. if (time() > strtotime($activity_info->end_time)) {
  39. 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)]);
  40. }
  41. if (time() > strtotime($activity_info->start_time) && time() < strtotime($activity_info->end_time)) {
  42. $param = [
  43. 'uid' => $this->uid,
  44. 'distribution_channel_id' => $this->distribution_channel_id,
  45. 'product_id' => $activity_info->product_id,
  46. 'activity_id' => $activity_info->id,
  47. 'fromtype' => $from,
  48. 'limit' => 100,
  49. 'pay_redirect_url' => env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person'
  50. ];
  51. $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  52. 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)]);
  53. }
  54. }
  55. 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)]);
  56. }
  57. public function commonActivity(Request $request)
  58. {
  59. $encode_distribution_channel_id = encodeDistributionChannelId($this->distribution_channel_id);
  60. $token = $request->input('token');
  61. $activity_info = ActivityService::getByToken($token);
  62. if ($activity_info && isset($activity_info->setting) && empty(!$activity_info->setting)) {
  63. $imgs = json_decode($activity_info->setting, 1);
  64. $from = $request->input('fromtype', 'main');
  65. $uv_key_format = 'activity:%s:distribution_channel_id:%s:date:%s:uv';
  66. $pv_key_format = 'activity:%s:distribution_channel_id:%s:pv';
  67. $uv_key = sprintf($uv_key_format, $activity_info->id, $this->distribution_channel_id, date('Y-m-d'));
  68. $pv_key = sprintf($pv_key_format, $activity_info->id, $this->distribution_channel_id);
  69. $redirect_url = env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/person';
  70. if ($request->input('redirect_url')) {
  71. $redirect_url = $request->input('redirect_url');
  72. $redirect_url = urldecode($redirect_url);
  73. }
  74. $product_id = $activity_info->product_id;
  75. if($activity_info->id == 6000){
  76. $imgs['page_bd_img'] = 'https://cdn-novel.iycdm.com/h5/activity-2019-04-29/bg2.jpg';
  77. $product_id = 5788;
  78. }
  79. if (time() > strtotime($activity_info->start_time) && time() < strtotime($activity_info->end_time)) {
  80. Redis::sadd($uv_key, $this->uid);
  81. Redis::hincrby($pv_key, date('Y-m-d'), 1);
  82. $param = [
  83. 'uid' => $this->uid,
  84. 'distribution_channel_id' => $this->distribution_channel_id,
  85. 'product_id' => $product_id,
  86. 'activity_id' => $activity_info->id,
  87. 'fromtype' => $from,
  88. 'pay_redirect_url' => $redirect_url,
  89. 'limit' => 100,
  90. ];
  91. $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  92. return view('pay.order.common', ['url' => $url, 'code' => 0, 'img' => $imgs]);
  93. } else if (time() <= strtotime($activity_info->start_time)) {
  94. return view('pay.order.common', ['url' => [], 'code' => 1, 'img' => $imgs]);
  95. } else {
  96. return view('pay.order.common', ['url' => [], 'code' => 2, 'img' => $imgs]);
  97. }
  98. }
  99. $default_url = env('H5_SCHEME', 'https') . '://site' . $encode_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/';
  100. return redirect()->to($default_url);
  101. }
  102. public function crmActivity(Request $request){
  103. $default_url = env('H5_SCHEME', 'https') . '://site' . $this->en_distribution_channel_id . '.' . env('CUSTOM_HOST') . '.com/';
  104. $token = $request->input('token');
  105. if(!$token){
  106. return redirect()->to($default_url);
  107. }
  108. $activity_info = ActivityService::getByToken($token);
  109. if(!$activity_info){
  110. return redirect()->to($default_url);
  111. }
  112. $img = \GuzzleHttp\json_decode($activity_info->setting,1);
  113. $param = [
  114. 'uid' => $this->uid,
  115. 'distribution_channel_id' => $this->distribution_channel_id,
  116. 'product_id' => $activity_info->product_id,
  117. 'activity_id' => $activity_info->id,
  118. 'fromtype' => 'crm',
  119. 'pay_redirect_url' => '/person',
  120. 'limit' => 100,
  121. ];
  122. $url = env('CREATE_PAY_URL') . '?' . http_build_query($param);
  123. return view('crm.crmActivity', ['url' => $url,'img'=>$img['button']]);
  124. }
  125. }