# 个人商城系统
# 一、介绍
该模块对商城系统中的商品实体,也就是Goods的实例进行包裹,形成货架实例
每个货架上会带有一种商品,可以通过个人商城配置表中的商品随机池配置并生成一个商品
根据配置表中的刷新周期,每次刷新或者手动执行刷新后,会确定该货架上的商品,直至下次刷新
# 二、使用
// 先在头部引入商城模块
import { personalizedShopSystem } from "@timi/mogs-sdk";
1
2
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
2
3
4
5
6
货架上的商品总数量取决于商品本身的minimumCount和maximumCount,在此区间中任意取值。
若配置了商品本身的限购,则可购买数量以商品的限购数量为准,请谨慎配置
2. 购买货架上的商品
await personalizedShopSystem.buy({
personalShelfId: shelf.id,
count: 10,
});
1
2
3
4
2
3
4
3. 手动刷新货架上的商品(可一次性刷新多个货架)
await personalizedShopSystem.buy({
personalShelfIdList: [1, 2, 8],
});
1
2
3
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
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
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
2
3
4
5
6