leftJoin('district','category.city_id','district.id') ->leftJoin('department','category.department_id','department.id') ->select("category.*","district.name as city_name","department.name as department_name") ->limit($data['pageSize'])->orderBy("category.sort","desc")->orderByDesc('category.updated_at')->offset(($data['page']-1)*$data['pageSize'])->get(); $count = Category::where($where)->count(); $data = [ 'rows'=>$rep->toArray(), 'count'=>$count ]; if(empty($rep->toArray())){ return Result::error("没有导航池数据"); } return Result::success($data); } /** * @param array $data * @return array */ public function categoryList(array $data): array { $where[] = [ 'pid','=',$data['pid'] ]; if(isset($data['name'])){ array_push($where, ['category.name','like','%'.$data['name'].'%']); } var_dump($where); $result = Category::where($where)->select('category.*','category.id as category_id')->get(); if(empty($result)){ return Result::error("没有栏目数据"); } return Result::success($result); } /** * @param array $data * @return array */ public function addCategory(array $data): array { $id = Category::insertGetId($data); if(empty($id)){ return Result::error("添加失败"); } return Result::success(['id'=>$id]); } /** * @param array $data * @return array */ public function delCategory(array $data): array { $categoryList = Category::where(['pid'=>$data['id']])->get(); var_dump("分类列表:",$data,$categoryList); if($categoryList->toArray()){ return Result::error("分类下面有子分类不能删除"); } $articleList = Article::where(['catid'=>$data['id']])->get(); var_dump("文章列表:",$articleList); if($articleList->toArray()){ return Result::error("分类下面有资讯不能删除"); } $result = Category::where($data)->delete(); if(!$result){ return Result::error("删除失败"); } return Result::success($result); } /** * @param array $data * @return array */ public function updateCategory(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = Category::where($where)->update($data); if($result){ return Result::success($result); }else{ return Result::error("更新失败"); } } /** * 获取导航池信息 * @param array $data * @return array */ public function getCategoryInfo(array $data): array { $where = [ 'id'=>$data['id'] ]; $result = Category::where($where)->first(); if($result){ return Result::success($result); }else{ return Result::error("更新失败"); } } /** * @param array $data * @return array */ public function getArticleList(array $data): array { $where= []; if(isset($data['title']) && $data['title']){ array_push($where,['article.title','like','%'.$data['title'].'%']); } if(isset($data['category_name']) && $data['category_name']){ array_push($where,['category.name','like','%'.$data['category_name'].'%']); } if(isset($data['author']) && $data['author']){ array_push($where,['article.author','=',$data['author']]); } if(isset($data['islink']) && $data['islink']!==""){ array_push($where,['article.islink','=',$data['islink']]); } if(isset($data['status']) && $data['status']!==""){ array_push($where,['article.status','=',$data['status']]); } $rep = Article::where($where) ->whereNotIn('article.status',[404]) ->leftJoin('category','article.catid','category.id') ->select("article.*","category.name as category_name") ->orderBy("article.id","desc") ->limit($data['pageSize']) ->offset(($data['page']-1)*$data['pageSize'])->get(); $count = Article::where($where)->whereNotIn('article.status',[404]) ->leftJoin('category','article.catid','category.id')->count(); $data = [ 'rows'=>$rep->toArray(), 'count'=>$count ]; if(empty($rep)){ return Result::error("没有信息数据"); } return Result::success($data); } /** * @param array $data * @return array */ public function addArticle(array $data): array { Db::beginTransaction(); try{ $articleData = $data; unset($articleData['content']); $id = Article::insertGetId($articleData); $articleDataContent = [ 'article_id'=>$id, 'content'=>$data['content'] ]; ArticleData::insertGetId($articleDataContent); Db::commit(); } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("创建失败",0); } return Result::success(['id'=>$id]); } /** * @param array $data * @return array */ public function delArticle(array $data): array { $result = Article::where($data)->update(['status'=>404]); if(!$result){ return Result::error("删除失败"); } return Result::success($result); } /** * @param array $data * @return array */ public function updateArticle(array $data): array { Db::beginTransaction(); try{ $data['cat_arr_id'] = isset($data['cat_arr_id'])?json_encode($data['cat_arr_id']):''; $data['tag'] = isset($data['tag'])?json_encode($data['tag']):''; $articleData = $data; unset($articleData['content']); unset($articleData['status_name']); unset($articleData['name']); unset($articleData['content']); unset($articleData['pid_arr']); unset($articleData['pid']); $id = Article::where(['id'=>$data['id']])->update($articleData); $articleDataContent = [ 'content'=>$data['content'] ]; ArticleData::where(['article_id'=>$data['id']])->update($articleDataContent); } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("更新失败",0); } return Result::success([]); } /** * 更新资讯状态 * @param array $data * @return array */ public function upArticleStatus(array $data):array { $result = Article::where(['id'=>$data['id']])->update($data); if($result){ return Result::success(); }else{ return Result::error("更新状态失败",0); } } /** * 获取新闻详情 * @param array $data * @return array */ public function getArticleInfo(array $data): array { $where = [ 'article.id'=>$data['id'], // 'article.status'=>1 ]; $result = Article::where($where)->leftJoin("article_data","article.id","article_data.article_id")->first(); if(empty($result)){ return Result::error("查询失败",0); } return Result::success($result); } /** * 获取头条新闻 * @param array $data * @return array */ public function getWebsiteArticlett(array $data): array { $category = WebsiteCategory::where('website_id',$data['website_id'])->select('category_id')->get(); $category = $category->toArray(); $result= []; if($category){ $category_ids = []; foreach($category as $val){ array_push($category_ids,$val['category_id']); } if(isset($data['placeid'])){ $placeid=$data['placeid']-1; $result=Article::where('status',1)->where('level',$data['level'])->whereIn("catid",$category_ids)->orderBy("updated_at","desc")->offset($placeid)->limit($data['pageSize'])->get(); }else{ $result=Article::where('status',1)->where('level',$data['level'])->whereIn("catid",$category_ids)->orderBy("updated_at","desc")->offset(0)->limit($data['pageSize'])->get(); } if(empty($result)){ return Result::error("暂无头条新闻",0); } return Result::success($result); }else{ return Result::error("本网站下暂无相关栏目",0); } } /** * 获取模块新闻 * @param array $data * @return array */ public function getWebsiteModelArticles(array $data): array { $catid=$data['catid']; $category = WebsiteCategory::where('website_id',$data['website_id'])->where('category_id',$catid)->select('category_id')->get(); $category = $category->toArray(); if(!empty($category)){ $where=[ 'status' => 1, 'catid' => $catid ]; if ($data['level'] == 1) { $level = [ 0 => '1', 1 => '4', 2 => '5', 3 => '0', ]; $result = Article::where($where)->whereIn('level',$level)->orderBy("updated_at","desc")->limit($data['pagesize'])->get(); }elseif($data['level']==2){ $level='2'; $result = Article::where($where)->where('level',$level)->orderBy("updated_at","desc")->limit($data['pagesize'])->get(); }else{ $level='3'; $result = Article::where($where)->where('level',$level)->orderBy("updated_at","desc")->limit($data['pagesize'])->get(); } $result= $result->toArray(); if(!empty($result) && isset($data['placeid']) && !empty($data['placeid'])){ $placeid=$data['placeid']-1; if($level==2 || $level==3){ $where =[ 'level' => $level ]; $result = Article::where($where) ->orderBy("updated_at","desc") ->offset($placeid) ->limit($data['pagesize'])->get(); }else{ $result = Article::where($where) ->whereIn('level',$level) ->offset($placeid) ->orderBy("updated_at","desc") ->limit($data['pagesize'])->get(); } } if(empty($result)){ return Result::error("此栏目暂无相关新闻",0); } }else{ return Result::error("此网站暂无此栏目",0); } return Result::success($result); } /** *获取新闻列表 * @param array $data * @return array */ public function getWebsiteArticleList(array $data): array { $where[] = ['status', '=', 1]; if(isset($data['keyword']) && !empty($data['keyword'])){ array_push($where,['article.title','like','%'.$data['keyword'].'%']); } if(isset($data['catid']) && !empty($data['catid'])){ if(is_array($data['catid'])){ $category = WebsiteCategory::where('website_id',$data['website_id'])->whereIn('category_id',$data['catid'])->pluck('category_id'); array_push($where,['catid', 'in', $data['catid']]); }else{ $category = WebsiteCategory::where('website_id',$data['website_id'])->where('category_id',$data['catid'])->pluck('category_id'); array_push($where,['catid', '=', $data['catid']]); } if(empty($category)){ return Result::error("此网站暂无此栏目",0); } } // return Result::success($where); $rep = Article::where(function ($query) use ($where) { foreach ($where as $condition) { if ($condition[1] === 'in') { $query->whereIn($condition[0], $condition[2]); } else { $query->where($condition[0], $condition[1], $condition[2]); } } }) ->orderBy("updated_at", "desc") ->limit($data['pageSize']) ->offset(($data['page'] - 1) * $data['pageSize']) ->get(); $count = Article::where(function ($query) use ($where) { foreach ($where as $condition) { if ($condition[1] === 'in') { $query->whereIn($condition[0], $condition[2]); } else { $query->where($condition[0], $condition[1], $condition[2]); } } })->count(); $data = [ 'rows'=>$rep->toArray(), 'count'=>$count ]; if(empty($rep)){ return Result::error("没有信息数据"); } return Result::success($data); } /** * 前端-获取新闻详情 * @param array $data * @return array */ public function selectWebsiteArticleInfo(array $data): array { $where = [ 'article.id'=>$data['id'], 'article.status'=>1 ]; $result = Article::where($where)->leftJoin("article_data","article.id","article_data.article_id")->first(); if(empty($result)){ return Result::error("查询失败",0); } $category = WebsiteCategory::where('website_id',$data['website_id'])->where(['category_id'=>$result['catid']])->first(); if(empty($category)){ return Result::error("查询失败",0); } $result['category_id'] = $category['category_id']; $result['cat_name'] = $category['name']; return Result::success($result); } /** * 前端-获取网站调查问卷 * @param array $data * @return array */ public function getWebsiteSurvey(array $data): array { if(isset($data['website_id']) && !empty($data['website_id'])){ $website = Website::where('id',$data['website_id'])->first(); if(empty($website)){ return Result::error("暂无此网站",0); } } if(isset($data['art_id']) && !empty($data['art_id'])){ $article = Article::where('id',$data['art_id'])->where('status',1)->first(); if(empty($article)){ return Result::error("暂无此文章",0); } // return Result::error($data,0); $where['art_id'] = $data['art_id']; // $query = ArticleSurvey::where('art_id',$data['art_id']); }else{ $survey = ArticleSurvey::where('website_id',$data['website_id'])->orderBy('created_at')->first(); if(empty($survey)){ return Result::error("暂无调查问卷",0); } $where['sur_id'] = $survey['sur_id']; // $query = ArticleSurvey::where('sur_id',$survey['sur_id']); } $result['survey'] = ArticleSurvey::where($where)->where('is_other',0) ->leftJoin('article','article_survey.art_id','article.id') ->select('article_survey.*','article.survey_type') ->get()->all(); $result['other'] = ArticleSurvey::where($where)->where('is_other',1)->where('other_id',0)->first(); $result['others'] = ArticleSurvey::where($where)->where('is_other',1)->where('other_id','!=',0)->orderByDesc('created_at')->first(); if(empty($result)){ return Result::error("此文章暂无调查问卷",0); } return Result::success($result); } /** * 前端-添加网站调查问卷选项 * @param array $data * @return array */ public function addWebsiteSurveyOption(array $data): array { if(isset($data['website_id']) && !empty($data['website_id'])){ $website = Website::where('id',$data['website_id'])->first(); if(empty($website)){ return Result::error("暂无此网站",0); } if(isset($data['sur_id']) && !empty($data['sur_id'])){ $survey = ArticleSurvey::where('sur_id',$data['sur_id'])->where('website_id',$data['website_id'])->where('is_other',1)->where('other_id',0)->first(); if(empty($survey)){ return Result::error("此调查问卷不可添加选项",0); } if(isset($data['choice_name']) &&!empty($data['choice_name'])){ $choice = [ 'art_id'=>$survey['art_id'], 'website_id'=>$data['website_id'], 'survey_name'=>$survey['survey_name'], 'choice_name'=>$data['choice_name'], 'sur_id'=>$survey['sur_id'], 'is_other'=>1, 'other_id'=>$survey['id'], ]; $result = ArticleSurvey::insertGetId($choice); if(empty($result)){ return Result::error("添加失败",0); } return Result::success($result); } } return Result::error("添加失败",0); } return Result::error("添加失败",0); } /** * 前端-调查问卷投票 * @param array $data * @return array */ public function addWebsiteSurveyVote(array $data): array { if(isset($data['website_id']) && !empty($data['website_id'])){ $website = Website::where('id',$data['website_id'])->first(); if(empty($website)){ return Result::error("暂无此网站",0); } if(isset($data['sur_id']) && !empty($data['sur_id'])){ $survey = ArticleSurvey::where('sur_id',$data['sur_id'])->where('website_id',$data['website_id'])->pluck('sur_id'); if(empty($survey)){ return Result::error("此调查问卷不存在",0); } // return Result::success($survey); // 调查问卷类型 0:单选 1:多选 $type = Article::where('survey_id',$data['sur_id'])->pluck('survey_type'); // return Result::success($type); if(empty($type) || ($type[0]!= 1 && $type[0]!= 0)){ return Result::error("此调查问卷不可投票",0); } // return Result::success($type[0]); if(isset($data['choice_id']) &&!empty($data['choice_id'])){ if($type[0] == 0){ if(is_array($data['choice_id'])){ return Result::error("请选择一个选项!",0); } $data['choice_id'] = [$data['choice_id']]; }else{ if(!is_array($data['choice_id'])){ return Result::error("请传递数组!",0); } } // return Result::success($data['choice_id']); $other = ArticleSurvey::whereIn('id',$data['choice_id']) ->where('website_id',$data['website_id']) ->where('is_other',1) ->where('other_id',0) ->first(); if(!empty($other)){ return Result::error("请选择已有的选项!",0); } $choice['other'] = ArticleSurvey::whereIn('id',$data['choice_id']) ->where('website_id',$data['website_id']) ->where('is_other',1) ->where('other_id','!=',0) ->first(); // return Result::success($data); if(!empty($choice['other'])){ array_push($data['choice_id'],$choice['other']['other_id']); // return Result::success($data['choice_id']); } // return Result::success($data); $choice = ArticleSurvey::whereIn('id',$data['choice_id']) ->where('website_id',$data['website_id']) ->increment('results', 1); if(empty($choice)){ return Result::error("请选择已有的选项!",0); } return Result::success($choice); } return Result::error("参数必填!"); // if(isset($data['choice_id']) && !empty($data['choice_id'])){ // $choice = ArticleSurvey::whereIn('id',$data['choice_id'])->where('website_id',$data['website_id'])->where('is_other',1)->where('other_id',0)->first(); // } } return Result::error("此调查问卷不存在",0); } return Result::error("参数必填!"); } /** * 后端-获取网站调查问卷列表 * @param array $data * @return array */ public function getSurveyList(array $data): array { $where = []; if(isset($data['survey_name']) &&!empty($data['survey_name'])){ array_push($where,['survey_name','like','%'.$data['survey_name'].'%']); } if(isset($data['survey_type']) && $data['survey_type'] != null){ array_push($where,['survey_type','=',$data['survey_type']]); } if(isset($data['is_survey']) && $data['is_survey'] != null){ array_push($where,['is_survey','=',$data['is_survey']]); } // return Result::success($where); if(!empty($where)){ $query = Article::where($where)->whereNotNull('survey_name'); }else{ $query = Article::whereNotNull('survey_name'); } $count = $query->count(); $survey = $query->orderByDesc('id') ->limit($data['pageSize']) ->offset(($data['page']-1)*$data['pageSize']) ->get(); if(empty($survey->toArray())){ return Result::error("暂无调查问卷!",0); } $result = [ 'rows'=>$survey, 'count'=>$count ]; return Result::success($result); } /** * 后端-获取网站调查问卷详情 * @param array $data * @return array */ public function getSurveyInfo(array $data): array { if(isset($data['sur_id']) &&!empty($data['sur_id'])){ $where = [ 'sur_id'=>$data['sur_id']]; $choose = ArticleSurvey::where($where)->where('is_other',0) ->leftJoin('article','article_survey.art_id','article.id') ->select('article_survey.*','article.survey_type') ->get()->all(); if(empty($choose)){ return Result::error("此调查问卷不存在",0); } $resultsArray = array_column($choose, 'results'); $total = array_sum($resultsArray); $other = ArticleSurvey::where($where)->where('is_other',1)->where('other_id',0)->first(); $others = ArticleSurvey::where($where)->where('is_other',1)->where('other_id','!=',0)->orderByDesc('created_at')->get()->all(); // $total = 0; if(!empty($other)){ $total = $total + $other['results']; $other['choice_name'] = $other['choice_name'].'(其他)'; if(!empty($others)){ $other['hasChildren'] = true; // array_push($other,['hasChildren','=',true]); $other['children'] = $others; $other_choices = [$other->toArray()]; $mer_choice = array_merge($choose,$other_choices); $value_choice = array_values($mer_choice); } else{ // return Result::error('1111'); $other_choices = [$other->toArray()]; $other_choices = array_merge($choose,$other_choices); $value_choice = array_values($other_choices); // return Result::success($result); } }else{ $value_choice = $choose; } $result = [ 'choose'=>$value_choice, 'total'=>$total ]; } return Result::success($result); } }