0
点赞
收藏
分享

微信扫一扫

短视频接口部分

Resin_Wu 2023-02-16 阅读 28


短视频接口初步规划

  1. 发布视频
  2. 删除视频
  3. 获取热门搜索
  4. 搜索视频
  5. 清除搜索历史
  6. 获取搜索历史
  7. 短视频详情
  8. 对视频进行评论
  9. 评论列表
  10. 删除评论
  11. 回复评论
  12. 查看评论回复
  13. 删除评论回复
  14. 短视频音乐列表
  15. 关注用户和取消用户
  16. 用户主页
  17. 作者关注
  18. 作者粉丝
  19. 七牛云上传
  20. 点赞和取消点赞
  21. 获取用户点赞视频列表
  22. 收藏和取消收藏
  23. 获取用户收藏视频列表
  24. 同城的视频列表、关注的视频列表、 推荐的视频列表
  25. 系统设置的关键词
  26. 搜索用户
  27. 获取系统配置、前端也可以直接上传
  28. 版本号
  29. 检测更新
  30. 获取分类列表
  31. 获取分类视频列表
  32. 获取其他用户信息
  33. 获取用户视频列表
  34. 获取用户关注列表
  35. 获取用户粉丝列表

其他

  1. 更新用户资料
  2. 广告接口
  3. 点赞和取消点赞评论
  4. 启动图
  5. 协议
  6. 发送验证码
  7. 用户登录
  8. 用户注册
  9. 获取用户信息
  10. 验证用户Token信息
  11. 用户退出登录
  12. 客服聊天消息等

<?php
namespace app\api\controller;



use jplt\Pinyin;
use jplt\Dates;
use think\Config;

use think\facade\Db;

use app\common\lib\Show;
use app\common\model\mysql\LogicUser;
// 引入七牛鉴权类
use Qiniu\Auth;
// 引入七牛上传类
use Qiniu\Storage\UploadManager;

class Video extends BaseController
{


// protected $noNeedLogin = [
// 'getDefaultVideoList',
// 'index',
// 'getCommentList',
// 'heartComment',
// 'searchVideo',
// 'searchAuthor',
// 'goods_details',
// 'collage',
// 'search',
// 'On_shelf',
// 'end_shelf',
// 'goods_list'
//
//
// ];

<<<<<<< HEAD

=======
>>>>>>> dev-wang
/**
* 上传视频
*
* @ApiTitle (发布视频)
* @ApiSummary (发布视频)
* @ApiAuthor (接口作者)
* @ApiMethod (POST)
* @ApiRoute (/api/video.Video/addVideo)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="file", type="string", required=true, description="视频路径")
* @ApiParams (name="title", type="string", required=true, description="标题")
* @ApiParams (name="content", type="string", required=true, description="内容")
* @ApiParams (name="longitude", type="string", required=true, description="经度")
* @ApiParams (name="latitude", type="string", required=true, description="纬度")
* @ApiParams (name="city", type="string", required=true, description="城市")
*
* @ApiParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
* @ApiReturnParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
})
*/
public function qiniu() {

require_once APP_PATH . '../vendor/qiniu/php-sdk/autoload.php';
// 七牛云配置信息
$accessKey = Config::get("qiniu.accessKey");
$secretKey = Config::get("qiniu.secretKey");
$bucketName = Config::get("qiniu.bucket");
$bucketurl = Config::get("qiniu.bucketurl");
//默认file
$fileName = Config::get("qiniu.fileName");

$file = $this->request->file($fileName);
if (empty($file)) {
$this->error('请选择要上传的文件');
}

// 要上传图片的本地路径
$filePath = $file->getRealPath();
$ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION);
//后缀
// 上传到七牛后保存的文件名
$key = substr(md5($file->getRealPath()) , 0, 5). date('YmdHis') . rand(0, 9999) . '.' . $ext;


// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
$uptoken = $token = $auth->uploadToken($bucketName);

$uploadMgr = new UploadManager();

list($ret, $err) = $uploadMgr->putFile($uptoken, $key, $filePath);
if ($err !== null) {
$this->error('上传失败');
} else {
$key = 'http://'.$bucketurl.'/'.$ret['key'];
$data['url'] = $key;
$this->success('上传成功',$data);
}


}
/**
* 发布视频
*
* @ApiTitle (发布视频)
* @ApiSummary (发布视频)
* @ApiAuthor (接口作者)
* @ApiMethod (POST)
* @ApiRoute (/api/video.Video/addVideo)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="file", type="string", required=true, description="视频路径")
* @ApiParams (name="title", type="string", required=true, description="标题")
* @ApiParams (name="content", type="string", required=true, description="内容")
* @ApiParams (name="longitude", type="string", required=true, description="经度")
* @ApiParams (name="latitude", type="string", required=true, description="纬度")
* @ApiParams (name="city", type="string", required=true, description="城市")
*
* @ApiParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
* @ApiReturnParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
})
*/


