From b17d9648502e62aa847db8a8b87b966e44013923 Mon Sep 17 00:00:00 2001
From: mkm <727897186@qq.com>
Date: Tue, 2 Jul 2024 17:30:30 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E6=94=AF=E4=BB=98?=
 =?UTF-8?q?=E9=80=9A=E7=9F=A5=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BC=98=E5=8C=96?=
 =?UTF-8?q?=E4=BA=86=E5=85=91=E6=8D=A2=E5=88=B8=E7=9A=84=E5=A2=9E=E5=87=8F?=
 =?UTF-8?q?=E6=93=8D=E4=BD=9C=EF=BC=8C=E5=B9=B6=E7=A7=BB=E9=99=A4=E4=BA=86?=
 =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/common/logic/PayNotifyLogic.php | 101 +---------------------------
 app/common/logic/UserSignLogic.php  |  44 +++++++++---
 2 files changed, 39 insertions(+), 106 deletions(-)

diff --git a/app/common/logic/PayNotifyLogic.php b/app/common/logic/PayNotifyLogic.php
index 566bfbf91..954227c0a 100644
--- a/app/common/logic/PayNotifyLogic.php
+++ b/app/common/logic/PayNotifyLogic.php
@@ -427,14 +427,6 @@ class PayNotifyLogic extends BaseLogic
         self::dealProductLog($order);
         if ($order['shipping_type'] == 3) {
             self::descStock($order['id']);
-            //直接加对应兑换券
-            if ($order->uid > 0) {
-                $level = User::where('id', $order->uid)->value('user_ship');
-                $discount = self::getDiscount($level);
-                $total_vip = bcmul($order['pay_price'], $discount, 2);
-                self::addNewUserSing($order, 8, $total_vip, 1, 1);
-                User::where('id', $order->uid)->inc('integral', $total_vip)->update();
-            }
         }
         if (!empty($extra['payer']['openid']) && $order->pay_type == 7) {
             Redis::send('push-delivery', ['order_id' => $order['order_id'], 'openid' => $extra['payer']['openid']], 4);
@@ -469,14 +461,7 @@ class PayNotifyLogic extends BaseLogic
                 $capitalFlowDao->userExpense('user_order_purchase_pay', 'order', $orderRe['id'], $purchase_funds, '', 1, $orderRe['store_id']);
             }
             //退还 充值得兑换券
-            $level = User::where('id', $order->uid)->value('user_ship');
-            $discount = self::getDiscount($level);
-            $total_price = bcmul($orderRe->refund_price, $discount, 2);
-            self::addNewUserSing($orderRe, 3, $total_price); //冻结
-
-            self::addNewUserSing($orderRe, 6, $total_price, 0, 1); //解冻
-            self::descUserSing($orderRe);
-            //            d($purchase_funds,$orderRe['refund_price'],$orderRe);
+            UserSignLogic::RefundRecharge($orderRe);
             return true;
         }
         $order->status = OrderEnum::REFUND_PAY;
@@ -490,7 +475,6 @@ class PayNotifyLogic extends BaseLogic
         $user = User::where('id', $order['uid'])->findOrEmpty();
         $capitalFlowDao = new CapitalFlowLogic($user);
         $deal_money = bcdiv($extra['amount']['refund'], 100, 2);
-        $check_user_sing = UserSign::where('order_id', $order['order_id'])->count();
         //对应比例得退礼品券逻辑
         $discount = self::getDiscount($user->user_ship);
         $total_price = bcmul($order->refund_price, $discount, 2);
@@ -511,21 +495,12 @@ class PayNotifyLogic extends BaseLogic
                 //退款
                 $capitalFlowDao->userIncome('system_purchase_back', 'system_back', $order['id'], $deal_money);
             }
+            UserSignLogic::RefundOrder($order);
 
-            if ($check_user_sing) {
-                //退还 兑换券
-                self::addNewUserSing($order, 3, $total_price); //冻结
-                self::addNewUserSing($order, 6, $total_price, 0, 1); //解冻
-                self::descUserSing($order);
-            }
             return true;
         }
         //积分
-        if ($check_user_sing) {
-            self::addNewUserSing($order, 3, $total_price); //冻结
-            self::addNewUserSing($order, 6, $total_price, 0, 1); //解冻
-            self::descUserSing($order);
-        }
+        UserSignLogic::RefundOrder($order);
         //微信日志  user_order_refund
         $capitalFlowDao->userIncome('user_order_refund', 'system_back', $order['id'], $deal_money, '', 1);
         //处理财务流水退还
@@ -534,76 +509,6 @@ class PayNotifyLogic extends BaseLogic
         return true;
         //        self::afterPay($order,$extra['transaction_id']);
     }
