|
@@ -4,13 +4,39 @@ namespace App\JsonRpc;
|
|
|
use App\Model\Article;
|
|
|
use App\Model\ArticleData;
|
|
|
use App\Model\Category;
|
|
|
+use App\Model\WebsiteCategory;
|
|
|
use Hyperf\DbConnection\Db;
|
|
|
use Hyperf\RpcServer\Annotation\RpcService;
|
|
|
use App\Tools\Result;
|
|
|
|
|
|
+
|
|
|
#[RpcService(name: "NewsService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
|
|
|
class NewsService implements NewsServiceInterface
|
|
|
{
|
|
|
+ /**
|
|
|
+ * @param array $data
|
|
|
+ * @return array|mixed
|
|
|
+ */
|
|
|
+ //*********getCategoryInfo********** */
|
|
|
+ public function getCategoryInfo(array $data): array
|
|
|
+ {
|
|
|
+ $where = [
|
|
|
+ ['name','like','%'.$data['keyWord'].'%'],
|
|
|
+ ['website_id','=',$data['website_id']],
|
|
|
+ ['pid','=',$data['pid']??0]
|
|
|
+ ];
|
|
|
+ $rep = Category::where($where)->limit($data['pageSize'])->orderBy("sort","asc")->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
|
|
@@ -107,10 +133,22 @@ class NewsService implements NewsServiceInterface
|
|
|
public function getArticleList(array $data): array
|
|
|
{
|
|
|
$where= [];
|
|
|
+
|
|
|
if(isset($data['keyWord'])){
|
|
|
$where[] = ['article.title','like','%'.$data['keyWord'].'%'];
|
|
|
$where[] = ['article.status','!=','5'];
|
|
|
}
|
|
|
+ if(isset($data['catid'])){
|
|
|
+ $where[] = ['article.catid',$data['catid']];
|
|
|
+ $where[] = ['article.status', '1'];
|
|
|
+ }elseif(isset($data['keyword'])){
|
|
|
+ $where[] = ['article.title','like','%'.$data['keyword'].'%'];
|
|
|
+ $where[] = ['article.status', '1'];
|
|
|
+ }else{
|
|
|
+ $where[] = ['article.catid',$data['catid']];
|
|
|
+ $where[] = ['article.title','like','%'.$data['keyword'].'%'];
|
|
|
+ $where[] = ['article.status', '1'];
|
|
|
+ }
|
|
|
$rep = Article::where($where)
|
|
|
->leftJoin('category','article.catid','category.id')
|
|
|
->leftJoin("article_data","article.id","article_data.article_id")
|
|
@@ -218,4 +256,91 @@ class NewsService implements NewsServiceInterface
|
|
|
return Result::error("查询失败",0);
|
|
|
}
|
|
|
}
|
|
|
+ /**
|
|
|
+ * @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("created_at","desc")->offset($placeid)->limit($data['pageSize'])->get();
|
|
|
+ }else{
|
|
|
+ $result=Article::where('status',1)->where('level',$data['level'])->whereIn("catid",$category_ids)->orderBy("created_at","desc")->offset(0)->limit($data['pageSize'])->get();
|
|
|
+ }
|
|
|
+ if(empty($result)){
|
|
|
+ return Result::error("暂无头条新闻",0);
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * @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'
|
|
|
+ ];
|
|
|
+ $result = Article::where($where)->whereIn('level',$level)->orderBy("created_at","desc")->limit($data['pagesize'])->get();
|
|
|
+ }elseif($data['level']==2){
|
|
|
+ $level='2';
|
|
|
+ $result = Article::where($where)->where('level',$level)->orderBy("created_at","desc")->limit($data['pagesize'])->get();
|
|
|
+
|
|
|
+ }else{
|
|
|
+ $level='3';
|
|
|
+ $result = Article::where($where)->where('level',$level)->orderBy("created_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("created_at","desc")
|
|
|
+ ->offset($placeid)
|
|
|
+ ->limit($data['pagesize'])->get();
|
|
|
+ }else{
|
|
|
+ $result = Article::where($where)
|
|
|
+ ->whereIn('level',$level)
|
|
|
+ ->offset($placeid)
|
|
|
+ ->orderBy("created_at","desc")
|
|
|
+ ->limit($data['pagesize'])->get();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(empty($result)){
|
|
|
+ return Result::error("此栏目暂无相关新闻",0);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ return Result::error("此网站暂无此栏目",0);
|
|
|
+
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|