import { gameData } from "../pubUtils/data"; import { DicShopListModel } from "../db/DicShopList"; import { ShopItem } from "../domain/dbGeneral"; import { ShopItemListParam } from '../domain/roleField/shop'; import { UserShopModel } from "../db/UserShop"; export async function getShopListById(shopId: number, roleId: string) { let shopItemList = new Array(); // 返回 let dbDicShop = await DicShopListModel.findByShopId(shopId); let userShopRecs = await UserShopModel.findMapByShopId(roleId, shopId); // console.log(JSON.stringify([...userShopRecs])) if(!dbDicShop || dbDicShop.useJson) { // 完全使用json中配置的商品,数据库只做排序用,数据库内没有的排到最后 let items = dbDicShop?.items||[]; let map = new Map(); for(let item of items) { map.set(item.id, item); } let dicShop = gameData.shop.get(shopId)||[]; for(let { id, type } of dicShop) { let buyCount = userShopRecs.has(id)?userShopRecs.get(id).count: 0; if(map.has(id)) { let item = map.get(id); let param = new ShopItemListParam(id, item.discount, type, buyCount, item.order); shopItemList.push(param); } else { let param = new ShopItemListParam(id, 1, type, buyCount, 0); shopItemList.push(param); } } } else { // 只返回数据库内的商品 let items = dbDicShop?.items||[]; for(let item of items) { let { id, order, discount } = item; let buyCount = userShopRecs.has(id)?userShopRecs.get(id).count: 0; let dicShop = gameData.shopItem.get(id); if(dicShop) { let param = new ShopItemListParam(id, discount, dicShop.type, buyCount, order); shopItemList.push(param); } } } shopItemList = shopItemList.sort((a, b) => b.order - a.order); return shopItemList; } export async function getAllShopList(roleId: string) { let shopLists: {shopId: number, shopItemList: ShopItemListParam[]}[] = []; for(let [ shopId ] of gameData.shopList) { let shopItemList = await getShopListById(shopId, roleId); shopLists.push({ shopId, shopItemList }); } return shopLists; }