"待支付", "1" => "待使用", "2" => "已完成", "3" => "已退款", "4" => "退款中", "5" => "已关闭", "6" => "部分退款", ]; protected array $express = [ "0" => "待订单完成", "1" => "待发货", "2" => "已发货", "3" => "已签收", ]; public function consume($data): bool { try { if(empty($data['logId'])) return true; $spreadsheet = new Spreadsheet(); $title = ['店铺名称','下单人昵称','订单编号','订单状态','发货状态', '收件人', '手机号码', '收货地址', '创建时间']; $sheet = $spreadsheet->getActiveSheet(); $titCol = 'A'; foreach ($title as $key => $value) { // 单元格内容写入 $sheet->setCellValue($titCol . '1', $value); $titCol++; } $row = 2; // 从第二行开始 $searchKey = (new OrderService)->searchFilter($data['param']); $orderData = (new SaasOrder)->where($searchKey)->with(['address','poi','user'])->select(); if ($orderData->isEmpty()) { (new SystemExport)->where("id",$data['logId'])->update(['status' => 2]); return true; } foreach ($orderData as $item) { $dataCol = 'A'; $address = "-"; if (!empty($item['address'])) { $address = $item['address']['city_text'].$item['address']['address']; } $newData = [ "shop" => $item['poi']['poi_name']??'-', // 店铺名称 "nickname" => $item['user']['nickname']??'-', // 下单人昵称 "order" => $item['order_sn']??'-', // 订单编号 "status" => $this->status[$item['status']], // 订单状态 "express" => $this->express[$item['express_status']], // 订单状态 "user" => $item['address']['nickname']??'-', "mobile" => $item['address']['mobile']??'-', "address" => $address, "create_at" => $item['create_at'], ]; foreach ($newData as $value) { $sheet->setCellValue($dataCol . $row, ' '.$value); $dataCol++; } $row++; } $write = new Xlsx($spreadsheet); $pathName = public_path().DIRECTORY_SEPARATOR."download".DIRECTORY_SEPARATOR.$data['param']['fileName']; echo $pathName."\n"; (new SystemExport)->where("id",$data['logId'])->update([ "down_url" => "https://tran.jsshuita.cn/download/".$data['param']['fileName'], "status" => 1 ]); $write->save($pathName); } catch (\Throwable $throwable) { echo getDateFull()."==导出订单报错===\n"; echo $throwable->getFile()."\n"; echo $throwable->getLine()."\n"; echo $throwable->getMessage()."\n"; } return true; } }