fix: support lottery detail code issue route
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user