Browse Source

advertise

tusx 6 năm trước cách đây
mục cha
commit
27facdbff9

+ 43 - 15
app/Http/Controllers/Wap/advertise/AdvertiseController.php

@@ -4,8 +4,11 @@ namespace App\Http\Controllers\Wap\Advertise;
 
 use App\Http\Controllers\Wap\BaseController;
 
-use App\Modules\Activity\Services\AdvertiseService;
-use App\Modules\Activity\Services\AdvertiseUsersService;
+use App\Modules\Cpa\Services\AdvertiseService;
+use App\Modules\Cpa\Services\AdvertiseUsersService;
+use App\Modules\Book\Services\BookConfigService;
+use App\Modules\Cpa\Services\AdvertiseUserQueueService;
+use App\Modules\User\Services\ReadRecordService;
 use Illuminate\Http\Request;
 use Redis;
 use Hashids;
@@ -13,22 +16,31 @@ use DB;
 
 class AdvertiseController extends BaseController
 {
-    public static function jump(Request $request){
-        $bid=$request->input('bid','');
-        $uid=$request->input('uid','');
-        Redis::incr("advertise_jump_h5_pv:");
-        if(empty($bid)||empty($uid)){
+    public function jump(Request $request){
+        //$bid=$request->input('bid','');
+        $uid_pre=$request->input('uid','');
+        if(empty($uid)){
             return response()->error('PARAM_ERROR');
         }
-        $ads = AdvertiseService::getAds();
+        $uid = Hashids::decode($uid_pre)[0];
+        \Log::info('---uid:'.$uid);
+        $bid= ReadRecordService::getSimpleFirstReadRecord($uid);   //TODO 获取最近阅读
+        $books_info = BookConfigService::getBookById($bid);
+        $book_name=$books_info->book_name;
+        //$bid=$books_info[''];
+        Redis::incr("advertise_jump_h5_pv:");
+
+        $ads = $this->getOneAd(1);
         $timestamp = time();
         $private_key = '^^zhuishuyun';
+        $bid=Hashids::encode($bid);
         $pre_str = arr_to_url(compact('bid','uid','timestamp'));
         $my_sign = md5($pre_str.$private_key);
-        return view()->with(['params'=>compact('bid','uid','timestamp','my_sign'),'ads'=>$ads]);
+
+        return view('wap.advertise',['params'=>compact('bid','book_name','uid','timestamp','my_sign'),'ads'=>$ads]);
     }
 
-    public static function jumpToSource(Request $request){
+    public function jumpToSource(Request $request){
         $bid=$request->input('bid','');
         $uid=$request->input('uid','');
         $ad =$request->input('ad','');
@@ -50,7 +62,19 @@ class AdvertiseController extends BaseController
             return response()->error('PARAM_ERROR');
         }
         $bid=Hashids::decode($bid)[0];
-        AdvertiseUsersService::addOrUpdateAdUsers(['bid'=>$bid,'uid'=>$uid,'advertise_id'=>$ad]);
+        $uid = Hashids::decode($uid)[0];
+        $AdUers = AdvertiseUsersService::addOrUpdateAdUsers(['bid'=>$bid,'uid'=>$uid,'advertise_id'=>$ad]);
+        $toQueue = array(
+            'uid'=>$uid,
+            'bid'=>$bid,
+            'ad_user_id'=>$AdUers->id,
+            'advertise_id'=>$ad,
+            'add_time'=>time(),
+            'status'=>0
+        );
+        AdvertiseUserQueueService::addToQueue($toQueue);
+        $adInfo = AdvertiseService::getOneById($ad);
+        header('location:'.($adInfo->source_url));
     }
 
     public function getAds(Request $request){
@@ -60,7 +84,7 @@ class AdvertiseController extends BaseController
         }
         $ads = AdvertiseService::getAds();
         foreach ($ads as &$ad){
-            $adv = AdvertiseUsersService::getOne(['uid'=>$uid]);
+            $adv = AdvertiseUsersService::getOne(['uid'=>$uid,'advertise_id'=>$ad->advertise_id]);
             if($adv){
                 $ad->is_download=1;
             }else{
@@ -70,16 +94,20 @@ class AdvertiseController extends BaseController
         return response()->success($ads);
     }
 
-    private function getAdvs($uid) {
+    private static function getAdvs($uid) {
         $ads = AdvertiseService::getAds();
         foreach ($ads as &$ad){
-            $adv = AdvertiseUsersService::getOne(['uid'=>$uid]);
+            $adv = AdvertiseUsersService::getOne(['uid'=>$uid,'advertise_id'=>$ad->advertise_id]);
             if($adv){
                 $ad->is_download=1;
             }else{
                 $ad->is_download =0;
             }
         }
-        return response()->success($ads);
+        return $ads;
+    }
+    private function getOneAd($id) {
+        $ads = AdvertiseService::getOneById($id);
+        return $ads;
     }
 }

+ 3 - 0
app/Http/Routes/Wap/WapRoutes.php

@@ -50,6 +50,9 @@ Route::group(['domain'=>env('WAP_DOMAIN'),'namespace'=>'App\Http\Controllers\Wap
     Route::any('api/userBehavior','User\UserbehaviorController@collectionBehavior');
     Route::any('subscribe/qrcode','Subscribe\LinkSubscribeController@subscribeView');
 
+    Route::get('advertise/show','Cpa\AdvertiseController@jump');
+    Route::get('advertise/jump','Cpa\AdvertiseController@jumpToSource');
+
 //web 接口
     Route::group(['prefix'=>'api'],function () {
 

+ 4 - 0
app/Modules/Cpa/Models/Advertise.php

@@ -16,4 +16,8 @@ class Advertise extends Model
         }
         return $obj->get();
     }
+
+    static function getOne($id){
+        return self::where('id',$id)->first();
+    }
 }

+ 15 - 0
app/Modules/Cpa/Models/AdvertiseUserQueque.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace App\Modules\Cpa\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class AdvertiseUserQueque extends Model
+{
+    protected $table = 'advertise_users_queue';
+    protected $fillable = ['id', 'ad_user_id', 'uid', 'bid', 'advertise_id', 'add_time','status'];
+
+    public static function addToQueue($params){
+        return self::create($params);
+    }
+}

+ 5 - 1
app/Modules/Cpa/Services/AdvertiseService.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Modules\Activity\Services;
+namespace App\Modules\Cpa\Services;
 
 use App\Modules\Activity\Models\Activity;
 use App\Modules\Cpa\Models\Advertise;
@@ -15,4 +15,8 @@ class AdvertiseService
     public static function getAds($limit=''){
         return Advertise::getAds($limit);
     }
+
+    public static function getOneById($id){
+        return Advertise::getOne($id);
+    }
 }

+ 19 - 0
app/Modules/Cpa/Services/AdvertiseUserQueueService.php

@@ -0,0 +1,19 @@
+<?php
+
+namespace App\Modules\Cpa\Services;
+
+use App\Modules\Activity\Models\Activity;
+use App\Modules\Cpa\Models\Advertise;
+use App\Modules\Cpa\Models\AdvertiseUserQueque;
+use App\Modules\Statistic\Services\WapVisitStatService;
+use App\Modules\Subscribe\Models\Order;
+use App\Modules\Trade\Services\OrderService;
+use DB;
+use Redis;
+
+class AdvertiseUserQueueService
+{
+    public static function addToQueue($params){
+        return AdvertiseUserQueque::addToQueue($params);
+    }
+}

+ 1 - 1
app/Modules/Cpa/Services/AdvertiseUsersService.php

@@ -1,6 +1,6 @@
 <?php
 
-namespace App\Modules\Activity\Services;
+namespace App\Modules\Cpa\Services;
 
 use App\Modules\Activity\Models\Activity;
 use App\Modules\Activity\Models\ActivitySwitch;

+ 166 - 0
resources/views/wap/advertise.blade.php

@@ -0,0 +1,166 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta
+          name="viewport"
+          content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no0"
+  />
+  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+  <title>Document</title>
+  <style>
+    html,
+    body {
+      margin: 0 auto;
+      padding: 0;
+      /* max-width: 450px; */
+      font-size: 100px;
+    }
+
+    p {
+      margin: 0;
+      padding: 0;
+    }
+
+    main {
+      font-size: 0;
+      position: relative;
+    }
+
+    main img {
+      width: 100%;
+    }
+
+    .section-box {
+      width: 95%;
+      margin: 0 auto;
+    }
+
+    .welfare-box {
+      font-size: 0.14rem;
+      margin-bottom: 0.14rem;
+      color: #282828;
+    }
+
+    .welfare-box span {
+      display: inline-block;
+    }
+
+    .welfare-box .label {
+      background: #ff4223;
+      color: #fff;
+      padding: 0.05rem 0.1rem;
+      font-weight: bold;
+      border-radius: 2px;
+    }
+
+    .welfare-box .strong {
+      color: #5235ff;
+      font-size: 0.18rem;
+      font-weight: bold;
+    }
+
+    .down-for-free {
+      background: linear-gradient(
+              0deg,
+              rgba(243, 57, 31, 1),
+              rgba(255, 122, 100, 1)
+      );
+      box-shadow: 0px 5px 9px 0px rgba(255, 85, 62, 0.3);
+      border-radius: 23px;
+      font-size: 0.16rem;
+      font-weight: bold;
+      color: #fff;
+      text-align: center;
+      padding: 0.14rem 0;
+      width: 80%;
+      margin: 0.24rem auto;
+    }
+
+    .disable-status {
+      background: #ccc;
+      box-shadow: none;
+    }
+
+    .rules-box {
+      background: #f7f7f7;
+      padding: 0.1rem 0.16rem;
+      font-size: 0.13rem;
+      color: #666;
+      line-height: 0.2rem;
+    }
+
+    .rules-box .rule-title {
+      font-weight: bold;
+      color: #333;
+    }
+
+    @media screen and (max-width: 360px) {
+      .welfare-box {
+        font-size: 0.12rem;
+      }
+
+      .welfare-box .strong {
+        font-size: 0.16rem;
+      }
+
+      .down-for-free {
+        padding: 0.1rem 0;
+      }
+
+      .rules-box {
+        font-size: 0.12rem;
+      }
+    }
+  </style>
+</head>
+<body>
+<main>
+  <img src="./imgs/banner.jpg" alt="米读App" />
+  <div class="section-box">
+    <p class="welfare-box">
+      <span class="label">微信内福利</span>
+      <span class="text">《女总裁的贴身老司机》</span>
+      <span class="strong">全本免费看</span>
+    </p>
+    <p class="welfare-box">
+      <span class="label">米读内福利</span>
+      <span class="text">免费抽取iPhone XS</span>
+    </p>
+    <!-- 按钮变灰使用class disable-status -->
+    <div class="down-for-free">立即下载</div>
+
+    <div class="rules-box">
+      <p class="rule-title">规则</p>
+      <p class="rule-item">1. App下载注册成功后福利兑现</p>
+      <p class="rule-item">2. 微信内福利在当前服务号兑现</p>
+      <p class="rule-item">3. 米读内福利下载成功后兑现</p>
+    </div>
+  </div>
+</main>
+</body>
+<script>
+    var u = navigator.userAgent.toLowerCase();
+    var isWechat = u.match(/MicroMessenger/i) == "micromessenger";
+    // 按钮状态 1-可以点击下载 0-无法点击下载
+    var btn_status = 1;
+    var btn = document.querySelector(".down-for-free");
+    btn.addEventListener(
+        "click",
+        function() {
+            // 判断按钮的可点击状态
+            if (!btn_status) {
+                alert("您已下载过该应用");
+                return;
+            }
+            // 判断是否在微信内
+            if (isWechat) {
+                alert("请在浏览器内打开");
+                return;
+            }
+            // 执行下载操作
+        },
+        false
+    );
+</script>
+</html>