AdvertiseController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace App\Http\Controllers\Wap\Advertises;
  3. use App\Http\Controllers\Wap\BaseController;
  4. use App\Modules\Cpa\Services\AdvertiseService;
  5. use App\Modules\Cpa\Services\AdvertiseUsersService;
  6. use App\Modules\Book\Services\BookConfigService;
  7. use App\Modules\Cpa\Services\AdvertiseUserQueueService;
  8. use App\Modules\User\Services\ReadRecordService;
  9. use Illuminate\Http\Request;
  10. use Redis;
  11. use Hashids;
  12. use DB;
  13. class AdvertiseController extends BaseController
  14. {
  15. public function jump(Request $request){
  16. //$bid=$request->input('bid','');
  17. $uid_pre=$request->input('uid','');
  18. if(empty($uid_pre)){
  19. return response()->error('PARAM_ERROR');
  20. }
  21. $uid = Hashids::decode($uid_pre)[0];
  22. \Log::info('---uid:'.$uid);
  23. $bid= ReadRecordService::getSimpleFirstReadRecord($uid); //TODO 获取最近阅读
  24. $books_info = BookConfigService::getBookById($bid);
  25. $book_name=$books_info->book_name;
  26. //$bid=$books_info[''];
  27. Redis::incr("advertise_jump_h5_pv:");
  28. $uid=$uid_pre;
  29. $ads = $this->getOneAd(1);
  30. $timestamp = time();
  31. $private_key = '^^zhuishuyun';
  32. $bid=Hashids::encode($bid);
  33. $pre_str = arr_to_url(compact('bid','uid','timestamp'));
  34. \Log::info('pre_str:'.$pre_str);
  35. $my_sign = md5($pre_str.$private_key);
  36. $ua = $_SERVER['HTTP_USER_AGENT'];
  37. $my_bid = $bid;
  38. if($my_bid && preg_match('/Android/',$ua)) {
  39. try{
  40. AdvertiseUsersService::addAdAccessRec(['uid'=>Hashids::decode($uid)[0],
  41. 'bid'=>Hashids::decode($my_bid)[0],
  42. 'position'=>'JUMP',
  43. 'created_at'=>date('Y-m-d H:i:s'),
  44. 'updated_at'=>date('Y-m-d H:i:s'),
  45. 'remark'=>$ua
  46. ]);
  47. }catch(\Exception $e){
  48. \Log::error('insert into advertise_access_rec failded:'.$e->getMessage());
  49. }
  50. }
  51. return view('wap.advertise',['params'=>compact('bid','book_name','uid','timestamp','my_sign'),'ads'=>$ads]);
  52. }
  53. public function jumpToSource(Request $request){
  54. $bid=$request->input('bid','');
  55. $uid=$request->input('uid','');
  56. $ad =$request->input('ad','');
  57. $timestamp = $request->input('timestamp','');
  58. $sign = $request->input('sign','');
  59. if(empty($bid)||empty($uid)||empty($ad)){
  60. return response()->error('PARAM_EMPTY');
  61. }
  62. //签名
  63. $pre_str = arr_to_url(compact('bid','uid','timestamp'));
  64. \Log::info('my_pre_str:'.$pre_str);
  65. $private_key = '^^zhuishuyun';
  66. $my_sign = md5($pre_str.$private_key);
  67. //签名时间超过两小时过期
  68. $now = time();
  69. if(($now-$timestamp) > 60*60*2){
  70. return response()->error('PARAM_ERROR');
  71. }
  72. if($my_sign != $sign){
  73. return response()->error('PARAM_ERROR');
  74. }
  75. \Log::info('ad:'.$ad);
  76. $bid=Hashids::decode($bid)[0];
  77. $uid = Hashids::decode($uid)[0];
  78. \Log::info('bid:'.$bid.':uid:'.$uid);
  79. $AdUers = AdvertiseUsersService::addOrUpdateAdUsers(['bid'=>$bid,'uid'=>$uid,'advertise_id'=>$ad]);
  80. \Log::info('ad_users:'.$AdUers);
  81. \Log::info('ad_users:----');
  82. $toQueue = array(
  83. 'uid'=>$uid,
  84. 'bid'=>$bid,
  85. 'ad_user_id'=>$AdUers->id,
  86. 'advertise_id'=>$ad,
  87. //'add_time'=>time(),
  88. 'status'=>0
  89. );
  90. AdvertiseUserQueueService::addToQueue($toQueue);
  91. $adInfo = AdvertiseService::getOneById($ad);
  92. \Log::info($adInfo);
  93. header('Location:'.'https://url.cn/5T6fJWf');
  94. }
  95. public function getAds(Request $request){
  96. $uid=$request->input('uid','');
  97. if(empty($uid)) {
  98. return response()->error('PARAM_EMPTY');
  99. }
  100. $ads = AdvertiseService::getAds();
  101. foreach ($ads as &$ad){
  102. $adv = AdvertiseUsersService::getOne(['uid'=>$uid,'advertise_id'=>$ad->advertise_id]);
  103. if($adv){
  104. $ad->is_download=1;
  105. }else{
  106. $ad->is_download =0;
  107. }
  108. }
  109. return response()->success($ads);
  110. }
  111. private static function getAdvs($uid) {
  112. $ads = AdvertiseService::getAds();
  113. foreach ($ads as &$ad){
  114. $adv = AdvertiseUsersService::getOne(['uid'=>$uid,'advertise_id'=>$ad->advertise_id]);
  115. if($adv){
  116. $ad->is_download=1;
  117. }else{
  118. $ad->is_download =0;
  119. }
  120. }
  121. return $ads;
  122. }
  123. private function getOneAd($id) {
  124. $ads = AdvertiseService::getOneById($id);
  125. return $ads;
  126. }
  127. /**
  128. * 点击下载按钮上报
  129. * @param Request $request
  130. * @return mixed
  131. */
  132. public function recieveUserBehavior(Request $request){
  133. $uid = $request->input('uid','');
  134. $bid = $request->input('bid','');
  135. $uid=Hashids::decode($uid)[0];
  136. $bid=Hashids::decode($bid)[0];
  137. $position = $request->input('position','');
  138. $params = compact('uid','bid','position');
  139. $params['created_at'] = $params['updated_at'] = date('Y-m-d H:i:s');
  140. $ua = $_SERVER['HTTP_USER_AGENT'];
  141. $params['remark'] = $ua;
  142. DB::table('advertise_access_rec')->insert($params);
  143. return response()->success();
  144. }
  145. }