/**
* 添加评论
* 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. 动态加载及Servlet容器加载

    动态加载 动态加载是 Servlet 3.0 中的新特性,它可以实现在不重启 Web 应用的情况下加载新的 Web 对象(Servlet.Filter.Listener). 为了实现动态加载的第一种方 ...

  2. Configuration Reference In Vue CLI 3.0

    Configuration Reference This project is sponsored by  #Global CLI Config Some global configurations ...

  3. mysql 清空所有表数据重置自增ID

    1.登录mysql客户端 mysql -u root -p 输入密码进入 2.生成 sql 语句文件 SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') i ...

  4. freemarker【FTL】常见语法大全

    FreeMarker的插值有如下两种类型:1,通用插值${expr};2,数字格式化插值:#{expr}或#{expr;format} ${book.name?if_exists } //用于判断如果 ...

  5. Mockplus3.5.0.1新增标注功能

    Mockplus3.5.0.1版本中,新增了标注功能.多种标注模式,智能生成,随时查看.原型设计效率更高. Mockplus的标注功能有以下四种模式: 1.无选中标注 在未选中任何组件时,按住Ctrl ...

  6. clean

    启动tomcat 报 Could not delete D:/online/.metadata/.plugins/org.eclipse.wst.server.core/tm  

  7. mongoDB(Linux)

    启动  service mongod start 安装好后,输入mongo进入控制台 创建数据库 use baseName db.createCollection("game_record& ...

  8. mongoDB(Window)

    1.启动命令 mongod --dbpath F:\mongo\data             注:dbpath路径不能有空格,我开始用F:\Program Files,就因为有一个空格,失败了. ...

  9. 【CSS小技巧】 用 CSS 实现一个宽高等比自适应容器

    不知道怎么起个标题能更加清楚的说清楚我的意图,那就打个比方吧:比如我们在手机端上放一张宽度 100% 的图片,我们如果不设置图片的高度,那么这个图片会根据图片的原始尺寸等比缩放.今天我们要讲的就是实现 ...

  10. Activiti任务认领

    Activiti任务认领 TaskService taskService; taskService.setAssignee(String taskId, String userId);taskServ ...