NewsService.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. <?php
  2. namespace App\JsonRpc;
  3. use App\Model\Article;
  4. use App\Model\ArticleData;
  5. use App\Model\Category;
  6. use Hyperf\DbConnection\Db;
  7. use Hyperf\RpcServer\Annotation\RpcService;
  8. use App\Tools\Result;
  9. #[RpcService(name: "NewsService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
  10. class NewsService implements NewsServiceInterface
  11. {
  12. /**
  13. * @param array $data
  14. * @return array
  15. */
  16. public function getCategoryList(array $data): array
  17. {
  18. $where = [
  19. ['name','like','%'.$data['keyWord'].'%'],
  20. ['website_id','=',$data['website_id']],
  21. ['pid','=',$data['pid']??0]
  22. ];
  23. $rep = Category::where($where)->limit($data['pageSize'])->orderBy("sort","asc")->offset(($data['page']-1)*$data['pageSize'])->get();
  24. $count = Category::where($where)->count();
  25. $data = [
  26. 'rows'=>$rep->toArray(),
  27. 'count'=>$count
  28. ];
  29. if(empty($rep->toArray())){
  30. return Result::error("没有栏目数据");
  31. }
  32. return Result::success($data);
  33. }
  34. /**
  35. * @param array $data
  36. * @return array
  37. */
  38. public function categoryList(array $data): array
  39. {
  40. $result = Category::where($data)->get();
  41. if(empty($result)){
  42. return Result::error("没有栏目数据");
  43. }
  44. return Result::success($result);
  45. }
  46. /**
  47. * @param array $data
  48. * @return array
  49. */
  50. public function addCategory(array $data): array
  51. {
  52. $id = Category::insertGetId($data);
  53. if(empty($id)){
  54. return Result::error("添加失败");
  55. }
  56. return Result::success(['id'=>$id]);
  57. }
  58. /**
  59. * @param array $data
  60. * @return array
  61. */
  62. public function delCategory(array $data): array
  63. {
  64. $categoryList = Category::where(['pid'=>$data['id']])->get();
  65. var_dump("分类列表:",$data,$categoryList);
  66. if($categoryList->toArray()){
  67. return Result::error("分类下面有子分类不能删除");
  68. }
  69. $articleList = Article::where(['catid'=>$data['id']])->get();
  70. var_dump("文章列表:",$articleList);
  71. if($articleList->toArray()){
  72. return Result::error("分类下面有资讯不能删除");
  73. }
  74. $result = Category::where($data)->delete();
  75. if(!$result){
  76. return Result::error("删除失败");
  77. }
  78. return Result::success($result);
  79. }
  80. /**
  81. * @param array $data
  82. * @return array
  83. */
  84. public function updateCategory(array $data): array
  85. {
  86. $where = [
  87. 'id'=>$data['id']
  88. ];
  89. $result = Category::where($where)->update($data);
  90. if($result){
  91. return Result::success($result);
  92. }else{
  93. return Result::error("更新失败");
  94. }
  95. }
  96. /**
  97. * @param array $data
  98. * @return array
  99. */
  100. public function getArticleList(array $data): array
  101. {
  102. var_dump("资讯:",$data);
  103. $where= [];
  104. if(isset($data['keyWord'])){
  105. $where[] = ['article.title','like','%'.$data['keyWord'].'%'];
  106. $where[] = ['article.status','!=','5'];
  107. }
  108. $rep = Article::where($where)
  109. ->leftJoin('category','article.catid','category.id')
  110. ->leftJoin("article_data","article.id","article_data.article_id")
  111. ->select("article.*","category.name","article_data.content")
  112. ->orderBy("article.id","desc")
  113. ->limit($data['pageSize'])
  114. ->offset(($data['page']-1)*$data['pageSize'])->get();
  115. $count = Article::where($where)->count();
  116. $data = [
  117. 'rows'=>$rep->toArray(),
  118. 'count'=>$count
  119. ];
  120. if(empty($rep)){
  121. return Result::error("没有信息数据");
  122. }
  123. return Result::success($data);
  124. }
  125. /**
  126. * @param array $data
  127. * @return array
  128. */
  129. public function addArticle(array $data): array
  130. {
  131. Db::beginTransaction();
  132. try{
  133. $data['cat_arr_id'] = isset($data['cat_arr_id'])?json_encode($data['cat_arr_id']):'';
  134. $data['tag'] = isset($data['tag'])?json_encode($data['tag']):'';
  135. $articleData = $data;
  136. unset($articleData['content']);
  137. $id = Article::insertGetId($articleData);
  138. $articleDataContent = [
  139. 'article_id'=>$id,
  140. 'content'=>$data['content']
  141. ];
  142. ArticleData::insertGetId($articleDataContent);
  143. Db::commit();
  144. } catch(\Throwable $ex){
  145. Db::rollBack();
  146. var_dump($ex->getMessage());
  147. return Result::error("创建失败",0);
  148. }
  149. return Result::success(['id'=>$id]);
  150. }
  151. /**
  152. * @param array $data
  153. * @return array
  154. */
  155. public function delArticle(array $data): array
  156. {
  157. $result = Article::where($data)->update(['status'=>5]);
  158. if(!$result){
  159. return Result::error("删除失败");
  160. }
  161. return Result::success($result);
  162. }
  163. /**
  164. * @param array $data
  165. * @return array
  166. */
  167. public function updateArticle(array $data): array
  168. {
  169. Db::beginTransaction();
  170. try{
  171. $data['cat_arr_id'] = isset($data['cat_arr_id'])?json_encode($data['cat_arr_id']):'';
  172. $data['tag'] = isset($data['tag'])?json_encode($data['tag']):'';
  173. $articleData = $data;
  174. unset($articleData['content']);
  175. unset($articleData['status_name']);
  176. unset($articleData['name']);
  177. unset($articleData['content']);
  178. unset($articleData['pid_arr']);
  179. unset($articleData['pid']);
  180. $id = Article::where(['id'=>$data['id']])->update($articleData);
  181. $articleDataContent = [
  182. 'content'=>$data['content']
  183. ];
  184. ArticleData::where(['article_id'=>$data['id']])->update($articleDataContent);
  185. } catch(\Throwable $ex){
  186. Db::rollBack();
  187. var_dump($ex->getMessage());
  188. return Result::error("更新失败",0);
  189. }
  190. return Result::success([]);
  191. }
  192. /**
  193. * @param array $data
  194. * @return array
  195. */
  196. /**查询新闻 */
  197. public function getArticleInfo(array $data): array
  198. {
  199. $where = [
  200. 'article.id'=>$data['id']
  201. ];
  202. $result = Article::where($where)->leftJoin("article_data","article.id","article_data.article_id")->first();
  203. if($result){
  204. return Result::success($result->toArray());
  205. }else{
  206. return Result::error("查询失败",0);
  207. }
  208. }
  209. }