YII2事务的用法与过程用法

    /**
     * 取消结算
     * @param $balanceId
     */
    public static function cancelBalance($balanceId,$userId){
        $balanceId = intval($balanceId);

        $connection = Yii::$app->db->beginTransaction();
        try {
            $sql = "SELECT * FROM commission_balance_order where id={$balanceId} for update";
            $order = Yii::$app->db->createCommand($sql)->queryOne();

            if(empty($order)){
                $connection->rollBack();
                return ["status"=>400,"msg"=>"订单不存在"] ;
            }

            if($order['channel_user_id']!=$userId){
                $connection->rollBack();
                return ["status"=>400,"msg"=>"请不要乱作"] ;
            }

            if($order['status']!=ConstantService::BALANCE_STATUS_WAIT_VERIFY && $order['status']!=ConstantService::BALANCE_STATUS_NOT_PASS){
                $connection->rollBack();
                return ["status"=>400,"msg"=>"待审核或审核不通过才允许取消结算"] ;
            }

            $updRs = CommissionBalanceOrder::updateAll(["status"=>ConstantService::BALANCE_STATUS_CANCEL,"update_time"=>date("Y-m-d H:i:s")],["id"=>$balanceId,"channel_user_id"=>$userId]);
            if($updRs){
                $connection->commit() ;
                return ["status"=>200,"msg"=>"订单取消成功"] ;
            }else{
                $connection->rollBack();
                return ["status"=>400,"msg"=>"订单取消失败"] ;
            }
        } catch (\Exception $e) {
            $logArr = [
                "id"     => $balanceId ,
                "userId" =>  $userId ,
                "e"      => $e
            ] ;
            BaseToolService::error($logArr,"cancel_balance_union_errror") ;
            $connection->rollBack();
            return ["status"=>400,"msg"=>"订单取消异常,请稍后再试"] ;
        }

    }



try{
                        $sqlProcedure = "CALL `p_order_create`(:in_status,:in_user_id, :in_commission_detail_id, :in_order_number, @out_status, @out_remark) ";
                        $cmd = Yii::$app->db->createCommand($sqlProcedure);
                        $cmd->bindParam(':in_status',$status);
                        $cmd->bindParam(':in_user_id',$userId);
                        $cmd->bindParam(':in_commission_detail_id',$commissionDetailId);
                        $cmd->bindParam(':in_order_number',$orderNum);
                        $res = $cmd->execute();

                        $s = Yii::$app->db->createCommand("SELECT @out_status AS `out_status`, @out_remark AS `out_remark`");
                        $ret = $s->queryOne();

                        $logArr = [
                            "sqlProcedure" => $sqlProcedure ,
                            "in_user_id" => $userId ,
                            "in_commission_detail_id" => $commissionDetailId ,
                            "in_order_number" => $orderNum ,
                            "out_status" => empty($ret['out_status'])?'':$ret['out_status'] ,
                            "out_remark" => empty($ret['out_remark'])?'':$ret['out_remark'] ,
                        ] ;
                        BaseToolService::info($logArr,"call p_order_create_union_info") ;

                        if($ret['out_status'] == 1){
                            $success = $success + 1;
                        }else {
                            BaseToolService::error($logArr,"call p_order_create_union_errror") ;
                            $fail = $fail + 1;
                        }
                    }catch (\Exception $e){
                        $logArr = [
                            "sqlProcedure" => $sqlProcedure ,
                            "in_user_id" => $userId ,
                            "in_commission_detail_id" => $commissionDetailId ,
                            "in_order_number" => $orderNum ,
                            "msg" => "调用p_order_create异常" ,
                            "exception" => $e
                        ] ;
                        BaseToolService::error($logArr,"call p_order_create_union_errror") ;
                        $fail = $fail + 1;
                    }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值