فهرست منبع

update: commission type and opt knowledge sort timestamp

tokumeikoi 3 سال پیش
والد
کامیت
77aec7d553

+ 8 - 4
app/Http/Controllers/Admin/KnowledgeController.php

@@ -77,11 +77,15 @@ class KnowledgeController extends Controller
     public function sort(KnowledgeSort $request)
     {
         DB::beginTransaction();
-        foreach ($request->input('knowledge_ids') as $k => $v) {
-            if (!Knowledge::find($v)->update(['sort' => $k + 1])) {
-                DB::rollBack();
-                abort(500, '保存失败');
+        try {
+            foreach ($request->input('knowledge_ids') as $k => $v) {
+                $knowledge = new Knowledge();
+                $knowledge->timestamps = false;
+                $knowledge->update(['sort' => $k + 1]);
             }
+        } catch (\Exception $e) {
+            DB::rollBack();
+            abort(500, '保存失败');
         }
         DB::commit();
         return response([

+ 1 - 0
app/Http/Requests/Admin/UserUpdate.php

@@ -27,6 +27,7 @@ class UserUpdate extends FormRequest
             'u' => 'integer',
             'd' => 'integer',
             'balance' => 'integer',
+            'commission_type' => 'integer',
             'commission_balance' => 'integer',
             'remarks' => 'nullable'
         ];

+ 16 - 3
app/Services/OrderService.php

@@ -132,13 +132,26 @@ class OrderService
         $order->total_amount = $order->total_amount - $order->discount_amount;
     }
 
-    public function setInvite(User $user)
+    public function setInvite(User $user):void
     {
         $order = $this->order;
         if ($user->invite_user_id && $order->total_amount > 0) {
             $order->invite_user_id = $user->invite_user_id;
-            $commissionFirstTime = (int)config('v2board.commission_first_time_enable', 1);
-            if (!$commissionFirstTime || ($commissionFirstTime && !$this->haveValidOrder($user))) {
+            $isCommission = false;
+            switch ((int)$user->commission_type) {
+                case 0:
+                    $commissionFirstTime = (int)config('v2board.commission_first_time_enable', 1);
+                    $isCommission = (!$commissionFirstTime || ($commissionFirstTime && !$this->haveValidOrder($user)));
+                    break;
+                case 1:
+                    $isCommission = true;
+                    break;
+                case 2:
+                    $isCommission = !$this->haveValidOrder($user);
+                    break;
+            }
+
+            if ($isCommission) {
                 $inviter = User::find($user->invite_user_id);
                 if ($inviter && $inviter->commission_rate) {
                     $order->commission_balance = $order->total_amount * ($inviter->commission_rate / 100);

+ 2 - 1
database/install.sql

@@ -321,6 +321,7 @@ CREATE TABLE `v2_user` (
                            `password_algo` char(10) DEFAULT NULL,
                            `balance` int(11) NOT NULL DEFAULT '0',
                            `discount` int(11) DEFAULT NULL,
+                           `commission_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0: system 1: cycle 2: onetime',
                            `commission_rate` int(11) DEFAULT NULL,
                            `commission_balance` int(11) NOT NULL DEFAULT '0',
                            `t` int(11) NOT NULL DEFAULT '0',
@@ -347,4 +348,4 @@ CREATE TABLE `v2_user` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
--- 2021-07-01 11:00:48
+-- 2021-07-13 13:50:52

+ 3 - 0
database/update.sql

@@ -422,3 +422,6 @@ DROP `deleted_at`;
 ALTER TABLE `v2_user`
     ADD UNIQUE `email` (`email`),
 DROP INDEX `email_deleted_at`;
+
+ALTER TABLE `v2_user`
+    ADD `commission_type` tinyint NOT NULL DEFAULT '0' COMMENT '0: system 1: cycle 2: onetime' AFTER `discount`;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
public/assets/admin/umi.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
public/assets/user/umi.js


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است