public function createExchangeQueueByOrder($OrderInfo) { $oOrder = new Lm_Order(); $OrderInfo = $oOrder->getRow($OrderInfo['OrderId']); //订单存在 if ($OrderInfo['OrderId']) { //需要自动兑换 if ($OrderInfo['AppId'] != 100) { //尚未执行扣款和添加兑换队列操作 if ($OrderInfo['OrderStatus'] == 1) { $time = time(); //初始化兑换信息 $ExchangeInfo = array('OrderId' => $OrderInfo['OrderId'], 'AppId' => $OrderInfo['AppId'], 'PartnerId' => $OrderInfo['PartnerId'], 'Coin' => $OrderInfo['Coin'], 'ServerId' => $OrderInfo['ServerId'], 'UserId' => $OrderInfo['AcceptUserId'], 'AppCoin' => $OrderInfo['AppCoin'], 'UserSourceId' => $OrderInfo['UserSourceId'], 'UserSourceDetail' => $OrderInfo['UserSourceDetail'], 'UserSourceProjectId' => $OrderInfo['UserSourceProjectId'], 'UserSourceActionId' => $OrderInfo['UserSourceActionId'], 'UserRegTime' => $OrderInfo['UserRegTime'], 'ExchangeStatus' => 0, 'ReTryCount' => 0, 'ExchangeType' => 1, 'CreateExchangeTime' => $time, 'ExchangeId' => date("YmdHis", $time) . sprintf("%04d", rand(1, 9999)), 'ToSendTime' => $time); $oUser = new Lm_User(); $UserInfo = $oUser->GetUserById($OrderInfo['AcceptUserId']); //用户存在 if ($UserInfo['UserId']) { //余额不足 if ($UserInfo['UserCoin'] < $OrderInfo['Coin']) { return false; } else { $this->db->begin(); $queueTable = Base_Widget::getDbTable($this->table_exchange_queue); //添加兑换队列 $addQueue = $this->db->insert($queueTable, $ExchangeInfo); //扣款 $coinUpdate = $oUser->updateUserCoin($UserInfo['UserId'], $OrderInfo['Coin'] * -1); //更新订单 $updateOrderBind = array('OrderStatus' => 4, 'ExchangeId' => $ExchangeInfo['ExchangeId']); $updateOrder = $oOrder->updateOrder($ExchangeInfo['OrderId'], $ExchangeInfo['UserId'], $updateOrderBind); if ($addQueue && $coinUpdate && $updateOrder) { //执行 $this->db->commit(); return $ExchangeInfo['ExchangeId']; } else { $this->db->rollBack(); return false; } } } else { return false; } } elseif ($OrderInfo['OrderStatus'] > 1) { return true; } elseif ($OrderInfo['OrderStatus'] < 1) { return false; } } else { return true; } } else { return false; } }