public function videoMusics() {

$page = input('page');
$title = input('title');
$limit = input('limit');

// $video_musics["count"]= Db::table("jm_video_musics")
// ->where("title|author","like","%".$title."%")
// ->where("status",1)
// ->order("sort desc")
// ->count();
$video_musics = Db::table("jm_video_musics")
->where("title|author","like","%".$title."%")
->where("status",1)
->order("sort desc")
->page($page,$limit)
->select();

$url="http://dspzbdshop.jp893.com";
foreach ($video_musics as $key => &$value) {

$value["musics_file"]=$url.$value["musics_file"];
$value["cover_image"]=$url.$value["cover_image"];
// $video_musics[$key]["musics_file"]= $value["musics_file"];
// $video_musics[$key]["cover_image"]= $value["cover_image"];
// code...
}
return Show::successData($video_musics);

}
/*addVideo 发布视频*/
public function addVideo() {


$file = input('file');
$title = input('title');
$content = input('content');
$longitude = input('longitude');
$latitude = input('latitude');
$city = input('city');
$privacy = input('privacy');
$cover = input('cover');
$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}
// $pa = new PhpAnalysis('utf-8','utf-8',true);
// $pa->LoadDict();
// $pa->SetSource($content);
// $tags = $pa->GetFinallyKeywords();
$data = [
'file' => $file,
'title' => $title,
'content' => $content,
'user_id' => $user["uid"],
'location' => '',
'longitude' => $longitude,
'latitude' => $latitude,
// 'keywords' => $tags,
'keywords' => "",
'privacy' => $privacy,
'cover' => $cover,
'createtime' => time(),
'city' => $city
];
$res = Db::table('jm_video')->insert($data);
if($res){
return Show::successData();
} else {
return json(["msg"=>"失败","code"=>0]);
}
}
/**
* 视频列表
*
* @ApiTitle (视频列表)
* @ApiSummary (视频列表)
* @ApiAuthor (接口作者)
* @ApiMethod (POST)
* @ApiRoute (/api/video.Video/addVideo)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="file", type="string", required=true, description="视频路径")
* @ApiParams (name="title", type="string", required=true, description="标题")
* @ApiParams (name="content", type="string", required=true, description="内容")
* @ApiParams (name="longitude", type="string", required=true, description="经度")
* @ApiParams (name="latitude", type="string", required=true, description="纬度")
* @ApiParams (name="city", type="string", required=true, description="城市")
*
* @ApiParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
* @ApiReturnParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
})
*/
public function VideoList() {

$type = input('type');
$page = input('page');
$limit = input('limit');

$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失1败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败2","code"=>0]);
}

