makeAreaData(); $app_area_data = Cache::get("APP_AREA_DATA"); } return $app_area_data; } public function getAreaList() { //获取地区数据缓存 $app_area_list = Cache::get("APP_AREA_LIST"); if (!$app_area_list) { $this->makeAreaData(); $app_area_list = Cache::get("APP_AREA_LIST"); } return $app_area_list; } private function makeAreaData() { //方便理解,暂写为三次查询 $area_data = []; $area_list = []; //第一级 $list_1 = Db::name('area')->where('parent_area_id','=',0)->field('id,area_name')->order('list_order')->select(); $tmp_id_list=[]; foreach ($list_1 as $k => $v) { $area_data[$v['id']]=$v; $area_data[$v['id']]['child_area']=[]; $area_list[$v['id']]=$v; $tmp_id_list[]=$v['id']; } //第二级 $list_2 = Db::name('area')->where('parent_area_id','in',$tmp_id_list)->field('id,parent_area_id,area_name')->order('list_order')->select(); $tmp_id_list=[]; foreach ($list_2 as $k => $v) { $area_data[$v['parent_area_id']]['child_area'][$v['id']]=$v; $area_data[$v['parent_area_id']]['child_area'][$v['id']]['child_area']=[]; $area_list[$v['id']]=$v; $tmp_id_list[]=$v['id']; } //第三级 $list_3 = Db::name('area')->where('parent_area_id','in',$tmp_id_list)->field('id,parent_area_id,area_name')->order('list_order')->select(); foreach ($list_3 as $k => $v) { $grand_pa_id=$area_list[$v['parent_area_id']]['parent_area_id']; $area_data[$grand_pa_id]['child_area'][$v['parent_area_id']]['child_area'][$v['id']]=$v; $area_list[$v['id']]=$v; $area_list[$v['id']]['grand_pa_id']=$grand_pa_id; } Cache::set('APP_AREA_DATA', $area_data,3600); Cache::set('APP_AREA_LIST', $area_list,3600); } //首页产品分类数据 public function getIndexGoodsCateData() { $cate_menu = Cache::get('INDEX_GOODS_CATE_MENU_DATA'); $cate_menu = null; if (!$cate_menu) { //$where[]=['index_show_flag','=',1]; //$order['index_show_order']='desc'; $where[] = ['list_show_flag','=',1]; $order['list_show_order']='desc'; $cate_menu = Db::name('goods_cate')->where($where)->order($order)->column('cate_id,nid,name,pid,index_show_flag,index_show_order,list_show_flag,list_show_order,description,icon_url','cate_id'); $cate_menu = transform_goods_cate_tree($cate_menu); Cache::set('GOODS_CATE_MENU_DATA', $cate_menu, 120); } return $cate_menu; } //app专用 public function getAppIndexGoodsCateData() { $cate_menu = Cache::get('INDEX_GOODS_CATE_MENU_DATA_APP'); $cate_menu = null; if (!$cate_menu) { //pc首页 //$where[]=['index_show_flag','=',1]; //$order['index_show_order']='desc'; //app分类 $where[] = ['list_show_flag','=',1]; $order['list_show_order']='desc'; $cate_menu = Db::name('goods_cate')->where($where)->order($order)->column('cate_id,nid,name,pid,index_show_flag,index_show_order,list_show_flag,list_show_order,description,icon_url','cate_id'); $cate_menu = transform_goods_cate_tree($cate_menu); Cache::set('GOODS_CATE_MENU_DATA_APP', $cate_menu, 120); } return $cate_menu; } }