| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- <?php
- declare(strict_types=1);
- require dirname(__DIR__) . '/vendor/autoload.php';
- \Dotenv\Dotenv::createUnsafeMutable(dirname(__DIR__))->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;
|