Prechádzať zdrojové kódy

回传卡比例的计算数据在每次编辑回传配置的时候,都重新记录

liuzejian 1 rok pred
rodič
commit
e4f8f05d0d

+ 19 - 10
modules/Callback/Http/Controllers/JLEvent/JLEventController.php

@@ -6,6 +6,7 @@ use Catch\Base\CatchController;
 use Illuminate\Foundation\Validation\ValidatesRequests;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
+use Modules\Callback\Models\JLEventCallbackConfigModel;
 use Modules\Callback\Services\CallbackConst;
 use Modules\Callback\Services\JLEventService;
 use Modules\Common\Errors\Errors;
@@ -68,17 +69,19 @@ class JLEventController extends CatchController
             'charge_money_map'  => 'required_if:is_roi,2|array',
             'charge_money_map.*.min_money' => 'integer|min:0',
         ]);
-        $now = date('Y-m-d H:i:s');
         if(2 == $request->input('is_roi') &&
             (!JLEventService::judgeChargeMoneyOk($request->input('charge_money_map')))) {
             CommonBusinessException::throwError(Errors::CALLBACK_CHARGE_MONEY_MAP_ERROR);
         }
-        DB::table('jl_event_callback_config')
-            ->insert(array_merge($request->only('name', 'is_roi', 'charge_type'), [
-                'created_at' => $now, 'updated_at' => $now,
-                'charge_money_map' => \json_encode($request->input('charge_money_map')),
-                'user_id' => $this->getLoginUserId()
-            ]));
+        $userId = $this->getLoginUserId();
+
+
+        $model = JLEventCallbackConfigModel::create(array_merge($request->only('name', 'is_roi', 'charge_type'), [
+            'charge_money_map' => \json_encode($request->input('charge_money_map')),
+            'user_id' => $userId,
+        ]));
+
+        JLEventService::saveRateConfigLog($userId, $model->id, $request->input('charge_money_map', []));
 
         return 'ok';
     }
@@ -106,14 +109,20 @@ class JLEventController extends CatchController
             $updateData = $request->only('is_roi', 'charge_type');
         }
         $now = date('Y-m-d H:i:s');
-        DB::table('jl_event_callback_config')
+        $userId = $this->getLoginUserId();
+        $configIds = DB::table('jl_event_callback_config')
             ->whereIn('id', $request->input('ids'))
-            ->where('user_id', $this->getLoginUserId())
+            ->where('user_id', $userId)
+            ->select('id')->get()->pluck('id');
+        DB::table('jl_event_callback_config')
+            ->whereIn('id', $configIds)
             ->update(array_merge($updateData, [
                 'charge_money_map' => \json_encode($request->input('charge_money_map', [])),
                 'updated_at' => $now,
             ]));
-        // todo: 更新对应配置的计算比例信息
+        foreach ($configIds as $configId) {
+            JLEventService::saveRateConfigLog($userId, $configId, $request->input('charge_money_map', []));
+        }
         return 'ok';
     }
 }

+ 11 - 0
modules/Callback/Models/JLEventCallbackConfigModel.php

@@ -0,0 +1,11 @@
+<?php
+
+namespace Modules\Callback\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class JLEventCallbackConfigModel extends  Model
+{
+    protected $table = 'jl_event_callback_config';
+    protected $guarded = [];
+}

+ 48 - 0
modules/Callback/Services/JLEventService.php

@@ -2,6 +2,9 @@
 
 namespace Modules\Callback\Services;
 
+use Illuminate\Support\Facades\DB;
+use Modules\Permissions\Middlewares\PermissionGate;
+
 /**
  * 巨量2.0事件-微信小程序
  */
@@ -49,4 +52,49 @@ class JLEventService
         }
         return $result;
     }
+
+    /**
+     * 回传配置的金额项的比例配置信息
+     * @param $userId 优化师id
+     * @param $configId 回传配置id
+     * @param $chargeMoneyMap
+     * <pre>
+     * [
+     *      [
+     *          'min_money' => 1, // 最小金额
+     *          'max_money' => 2, // 最大金额(不包含)
+     *          'callback_type' => 1, // 回传参数,类型:1-全部回传,2-全部不回传,3-自定义
+     *          'callback_param' => '1:1', // callback_type == 3 时, 自定义,传几卡几
+     *      ]
+     * ]
+     * </pre>
+     */
+    public static function saveRateConfigLog($userId, $configId, $chargeMoneyMap){
+        $now = date('Y-m-d H:i:s');
+        DB::table('jl_event_rate_config_log')
+            ->where([
+                'user_id' => $userId, 'config_id' => $configId,
+                'is_enabled' => 1,
+            ])->update([
+                'is_enabled' => 0, 'updated_at' => $now,
+            ]);
+
+        $insertData = [];
+        foreach ($chargeMoneyMap as $item) {
+            if(3 == $item['callback_type']) {
+                $insertData[] = [
+                    'user_id' => $userId,
+                    'config_id' => $configId,
+                    'rate_str' => $item['callback_param'],
+                    'created_at' => $now, 'updated_at' => $now,
+                    'min_money' => $item['min_money'],
+                    'max_money' => $item['max_money']
+                ];
+            }
+        }
+        if(count($insertData)) {
+            DB::table('jl_event_rate_config_log')
+                ->insert($insertData);
+        }
+    }
 }

+ 3 - 2
tests/Callback/Http/Controllers/JLEvent/JLEventControllerTest.php

@@ -18,7 +18,7 @@ class JLEventControllerTest extends UsedTestCase
             'is_roi' => 2,
             'charge_type' => 1,
             'charge_money_map' => [
-                ['min_money' => 10, 'max_money' => 20, 'callback_type' => 1, 'callback_param' => '1:3'],
+                ['min_money' => 10, 'max_money' => 20, 'callback_type' => 3, 'callback_param' => '1:3'],
                 ['min_money' => 20, 'max_money' => 25, 'callback_type' => 2, 'callback_param' => ''],
                 ['min_money' => 25, 'max_money' => 30, 'callback_type' => 2, 'callback_param' => ''],
             ]
@@ -32,7 +32,7 @@ class JLEventControllerTest extends UsedTestCase
         $res = $this->withHeaders([
             'Authorization' => 'Bearer '. $this->token,
         ])->json('post','http://localhost/api/callback/jlEvent/update', [
-            'ids' => [5],
+            'ids' => [5, 6],
             'name' => 'liuzj-test-'.rand(1, 100000),
             'is_roi' => 1,
             'charge_type' => 1,
@@ -40,6 +40,7 @@ class JLEventControllerTest extends UsedTestCase
                 ['min_money' => 10, 'max_money' => 20, 'callback_type' => 1, 'callback_param' => ''],
 //                ['min_money' => 20, 'max_money' => 25, 'callback_type' => 2, 'callback_param' => ''],
                 ['min_money' => 25, 'max_money' => 30, 'callback_type' => 2, 'callback_param' => ''],
+                ['min_money' => 55, 'max_money' => 70, 'callback_type' => 3, 'callback_param' => '1:5'],
             ]
         ]);