where($where); } $count = $query->count(); $rep = $query->leftJoin("website", "website.id", "footer_category.website_id") ->select("footer_category.*", "website.website_name", "website.id as website_id") ->offset(($data['page'] - 1) * $data['pageSize']) ->limit($data['pageSize']) ->orderByDesc("updated_at") ->get(); // var_dump($where); $result = []; $result = [ 'rows'=>$rep, 'count'=>$count ]; if(empty($result)){ return Result::error("没有查到相关数据!"); } return Result::success($result); } /** * 添加底部导航 * @param array $data * @return array */ public function addFooterCategory(array $data): array { if(empty($data)){ $result = Website::select('website_name','id')->get(); }else{ // 底部导航类型 0:内容型;1:列表型; $webid = Website::select('website_name','id')->where('id',$data['website_id'])->first(); if(empty($webid)){ return Result::error("该网站不存在!"); } $isChild = 0; if(isset($data['is_child']) && !empty($data['is_child']) && $data['is_child'] == 1){ $child = [ 'name' => $data['child_name'], 'website_id' => $data['website_id'], 'type' => 0, ]; $isChild = $data['is_child']; unset($data['child_name']); unset($data['is_child']); } // return Result::success($data); Db::beginTransaction(); try{ // 同一网站下的底部导航名称不能重复 $name = FooterCategory::where('website_id',$data['website_id'])->where('name',$data['name'])->first(); if(!empty($name)){ Db::rollBack(); return Result::error("该底部导航名称已存在!"); } $pinyin = new Pinyin(); $data['name_pinyin'] = $pinyin->permalink($data['name'], '') ; $result = []; $result['parent'] = FooterCategory::insertGetId($data); if($isChild == 1){ $child['pid'] = $result['parent']; $child['name_pinyin'] = $pinyin->permalink($child['name'], ''); // 暂时用不到 若是一个栏目对应多个子级栏目 则需要判断子级栏目名称是否重复 // $child_name = FooterCategory::where('website_id',$data['website_id'])->where('pid',$child['pid'])->first(); // if(!empty($child_name)){ // Db::rollBack(); // return Result::error("该子级栏目名称已存在!"); // } $result['child'] = FooterCategory::insertGetId($child); if(empty($result['child'])){ Db::rollBack(); return Result::error("子级栏目添加失败!"); } } Db::commit(); } catch(\Throwable $ex){ Db::rollBack(); $errorMessage = $ex->getMessage(); return Result::error("添加失败!",$errorMessage); } } return Result::success($result); } /** * 修改底部导航 * @param array $data * @return array */ public function upFooterCategory(array $data): array { $footer_category = FooterCategory::where('id', $data['id'])->first(); if(empty($footer_category)) { return Result::error("该底部导航不存在!"); } if(empty($data['website_id'])){ $web = Website::select('website_name','id')->get(); $footer_category = FooterCategory::where('footer_category.id',$data['id']) ->leftJoin("website","website.id","footer_category.website_id") ->select("footer_category.*","website.website_name","website.id as website_id") ->first(); $child = FooterCategory::where('pid',$footer_category['id'])->first(); if(!empty($child)){ $footer_category['child_name'] = $child['name']; $footer_category['is_child'] = 1; } $result = [ 'rows'=>$footer_category, 'web'=>$web ]; }else{ $all_categories = FooterCategory::where('website_id',$data['website_id'])->where('id','!=',$data['id'])->pluck('name')->toArray(); // 检查修改后的数据是否与已有数据重复 if (in_array($data['name'], $all_categories)) { return Result::error("修改后的底部导航名称已存在!"); } $webid = Website::where('id',$data['website_id'])->first(); if(empty($webid)){ return Result::error("该网站不存在!"); } $pinyin = new Pinyin(); $child_data = []; $result = []; Db::beginTransaction(); try{ if(isset($data['is_child']) && $data['is_child']!=''){ $child = FooterCategory::where('pid',$data['id'])->first(); if($data['is_child'] == 1){ if(empty($data['child_name'])){ Db::rollBack(); return Result::error("请输入子级栏目名称!"); var_dump($data['child_name']); } if(empty($child)){ $child_data = [ 'name' => $data['child_name'], 'name_pinyin' => $pinyin->permalink($data['child_name'], ''), 'website_id' => $data['website_id'], 'type' => 0, 'pid' => $data['id'], ]; $result['addchild'] = FooterCategory::insertGetId($child_data); if(empty($result['addchild'])){ Db::rollBack(); return Result::error("子级栏目添加失败!"); } }else{ $child_data = [ 'name' => $data['child_name'], 'name_pinyin' => $pinyin->permalink($data['child_name'], ''), ]; $result['upchild'] = FooterCategory::where('pid',$data['id'])->update($child_data); if(empty($result['upchild'])){ Db::rollBack(); return Result::error("子级栏目修改失败!"); } } }else{ if(!empty($child)){ $result['del_child_content'] = FooterContent::where('fcat_id',$child['id'])->delete(); $result['delchild'] = FooterCategory::where('pid',$data['id'])->delete(); if(empty($result['delchild'])) { Db::rollBack(); return Result::error("子级栏目删除失败!"); } } } unset($data['child_name']); unset($data['is_child']); $data['name_pinyin'] = $pinyin->permalink($data['name'], ''); $result['rows'] = FooterCategory::where('id', $data['id'])->update($data); if(empty($result['rows'])){ Db::rollBack(); return Result::error("栏目修改失败!"); } Db::commit(); }else{ return Result::error("请选择是否添加子级栏目!"); } } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("修改失败!",0); } } if (empty($result)) { return Result::error("修改失败!"); }else{ return Result::success($result); } } /** * 删除底部导航 * @param array $data * @return array */ public function delFooterCategory(array $data): array { Db::beginTransaction(); try{ $footer_category = FooterCategory::where('id', $data['id'])->first(); if (!$footer_category) { Db::rollBack(); return Result::error("该底部导航不存在!"); }else{ $result['footer_category'] = FooterCategory::where('id', $data['id'])->delete(); $result['footer_content'] = FooterContent::where('fcat_id', $data['id'])->delete(); $child = FooterCategory::where('pid', $data['id'])->first(); if(!empty($child)){ $result['child'] = FooterCategory::where('pid', $data['id'])->delete(); $result['child_content'] = FooterContent::where('fcat_id', $child['id'])->delete(); } Db::commit(); } } catch(\Throwable $ex){ Db::rollBack(); var_dump($ex->getMessage()); return Result::error("删除失败",0); } return Result::success($result); } /** * 添加底部导航(列表)内容 * @param array $data * @return array */ public function addFooterContent(array $data): array { // 底部导航类型 0:内容型;1:列表型; // var_dump($data); $cat = FooterCategory::where('id', $data['fcat_id'])->first(); // return Result::success($cat); if (!$cat) { return Result::error("该底部导航不存在!"); } if($cat['type'] != $data['type_id']){ return Result::error("请输入正确的底部导航类型!"); } // 内容型底部导航只能有一条内容 if($cat['type'] == 0){ $content = FooterContent::where('fcat_id', $data['fcat_id'])->first(); if(!empty($content)){ return Result::error("该底部导航已添加内容!"); } }else{ // 列表型底部导航\列表标头型底部导航列表标题不能重复 if(!isset($data['list_title']) || empty($data['list_title'])){ return Result::error("请输入底部导航列表标题!"); } $content = FooterContent::where('fcat_id', $data['fcat_id'])->where('list_title',$data['list_title'])->first(); if(!empty($content)){ return Result::error("该列表标题已存在!"); } } $result = FooterContent::insertGetId($data); if(empty($result)){ return Result::error("添加失败!"); }else{ return Result::success($result); } } /** * 获取底部导航(列表)内容 * @param array $data * @return array */ public function getFooterContent(array $data): array { $where = []; $fcat_id = []; $footer_category = FooterCategory::where('id', $data['fcat_id'])->first(); if(empty($footer_category)){ return Result::error("该底部导航不存在!"); } $footer_category = $footer_category->toArray(); $fcat_id = $footer_category['id']; if($footer_category['type'] == 1){ if(isset($data['list_title'])){ array_push($where, ['list_title','like','%'.$data['list_title'].'%']); } if(isset($data['con_title'])){ array_push($where, ['con_title','like','%'.$data['con_title'].'%']); } $child = FooterCategory::where('pid', $data['fcat_id'])->first(); if($child){ $fcat_id = [$footer_category['id'], $child->id]; } } $count = FooterContent::whereIn('fcat_id', (array)$fcat_id)->where($where)->count(); $rep = FooterContent::whereIn('fcat_id', (array)$fcat_id)->where($where) ->leftJoin('footer_category', 'footer_category.id', '=', 'footer_content.fcat_id') ->select('footer_content.*', 'footer_category.type', 'footer_category.name as fcat_name') ->limit($data['pageSize']) ->offset(($data['page'] - 1) * $data['pageSize']) ->orderBy("updated_at", "desc") ->get(); if(empty($rep)){ return Result::error("没有查到相关数据!"); }else{ $result = [ 'rows' => $rep, 'count' => $count ]; return Result::success($result); } } /** * 获取某个底部导航(列表)内容 * @param array $data * @return array */ public function getOneFooterContent(array $data): array { $result = FooterContent::where('footer_content.id', $data['id']) ->leftJoin('footer_category','footer_category.id','fcat_id') ->select('footer_content.*','footer_category.type','footer_category.pid','footer_category.name as fcat_name') ->first(); if(empty($result)){ return Result::error("请输入正确的底部导航内容id!"); } return Result::success($result); } /** * 编辑底部导航(列表)内容 * @param array $data * @return array */ public function upFooterContent(array $data): array { $content = FooterContent::where('footer_content.id', $data['id']) ->leftJoin('footer_category','footer_category.id','fcat_id') ->select('footer_content.*','footer_category.type','footer_category.id as fcat_id') ->first(); if(!$content){ return Result::error("该底部导航内容不存在!"); } if($content['type'] != $data['type_id']){ return Result::error("请输入正确的底部导航类型!"); } if($content['type_id'] == 1){ if(!isset($data['list_title']) || empty($data['list_title'])){ return Result::error("请输入底部导航列表标题!"); } $list_title = FooterContent::where('fcat_id', $data['fcat_id'])->where('list_title',$data['list_title'])->first(); if(!empty($list_title)){ return Result::error("该列表标题已存在!"); } } unset($data['type_id']); $result = FooterContent::where('id', $data['id'])->update($data); if(empty($result)){ return Result::error("修改失败!"); }else{ return Result::success($result); } } /** * 删除底部导航(列表)内容 * @param array $data * @return array */ public function delFooterContent(array $data): array { $result = FooterContent::where('id', $data['id'])->delete($data); if(empty($result)){ return Result::error("删除失败!"); }else{ return Result::success($result); } } }