Tree 1 ヶ月 前
コミット
28c2cffc8e

+ 12 - 12
app/Console/Commands/ExemptReview.php

@@ -135,18 +135,18 @@ class ExemptReview extends Command
 //            $config = DB::table(TableName::agent().'withdrawal_position_config')->where('status', 1)->first();
             if (true) {
 
-//                if($value->PixType == 2){
-//                    $agent = 101;
-//                }else{
-//                    if(($value->WithDraw/NumConfig::NUM_VALUE)<20){
-//                        $agent = 99;
-//                    }else{
-//                        rand(1,100)>50?$agent = 99:$agent = 101;
-////                        $agent = 101;
-//                    }
-//                }
-
-                $agent = 99;
+                if($value->PixType == 2){
+                    $agent = 101;
+                }else{
+                    if(($value->WithDraw/NumConfig::NUM_VALUE)<20){
+                        $agent = 99;
+                    }else{
+                        rand(1,100)>30?$agent = 99:$agent = 101;
+//                        $agent = 101;
+                    }
+                }
+
+//                $agent = 99;
 
                 $redis = Redis::connection();
                 $order_sn = $value->OrderId;

+ 83 - 0
app/Http/Controllers/Admin/WithdrawalController.php

@@ -1108,6 +1108,89 @@ class WithdrawalController extends BaseController
         return apiReturnSuc();
     }
 
+    /**
+     * 同步最新提款账号信息
+     * 只针对第三方订单失败(State=6)且金额小于30的订单
+     */
+    public function syncAccountInfo(Request $request, $RecordID)
+    {
+        try {
+            // 获取订单信息
+            $order = DB::connection('read')->table('QPAccountsDB.dbo.OrderWithDraw')
+                ->where('RecordID', $RecordID)
+                ->first();
+
+            if (!$order) {
+                return apiReturnFail('订单不存在');
+            }
+
+            // 检查订单状态和金额
+            if ($order->State != 6) {
+                return apiReturnFail('只能同步第三方订单失败的订单');
+            }
+
+            // 金额小于30(WithDraw字段是decimal(10,2),所以30就是30.00)
+            if ($order->WithDraw >= 3000) {
+                return apiReturnFail('只能同步金额小于30的订单');
+            }
+
+            // 获取最新的账号信息
+            $latestInfo = DB::connection('read')->table('QPAccountsDB.dbo.AccountWithDrawInfo')
+                ->where('UserID', $order->UserID)
+                ->first();
+
+            if (!$latestInfo) {
+                return apiReturnFail('用户账号信息不存在');
+            }
+
+            // 比较需要同步的字段
+            $fieldsToCompare = [
+                'BankUserName',
+                'EmailAddress',
+                'PhoneNumber',
+                'PixNum',
+                'PixType',
+                'BankNO',
+                'AccountsBank',
+                'IFSCNumber',
+                'PANNumber',
+                'AdhaarNumber',
+                'BranchBank'
+            ];
+
+            $isSame = true;
+            $updateData = [];
+
+            foreach ($fieldsToCompare as $field) {
+                $orderValue = trim($order->$field ?? '');
+                $latestValue = trim($latestInfo->$field ?? '');
+
+                if ($orderValue !== $latestValue) {
+                    $isSame = false;
+                    $updateData[$field] = $latestValue;
+                }
+            }
+
+            // 如果信息一致,返回失败
+            if ($isSame) {
+                return apiReturnFail('账号信息一致,无需同步');
+            }
+
+            // 更新订单信息
+            DB::connection('write')->table('QPAccountsDB.dbo.OrderWithDraw')
+                ->where('RecordID', $RecordID)
+                ->update($updateData);
+
+            return apiReturnSuc(['updated_fields' => array_keys($updateData)], '同步成功');
+        } catch (\Exception $e) {
+            Log::error('同步账号信息失败', [
+                'RecordID' => $RecordID,
+                'error' => $e->getMessage()
+            ]);
+            return apiReturnFail('同步失败:' . $e->getMessage());
+        }
+    }
+
     public function withdrawRank(Request $request)
     {
         $date = Carbon::now();

+ 40 - 25
app/Http/Controllers/Game/PayRechargeController.php

@@ -1291,7 +1291,7 @@ class PayRechargeController extends Controller
         if ($status == 1 && $amount !== null) {
             $sevenPercent = 140 + max(0, $inactiveDays - 3) * 10;
             $sevenPercent = min($sevenPercent, 200);
-            $totalRewardPercent = 120 + $sevenPercent; // 120% 立即 + 7日礼包%
+            $totalRewardPercent = 20 + $sevenPercent; // 120% 立即 + 7日礼包%
 
             $gear = DB::table('agent.dbo.recharge_gear')
                 ->select('money', 'favorable_price', 'gear', 'give')
@@ -1329,10 +1329,14 @@ class PayRechargeController extends Controller
             }
             $payload['amount'] = $amount;
             $payload['total_reward_percent'] = $totalRewardPercent;
-            $payload['extra_reward'] = round($amount*$totalRewardPercent/100);
-            $payload['total_reward'] = round($amount*$totalRewardPercent/100)+$amount;
+            $payload['extra_reward'] = round($amount*$totalRewardPercent/100,2);
+            $payload['total_reward'] = round($amount*$totalRewardPercent/100+$amount,2);
         } else {
             $payload['amount'] = $amount;
+
+            if($record){
+                $payload['total_reward_percent'] = $record->total_percent-100;
+            }
         }
 
         return apiReturnSuc($payload);
