Exemple #1
0
<?php

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Db' . DIRECTORY_SEPARATOR . 'Local.php';
// 红包ID
$bonus_id = isset($_POST['bonus_id']) ? $_POST['bonus_id'] : 0;
// 用户ID
$uid = isset($_POST['uid']) ? $_POST['uid'] : 0;
try {
    Local::beginTransaction();
    $userBonus = Local::fetchOne('SELECT * FROM `user_bonus` WHERE user_id=:user_id AND bonus_id=:bonus_id LIMIT 1', [':user_id' => $uid, ':bonus_id' => $bonus_id]);
    if (isset($userBonus['id']) == false || $userBonus['status'] == 1) {
        throw new Exception('红包已经使用或者不存在.', 100);
    }
    // 插入订单表
    Local::exec('INSERT INTO orders(uid,bonus_id) VALUES ("' . $uid . '","' . $bonus_id . '")');
    // 更新红包的使用状态
    if (Local::exec('UPDATE user_bonus SET status = 1, version=version+1 WHERE id=:id AND version=:version', [':id' => $userBonus['id'], ':version' => $userBonus['version']]) == false) {
        throw new Exception('系统异常,请重试.', 200);
    }
    Local::commit();
    echo '{"code":"0","message":"订单生成成功"}';
} catch (Exception $e) {
    Local::rollBack();
    echo '{"code":"' . $e->getCode() . '","message":"' . $e->getMessage() . '"}';
}