public function bookingAction() { $this->view->activeMenu = 'booking'; $this->view->vehicleTypes = (new Model_VehicleType())->fetchPagedList(1, 999999)['rows']; if (!$this->_request->isPost()) { return; } $arp = new AjaxResponse(); $arp->setStatus(AjaxResponse::STATUS_FAILED); $availableParams = array('forwho', 'city', 'contact-name', 'contact-email', 'contact-phone', 'passenger-names', 'passenger-phone', 'passenger-num', 'when', 'pickup-address', 'dropoff-address', 'vehicle', 'payment-method', 'notes'); $via = $this->_getParam('via-address', array()); $viaToSave = array(); if (is_array($via)) { foreach ($via as $k => $v) { if (!empty(trim($v))) { $viaToSave[] = trim($v); } } } $via = json_encode($viaToSave); $sn = Model_Order::generateSn(); $order = new Model_Order(); $order->set('sn', $sn); $order->set('user_id', $this->user->get('id')); foreach ($availableParams as $paramName) { $value = trim($this->getParam($paramName, '')); $colName = str_replace('-', '_', $paramName); $order->set($colName, $value); } $order->set('via', $via); $order->set('created_time', time()); $order->save(); //Mail it. $time = date('Y-m-d H:i', $order->get('created_time')); $mailBody = <<<EOT <!DOCTYPE html> <html lang="en"> <head> \t<meta charset="UTF-8"> \t<title>新订单</title> </head> <body> <style> dt { \tfont-weight:bold; \tfont-size:12px; } dd { \tfont-size:14px; } </style> <h2>新订单:{$order->get('sn')}</h2> <dl> <dt>下单时间</dt><dd>{$time}</dd> <dt>下单人</dt><dd>{$order->get('contact_name')}</dd> <dt>乘客</dt><dd>{$order->get('passenger_names')}</dd> <dt>时间</dt><dd>{$order->get('when')}</dd> <dt>城市</dt><dd>{$order->get('city')}</dd> <dt>起始地</dt><dd>{$order->get('pickup_address')}</dd> <dt>终点</dt><dd>{$order->get('dropoff_address')}</dd> </dl> <p><a href="http://www.carrentalsbeijing.com/private-car-management/order-detail?sn={$order->get('sn')}" target="_blank">查看订单详情</a></p> ✉ </body> </html> EOT; $mailSubject = "新订单 {$order->get('passenger_names')}从{$order->get('pickup_address')}到{$order->get('dropoff_address')}"; $mailRecipients = Application::getConfig()['order_mail_recipients']; $mailQueue = new Model_MailQueue(); $mailQueue->set('to', $mailRecipients); $mailQueue->set('subject', $mailSubject); $mailQueue->set('message', $mailBody); $mailQueue->set('created_time', time()); $mailQueue->save(); $arp->setStatus(AjaxResponse::STATUS_OK); $arp->setMessage($sn); $this->json($arp); }