public static function cancelOrder($order_code, $user) { $order_type = substr($order_code, -2, 2); if ('SK' != $order_type) { return false; } $order = Orders::getOne(array('order_code' => $order_code), 'id, order_status'); if (1 != $order['order_status']) { return false; } $oid = $order['id']; //DB::Debug(); $stocks = ProductsStockLock::getList("order_code='{$order_code}' AND status=0"); ABase::log("Stocks in cancelOrder: " . serialize($stocks), 'cancel_order_'); DB::tranBegin('Orders.cancelOrder'); //事务开始 OrdersLog::insert(array('order_code' => $order_code, 'ex_status' => '取消订单', 'admin' => $user, 'action' => '订单取消', 'ip' => Func::getIP(), 'create_time' => time())); foreach ($stocks as $stock) { $sid = $stock['id']; $product_sku = $stock['product_sku']; $product_num = $stock['product_num']; $exp_date = $stock['exp_date']; ProductsStock::increase("product_sku='{$product_sku}' AND exp_date='{$exp_date}'", "stock", $product_num); ProductsStockLock::update($sid, array('status' => 2)); } Orders::update($oid, array('order_status' => 7)); $commit_status = DB::tranEnd('Orders.cancelOrder'); }
ABase::toJson(1, 'action error'); } } else { $order_code = str_replace('YK', 'SK', $order_code); $order_code = str_replace('BH', 'SK', $order_code); $orders = Orders::getOne(array('order_code' => $order_code)); $order_status = $orders['order_status']; $cancel_time = 0; if ($order_status > 2) { $shiped = OrdersLog::getOne(array('order_code' => $order_code, 'action' => '订单取消'), 'create_time'); $cancel_time = isset($shiped['create_time']) ? (int) $shiped['create_time'] : 0; } $orders['cancel_time'] = $cancel_time; $shiped_time = 0; if ($order_status > 2) { $shiped = OrdersLog::getOne(array('order_code' => $order_code, 'action' => '已发货'), 'create_time'); $shiped_time = isset($shiped['create_time']) ? (int) $shiped['create_time'] : 0; } $orders['shiped_time'] = $shiped_time; $YK_orders = array(); $yk_order_code = str_replace('SK', 'YK', $order_code); $YK_orders = Orders::getOne(array('order_code' => $yk_order_code)); if ($YK_orders) { $yk_paymethodid = $YK_orders['pay_method']; $YK_orders['yk_pay_method'] = PaymentMethod::getData($yk_paymethodid); } $BH_orders = array(); $BH_products = array(); $bh_order_code = str_replace('SK', 'BH', $order_code); $BH_orders = Orders::getOne(array('order_code' => $bh_order_code)); if ($BH_orders) {