# 个人商城系统

# 一、介绍

该模块对商城系统中的商品实体,也就是Goods的实例进行包裹,形成货架实例

每个货架上会带有一种商品,可以通过个人商城配置表中的商品随机池配置并生成一个商品

根据配置表中的刷新周期,每次刷新或者手动执行刷新后,会确定该货架上的商品,直至下次刷新

# 二、使用

// 先在头部引入商城模块
import { personalizedShopSystem } from "@timi/mogs-sdk";
1
2

1. 获取全部货架列表

const shelves = await personalizedShopSystem.personalShelves;
for(const shelf of shelves) {
    console.log('该货架上的商品名称:', shelf.goods.name);
    console.log('该货架上的商品总数量:', shelf.count);
    console.log('该货架上的已售商品数量:', shelf.soldCount)
}
1
2
3
4
5
6

货架上的商品总数量取决于商品本身的minimumCountmaximumCount,在此区间中任意取值。

若配置了商品本身的限购,则可购买数量以商品的限购数量为准,请谨慎配置

2. 购买货架上的商品

await personalizedShopSystem.buy({
    personalShelfId: shelf.id,
    count: 10,
});
1
2
3
4

3. 手动刷新货架上的商品(可一次性刷新多个货架)

await personalizedShopSystem.buy({
    personalShelfIdList: [1, 2, 8],
});
1
2
3

4. 监听货架更新

无论手动刷新货架或是服务端自动刷新货架,都会触发货架更新事件

personalizedShopSystem.onPersonalShopChange((e) => {
    if (!e.previousValue) {
        console.log('新增了一个货架:', e.currentValue);
    } else if (!e.currentValue) {
        console.log('下架了一个货架:', e.previousValue);
    } else {
        console.log('之前的货架:', e.previousValue);
        console.log('当前的货架:', e.currentValue);   
    }
})
1
2
3
4
5
6
7
8
9
10

5. 监听商品价格变动

只有配置为浮动价格的商品,购买后才会触发其价格的变动,商品是否为浮动价格,可查看isDynamicPrice字段

personalizedShopSystem.onGoodsPriceChange((e) => {
    console.log('之前价格:', e.previousValue.price);
    console.log('当前价格:', e.currentValue.price);
})
1
2
3
4

6. 监听货架剩余可刷新次数变化

如果货架配置了刷新限制ID,意味着每次刷新之后,剩余可刷新次数都会减一,直至为0不可购买。

刷新上限对应refreshLimitation字段中的limitCount

货架剩余刷新次数对应refreshLimitation字段中的restCount

游戏侧可通过监听对应事件来实时获取剩余可刷新次数

personalizedShopSystem.onRestRefreshCountChange((e) => {
    console.log('触发此次事件的货架id为:', e.id);
    console.log('之前剩余可购买次数:', e.previousValue);
    console.log('当前剩余可购买次数:', e.currentValue);
    if (e.currentValue === 0) console.log('该商品无法继续购买了!');
})
1
2
3
4
5
6