Lifts ImportPaymentItems out of GlobalsImporter into a dedicated PaymentItemImporter driven by Data/seeds/payment-items.json. Wired into Program.cs and SVSimTestFactory.SeedGlobalsAsync after PracticeOpponentImporter. Drops the prod-capture file in favor of the extractor pipeline. Canonical 4-test suite (basic, idempotent, leave-untouched, skip-zero) keeps the dict-in-sync upsert pattern Task 2 established. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
183 lines
5.8 KiB
JSON
183 lines
5.8 KiB
JSON
[
|
|
{
|
|
"record_id": 3,
|
|
"product_id": 992,
|
|
"store_product_id": 99200,
|
|
"name": "[b]One-time Deal![/b] 800-crystal set",
|
|
"text": "Purchase 800 Crystals",
|
|
"price": "7.99",
|
|
"charge_crystal_num": 800,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 1,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal_strong",
|
|
"start_time": "2018-01-30 04:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 10,
|
|
"product_id": 994,
|
|
"store_product_id": 99400,
|
|
"name": "[b]Special Offer![/b] 7500-crystal set (3 times per person)",
|
|
"text": "Purchase 7500 Crystals",
|
|
"price": "79.99",
|
|
"charge_crystal_num": 7500,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 3,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal_strong",
|
|
"start_time": "2017-06-01 06:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 19,
|
|
"product_id": 989,
|
|
"store_product_id": 98900,
|
|
"name": "[b]1-Time Deal![/b] 1000-crystal set",
|
|
"text": "Purchase 1000 Crystals",
|
|
"price": "15.99",
|
|
"charge_crystal_num": 1000,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 1,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal_strong",
|
|
"start_time": "2026-04-01 02:00:00",
|
|
"end_time": "2026-07-01 01:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 1,
|
|
"resale_start_date": "2026-04-01 02:00:00"
|
|
},
|
|
{
|
|
"record_id": 21,
|
|
"product_id": 8,
|
|
"store_product_id": 10011,
|
|
"name": "60-crystal set",
|
|
"text": "Purchase 60 Crystals",
|
|
"price": "0.99",
|
|
"charge_crystal_num": 60,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 999999999,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal",
|
|
"start_time": "2022-10-05 15:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 24,
|
|
"product_id": 9,
|
|
"store_product_id": 70011,
|
|
"name": "350-crystal set",
|
|
"text": "Purchase 350 Crystals",
|
|
"price": "5.99",
|
|
"charge_crystal_num": 350,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 999999999,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal",
|
|
"start_time": "2022-10-05 15:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 26,
|
|
"product_id": 10,
|
|
"store_product_id": 30011,
|
|
"name": "670-crystal set",
|
|
"text": "Purchase 670 Crystals",
|
|
"price": "10.99",
|
|
"charge_crystal_num": 670,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 999999999,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal",
|
|
"start_time": "2022-10-05 15:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 27,
|
|
"product_id": 4,
|
|
"store_product_id": 40000,
|
|
"name": "1200-crystal set",
|
|
"text": "Purchase 1200 Crystals",
|
|
"price": "20.99",
|
|
"charge_crystal_num": 1200,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 999999999,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal",
|
|
"start_time": "2015-03-01 15:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 28,
|
|
"product_id": 5,
|
|
"store_product_id": 50000,
|
|
"name": "2400-crystal set",
|
|
"text": "Purchase 2400 Crystals",
|
|
"price": "39.99",
|
|
"charge_crystal_num": 2400,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 999999999,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal",
|
|
"start_time": "2015-03-01 15:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 29,
|
|
"product_id": 6,
|
|
"store_product_id": 60000,
|
|
"name": "5000-crystal set",
|
|
"text": "Purchase 5000 Crystals",
|
|
"price": "79.99",
|
|
"charge_crystal_num": 5000,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 999999999,
|
|
"special_shop_flag": 0,
|
|
"image_name": "thumbnail_crystal",
|
|
"start_time": "2015-03-01 15:00:00",
|
|
"end_time": "2030-03-01 14:59:59",
|
|
"remaining_time": 0,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
},
|
|
{
|
|
"record_id": 30,
|
|
"product_id": 800,
|
|
"store_product_id": 80000,
|
|
"name": "1200-crystal and Legendary set",
|
|
"text": "Purchase 1200 Crystals and Legendary set",
|
|
"price": "20.99",
|
|
"charge_crystal_num": 1200,
|
|
"free_crystal_num": 0,
|
|
"purchase_limit": 3,
|
|
"special_shop_flag": 1,
|
|
"image_name": "thumbnail_crystal_strong",
|
|
"start_time": "2018-01-01 00:00:00",
|
|
"end_time": "2019-03-19 16:15:17",
|
|
"remaining_time": 604800,
|
|
"is_resale_product": 0,
|
|
"resale_start_date": ""
|
|
}
|
|
]
|