這個主要用于有邏輯判斷的代碼。
比如 裡面要處理一些内容,但是又要控制一些輸出或者什麼邏輯的。
XXX 代碼又是一個整體,裡面可以直接break等處理的時候,就很有用
<?php
do{
if(is_fail($balance_result)){
$response = $balance_result;
break;
}
$balance = $balance_result["data"]["balance"];
if($balance < $order["diamond_num"]){
if(! $is_retry){
Model_Failorder::instance()->insert(array(
'order_id' => $order['order_id'],
), true);
}
$money_as_str = Common_Money::format_money(self::balance2money($balance));
$response = fail(__(sprintf("餘額不足(餘額隻有%s元)", $money_as_str)));
break;
}
$consume_result = $this->consume($user, $yyb_user, $order);
if(is_fail($consume_result)){
$response = $consume_result;
if($response['data']['yyb_code'] == Common_Yyb::YYB_CODE_AUTH_FAIL){
Model_Loginretryorder::instance()-> ins_by_ignore(array(
'order_id' => $order['order_id'],
'user_id' => $order['user_id'],
));
}
break;
}
$channel_status = Common_Pay::CS_SUCCESS;
Model_Order::instance()->update_by_order_num($order_num, array(
'channel_status' => $channel_status,
));
$response = Common_Pay::complete_order_by_order_num($order_num, $is_inject);
Common_Yyb::on_gdt_complete_order($order);
$response['data']['consume_success'] = true;
}while(false);
if(is_fail($response)){
//記錄訂單失敗原因
Model_Order::instance()->update_by_order_num($order_num, array(
'channel_status' => $channel_status,
'fail_reason' => $response['msg'],
));
}
return $response;