/**
* 添加评论
* content 评论内容
* addtime 评论时间
* uid 评论作品
*/
public function padd(){
$param=input('param.');
$param['pid']=session('tid');
if(empty($param['uid'])){
return json(['code'=>2,'message'=>'uid不能为空']);
}

$data=db('comments')->insertGetId(['uid'=>$param['uid'],'content'=>$param['content'],'addtime'=>$param['addtime'],'pid'=>$param['pid']]);
if($data){
return json(['code'=>1,'message'=>'评论成功']);
}else{
return json(['code'=>2,'message'=>'评论失败']);
}
}

/**
* 评论展示
* uid comments表
* page 页数
* num 条数
*/
public function comment(){
$param=input('param.');
$param['pid']=session('tid');//用户id
if(empty($param['page'])){
$param['page']=1;
}

if(empty($param['num'])){
$param['num']=5;
}
if(empty($param['uid'])){
return json(['code'=>2,'message'=>'uid不能为空']);
}

$data=db('comments')->where('uid',$param['uid'])->page($param['page'],$param['num'])->select();

$commentslike=db('commentslike');
$people=db('people');
foreach ($data as $k=>$value) {
//查看评论点赞表的状态
$state=$commentslike->where(['pid'=>$param['pid'],'uid'=>$param['uid'],'cid'=>$value['data']])->value('state');
if(empty($state)){
$state = '还未点赞';
}
$data[$k]['state']=$state;

//获取评论人的手机号
$people=$people->where('id',$value['pid'])->value('tel');
$data[$k]['tel']=$people;

//把二级评论添加到数组数据中
if($value['rpid'] !== 0){
// $r_pid = $commentslike->where(['id'=>$value['rpid']])->value('pid');
$r_tel = $people->where('id',$value['rpid'])->value('tel');
$data[$k]['r_tel'] = $r_tel;
}else{
$data[$k]['r_tel'] = '';
}

}
return json(['code'=>1,'data'=>$data]);
}

/**
* 评论点赞
* uid 作品id
*/
public function commentslike(){
$param=input('param.');
$param['pid']=session::get('tid');

if(empty($param['uid'])){
return json(['code'=>2,'message'=>'uid不能为空']);
}
//判断该作品有没有评论
$comments=db('comments')->where('uid',$param['uid'])->select();
if(!empty($comments)){
//判断他有没有点赞
$data=db('commentslike')->where(['uid'=>$param['uid'],'pid'=>$param['pid'],'cid'=>$comments['id']])->find();
if(empty($data)){
$like=db('commentslike')->insertGetId(['uid'=>$param['uid'],'pid'=>$param['pid'],'cid'=>$comments['id'],$param['state']=>'点赞']);
if($like){
return json(['code'=>1,'message'=>'点赞成功']);
}else{
return json(['code'=>1,'message'=>'点赞失败']);
}
}else{
if($data['state']=='取消点赞'){
$like=db('commentslike')->where(['uid'=>$param['uid'],'pid'=>$param['pid'],'cid'=>$comments['id']])->update([$param['state']=>'点赞']);
}elseif($data['state']=='点赞'){
$like=db('commentslike')->where(['uid'=>$param['uid'],'pid'=>$param['pid'],'cid'=>$comments['id']])->update([$param['state']=>'取消点赞']);
}
}

}else{
return json(['code'=>2,'message'=>'此作品还未评论']);
}
}

/**
* 回复评论
* uid 作品id
* content 回复内容
* cid 这条评论的id
* uid 作品id pid 评论人id
*/
public function reply(){
$param['pid'] = session('tid');
$param = input('param.');
//被评论的id $param['cid']
$data = db('comments')->where(['id'=>$param['rid']])->find();
if($data['rid'] !== 0){
$param['rid'] = $data['rid'];//被回复人的pid.
}
$param['rid'] = $data['id'];//被回复人的pid.

$param['rpid'] = $data['pid'];

//评论内容 $param['content']
//作品id $param['uid']
$param['addtime'] = date('Y-m-d H:i:s');
$id = db('comments')->insertGetId(['uid'=>$param['uid'],'content'=>$param['content'],'addtime'=>$param['addtime'],'pid'=>$param['pid'],'rid'=>$param['rid']]);
if($id){
return json(['code'=>1,'messgae'=>'回复成功']);
}else{
return json(['code'=>2,'message'=>'回复失败']);
}
}

