NewsService.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  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. $where= [];
  103. if(isset($data['keyWord'])){
  104. $where[] = ['article.title','like','%'.$data['keyWord'].'%'];
  105. $where[] = ['article.status','!=','5'];
  106. }
  107. $rep = Article::where($where)
  108. ->leftJoin('category','article.catid','category.id')
  109. ->leftJoin("article_data","article.id","article_data.article_id")
  110. ->select("article.*","category.name","article_data.content")
  111. ->orderBy("article.id","desc")
  112. ->limit($data['pageSize'])
  113. ->offset(($data['page']-1)*$data['pageSize'])->get();
  114. $count = Article::where($where)->count();
  115. $data = [
  116. 'rows'=>$rep->toArray(),
  117. 'count'=>$count
  118. ];
  119. if(empty($rep)){
  120. return Result::error("没有信息数据");
  121. }
  122. return Result::success($data);
  123. }
  124. /**
  125. * @param array $data
  126. * @return array
  127. */
  128. public function addArticle(array $data): array
  129. {
  130. Db::beginTransaction();
  131. try{
  132. $data['cat_arr_id'] = isset($data['cat_arr_id'])?json_encode($data['cat_arr_id']):'';
  133. $data['tag'] = isset($data['tag'])?json_encode($data['tag']):'';
  134. $articleData = $data;
  135. unset($articleData['content']);
  136. $id = Article::insertGetId($articleData);
  137. $articleDataContent = [
  138. 'article_id'=>$id,
  139. 'content'=>$data['content']
  140. ];
  141. ArticleData::insertGetId($articleDataContent);
  142. Db::commit();
  143. } catch(\Throwable $ex){
  144. Db::rollBack();
  145. var_dump($ex->getMessage());
  146. return Result::error("创建失败",0);
  147. }
  148. return Result::success(['id'=>$id]);
  149. }
  150. /**
  151. * @param array $data
  152. * @return array
  153. */
  154. public function delArticle(array $data): array
  155. {
  156. $result = Article::where($data)->update(['status'=>5]);
  157. if(!$result){
  158. return Result::error("删除失败");
  159. }
  160. return Result::success($result);
  161. }
  162. /**
  163. * @param array $data
  164. * @return array
  165. */
  166. public function updateArticle(array $data): array
  167. {
  168. Db::beginTransaction();
  169. try{
  170. $data['cat_arr_id'] = isset($data['cat_arr_id'])?json_encode($data['cat_arr_id']):'';
  171. $data['tag'] = isset($data['tag'])?json_encode($data['tag']):'';
  172. $articleData = $data;
  173. unset($articleData['content']);
  174. unset($articleData['status_name']);
  175. unset($articleData['name']);
  176. unset($articleData['content']);
  177. unset($articleData['pid_arr']);
  178. unset($articleData['pid']);
  179. $id = Article::where(['id'=>$data['id']])->update($articleData);
  180. $articleDataContent = [
  181. 'content'=>$data['content']
  182. ];
  183. ArticleData::where(['article_id'=>$data['id']])->update($articleDataContent);
  184. } catch(\Throwable $ex){
  185. Db::rollBack();
  186. var_dump($ex->getMessage());
  187. return Result::error("更新失败",0);
  188. }
  189. return Result::success([]);
  190. }
  191. /**
  192. * @param array $data
  193. * @return array
  194. */
  195. public function getArticleInfo(array $data): array
  196. {
  197. $where = [
  198. 'article.id'=>$data['id']
  199. ];
  200. $result = Article::where($where)->leftJoin("article_data","article.id","article_data.article_id")->first();
  201. if($result){
  202. return Result::success($result->toArray());
  203. }else{
  204. return Result::error("查询失败",0);
  205. }
  206. }
  207. }