|
@@ -4,6 +4,7 @@ namespace app\api\controller\mall;
|
|
|
|
|
|
use app\common\controller\Api;
|
|
|
use app\common\model\OrderInfo;
|
|
|
+use app\common\model\Refund;
|
|
|
use app\common\service\OrderService;
|
|
|
use think\Db;
|
|
|
use app\common\model\Orders as Order;
|
|
@@ -207,8 +208,49 @@ class Orders extends Api
|
|
|
|
|
|
/**
|
|
|
* 退货退款
|
|
|
+ * @ApiParams (name=refund_type,description=1退款2退款退货3仅退货)
|
|
|
+ * @ApiParams (name=num,description=退货数量)
|
|
|
+ * @ApiParams (name=order_info_id,description=订单ID)
|
|
|
+ * @ApiParams (name=refund_by,description=退货方式)
|
|
|
+ * @ApiParams (name=reason1,description=原因1)
|
|
|
+ * @ApiParams (name=reason2,description=原因2)
|
|
|
+ * @ApiParams (name=amount,description=金额)
|
|
|
*/
|
|
|
public function refund(){
|
|
|
-
|
|
|
+ $data=$this->_validate([
|
|
|
+ 'order_info_id'=>['require','integer','gt:0'],
|
|
|
+ ]);
|
|
|
+ $user=$this->auth->getUser();
|
|
|
+ $orderInfo=$user->orderInfo()->findOrFail($data['order_info_id']);
|
|
|
+ $order=$orderInfo->orders;
|
|
|
+ if(!$order){
|
|
|
+ $this->error('订单不存在');
|
|
|
+ }
|
|
|
+ if(!$order->allowRefund()){
|
|
|
+ $this->error('该订单不允许退款');
|
|
|
+ }
|
|
|
+ $refund=$orderInfo->refund;
|
|
|
+ if($refund){
|
|
|
+ $this->error('您已提交,不能再次提交');
|
|
|
+ }
|
|
|
+ $this->_validate([
|
|
|
+ 'refund_type|售后方式'=>['require','in:'.array_filter(array_keys(Refund::getRefundTypes()))],
|
|
|
+ 'num|数量'=>['require','integer','gt:0',"elt:{$orderInfo['num']}"],
|
|
|
+ 'amount|金额'=>['require','integer','gt:0',"elt:{$orderInfo['amount_pay']}"],
|
|
|
+ 'reason1|原因'=>['require','max:50'],
|
|
|
+ 'reason2|原因'=>['require','max:100'],
|
|
|
+ 'refund_by|方式'=>['require','max:50'],
|
|
|
+ ]);
|
|
|
+ $orderInfo->refund()->save([
|
|
|
+ 'user_id'=>$user->id,
|
|
|
+ 'order_id'=>$data['order_id'],
|
|
|
+ 'refund_type'=>$data['refund_type'],
|
|
|
+ 'refund_by'=>$data['refund_by'],
|
|
|
+ 'num'=>$data['num'],
|
|
|
+ 'amount'=>$data['amount'],
|
|
|
+ 'reason1'=>$data['reason1'],
|
|
|
+ 'reason2'=>$data['reason2'],
|
|
|
+ ]);
|
|
|
+ $this->success();
|
|
|
}
|
|
|
}
|