| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | <?phpnamespace App\Service\Excel;use App\Exports\MyExport;use App\Model\Header_ext;use App\Model\SysMenu;use Illuminate\Support\Facades\DB;use App\Service\Service;/** * 相关 * @package App\Models */class ExcelService extends Service{    public function excelExport($request){        $data = $request->all();        $menu_id = $data['menu_id'];        $list = $this->excelGetData($menu_id,$request);        $list_key = Header_ext::where('menu_id',$menu_id)->select('key','value','type')->orderBy('sort','asc')->get()->toArray();        $excel_top_list = [];        $excel_list = [];        foreach ($list_key as $v){            $excel_top_list[] = $v['value'];        }        $excel_list[] = $excel_top_list;        foreach ($list as $v){            $detail = [];            foreach ($list_key as $vv){                if($vv['type'] === '2') $value = date('Y-m-d H:i:s',$v[$vv['key']]);                else $value = $v[$vv['key']];                $detail[] = $value;            }            $excel_list[] = $detail;        }        $myExport = new MyExport();        $data = $myExport->commonExport(['data'=>$excel_list]);        return [true,$data];    }    public function excelGetData($menu_id,$request){        $api = SysMenu::where('id',$menu_id)->value('api');        $path = $this->getMenu();        $control = '\\'.$path[$api]["controller"];        $act = $path[$api]["act"];        $new = new $control();        $detail = $new->$act($request);//        if(!isset($detail['data']['data'][0])) $detail['data']['data'][0] = $detail['data'];        return $detail['data']['data'];    }    public function getMenu(){        $app = App();        $routes = $app->routes->getRoutes();        $path = [];        foreach ($routes as $k => $value) {            if(!isset($value->action['controller'])) continue;            $act = explode('@',$value->action['controller']);            if(!isset($act[1])) continue;            $path[$value->uri]['act'] = $act[1];            $path[$value->uri]['controller'] = $act[0];        }        return $path;    }}
 |