refactor(bootstrap): migrate payment items to seed file
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>
This commit is contained in:
@@ -1,201 +0,0 @@
|
||||
{
|
||||
"data_headers": {
|
||||
"sid": "ac631c29b5f5d07ed5fb6712ad8623c31779553960",
|
||||
"short_udid": 411054851,
|
||||
"viewer_id": 906243102,
|
||||
"servertime": 1779553960,
|
||||
"result_code": 1
|
||||
},
|
||||
"data": {
|
||||
"10011": {
|
||||
"record_id": "21",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"30011": {
|
||||
"record_id": "26",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"40000": {
|
||||
"record_id": "27",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"50000": {
|
||||
"record_id": "28",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"60000": {
|
||||
"record_id": "29",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"70011": {
|
||||
"record_id": "24",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"80000": {
|
||||
"record_id": "30",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"98900": {
|
||||
"record_id": "19",
|
||||
"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",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"99200": {
|
||||
"record_id": "3",
|
||||
"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": "",
|
||||
"purchase_num_current": 0
|
||||
},
|
||||
"99400": {
|
||||
"record_id": "10",
|
||||
"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": "",
|
||||
"purchase_num_current": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
182
SVSim.Bootstrap/Data/seeds/payment-items.json
Normal file
182
SVSim.Bootstrap/Data/seeds/payment-items.json
Normal file
@@ -0,0 +1,182 @@
|
||||
[
|
||||
{
|
||||
"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": ""
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user