Ken 5 saat önce
ebeveyn
işleme
38f46d99cc

+ 3 - 2
app/Http/Controllers/admin/ActivityUser.php

@@ -24,6 +24,7 @@ class ActivityUser extends Controller
             $params = request()->validate([
                 'id' => ['required', 'integer', 'min:1'],
             ]);
+            ActivityUserService::finish($params['id']);
             DB::commit();
         } catch (ValidationException $e) {
             DB::rollBack();
@@ -44,9 +45,9 @@ class ActivityUser extends Controller
             $params = request()->validate([
                 'id' => ['required', 'integer', 'min:1'],
                 'amount' => ['required', 'numeric', 'min:0.01'],
-                'effective_betting_amount' => ['required', 'integer', 'min:0', 'max:9999999'],
+                'betting_amount' => ['required', 'integer', 'min:0', 'max:9999999'],
             ]);
-            ActivityUserService::gift($params['id'], $params['amount'], $params['effective_betting_amount']);
+            ActivityUserService::gift($params['id'], $params['amount'], $params['betting_amount']);
             DB::commit();
         } catch (ValidationException $e) {
             DB::rollBack();

+ 1 - 0
app/Models/ActivityUser.php

@@ -17,6 +17,7 @@ use App\Constants\Util;
  * @property string part_in_time
  * @property $effective_betting_amount
  * @property $gift_amount
+ * @property $betting_amount
  *
  */
 class ActivityUser extends BaseModel

+ 25 - 4
app/Services/ActivityUserService.php

@@ -69,8 +69,29 @@ class ActivityUserService extends BaseService
         return true;
     }
 
+    public static function updateBettingAmount($memberId, $amount)
+    {
+        $activityUser = static::findOne([
+            'member_id' => $memberId,
+            'status' => static::$MODEL::STATUS_IN_PROGRESS
+        ]);
+        if ($activityUser) {
+            $activityUser->increment('effective_betting_amount', $amount);
+            if ($activityUser->effective_betting_amount >= $activityUser->betting_amount) {
+                $activityUser->status = static::$MODEL::STATUS_COMPLETE;
+            }
+            $activityUser->save();
+        }
+    }
+
+    public static function finish($id)
+    {
+        $activityUser = static::findOne(['id' => $id]);
+        $activityUser->status = static::$MODEL::STATUS_COMPLETE;
+        $activityUser->save();
+    }
 
-    public static function gift($id, $amount, $effectiveBettingAmount)
+    public static function gift($id, $amount, $bettingAmount)
     {
         $activityUser = static::findOne(['id' => $id]);
         if (!$activityUser) throw new Exception('活动不存在', HttpStatus::CUSTOM_ERROR);
@@ -78,12 +99,12 @@ class ActivityUserService extends BaseService
         if ($activityUser->status == static::$MODEL::STATUS_COMPLETE) throw new Exception("充值失败:活动已完成", HttpStatus::CUSTOM_ERROR);
         if ($activityUser->status != static::$MODEL::STATUS_APPLY) throw new Exception('充值失败:状态异常', HttpStatus::CUSTOM_ERROR);
         $activityUser->status = static::$MODEL::STATUS_IN_PROGRESS;
-        $activityUser->effective_betting_amount = $effectiveBettingAmount;
+        $activityUser->betting_amount = $bettingAmount;
         $activityUser->gift_amount = $amount;
         $activityUser->save();
         $memberId = $activityUser->member_id;
-        $res = WalletService::updateBalance($memberId,$amount);
-        BalanceLogService::addLog($memberId, $amount, $res['before_balance'], $res['after_balance'], "优惠活动", $activityUser->id, "$activityUser->title; 赠送:$activityUser->gift_amount;  打码量:$activityUser->effective_betting_amount");
+        $res = WalletService::updateBalance($memberId, $amount);
+        BalanceLogService::addLog($memberId, $amount, $res['before_balance'], $res['after_balance'], "优惠活动", $activityUser->id, "$activityUser->title; 赠送:$activityUser->gift_amount;  打码量:$activityUser->betting_amount");
 
         $availableBalance = floatval($res['after_balance']);
         // 去除多余0后,再用 sprintf 补足两位

+ 2 - 0
app/Services/BetService.php

@@ -844,6 +844,7 @@ class BetService extends BaseService
 
                 if (!in_array('13操', $awards) && !in_array('14操', $awards)) {
                     RebateService::updateEffectiveBettingAmount($rebate, $v['amount']);
+                    ActivityUserService::updateBettingAmount($v['member_id'],$v['amount']);
                 }
 
 
@@ -892,6 +893,7 @@ class BetService extends BaseService
 
                 if (!in_array('13操', $awards) && !in_array('14操', $awards)) {
                     RebateService::updateEffectiveBettingAmount($rebate, $v['amount']);
+                    ActivityUserService::updateBettingAmount($v['member_id'],$v['amount']);
                 }
 
                 $profit = 0;

+ 32 - 0
database/migrations/2026_02_02_143549_update_activity_user.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('activity_user', function (Blueprint $table) {
+            $table->decimal('betting_amount', 10)->default(0)->comment('打码量');
+        });
+
+        DB::statement('ALTER TABLE bot_activity_user MODIFY COLUMN effective_betting_amount decimal(10,2) NOT NULL DEFAULT 0 COMMENT "用户已完成的打码量"');
+
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //
+    }
+};