NewsService.php 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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. * 获取导航池列表
  14. * @param array $data
  15. * @return array
  16. */
  17. public function getCategoryList(array $data): array
  18. {
  19. $where = [];
  20. if(isset($data['name']) && $data['name']){
  21. array_push($where, ['category.name','like','%'.$data['name'].'%']);
  22. }
  23. if(isset($data['department_id']) && $data['department_id']){
  24. array_push($where, ['category.department_id','=',$data['department_id']]);
  25. }
  26. if(isset($data['city_id']) && $data['city_id']){
  27. array_push($where, ['category.city_id','=',$data['city_id']]);
  28. }
  29. $rep = Category::where($where)
  30. ->leftJoin('district','category.city_id','district.id')
  31. ->leftJoin('department','category.department_id','department.id')
  32. ->select("category.*","district.name as city_name","department.name as department_name")
  33. ->limit($data['pageSize'])->orderBy("category.sort","desc")->offset(($data['page']-1)*$data['pageSize'])->get();
  34. $count = Category::where($where)->count();
  35. $data = [
  36. 'rows'=>$rep->toArray(),
  37. 'count'=>$count
  38. ];
  39. if(empty($rep->toArray())){
  40. return Result::error("没有导航池数据");
  41. }
  42. return Result::success($data);
  43. }
  44. /**
  45. * @param array $data
  46. * @return array
  47. */
  48. public function categoryList(array $data): array
  49. {
  50. $where[] = [
  51. 'pid','=',$data['pid']
  52. ];
  53. if(isset($data['name'])){
  54. array_push($where, ['category.name','like','%'.$data['name'].'%']);
  55. }
  56. var_dump($where);
  57. $result = Category::where($where)->get();
  58. if(empty($result)){
  59. return Result::error("没有栏目数据");
  60. }
  61. return Result::success($result);
  62. }
  63. /**
  64. * @param array $data
  65. * @return array
  66. */
  67. public function addCategory(array $data): array
  68. {
  69. $id = Category::insertGetId($data);
  70. if(empty($id)){
  71. return Result::error("添加失败");
  72. }
  73. return Result::success(['id'=>$id]);
  74. }
  75. /**
  76. * @param array $data
  77. * @return array
  78. */
  79. public function delCategory(array $data): array
  80. {
  81. $categoryList = Category::where(['pid'=>$data['id']])->get();
  82. var_dump("分类列表:",$data,$categoryList);
  83. if($categoryList->toArray()){
  84. return Result::error("分类下面有子分类不能删除");
  85. }
  86. $articleList = Article::where(['catid'=>$data['id']])->get();
  87. var_dump("文章列表:",$articleList);
  88. if($articleList->toArray()){
  89. return Result::error("分类下面有资讯不能删除");
  90. }
  91. $result = Category::where($data)->delete();
  92. if(!$result){
  93. return Result::error("删除失败");
  94. }
  95. return Result::success($result);
  96. }
  97. /**
  98. * @param array $data
  99. * @return array
  100. */
  101. public function updateCategory(array $data): array
  102. {
  103. $where = [
  104. 'id'=>$data['id']
  105. ];
  106. $result = Category::where($where)->update($data);
  107. if($result){
  108. return Result::success($result);
  109. }else{
  110. return Result::error("更新失败");
  111. }
  112. }
  113. /**
  114. * 获取导航池信息
  115. * @param array $data
  116. * @return array
  117. */
  118. public function getCategoryInfo(array $data): array
  119. {
  120. $where = [
  121. 'id'=>$data['id']
  122. ];
  123. $result = Category::where($where)->first();
  124. if($result){
  125. return Result::success($result);
  126. }else{
  127. return Result::error("更新失败");
  128. }
  129. }
  130. /**
  131. * @param array $data
  132. * @return array
  133. */
  134. public function getArticleList(array $data): array
  135. {
  136. $where= [];
  137. if(isset($data['title']) && $data['title']){
  138. array_push($where,['article.title','like','%'.$data['title'].'%']);
  139. }
  140. if(isset($data['category_name']) && $data['category_name']){
  141. array_push($where,['category.name','like','%'.$data['category_name'].'%']);
  142. }
  143. if(isset($data['author']) && $data['author']){
  144. array_push($where,['article.author','=',$data['author']]);
  145. }
  146. if(isset($data['islink']) && $data['islink']!==""){
  147. array_push($where,['article.islink','=',$data['islink']]);
  148. }
  149. if(isset($data['status']) && $data['status']!==""){
  150. array_push($where,['article.status','=',$data['status']]);
  151. }
  152. $rep = Article::where($where)
  153. ->whereNotIn('article.status',[404])
  154. ->leftJoin('category','article.catid','category.id')
  155. ->select("article.*","category.name as category_name")
  156. ->orderBy("article.id","desc")
  157. ->limit($data['pageSize'])
  158. ->offset(($data['page']-1)*$data['pageSize'])->get();
  159. $count = Article::where($where)->whereNotIn('article.status',[404])
  160. ->leftJoin('category','article.catid','category.id')->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. }