You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
feat: add builders club catalog and room flow
This commit is contained in:
@@ -0,0 +1,284 @@
|
||||
# Builders Club Catalog Reference
|
||||
|
||||
Questa guida riassume il setup corretto dopo la separazione completa tra catalogo normale e `Builders Club`.
|
||||
|
||||
## Tabelle usate davvero
|
||||
|
||||
- Catalogo normale:
|
||||
- `catalog_pages`
|
||||
- `catalog_items`
|
||||
- Builders Club:
|
||||
- `catalog_pages_bc`
|
||||
- `catalog_items_bc`
|
||||
- Abbonamenti / add-on BC venduti nel catalogo normale:
|
||||
- `catalog_club_offers`
|
||||
|
||||
Quindi:
|
||||
|
||||
- se vuoi una pagina BC, va in `catalog_pages_bc`
|
||||
- se vuoi un furni BC, va in `catalog_items_bc`
|
||||
- se vuoi vendere lo stesso furni anche nel catalogo normale, aggiungi un'altra riga normale in `catalog_items`
|
||||
|
||||
Questo è proprio il vantaggio della separazione: lo stesso `item_id` può comparire sia nel catalogo normale sia nel BC, ma con comportamenti diversi.
|
||||
|
||||
## Differenza pratica tra catalogo normale e BC
|
||||
|
||||
### Catalogo normale
|
||||
|
||||
- gli offer arrivano da `catalog_items`
|
||||
- hanno costi normali (`cost_credits`, `cost_points`, ecc.)
|
||||
- quando comprati diventano proprietà utente / inventario
|
||||
|
||||
### Builders Club
|
||||
|
||||
- gli offer arrivano da `catalog_items_bc`
|
||||
- non hanno prezzo perché il piazzamento BC usa il flow dedicato
|
||||
- non entrano nell'inventario utente
|
||||
- non diventano mai proprietà utente
|
||||
- quando rimossi dalla stanza vengono eliminati
|
||||
|
||||
## Migration da applicare
|
||||
|
||||
Assicurati di avere applicato:
|
||||
|
||||
- `Database Updates/009_add_builders_club_catalog_offers.sql`
|
||||
- `Database Updates/010_add_catalog_mode_to_catalog_pages.sql`
|
||||
- `Database Updates/011_add_builders_club_trial_room_lock.sql`
|
||||
- `Database Updates/012_support_builders_club_catalog_tables.sql`
|
||||
|
||||
La `012` è importante perché aggiorna `catalog_pages_bc.page_layout` con i layout BC moderni:
|
||||
|
||||
- `builders_club_frontpage`
|
||||
- `builders_club_addons`
|
||||
- `builders_club_loyalty`
|
||||
|
||||
## Come aggiungere pagine BC
|
||||
|
||||
Le pagine BC vanno create in `catalog_pages_bc`.
|
||||
|
||||
Esempio:
|
||||
|
||||
```sql
|
||||
INSERT INTO catalog_pages_bc
|
||||
(
|
||||
parent_id,
|
||||
caption,
|
||||
page_layout,
|
||||
icon_color,
|
||||
icon_image,
|
||||
order_num,
|
||||
visible,
|
||||
enabled,
|
||||
page_headline,
|
||||
page_teaser,
|
||||
page_special,
|
||||
page_text1,
|
||||
page_text2,
|
||||
page_text_details,
|
||||
page_text_teaser
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
-1,
|
||||
'Builders Furni',
|
||||
'default_3x3',
|
||||
1,
|
||||
28,
|
||||
1,
|
||||
'1',
|
||||
'1',
|
||||
'catalog_header_roombuilder',
|
||||
'',
|
||||
'',
|
||||
'Builders Club',
|
||||
'Linea test',
|
||||
'Pagina test del Builders Club',
|
||||
''
|
||||
);
|
||||
```
|
||||
|
||||
## Come aggiungere furni BC
|
||||
|
||||
I furni BC vanno in `catalog_items_bc`.
|
||||
|
||||
Esempio:
|
||||
|
||||
```sql
|
||||
INSERT INTO catalog_items_bc
|
||||
(
|
||||
item_ids,
|
||||
page_id,
|
||||
catalog_name,
|
||||
order_number,
|
||||
extradata
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
'12345',
|
||||
1,
|
||||
'bc_test_sofa',
|
||||
1,
|
||||
''
|
||||
);
|
||||
```
|
||||
|
||||
Dove:
|
||||
|
||||
- `item_ids` = ID del base item
|
||||
- `page_id` = ID pagina in `catalog_pages_bc`
|
||||
- `catalog_name` = chiave offer/localization
|
||||
|
||||
## Come vendere lo stesso furni anche nel catalogo normale
|
||||
|
||||
Se vuoi che lo stesso furni sia:
|
||||
|
||||
- vendibile nel catalogo normale
|
||||
- disponibile anche nel Builders Club
|
||||
|
||||
devi avere **due righe distinte**:
|
||||
|
||||
### Normale
|
||||
|
||||
```sql
|
||||
INSERT INTO catalog_items
|
||||
(
|
||||
page_id,
|
||||
item_ids,
|
||||
catalog_name,
|
||||
cost_credits,
|
||||
cost_points,
|
||||
points_type,
|
||||
amount,
|
||||
club_only,
|
||||
extradata,
|
||||
have_offer,
|
||||
offer_id,
|
||||
limited_stack,
|
||||
order_number
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
500,
|
||||
'12345',
|
||||
'normal_test_sofa',
|
||||
5,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
'0',
|
||||
'',
|
||||
'1',
|
||||
-1,
|
||||
0,
|
||||
1
|
||||
);
|
||||
```
|
||||
|
||||
### Builders Club
|
||||
|
||||
```sql
|
||||
INSERT INTO catalog_items_bc
|
||||
(
|
||||
item_ids,
|
||||
page_id,
|
||||
catalog_name,
|
||||
order_number,
|
||||
extradata
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
'12345',
|
||||
1,
|
||||
'bc_test_sofa',
|
||||
1,
|
||||
''
|
||||
);
|
||||
```
|
||||
|
||||
Quindi lo stesso base item `12345` può vivere in entrambi i cataloghi senza condividere il prezzo.
|
||||
|
||||
## Abbonamento e add-on BC
|
||||
|
||||
Abbonamento e add-on non stanno in `catalog_items_bc`.
|
||||
|
||||
Vanno in:
|
||||
|
||||
- `catalog_club_offers`
|
||||
|
||||
Tipi supportati:
|
||||
|
||||
- `BUILDERS_CLUB`
|
||||
- `BUILDERS_CLUB_ADDON`
|
||||
|
||||
Sono venduti nel catalogo normale, come HC/VIP, ma il widget BC usa comunque le sue pagine dedicate da `catalog_pages_bc`.
|
||||
|
||||
## Nota su `catalog_mode`
|
||||
|
||||
`catalog_mode` resta nella tabella `catalog_pages`, ma non è più il meccanismo principale per far comparire le pagine nel Builders Club.
|
||||
|
||||
Adesso il runtime BC legge direttamente:
|
||||
|
||||
- `catalog_pages_bc`
|
||||
- `catalog_items_bc`
|
||||
|
||||
Quindi:
|
||||
|
||||
- aggiungere pagine BC in `catalog_pages` non basta
|
||||
- aggiungere items BC in `catalog_items` non basta
|
||||
- usare `BOTH` su una pagina normale non la renderà automaticamente una pagina BC
|
||||
|
||||
## Query utili per test
|
||||
|
||||
### Elencare pagine BC
|
||||
|
||||
```sql
|
||||
SELECT * FROM catalog_pages_bc ORDER BY parent_id, order_num, id;
|
||||
```
|
||||
|
||||
### Elencare items BC
|
||||
|
||||
```sql
|
||||
SELECT * FROM catalog_items_bc ORDER BY page_id, order_number, id;
|
||||
```
|
||||
|
||||
### Trovare lo stesso furni in entrambi i cataloghi
|
||||
|
||||
```sql
|
||||
SELECT 'NORMAL' AS source, id, page_id, item_ids, catalog_name
|
||||
FROM catalog_items
|
||||
WHERE item_ids = '12345'
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT 'BC' AS source, id, page_id, item_ids, catalog_name
|
||||
FROM catalog_items_bc
|
||||
WHERE item_ids = '12345';
|
||||
```
|
||||
|
||||
## Consiglio pratico
|
||||
|
||||
Per fare test rapidi:
|
||||
|
||||
1. crea una pagina in `catalog_pages_bc`
|
||||
2. inserisci 1-2 furni in `catalog_items_bc`
|
||||
3. lascia gli stessi furni anche in `catalog_items` se li vuoi vendibili normalmente
|
||||
4. pubblica / ricarica il catalogo
|
||||
|
||||
Se vuoi, possiamo aggiungere anche un file SQL separato con qualche pagina BC e qualche furni BC già pronti da importare per i test.
|
||||
|
||||
## Seed demo già pronto
|
||||
|
||||
Se vuoi una demo immediata, puoi usare:
|
||||
|
||||
- `Database Updates/013_seed_builders_club_sample_page.sql`
|
||||
|
||||
Questo seed:
|
||||
|
||||
- crea una root BC demo
|
||||
- crea una pagina BC demo figlia
|
||||
- duplica alcuni furni già esistenti del catalogo normale dentro `catalog_items_bc`
|
||||
|
||||
Così puoi testare subito il caso:
|
||||
|
||||
- stesso furni vendibile nel catalogo normale
|
||||
- stesso furni disponibile anche nel Builders Club
|
||||
Reference in New Issue
Block a user