FooterService.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <?php
  2. namespace App\JsonRpc;
  3. use App\Model\FooterCategory;
  4. use App\Model\Website;
  5. use App\Model\FooterContent;
  6. use App\Model\Web;
  7. use Hyperf\RpcServer\Annotation\RpcService;
  8. use App\Tools\Result;
  9. use Hyperf\DbConnection\Db;
  10. #[RpcService(name: "FooterService", protocol: "jsonrpc-http", server: "jsonrpc-http")]
  11. class FooterService implements FooterServiceInterface
  12. {
  13. /**
  14. * 获取底部导航
  15. * @param array $data
  16. * @return array
  17. */
  18. public function getFooterCategory(array $data): array
  19. {
  20. $where = [];
  21. if(isset($data['website_name'])){
  22. array_push($where, ['website.website_name','like','%'.$data['website_name'].'%']);
  23. }
  24. if(isset($data['name'])){
  25. array_push($where, ['footer_category.name','like','%'.$data['name'].'%']);
  26. }
  27. $query = FooterCategory::query();
  28. if (!empty($where)) {
  29. $query->where($where);
  30. }
  31. $count = $query->count();
  32. $rep = $query->leftJoin("website", "website.id", "footer_category.website_id")
  33. ->select("footer_category.*", "website.website_name", "website.id as website_id")
  34. ->offset(($data['page'] - 1) * $data['pageSize'])
  35. ->limit($data['pageSize'])
  36. ->orderByDesc("updated_at")
  37. ->get();
  38. // var_dump($where);
  39. $result = [];
  40. $result = [
  41. 'rows'=>$rep,
  42. 'count'=>$count
  43. ];
  44. if(empty($result)){
  45. return Result::error("没有查到相关数据!");
  46. }
  47. return Result::success($result);
  48. }
  49. /**
  50. * 添加底部导航
  51. * @param array $data
  52. * @return array
  53. */
  54. public function addFooterCategory(array $data): array
  55. {
  56. if(empty($data)){
  57. $result = Website::select('website_name','id')->get();
  58. }else{
  59. // 底部导航类型 0:内容型;1:列表型;
  60. $webid = Website::select('website_name','id')->where('id',$data['website_id'])->first();
  61. if(empty($webid)){
  62. return Result::error("该网站不存在!");
  63. }
  64. // 同一网站下的底部导航名称不能重复
  65. $name = FooterCategory::where('website_id',$data['website_id'])->where('name',$data['name'])->first();
  66. if(!empty($name)){
  67. return Result::error("该底部导航名称已存在!");
  68. }
  69. $result = FooterCategory::insertGetId($data);
  70. }
  71. if(empty($result)){
  72. return Result::error("添加失败!");
  73. }else{
  74. return Result::success($result);
  75. }
  76. }
  77. /**
  78. * 修改底部导航
  79. * @param array $data
  80. * @return array
  81. */
  82. public function upFooterCategory(array $data): array
  83. {
  84. $footer_category = FooterCategory::where('id', $data['id'])->first();
  85. if(empty($footer_category)) {
  86. return Result::error("该底部导航不存在!");
  87. }
  88. if(empty($data['website_id'])){
  89. $web = Website::select('website_name','id')->get();
  90. $footer_category = FooterCategory::where('footer_category.id',$data['id'])
  91. ->leftJoin("website","website.id","footer_category.website_id")
  92. ->select("footer_category.*","website.website_name","website.id as website_id")
  93. ->first();
  94. if(isset($data['name'])){
  95. $footer_category['name'] = $data['name'];
  96. }
  97. $result = [
  98. 'rows'=>$footer_category,
  99. 'web'=>$web
  100. ];
  101. }else{
  102. $all_categories = FooterCategory::where('website_id',$data['website_id'])->where('id','!=',$data['id'])->pluck('name')->toArray();
  103. // 检查修改后的数据是否与已有数据重复
  104. if (in_array($data['name'], $all_categories)) {
  105. return Result::error("修改后的底部导航名称已存在!");
  106. }
  107. $webid = Website::where('id',$data['website_id'])->first();
  108. if(empty($webid)){
  109. return Result::error("该网站不存在!");
  110. }
  111. $result = FooterCategory::where('id', $data['id'])->update($data);
  112. }
  113. if (empty($result)) {
  114. return Result::error("修改失败!");
  115. }else{
  116. return Result::success($result);
  117. }
  118. }
  119. /**
  120. * 删除底部导航
  121. * @param array $data
  122. * @return array
  123. */
  124. public function delFooterCategory(array $data): array
  125. {
  126. Db::beginTransaction();
  127. try{
  128. $footer_category = FooterCategory::where('id', $data['id'])->first();
  129. if (!$footer_category) {
  130. return Result::error("该底部导航不存在!");
  131. }else{
  132. $result['footer_category'] = FooterCategory::where('id', $data['id'])->delete();
  133. $result['footer_content'] = FooterContent::where('fcat_id', $data['id'])->delete();
  134. // $result = FooterCategory::where('footer_category.id',$data['id'])
  135. // ->leftJoin("footer_content","footer_content.fcat_id","footer_category.id")
  136. // ->delete();
  137. }
  138. Db::commit();
  139. } catch(\Throwable $ex){
  140. Db::rollBack();
  141. var_dump($ex->getMessage());
  142. return Result::error("删除失败",0);
  143. }
  144. return Result::success($result);
  145. }
  146. /**
  147. * 添加底部导航(列表)内容
  148. * @param array $data
  149. * @return array
  150. */
  151. public function addFooterContent(array $data): array
  152. {
  153. // 底部导航类型 0:内容型;1:列表型;
  154. // var_dump($data);
  155. $cat = FooterCategory::where('id', $data['fcat_id'])->first();
  156. if (!$cat) {
  157. return Result::error("该底部导航不存在!");
  158. }
  159. if($cat['type'] != $data['type']){
  160. return Result::error("请输入正确的底部导航类型!");
  161. }
  162. if($cat['type'] == 0){
  163. $content = FooterContent::where('fcat_id', $data['fcat_id'])->first();
  164. if(!empty($content)){
  165. return Result::error("该底部导航已添加内容!");
  166. }
  167. }else{
  168. // return Result::success($data);
  169. if(!isset($data['list_title']) || empty($data['list_title'])){
  170. return Result::error("请输入底部导航列表标题!");
  171. }
  172. $content = FooterContent::where('fcat_id', $data['fcat_id'])->where('list_title',$data['list_title'])->first();
  173. if(!empty($content)){
  174. return Result::error("该列表标题已存在!");
  175. }
  176. }
  177. unset($data['type']);
  178. $result = FooterContent::insertGetId($data);
  179. if(empty($result)){
  180. return Result::error("添加失败!");
  181. }else{
  182. return Result::success($result);
  183. }
  184. }
  185. /**
  186. * 获取底部导航(列表)内容
  187. * @param array $data
  188. * @return array
  189. */
  190. public function getFooterContent(array $data): array
  191. {
  192. $where = [];
  193. array_push($where, ['fcat_id',$data['fcat_id']]);
  194. $type = FooterCategory::where('id', $data['fcat_id'])->value('type');
  195. if($type == 1){
  196. if(isset($data['list_title'])){
  197. array_push($where, ['list_title','like','%'.$data['list_title'].'%']);
  198. }
  199. if(isset($data['con_title'])){
  200. array_push($where, ['con_title','like','%'.$data['con_title'].'%']);
  201. }
  202. }
  203. $count = FooterContent::where($where)->count();
  204. $rep = FooterContent::where($where)
  205. ->leftJoin('footer_category','footer_category.id','fcat_id')
  206. ->select('footer_content.*','footer_category.type')
  207. ->limit($data['pageSize'])
  208. ->offset(($data['page']-1)*$data['pageSize'])
  209. ->orderBy("updated_at","desc")
  210. ->get();
  211. if(empty($rep)){
  212. return Result::error("没有查到相关数据!");
  213. }else{
  214. $result = [
  215. 'rows'=>$rep,
  216. 'count'=>$count
  217. ];
  218. return Result::success($result);
  219. }
  220. }
  221. /**
  222. * 获取某个底部导航(列表)内容
  223. * @param array $data
  224. * @return array
  225. */
  226. public function getOneFooterContent(array $data): array
  227. {
  228. $result = FooterContent::where('footer_content.id', $data['id'])
  229. ->leftJoin('footer_category','footer_category.id','fcat_id')
  230. ->select('footer_content.*','footer_category.type')
  231. ->first();
  232. if(empty($result)){
  233. return Result::error("请输入正确的底部导航内容id!");
  234. }else{
  235. return Result::success($result);
  236. }
  237. }
  238. /**
  239. * 编辑底部导航(列表)内容
  240. * @param array $data
  241. * @return array
  242. */
  243. public function upFooterContent(array $data): array
  244. {
  245. $content = FooterContent::where('footer_content.id', $data['id'])
  246. ->leftJoin('footer_category','footer_category.id','fcat_id')
  247. ->select('footer_content.*','footer_category.type','footer_category.id as fcat_id')
  248. ->first();
  249. if(!$content){
  250. return Result::error("该底部导航内容不存在!");
  251. }
  252. if($content['type'] != $data['type']){
  253. return Result::error("请输入正确的底部导航类型!");
  254. }
  255. if($content['type'] == 1){
  256. if(!isset($data['list_title']) || empty($data['list_title'])){
  257. return Result::error("请输入底部导航列表标题!");
  258. }
  259. $list_title = FooterContent::where('fcat_id', $data['fcat_id'])->where('list_title',$data['list_title'])->first();
  260. if(!empty($list_title)){
  261. return Result::error("该列表标题已存在!");
  262. }
  263. }
  264. unset($data['type']);
  265. $result = FooterContent::where('id', $data['id'])->update($data);
  266. if(empty($result)){
  267. return Result::error("修改失败!");
  268. }else{
  269. return Result::success($result);
  270. }
  271. }
  272. /**
  273. * 删除底部导航(列表)内容
  274. * @param array $data
  275. * @return array
  276. */
  277. public function delFooterContent(array $data): array
  278. {
  279. $result = FooterContent::where('id', $data['id'])->delete($data);
  280. if(empty($result)){
  281. return Result::error("删除失败!");
  282. }else{
  283. return Result::success($result);
  284. }
  285. }
  286. }