浏览代码

Switch Modes / Commission - Sign-Up

1Day 3 年之前
父节点
当前提交
33a39fccd9

+ 5 - 1
app/Classes/Settings/Misc.php

@@ -40,6 +40,8 @@ class Misc
             'enable_referral' => 'nullable|string',
             'referral_reward' => 'nullable|numeric',
             'referral_allowed' => 'nullable|string',
+            'referral_percentage' => 'nullable|numeric',
+            'referral_mode' => 'nullable|string',
         ]);
 
         if ($validator->fails()) {
@@ -74,7 +76,9 @@ class Misc
             "SETTINGS::MAIL:FROM_NAME" => "mailfromname",
             "SETTINGS::REFERRAL::ENABLED" => "enable_referral",
             "SETTINGS::REFERRAL::REWARD" => "referral_reward",
-            "SETTINGS::REFERRAL::ALLOWED" => "referral_allowed"
+            "SETTINGS::REFERRAL::ALLOWED" => "referral_allowed",
+            "SETTINGS::REFERRAL:MODE" => "referral_mode",
+            "SETTINGS::REFERRAL:PERCENTAGE" => "referral_percentage"
 
 
         ];

+ 35 - 3
app/Http/Controllers/Admin/PaymentController.php

@@ -19,6 +19,8 @@ use Illuminate\Http\JsonResponse;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
 use Illuminate\Support\Facades\Storage;
 use LaravelDaily\Invoices\Classes\Buyer;
 use LaravelDaily\Invoices\Classes\InvoiceItem;
@@ -179,9 +181,19 @@ class PaymentController extends Controller
                 }
 
 
-                //update role
+                //update role give Referral-reward
                 if ($user->role == 'member') {
                     $user->update(['role' => 'client']);
+
+                    if(config("SETTINGS::REFERRAL:MODE") == "commission" && $shopProduct->type=="Credits"){
+                        if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){
+                            $ref_user = User::findOrFail($ref_user->referral_id);
+                            $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"","");
+                            $ref_user->increment('credits', $increment);
+                        }
+
+                    }
+
                 }
 
                 //store payment
@@ -326,9 +338,19 @@ class PaymentController extends Controller
                     $user->increment('server_limit', $shopProduct->quantity);
                 }
 
-                //update role
+                //update role give Referral-reward
                 if ($user->role == 'member') {
                     $user->update(['role' => 'client']);
+
+                    if(config("SETTINGS::REFERRAL:MODE") == "commission" && $shopProduct->type=="Credits"){
+                        if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){
+                            $ref_user = User::findOrFail($ref_user->referral_id);
+                            $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"","");
+                            $ref_user->increment('credits', $increment);
+                        }
+
+                    }
+
                 }
 
                 //store paid payment
@@ -431,9 +453,19 @@ class PaymentController extends Controller
                     $user->increment('server_limit', $shopProduct->quantity);
                 }
 
-                //update role
+                //update role give Referral-reward
                 if ($user->role == 'member') {
                     $user->update(['role' => 'client']);
+
+                    if(config("SETTINGS::REFERRAL:MODE") == "commission" && $shopProduct->type=="Credits"){
+                        if($ref_user = DB::table("user_referrals")->where('registered_user_id', '=', $user->id)->first()){
+                            $ref_user = User::findOrFail($ref_user->referral_id);
+                            $increment = number_format($shopProduct->quantity/100*config("SETTINGS::REFERRAL:PERCENTAGE"),0,"","");
+                            $ref_user->increment('credits', $increment);
+                        }
+
+                    }
+
                 }
 
                 //update payment db entry status

+ 4 - 3
app/Http/Controllers/Auth/RegisterController.php

