李忠征信平台后端管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

429 lines
18 KiB

<?php
namespace app\api\controller;
use app\common\controller\Api;
use app\admin\model\Content as ContentModel;
use app\admin\model\content\Log as LogModel;
use app\admin\model\content\Tag as TagModel;
use app\admin\model\content\Zhengren;
use app\admin\model\content\Search;
use app\admin\model\content\Mainjoin;
use app\admin\model\content\Pinglun;
use app\common\model\User;
use app\admin\model\Order;
use app\admin\model\user\Friend;
use think\Model;
use think\Db;
use fast\Random;
use think\Exception;
/**
* 事件接口
*/
class Content extends Api
{
//如果$noNeedLogin为空表示所有接口都需要登录才能请求
//如果$noNeedRight为空表示所有接口都需要验证权限才能请求
//如果接口已经设置无需登录,那也就无需鉴权了
//
// 无需登录的接口,*表示全部
protected $noNeedLogin = ['getContentList', 'getContentTag','getContentdetail','getJoinContentList','getpinglun','getzhengren','getsearchlist'];
// 无需鉴权的接口,*表示全部
protected $noNeedRight = '*';
public function _initialize()
{
parent::_initialize();
$this->model = new ContentModel;
}
/**
* 获取事件列表
* @param $offset
* @param $limit
*/
public function getContentList()
{
$data = $this->request->post();
if($this->request->isPost()){
$uid = isset($data['token'])&&!empty($data['token'])?$this->auth->id: 0;
$where = json_decode(htmlspecialchars_decode($data['filter']),true);
if($where){
$search['where'] = $where;
$search['user_id'] = $uid;
$this->setsearch($search);
}
$order = '';
$offset = $data['offset'];
$limit = $data['limit'];
$list = $this->model->getlist($where, $order, $offset, $limit,$uid);
return $this->success('获取成功',$list);
}
return $this->error("非法请求");
}
/**
* 获取用户事件列表
* @param $offset
* @param $limit
*/
public function getUserContentList(){
$data = $this->request->post();
if($this->request->isPost()&&$data['user_id']){
$where['user_id'] = $data['user_id'];
$where['content_type_id'] = $data['content_type_id'];
$order = '';
$offset = $data['offset'];
$limit = $data['limit'];
$uid = isset($data['token'])&&!empty($data['token'])?$this->auth->id: 0;
$list = $this->model->getlist($where, $order, $offset, $limit,$uid);
return $this->success('获取成功',$list);
}
return $this->error("非法请求");
}
public function getJoinContentList(){
$data = $this->request->post();
if($this->request->isPost()){
//查询关联的信息id
$join = Mainjoin::where(['main_id'=>$data['id']])->column('content_id');
$list = [];
if(!empty($join)){
$where['id'] = $join;
$order = ['readnum'=>'desc'];
$offset = empty($data['offset']) ? 0 : $data['offset'];
$limit = empty($data['limit']) ? 6 : $data['limit'];
$uid = isset($data['token'])&&!empty($data['token'])?$this->auth->id: 0;
$list = $this->model->getlist($where, $order, $offset, $limit,$uid);
}
return $this->success('获取成功',$list);
}
return $this->error("非法请求");
}
/**
* 发布事件接口
* @param $offset
* @param $limit
*/
public function setContent(){
if($this->request->post()){
$data = $this->request->param();
$zhengren = $data['zhengren']?json_decode(htmlspecialchars_decode($data['zhengren']),true):'';
unset($data['zhengren']);
Db::startTrans();
$data['user_id'] = $this->auth->id;
$data['createtime'] = date("Y-m-d H:i:s");
$data['content_tag'] = htmlspecialchars_decode($data['content_tag']);
unset($data['token']);
try {
$cid = $this->model->insertGetId($data);
if ($cid&&!empty($zhengren)) {
foreach ($zhengren as $key => &$value) {
$value['content_id'] = $cid;
$value['createtime'] = date("Y-m-d H:i:s");
unset($value['addressArr']);
unset($value['id']);
}
if(!Zhengren::insertAll($zhengren)) throw new Exception("发布事件失败");
} else {
throw new Exception("发布事件失败");
}
Db::commit();
} catch (Exception $e) {
Db::rollback();
return $this->error($e->getMessage());
}
$this->success('发布成功,等待审核', $data);
}
return $this->error("非法请求");
}
//重新发起申请
public function reapply(){
$data = $this->request->post();
if($this->request->isPost()){
$id = $data['id'];
$content = $this->model->get($id);
if($content['status']==-1){
$content->status = 0;
$content->reason = '';
$content->save();
return $this->success('重新申请成功');
}else{
return $this->error('重新申请失败');
}
}
}
public function getContentdetail(){
if($this->request->isPost()){
$logModel = new LogModel;
$id = $this->request->post('id');
$post = $this->request->post();
$data = $this->model->get($id);
if(isset($post['token']) && !empty($post['token']) && $this->auth->id){
$userin = User::get($this->auth->id);
$playinfo = $logModel->where('type',3)->where('content_id',$id)->where('user_id',$this->auth->id)->find();
if(empty($playinfo)){
$this->operaContentneibu(['content_id'=>$id,'type'=>3,'user_id'=>$this->auth->id]);
}
$order = Order::where(['content_id'=>$data['id'],'user_id'=>$this->auth->id,'status'=>1])->find();
//判断是否是云股东
if($userin['is_vip']&&$userin['vipout_time']>time()&&$userin['read_num']>0&&empty($order)){
$order['content_id'] = $data['id'];
$order['user_id'] = $this->auth->id;
$order['order_no'] = "YGD".Random::numeric(15);
$order['money'] = 0;
$order['createtime'] = date('Y-m-d H:i:s',time());
$order['paytime'] = date('Y-m-d H:i:s',time());
$order['ispay'] = 1;
$order['status'] = 1;
$order['paytype'] = "云股东权益";
$order['user_money'] = 0;
$order['system_money'] = 0;
Order::insertGetId($order);
$userin->read_num = $userin['read_num']-1;
$userin->save();
}
}
//查询发布人信息
$userinfo = User::get($data['user_id']);
$data['avatar'] = empty($userinfo)?'':$userinfo['avatar'];
$data['nickname'] = empty($userinfo)?'':$userinfo['nickname'];
$data['is_like'] = 0;
$data['is_sc'] = 0;
$data['is_read'] = 0;
$data['payed'] = 0;
$data['is_guanzhu'] = 0;
$data['content_tag'] = json_decode($data['content_tag'],true);
if(isset($post['token']) && !empty($post['token']) && $this->auth->id){
$myuid = $this->auth->id;
$order = Order::where(['content_id'=>$data['id'],'user_id'=>$myuid,'status'=>1])->find();
$data['payed'] = $order||$data['user_id']==$myuid?1:0;
//查询当前用户是否已经关注
$playinfo = $logModel->where('type',1)->where('content_id',$data['id'])->where('user_id',$myuid)->find();
$data['is_like'] = $playinfo?1:0;
$playinfo = $logModel->where('type',2)->where('content_id',$data['id'])->where('user_id',$myuid)->find();
$data['is_sc'] = $playinfo?1:0;
$playinfo = $logModel->where('type',3)->where('content_id',$data['id'])->where('user_id',$myuid)->find();
$data['is_read'] = $playinfo?1:0;
//当前用户是否关注该用户
$guanzhu = Friend::where(['user_id'=>$myuid,'children_id'=>$data['user_id']])->find();
$data['is_guanzhu'] = $guanzhu?1:0;
}
return $this->success('获取成功',$data??[]);
}
$this->error("非法请求");
}
// 事件操作接口
public function operaContent(){
$data = $this->request->post();
if($this->request->post()){
$insert['content_id'] = $data['content_id'];
$insert['type'] = $data['type'];
$insert['user_id'] = $this->auth->id;
DB::startTrans();
try {
$logModel = new LogModel;
$playinfo = $this->model->get($data['content_id']);
//查询是否存在该记录
$loginfo = $logModel->where($insert)->find();
//取消操作
if(isset($data['is_del']) && $data['is_del']){
if(!$loginfo) throw new Exception("操作繁忙,请歇一会");
$loginfo->deletetime = date("Y-m-d H:i:s",time());
if(!$loginfo->save()) throw new Exception("操作繁忙,请歇一会");
//修改主表点赞喜欢数量
if($data['type']==1){
$playinfo->likenum = $playinfo->likenum - 1;
}else if($data['type']==2){
$playinfo->scnum = $playinfo->scnum - 1;
}else if($data['type']==3){
$playinfo->readnum = $playinfo->readnum - 1;
}
}else{
//点赞喜欢操作
$insert['createtime'] = date("Y-m-d H:i:s",time());
if($loginfo && !$loginfo['deletetime']) throw new Exception("操作繁忙,请歇一会");
if(!$logModel->insert($insert)) throw new Exception("操作繁忙,请歇一会");
//修改主表点赞喜欢数量
if($data['type']==1){
$playinfo->likenum = $playinfo->likenum + 1;
}else if($data['type']==2){
$playinfo->scnum = $playinfo->scnum + 1;
}else if($data['type']==3){
$playinfo->readnum = $playinfo->readnum + 1;
}
}
if(!$playinfo->save()) throw new Exception("操作繁忙,请歇一会");
DB::commit();
return $this->success("成功");
} catch (Exception $e) {
DB::rollback();
return $this->error($e->getMessage());
}
}
$this->error("非法请求");
}
public function operaContentneibu($data){
if($this->request->post()){
$insert['content_id'] = $data['content_id'];
$insert['type'] = $data['type'];
$insert['user_id'] = $data['user_id'];
DB::startTrans();
try {
$logModel = new LogModel;
$playinfo = $this->model->get($data['content_id']);
//查询是否存在该记录
$loginfo = $logModel->where($insert)->find();
//取消操作
if(isset($data['is_del']) && $data['is_del']){
if(!$loginfo) throw new Exception("操作繁忙,请歇一会");
$loginfo->deletetime = date("Y-m-d H:i:s",time());
if(!$loginfo->save()) throw new Exception("操作繁忙,请歇一会");
//修改主表点赞喜欢数量
if($data['type']==1){
$playinfo->likenum = $playinfo->likenum - 1;
}else if($data['type']==2){
$playinfo->scnum = $playinfo->scnum - 1;
}else if($data['type']==3){
$playinfo->readnum = $playinfo->readnum - 1;
}
}else{
//点赞喜欢操作
$insert['createtime'] = date("Y-m-d H:i:s",time());
if($loginfo && !$loginfo['deletetime']) throw new Exception("操作繁忙,请歇一会");
if(!$logModel->insert($insert)) throw new Exception("操作繁忙,请歇一会");
//修改主表点赞喜欢数量
if($data['type']==1){
$playinfo->likenum = $playinfo->likenum + 1;
}else if($data['type']==2){
$playinfo->scnum = $playinfo->scnum + 1;
}else if($data['type']==3){
$playinfo->readnum = $playinfo->readnum + 1;
}
}
if(!$playinfo->save()) throw new Exception("操作繁忙,请歇一会");
DB::commit();
return true;
} catch (Exception $e) {
DB::rollback();
return false;
}
}
$this->error("非法请求");
}
public function getContentTag(){
$tag = TagModel::field('id,title')->select();
$this->success('返回成功', $tag);
}
public function setpinglun(){
$data = $this->request->post();
if($this->request->post()){
$data['user_id'] = $this->auth->id;
$data['createtime'] = date("Y-m-d H:i:s");
$data['content_id'] = $data['content_id'];
$data['content'] = $data['content'];
if(isset($data['image']) && $data['image']){
$data['image'] = $data['image'];
}
unset($data['id']);
unset($data['token']);
$result = Pinglun::create($data);
if($result)return $this->success('评论成功');
return $this->error('评论失败');
}
return $this->error('非法请求');
}
public function getpinglun(){
$data = $this->request->post();
if($this->request->post()){
$list = Pinglun::where(['content_id'=>$data['content_id']])->order('createtime desc')->select();
return $this->success('获取成功', $list);
}
return $this->error('非法请求');
}
public function getzhengren(){
$data = $this->request->post();
if($this->request->post()){
$list = Zhengren::where(['content_id'=>$data['content_id']])->order('createtime desc')->select();
return $this->success('获取成功', $list);
}
return $this->error('非法请求');
}
public function setsearch($data){
//添加搜索记录
$insert['user_id'] = $data['user_id'];
$insert['content'] = json_encode($data['where']);
foreach ($data['where'] as $key => $value) {
if(empty($value)) unset($data['where'][$key]);
}
$insert['title'] = implode(',',array_values($data['where']));
$insert['createtime'] = date("Y-m-d H:i:s",time());
if(!empty($insert['title'])){
if(Search::insert($insert)){
return true;
}else{
return false;
}
}
return false;
}
public function getsearchlist(){
//获取搜索记录
$lianxiang =[];
$data = $this->request->post();
$uid = isset($data['token'])&&!empty($data['token'])?$this->auth->id:0;
$list = Search::where('user_id',$uid)->order('createtime desc')->limit(0,10)->select();
foreach($list as $key => &$val){
$val['content'] = json_decode($val['content'],true);
}
//查询联想内容
//查询次数多的内容
$lianxiang = Search::where('user_id',$uid)->order('createtime desc')->select();
//获取信息
$keyword = array_column($lianxiang,'title');
$keyword = array_count_values($keyword);
arsort($keyword);
$top_strings = array_keys($keyword);
$top_strings = array_slice($top_strings, 0, 1);
$returnlx = Search::where("title","like",$top_strings[0])->order('createtime desc')->limit(0,10)->select();
foreach($returnlx as $ke => &$va){
$va['content'] = json_decode($va['content'],true);
}
$rerurn = ['list'=>$list,'lianxiang'=>$returnlx];
return $this->success('获取成功', $rerurn);
}
public function delsearch(){
//获取搜索记录
$data = $this->request->post();
if($this->request->post()){
$uid = $this->auth->id;
if(Search::where('user_id',$uid)->delete()){
return $this->success('已清除');
}else{
return $this->error('暂无搜索记录');
}
}
}
public function getreadcontentlist(){
$data = $this->request->post();
if($this->request->post()){
$uid = $this->auth->id;
$type = $data['type'];
$logModel = new LogModel;
$ids = $logModel->where('user_id',$uid)->where('type',$type)->column('content_id');
$offset = $data['offset'];
$limit = $data['limit'];
$order = ['createtime'=>'desc'];
$where = json_decode(htmlspecialchars_decode($data['filter']),true);
$where['ids'] = $ids;
$list = $this->model->getlist($where, $order, $offset, $limit,$uid);
return $this->success('获取成功', $list);
}
return $this->error('非法请求');
}
}