mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 12:30:49 +08:00
fix exam assign undefined unit + improve announce ReAnnounce check
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Repositories\ExamRepository;
|
||||
|
||||
class ExamUser extends NexusModel
|
||||
{
|
||||
protected $fillable = ['exam_id', 'uid', 'status', 'progress', 'begin', 'end', 'is_done'];
|
||||
@@ -43,38 +45,8 @@ class ExamUser extends NexusModel
|
||||
|
||||
public function getProgressFormattedAttribute(): array
|
||||
{
|
||||
$result = [];
|
||||
$progress = $this->progress;
|
||||
foreach ($this->exam->indexes as $key => $index) {
|
||||
if (!isset($index['checked']) || !$index['checked']) {
|
||||
continue;
|
||||
}
|
||||
$currentValue = $progress[$index['index']] ?? 0;
|
||||
$requireValue = $index['require_value'];
|
||||
$unit = Exam::$indexes[$index['index']]['unit'] ?? '';
|
||||
switch ($index['index']) {
|
||||
case Exam::INDEX_UPLOADED:
|
||||
case Exam::INDEX_DOWNLOADED:
|
||||
$currentValueFormatted = mksize($currentValue);
|
||||
$requireValueAtomic = $requireValue * 1024 * 1024 * 1024;
|
||||
break;
|
||||
case Exam::INDEX_SEED_TIME_AVERAGE:
|
||||
$currentValueFormatted = number_format($currentValue / 3600, 2) . " $unit";
|
||||
$requireValueAtomic = $requireValue * 3600;
|
||||
break;
|
||||
default:
|
||||
$currentValueFormatted = $currentValue;
|
||||
$requireValueAtomic = $requireValue;
|
||||
}
|
||||
$index['name'] = Exam::$indexes[$index['index']]['name'] ?? '';
|
||||
$index['index_formatted'] = nexus_trans('exam.index_text_' . $index['index']);
|
||||
$index['require_value_formatted'] = "$requireValue " . ($index['unit'] ?? '');
|
||||
$index['current_value'] = $currentValue;
|
||||
$index['current_value_formatted'] = $currentValueFormatted;
|
||||
$index['passed'] = $currentValue >= $requireValueAtomic;
|
||||
$result[] = $index;
|
||||
}
|
||||
return $result;
|
||||
$examRep = new ExamRepository();
|
||||
return $examRep->getProgressFormatted($this->exam, $this->progress);
|
||||
}
|
||||
|
||||
public static function listStatus($onlyKeyValue = false): array
|
||||
|
||||
@@ -691,7 +691,7 @@ class ExamRepository extends BaseRepository
|
||||
|
||||
}
|
||||
|
||||
private function getProgressFormatted(Exam $exam, array $progress, $locale = null)
|
||||
public function getProgressFormatted(Exam $exam, array $progress, $locale = null)
|
||||
{
|
||||
$result = [];
|
||||
foreach ($exam->indexes as $key => $index) {
|
||||
@@ -700,6 +700,7 @@ class ExamRepository extends BaseRepository
|
||||
}
|
||||
$currentValue = $progress[$index['index']] ?? 0;
|
||||
$requireValue = $index['require_value'];
|
||||
$unit = Exam::$indexes[$index['index']]['unit'] ?? '';
|
||||
switch ($index['index']) {
|
||||
case Exam::INDEX_UPLOADED:
|
||||
case Exam::INDEX_DOWNLOADED:
|
||||
@@ -707,7 +708,7 @@ class ExamRepository extends BaseRepository
|
||||
$requireValueAtomic = $requireValue * 1024 * 1024 * 1024;
|
||||
break;
|
||||
case Exam::INDEX_SEED_TIME_AVERAGE:
|
||||
$currentValueFormatted = number_format($currentValue / 3600, 2) . " {$index['unit']}";
|
||||
$currentValueFormatted = number_format($currentValue / 3600, 2) . " $unit";
|
||||
$requireValueAtomic = $requireValue * 3600;
|
||||
break;
|
||||
default:
|
||||
@@ -716,7 +717,7 @@ class ExamRepository extends BaseRepository
|
||||
}
|
||||
$index['name'] = Exam::$indexes[$index['index']]['name'] ?? '';
|
||||
$index['index_formatted'] = nexus_trans('exam.index_text_' . $index['index']);
|
||||
$index['require_value_formatted'] = "$requireValue " . ($index['unit'] ?? '');
|
||||
$index['require_value_formatted'] = "$requireValue $unit";
|
||||
$index['current_value'] = $currentValue;
|
||||
$index['current_value_formatted'] = $currentValueFormatted;
|
||||
$index['passed'] = $currentValue >= $requireValueAtomic;
|
||||
|
||||
@@ -617,8 +617,11 @@ class TrackerRepository extends BaseRepository
|
||||
protected function isReAnnounce(Request $request): int
|
||||
{
|
||||
$key = $request->query->get('key');
|
||||
$ip = $request->query->get('ip');
|
||||
$ipv4 = $request->query->get('ipv4');
|
||||
$ipv6 = $request->query->get('ipv6');
|
||||
$queryString = $request->getQueryString();
|
||||
$lockKeyOriginal = str_replace($key, '', $queryString);
|
||||
$lockKeyOriginal = str_replace([$key, $ip, $ipv4, $ipv6], '', $queryString);
|
||||
$lockKey = md5($lockKeyOriginal);
|
||||
$startTimestamp = nexus()->getStartTimestamp();
|
||||
$redis = Redis::connection()->client();
|
||||
|
||||
Reference in New Issue
Block a user