switch ($type) {
case "1":
//推荐 heart 点赞量 star 收藏量 views 浏览量 后期关联关键词表进行关键词排序+++ 大后期的大数据算法(生成自己喜欢的推荐)

$list = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait')
->order('star desc,heart desc,views desc')
->where('is_recommended','=',1)//修改
->where('privacy','in','1')//修改1
->page($page,$limit)
->select();

foreach ($list as $key => &$value) {
//直播信息
// $list["wch_live"] = Db::name('wch_live')
// ->where("user_id",$value["user_id"])
// ->where("status",'1')
// ->find();
if(empty($value["nickname"])){
unset($list[$key]);
}else{

if (!empty($user)) {
// 是否点赞
$value["is_heart"] = (Db::table('jm_video_heart')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count()>0)?1:0;
//是否收藏
$value["is_star"] = (Db::table('jm_video_star')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count()>0)?1:0;
//是否关注
// $value["is_user_follow"] = (Db::table('jm_user_follow')
// ->where("follower_id",$value["user_id"])
// ->where("user_id",$user['id'])
// ->count()>0)?1:0;
} else {

// 是否点赞
$value["is_heart"] = 0;
//是否收藏
$value["is_star"] = 0;
//是否关注
// $value["is_user_follow"] = 0;

}
}
}


break;
case "2":
//视频表左关联关注表\判断是否是我关注的人 时间来
// var_dump($user);die;

if (empty($user)) {
$this->error('您还没有登录哦,请重试。');
}
$list = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->join('logic_user_follow user_follow','user_follow.follower_id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait')
->order('createtime desc,star desc,heart desc,views desc')
->where("user_follow.user_id",$user['id'])
//->where('is_recommended','=',1)//修改
->where('privacy','in','1')//修改
->page($page,$limit)
->select();
// dump($list);die;

foreach ($list as $key => $value) {

$timepoor=time()-$value['createtime'];
$zz="";
if($timepoor>365*24*60*60&&empty($zz)){
$d=365*24*60*60;
if($timepoor/$d>0){
$zz.=intval($timepoor/$d)."年前";
$timepoor=$timepoor-(intval($timepoor/$d)*$d );
}
}
if($timepoor>30*24*60*60&&empty($zz)){
$d=30*24*60*60;
if($timepoor/$d>0){
$zz.=intval($timepoor/$d)."月前";
$timepoor=$timepoor-(intval($timepoor/$d)*$d );
}
}

if($timepoor>24*60*60&&empty($zz)){
$d=24*60*60;
if($timepoor/$d>0){
$zz.=intval($timepoor/$d)."天前";
$timepoor=$timepoor-(intval($timepoor/$d)*$d );
}
}

if($timepoor>60*60&&empty($zz)){
$h=60*60;
if($timepoor/$h>0){
$zz.=intval($timepoor/$h)."小时前";
$timepoor= $timepoor-(intval($timepoor/$h)*$h );
}
}
if($timepoor>60&&empty($zz)){
$iz=60;
if($timepoor/$iz>0){
$zz.=intval($timepoor/$iz)."分钟前";
$timepoor= $timepoor-(intval($timepoor/$iz)*$iz );
}
}
if($timepoor>1&&empty($zz)){
$iz=1;
if($timepoor/$iz>0){
$zz.=intval($timepoor/$iz)."秒前";
$timepoor= $timepoor-(intval($timepoor/$iz)*$iz );
}
}

$list[$key]["timepoor"]=$zz;

// 是否点赞
$list[$key]["is_heart"] = (Db::table('jm_video_heart')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count()>0)?1:0;
//是否收藏
$list[$key]["is_star"] = (Db::table('jm_video_star')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count()>0)?1:0;
// $Dates = new Dates();
// $list[$key]["createtime_text"] = $Dates->timeDiff($value['createtime']);


//直播信息
// $list["wch_live"] = Db::name('wch_live')
// ->where("user_id",$value["user_id"])
// ->where("status",'1')
// ->find();

}

break;
case "3":
//判断同城 按距离
// longitude=精度,latitude=纬度

$longitude = input('longitude');
$latitude = input('latitude');

$list = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait,ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN(
(
'.$latitude.' * PI() / 180 - video.latitude* PI() / 180
) / 2
),
2
) + COS('.$latitude.' * PI() / 180) * COS( video.latitude * PI() / 180) * POW(
SIN(
(
'.$longitude.' * PI() / 180 - video.longitude * PI() / 180
) / 2
),
2
)
)
) * 1000
) AS juli'
)

//->where('is_recommended','=',1)//修改
->where('privacy','in','1')//修改
->order('juli asc')
->page($page,$limit)
->select();

foreach ($list as $key => $value) {
if (!empty($user)) {
// 是否点赞
$list[$key]["is_heart"] = (Db::table('jm_video_heart')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count()>0)?1:0;
//是否收藏
$list[$key]["is_star"] = (Db::table('jm_video_star')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count()>0)?1:0;
//是否关注
// $list[$key]["is_user_follow"] = (Db::table('jm_user_follow')
// ->where("follower_id",$value["user_id"])
// ->where("user_id",$user['id'])
// ->count()>0)?1:0;
} else {
$list[$key]["is_heart"] = 0;
$list[$key]["is_star"] = 0;
// $list[$key]["is_user_follow"] = 0;
}

//直播信息
// $list["wch_live"] = Db::name('wch_live')
// ->where("user_id",$value["user_id"])
// ->where("status",'1')
// ->find();
}
break;
default:
$this->error('操作失败,请重试。');
break;
}


// var_dump($list);die;

