getMemberId(); $search = request()->search; //兼容APP请求 if (!is_array($search)) { $search =[$search => 1]; } $list = VideoShareGoods::getList($search) ->where('status', 1) ->orderBy('id', 'desc') ->paginate(); $businessCard = app('plugins')->isEnabled('business-card'); $list->map(function ($item) use ($businessCard, $uid) { // 图片 $item->goods->thumb = yz_tomedia($item->goods->thumb); if ($item->goods->has_option) { $item->goods->price = $item->goods->hasManyOptions->min('product_price'); } $item->member->avatar = yz_tomedia($item->member->avatar); $item->cover = yz_tomedia($item->cover); $item->video = yz_tomedia($item->video); // 会员名片 $item->member->business_card = 0; if ($businessCard) { $cardModel = BusinessCardModel::select() ->where('member_id', $item->member->uid) ->first(); if ($cardModel) { $item->member->business_card = $cardModel->id; } } // 会员点赞 默认可以点赞 $item->member_like = 1; $likeLog = LikeLog::select() ->where('uid', $uid) ->where('vid', $item->id) ->first(); if ($likeLog) { $item->member_like = 0; } $item->room_id = 0; //判断是否关注 $follow = Follow::uniacid()->where("member_id",$item->uid)->where("follow_member_id",$uid)->count(); $item->is_follow = ($follow>0) ? 1 : 0; //评论 $comment_num = Comment::uniacid() ->where(['video_id' => $item->id, 'comment_id' => 0]) ->count(); $item->comment_num = $comment_num; //判断当前会员是否在直播 $item ->is_live = 0; if (app('plugins')->isEnabled('room')) { $anchor = \Yunshop\Room\models\Anchor::uniacid()->where("member_id",$item->uid)->first(); if ($anchor) { $item->is_live = $anchor['status']; } $item->room_id = \Yunshop\Room\models\Room::uniacid()->where("status",3)->value("id"); } //投放广告视频插件-观看赚/投放广告按钮 $item->ad_serving_button_status = []; if (app('plugins')->isEnabled('ad-serving')) { $item->ad_serving_button_status = \Yunshop\AdServing\services\PrivilegeValidateService::checkButton($item->id,2); } // 统计会员持有视频总数 $item->member_video_num = count(VideoShareGoods::where('uid', $item->uid)->whereNotNull('video')->get()); }); $video_redpack=['is_open'=>0,'data'=>[]]; if (app('plugins')->isEnabled('video-redpack')){ $video_redpack['is_open'] = 1; $video_redpack['data']=\Yunshop\VideoRedpack\services\ActivityService::getActiviyForFrontend(); } $set = \Setting::get('plugin.video-share'); return $this->successJson('成功', [ 'list' => $list, 'is_plugins' => app('plugins')->isEnabled('answer-reward'), 'points_plugin' => app('plugins')->isEnabled('video-share-points'), 'video_redpack'=>$video_redpack, 'comment_open' => $set['is_open_comment']?:0 ]); } //获取基础设置 public function getBasicSet() { $set = \Setting::get('plugin.video-share'); $setting['is_show_cate'] = $set['is_show_cate']; $setting['is_show_own_follow'] = $set['is_show_own_follow']; $setting['is_show_recommend'] = $set['is_show_recommend']; $setting['is_show_live'] = $set['is_show_live']; $setting['topLike'] = $set['topLike'] ?: ""; $setting['topSmileLike'] = $set['topSmileLike']; $setting['customIcon'] = empty($set['customIcon']) ? "" : yz_tomedia($set['customIcon']); $setting['icon_name'] = $set['icon_name']; $setting['iconLink'] = $set['iconLink'] ?: ""; $setting['iconSmileLink'] = $set['iconSmileLink']; $setting['is_show_name'] = $set['is_show_name']?:0; $setting['is_member_enter'] = isset($set['is_member_enter']) ? $set['is_member_enter']: 1; $setting['is_show_video_progress'] = $set['is_show_video_progress']?1:0; return $this->successJson("",['set' => $setting]); } //获取分类 public function getCategory() { $set = \Setting::get('plugin.video-share'); $data = []; if ($set['is_show_cate'] != 1) { return $this->successJson("",$data); } $is_select = request()->is_select; if ($set['is_show_hide'] == 1 && $is_select == 1) { $category = CategoryModel::uniacid()->select("id","name")->orderBy('sort','desc')->get(); } else { $category = CategoryModel::uniacid()->select("id","name")->where("is_show",1)->orderBy('sort','desc')->get(); } $category = empty($category) ? [] : $category->toArray(); return $this->successJson("",$category); } //关注/取消关注 public function editFollow() { $uid = request()->get("member_id"); $type = Request()->get("follow_type"); $member_id = \YunShop::app()->getMemberId(); if ($type == 1) { //关注 $exist = Follow::uniacid()->where("member_id",$uid)->where("follow_member_id",$member_id)->count(); if ($exist>0) { return $this->errorJson("已关注"); } $follow_data = [ "uniacid" => \YunShop::app()->uniacid, "member_id" => $uid, "follow_member_id" => $member_id, "created_at" => time(), "updated_at" => time() ]; if (Follow::insert($follow_data)) { return $this->successJson("成功"); } return $this->errorJson("失败"); } elseif ($type == 2) { //取消关注 //关注 $follow = Follow::uniacid()->where("member_id",$uid)->where("follow_member_id",$member_id)->first(); if (!$follow) { return $this->errorJson("数据错误"); } $follow->deleted_at = time(); if($follow->save()) { return $this->successJson("成功"); } return $this->errorJson("失败"); } else { return $this->errorJson("数据错误"); } } //添加观看记录 public function addRecord(){ $uid = \YunShop::app()->getMemberId(); $videoId = request()->video_id; $result = VideoShareWatchRecord::create(['member_id' => $uid, 'video_id' => $videoId]); $this->addBrowseFootprintRedis($videoId); return $this->successJson('成功', $result); } protected static function addBrowseFootprintRedis($videoId) { if (app('plugins')->isEnabled('browse-footprint')){ $page_type = '/videoDetail'; $fullUrl = yzAppFullUrl('/videoDetail',['vid' => $videoId]); if (request()->type == 2) { $page_type = 'packageC/video_goods/VideoDetail/VideoDetail'; $fullUrl = 'packageC/video_goods/VideoDetail/VideoDetail?vid' . $videoId; } $temporary_data = [ 'member_id' => \YunShop::app()->getMemberId(),//会员id 'page_type' => $page_type,//页面类型 'page_type_id' => $videoId,//页面类型ID 'port_type' => request()->type,//端口类型 'pc' => request()->input('pc') ?: 0,//参数为1 & type=5 为PC端 'ip' => Utils::getClientIp() ?: 0, 'ip_name' => '未知',//TODO 需要引库 'i' => \YunShop::app()->uniacid, 'cookie' => substr(md5(request()->header()['cookie'][0]), 8, 16), 'full-url' => $fullUrl ?: '',//完整URL链接 'mid' => (int)request()->mid ?: 0,//完整URL链接 'created_at' => time() ]; $json = json_encode($temporary_data); Redis::lpush('plugin-browse_footprint:middleware', $json); } } // 发布 plugin.video-share.frontend.video.sub public function sub() { $uid = \YunShop::app()->getMemberId(); $goodsId = intval(request()->goods_id); $title = request()->title; $video = request()->video; $file_name = request()->file_name; $cover = request()->cover; $ingress = request()->ingress; $category_id = request()->category_id; $set = \Setting::get('plugin.video-share'); if($set['default_title']) $title = $set['default_title']; if($set['default_cate']) $category_id = $set['default_cate']; if (!$title) { return $this->errorJson('标题参数错误'); } if (!$video && $set['must_video'] == 1) { return $this->errorJson('视频参数错误'); } if (!$cover) { return $this->errorJson('封面参数错误'); } if(!isset($set['select_goods']) || $set['select_goods']){ //需要选择商品(todo 未设置信息的时候默认需要选择商品) if (!$goodsId) { return $this->errorJson('请选择商品'); } }else{//已关闭选择商品 $goodsId = 0; } if (!$set['is_review']){//判断是否开启审核 $status = 1; }else{ $status = 0; } if ($ingress) { $check_result = (new MiniFileLimitService())->checkMsg($title); if ($check_result['errcode'] != 0) { return $this->errorJson('输入信息含有违法违规内容'); } } $data = [ 'goods_id' => $goodsId, 'uniacid' => \YunShop::app()->uniacid, 'uid' => $uid, 'title' => $title, 'video' => $video?:'', 'file_name' => $file_name?:'', 'cover' => $cover, 'share_num' => 0, 'like_num' => 0, 'order_price' => 0, 'amount_total' => 0, 'status' => $status, 'category_id'=>empty($category_id) ? 0 : $category_id ]; if (request()->is_crm) { $data['is_crm'] = 1; } $video = VideoShareGoods::create($data); event(new VideoPublishEvent($video)); return $this->successJson('成功', [ 'style_type' => $set['list_style'] == 2 ? '2' : '1' //前端列表样式 ]); } // 保存视频 暂时不用 public function upload() { $file = request()->file('file'); if (!$file) { return $this->errorJson('请传入正确参数.'); } if ($file->isValid()) { // 获取文件相关信息 $originalName = $file->getClientOriginalName(); // 文件原名 $realPath = $file->getRealPath(); //临时文件的绝对路径 $ext = $file->getClientOriginalExtension(); $newOriginalName = md5($originalName . str_random(6)) . '.' . $ext; \Storage::disk('image')->put($newOriginalName, file_get_contents($realPath)); return $this->successJson('上传成功', [ 'img' => \Storage::disk('image')->url($newOriginalName), ]); } } // 查看 public function getVideoGoods() { $uid = \YunShop::app()->getMemberId(); $videoGoodsId = intval(request()->video_goods_id); if (!$videoGoodsId) { return $this->errorJson('参数错误[video_goods_id=null]'); } $videoGoods = VideoShareGoods::with([ 'member' => function ($member) { $member->select(['avatar', 'uid', 'nickname']); }, 'goods' => function ($goods) { $goods->select(['id', 'title', 'price', 'market_price', 'thumb','has_option']); } ])->where('status', 1) ->find($videoGoodsId); if (!$videoGoods) { return $this->errorJson('未找到信息'); } $businessCard = app('plugins')->isEnabled('business-card'); $videoGoods->member->business_card = 0; if ($businessCard) { $cardModel = BusinessCardModel::select() ->where('member_id', $videoGoods->member->uid) ->first(); if ($cardModel) { $videoGoods->member->business_card = $cardModel->id; } } $videoGoods->goods->thumb = yz_tomedia($videoGoods->goods->thumb); $videoGoods->cover = yz_tomedia($videoGoods->cover); $videoGoods->video = yz_tomedia($videoGoods->video); $videoGoods->member_video_num = count(VideoShareGoods::where('uid', $videoGoods->member->uid)->whereNotNull('video')->get()); $videoGoods->comment_num = Comment::where('video_id',$videoGoodsId)->count(); // 会员点赞 默认可以点赞 $videoGoods->member_like = 1; $likeLog = LikeLog::select() ->where('uid', $uid) ->where('vid', $videoGoodsId) ->first(); if ($likeLog) { $videoGoods->member_like = 0; } //投放广告视频插件-观看赚/投放广告按钮 $videoGoods->ad_serving_button_status = []; if (app('plugins')->isEnabled('ad-serving')) { $videoGoods->ad_serving_button_status = \Yunshop\AdServing\services\PrivilegeValidateService::checkButton(request()->video_goods_id,2); } //判断当前会员是否在直播 $is_live = 0; if (app('plugins')->isEnabled('room')) { $member_id = \YunShop::app()->getMemberId(); $anchor = \Yunshop\Room\models\Anchor::uniacid()->where("member_id",$member_id)->first(); if ($anchor) { $is_live = $anchor['status']; } } //判断是否关注 $follow = Follow::uniacid()->where("member_id",$videoGoods->uid)->where("follow_member_id",$uid)->count(); return $this->successJson('成功', [ 'video_goods' => $videoGoods, 'is_live' => $is_live, 'is_follow' => ($follow>0) ? 1 : 0 ]); } // 增加分享次数 plugin.video-share.frontend.video.share public function share() { $videoGoodsId = intval(request()->video_goods_id); if (!$videoGoodsId) { return $this->errorJson('参数错误[video_goods_id=null]'); } $videoGoods = VideoShareGoods::find($videoGoodsId); if (!$videoGoods) { return $this->errorJson('未找到信息'); } $videoGoods->share_num += 1; $videoGoods->save(); return $this->successJson('分享次数增加成功',$videoGoods->share_num); } // 增加点赞次数 public function like() { $uid = \YunShop::app()->getMemberId(); $videoGoodsId = intval(request()->video_goods_id); if (!$videoGoodsId) { return $this->errorJson('参数错误[video_goods_id=null]'); } $videoGoods = VideoShareGoods::find($videoGoodsId); if (!$videoGoods) { return $this->errorJson('未找到信息'); } $likeLog = LikeLog::select() ->where('uid', $uid) ->where('vid', $videoGoodsId) ->first(); if ($likeLog) { $videoGoods->like_num -= 1; $likeLog->delete(); $msg = '点赞取消成功'; } else { $videoGoods->like_num += 1; LikeLog::create([ 'uniacid' => \YunShop::app()->uniacid, 'uid' => $uid, 'vid' => $videoGoodsId ]); $msg = '点赞成功'; } $videoGoods->save(); return $this->successJson($msg, [ ]); } /** * 会员发布的视频列表 */ public function myVideo() { $status = request()->status; $uid = request()->v_uid ?: \Yunshop::app()->getMemberId(); // $set = \Setting::get('plugin.video-share'); $videos = VideoShareGoods::myVideo($uid)->where(['status' => $status]) ->orderBy('id', 'desc') ->paginate(20); foreach ($videos as &$item){ $item['goods']['thumb'] = yz_tomedia($item['goods']['thumb']); $item['cover'] = yz_tomedia($item['cover']); $item['video'] = yz_tomedia($item['video']); // 会员点赞 默认可以点赞 $item->member_like = 1; $likeLog = LikeLog::select() ->where('uid', $uid) ->where('vid', $item->id) ->first(); if ($likeLog) { $item->member_like = 0; } //视频数量 $item->member_video_num = count(VideoShareGoods::where('uid', $uid)->whereNotNull('video')->get()); //评论数量 $item->comment_num = Comment::uniacid()->where(['video_id' => $item->id, 'comment_id' => 0])->count(); } $release = VideoShareGoods::myVideo($uid)->where('status',1)->count();//发布总数 $review = VideoShareGoods::myVideo($uid)->where('status',0)->count();//审核总数 $member = Member::uniacid()->select('uid', 'avatar', 'nickname')->where('uid',$uid)->first(); return $this->successJson('成功', [ 'video' => $videos, 'member' => $member, 'release' => $release, 'review' => $review, 'is_open' => \Setting::get('plugin.video-share')['is_review'] ?: 0 ]); } public function del() { $id = request()->id; $member_id = \Yunshop::app()->getMemberId(); //进行文件删除 $videoGoods = VideoShareGoods::where('id', $id)->where('uid', $member_id)->first(); if (empty($videoGoods)) { return $this->errorJson('视频不存在或已删除'); } Storage::disk('audios')->delete($videoGoods->file_name); $result = VideoShareGoods::where('id',$id)->delete(); if ($result) { return $this->successJson('删除成功'); } else { return $this->errorJson('数据异常,删除失败'); } } public function watchVideo() { $video_id = request()->video_id; $video = VideoShareGoods::uniacid()->where('id', $video_id)->first(); //触发观看视频事件 //event((new VideoWatchEvent($video_id, \Yunshop::app()->getMemberId()))); if (!$video || !app('plugins')->isEnabled('video-share-points')) { return $this->successJson('ok', ['is_show' => false]); } //观看奖励 $res = (new \Yunshop\VideoSharePoints\common\services\VideoWatchService)->handle(\Yunshop::app()->getMemberId(), $video_id); if ($res['judge'] && $res['points'] > 0) { return $this->successJson('ok', ['is_show' => true, 'points' => $res['points'], 'point_name' => $res['name'], 'days' => $res['days'] ?: 0]); } else { return $this->successJson('ok', ['is_show' => false]); } } }