Exemplo n.º 1
0
 public static function outStockInsertOrderProduct($order_code, $sku, $qt)
 {
     //DB::Debug();
     $stocknum = ProductsStock::getSkuStock($sku);
     //检查库存是否充足
     if ($stocknum < $qt) {
         return false;
     }
     DB::tranBegin('outStockInsertOrderProduct');
     //事务开始
     $stock_ids = ProductsStock::getSkuOutStock($sku, $qt);
     //查询库存中的批号
     if (!$stock_ids) {
         return false;
     }
     foreach ($stock_ids as $sid => $stocks) {
         $exp_date = isset($stocks['exp_date']) ? (int) $stocks['exp_date'] : 0;
         $stock = isset($stocks['stock']) ? (int) $stocks['stock'] : 0;
         if ($stock < 1) {
             continue;
         }
         ProductsStock::reduce("id='{$sid}'", 'stock', $stock);
         //从库存和批号中减去
         OrdersProducts::insert(array('order_code' => $order_code, 'product_sku' => $sku, 'product_num' => $stock, 'exp_date' => $exp_date));
     }
     $commit_status = DB::tranEnd('outStockInsertOrderProduct');
     return $commit_status;
 }
Exemplo n.º 2
0
 public static function signUp(array $data)
 {
     if (!$data) {
         return false;
     }
     if (!isset($data['last_login_time'])) {
         $data['last_login_time'] = time();
     }
     if (!isset($data['last_login_ip'])) {
         $data['last_login_ip'] = Func::getIP();
     }
     if (!isset($data['login_time'])) {
         $data['login_time'] = time();
     }
     if (!isset($data['login_ip'])) {
         $data['login_ip'] = Func::getIP();
     }
     if (!isset($data['create_time'])) {
         $data['create_time'] = time();
     }
     $data['login_count'] = 1;
     $data['user_code'] = self::getNewUserCode();
     $insertid = 0;
     DB::tranBegin();
     $insertid = self::insert($data);
     DB::tranEnd();
     return $insertid;
 }
Exemplo n.º 3
0
function save()
{
    $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : array();
    $order_code = isset($_REQUEST['order_code']) ? $_REQUEST['order_code'] : '';
    $user_code = isset($_SESSION['user_code']) ? $_SESSION['user_code'] : '';
    $bh_order_code = str_replace('SK', 'BH', $order_code);
    $order_bh = Orders::getOne(array('order_code' => $bh_order_code));
    if ($order_bh) {
        $time = $order_bh['create_time'];
        $time = date('Y-m-d H:i:s', $time);
        Templates::Assign('errormsg', "订单已在 {$time} 补过一次货,不能再补货了。");
        Templates::Display('error.html');
        exit;
    }
    $orders = Orders::getOne(array('order_code' => $order_code, 'order_status' => 5), 'id, order_status');
    $order_status = isset($orders['order_status']) ? (int) $orders['order_status'] : 0;
    if (!$orders) {
        Templates::Assign('errormsg', "订单未找到,请核对该订单能补货 ,订单号: {$order_code}, order_status : {$order_status}");
        Templates::Display('error.html');
        exit;
    }
    DB::Debug();
    DB::tranBegin('replen');
    //事务开始
    Orders::createBHOrder($order_code);
    //生成补货订单
    foreach ($ids as $id) {
        $replen = OrdersBH::getData($id);
        $qt = $replen['num'];
        $sku = $replen['sku'];
        $status = ProductsStock::outStockInsertOrderProduct($bh_order_code, $sku, $qt);
        if (!$status) {
            DB::rollBack();
            Templates::Assign('errormsg', "补货保存失败,[{$sku}] 库存不足,错误代码 BH001");
            Templates::Display('error.html');
            exit;
        }
        OrdersBH::update($id, array('status' => 1));
    }
    $commit_status = DB::tranEnd('replen');
    header("Location: /order/?order_code={$order_code}");
}
Exemplo n.º 4
0
 public static function add($order_code, $product_sku, $product_num)
 {
     if (!$order_code || !$product_sku || !$product_num) {
         return false;
     }
     $stock_ids = ProductsStock::getSkuOutStock($product_sku, $product_num);
     if (!$stock_ids) {
         return false;
     }
     DB::tranBegin();
     //事务开始
     foreach ($stock_ids as $id => $stocks) {
         $exp_date = isset($stocks['exp_date']) ? (int) $stocks['exp_date'] : 0;
         $stock = isset($stocks['stock']) ? (int) $stocks['stock'] : 0;
         ProductsStockLock::insert(array('order_code' => $order_code, 'product_sku' => $product_sku, 'product_num' => $stock, 'exp_date' => $exp_date, 'create_time' => time(), 'status' => 0));
         ProductsStock::reduce("id='{$id}'", 'stock', $stock);
     }
     $commit_status = DB::tranEnd();
     return $commit_status;
 }
