浏览代码

售后提交,退款金额

lizhen_gitee 4 月之前
父节点
当前提交
9f9645f119
共有 1 个文件被更改,包括 32 次插入0 次删除
  1. 32 0
      addons/shopro/controller/order/Aftersale.php

+ 32 - 0
addons/shopro/controller/order/Aftersale.php

@@ -85,6 +85,12 @@ class Aftersale extends Common
             $content = $params['content'] ?? '';
             $images = $params['images'] ? json_decode(htmlspecialchars_decode($params['images']),true) : [];
 
+            //申请退款金额
+            $refund_money = round(floatval($params['apply_refund_price']), 2);
+            if ($refund_money <= 0) {
+                $this->error('请输入正确的退款金额');
+            }
+
             //寄回信息
             /*$express_id = $params['express_id'] ?? 0;
             $express_no = $params['express_no'] ?? '';
@@ -119,6 +125,24 @@ class Aftersale extends Common
                 error_stop('当前订单商品不可申请售后');
             }
 
+            //apply_refund_price 限制金额
+            $ordernew = OrderModel::withTrashed()->with('items')->find($order_id);
+            if (!$ordernew) {
+                $this->error('订单不存在');
+            }
+            $items = $ordernew->items;
+            $items = array_column($items, null, 'id');
+
+            // 当前订单已退款总金额
+            $refunded_money = array_sum(array_column($items, 'refund_fee'));
+            // 剩余可退款金额
+            $refund_surplus_money = bcsub($order->pay_fee, (string)$refunded_money, 2);
+            // 如果退款金额大于订单支付总金额
+            if (bccomp((string)$refund_money, $refund_surplus_money, 2) === 1) {
+                $this->error('退款总金额不能大于实际支付金额');
+            }
+
+
             $aftersale = new AftersaleModel();
             $aftersale->aftersale_sn = get_sn($user->id, 'A');
             $aftersale->user_id = $user->id;
@@ -141,6 +165,7 @@ class Aftersale extends Common
             $aftersale->dispatch_fee = $item['dispatch_fee'];
             $aftersale->aftersale_status = AftersaleModel::AFTERSALE_STATUS_NOOPER; // 未处理
             $aftersale->refund_status = AftersaleModel::REFUND_STATUS_NOREFUND;      // 未退款
+            $aftersale->apply_refund_price = $refund_money;
             $aftersale->refund_fee = 0;
             $aftersale->reason = $reason;
             $aftersale->content = $content;
@@ -174,6 +199,13 @@ class Aftersale extends Common
         $this->success('申请成功', $aftersale);
     }
 
+    //售后寄回
+    public function send(){
+        $user = auth_user();
+        $params = $this->request->param();
+
+    }
+
     //取消售后
     public function cancel()
     {