AdvertiseController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. $ads = $this->getOneAd(1);
  29. $timestamp = time();
  30. $private_key = '^^zhuishuyun';
  31. $bid=Hashids::encode($bid);
  32. $pre_str = arr_to_url(compact('bid','uid','timestamp'));
  33. $my_sign = md5($pre_str.$private_key);
  34. $uid=$uid_pre;
  35. return view('wap.advertise',['params'=>compact('bid','book_name','uid','timestamp','my_sign'),'ads'=>$ads]);
  36. }
  37. public function jumpToSource(Request $request){
  38. $bid=$request->input('bid','');
  39. $uid=$request->input('uid','');
  40. $ad =$request->input('ad','');
  41. $timestamp = $request->input('timestamp','');
  42. $sign = $request->input('sign','');
  43. if(empty($bid)||empty($uid)||empty($ad)){
  44. return response()->error('PARAM_EMPTY');
  45. }
  46. //签名
  47. $pre_str = arr_to_url(compact('bid','uid','timestamp'));
  48. \Log::info('my_pre_str:'.$pre_str);
  49. $private_key = '^^zhuishuyun';
  50. $my_sign = md5($pre_str.$private_key);
  51. //签名时间超过两小时过期
  52. $now = time();
  53. if(($now-$timestamp) > 60*60*2){
  54. return response()->error('PARAM_ERROR');
  55. }
  56. if($my_sign != $sign){
  57. return response()->error('PARAM_ERROR');
  58. }
  59. $bid=Hashids::decode($bid)[0];
  60. $uid = Hashids::decode($uid)[0];
  61. $AdUers = AdvertiseUsersService::addOrUpdateAdUsers(['bid'=>$bid,'uid'=>$uid,'advertise_id'=>$ad]);
  62. $toQueue = array(
  63. 'uid'=>$uid,
  64. 'bid'=>$bid,
  65. 'ad_user_id'=>$AdUers->id,
  66. 'advertise_id'=>$ad,
  67. 'add_time'=>time(),
  68. 'status'=>0
  69. );
  70. AdvertiseUserQueueService::addToQueue($toQueue);
  71. $adInfo = AdvertiseService::getOneById($ad);
  72. header('location:'.($adInfo->source_url));
  73. }
  74. public function getAds(Request $request){
  75. $uid=$request->input('uid','');
  76. if(empty($uid)) {
  77. return response()->error('PARAM_EMPTY');
  78. }
  79. $ads = AdvertiseService::getAds();
  80. foreach ($ads as &$ad){
  81. $adv = AdvertiseUsersService::getOne(['uid'=>$uid,'advertise_id'=>$ad->advertise_id]);
  82. if($adv){
  83. $ad->is_download=1;
  84. }else{
  85. $ad->is_download =0;
  86. }
  87. }
  88. return response()->success($ads);
  89. }
  90. private static function getAdvs($uid) {
  91. $ads = AdvertiseService::getAds();
  92. foreach ($ads as &$ad){
  93. $adv = AdvertiseUsersService::getOne(['uid'=>$uid,'advertise_id'=>$ad->advertise_id]);
  94. if($adv){
  95. $ad->is_download=1;
  96. }else{
  97. $ad->is_download =0;
  98. }
  99. }
  100. return $ads;
  101. }
  102. private function getOneAd($id) {
  103. $ads = AdvertiseService::getOneById($id);
  104. return $ads;
  105. }
  106. }