|
|
@@ -120,6 +120,141 @@ class OrderClass extends BaseClass
|
|
|
self::REFUND_YES => '有退款',
|
|
|
];
|
|
|
|
|
|
+ public static function exportOrderData($respond, $mainId)
|
|
|
+ {
|
|
|
+ $orderList = $respond['list'] ?? [];
|
|
|
+ if (empty($orderList)) {
|
|
|
+ util::fail('没有数据需要导出');
|
|
|
+ }
|
|
|
+ $orderSnList = array_column($orderList, 'orderSn');
|
|
|
+ $orderItemData = OrderItemClass::getAllByCondition(['orderSn' => ['in', $orderSnList]], null, '*');
|
|
|
+ $orderItemList = [];
|
|
|
+ if (!empty($orderItemData)) {
|
|
|
+ foreach ($orderItemData as $itemInfo) {
|
|
|
+ $orderSn = $itemInfo['orderSn'] ?? '';
|
|
|
+ $orderItemList[$orderSn][] = $itemInfo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ foreach ($orderList as $key => $orderInfo) {
|
|
|
+ $orderSn = $orderInfo['orderSn'] ?? '';
|
|
|
+ $itemList = $orderItemList[$orderSn] ?? [];
|
|
|
+ $orderList[$key]['itemList'] = $itemList;
|
|
|
+ }
|
|
|
+
|
|
|
+ $phpExcelFile = Yii::getAlias("@vendor/phpoffice/phpexcel/");
|
|
|
+ require_once($phpExcelFile . 'Classes/PHPExcel.php');
|
|
|
+
|
|
|
+ $objPHPExcel = new \PHPExcel();
|
|
|
+
|
|
|
+ $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
|
|
|
+ ->setLastModifiedBy("Maarten Balliauw")
|
|
|
+ ->setTitle("Office 2007 XLSX Document")
|
|
|
+ ->setSubject("Office 2007 XLSX Document")
|
|
|
+ ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
|
|
|
+ ->setKeywords("office 2007 openxml php")
|
|
|
+ ->setCategory("file");
|
|
|
+
|
|
|
+ $ghsTitle = '供货商';
|
|
|
+ $objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader(date('n月j日') . " " . $ghsTitle);
|
|
|
+
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0.7);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0.1);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0.5);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setHeader(0.1);
|
|
|
+ $objPHPExcel->getActiveSheet()->getPageMargins()->setFooter(0);
|
|
|
+
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('A1', '订单号');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('B1', '创建时间');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('C1', '支付时间');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('D1', '订单金额');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('E1', '退款金额');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('F1', '实际金额');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('G1', '客户名称');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('H1', '客户手机号');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('I1', '在线支付');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('J1', '结清状态');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('K1', '');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('L1', '');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('M1', '');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('N1', '花材Id');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('O1', '花材名称');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('P1', '单价');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('Q1', '数量');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('R1', '金额');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('S1', '已退数量');
|
|
|
+
|
|
|
+ //设置宽度
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30);
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
|
|
|
+ $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
|
|
|
+ //加粗
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(9)->setBold(true);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(9)->setBold(true);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setSize(9)->setBold(true);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setSize(9)->setBold(true);
|
|
|
+
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+
|
|
|
+ $baseRow = 2;
|
|
|
+ $x = 0;
|
|
|
+ foreach ($orderList as $key => $orderData) {
|
|
|
+ if (!empty($orderData['itemList'])) {
|
|
|
+ foreach ($orderData['itemList'] as $k => $orderInfo) {
|
|
|
+ $i = $baseRow + $x;
|
|
|
+ $x++;
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $orderData['orderSn']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $orderData['addTime']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $orderData['payTime']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $orderData['orderPrice']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $orderData['tkPrice']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $orderData['actPrice']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $orderData['customName']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $orderData['customMobile']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $orderData['onlinePay'] == 1 ? '否' : '是');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $orderData['debt'] == 1 ? '否' : '是');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, '');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('L' . $i, '');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('M' . $i, '');
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('N' . $i, $orderInfo['productId']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('O' . $i, $orderInfo['name']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('P' . $i, $orderInfo['xhUnitPrice']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('Q' . $i, $orderInfo['xhNum']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('R' . $i, $orderInfo['xhPrice']);
|
|
|
+ $objPHPExcel->getActiveSheet()->setCellValue('S' . $i, $orderInfo['refundNum']);
|
|
|
+
|
|
|
+ //居左
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('A' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('B' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('C' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('D' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('E' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ $objPHPExcel->getActiveSheet()->getStyle('F' . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $fileName = '订单明细-' . time();
|
|
|
+ $objPHPExcel->getActiveSheet()->setTitle($fileName);
|
|
|
+ $objPHPExcel->setActiveSheetIndex(0);
|
|
|
+ $dir = './priceTable/' . $mainId;
|
|
|
+ if (file_exists($dir) == false) {
|
|
|
+ mkdir($dir, 0777, true);
|
|
|
+ }
|
|
|
+ $date = $fileName;
|
|
|
+ $file = $date . '.xls';
|
|
|
+ $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
|
+ if (file_exists($dir . '/' . $file)) {
|
|
|
+ unlink($dir . '/' . $file);
|
|
|
+ }
|
|
|
+ $objWriter->save($dir . '/' . $file);
|
|
|
+ $fileUrl = Yii::$app->params['ghsHost'] . '/priceTable/' . $mainId . '/' . $file;
|
|
|
+ util::success(['file' => $fileUrl, 'shortFile' => $file]);
|
|
|
+ }
|
|
|
+
|
|
|
public static function confirmReach($order)
|
|
|
{
|
|
|
$cgId = $order->purchaseId ?? 0;
|