gorden 6 сар өмнө
parent
commit
ceafeabeab

+ 31 - 10
app/admin/controller/order/RefundController.php

@@ -4,6 +4,7 @@ namespace app\admin\controller\order;
 
 use app\admin\validate\order\ReturnValidate;
 use app\controller\Curd;
+use app\model\CouponDetail;
 use app\model\GoodsComponent;
 use app\model\MemberAccount;
 use app\model\Order;
@@ -37,7 +38,7 @@ class RefundController extends Curd
         $type = $request->get('type', '');
         $field = $field ?? 'order_return_addtimes';
         $where['order_return_category'] = '退款';
-        if (!empty($where['order_return_addtimes'])){
+        if (!empty($where['order_return_addtimes'])) {
             $where['order_return_addtimes'][0] = strtotime($where['order_return_addtimes'][0]);
             $where['order_return_addtimes'][1] = strtotime($where['order_return_addtimes'][1]);
         }
@@ -107,13 +108,13 @@ class RefundController extends Curd
                     'goods' => function ($query) {
                         $query->select('goods_id', 'goods_name');
                     }
-                ])->select('join_sheet_order_id','join_sheet_goods_id')
-                    ->where('join_sheet_order_id',$item['order']->order_id)
+                ])->select('join_sheet_order_id', 'join_sheet_goods_id')
+                    ->where('join_sheet_order_id', $item['order']->order_id)
                     ->get()
                     ->toArray();
                 $goodsName = !empty($orderSheet) ? $orderSheet[0]['goods']['goods_name'] : '';
-                if (count($orderSheet) > 1){
-                    $goodsName.= ' 等';
+                if (count($orderSheet) > 1) {
+                    $goodsName .= ' 等';
                 }
                 $item['goods_name'] = $goodsName;
             }
@@ -127,8 +128,8 @@ class RefundController extends Curd
             }
             if (!empty($item['order_return_refund_json']) && is_json($item['order_return_refund_json'])) {
                 $returnRefundJson = json_decode($item['order_return_refund_json'], true);
-                if (!empty($returnRefundJson['user_id'])){
-                    $item['userName'] = SysUser::where('user_id',$returnRefundJson['user_id'])->value('user_name');
+                if (!empty($returnRefundJson['user_id'])) {
+                    $item['userName'] = SysUser::where('user_id', $returnRefundJson['user_id'])->value('user_name');
                 }
             }
         }
@@ -252,8 +253,8 @@ class RefundController extends Curd
         $return = OrderReturn::where('join_return_order_id', $orderId)->first();
         if (!empty($return->order_return_refund_json)) {
             $returnRefundJson = json_decode($return->order_return_refund_json, true);
-            if (!empty($returnRefundJson['user_id'])){
-                $return->userName = SysUser::where('user_id',$returnRefundJson['user_id'])->value('user_name');
+            if (!empty($returnRefundJson['user_id'])) {
+                $return->userName = SysUser::where('user_id', $returnRefundJson['user_id'])->value('user_name');
             }
         }
         $express = OrderExpress::where('join_express_order_id', $orderId)->first();
@@ -301,6 +302,26 @@ class RefundController extends Curd
         $response = [];
         Db::beginTransaction();
         try {
+            // 全额退款,检查优惠券,恢复可使用
+            if (sprintf("%.2f", $amount) == sprintf("%.2f", $order->order_amount_pay)) {
+                if (!empty($order->order_discount_json)) {
+                    $discountJson = json_decode($order->order_discount_json, true);
+                    foreach ($discountJson as $item){
+                        if (empty($item['coupon_id'])){
+                            continue;
+                        }
+
+                        // 是否有其他订单一起使用优惠券
+                        if(!Order::where('order_groupby',$order->order_groupby)->where('order_id','<>',$order->order_id)->where('order_is_complete','<>','R')->exists()){
+                            CouponDetail::where('coupon_detail_id',$item['coupon_id'])->update([
+                                'coupon_detail_status'=>'ACTIVED',
+                                'coupon_detail_used_datetime'=>''
+                            ]);
+                        }
+                    }
+                }
+
+            }
             // 主订单,退款作为优惠入库
             $this->updateMainOrderByRefund($order, $amount, $remark);
             // return 表记录
@@ -347,7 +368,7 @@ class RefundController extends Curd
                     $prepayid = $order->join_order_member_id . '-WELFARE';
                     $this->refundToWelfare($order->join_order_member_id, $amount);
                     $response = ['order_id' => $order->order_id, 'member_id' => $order->join_order_member_id];
-                }  elseif (isset($payWay[1]) && $payWay[1] == 'VIP') {
+                } elseif (isset($payWay[1]) && $payWay[1] == 'VIP') {
                     $prepayid = $order->join_order_member_id . '-VIP';
                     $this->refundToVIP($order->join_order_member_id, $amount);
                     $response = ['order_id' => $order->order_id, 'member_id' => $order->join_order_member_id];