Browse Source

update: add commission distribution

tokumeikoi 3 years ago
parent
commit
25b3b11efd
4 changed files with 54 additions and 2 deletions
  1. 12 1
      app/Console/Commands/CheckCommission.php
  2. 16 0
      app/Models/CommissionLog.php
  3. 15 1
      database/install.sql
  4. 11 0
      database/update.sql

+ 12 - 1
app/Console/Commands/CheckCommission.php

@@ -2,6 +2,7 @@
 
 namespace App\Console\Commands;
 
+use App\Models\CommissionLog;
 use Illuminate\Console\Command;
 use App\Models\Order;
 use App\Models\User;
@@ -96,7 +97,7 @@ class CheckCommission extends Command
             $inviter = User::find($inviteUserId);
             if (!$inviter) continue;
             if (!$commissionShareLevels[$l]) continue;
-            $commissionBalance = $order->commission_balance * $commissionShareLevels[$l];
+            $commissionBalance = $order->commission_balance * ($commissionShareLevels[$l] / 100);
             if ((int)config('v2board.withdraw_close_enable', 0)) {
                 $inviter->balance = $inviter->balance + $commissionBalance;
             } else {
@@ -106,6 +107,16 @@ class CheckCommission extends Command
                 DB::rollBack();
                 return false;
             }
+            if (!CommissionLog::create([
+                'invite_user_id' => $inviteUserId,
+                'user_id' => $order->user_id,
+                'trade_no' => $order->trade_no,
+                'order_amount' => $order->total_amount,
+                'get_amount' => $commissionBalance
+            ])) {
+                DB::rollBack();
+                return false;
+            }
             $inviteUserId = $inviter->invite_user_id;
         }
         return true;

+ 16 - 0
app/Models/CommissionLog.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class CommissionLog extends Model
+{
+    protected $table = 'v2_commission_log';
+    protected $dateFormat = 'U';
+    protected $guarded = ['id'];
+    protected $casts = [
+        'created_at' => 'timestamp',
+        'updated_at' => 'timestamp'
+    ];
+}

+ 15 - 1
database/install.sql

@@ -19,6 +19,20 @@ CREATE TABLE `failed_jobs` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
 
+DROP TABLE IF EXISTS `v2_commission_log`;
+CREATE TABLE `v2_commission_log` (
+                                     `id` int(11) NOT NULL AUTO_INCREMENT,
+                                     `invite_user_id` int(11) NOT NULL,
+                                     `user_id` int(11) NOT NULL,
+                                     `trade_no` char(36) NOT NULL,
+                                     `order_amount` int(11) NOT NULL,
+                                     `get_amount` int(11) NOT NULL,
+                                     `created_at` int(11) NOT NULL,
+                                     `updated_at` int(11) NOT NULL,
+                                     PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
 DROP TABLE IF EXISTS `v2_coupon`;
 CREATE TABLE `v2_coupon` (
                              `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -353,4 +367,4 @@ CREATE TABLE `v2_user` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
--- 2021-09-14 04:09:49
+-- 2021-09-18 12:00:43

+ 11 - 0
database/update.sql

@@ -441,3 +441,14 @@ ALTER TABLE `v2_coupon`
 
 ALTER TABLE `v2_user`
     ADD `password_salt` char(10) COLLATE 'utf8_general_ci' NULL AFTER `password_algo`;
+
+CREATE TABLE `v2_commission_log` (
+                                     `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
+                                     `invite_user_id` int(11) NOT NULL,
+                                     `user_id` int(11) NOT NULL,
+                                     `trade_no` char(36) NOT NULL,
+                                     `order_amount` int(11) NOT NULL,
+                                     `get_amount` int(11) NOT NULL,
+                                     `created_at` int(11) NOT NULL,
+                                     `updated_at` int(11) NOT NULL
+) COLLATE 'utf8mb4_general_ci';