事务我写了多次回滚是否正确

浏览:2468 发布日期:2015/01/10 分类:求助交流 关键字: 事务 多表事务
因为跟金钱有关,所以用了事务,因为是多表更新,并且写了4次回滚,也不知道写法有没有问题,特请教,代码是否合理,事务是否合理,请各位指正
代码如下:public function checkset() {
            $post = I ( 'post.' );
            $id = intval ( $post ['id'] );
            if ($id < 1) {
                $this->error ( 'ID不存在,非法操作' );
            } 
            $list = $this->task_is_own ( $id );
            if (empty ( $list )) {
                $this->error ( '数据为空,审核失败' );
            }
            $innum = 0;
            $checks = intval ( $post ['checks'] );
            if ($checks > 0) {
                
                if (intval ( $list ['is_praise'] ) < 1) { 
                    $post ['status'] = 5;
                    $innum = 1;
                }
            }
            $order = M ( 'olist' );
            // 启动事务
            $order->startTrans ();
            if ($order->create ( $post )) {
                if (false === $order->save ()) {
                    // 事务回滚
                    $order->rollback ();
                    $this->error ( '审核失败' );
                }
            } else {
                // 事务回滚
                $order->rollback ();
                $this->error ( '验证失败' );
            } 
              
            if ($checks < 2) {
                // 提交事务
                $order->commit ();
                $this->success ( "提交成功!", U ( 'checkno' ) );
                exit ();
            } 
            
            $money = format_money ( $list ['trademoney'] );
            if (false === $this->deduct_taskmoney ( $list ['taskid'], $money ) || false === $this->deduct_sellermoney ( $list ['sellerid'], $money )) {
                // 事务回滚
                $order->rollback ();
                $this->error ( '更新金额失败' );
            } 
            
            if (false === $this->add_usermoney ( $list ['userid'], $money )) {
                // 事务回滚
                $order->rollback ();
                $this->error ( '添加金额失败' );
            }
            
            $order->commit ();
            $this->success ( "提交成功!", U ( 'checktaskok' ) );
            $this->add_money_logs ( $money, $list ['userid'], $list ['username'], $list ['orderid'], "$id 金额" );
            $this->smallset ( $list ['smallid'], $money, $innum );
            if ($innum > 0) {
                $this->add_usernum ( $list ['userid'] );
            }
            exit ();
    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>