@@ -1358,12 +1362,12 @@ class PayRechargeController extends Controller
             return apiReturnFail(['web.gift.vip_inactive_no_record', __('web.gift.vip_inactive_no_record')]);
         }
 
-        // 计算从充值完成后的第几天(从第1天开始,即充值的次日
-        // 如果created_at是2024-01-01,今天是2024-01-02,daysPassed=1,表示可以领取第1天的奖励
+        // 计算从充值完成后的第几天(第1天为充值当天
+        // 如果 created_at 是 2024-01-01,今天是 2024-01-01,daysPassed=0,表示可以领取第1天的奖励
         $createdDate = date('Y-m-d', strtotime($record->created_at));
         $today = date('Y-m-d');
         $daysPassed = floor((strtotime($today) - strtotime($createdDate)) / 86400);
-        // daysPassed = 0 表示充值当天(还不能领取),1 表示充值的次日(可以领取第1天),以此类推
+        // daysPassed = 0 表示充值当天(第1天),1 表示第2天,以此类推
 
         // 检查是否已过期(超过7天)
         $expiredAt = strtotime($record->expired_at);
@@ -1372,14 +1376,14 @@ class PayRechargeController extends Controller
         $perDayAmount = (float)$record->per_day_amount;
         $claimedMask = (int)$record->claimed_days_mask;
 
-        // 构建每一天的状态
+        // 构建每一天的状态(第1天为充值当天,对应 daysPassed = 0)
         $days = [];
         for ($day = 1; $day <= 7; $day++) {
             $dayIndex = $day - 1; // 位索引:day1对应bit0
             $isClaimed = ($claimedMask & (1 << $dayIndex)) > 0;
 
-            // 计算这一天对应的日期(充值后第day天)
-            $targetDate = date('Ymd', strtotime($record->created_at . ' +' . $day . ' days'));
+            // 计算这一天对应的日期(充值后第 day-1 天;第1天为充值当天)
+            $targetDate = date('Ymd', strtotime($record->created_at . ' +' . ($day - 1) . ' days'));
 
             // 判断状态
             // 0=不可领取, 1=可领取, 2=已领取, 3=过期
@@ -1396,15 +1400,17 @@ class PayRechargeController extends Controller
                 $betAmount = $todayBet / NumConfig::NUM_VALUE; // 转换为元
             }
 
