|
@@ -456,6 +456,7 @@ class Wenzhen extends Api
|
|
}
|
|
}
|
|
|
|
|
|
//用户发起退珍
|
|
//用户发起退珍
|
|
|
|
+ //因为存在第三方,悲观锁
|
|
public function tuizhen(){
|
|
public function tuizhen(){
|
|
$apilimit = $this->apiLimit();
|
|
$apilimit = $this->apiLimit();
|
|
if(!$apilimit){
|
|
if(!$apilimit){
|
|
@@ -464,23 +465,29 @@ class Wenzhen extends Api
|
|
|
|
|
|
//订单详情
|
|
//订单详情
|
|
$order_id = input('order_id',0);
|
|
$order_id = input('order_id',0);
|
|
- $wenzhen_order = Db::name('wenzhen_order')->where('user_id',$this->auth->id)->where('id',$order_id)->find();
|
|
|
|
|
|
+ Db::startTrans();
|
|
|
|
+
|
|
|
|
+ $wenzhen_order = Db::name('wenzhen_order')->where('user_id',$this->auth->id)->where('id',$order_id)->lock(true)->find();
|
|
if(empty($wenzhen_order)){
|
|
if(empty($wenzhen_order)){
|
|
|
|
+ Db::rollback();
|
|
$this->error('不存在的订单');
|
|
$this->error('不存在的订单');
|
|
}
|
|
}
|
|
|
|
|
|
//仅限视频订单
|
|
//仅限视频订单
|
|
if($wenzhen_order['ordertype'] == 1){
|
|
if($wenzhen_order['ordertype'] == 1){
|
|
|
|
+ Db::rollback();
|
|
$this->error('图文问诊不能退诊');
|
|
$this->error('图文问诊不能退诊');
|
|
}
|
|
}
|
|
|
|
|
|
//状态限制
|
|
//状态限制
|
|
if(!in_array($wenzhen_order['status'],[10,20])){
|
|
if(!in_array($wenzhen_order['status'],[10,20])){
|
|
|
|
+ Db::rollback();
|
|
$this->error('当前订单不能退诊');
|
|
$this->error('当前订单不能退诊');
|
|
}
|
|
}
|
|
|
|
|
|
//超过支付时间一小时不能退
|
|
//超过支付时间一小时不能退
|
|
if( time() - $wenzhen_order['pay_time'] > 3600){
|
|
if( time() - $wenzhen_order['pay_time'] > 3600){
|
|
|
|
+ Db::rollback();
|
|
$this->error('支付超过一小时,不能退诊');
|
|
$this->error('支付超过一小时,不能退诊');
|
|
}
|
|
}
|
|
|
|
|
|
@@ -492,7 +499,7 @@ class Wenzhen extends Api
|
|
'cancel_reason' => '用户付款后退诊',
|
|
'cancel_reason' => '用户付款后退诊',
|
|
'finish_time' => $nowtime,
|
|
'finish_time' => $nowtime,
|
|
];
|
|
];
|
|
- Db::startTrans();
|
|
|
|
|
|
+
|
|
|
|
|
|
//退款要打折扣
|
|
//退款要打折扣
|
|
$wenzhen_refund_bili = config('site.payorder_userrefund_bili') ?: 70;
|
|
$wenzhen_refund_bili = config('site.payorder_userrefund_bili') ?: 70;
|
|
@@ -526,7 +533,7 @@ class Wenzhen extends Api
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->where('status',$wenzhen_order['status'])->update($update);
|
|
|
|
|
|
+ $update_rs = Db::name('wenzhen_order')->where('id',$order_id)->update($update);
|
|
if(!$update_rs){
|
|
if(!$update_rs){
|
|
Db::rollback();
|
|
Db::rollback();
|
|
$this->error('退诊失败');
|
|
$this->error('退诊失败');
|