$this->success('操作成功',$list);




}
/**
* 搜索
*
* @ApiTitle (搜索)
* @ApiSummary (发布视频)
* @ApiAuthor (接口作者)
* @ApiMethod (POST)
* @ApiRoute (/api/video.Video/addVideo)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="file", type="string", required=true, description="视频路径")
* @ApiParams (name="title", type="string", required=true, description="标题")
* @ApiParams (name="content", type="string", required=true, description="内容")
* @ApiParams (name="longitude", type="string", required=true, description="经度")
* @ApiParams (name="latitude", type="string", required=true, description="纬度")
* @ApiParams (name="city", type="string", required=true, description="城市")
*
* @ApiParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
* @ApiReturnParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
})
*/
public function SearchVideoList() {

$keywords = input('keywords');


$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$Keywords = "%".$keywords."%";



// 搜索视频列表
//推荐 heart 点赞量 star 收藏量 views 浏览量 后期关联关键词表进行关键词排序+++ 大后期的大数据算法(生成自己喜欢的推荐)
// where('name','like',['%think','php%'],'OR');
$list = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait')
->order('star desc,heart desc,views desc')
->where('title','like',$Keywords)

->select();

foreach ($list as $key => &$value) {
if (!empty($user)) {
// 是否点赞
$value["is_heart"] = Db::table('jm_video_heart')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count();
//是否收藏
$value["is_star"] = Db::table('jm_video_star')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count();
//是否关注
// $value["is_user_follow"] = Db::table('jm_user_follow')
// ->where("follower_id",$value["user_id"])
// ->where("user_id",$user['id'])
// ->count();
} else {

// 是否点赞
$value["is_heart"] = 0;
//是否收藏
$value["is_star"] = 0;
//是否关注
// $value["is_user_follow"] = 0;

}
}
return json(["msg"=>"操作成功","code"=>1,"data"=>$list]);
// $this->success('操作成功',$list);
}

public function VideoDetails() {

$id = input('id');
$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}




// 搜索视频列表
$list["video_details"] = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait')
->order('star desc,heart desc,views desc')
->where('video.id', $id)
->find();
// var_dump($list);die;

if (!empty($user)) {
// 是否点赞
$list["is_heart"] = Db::table('jm_video_heart')
->where("video_id",$id)
->where("user_id",$user['id'])
->count();
//是否收藏
$list["is_star"] = Db::table('jm_video_star')
->where("video_id",$id)
->where("user_id",$user['id'])
->count();
//是否关注
// $list["is_user_follow"] = Db::table('jm_user_follow')
// ->where("follower_id",$list["video_details"]["user_id"])
// ->where("user_id",$user['id'])
// ->count();
} else {

// 是否点赞
$list["is_heart"] = 0;
//是否收藏
$list["is_star"] = 0;
//是否关注
// $list["is_user_follow"] = 0;

}

//点赞数量
$list["heart"] = Db::table('jm_video_heart')
->where("video_id",$id)
->count();
//收藏数量
$list["star"] = Db::table('jm_video_star')
->where("video_id",$id)
->count();
//评论数量
$list["comment"] = Db::name('jm_video_comment')
->where("video_id",$id)
->count();
//直播信息
// $list["wch_live"] = Db::name('wch_live')
// ->where("user_id",$list["video_details"]["user_id"])
// ->where("status",'1')
// ->find();

return json(["msg"=>"操作成功","code"=>1,"data"=>$list]);
}


/**
* 视频点赞
*
* @ApiTitle (视频点赞)
* @ApiSummary (视频点赞)
* @ApiAuthor (视频点赞)
* @ApiMethod (POST)
* @ApiRoute (/api/video.Video/heartVideo)
* @ApiHeaders (name=token, type=string, required=true, description="请求的Token")
* @ApiParams (name="id", type="string", required=true, description="视频路径")
*
* @ApiParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
* @ApiReturnParams (name="code", type="integer", required=true, sample="0")
* @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
* @ApiReturnParams (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
* @ApiReturn ({
'code':'1',
'msg':'返回成功'
})
heartVideo这个接口给你返回了数量
*/
public function heartVideo() {
$video_id = input('id');
$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$info = Db::table('jm_video_heart')->where('video_id', $video_id)->where('user_id', $user['id'])->find();
$heart =Db::table('jm_video_heart')->where('video_id', $video_id) ->count();
if (empty($info)) {
$heart=$heart+1;
Db::table("jm_video")->where('id', $video_id) ->inc('heart')->update();
//->setInc('heart');
$res = Db::table('jm_video_heart')->insert([
'video_id' => $video_id, 'user_id' => $user['id']
]);
} else {

$heart=$heart-1;
Db::table("jm_video")->where('id', $video_id) ->dec('heart')->update();
//->setDec('heart');
$res = Db::table('jm_video_heart')->where('id', $info['id'])->delete();
}
if ($res) {

return json(["msg"=>"操作成功","code"=>1,"data"=>$heart]);
// $this->success('操作成功',$heart);
} else {
return json(["msg"=>"失败","code"=>0]);
}
}
/**
* 我的视频
* */
public function myVideo() {
$page = input('page');
$limit = input('limit');
$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$user_id = $user['id'];

//推荐 heart 点赞量 star 收藏量 views 浏览量 后期关联关键词表进行关键词排序+++ 大后期的大数据算法(生成自己喜欢的推荐)

$list = Db::table("jm_video")
->alias('video')
->field('video.*')
->where('video.user_id', $user_id)
// ->page($page,$limit)
->select();

foreach ($list as $key => &$value) {
if (!empty($user)) {
// 是否点赞
$value["is_heart"] = Db::table('jm_video_heart')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count();
//是否收藏
$value["is_star"] = Db::table('jm_video_star')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count();
//是否关注
// $list[$key]["is_user_follow"] = Db::table('jm_user_follow')
// ->where("follower_id",$value["user_id"])
// ->where("user_id",$user['id'])
// ->count();
} else {

// 是否点赞
$value["is_heart"] = 0;
//是否收藏
$value["is_star"] = 0;
//是否关注
// $list[$key]["is_user_follow"] = 0;

}
}
return json(["msg"=>"操作成功","code"=>1,"data"=>$list]);

}
/**
* 收藏视频
* */
public function mystarVideo() {
$page = input('page');
$limit = input('limit');
$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}
$user_id = $user['id'];

