get('type'); if ($type != 1 && $type != 0) { return $this->response->array(self::returnValue(['data' => 'Invalid type'], 1005)); } $categoryList = Category::selectCategoryList($type); if (empty($categoryList)) { return $this->response->array(self::returnValue(['data' => 'Database error'], 9999)); } else { return $this->response->array(self::returnValue(['data' => $categoryList], 200)); } } //获取标签列表 public function getTagList(Request $request) { $categoryId = $request->get('category_id'); if (!is_numeric($categoryId)) { return $this->response->array(self::returnValue(['data' => 'Invalid category id'], 1002)); } $tagList = Tag::selectTagList($categoryId); if (empty($tagList)) { return $this->response->array(self::returnValue(['data' => 'Invalid category id'], 1002)); } return $this->response->array(self::returnValue(['data' => $tagList], 200)); } //获取菜单具体信息 public function getMenu(Request $request) { $menuId = $request->get('menu_id'); if (!is_numeric($menuId)) { return $this->response->array(self::returnValue(['data' => 'Invalid menu id'], 1003)); } $menu = Menu::selectMenu($menuId); if (empty($menu)) { return $this->response->array(self::returnValue(['data' => 'Invalid menu id'], 1003)); } Record::insertViews($menuId); $init = abs(ceil(crc32($menuId) / 1000000)); $record = Record::selectRecord($menuId); $menu->collections = $record['collection']+floor($init/50); $menu->views = $record['view']+$init; $menu->share = 'http://182.92.118.1:3320/api/features/getMenu'; return $this->response->array(self::returnValue(['data' => $menu], 200)); } public function addCollection(Request $request) { $menuId = $request->get('menu_id'); if (!is_numeric($menuId)) { return $this->response->array(self::returnValue(['data' => 'Invalid menu id'], 1003)); } Record::insertCollection($menuId); return $this->response->array(self::returnValue(['data' => []], 200)); } //获取精品好菜 public function getRecommend(Request $request) { $time = $request->get('page'); if (!is_numeric($time)) { return $this->response->array(self::returnValue(['data' => 'Invalid page'], 1004)); } $menuList = Menu::selectRecommend(0, $time); return $this->response->array(self::returnValue(['data' => $menuList], 200)); } //获取banner推荐菜品 public function getBannerRecommend(Request $request) { $menuList = Menu::selectRecommend(1); return $this->response->array(self::returnValue(['data' => $menuList], 200)); } //获取推荐标签 public function getRecommendTag(Request $request) { $tagList = RecommendTag::selectRecommendTag(); return $this->response->array(self::returnValue(['data' => $tagList], 200)); } //solr 查询 protected function select($solrData, Request $request) { $time = $request->get('page'); $menuListNum = config('view.menuListNum'); if (!is_numeric($time)) { return $this->response->array(self::returnValue(['data' => 'Invalid page'], 1004)); } $solrData = array_merge($solrData, array("fl" => "id,title,url,ingredients", "start" => $time * $menuListNum, "rows" => $menuListNum)); $solr = new Solr(); $menuDataList = $solr->select($solrData); $menuDataList = $menuDataList['data']['response']['docs']; foreach ($menuDataList as $v) { $menuListId[] = $v['id']; } $record = Record::selectListRecord($menuListId); foreach ($menuDataList as &$v) { $init = abs(ceil(crc32($v['id']) / 1000000)); if (isset($record['collection'][$v['id']])) { $v['collections'] = $record['collection'][$v['id']] + floor($init / 50); } else { $v['collections'] = floor($init / 50); } if (isset($record['view'][$v['id']])) { $v['views'] = $record['view'][$v['id']] + $init; } else { $v['views'] = $init; } } unset($v); return $menuDataList; } //搜索食材 public function selectIngredients(Request $request) { //ingredients $value = $request->get('value'); if (empty($value)) { return $this->response->array(self::returnValue(['data' => 'Invalid value'], 1006)); } $this->addSearchValue($value, 2); $solrData = array("q" => 'ingredients:' . $value . ''); $menuDataList = $this->select($solrData, $request); return $this->response->array(self::returnValue(['data' => $menuDataList], 200)); } //搜索标签 public function selectTag(Request $request) { $value = $request->get('value'); if (empty($value)) { return $this->response->array(self::returnValue(['data' => 'Invalid value'], 1006)); } $this->addSearchValue($value, 1); $solrData = array("q" => 'tags:' . $value . ''); $menuDataList = $this->select($solrData, $request); return $this->response->array(self::returnValue(['data' => $menuDataList], 200)); } //全搜索 public function selectAll(Request $request) { $value = $request->get('value'); if (empty($value)) { return $this->response->array(self::returnValue(['data' => 'Invalid value'], 1006)); } $this->addSearchValue($value); $solrData = array("q" => "title:$value tags:$value ingredients $value", "q.op" => "or"); $menuDataList = $this->select($solrData, $request); return $this->response->array(self::returnValue(['data' => $menuDataList], 200)); } public function feedBack(Request $request) { $message = $request->get('message'); if (empty($message)) { return $this->response->array(self::returnValue(['data' => 'Invalid message'], 1009)); } UserMessage::addFeedBack($request); return $this->response->array(self::returnValue(['data' => []], 200)); } public function getHotSearch() { $data = SearchStatistics::selectHotSearch(); if (!$data) { return $this->response->array(self::returnValue(['data' => 'Database error'], 9999)); } return $this->response->array(self::returnValue(['data' => $data], 200)); } protected function addSearchValue($value, $type = 0) { SearchRecord::insertSearchValue($value, $type); } public function startsWith($str, $prefix) { for ($i = 0; $i < strlen($prefix); ++$i) { if ($prefix[$i] !== $str[$i]) { return false; } } return true; } //早中晚专题 public function earlyMiddleAndLateTheme(Request $request){ $data=Special::whereIn('title',['上午','中午','下午'])->get(); if (!$data) { return $this->response->array(self::returnValue(['data' => 'Database error'], 9999)); } $data=json_decode(json_encode($data),true); foreach($data as $key=>$value){ $data[$key]['url']=config('constants.HOST_URL').$value['url']; } return $this->response->array(self::returnValue(['data' => $data], 200)); } //其他专题 /** * @param Request $request * @return mixed */ public function otherTheme(Request $request){ $today=strtotime(date('Y-m-d')); $data=Special::whereNotIn('title',['上午','中午','下午'])->where('status',1)->where('releaseTime','<',$today)->get(); $data=json_decode(json_encode($data),true); foreach($data as $key=>$value){ $data[$key]['url']=config('constants.HOST_URL').$value['url']; } $json_menu_idarr=Special::whereNotIn('title',['上午','中午','下午'])->where('status',1)->pluck('contain_recipes'); $json_menu_idarr=json_decode(json_encode($json_menu_idarr),true); $initArr=array(); foreach($json_menu_idarr as $item){ if($item){ $initArr=array_merge($initArr,explode(',',$item)); } } $initArr=array_unique($initArr); $menuAll=DB::table('menu')->whereIn('id',$initArr)->where('status',1)->get(); $menuAll=json_decode(json_encode($menuAll),true); foreach($menuAll as $key=>$value){ if(!$this->startsWith($value['url'],'http') && $value['url'] !='None' && $value['url']!=''){ $menuAll[$key]['url']=config('constants.HOST_URL').$value['url']; } } $middleArr=array(); foreach($menuAll as $item){ $middleArr["".$item['id']]=$item; } foreach($data as $key=>$item){ if($item['contain_recipes']){ foreach(explode(',',$item['contain_recipes']) as $inneritem){ $data[$key]['menuList'][]=$middleArr[$inneritem]; } } } return $this->response->array(self::returnValue(['data' => $data], 200)); } public function theLastRecipes(Request $request){ $data=Menu::where('status',1)->orderBy('created_at','desc')->limit(50)->get(); if (!$data) { return $this->response->array(self::returnValue(['data' => 'Database error'], 9999)); } $data=json_decode(json_encode($data),true); foreach($data as $key=>$value){ if(!$this->startsWith($value['url'],'http') && $value['url'] !='None' && $value['url']!=''){ $data[$key]['url']=config('constants.HOST_URL').$value['url']; } } return $this->response->array(self::returnValue(['data' => $data], 200)); } public function menuList(Request $request){ $id=$request->input('id'); $special=Special::where('id',$id)->first(); if($special['title']=='上午' || $special['title']=='中午' || $special['title']=='下午'){ $contain_recipes_time=json_decode($special['contain_recipes_time'],true); arsort($contain_recipes_time); $idArr=array(); $today=date('Y-m-d'); foreach($contain_recipes_time as $key=>$value){ if($value < $today){ $idArr[]=$key; } } $lastarr=explode(',',$special['contain_recipes']); $idArr=array_intersect($idArr,$lastarr); }else{ $idArr=explode(',',$special['contain_recipes']); } $menuList=Menu::whereIn('id',$idArr)->get(); $menuList=json_decode(json_encode($menuList),true); foreach($menuList as $key=>$value){ if(!$this->startsWith($value['url'],'http') && $value['url'] !='None' && $value['url']!=''){ $menuList[$key]['url']=config('constants.HOST_URL').$value['url']; } } return $this->response->array(self::returnValue(['data' => $menuList], 200)); } public function menuDetail(Request $request){ $id=$request->input('id'); $menu=Menu::where('id',$id)->first(); if(!$this->startsWith($menu['url'],'http') && $menu['url'] !='None' && $menu['url']!=''){ $menu['url']=config('constants.HOST_URL').$menu['url']; } $init=array(); $list=explode(';',$menu['ingredients']); foreach($list as $item){ $origin=explode(',',$item); $init[$origin[0]]=$origin[1]; } $menu['ingredients']=$init; $menuDetail=DB::table('menu_step')->where('menu_id',$id)->get(); $menuDetail=json_decode(json_encode($menuDetail),true); foreach($menuDetail as $key=>$value){ if(!$this->startsWith($value['url'],'http') && $value['url'] !='None' && $value['url']!=''){ $menuDetail[$key]['url']=config('constants.HOST_URL').$value['url']; } } return $this->response->array(self::returnValue(['data' => $menu,'detailData'=>$menuDetail], 200)); } public function articleList(Request $request){ $page=$request->has('page')?$request->input('page'):1; $start=intval((intval($page)-1)*intval(20)); $type=NewsCategory::pluck('name','abbreviation'); $data=News::where('status',1)->select('id','imgurl','title','createTime','category','readNum')->orderBy('createTime','desc')->offset($start)->limit(20)->get(); $data=json_decode(json_encode($data),true); foreach($data as $key=>$item){ $data[$key]['category']=$type[$item['category']]; if(!$this->startsWith($item['imgurl'],'http') && $item['imgurl'] !='None' && $item['imgurl']!=''){ $data[$key]['imgurl']=config('constants.HOST_URL').$item['imgurl']; } } return $this->response->array(self::returnValue(['data' => $data], 200)); } public function articleDetail(Request $request){ $id=$request->input('id'); $articleDetail=News::where('id',$id)->first(); $articleDetail=json_decode(json_encode($articleDetail),true); if(!$this->startsWith($articleDetail['imgurl'],'http') && $articleDetail['imgurl'] !='None' && $articleDetail['imgurl']!=''){ $articleDetail['imgurl']=config('constants.HOST_URL').$articleDetail['imgurl']; } $type=NewsCategory::pluck('name','abbreviation'); $articleDetail['category']=$type[$articleDetail['category']]; $articleDetail['content'] = str_replace(array("\r\n", "\r", "\n"), "", $articleDetail['content']); $articleDetail['content'] = str_replace(array("/ueditor/php/upload/"), config('constants.HOST_URL')."/ueditor/php/upload/", $articleDetail['content']); return $this->response->array(self::returnValue(['data' => $articleDetail], 200)); } }