ExportOrder.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace app\queue\redis;
  3. use app\extra\service\saas\OrderService;
  4. use app\model\system\SystemExport;
  5. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  6. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  7. use Webman\RedisQueue\Consumer;
  8. class ExportOrder implements Consumer
  9. {
  10. public $queue = "export-order";
  11. public $connection = "default";
  12. /**
  13. * @param $data
  14. * @return bool
  15. */
  16. public function consume($data): bool
  17. {
  18. try {
  19. echo getDateFull()."===导出订单\n";
  20. $order = (new OrderService)->getListAll($data['param']);
  21. if (empty($order))
  22. {
  23. (new SystemExport)->where("id",$data['logId'])->save(['status' => 2]);
  24. return true;
  25. }
  26. $title = ["订单编号","所属门店","订单类型","商品ID","商品名称","规格","订单金额","收件人","收件电话","收件地址","券码"];
  27. $titCol = 'A';
  28. $spreadsheet = new Spreadsheet();
  29. $sheet = $spreadsheet->getActiveSheet();
  30. foreach($title as $k=>$v){
  31. $sheet->setCellValue($titCol."1",$v);
  32. $titCol ++;
  33. }
  34. $row = 2;
  35. foreach ($order as $item){
  36. $dataCol = "A";
  37. $newData = [
  38. "order_id" => (string) $item['order_id'], // 余额
  39. "store" => $item['store']['store_name']??'-',
  40. "type" => $item['service_type']==1?'预约':'快递',
  41. "out_id" => $item['product_id']??'-',
  42. "product_name" => $item['product_name']??'-',
  43. "sku" => $item['sku']??'-',
  44. "order_amount" => "¥".$item['parent']['order_amount']??'-',
  45. "username" => $item['username']??'-',
  46. "mobile" => $item['mobile']??'-',
  47. "address" => $item['region'].$item['address'],
  48. "certificate" => $item['certificate_id']??'-'
  49. ];
  50. foreach ($newData as $value) {
  51. $sheet->setCellValue($dataCol . $row, ' '.$value);
  52. $dataCol++;
  53. }
  54. $row++;
  55. }
  56. $write = new Xlsx($spreadsheet);
  57. $pathName = public_path().DIRECTORY_SEPARATOR."logs".DIRECTORY_SEPARATOR.$data['param']['fileName'];
  58. (new SystemExport)->where("id",$data['logId'])->update([
  59. "down_url" => "https://file.jsshuita.com.cn/logs/".$data['param']['fileName'],
  60. "status" => 1
  61. ]);
  62. $write->save($pathName);
  63. return true;
  64. } catch (\Throwable $throwable) {
  65. echo getDateFull()."导出文件报错\n";
  66. echo $throwable->getMessage()."\n";
  67. echo $throwable->getFile()."\n";
  68. echo $throwable->getLine()."\n";
  69. return true;
  70. }
  71. }
  72. }