|
|
@@ -418,23 +418,38 @@ class BetService extends BaseService
|
|
|
$userInfo = UserService::findOne(['member_id' => $memberId]);
|
|
|
|
|
|
$type = $pc28Switch == 1 ? 6 : 5;
|
|
|
- $betInfo = LhcOrder::where(['type' => $type, 'member_id' => $memberId, 'issue' => $issueInfo->issue_no, 'number' => $keywords])->first(); // 相同下注
|
|
|
+ // 下注项存于 lhc_order_item;相同下注只合并到本机器人建的单项、无优惠券、未开奖的订单
|
|
|
+ $betInfo = LhcOrder::where('type', $type)
|
|
|
+ ->where('member_id', $memberId)
|
|
|
+ ->where('issue', $issueInfo->issue_no)
|
|
|
+ ->where('lottery_status', LhcOrder::STATUS_STAY)
|
|
|
+ ->whereNull('coupon_id')
|
|
|
+ ->whereColumn('total_amount', 'amount')
|
|
|
+ ->whereIn('ordernum', LhcOrderItem::where('member_id', $memberId)->where('number', $keywords)->select('ordernum'))
|
|
|
+ ->lockForUpdate()
|
|
|
+ ->first(); // 相同下注
|
|
|
|
|
|
if ($betInfo) {
|
|
|
- $betInfo->amount = $betInfo->amount + $amount;
|
|
|
- $bet_id = $betInfo->id;
|
|
|
+ $betInfo->amount = bcadd($betInfo->amount, $amount, 2);
|
|
|
+ $betInfo->total_amount = $betInfo->amount;
|
|
|
$betInfo->save();
|
|
|
+ $bet_id = $betInfo->id;
|
|
|
} else {
|
|
|
- $data = [];
|
|
|
- $data['amount'] = $amount; // 分数
|
|
|
- $data['number'] = $keywords; // 玩法
|
|
|
- $data['member_id'] = $memberId;
|
|
|
- $data['user_id'] = $userInfo->id;
|
|
|
- $data['issue'] = $issueInfo->issue_no;
|
|
|
- $data['lhc_number_id'] = $issueInfo->id;
|
|
|
- $data['odds'] = $gameplayRuleInfo['odds'];
|
|
|
- $data['type'] = $type;
|
|
|
- $newBet = LhcOrder::create($data);
|
|
|
+ $ordernum = date('YmdHis') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
|
|
|
+ LhcOrderItem::create([
|
|
|
+ 'ordernum' => $ordernum,
|
|
|
+ 'member_id' => $memberId,
|
|
|
+ 'number' => $keywords, // 玩法
|
|
|
+ ]);
|
|
|
+ $newBet = LhcOrder::create([
|
|
|
+ 'type' => $type,
|
|
|
+ 'issue' => $issueInfo->issue_no,
|
|
|
+ 'ordernum' => $ordernum,
|
|
|
+ 'member_id' => $memberId,
|
|
|
+ 'odds' => $gameplayRuleInfo['odds'],
|
|
|
+ 'amount' => $amount, // 分数
|
|
|
+ 'total_amount' => $amount,
|
|
|
+ ]);
|
|
|
|
|
|
$bet_id = $newBet->id;
|
|
|
}
|
|
|
@@ -625,8 +640,8 @@ class BetService extends BaseService
|
|
|
$text = lang("期数") . " {$issue_no} \n";
|
|
|
// $text .= "\n";
|
|
|
// $text .= "----------\n";
|
|
|
- $list = self::findAll(['member_id' => $memberId, 'issue' => $issue_no]);
|
|
|
- $list = $list->toArray();
|
|
|
+ $list = self::model()::with('items')->whereIn('type', [5, 6])->where('member_id', $memberId)->where('issue', $issue_no)->get();
|
|
|
+ $list = $list->map(fn ($v) => ['number' => $v->items->pluck('number')->implode(','), 'amount' => $v->amount])->toArray();
|
|
|
if (empty($list)) {
|
|
|
$text .= lang("本期暂未下注") . "! \n";
|
|
|
} else {
|
|
|
@@ -660,12 +675,13 @@ class BetService extends BaseService
|
|
|
*/
|
|
|
public static function recentlyRecord($memberId, $page = 1, $limit = 5)
|
|
|
{
|
|
|
- $list = self::model()::where('type', 'in', [5,6])->where('member_id', $memberId)->orderBy('id', 'desc')->forPage($page, $limit)->get();
|
|
|
+ $list = self::model()::with('items')->whereIn('type', [5, 6])->where('member_id', $memberId)->orderBy('id', 'desc')->forPage($page, $limit)->get();
|
|
|
|
|
|
// $text = "```\n";
|
|
|
$text = "";
|
|
|
$text .= "期数--内容--盈亏 \n";
|
|
|
- foreach ($list->toArray() as $k => $v) {
|
|
|
+ foreach ($list as $k => $v) {
|
|
|
+ $v = $v->toArray() + ['number' => $v->items->pluck('number')->implode(',')];
|
|
|
$profit = $v['win_amount'] - $v['amount'];
|
|
|
// $text .= $v['issue_no']." ".$v['keywords']." ".$v['amount']." ".$v['profit']."\n";
|
|
|
$item = $v['issue'] . "==" . $v['number'] . rtrim(rtrim(number_format($v['amount'], 2, '.', ''), '0'), '.') . "==" . rtrim(rtrim(number_format($profit, 2, '.', ''), '0'), '.') . "\n";
|
|
|
@@ -692,8 +708,8 @@ class BetService extends BaseService
|
|
|
}
|
|
|
|
|
|
$msg['chat_id'] = $memberId;
|
|
|
- $list = self::model()::where('type', 'in', [5,6])->where('member_id', $memberId)->orderBy('id', 'desc')->forPage($page, $limit)->get();
|
|
|
- $count = self::model()::where('type', 'in', [5,6])->where('member_id', $memberId)->count();
|
|
|
+ $list = self::model()::with('items')->whereIn('type', [5, 6])->where('member_id', $memberId)->orderBy('id', 'desc')->forPage($page, $limit)->get();
|
|
|
+ $count = self::model()::whereIn('type', [5, 6])->where('member_id', $memberId)->count();
|
|
|
|
|
|
$keyboard = [];
|
|
|
|
|
|
@@ -711,7 +727,7 @@ class BetService extends BaseService
|
|
|
|
|
|
$text .= "-------------------------------------\n";
|
|
|
$text .= lang("期数") . ":{$v->issue} \n";
|
|
|
- $text .= lang("内容") . ":{$v->number} \n";
|
|
|
+ $text .= lang("内容") . ":" . $v->items->pluck('number')->implode(',') . " \n";
|
|
|
$text .= lang("金额") . ":{$v->amount} \n";
|
|
|
$text .= lang("盈亏") . ":{$phase} \n";
|
|
|
}
|
|
|
@@ -772,7 +788,7 @@ class BetService extends BaseService
|
|
|
BalanceLogService::addLog($v['member_id'], $profit, ($balance - $profit), $balance, '投注退分', $v['id'], '');
|
|
|
|
|
|
$text = $issue_no . "期开奖失败 \n";
|
|
|
- $text .= "投注类型:{$v['number']} \n";
|
|
|
+ $text .= "投注类型:" . LhcOrderItem::where('ordernum', $v['ordernum'])->pluck('number')->implode(',') . " \n";
|
|
|
$text .= "投注金额:{$v['amount']} \n";
|
|
|
$text .= "投注的资金已退回您的钱包 \n";
|
|
|
|