load(); \support\App::loadAllConfig(['route']); date_default_timezone_set('Asia/Shanghai'); use app\miniapi\auth\TestPhoneIdentityProvider; use plugin\saiadmin\app\model\water\WaterEnterprise; use plugin\saiadmin\app\model\water\WaterLedger; use plugin\saiadmin\app\model\water\WaterModel; if (!TestPhoneIdentityProvider::enabled()) { throw new RuntimeException('Requires local test environment'); } $result = WaterModel::transaction(function (): array { $enterprise = WaterEnterprise::query()->where('id', 49)->lockForUpdate()->first(); if (!$enterprise || $enterprise->name !== '【测试0910】科技园配送测试') { throw new RuntimeException('Expected test enterprise 49'); } $key = ['enterprise_id' => 49, 'kind' => 'demo_seed', 'reference' => 'TEST-MINI-REWARDS-49-20261007']; if (WaterLedger::query()->where($key)->exists()) { return ['replayed' => true]; } $data = [ 'enabled' => false, 'demo' => true, 'reason' => '测试数据仅用于页面展示,不可提现,不产生真实奖励。分享和海报功能尚未开放。', 'total_cents' => 268000, 'withdrawable_cents' => 86000, 'successful_invites' => 36, 'first_order_enterprises' => 28, 'invite_code' => 'TEST-HC202609', 'items' => [ ['id' => 1, 'title' => '新用户首单奖励', 'enterprise_name' => '【测试】云启商务有限公司', 'status' => 'credited', 'status_text' => '订单已完成', 'amount_cents' => 8000], ['id' => 2, 'title' => '奖励观察期', 'enterprise_name' => '【测试】海博设计', 'status' => 'pending', 'status_text' => '预计明日生效', 'amount_cents' => 6000], ['id' => 3, 'title' => '新用户首单奖励', 'enterprise_name' => '【测试】星辰科技', 'status' => 'credited', 'status_text' => '订单已完成', 'amount_cents' => 10000], ], ]; $items = $data['items']; $data['items'] = []; WaterLedger::query()->create($key + [ 'sku_id' => 5, 'quantity' => 0, 'created_by' => 1, 'note' => json_encode($data, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR), 'created_at' => date('Y-m-d H:i:s'), ]); foreach ($items as $item) { WaterLedger::query()->create([ 'enterprise_id' => 49, 'kind' => 'demo_seed', 'reference' => $key['reference'] . '-ITEM-' . $item['id'], 'sku_id' => 5, 'quantity' => 0, 'created_by' => 1, 'note' => json_encode($item, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR), 'created_at' => date('Y-m-d H:i:s'), ]); } return ['replayed' => false, 'enterprise_id' => 49, 'reward_records' => count($items)]; }); echo json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . PHP_EOL;