NewsService.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374
  1. <?php
  2. namespace App\JsonRpc;
  3. use App\Model\Article;
  4. use App\Model\ArticleData;
  5. use App\Model\Category;
  6. use App\Model\WebsiteCategory;
  7. use Hyperf\DbConnection\Db;
  8. use Hyperf\RpcServer\Annotation\RpcService;
  9. use App\Tools\Result;
  10. #[RpcService(name: "NewsService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
  11. class NewsService implements NewsServiceInterface
  12. {
  13. /**
  14. * 获取导航池列表
  15. * @param array $data
  16. * @return array
  17. */
  18. public function getCategoryList(array $data): array
  19. {
  20. $where = [];
  21. if(isset($data['name']) && $data['name']){
  22. array_push($where, ['category.name','like','%'.$data['name'].'%']);
  23. }
  24. if(isset($data['department_id']) && $data['department_id']){
  25. array_push($where, ['category.department_id','=',$data['department_id']]);
  26. }
  27. if(isset($data['city_id']) && $data['city_id']){
  28. array_push($where, ['category.city_id','=',$data['city_id']]);
  29. }
  30. $rep = Category::where($where)
  31. ->leftJoin('district','category.city_id','district.id')
  32. ->leftJoin('department','category.department_id','department.id')
  33. ->select("category.*","district.name as city_name","department.name as department_name")
  34. ->limit($data['pageSize'])->orderBy("category.sort","desc")->offset(($data['page']-1)*$data['pageSize'])->get();
  35. $count = Category::where($where)->count();
  36. $data = [
  37. 'rows'=>$rep->toArray(),
  38. 'count'=>$count
  39. ];
  40. if(empty($rep->toArray())){
  41. return Result::error("没有导航池数据");
  42. }
  43. return Result::success($data);
  44. }
  45. /**
  46. * @param array $data
  47. * @return array
  48. */
  49. public function categoryList(array $data): array
  50. {
  51. $where[] = [
  52. 'pid','=',$data['pid']
  53. ];
  54. if(isset($data['name'])){
  55. array_push($where, ['category.name','like','%'.$data['name'].'%']);
  56. }
  57. var_dump($where);
  58. $result = Category::where($where)->get();
  59. if(empty($result)){
  60. return Result::error("没有栏目数据");
  61. }
  62. return Result::success($result);
  63. }
  64. /**
  65. * @param array $data
  66. * @return array
  67. */
  68. public function addCategory(array $data): array
  69. {
  70. $id = Category::insertGetId($data);
  71. if(empty($id)){
  72. return Result::error("添加失败");
  73. }
  74. return Result::success(['id'=>$id]);
  75. }
  76. /**
  77. * @param array $data
  78. * @return array
  79. */
  80. public function delCategory(array $data): array
  81. {
  82. $categoryList = Category::where(['pid'=>$data['id']])->get();
  83. var_dump("分类列表:",$data,$categoryList);
  84. if($categoryList->toArray()){
  85. return Result::error("分类下面有子分类不能删除");
  86. }
  87. $articleList = Article::where(['catid'=>$data['id']])->get();
  88. var_dump("文章列表:",$articleList);
  89. if($articleList->toArray()){
  90. return Result::error("分类下面有资讯不能删除");
  91. }
  92. $result = Category::where($data)->delete();
  93. if(!$result){
  94. return Result::error("删除失败");
  95. }
  96. return Result::success($result);
  97. }
  98. /**
  99. * @param array $data
  100. * @return array
  101. */
  102. public function updateCategory(array $data): array
  103. {
  104. $where = [
  105. 'id'=>$data['id']
  106. ];
  107. $result = Category::where($where)->update($data);
  108. if($result){
  109. return Result::success($result);
  110. }else{
  111. return Result::error("更新失败");
  112. }
  113. }
  114. /**
  115. * 获取导航池信息
  116. * @param array $data
  117. * @return array
  118. */
  119. public function getCategoryInfo(array $data): array
  120. {
  121. $where = [
  122. 'id'=>$data['id']
  123. ];
  124. $result = Category::where($where)->first();
  125. if($result){
  126. return Result::success($result);
  127. }else{
  128. return Result::error("更新失败");
  129. }
  130. }
  131. /**
  132. * @param array $data
  133. * @return array
  134. */
  135. public function getArticleList(array $data): array
  136. {
  137. $where= [];
  138. if(isset($data['title']) && $data['title']){
  139. array_push($where,['article.title','like','%'.$data['title'].'%']);
  140. }
  141. if(isset($data['category_name']) && $data['category_name']){
  142. array_push($where,['category.name','=',$data['category_name']]);
  143. }
  144. if(isset($data['author']) && $data['author']){
  145. array_push($where,['article.author','=',$data['author']]);
  146. }
  147. if(isset($data['islink']) && $data['islink']){
  148. array_push($where,['article.islink','=',$data['islink']]);
  149. }
  150. if(isset($data['status']) && $data['status']){
  151. array_push($where,['article.status','=',$data['status']]);
  152. }
  153. $rep = Article::where($where)
  154. ->whereNotIn('article.status',[404])
  155. ->leftJoin('category','article.catid','category.id')
  156. ->select("article.*","category.name as category_name")
  157. ->orderBy("article.id","desc")
  158. ->limit($data['pageSize'])
  159. ->offset(($data['page']-1)*$data['pageSize'])->get();
  160. $count = Article::where($where)->count();
  161. $data = [
  162. 'rows'=>$rep->toArray(),
  163. 'count'=>$count
  164. ];
  165. if(empty($rep)){
  166. return Result::error("没有信息数据");
  167. }
  168. return Result::success($data);
  169. }
  170. /**
  171. * @param array $data
  172. * @return array
  173. */
  174. public function addArticle(array $data): array
  175. {
  176. Db::beginTransaction();
  177. try{
  178. $articleData = $data;
  179. unset($articleData['content']);
  180. $id = Article::insertGetId($articleData);
  181. $articleDataContent = [
  182. 'article_id'=>$id,
  183. 'content'=>$data['content']
  184. ];
  185. ArticleData::insertGetId($articleDataContent);
  186. Db::commit();
  187. } catch(\Throwable $ex){
  188. Db::rollBack();
  189. var_dump($ex->getMessage());
  190. return Result::error("创建失败",0);
  191. }
  192. return Result::success(['id'=>$id]);
  193. }
  194. /**
  195. * @param array $data
  196. * @return array
  197. */
  198. public function delArticle(array $data): array
  199. {
  200. $result = Article::where($data)->update(['status'=>404]);
  201. if(!$result){
  202. return Result::error("删除失败");
  203. }
  204. return Result::success($result);
  205. }
  206. /**
  207. * @param array $data
  208. * @return array
  209. */
  210. public function updateArticle(array $data): array
  211. {
  212. Db::beginTransaction();
  213. try{
  214. $data['cat_arr_id'] = isset($data['cat_arr_id'])?json_encode($data['cat_arr_id']):'';
  215. $data['tag'] = isset($data['tag'])?json_encode($data['tag']):'';
  216. $articleData = $data;
  217. unset($articleData['content']);
  218. unset($articleData['status_name']);
  219. unset($articleData['name']);
  220. unset($articleData['content']);
  221. unset($articleData['pid_arr']);
  222. unset($articleData['pid']);
  223. $id = Article::where(['id'=>$data['id']])->update($articleData);
  224. $articleDataContent = [
  225. 'content'=>$data['content']
  226. ];
  227. ArticleData::where(['article_id'=>$data['id']])->update($articleDataContent);
  228. } catch(\Throwable $ex){
  229. Db::rollBack();
  230. var_dump($ex->getMessage());
  231. return Result::error("更新失败",0);
  232. }
  233. return Result::success([]);
  234. }
  235. /**
  236. * 更新资讯状态
  237. * @param array $data
  238. * @return array
  239. */
  240. public function upArticleStatus(array $data):array
  241. {
  242. $result = Article::where(['id'=>$data['id']])->update($data);
  243. if($result){
  244. return Result::success();
  245. }else{
  246. return Result::error("更新状态失败",0);
  247. }
  248. }
  249. /**
  250. * @param array $data
  251. * @return array
  252. */
  253. public function getArticleInfo(array $data): array
  254. {
  255. $where = [
  256. 'article.id'=>$data['id']
  257. ];
  258. $result = Article::where($where)->leftJoin("article_data","article.id","article_data.article_id")->first();
  259. if($result){
  260. return Result::success($result->toArray());
  261. }else{
  262. return Result::error("查询失败",0);
  263. }
  264. }
  265. /**
  266. * 获取新闻
  267. * @param array $data
  268. * @return array
  269. */
  270. public function getWebsiteArticlett(array $data): array
  271. {
  272. $category = WebsiteCategory::where('website_id',$data['website_id'])->select('category_id')->get();
  273. $category = $category->toArray();
  274. $result= [];
  275. if($category){
  276. $category_ids = [];
  277. foreach($category as $val){
  278. array_push($category_ids,$val['category_id']);
  279. }
  280. if(isset($data['placeid'])){
  281. $placeid=$data['placeid']-1;
  282. $result=Article::where('status',1)->where('level',$data['level'])->whereIn("catid",$category_ids)->orderBy("created_at","desc")->offset($placeid)->limit($data['pageSize'])->get();
  283. }else{
  284. $result=Article::where('status',1)->where('level',$data['level'])->whereIn("catid",$category_ids)->orderBy("created_at","desc")->offset(0)->limit($data['pageSize'])->get();
  285. }
  286. if(empty($result)){
  287. return Result::error("暂无头条新闻",0);
  288. }
  289. return Result::success($result);
  290. }else{
  291. return Result::error("本网站下暂无相关栏目",0);
  292. }
  293. }
  294. /**
  295. * 获取模块新闻
  296. * @param array $data
  297. * @return array
  298. */
  299. public function getWebsiteModelArticles(array $data): array
  300. {
  301. $catid=$data['catid'];
  302. $category = WebsiteCategory::where('website_id',$data['website_id'])->where('category_id',$catid)->select('category_id')->get();
  303. $category = $category->toArray();
  304. if(!empty($category)){
  305. $where=[
  306. 'status' => 1,
  307. 'catid' => $catid
  308. ];
  309. if($data['level']==1){
  310. $level=[
  311. 0=>'1',
  312. 1=>'4',
  313. 2=>'5'
  314. ];
  315. $result = Article::where($where)->whereIn('level',$level)->orderBy("created_at","desc")->limit($data['pagesize'])->get();
  316. }elseif($data['level']==2){
  317. $level='2';
  318. $result = Article::where($where)->where('level',$level)->orderBy("created_at","desc")->limit($data['pagesize'])->get();
  319. }else{
  320. $level='3';
  321. $result = Article::where($where)->where('level',$level)->orderBy("created_at","desc")->limit($data['pagesize'])->get();
  322. }
  323. $result= $result->toArray();
  324. if(!empty($result) && isset($data['placeid']) && !empty($data['placeid'])){
  325. $placeid=$data['placeid']-1;
  326. if($level==2 || $level==3){
  327. $where =[
  328. 'level' => $level
  329. ];
  330. $result = Article::where($where)
  331. ->orderBy("created_at","desc")
  332. ->offset($placeid)
  333. ->limit($data['pagesize'])->get();
  334. }else{
  335. $result = Article::where($where)
  336. ->whereIn('level',$level)
  337. ->offset($placeid)
  338. ->orderBy("created_at","desc")
  339. ->limit($data['pagesize'])->get();
  340. }
  341. }
  342. if(empty($result)){
  343. return Result::error("此栏目暂无相关新闻",0);
  344. }
  345. }else{
  346. return Result::error("此网站暂无此栏目",0);
  347. }
  348. return Result::success($result);
  349. }
  350. }