123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?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\ShareFree\Services\ShareBringUsersService;
- use App\Modules\ShareFree\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');
- }
- //$distribution_channel_id = decodeDistributionChannelId($distribution_channel_id);
- $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;
- mb_internal_encoding("UTF-8");
- $desc = mb_substr(str_replace(["\n","\r\n","\t"],'\\',trim($chapter_info->content)),0,40).'...';
- //$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_id'=>$share_user_info->id,'timestamp'=>time(),'cid'=>$cid]
- ;
- $url_param_str = arr_to_url($params);
- $sign = md5($url_param_str);
- $share_bring_users = ShareBringUsersService::getShareSuccessUsers($share_user_info->id);
- $share_bring_users = json_decode(json_encode($share_bring_users),true);
- $url_format = '%s://site%s.%s.com/';
- /*$link = sprintf(
- $url_format,
- env('PROTOCOL'),
- encodeDistributionChannelId($distribution_channel_id),
- env('CUSTOM_HOST')
- );
- $link .= 'share/outjump?'.$url_param_str.'&sign='.$sign;*/
- $link = env('PROTOCOL').'://'.env('share_domain').'/share/outjump?'.$url_param_str.'&sign='.$sign;
- \Log::info('link:'.$link);
- $imgUrl=$book_info->cover;
- return view('wap.share',['params'=>compact('bid','book_name','uid','timestamp','my_sign'),'share_bring_users'=>$share_bring_users,'js_config'=>$js_config,'share_config'=>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'), $debug = false, $beta = false, $json = false);
- return $js;
- }
- public function jump(Request $request){
- $distribution_channel_id = $request->input('distribution_channel_id',0);
- //$distribution_channel_id = decodeDistributionChannelId($distribution_channel_id);
- $uid = $request->input('uid','');
- $cid = $request->input('cid','');
- $bid_encode = $request->input('bid','');
- $share_user_id = $request->input('share_user_id','');
- $timestamp = $request->input('timestamp','');
- $sign = $request->input('sign','');
- if(empty($distribution_channel_id)||empty($uid)||empty($cid)||empty($bid_encode)||empty($share_user_id)||empty($sign)) {
- return response()->error('PARAM_EMPTY');
- }
- $bid=$bid_encode;
- $sign_str = arr_to_url(compact('distribution_channel_id','uid','cid','bid','share_user_id','timestamp'));
- $my_sign = md5($sign_str);
- /*if($sign != $my_sign) {
- return response()->error('WAP_SIGN_ERROR');
- }*/
- $bid = Hashids::decode($bid_encode)[0];
- $buid = $this->uid;
- $data = compact('uid','bid','cid','share_user_id','buid');
- \Log::info(json_encode($data));
- if($uid != $buid){
- ShareBringUsersService::addShareUsers($data);
- }
- $book_configs = BookConfigService::getBookById($bid);
- $readRecord = ReadRecordService::getRecordByUidBid($buid,$bid);
- if($readRecord) {
- $cid = explode('_',$readRecord)[0];
- }else {
- $cid = $book_configs->first_cid;
- }
- $url_format = '%s://site%s.%s.com/';
- $jump_link = sprintf(
- $url_format,
- env('PROTOCOL'),
- encodeDistributionChannelId($distribution_channel_id),
- env('CUSTOM_HOST')
- );
- //\Log::info('jump_link:'.$jump_link.'reader?bid='.$bid_encode.'&cid='.$cid);
- header('location:'.$jump_link.'reader?bid='.$bid_encode.'&cid='.$cid);
- }
- public function ShareJump(Request $request) {
- $arg = $request->all();
- $distribution_channel_id = $arg['distribution_channel_id'];
- $data = array(
- 'distribution_channel_id'=>$arg['distribution_channel_id'],
- 'uid'=>$arg['uid'],
- 'cid'=>$arg['cid'],
- 'bid'=>$arg['bid'],
- 'share_user_id'=>$arg['share_user_id'],
- 'timestamp'=>$arg['timestamp']
- );
- $sign_str = arr_to_url($data);
- $sign = $arg['sign'];
- $my_sign = md5($sign_str);
- if($sign != $my_sign) {
- return response()->error('WAP_SIGN_ERROR');
- }
- //$link = env('PROTOCOL').'://'.env('share_domain').'/share/jump?'.$sign_str.'&sign='.$sign;
- $url_format = '%s://site%s.%s.com/';
- $link = sprintf(
- $url_format,
- env('PROTOCOL'),
- //TODO 上线时改成加密
- encodeDistributionChannelId($distribution_channel_id),
- env('CUSTOM_HOST')
- );
- $link .= 'share/jump?'.$sign_str.'&sign='.$sign;
- header('location:'.$link);
- }
- }
|