@@ -139,9 +139,10 @@ class RegisterController extends Controller
             $ref_code = $data['referral_code'];
             $new_user = $user->id;
             if($ref_user = User::query()->where('referral_code', '=', $ref_code)->first()) {
-                $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD"));
-                $ref_user->notify(new ReferralNotification($ref_user->id,$new_user));
-
+                if(config("SETTINGS::REFERRAL:MODE" == "sign-up")) {
+                    $ref_user->increment('credits', config("SETTINGS::REFERRAL::REWARD"));
+                    $ref_user->notify(new ReferralNotification($ref_user->id, $new_user));
+                }
                 //INSERT INTO USER_REFERRALS TABLE
                 DB::table('user_referrals')->insert([
                     'referral_id' => $ref_user->id,

+ 14 - 0
database/seeders/Seeds/SettingsSeeder.php

@@ -486,5 +486,19 @@ class SettingsSeeder extends Seeder
             'type'  => 'string',
             'description'  => 'Who should be allowed to to use the referral code. all/client'
         ]);
+        Settings::firstOrCreate([
+            'key'   => 'SETTINGS::REFERRAL:MODE',
+        ], [
+            'value' =>"sign-up",
+            'type'  => 'string',
+            'description'  => 'Whether referrals get Credits on User-Registration or if a User buys credits'
+        ]);
+        Settings::firstOrCreate([
+            'key'   => 'SETTINGS::REFERRAL:PERCENTAGE',
+        ], [
+            'value' =>100,
+            'type'  => 'integer',
+            'description'  => 'The Percentage Value a referred user gets'
+        ]);
     }
 }

+ 26 - 2
resources/views/admin/settings/tabs/misc.blade.php

@@ -202,16 +202,40 @@
                     </div>
                 </div>
 
+                <div class="custom-control mb-3 p-0">
+                    <label for="referral_mode">{{ __('Mode') }}:
+                        <i data-toggle="popover" data-trigger="hover"
+                           data-content="{{ __('Should a reward be given if a new User registers or if a new user buys credits') }}" class="fas fa-info-circle"></i>
+                    </label>
+                    <select id="referral_mode" style="width:100%" class="custom-select" name="referral_mode" required
+                            autocomplete="off" @error('referral_mode') is-invalid @enderror>
+                        <option value="commission" @if (config('SETTINGS::REFERRAL:MODE') == "commission") selected
+                            @endif>{{ __("Commission") }}</option>
+                        <option value="sign-up" @if (config('SETTINGS::REFERRAL:MODE') == "sign-up") selected
+                            @endif>{{ __("Sign-Up") }}</option>
+                    </select>
+                </div>
+                <div class="form-group mb-3">
+                    <div class="custom-control p-0">
+                        <label for="referral_percentage">{{ __('Referral reward in percent') }} {{__("(only for commission-mode)")}}:
+                            <i data-toggle="popover" data-trigger="hover"
+                               data-content="{{ __('If a referred user buys credits, the referral-user will get x% of the Credits the referred user bought') }}" class="fas fa-info-circle"></i>
+                        </label>
+                        <input x-model="referral_percentage" id="referral_percentage" name="referral_percentage"
+                               type="number" value="{{ config('SETTINGS::REFERRAL:PERCENTAGE') }}"
+                               class="form-control @error('referral_percentage') is-invalid @enderror">
+                    </div>
+                </div>
                 <div class="form-group mb-3">
                     <div class="custom-control p-0">
-                        <label for="referral_reward">{{ __('Referral reward in') }} {{ config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME', 'Credits') }}:</label>
+                        <label for="referral_reward">{{ __('Referral reward in') }} {{ config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME', 'Credits') }} {{__("(only for sign-up-mode)")}}:</label>
                         <input x-model="referral_reward" id="referral_reward" name="referral_reward"
                                type="number" value="{{ config('SETTINGS::REFERRAL::REWARD') }}"
                                class="form-control @error('referral_reward') is-invalid @enderror">
                     </div>
                 </div>
                 <div class="custom-control mb-3 p-0">
-                    <label for="mailservice">{{ __('Allowed') }}:
+                    <label for="referral_allowed">{{ __('Allowed') }}:
                         <i data-toggle="popover" data-trigger="hover"
                            data-content="{{ __('Who is allowed to see their referral-URL') }}" class="fas fa-info-circle"></i>
                     </label>