-    //冻结券和礼品券得操作
-
-    /**
-     * 处理冻结和解冻 礼品券得记录
-     * @param $order // 订单
-     * @param $category // 分类
-     * @param $number // 金额
-     * @param int $pm //收支 0支出 1获得
-     * @type $type //类型 0冻结 1解冻
-     * @return true
-     */
-    public static function addNewUserSing($order, $category, $number, int $pm = 0, $type = 0)
-    {
-        $user_sing = new UserSign();
-        $sing = [
-            'uid' => $order['uid'],
-            'order_id' => $order['order_id'],
-            //                'title' => '购买商品获得兑换券',
-            //            'title' =>  PayNotifyLogic::getTitle($category,$number),
-            'title' =>  $category,
-            'financial_pm' => $pm,
-            'store_id' => $order['store_id'],
-            'number' => $number,
-            'type' => $type,
-            'status' => 1,
-        ];
-        $user_sing->save($sing);
-        return true;
-    }
-
-
-
-    //退积分-->订单
-    public static function descUserSing($order)
-    {
-        //        $user_sing = new UserSign();
-        if ($order['uid'] > 0) {
-            $level = User::where('id', $order['uid'])->value('user_ship');
-            $discount = self::getDiscount($level);
-            $user_number = bcmul($order['refund_price'], $discount, 2);
-            //            $sing = [
-            //                'uid' => $order['uid'],
-            //                'order_id' => $order['order_id'],
-            //                'title' => '退款扣除兑换券',
-            //                'financial_pm' => 0,
-            //                'store_id' => $order['store_id'],
-            //                'number' => $user_number,
-            //            ];
-            //            $user_sing->save($sing);
-            //            //删除之前获得的兑换券
-            //            UserSign::where([
-            //                'order_id' => $order['order_id'],
-            //                'financial_pm' => 1,
-            //            ])->update(['delete_time' => time()]);
-
-            $now_int = User::where('id', $order['uid'])->withTrashed()->find();
-            if ($now_int) {
-                if ($now_int['integral'] > $user_number) {
-                    User::where('id', $order['uid'])->withTrashed()->dec('integral', $user_number)->update();
-                } else {
-                    User::where('id', $order['uid'])->withTrashed()->dec('integral', $now_int['integral'])->update();
-                }
-            }
-        }
-        return true;
-    }
-
-
-
-
 
     /**
      * 现金退款相关
diff --git a/app/common/logic/UserSignLogic.php b/app/common/logic/UserSignLogic.php
index a48cb7413..334f82a76 100644
--- a/app/common/logic/UserSignLogic.php
+++ b/app/common/logic/UserSignLogic.php
@@ -26,11 +26,25 @@ class UserSignLogic extends BaseLogic
             //首充
             $write = self::write($order, $total_vip, 0, 1, 9);
             self::write_log($write, $total_vip, 0, 7);
-            self::write_log($write, $total_vip, 0, 9,0);
+            self::write_log($write, $total_vip, 0, 9, 0);
             User::where('id', $order->uid)->inc('integral', $total_vip)->update();
         }
         return true;
     }
+    /**
+     * 充值退款
+     */
+    public static function RefundRecharge($order)
+    {
+        $find = UserSign::where('uid', $order['uid'])->where('order_id', $order['order_id'])->find();
+        if ($find) {
+            $find->status = -1;
+            $find->save();
+            $number = UserSignLog::where('sid', $find->id)->where('financial_pm', 0)->sum('number');
+            self::write_log($find, $number, 0, 3, 0);
+            User::where('id', $order['uid'])->dec('integral', $number)->update();
+        }
+    }
 
     /**
      * 来自订单
@@ -50,11 +64,25 @@ class UserSignLogic extends BaseLogic
             if ($order['pay_price'] >= 500) {
                 $write = self::write($order, $total_vip, 1, 1, 4);
                 self::write_log($write, $total_vip, 1, 1);
-                self::write_log($write, $total_vip, 1, 2,0);
+                self::write_log($write, $total_vip, 1, 2, 0);
                 User::where('id', $order->uid)->inc('integral', $total_vip)->update();
             }
         }
     }
+    /**
+     * 订单退款
+     */
+    public static function RefundOrder($order)
+    {
+        $find = UserSign::where('uid', $order['uid'])->where('order_id', $order['order_id'])->find();
+        if ($find) {
+            $find->status = -1;
+            $find->save();
+            $number = UserSignLog::where('sid', $find->id)->where('financial_pm', 0)->sum('number');
+            self::write_log($find, $number, 0, 3, 0);
+            User::where('id', $order['uid'])->dec('integral', $number)->update();
+        }
+    }
 
     /**
      * 核销
@@ -66,20 +94,20 @@ class UserSignLogic extends BaseLogic
             $find->status = 1;
             $find->save();
             User::where('id', $order->uid)->inc('integral', $find['number'])->update();
-            self::write_log($find, $find['number'], 1, 2,0);
+            self::write_log($find, $find['number'], 1, 2, 0);
             // self::write_log($find, $find['number'], 1, 4);
         }
     }
     /**
      * 储存商品积分结算
      */
-    public static function storage($order_id,$price)
+    public static function storage($order_id, $price)
     {
         $find = UserSign::where(['order_id' => $order_id, 'status' => 0, 'financial_pm' => 1, 'order_type' => 1])->find();
         if ($find) {
-            self::write_log($find, $price, 1, 2,0);
-            self::write_log($find, $price, 1, 2,1);
-            if($price>$find['number']){
+            self::write_log($find, $price, 1, 2, 0);
+            self::write_log($find, $price, 1, 2, 1);
+            if ($price > $find['number']) {
                 $find->status = 1;
                 $find->save();
             }
@@ -143,7 +171,7 @@ class UserSignLogic extends BaseLogic
     }
 
     //礼品券相关对应文本
-    public static function getTitle($type, $amount,$number)
+    public static function getTitle($type, $amount, $number)
     {
         switch ($type) {
                 /**冻结券**/