seven 2 долоо хоног өмнө
parent
commit
df8b425c0f

+ 2 - 1
app/Http/Controllers/admin/Wallet.php

@@ -277,7 +277,8 @@ class Wallet extends Controller
         // $url = "https://ydpc28.co/api/pc28/list";
         // $result = file_get_contents($url);
         // $result = json_decode($result,true);
-        $result = BalanceLogService::getOperateButton();
+        $awards = IssueService::award([7,7,7]);
+        $result = BetService::betSettled2('3350799',$awards);
         echo "<pre>";
         var_dump($result);
     }

+ 129 - 0
app/Services/BetService.php

@@ -688,6 +688,135 @@ class BetService extends BaseService
         self::bettingGroupNotice($text, $inlineButton, '');
     }
 
+    /**
+     * @description: 中奖结算
+     * @param {*} $issue_no
+     * @param {*} $awards
+     * @return {*}
+     */
+    public static function betSettled2($issue_no, $awards)
+    {
+        $list = self::findAll(['issue_no' => $issue_no, 'status' => self::model()::STATUS_STAY]);
+
+        $data = [];
+        $text = $issue_no . "期开奖结果 \n";
+        $text .= "-----本期开奖账单----- \n";
+        $text .=" 中奖类型 用户 投注金额 中奖金额 盈亏 \n";
+        $betNoticeNum = Config::where('field', 'bet_notice_num')->first()->val;
+        $betNoticeNum = explode(',', $betNoticeNum);
+        $betNoticeMini = $betNoticeNum[0] ?? 26;
+        $betNoticeMax = $betNoticeNum[1] ?? 38;
+        $noticeNum = rand($betNoticeMini, $betNoticeMax);
+
+        $realNoticeNum = ceil($noticeNum / 2);
+        $openList = [];
+        $bet_num = 0;
+        foreach ($list->toArray() as $k => $v) {
+            // $userInfo = UserService::findAll(['member_id' => $v['member_id']]);
+            // $lastStr = self::getLastChar($userInfo->first_name, 1);
+            $lastStr = self::hideMiddleDigits($v['member_id'], 4);
+            $item = [];
+            $item['id'] = $v['id'];
+            $item['status'] = self::model()::STATUS_SETTLED;
+            
+
+            if (in_array($v['keywords'], $awards)) {
+                // $profit = $v['amount'] * $v['odds'];
+                $amount = $v['amount'];
+                // $amount = rtrim($amount, '0');   // 去掉右侧的 0
+                // $amount = rtrim($amount, '.');   // 如果末尾是 . 就去掉
+                $odds = $v['odds'];
+                $profit = bcmul($amount, $odds, 2); // 保留两位小数
+                if ($profit > 880000) {
+                    $profit = 880000; // 单注最高奖金880000
+                }
+                $item['profit'] = $profit;
+
+                // $yl = $profit - $amount;
+                $yl = bcsub($profit, $amount, 2); // 盈利
+                // if ($k + 1 <= $realNoticeNum) {
+                    
+                //     // $text .= "会员下注 【" . $lastStr . "】{$v['amount']} {$profit} {$yl}\n";
+                //     $bet_num++;
+                // }
+                // 结算
+                // WalletService::updateBalance($v['member_id'], $profit);
+
+                // $walletInfo = WalletService::findOne(['member_id' => $v['member_id']]);
+                // $balance = $walletInfo['available_balance'];
+
+                // BalanceLogService::addLog($v['member_id'], $profit, $balance, ($balance + $profit), '中奖', $v['id'], '');
+
+                if(isset($openList[$v['member_id']])){
+                    $openList[$v['member_id']]['member_id'] = $v['member_id'];
+                    $openList[$v['member_id']]['first_name'] = $v['first_name'];
+                    $openList[$v['member_id']]['amount'] += $v['amount'];
+                    $openList[$v['member_id']]['profit'] += $profit;
+                    $openList[$v['member_id']]['lastStr'] = $lastStr;
+                }else{
+                    $openList[$v['member_id']]['member_id'] = $v['member_id'];
+                    $openList[$v['member_id']]['first_name'] = $v['first_name'];
+                    $openList[$v['member_id']]['amount'] = $v['amount'];
+                    $openList[$v['member_id']]['profit'] = $profit;
+                    $openList[$v['member_id']]['lastStr'] = $lastStr;
+                }
+            } else {
+
+                if(isset($openList[$v['member_id']])){
+                    $openList[$v['member_id']]['member_id'] = $v['member_id'];
+                    $openList[$v['member_id']]['first_name'] = $v['first_name'];
+                    $openList[$v['member_id']]['amount'] += $v['amount'];
+                    $openList[$v['member_id']]['lastStr'] = $lastStr;
+                }else{
+                    $openList[$v['member_id']]['member_id'] = $v['member_id'];
+                    $openList[$v['member_id']]['first_name'] = $v['first_name'];
+                    $openList[$v['member_id']]['amount'] = $v['amount'];
+                    $openList[$v['member_id']]['profit'] = 0;
+                    $openList[$v['member_id']]['lastStr'] = $lastStr;
+                }
+
+                // if ($k + 1 <= $realNoticeNum) {
+                //     // $text .= "会员下注 【" . $lastStr . "】{$v['amount']} {$v['profit']} -{$v['amount']}\n";
+                //     $bet_num++;
+                // }
+            }
+
+            // self::model()::where('id', $v['id'])->update($item);
+        }
+
+        foreach($openList as $k => $v){
+            $amount = $v['amount'];
+            if($v['profit'] >= 0){
+                $profit = number_format($v['profit'],2);
+                $yl = bcsub($v['profit'], $v['amount'], 2); // 盈利
+                $text .= "会员下注 【" . $v['lastStr'] . "】 {$amount} {$profit} {$yl}\n";
+            }else{
+                $text .= "会员下注 【" . $v['lastStr'] . "】 {$amount} 0 -{$amount}\n";
+            }
+            if(++$bet_num >= $realNoticeNum){
+                break;
+            }
+
+        }
+
+        $inlineButton = self::getOperateButton();
+
+        $rand_num = $noticeNum - $bet_num;
+        $text .= self::fakeLotteryDraw($issue_no, $awards, $rand_num);
+        // for ($i = 0; $i < $rand_num; $i++) {
+        //     // 生成 -100000 到 100000 的随机数,但排除 -10 到 10 的范围
+        //     $randomNumber = random_int(-1000000, 1000000) / 100;
+        //     if ($randomNumber >= -10 && $randomNumber <= 10) {
+        //         // 如果落在 -10 到 10 之间,重新生成或调整
+        //         $randomNumber = $randomNumber < 0 ? -random_int(10, 100000) : random_int(10, 100000);
+        //     }
+        //     $text .= "私聊下注 【******】 {$randomNumber}\n";
+        // }
+
+        // 群通知
+        self::bettingGroupNotice($text, $inlineButton, '');
+    }
+
 
     // 虚拟开奖
     public static function fakeLotteryDraw($issue_no, $awards, $rand_num = 30)