Explorar el Código

Merge branch 'free_share' of iqiyoo:zhuishuyun_wap into free_share

onlinetest hace 6 años
padre
commit
eab514ce9e

+ 112 - 0
app/Http/Controllers/Wap/Advertises/ShareController.php

@@ -0,0 +1,112 @@
+<?php
+
+namespace App\Http\Controllers\Wap\Advertises;
+
+use App\Http\Controllers\Wap\BaseController;
+
+use App\Modules\Book\Services\ChapterService;
+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\Cpa\Services\ShareBringUsersService;
+use App\Modules\Cpa\Services\ShareUsersService;
+use App\Modules\User\Services\ReadRecordService;
+use Illuminate\Http\Request;
+use Redis;
+use Hashids;
+use DB;
+use EasyWeChat\Foundation\Application;
+
+
+class ShareController extends BaseController
+{
+    public function share(Request $request){
+        $distribution_channel_id = $request->input('distribution_channel_id',0);
+        $uid = $request->input('uid','');
+        $cid = $request->input('cid','');
+        $bid_encode = $request->input('bid','');
+        if(empty($distribution_channel_id)||empty($uid)||empty($bid_encode)) {
+            return response()->error('PARAM_EMPTY');
+        }
+        $bid =Hashids::decode($bid_encode)[0];
+        $book_info = BookConfigService::getBookById($bid);
+        if(!$book_info){
+            return response()->error('PARAM_ERROR');
+        }
+        $chapter_info = ChapterService::getChapterById($book_info->first_cid);
+
+        $book_name = $book_info->name;
+
+        //加入用户分享记录
+        $share_user_info = ShareUsersService::addShareUsers(compact('bid','uid','cid','distribution_channel_id','book_name'));
+        $js_config = $this->getJSConfig();
+        $bid = $bid_encode;
+        $title = $book_info->book_name;
+        $desc = substr($chapter_info->content,0,20).'...';
+        //$link = env('PROTOCOL').'://site'.Hashids::encode($distribution_channel_id)._domain().'/reader?bid='.$bid;
+        $params =[
+            'uid'=>$uid,'bid'=>$bid,'distribution_channel_id'=>$distribution_channel_id,
+            'share_user_rec_id'=>$share_user_info->id,'timestamp'=>time()]
+        ;
+        $url_param_str = arr_to_url($params);
+        $sign = md5($url_param_str);
+        $link = env('PROTOCOL').'://'.env('share_domain').'/share/jump?'.$url_param_str;
+        $imgUrl=$book_info->cover;
+
+        return view('wap.share',['params'=>compact('bid','book_name','uid','timestamp','my_sign'),'js_config'=>$js_config,'share_config'=>json_encode(compact('title','desc','link','url','imgUrl'))]);
+    }
+
+    private function getJSConfig(){
+        $options = [
+            'debug'  => true,
+            'app_id' => env('JS_AppId'),
+            'secret' => env('JS_AppSecret'),
+            'token'  => 'easywechat',
+
+            'log' => [
+                'level' => 'debug',
+                'file'  => storage_path('logs/easyWecaht.log'), // XXX: 绝对路径!!!!
+            ],
+
+            //...
+        ];
+
+        $app = new Application($options);
+        $js = $app->js->config(array('onMenuShareQQ', 'onMenuShareWeibo','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQZone','updateAppMessageShareData','updateTimelineShareData'), $debug = false, $beta = false, $json = true);
+
+        return $js;
+    }
+
+    public function jump(Request $request){
+        $distribution_channel_id = $request->input('distribution_channel_id',0);
+        $uid = $request->input('uid','');
+        $cid = $request->input('cid','');
+        $bid_encode = $request->input('bid','');
+        $share_user_rec_id = $request->input('share_user_rec_id','');
+        $timestamp = $request->input('timestamp','');
+        $sign = $request->input('sign','');
+        if(empty($distribution_channel_id)||empty($uid)||empty($cid)||empty($bid_encode)||empty($share_user_rec_id)||empty($sign)) {
+            return response()->error('PARAM_ERROR');
+        }
+
+        $sign_str = arr_to_url(compact('distribution_channel_id','uid','cid','bid_encode','share_user_rec_id','timestamp'));
+        $my_sign = md5($sign_str);
+        if($sign != $my_sign) {
+            return response()->error('PARAM_ERROR');
+        }
+        $bid = Hashids::decode($bid_encode)[0];
+        $buid = $this->uid;
+        $data = compact('uid','bid','cid','share_user_rec_id','buid');
+        ShareBringUsersService::addShareUsers($data);
+        $book_configs = BookConfigService::getBookById($bid);
+        $readRecord = ReadRecordService::getRecordByUidBid($buid,$bid);
+
+        if($readRecord) {
+            $cid = explode('_',$readRecord)[0];
+        }else {
+            $cid = $book_configs->last_cid;
+        }
+        header('location:/reader?bid='.$bid_encode.'&cid='.$cid);
+    }
+}

