-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtransfer.php
More file actions
75 lines (69 loc) · 3.38 KB
/
Copy pathtransfer.php
File metadata and controls
75 lines (69 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
require_once __DIR__ . '/config.php';
require_once __DIR__ . '/core/Database.php';
require_once __DIR__ . '/init_check.php';
require_once __DIR__ . '/core/Session.php';
require_once __DIR__ . '/core/TokenSystem.php';
require_once __DIR__ . '/core/StockEngine.php';
require_once __DIR__ . '/core/GachaEngine.php';
require_once __DIR__ . '/core/TradingEngine.php';
require_once __DIR__ . '/core/PoolEngine.php';
require_once __DIR__ . '/core/QuestEngine.php';
require_once __DIR__ . '/core/MarketEngine.php';
require_once __DIR__ . '/adapters/manager.php';
Session::start();
require_once __DIR__ . '/core/AutoJob.php';
AutoJob::run();
Session::requireAuth();
$result = null;
$receiver = null;
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$target = trim($_POST['target'] ?? '');
$amount = (float)($_POST['amount'] ?? 0);
$password = $_POST['password'] ?? '';
if (empty($target) || $amount <= 0 || empty($password)) {
$result = ['success' => false, 'message' => '请填写所有字段。'];
} else {
$db = Database::getInstance();
$userId = Session::userId();
// Verify password
$user = Session::user();
if (!password_verify($password, $user['password_hash'])) {
$result = ['success' => false, 'message' => '密码错误!'];
} else {
// Find receiver
$stmt = $db->prepare("SELECT id, username FROM users WHERE username = ? OR id = ?");
$stmt->execute([$target, is_numeric($target) ? (int)$target : 0]);
$receiver = $stmt->fetch();
if (!$receiver || (int)$receiver['id'] === $userId) {
$result = ['success' => false, 'message' => '接收方不存在或不能转账给自己。'];
} elseif (isset($_SESSION['layer']) && $_SESSION['layer'] === 'kaleidoscope') {
$isKs = true;
if (!TokenSystem::canAffordKaleidoscope($userId, $amount)) {
$result = ['success' => false, 'message' => 'SKYT 不足。'];
} else {
$db->beginTransaction();
try {
$db->prepare("UPDATE users SET kaleidoscope_balance = kaleidoscope_balance - ? WHERE id = ?")->execute([$amount, $userId]);
$db->prepare("UPDATE users SET kaleidoscope_balance = kaleidoscope_balance + ? WHERE id = ?")->execute([$amount, (int)$receiver['id']]);
$db->commit();
$result = ['success' => true, 'message' => "成功向 {$receiver['username']} 转账 {$amount} SKYT!"];
} catch (Exception $e) {
$db->rollBack();
$result = ['success' => false, 'message' => '转账失败。'];
}
}
} elseif (!TokenSystem::canAfford($userId, $amount)) {
$result = ['success' => false, 'message' => '代币不足。'];
} else {
$success = TokenSystem::transfer($userId, (int)$receiver['id'], $amount);
if ($success) {
$result = ['success' => true, 'message' => "成功向 {$receiver['username']} 转账 {$amount} 枚代币!"];
} else {
$result = ['success' => false, 'message' => '转账失败,请重试。'];
}
}
}
}
}
require_once __DIR__ . '/templates/transfer.php';