ExportOrder.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. echo getDateFull()."===导出订单\n";
  19. $order = (new OrderService)->getListAll($data['param']);
  20. if (empty($order))
  21. {
  22. (new SystemExport)->where("id",$data['logId'])->save(['status' => 2]);
  23. return true;
  24. }
  25. $title = ["订单编号","所属门店","订单类型","商品ID","商品名称","规格","订单金额","收件人","收件电话","收件地址","券码"];
  26. $titCol = 'A';
  27. $spreadsheet = new Spreadsheet();
  28. $sheet = $spreadsheet->getActiveSheet();
  29. foreach($title as $k=>$v){
  30. $sheet->setCellValue($titCol."1",$v);
  31. $titCol ++;
  32. }
  33. $row = 2;
  34. foreach ($order as $item){
  35. $dataCol = "A";
  36. $newData = [
  37. "order_id" => (string) $item['order_id'], // 余额
  38. "store" => $item['store']['store_name']??'-',
  39. "type" => $item['service_type']==1?'预约':'快递',
  40. "out_id" => $item['product_id']??'-',
  41. "product_name" => $item['product_name']??'-',
  42. "sku" => $item['sku']??'-',
  43. "order_amount" => "¥".$item['parent']['order_amount']??'-',
  44. "username" => $item['username']??'-',
  45. "mobile" => $item['mobile']??'-',
  46. "address" => $item['region'].$item['address'],
  47. "certificate" => $item['certificate_id']??'-'
  48. ];
  49. foreach ($newData as $value) {
  50. $sheet->setCellValue($dataCol . $row, ' '.$value);
  51. $dataCol++;
  52. }
  53. $row++;
  54. }
  55. $write = new Xlsx($spreadsheet);
  56. $pathName = public_path().DIRECTORY_SEPARATOR."logs".DIRECTORY_SEPARATOR.$data['param']['fileName'];
  57. (new SystemExport)->where("id",$data['logId'])->update([
  58. "down_url" => "https://file.jsshuita.com.cn/logs/".$data['param']['fileName'],
  59. "status" => 1
  60. ]);
  61. $write->save($pathName);
  62. return true;
  63. }
  64. }