Export.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\store\service\order;
  10. use app\store\model\OrderAddress as OrderAddressModel;
  11. /**
  12. * 订单导出服务类
  13. * Class Export
  14. * @package app\store\service\order
  15. */
  16. class Export
  17. {
  18. /**
  19. * 表格标题
  20. * @var array
  21. */
  22. private $tileArray = [
  23. '订单号', '商品信息', '订单总额', '优惠券抵扣', '积分抵扣', '运费金额', '后台改价', '实付款金额', '支付方式', '下单时间',
  24. '买家', '买家留言', '配送方式', '自提门店名称', '自提联系人', '自提联系电话', '收货人姓名', '联系电话', '收货人地址',
  25. '物流公司', '物流单号', '付款状态', '付款时间', '发货状态', '发货时间', '收货状态', '收货时间', '订单状态', '微信支付交易号', '是否已评价'
  26. ];
  27. /**
  28. * 订单导出
  29. * @param $list
  30. */
  31. public function orderList($list)
  32. {
  33. // 表格内容
  34. $dataArray = [];
  35. foreach ($list as $order) {
  36. /* @var OrderAddressModel $address */
  37. $address = $order['address'];
  38. $dataArray[] = [
  39. '订单号' => $this->filterValue($order['order_no']),
  40. '商品信息' => $this->filterGoodsInfo($order),
  41. '订单总额' => $this->filterValue($order['total_price']),
  42. '优惠券抵扣' => $this->filterValue($order['coupon_money']),
  43. '积分抵扣' => $this->filterValue($order['points_money']),
  44. '运费金额' => $this->filterValue($order['express_price']),
  45. '后台改价' => $this->filterValue("{$order['update_price']['symbol']}{$order['update_price']['value']}"),
  46. '实付款金额' => $this->filterValue($order['pay_price']),
  47. '支付方式' => $this->filterValue($order['pay_type']['text']),
  48. '下单时间' => $this->filterValue($order['create_time']),
  49. '买家' => $this->filterValue($order['user']['nickName']),
  50. '买家留言' => $this->filterValue($order['buyer_remark']),
  51. '配送方式' => $this->filterValue($order['delivery_type']['text']),
  52. '自提门店名称' => !empty($order['extract_shop']) ? $this->filterValue($order['extract_shop']['shop_name']) : '',
  53. '自提联系人' => !empty($order['extract']) ? $this->filterValue($order['extract']['linkman']) : '',
  54. '自提联系电话' => !empty($order['extract']) ? $this->filterValue($order['extract']['phone']) : '',
  55. '收货人姓名' => $this->filterValue($order['address']['name']),
  56. '联系电话' => $this->filterValue($order['address']['phone']),
  57. '收货人地址' => $this->filterValue($address ? $address->getFullAddress() : ''),
  58. '物流公司' => $this->filterValue($order['express']['express_name']),
  59. '物流单号' => $this->filterValue($order['express_no']),
  60. '付款状态' => $this->filterValue($order['pay_status']['text']),
  61. '付款时间' => $this->filterTime($order['pay_time']),
  62. '发货状态' => $this->filterValue($order['delivery_status']['text']),
  63. '发货时间' => $this->filterTime($order['delivery_time']),
  64. '收货状态' => $this->filterValue($order['receipt_status']['text']),
  65. '收货时间' => $this->filterTime($order['receipt_time']),
  66. '订单状态' => $this->filterValue($order['order_status']['text']),
  67. '微信支付交易号' => $this->filterValue($order['transaction_id']),
  68. '是否已评价' => $this->filterValue($order['is_comment'] ? '是' : '否'),
  69. ];
  70. }
  71. // 导出csv文件
  72. $filename = 'order-' . date('YmdHis');
  73. return export_excel($filename . '.csv', $this->tileArray, $dataArray);
  74. }
  75. /**
  76. * 批量发货模板
  77. */
  78. public function deliveryTpl()
  79. {
  80. // 导出csv文件
  81. $filename = 'delivery-' . date('YmdHis');
  82. return export_excel($filename . '.csv', ['订单号', '物流单号']);
  83. }
  84. /**
  85. * 格式化商品信息
  86. * @param $order
  87. * @return string
  88. */
  89. private function filterGoodsInfo($order)
  90. {
  91. $content = '';
  92. foreach ($order['goods'] as $key => $goods) {
  93. $content .= ($key + 1) . ".商品名称:{$goods['goods_name']}\n";
  94. !empty($goods['goods_attr']) && $content .= " 商品规格:{$goods['goods_attr']}\n";
  95. $content .= " 购买数量:{$goods['total_num']}\n";
  96. $content .= " 商品总价:{$goods['total_price']}元\n\n";
  97. }
  98. return $content;
  99. }
  100. /**
  101. * 表格值过滤
  102. * @param $value
  103. * @return string
  104. */
  105. private function filterValue($value)
  106. {
  107. return "\t" . $value . "\t";
  108. }
  109. /**
  110. * 日期值过滤
  111. * @param $value
  112. * @return string
  113. */
  114. private function filterTime($value)
  115. {
  116. if (!$value) return '';
  117. return $this->filterValue(date('Y-m-d H:i:s', $value));
  118. }
  119. }