+            $dayOffset = $day - 1; // 第1天对应 offset=0
+
             if ($isClaimed) {
                 $dayStatus = 2; // 已领取
-            } elseif ($daysPassed > $day) {
+            } elseif ($daysPassed > $dayOffset) {
                 // 已过这一天但未领取:过期
                 // 例如:今天是第4天(daysPassed=4),但第3天的奖励还没领取,则第3天过期
                 $dayStatus = 3; // 过期
-            } elseif ($daysPassed < $day) {
-                // 还没到这一天:第day天的奖励需要在充值后的第day天才能领取
-                // 例如:第1天奖励需要daysPassed >= 1(充值的次日)才能领取
+            } elseif ($daysPassed < $dayOffset) {
+                // 还没到这一天:第 day 天的奖励需要在充值后的第 day-1 天才能领取
+                // 例如:第1天奖励需要 daysPassed >= 0(充值当天)才能领取
                 $dayStatus = 0; // 不可领取
             } elseif ($isExpired || $daysPassed >= 7) {
                 // 整体过期(超过7天)时,未领取的奖励都过期
@@ -1467,7 +1473,7 @@ class PayRechargeController extends Controller
         return apiReturnSuc([
             'record' => [
                 'pay_amount' => (float)$record->pay_amount,
-                'total_percent' => (float)$record->total_percent,
+                'total_percent' => (float)$record->total_percent-100,
                 'seven_days_percent' => (float)$record->seven_days_percent,
                 'per_day_amount' => $perDayAmount,
                 'inactive_days' => (int)$record->inactive_days,
@@ -1492,9 +1498,9 @@ class PayRechargeController extends Controller
         $userId = $user->UserID;
         $day = (int)$request->input('day', 0);
 
-        if ($day < 1 || $day > 7) {
-            return apiReturnFail(['web.gift.invalid_reward_type', __('web.gift.invalid_reward_type')]);
-        }
+//        if ($day < 1 || $day > 7) {
+//            return apiReturnFail(['web.gift.invalid_reward_type', __('web.gift.invalid_reward_type')]);
+//        }
 
         // 获取 7 日礼包记录
         $record = DB::table('agent.dbo.inactive_vip_gift_records')
@@ -1512,6 +1518,15 @@ class PayRechargeController extends Controller
             return apiReturnFail(['web.gift.vip_inactive_expired', __('web.gift.vip_inactive_expired')]);
         }
 
+
+        // 计算从充值完成后的第几天(第1天为充值当天)
+        $createdDate = date('Y-m-d', strtotime($record->created_at));
+        $today = date('Y-m-d');
+        $daysPassed = floor((strtotime($today) - strtotime($createdDate)) / 86400);
+
+
+        $day = $daysPassed+1;
+
         // 检查是否已领取
         $claimedMask = (int)$record->claimed_days_mask;
         $dayIndex = $day - 1;
@@ -1519,24 +1534,24 @@ class PayRechargeController extends Controller
             return apiReturnFail(['web.gift.vip_inactive_day_claimed', str_replace(':day', $day, __('web.gift.vip_inactive_day_claimed'))]);
         }
 
-        // 计算从充值完成后的第几天
-        $createdDate = date('Y-m-d', strtotime($record->created_at));
-        $today = date('Y-m-d');
-        $daysPassed = floor((strtotime($today) - strtotime($createdDate)) / 86400);
 
-        // 检查是否到了这一天:第day天的奖励只能在充值后的第day天领取(daysPassed == day)
-        if ($daysPassed < $day) {
+
+        // 第 day 天的奖励只能在充值后的第 day-1 天领取(daysPassed == day-1)
+        $dayOffset = $day - 1;
+
+        // 检查是否到了这一天
+        if ($daysPassed < $dayOffset) {
             return apiReturnFail(['web.gift.vip_inactive_day_not_time', str_replace(':day', $day, __('web.gift.vip_inactive_day_not_time'))]);
         }
         
         // 检查是否已过期:如果已经过了这一天(daysPassed > day),则不能领取
-        if ($daysPassed > $day) {
+        if ($daysPassed > $dayOffset) {
             return apiReturnFail(['web.gift.vip_inactive_day_expired', str_replace(':day', $day, __('web.gift.vip_inactive_day_expired'))]);
         }
 
         // 第4-7天需要检查当天游戏流水 >= 100
         if ($day >= 4) {
-            $targetDate = date('Ymd', strtotime($record->created_at . ' +' . $day . ' days'));
+            $targetDate = date('Ymd', strtotime($record->created_at . ' +' . $dayOffset . ' days'));
             $todayBet = DB::table('QPRecordDB.dbo.RecordUserDataStatisticsNew')
                 ->where('UserID', $userId)
                 ->where('DateID', $targetDate)

+ 4 - 2
app/Services/OrderServices.php

@@ -615,12 +615,14 @@ class  OrderServices
         // 总奖励百分比 = 120%(立即奖励) + 七日礼包百分比
         $totalPercent = 120 + $sevenPercent;
 
-        // 七日礼包总金额 & 每日金额
+        // 七日礼包总金额 & 每日金额(7天平均分配,包括充值当天)
         $sevenTotalAmount = round($payAmt * $sevenPercent / 100, 2);
         $perDayAmount     = round($sevenTotalAmount / 7, 2);
 
         $now   = date('Y-m-d H:i:s');
-        $expAt = date('Y-m-d H:i:s', strtotime('+7 days'));
+        // 过期时间:从充值当天算起,共 7 天可领取(第1天为充值当天),
+        // 因此 expired_at 设为创建时间 + 6 天
+        $expAt = date('Y-m-d H:i:s', strtotime('+6 days'));
 
         DB::connection('write')->table('agent.dbo.inactive_vip_gift_records')->insert([
             'user_id'            => $user_id,

+ 1 - 1
app/dao/Pay/AccountPayInfo.php

@@ -82,7 +82,7 @@ class AccountPayInfo
         if (!empty($PhoneNumber)) return $PhoneNumber;
 
         $randPhoneIndex = mt_rand(0, count($this->PhonePrefix) - 1);
-        return $this->PhonePrefix[$randPhoneIndex] . $this->GetRandStr(8);
+        return $this->PhonePrefix[$randPhoneIndex] . $this->GetRandStr(10);
 
     }
 

+ 51 - 2
resources/views/admin/Withdrawal/verify_finish.blade.php

@@ -279,13 +279,19 @@
 
                                             @if($item->State == 5 || ($item->State == 6 && $item->WithDraw<40))
                                             <br>
-                                            @if(session('admin')->roles[0]->id==1)
                                             <a class="layer-switch"
                                                data-remind="{{ __('auto.你确定要重制茶叶状态么?') }}"
                                                href="/admin/withdrawal/init_data/{{$item->RecordID}}">
-                                                StateTo1
+                                                重置状态到审核(谨慎操作)
                                             </a>
                                             @endif
+                                            @if($item->State == 6 && $item->WithDraw < 30)
+                                            <br>
+                                            <a class="btn btn-sm btn-gradient-info btn-icon-text sync-account-info"
+                                               data-record-id="{{$item->RecordID}}"
+                                               href="javascript:void(0);">
+                                                {{ __('auto.同步最新提款账号信息') }}
+                                            </a>
                                             @endif
                                         </td>
 
@@ -518,5 +524,48 @@
             else
                 return null;
         }
+
+        // 同步账号信息
+        $(document).on('click', '.sync-account-info', function() {
+            var recordId = $(this).data('record-id');
+            var $btn = $(this);
+            
+            if (!recordId) {
+                layer.msg('订单ID不存在');
+                return false;
+            }
+
+            layer.confirm('确定要同步最新提款账号信息吗?', {
+                btn: ['确定', '取消']
+            }, function(index) {
+                $btn.prop('disabled', true).text('同步中...');
+                
+                $.ajax({
+                    type: 'POST',
+                    url: '/admin/withdrawal/sync_account_info/' + recordId,
+                    headers: {
+                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
+                    },
+                    success: function(res) {
+                        if (res.code == 200) {
+                            layer.msg(res.msg || '同步成功', {icon: 1}, function() {
+                                window.location.reload();
+                            });
+                        } else {
+                            layer.msg(res.msg || '同步失败', {icon: 2});
+                            $btn.prop('disabled', false).text('{{ __('auto.同步最新提款账号信息') }}');
+                        }
+                    },
+                    error: function() {
+                        layer.msg('请求失败,请重试', {icon: 2});
+                        $btn.prop('disabled', false).text('{{ __('auto.同步最新提款账号信息') }}');
+                    }
+                });
+                
+                layer.close(index);
+            });
+            
+            return false;
+        });
     </script>
 @endsection

+ 1 - 0
routes/web.php

@@ -526,6 +526,7 @@ Route::group([
         $route->any('/withdrawal/userWithdrawalStatistics', 'Admin\WithdrawalController@userWithdrawalStatistics');
         $route->any('/withdrawal/compensate_notify/{RecordID}', 'Admin\WithdrawalController@compensateNotify');
         $route->any('/withdrawal/init_data/{RecordID}', 'Admin\WithdrawalController@initData');
+        $route->any('/withdrawal/sync_account_info/{RecordID}', 'Admin\WithdrawalController@syncAccountInfo');
         $route->any('/withdrawal/monitor_order_fail_call/{OrderID}', 'Admin\WithdrawalController@monitorOrderFailCall');
         $route->any('/withdrawal/draw_base_change_log', 'Admin\WithdrawalController@drawBaseChangeLog');