//推荐 heart 点赞量 star 收藏量 views 浏览量 后期关联关键词表进行关键词排序+++ 大后期的大数据算法(生成自己喜欢的推荐)

$list = Db::table("jm_video")
->alias('video')
->join('jm_video_star video_star','video_star.video_id = video.id','left')
->field('video.*')
->where('video_star.user_id', $user_id)
->page($page,$limit)
->select();
// var_dump($list);die;
foreach ($list as $key => &$value) {
if (!empty($user)) {
// 是否点赞
$value["is_heart"] = Db::table('jm_video_heart')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count();
//是否收藏
$value["is_star"] = Db::table('jm_video_star')
->where("video_id",$value["id"])
->where("user_id",$user['id'])
->count();
//是否关注
// $value["is_user_follow"] = Db::table('jm_user_follow')
// ->where("follower_id",$value["user_id"])
// ->where("user_id",$user['id'])
// ->count();
} else {

// 是否点赞
$value["is_heart"] = 0;
//是否收藏
$value["is_star"] = 0;
//是否关注
// $value["is_user_follow"] = 0;

}
}

return json(["msg"=>"操作成功","code"=>1,"data"=>$list]);
// $this->success('操作成功',$list);

}
/**
* 收藏视频
* */
public function starVideo() {
$video_id = input('id');

$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$user_id = $user['id'];
$info = Db::table('jm_video_star')->where('video_id', $video_id)->where('user_id', $user_id)->find();
if (empty($info)) {
// ->setInc('star')
Db::table("jm_video")->where('id', $video_id)->inc('star')->update();
$res = Db::table('jm_video_star')->insert([
'video_id' => $video_id, 'user_id' => $user_id
]);
} else {

Db::table("jm_video")->where('id', $video_id) ->dec('star')->update();
$res = Db::table('jm_video_star')->where('id', $info['id'])->delete();
}
if ($res) {

return json(["msg"=>"成功","code"=>1 ]);
// $this->success('操作成功');
} else {
return json(["msg"=>"失败","code"=>0]);
}
}
/**
* 评论列表
* */
public function getCommentList() {
$video_id = input('id');
$page = input('page');
$limit = input('limit');
$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$list = Db::table('jm_video_comment')
->alias('video_comment')
->join('logic_user user','user.id = video_comment.user_id','left')
->field('video_comment.*,user.nickname,user.head_portrait')
->where('video_id', $video_id)
->page($page,$limit)
->order('id desc')
->select();
foreach ($list as $key => &$value) {

$timepoor=time()-$value['createtime'];
$zz="";
if($timepoor>365*24*60*60&&empty($zz)){
$d=365*24*60*60;
if($timepoor/$d>0){
$zz.=intval($timepoor/$d)."年前";
$timepoor=$timepoor-(intval($timepoor/$d)*$d );
}
}
if($timepoor>30*24*60*60&&empty($zz)){
$d=30*24*60*60;
if($timepoor/$d>0){
$zz.=intval($timepoor/$d)."月前";
$timepoor=$timepoor-(intval($timepoor/$d)*$d );
}
}

if($timepoor>24*60*60&&empty($zz)){
$d=24*60*60;
if($timepoor/$d>0){
$zz.=intval($timepoor/$d)."天前";
$timepoor=$timepoor-(intval($timepoor/$d)*$d );
}
}

if($timepoor>60*60&&empty($zz)){
$h=60*60;
if($timepoor/$h>0){
$zz.=intval($timepoor/$h)."小时前";
$timepoor= $timepoor-(intval($timepoor/$h)*$h );
}
}
if($timepoor>60&&empty($zz)){
$iz=60;
if($timepoor/$iz>0){
$zz.=intval($timepoor/$iz)."分钟前";
$timepoor= $timepoor-(intval($timepoor/$iz)*$iz );
}
}
if($timepoor>1&&empty($zz)){
$iz=1;
if($timepoor/$iz>0){
$zz.=intval($timepoor/$iz)."秒前";
$timepoor= $timepoor-(intval($timepoor/$iz)*$iz );
}
}
// $res = Db::table("jm_video_comment_reply")
// ->alias('video_comment_reply')
// ->join('logic_user user','user.id = video_comment_reply.user_id','left')
// ->where("video_comment_reply.comment_id",$comment_id)
// ->select();
$value["timepoor"]=$zz;
$value["head_portrait"]=$value["head_portrait"];
$value["replycount"]=Db::table("jm_video_comment_reply") ->where("comment_id",$value['id']) ->count();


}

return json(["msg"=>"成功","code"=>1,"data"=>$list ]);
// $this->success('success', $list);
}

