|
@@ -146,6 +146,7 @@ class Wenzhen extends Apic
|
|
|
}
|
|
|
|
|
|
//退珍
|
|
|
+ //因为存在第三方,悲观锁
|
|
|
public function tuizhen(){
|
|
|
$apilimit = $this->apiLimit();
|
|
|
if(!$apilimit){
|
|
@@ -154,12 +155,17 @@ class Wenzhen extends Apic
|
|
|
|
|
|
//订单详情
|
|
|
$order_id = input('order_id',0);
|
|
|
- $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->find();
|
|
|
+
|
|
|
+ Db::startTrans();
|
|
|
+
|
|
|
+ $wenzhen_order = Db::name('wenzhen_order')->where('doctor_id',$this->auth->id)->where('id',$order_id)->lock(true)->find();
|
|
|
if(empty($wenzhen_order)){
|
|
|
+ Db::rollback();
|
|
|
$this->error('不存在的订单');
|
|
|
}
|
|
|
|
|
|
if($wenzhen_order['status'] != 10){
|
|
|
+ Db::rollback();
|
|
|
$this->error('待接诊订单才能退诊');
|
|
|
}
|
|
|
|
|
@@ -171,7 +177,7 @@ class Wenzhen extends Apic
|
|
|
'cancel_reason' => input('cancel_reason','医生主动退珍'),
|
|
|
'finish_time' => $nowtime,
|
|
|
];
|
|
|
- Db::startTrans();
|
|
|
+
|
|
|
|
|
|
//余额支付的直接退款
|
|
|
if($wenzhen_order['pay_type'] == 'wallet'){
|
|
@@ -198,7 +204,7 @@ class Wenzhen extends Apic
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update);
|
|
|
+ $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
|
|
|
if(!$update_rs){
|
|
|
Db::rollback();
|
|
|
$this->error('退珍失败');
|
|
@@ -235,11 +241,9 @@ class Wenzhen extends Apic
|
|
|
|
|
|
$update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',10)->update($update);
|
|
|
if(!$update_rs){
|
|
|
- Db::rollback();
|
|
|
$this->error('接诊失败');
|
|
|
}
|
|
|
|
|
|
- Db::commit();
|
|
|
$this->success(1,'接珍成功');
|
|
|
}
|
|
|
|