|
@@ -261,8 +261,10 @@ class Orders extends Api
|
|
|
* @ApiParams (name=reason2,description=原因2)
|
|
|
* @ApiParams (name=amount,description=金额)
|
|
|
* @ApiParams (name=fix_order_no,description=维修订单号,在拍维修费时需要)
|
|
|
+ * @ApiParams (name=is_edit,description="是1否0修改售后信息")
|
|
|
*/
|
|
|
public function refund(){
|
|
|
+ $save=[];
|
|
|
$data=$this->_validate([
|
|
|
'order_info_id|订单'=>['require','integer','gt:0'],
|
|
|
]);
|
|
@@ -276,35 +278,37 @@ class Orders extends Api
|
|
|
}
|
|
|
$order->allowRefund();
|
|
|
$refund=$orderInfo->refund;
|
|
|
- if($refund && $refund['refund_status']==$refund::REFUND_ING){
|
|
|
- Db::rollback();
|
|
|
- $this->error('您已提交,不能再次提交');
|
|
|
+ if(!empty($data['is_edit'])) {
|
|
|
+ if(!$refund){
|
|
|
+ Db::rollback();
|
|
|
+ $this->error('未找到售后信息无法修改');
|
|
|
+ }
|
|
|
+ if ($refund && !$refund->allowEdit()) {
|
|
|
+ Db::rollback();
|
|
|
+ $this->error('该售后无法修改');
|
|
|
+ }
|
|
|
}
|
|
|
- $config=Refund::makeRefundConfig($orderInfo,false,false);
|
|
|
+ $config=Refund::makeRefundConfig($orderInfo,false);
|
|
|
if(empty($config)){
|
|
|
Db::rollback();
|
|
|
$this->error('该订单无法满足售后条件');
|
|
|
}
|
|
|
$this->_validate([
|
|
|
- 'refund_type|售后方式'=>['require','in:'.implode(',',array_filter(array_keys($config['refund_type'])))],
|
|
|
- //'num|数量'=>['require','integer','gt:0',"elt:{$orderInfo['num']}"],
|
|
|
- 'refund_by|退货方式'=>['require','integer','egt:0','in:'.implode(',',array_keys($config['type']))],
|
|
|
+ 'refund_type|售后方式'=>['require','in:'.implode(',',array_keys($config['refund_type']))],
|
|
|
'reason1|退款退货原因'=>['require','integer','egt:0','in:'.implode(',',array_keys($config['reason']))],
|
|
|
'reason2|原因'=>['require','max:100'],
|
|
|
+ 'num|数量'=>['require','integer','gt:0',"elt:{$orderInfo['num']}"],
|
|
|
+ 'num_install|安装数量'=>['require','integer','egt:0',"elt:{$orderInfo['num']}"],
|
|
|
]);
|
|
|
- if($config['req_amount']){
|
|
|
- /*$this->_validate([
|
|
|
- 'amount|金额'=>['require','float','gt:0',"elt:{$orderInfo['amount_pay']}"],
|
|
|
- ]);*/
|
|
|
- $data['amount']=RefundService::setOrderInfo($orderInfo,$orderInfo['num'],$orderInfo['num_install'])->amount(true);
|
|
|
- $data['num']=$config['num'];
|
|
|
- $data['num_install']=$config['num_install'];
|
|
|
- }else{
|
|
|
- $data['amount']=0;
|
|
|
+ if(!empty($config['type'])) {
|
|
|
$this->_validate([
|
|
|
- 'num_install|安装数量'=>['require','integer','gt:0',"elt:{$orderInfo['num_install']}"],
|
|
|
+ 'refund_by|退货方式' => ['require', 'integer', 'in:' . implode(',', array_keys($config['type'][$data['refund_type']]))],
|
|
|
]);
|
|
|
}
|
|
|
+ if($config['refund_type']==Refund::REFUND_TYPE_HHBX){
|
|
|
+ $save['amount']=0;
|
|
|
+ $save['amount_install']=0;
|
|
|
+ }
|
|
|
$fix_order_id=0;
|
|
|
if($config['req_order']){
|
|
|
$this->_validate([
|