/**
* 发布评论
* */
public function commentVideo() {
$video_id = input('id');
$content = input('content');

$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$user_id = $user['id'];

$id = $res = Db::table('jm_video_comment')->insertGetId([
'content' => $content,
'video_id' => $video_id,
'user_id' => $user_id,
'createtime' => time(),
'heart' => 0,
]);
if ($res) {
// $this->success('操作成功。' );
return json(["msg"=>"成功","code"=>1]);
} else {
// $this->error('操作失败,请重试。');
return json(["msg"=>"失败","code"=>0]);
}
}

/**
* 回复评论
* */
public function replyComment() {
$comment_id = input('comment_id');
$content = input('content');

if (empty($comment_id) || empty($content)) {
$this->error("参数不全");
}

$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$login_id = $user['id'];

$login = $user;
$now = time();
$data = [
'comment_id' => $comment_id,
'content' => $content,
'user_id' => $login['id'],
'user_head_portrait' => $login['head_portrait'],
'user_nickname' => $login['nickname'],
'createtime' => $now,
];

$res = Db::table("jm_video_comment_reply")->insertGetId($data);
if (!$res) {
// $this->error('操作失败,请重新操作。');

return json(["msg"=>"失败","code"=>0]);
} else {

return json(["msg"=>"操作成功","code"=>1,"data"=>$login]);
// $this->success('操作成功。', [
// 'info' => $login
// ]);
}
}
/**
* 回复评论
* */
public function replyReply() {
$comment_id = input('comment_id');
$content = input('content');

if (empty($comment_id) || empty($content)) {
$this->error("参数不全");
}
$login=$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}

$login_id = $user["id"];

$now = time();

$res = Db::table("jm_video_comment_reply")->where("id",$comment_id)->find();
$data = [
'comment_id' => $res["comment_id"],
'reply_id' => $comment_id,
'content' => $content,
'user_id' => $login['id'],
'user_head_portrait' => $login['head_portrait'],
'user_nickname' => $login['nickname'],
'createtime' => $now,
];

