|
|
@@ -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)
|