alroyso 3 月之前
父節點
當前提交
edc8893725
共有 2 個文件被更改,包括 28 次插入18 次删除
  1. 1 1
      .idea/dataSources.local.xml
  2. 27 17
      app/Services/OrderService.php

+ 1 - 1
.idea/dataSources.local.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="dataSourceStorageLocal" created-in="PS-242.21829.154">
+  <component name="dataSourceStorageLocal" created-in="PS-243.21565.202">
     <data-source name="api_niubiyun_xyz@158.247.203.230" uuid="1e09a6f5-c562-4514-a27d-37e0d8ac0291">
       <database-info product="MySQL" version="5.7.43-log" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-j-8.2.0 (Revision: 06a1f724497fd81c6a659131fda822c9e5085b6c)" dbms="MYSQL" exact-version="5.7.43" exact-driver-version="8.2">
         <extra-name-characters>#@</extra-name-characters>

+ 27 - 17
app/Services/OrderService.php

@@ -284,28 +284,38 @@ class OrderService
     {
         $referralType = sysConfig('referral_type');
 
-        if ($referralType && $user->inviter_id) {// 是否需要支付佣金
+        if ($referralType && $user->inviter_id) {
             $inviter = $user->inviter;
-            // 获取历史返利记录
             $referral = ReferralLog::whereInviteeId(self::$order->user_id)->doesntExist();
-            // 无记录 / 首次返利
-            if ($referral && sysConfig('is_invite_register')) {
-                // 邀请注册功能开启时,返还邀请者邀请名额
-                $inviter->update(['invite_num' => $inviter->invite_num + 1]);
-            }
-            // 按照返利模式进行返利判断
-            if ($referralType == 2 || $referral) {
-                $this->addReferralLog(
-                    $user->id,
-                    $inviter->id,
-                    self::$order->id,
-                    self::$order->amount,
-                    self::$order->amount * sysConfig('referral_percent')
-                );
+
+            DB::beginTransaction();
+            try {
+                if ($referral && sysConfig('is_invite_register')) {
+                    $inviter->update(['invite_num' => $inviter->invite_num + 1]);
+                }
+
+                if ($referralType == 2 || $referral) {
+                    $this->addReferralLog(
+                        $user->id,
+                        $inviter->id,
+                        self::$order->id,
+                        self::$order->amount,
+                        self::$order->amount * sysConfig('referral_percent')
+                    );
+                }
+
+                DB::commit();
+            } catch (\Exception $e) {
+                DB::rollBack();
+                Log::error("Failed to set commission expense", [
+                    'exception' => $e->getMessage(),
+                    'userid' => $user->id,
+                    'orderId' => self::$order->id
+                ]);
+                return false;
             }
         }
         return true;
-
     }
 
     /**