ActivityController.php 7.7 KB

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