Exemplo n.º 5
0
function orderNotify()
{
    $orders = Orders::publicPayOrderSignVerify();
    $order_code = isset($orders['order_code']) ? $orders['order_code'] : '';
    $order_id = isset($orders['id']) ? (int) $orders['id'] : 0;
    $order_status = isset($orders['order_status']) ? (int) $orders['order_status'] : 0;
    $pay_transaction_id = isset($orders['pay_transaction_id']) ? $orders['pay_transaction_id'] : '';
    $paid = isset($orders['paid']) ? $orders['paid'] : 0;
    $paymethod_code = $orders['paymethod_code'];
    if (1 == $order_status) {
        $pay_method = PaymentMethod::getOne(array('code' => $paymethod_code), 'id');
        $pay_method = isset($pay_method['id']) ? (int) $pay_method['id'] : 0;
        $sk_order_code = null;
        $order_type = substr($order_code, -2, 2);
        if ('YK' == $order_type) {
            $sk_order_code = str_replace('YK', 'SK', $order_code);
        }
        DB::tranBegin('notify');
        //事务开始
        Orders::update(array('order_code' => $order_code), array('paid' => $paid, 'order_status' => 2, 'pay_method' => $pay_method, 'pay_transaction_id' => $pay_transaction_id, 'pay_time' => time()));
        if ($sk_order_code) {
            Orders::update(array('order_code' => $sk_order_code), array('order_status' => 5));
        }
        ProductsStockLock::changeStatus($order_code, 1);
        OrdersProducts::updateOrderProductStock($order_code);
        $commit_status = DB::tranEnd('notify');
        if (!$commit_status) {
            ABase::toJson(1, 'FAIL', $orders);
        }
    }
    ABase::toJson(0, 'SUCCESS', $orders);
}
Exemplo n.º 6
0
//先把状态改成 订单取消,回滚完库存把状态改成7:订单关闭
ABase::log("Order ids in 1 hour : " . serialize($ids), 'cron_');
$time = time() - 10800;
//3小时前的订单库存回收,考虑订单生成后还差一分钟订单失效时用户点击付款,并在付款操作时又等待了2小时
$orders = Orders::getList("create_time<{$time} AND order_status=6", 'id,order_code');
//首先在1个小时内使订单失效
foreach ($orders as $k => $order) {
    $oid = $order['id'];
    $order_code = $order['order_code'];
    $order_type = substr($order_code, -2, 2);
    if ('SK' != $order_type) {
        unset($orders[$k]);
        continue;
    }
    //DB::Debug();
    $stocks = ProductsStockLock::getList("order_code='{$order_code}' AND status=0");
    ABase::log("Stocks in 3 hour order: " . serialize($stocks), 'cron_');
    DB::tranBegin('stock_recycle');
    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('stock_recycle');
}
ABase::log("Orders in 3 hour : " . serialize($orders), 'cron_');
//---------- END 过期未支付订单库存回收
Exemplo n.º 7
0
 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');
 }
Exemplo n.º 8
0
     $info = ProductsSku::getData($sku_id);
     $current_price = isset($info['current_price']) ? $info['current_price'] : 0.0;
     $item = ProductsSku::getSkuItem($info['item'], 'title');
     $title = $item['title'];
     $total = $total + $qt * $current_price;
 }
 $len = count($sku_ids);
 if ($len > 1) {
     $title = "合并| {$len} 笔订单";
 }
 $newtotal = $total * $discount;
 $address = ReceiverAddress::getData($addressid);
 unset($address['id']);
 $address['module_id'] = 3;
 //---DB::Debug();
 DB::tranBegin('pay');
 //事务开始
 $address_id = ReceiverAddress::insert($address);
 $data = array('order_code' => $order_code, 'user_code' => $user_code, 'discount' => $discount, 'amount' => $newtotal, 'receiver_address_id' => $address_id, 'create_time' => time());
 $order_id = Orders::insert($data);
 foreach ($sku_ids as $sku_id => $qt) {
     $product_sku = ProductsSku::getData($sku_id, 'sku');
     $product_sku = isset($product_sku['sku']) ? $product_sku['sku'] : '';
     $stocknum = ProductsStock::getSkuStock($product_sku);
     if (!$product_sku || $stocknum < $qt) {
         DB::rollBack();
         Templates::Assign('errormsg', "订单保存失败,[{$product_sku}] 库存不足,错误代码 PY001");
         Templates::Display('error.html');
         exit;
     }
     $data = array('order_code' => $order_code, 'product_sku' => $product_sku, 'product_num' => $qt);