$res = Db::table("jm_video_comment_reply")->insertGetId($data);
if (!$res) {

return json(["msg"=>"失败","code"=>0]);
// $this->error('操作失败,请重新操作。');
} else {
// $this->success('操作成功。', [
// 'info' => $login
// ]);

return json(["msg"=>"操作成功","code"=>1,"data"=>$login]);
}
}
/**
* 查看评论回复
* */
public function replylist() {
$comment_id = input('comment_id');
// $reply_id = input('reply_id');

// if (empty($reply_id)) {
// $this->error("参数不全");
// }
if (empty($comment_id)) {
$this->error("参数不全");
}
$login=$user = LogicUser::where('id', input('uid'))->find();
if (!$user) {
return json(["msg"=>"失败","code"=>0]);
}
if ($user->anchor !== 1) {
return json(["msg"=>"失败","code"=>0]);
}
$login_id = $user['id'];

$now = time();
//获取回复列表和用户信息,并跌倒循环树状分支
$res = Db::table("jm_video_comment_reply")
->alias('video_comment_reply')
->join('logic_user user','user.id = video_comment_reply.user_id','left')
->where("video_comment_reply.comment_id",$comment_id)
->select();
foreach ($res as $key => &$value) {
if(!empty($value["reply_id"])){
$value["reply"]=Db::table("jm_video_comment_reply")
->alias('video_comment_reply')
->join('logic_user user','user.id = video_comment_reply.user_id','left')
->where("video_comment_reply.id",$value["reply_id"])
->find();
}
// code...
}
// var_dump($res);die;
// $res=$this->getTree($res,2,0,0);
if (!$res) {
return json(["msg"=>"失败","code"=>0]);
// $this->error('操作失败,请重新操作。');
} else {

return json(["msg"=>"操作成功","code"=>1,"data"=>$res]);
// $this->success('操作成功。', array_values($res));
}
}

/**

* 获取分类函数

*/

public function getTree($list,$type='1',$pid=0,$level=0){

$return = [];

if($type=='1'){

foreach ($list as $k => $v) {

if($v['reply_id']==$pid){

$return[$k] = $v;

// $return[$k]['title'] = str_repeat(' ├ ',$level).$v['title'];

$return[$k]['child'] = $this->getTree($list,'1',$v['id'],$level+1);

}

}

}else{

foreach ($list as $k => $v) {

if($v['reply_id']==$pid){

$return[$v['id']] = $v;

// $return[$v['id']]['title'] = str_repeat('├ ',$level).$v['title'];

$return = $return+$this->getTree($list,'2',$v['id'],$level+1);

}

}

}

return $return;

}
/**

* 我的关注

*/

// public function user_follow(){
// $author_id = input('user_id');
// $page = input('page');
// $limit = input('limit');

// $user = $this->auth->getUser();
// $user_id=$user['id'];

// $list = Db::table('jm_user_follow')
// ->alias('user_follow')
// ->join('logic_user user','user.id = user_follow.user_id','left')
// ->join('logic_user follower','follower.id = user_follow.follower_id','left')
// ->field('user_follow.*,user_follow.follower_id as follower_id,user.id as user_id,user.username as user_username,user.nickname as user_nickname,user.head_portrait as user_head_portrait, follower.username as follower_username,follower.nickname as follower_nickname,follower.head_portrait as follower_head_portrait')
// ->where('user_follow.user_id', $author_id)
// ->page($page,$limit)
// ->order('id desc')
// ->select();
// // var_dump($list);die;
// if (!empty($list)) {
// foreach ($list as $key => &$val) {
// $val["user_nickname"]= empty($val["user_nickname"]) ?$val["user_username"]:$val["user_nickname"];
// $val["follower_nickname"]= empty($val["follower_nickname"]) ?$val["follower_username"]:$val["follower_nickname"];
// $follow = (Db::table('jm_user_follow')
// ->where('user_id', $val['follower_id'])
// ->where('follower_id', $author_id)
// ->count()) > 0;
// $val["follow"]= $follow;
// }
// }
// if (!is_array($list)) {
// $this->error('操作失败,请重新操作。');
// } else {
// $this->success('操作成功。', [ 'info' => $list ]);
// }

// }
/**

* 作者粉丝

*/

public function follow_user(){
$author_id = input('user_id');
$page = input('page');
$limit = input('limit');

$user = $this->auth->getUser();
$user_id=$user['id'];
// var_dump($user_id);die;
$list = Db::table('jm_user_follow')
->alias('user_follow')
->join('logic_user user','user.id = user_follow.user_id','left')
->join('logic_user follower','follower.id = user_follow.follower_id','left')
->field('user_follow.*,user.id as user_id,user.nickname as user_nickname,user.head_portrait as user_head_portrait,follower.id as follower_id,follower.nickname as follower_nickname,follower.head_portrait as follower_head_portrait')
->where('user_follow.follower_id', $author_id)
->page($page,$limit)
// ->fetchSql(true)
->order('id desc')
->select();

if (!empty($list)) {
foreach ($list as $key => $val) {

$follow = (Db::table('jm_user_follow')
->where('user_id', $val['follower_id'])
->where('user_id', $author_id)
->count()) > 0;
$list[$key]["follow"]= $follow;
}
}
// var_dump($list);die;
if (!is_array($list)) {
$this->error('操作失败,请重新操作。');
} else {
$this->success('操作成功。', [ 'info' => $list ]);
}

}