/**
* 查看二级评论
* uid 作品id
* rid 这条评论的id
*/
public function GetRCommtens($value='')
{
$data = db('comments')->where(['rid'=>$param['rid']])->select();
}

PHP后台评论 接口的更多相关文章

  1. 使用Asp.net WebAPI 快速构建后台数据接口

    现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...

  2. QQ18年,解密8亿月活的QQ后台服务接口隔离技术

    作者:shane,腾讯后台开发高级工程师 QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗 ...

  3. 解决Ajax请求后台Servlet接口拿不到JSON数据问题

    前端Ajax请求代码如下: window.onload=function() { var url='http://127.0.0.1:8080/testpj/ErrorlogServlet'; $.a ...

  4. 在vue-cli搭建的项目中在后台mock接口中支持req.body和req.cookies

    在<vue-cli搭建的项目中增加后台mock接口>中实现了后台mock,但是前端post的t数据都要在mock的后台接口中使用req的接收数据事件获取http协议body中的数据. re ...

  5. WordPress 后台评论如何自定义搜索条件

    大家都知道WordPress 作为一个非常成熟的博客系统,功能可以说是非常强大,几乎整个网站都可以进行定制开发,已经不算是一个博客系统了而应该是一个成熟的开发框架 最近就用WP给客户开发了一个网站,但 ...

  6. c#后台访问接口

    直接上代码 后台代码 //接口地址string url = "http://spherefg.topsmoon.com:6666/restapi/Comment/SubmitCommentF ...

  7. 年轻人不讲武德,竟然重构出这么优雅后台 API 接口

    Hello,早上好,我是楼下小黑哥~ 最近偶然间在看到 Spring 官方文档的时候,新学到一个注解 @ControllerAdvice,并且成功使用这个注解重构我们项目的对外 API 接口,去除繁琐 ...

  8. 电商管理后台 API 接口文档

    1. 电商管理后台 API 接口文档 1.1. API V1 接口说明 接口基准地址:http://127.0.0.1:8888/api/private/v1/ 服务端已开启 CORS 跨域支持 AP ...

  9. Mock模拟后台数据接口--再也不用等后端的API啦

    ok,在开发中经常需要从后台获取数据,那么有时候后台的数据接口并没有写好,所以这时候,就需要自己模拟数据接口,来实现前端逻辑, 今天数的就是阿里巴巴的一款mock产品,很好用的哦!!!! ok!这是我 ...

随机推荐

  1. DOM-设置样式心得

    一.style属性的设置和获取 style是一个对象,不能通过内嵌或外链获取,也就是只有是行内式的时候才能打印显示 style本身是一个对象 属性的值是字符串,没有赋值的情况下是"" ...

  2. 778A String Game

    A. String Game time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...

  3. APP强制退出

    第一种方法: 企业版可以用,Appstore可能被拒,慎用 - (void)exitApplication { AppDelegate *app = [UIApplication sharedAppl ...

  4. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

  5. 摹客首家发布Adobe XD插件

    10月19日,摹客iDoc发布了支持Adobe XD的插件,这是中国国内首款基于Adobe XD 正式API的插件. 设计师在Adobe XD 中安装并使用此插件,可以将设计稿上传到摹客iDoc,并使 ...

  6. openssl RSA加密方法初识

    作为非对称加密算法,有两对密钥 一般用法 加密结果=RSA_EN(数据,公钥); 解密结果=RSA_DE(数据,私钥); RSA填充 (RSA_public_encrypt和RSA_private_d ...

  7. spring学习 十 schema-based 异常通知,和环绕通知

    一 schema-based异常通知 第一步:创建通知类 :新建一个类实现 throwsAdvice 接口,throwsAdvice接口只是标记接口里面并没有任何方法,必须自己写方法,且必须叫 aft ...

  8. python入门之字典

    1.字典的基本特征: key-value结构 key唯一,必须为不可变数据类型 value可以不唯一 无序 查找速度快 2.创建一个字典: info={“gaohui”:"IT", ...

  9. gcc -ldl 选项作用

    如果你的程序中使用dlopen.dlsym.dlclose.dlerror 显示加载动态库,需要设置链接选项 -ldl 加载动态链接库,首先为共享库分配物理内存,然后在进程对应的页表项中建立虚拟页和物 ...

  10. 20155312 2016-2017-2《Java程序设计》课程总结

    20155312 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:你期望的师生关系是什么? 预备作业2:做中学learning by doing个人感想 ...