示例#1
0
 public static function getOrderNumber()
 {
     $yCode = date('y');
     //年份数
     $mCode = date('m');
     //月份
     $dCode = date('d');
     //日
     $tCode = substr(time(), -3);
     //时间戳的后五位
     $iCode = substr(microtime(), 2, 3);
     //返回时间戳和微秒数,从第二位开始取3位
     $rCode = sprintf('%02d', rand(0, 99));
     //返回0~99的随机整数
     $orderNo = $yCode . '' . $mCode . '' . $dCode . '' . $tCode . '' . $iCode . '' . $rCode;
     while (Order::findOne($orderNo)) {
         $orderNo = Tool::getOrderNumber();
     }
     return $orderNo;
 }
 public function actionInsertorderdata()
 {
     $userId = Yii::$app->session->get(FVariable::$session_userId_str);
     if (!$userId) {
         return $this->redirect(FVariable::$siteLogin_view);
     }
     $addressId = intval(Yii::$app->request->post("addressId"));
     $TotalPrice = floatval(Yii::$app->request->post("TotalPrice"));
     $order = new Order();
     $cart = new Cart();
     $cartList = $cart->findById($userId);
     if (!$cartList) {
         return $this->redirect(FVariable::$home_view);
     }
     $allMoney = "";
     foreach ($cartList as $mk => $mv) {
         $allMoney += $mv['count'] * $mv['productPrice'];
     }
     if ($TotalPrice != $allMoney) {
         $TotalPrice = $allMoney;
     }
     $orderNo = Tool::getOrderNumber();
     $connection = Yii::$app->getDb();
     $transaction = $connection->beginTransaction();
     try {
         $orderDetail = new OrderDetail();
         $orderData = $order->insertOrder($orderNo, $TotalPrice, GlobalArray::$orderStateConstantArray['waitPay'], GlobalArray::$orderPayMethodConstantArray['alipay'], GlobalArray::$orderComeFromConstantArray['WEB'], $userId, $addressId);
         $orderId = Yii::$app->db->getLastInsertID();
         $cartDetail = $cart->findByIdIs($userId);
         if (!$cartDetail) {
             return $this->redirect(FVariable::$home_view);
         }
         $detailArr = [];
         foreach ($cartDetail as $k => $v) {
             $new = [];
             $new[0] = $orderId;
             $new[1] = $v['productId'];
             $new[2] = $v['count'];
             $new[3] = $v['money'];
             $detailArr[$k] = $new;
         }
         $orderDetail->insertOrderDetail($detailArr);
         $product = new Product();
         $orderDetailFind = $orderDetail->findByOrderIdProduct($orderId);
         foreach ($orderDetailFind as $k => $v) {
             $productSelect = $product->findByProductId($v['productId']);
             $productStock = $productSelect->productStock;
             $productSales = $productSelect->productSales;
             $detailArrCount = $productStock - $v['productCount'];
             $productSales = $productSales + $v['productCount'];
             $product->UpdateByStock($v['productId'], $detailArrCount, $productSales);
         }
         $cart->findByIdDelCartAll($userId);
         $transaction->commit();
     } catch (Exception $e) {
         $transaction->rollBack();
         throw $e;
     }
     $this->redirect(Yii::$app->urlManager->createUrl([FVariable::$userOrderpayment_view, 'id' => $orderId]));
 }