/**
* 关注作者
* */
public function followAuthor()
{
$author_id = input('id');

$user = $this->auth->getUser();
$login_id=$user['id'];
$count = Db::table('jm_user_follow')
->where('user_id', $login_id)
->where('follower_id', $author_id)
->count();

if ($count > 0) {
$res = Db::table('jm_user_follow')
->where('user_id', $login_id)
->where('follower_id', $author_id)
->delete();
} else {
if ($author_id == $login_id) {
$this->error('用户无法关注自己');
}

$res = Db::table('jm_user_follow')->insert([
'follower_id' => $author_id,
'user_id' => $login_id,
]);
}
if ($res) {
$this->success('操作成功');
} else {
$this->error('用户无法关注自己');
}
}

/**
* 作者首页
* */
public function getAuthorProfile(){

$author_id = input('id');

$page = input('page');
$limit = input('limit');
$user = $this->auth->getUser();
$user_id=$user['id'];

// 名称,性别,头像,地址 address,个性签名 bio
$user=Db::table("jm_user")
->where("id",$author_id)
->field('id as user_id,gender as user_gender,nickname as user_nickname,address as user_address,bio as user_bio,head_portrait as user_head_portrait')
->find(); //直播信息
// $user["user_live_state"] = Db::name('wch_live')
// ->where("user_id",$author_id)
// ->where("status",'1')
// ->count();
// var_dump($user);die;video_heart
// live_state as user_live_state,
// var_dump(Db::table('jm_user_follow')
// ->where('user_id', $user_id)
// ->where('follower_id', $author_id)
// ->count());die;
//是否关注,
$follow = (Db::table('jm_user_follow')
->where('user_id', $user_id)
->where('follower_id', $author_id)
->count()) > 0;
//是否回关
$follow_user = (Db::table('jm_user_follow')
->where('user_id', $user_id)
->where('user_id', $author_id)
->count()) > 0;
//获赞数量、关注数量、粉丝数量、直播数量
//jm_video_heart,jm_video_star

//点赞
$video_heart=Db::table('jm_video_heart')
->alias('video_heart')
->join('jm_video video','video.id = video_heart.video_id','left')
->where('video.user_id', $author_id)
->count();

//收藏
$video_star=Db::table('jm_video_star')
->alias('video_heart')
->join('jm_video video','video.id = video_heart.video_id','left')
->where('video.user_id', $author_id)
->count();
//粉丝
$follows = Db::table('jm_user_follow')
->where('follower_id', $author_id)
->count() ;
//关注
$user_follow = Db::table('jm_user_follow')
->where('user_id', $author_id)
->count() ;

//作品,
$videocount = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait')
->order('star desc,heart desc,views desc')
->where("user.id",$author_id)
->count();
//推荐 heart 点赞量 star 收藏量 views 浏览量 后期关联关键词表进行关键词排序+++ 大后期的大数据算法(生成自己喜欢的推荐)
$list = Db::table("jm_video")
->alias('video')
->join('logic_user user','user.id = video.user_id','left')
->field('video.*,user.nickname,user.head_portrait')
->order('star desc,heart desc,views desc')
->where("user.id",$author_id)
->page($page,$limit)
->select();

foreach ($list as $key => $value) {

if (!empty($user)) {
// 是否点赞
$list[$key]["is_heart"] = Db::table('jm_video_heart') ->where("video_id",$value["id"]) ->where('user_id', $user_id) ->count();
//是否收藏
$list[$key]["is_star"] = Db::table('jm_video_star')
->where("video_id",$value["id"])
->where('user_id', $user_id)
->count();
//是否关注
$list[$key]["is_user_follow"] = Db::table('jm_user_follow')
->where("follower_id",$value["user_id"])
->where('user_id', $user_id)
->count();
}else {

// 是否点赞
$list[$key]["is_heart"] = 0;
//是否收藏
$list[$key]["is_star"] = 0;
//是否关注
$list[$key]["is_user_follow"] = 0;

}
}

//直播状态
//标签,




$info = [
'user' => $user,//用户信息
'user_follow' => $follow,//是否关注作者
'follow_user' => $follow_user,//作者是否回关
'list' => $list, //短视频列表
'videocount' => $videocount, //短视频列表
'stat' => [
'heart' => $video_heart,//点赞量
'star' => $video_star,//收藏量
'follows' => $follows,//粉丝量
'user_follows' => $user_follow,//关注量
],
];
return json(["msg"=>'操作成功',"data"=>$info,"code"=>1]);
}


}


举报

相关推荐

0 条评论