fix: support lottery detail code issue route

This commit is contained in:
hajimi
2026-08-03 15:36:40 +08:00
parent c368a45d11
commit 7d887c89e2
6 changed files with 218 additions and 31 deletions
+63 -14
View File
@@ -130,28 +130,77 @@ class LotteryController extends BaseApiController
public function drawDetail()
{
$id = $this->request->get('id/d', 0);
if (empty($id)) {
if ($id > 0) {
$draw = LotteryDraw::where('id', $id)->where('is_show', 1)->findOrEmpty();
if ($draw->isEmpty()) {
return $this->fail('记录不存在');
}
$data = $draw->toArray();
$data['numbers'] = is_string($data['numbers']) ? json_decode($data['numbers'], true) : $data['numbers'];
$data['zodiac'] = is_string($data['zodiac']) ? json_decode($data['zodiac'], true) : $data['zodiac'];
$data['elements'] = is_string($data['elements']) ? json_decode($data['elements'], true) : $data['elements'];
$data['color'] = is_string($data['color']) ? json_decode($data['color'], true) : $data['color'];
$data['prize_info'] = is_string($data['prize_info']) ? json_decode($data['prize_info'], true) : $data['prize_info'];
// 附带分类信息
$category = LotteryCategory::where('id', $data['category_id'])->findOrEmpty();
if (!$category->isEmpty()) {
$data['category'] = $category->toArray();
}
return $this->data($data);
}
$code = trim((string) $this->request->get('code', ''));
$issue = trim((string) $this->request->get('issue', ''));
if ($code === '' || $issue === '') {
return $this->fail('参数缺失');
}
$draw = LotteryDraw::where('id', $id)->where('is_show', 1)->findOrEmpty();
if ($draw->isEmpty()) {
// 新彩票表使用 code + issue 定位开奖记录,兼容开奖列表的跳转参数。
$drawResult = LotteryDrawResult::where('code', $code)
->where('issue', $issue)
->findOrEmpty();
if ($drawResult->isEmpty()) {
return $this->fail('记录不存在');
}
$data = $draw->toArray();
$data['numbers'] = is_string($data['numbers']) ? json_decode($data['numbers'], true) : $data['numbers'];
$data['zodiac'] = is_string($data['zodiac']) ? json_decode($data['zodiac'], true) : $data['zodiac'];
$data['elements'] = is_string($data['elements']) ? json_decode($data['elements'], true) : $data['elements'];
$data['color'] = is_string($data['color']) ? json_decode($data['color'], true) : $data['color'];
$data['prize_info'] = is_string($data['prize_info']) ? json_decode($data['prize_info'], true) : $data['prize_info'];
// 附带分类信息
$category = LotteryCategory::where('id', $data['category_id'])->findOrEmpty();
if (!$category->isEmpty()) {
$data['category'] = $category->toArray();
$data = $drawResult->toArray();
$game = LotteryGame::where('code', $code)
->field('code,name,template,icon')
->findOrEmpty();
$gameData = $game->isEmpty() ? [] : $game->toArray();
$template = (string) ($gameData['template'] ?? '');
$rawNumbers = array_values(array_filter(
array_map('trim', explode(',', (string) ($data['draw_code'] ?? ''))),
static fn($number) => $number !== ''
));
$enrichedNumbers = $this->enrichNumbers($rawNumbers, $template);
$isHk6 = stripos($template, 'hk6') !== false || stripos($template, 'lhc') !== false;
$specialNumber = '';
if ($isHk6 && $rawNumbers) {
$specialNumber = (string) array_pop($rawNumbers);
}
$data['period'] = (string) ($data['issue'] ?? '');
$data['draw_date'] = !empty($data['draw_time'])
? date('Y-m-d', strtotime((string) $data['draw_time']))
: '';
$data['status'] = !empty($data['draw_code']) || (int) ($data['status'] ?? 0) === 1 ? 1 : 0;
$data['numbers'] = $rawNumbers;
$data['special_number'] = $specialNumber;
$data['zodiac'] = $isHk6 ? array_column($enrichedNumbers, 'zodiac') : [];
$data['color'] = $isHk6 ? array_column($enrichedNumbers, 'color') : [];
$data['elements'] = [];
$data['category'] = [
'code' => $code,
'name' => (string) ($gameData['name'] ?? $code),
'icon' => (string) ($gameData['icon'] ?? ''),
'draw_rule' => '',
'draw_time' => (string) ($data['next_time'] ?? ''),
];
return $this->data($data);
}