+ 16 - 0
app/Modules/ShareFree/Models/ShareBringUsers.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Modules\ShareFree\Models;
+
+use App\Modules\Book\Services\BookConfigService;
+use Illuminate\Database\Eloquent\Model;
+
+class ShareBringUsers extends Model
+{
+    protected $table = 'share_bring_users';
+    protected $fillable = ['id', 'uid', 'bid', 'cid','buid','is_subscribe', 'share_user_id'];
+
+    public static function addShareUsers($data) {
+        return self::create($data);
+    }
+}

+ 25 - 0
app/Modules/ShareFree/Models/ShareUsers.php

@@ -0,0 +1,25 @@
+<?php
+
+namespace App\Modules\ShareFree\Models;
+
+use App\Modules\Book\Services\BookConfigService;
+use Illuminate\Database\Eloquent\Model;
+
+class ShareUsers extends Model
+{
+    protected $table = 'share_users';
+    protected $fillable = ['id', 'uid', 'bid', 'distribution_channel_id', 'cid','book_name', 'status'];
+
+    public static function addShareUsers($data)
+    {
+        if(!isset($data['uid'])||!isset($data['bid'])) {
+            return false;
+        }
+        $rec = self::where('uid',$data['uid'])->where('bid',$data['bid'])->first();
+
+        if(!$rec) {
+            return self::create($data);
+        }
+        return false;
+    }
+}

+ 18 - 0
app/Modules/ShareFree/Services/ShareBringUsersService.php

@@ -0,0 +1,18 @@
+<?php
+
+namespace App\Modules\Cpa\Services;
+
+use App\Modules\Cpa\Models\Advertise;
+use App\Modules\ShareFree\Models\ShareBringUsers;
+use App\Modules\ShareFree\Models\ShareUsers;
+use App\Modules\Subscribe\Models\Order;
+use App\Modules\Trade\Services\OrderService;
+use DB;
+use Redis;
+
+class ShareBringUsersService
+{
+    public static function addShareUsers($data) {
+        return ShareBringUsers::addShareUsers($data);
+    }
+}

+ 17 - 0
app/Modules/ShareFree/Services/ShareUsersService.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace App\Modules\Cpa\Services;
+
+use App\Modules\Cpa\Models\Advertise;
+use App\Modules\ShareFree\Models\ShareUsers;
+use App\Modules\Subscribe\Models\Order;
+use App\Modules\Trade\Services\OrderService;
+use DB;
+use Redis;
+
+class ShareUsersService
+{
+    public static function addShareUsers($data) {
+        return ShareUsers::addShareUsers($data);
+    }
+}

BIN
public/static/img/bg.png


BIN
public/static/img/bg_wrap.png


BIN
public/static/img/defalut.png


+ 116 - 0
resources/views/wap/share.blade.php

@@ -0,0 +1,116 @@
+<!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=no"
+  />
+  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
+  <title>分享免费阅读</title>
+  <style>
+    html,
+    body {
+      margin: 0 auto;
+      padding: 0;
+      max-width: 450px;
+      font-size: 100px;
+    }
+
+    p {
+      margin: 0;
+    }
+
+    .main_box {
+      font-size: 0;
+      position: relative;
+    }
+
+    .main_box img {
+      width: 100%;
+    }
+
+    .bg_wrap {
+      position: fixed;
+      top: 0;
+      bottom: 0;
+      left: 0;
+      right: 0;
+      background: url(/static/img/bg_wrap.png) no-repeat left top / cover;
+    }
+
+    .rel_wrap {
+      position: relative;
+    }
+
+    .abs_wrap {
+      position: absolute;
+      top: 42%;
+      left: 50%;
+      transform: translateX(-50%);
+      width: 88%;
+    }
+
+    .book_name {
+      font-size: 0.18rem;
+      color: #fff;
+      width: 100%;
+      text-align: center;
+      margin-bottom: 18%;
+    }
+
+    .user_list {
+      font-size: 0;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+    }
+
+    .user_list img {
+      width: 0.65rem;
+      height: 0.65rem;
+      border-radius: 50%;
+    }
+
+    .d_none {
+      display: none;
+    }
+  </style>
+</head>
+
+<body>
+<main class="main_box">
+  <div class="bg_wrap">
+    <div class="rel_wrap">
+      <img src="/static/img/bg.png" alt="" />
+      <div class="abs_wrap">
+        <p class="book_name">《清明时节雨纷纷》</p>
+        <div class="user_list">
+          <img src="/static/img/defalut.png" alt="" />
+          <img src="/static/img/defalut.png" alt="" />
+          <img src="/static/img/defalut.png" alt="" />
+        </div>
+      </div>
+    </div>
+  </div>
+</main>
+</body>
+<script src="http://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
+<script>
+    var js_config = {{$js_config}};
+    var config = {{$share_config}};
+    wx.config(
+        js_config
+    );
+    wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
+
+        wx.updateAppMessageShareData(
+            config
+        )
+        wx.updateTimelineShareData(
+            config
+        )
+    });
+
+</script>
+</html>