diff --git a/game-server/app/servers/role/handler/shopHandler.ts b/game-server/app/servers/role/handler/shopHandler.ts index 10e8705a3..41581b352 100644 --- a/game-server/app/servers/role/handler/shopHandler.ts +++ b/game-server/app/servers/role/handler/shopHandler.ts @@ -52,12 +52,12 @@ export class ShopHandler { let sid = session.get('sid'); let serverId = session.get('serverId'); - let { activityId, shopItemId, count } = msg; + let { activityId = 0, shopItemId, count } = msg; if( count < 0) return resResult(STATUS.WRONG_PARMS); let dicShopItem = await getShopDicById(activityId, shopItemId, roleId, serverId); if(!dicShopItem) return STATUS.DIC_DATA_NOT_FOUND; - if(dicShopItem['productID']) return resResult(STATUS.CAN_NOT_PURCHASE); + if(dicShopItem['productID'] && dicShopItem['productID'] != '&') return resResult(STATUS.CAN_NOT_PURCHASE); let userShop = await UserShopModel.findByRoleAndItem(roleId, activityId, dicShopItem); diff --git a/game-server/app/services/shopService.ts b/game-server/app/services/shopService.ts index 2caf9f3d8..c24b8d10c 100644 --- a/game-server/app/services/shopService.ts +++ b/game-server/app/services/shopService.ts @@ -53,7 +53,7 @@ async function getShopListByData(shop: number, type: number, userShopRecs: UserS export async function getShopDicById(activityId: number, itemId: number, roleId: string, serverId: number) { - if(activityId == 0) { + if(!activityId || activityId == 0) { return gameData.shopItem.get(itemId); } else { let activityData = await getShopActivityById(roleId, serverId, activityId); diff --git a/shared/domain/roleField/shop.ts b/shared/domain/roleField/shop.ts index 055ac7452..db922bcb4 100644 --- a/shared/domain/roleField/shop.ts +++ b/shared/domain/roleField/shop.ts @@ -2,6 +2,7 @@ import { SHOP_REFRESH_TYPE } from "../../consts"; import { ActivityModelType } from "../../db/Activity"; import { UserShopType } from "../../db/UserShop"; import { UserShopTypeType } from "../../db/UserShopType"; +import { gameData } from "../../pubUtils/data"; import { nowSeconds } from "../../pubUtils/timeUtil"; import { ActivityBase } from "../activityField/activityField"; @@ -140,10 +141,14 @@ export class ShopReturnData { public addUserRecords(record: UserShopType) { if(!record || record.shop != this.shop || record.type != this.type) return; - let dic = this.dic.find(cur => cur.id == record.itemId); - if(!dic || (dic.createTime && dic.createTime != record.createTime)) return; + if(this.activityId > 0) { + let dic = this.dic.find(cur => cur.id == record.itemId); + if(!dic || (dic.createTime && dic.createTime != record.createTime)) return; + } else { + if(!gameData.shopItem.has(record.itemId)) return; + } let recordResult = new ShopReturnRecordData(record); - if(recordResult && recordResult.shopItemId) this.records.push(recordResult) + if(recordResult && recordResult.shopItemId && recordResult.buyCount) this.records.push(recordResult) } public setReadRecord(record: UserShopTypeType) {