From eb8dea1ddf2745b235381c43ae03e7207b3196c6 Mon Sep 17 00:00:00 2001 From: zhl Date: Tue, 8 Jun 2021 11:37:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=BA=97=E9=93=BA=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3=E5=A2=9E=E5=8A=A0=E4=B8=8A=E6=8A=A5?= =?UTF-8?q?=E7=94=9F=E6=88=90=E4=BA=8C=E7=BB=B4=E7=A0=81=E7=9A=84=E9=A2=9D?= =?UTF-8?q?=E5=A4=96=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/controllers/game_user.controller.ts | 8 ++++++++ src/api/controllers/shop.controller.ts | 18 ++++++++++++------ src/models/user/GameUser.ts | 11 ++++------- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/api/controllers/game_user.controller.ts b/src/api/controllers/game_user.controller.ts index 9911c0a..e15eb5a 100644 --- a/src/api/controllers/game_user.controller.ts +++ b/src/api/controllers/game_user.controller.ts @@ -25,6 +25,14 @@ class GameUserController extends BaseController { } let user = (await GameUser.findOrCreate({ accountId })).doc user.updateFromReq(req.params) + let sid = req.params.shop + if (sid) { + const shop = await Shop.fetchByID(sid) + if (shop) { + user.shop = shop.id + user.shops.pushOnce(shop.id) + } + } await user.save() const token = await res.jwtSign({ id: user.id, accountId }) return { token } diff --git a/src/api/controllers/shop.controller.ts b/src/api/controllers/shop.controller.ts index d578ca2..6e2a6bb 100644 --- a/src/api/controllers/shop.controller.ts +++ b/src/api/controllers/shop.controller.ts @@ -5,6 +5,7 @@ import { ZError } from '../../common/ZError' import { ShopExam } from '../../models/shop/ShopExam' import { ShopActivity } from '../../models/shop/ShopActivity' import { ShopGameExt } from '../../models/shop/ShopGameExt' +import { GameUser } from '../../models/user/GameUser' class ShopController extends BaseController { /** @@ -79,21 +80,26 @@ class ShopController extends BaseController { } @role('anon') - @router('post /api/:accountid/shop') + @router('post /api/:accountId/shop') async shopInfo(req) { - let { sid } = req.params + let { sid, accountId } = req.params if (!sid) { throw new ZError(10, `shopInfo 没有店铺id: ${sid}`) } - sid = sid.split('|')[0] - if (!validShopId(sid)) { - throw new ZError(10, `shopInfo 没有店铺id或者店铺id格式不正确: ${sid}`) + const shopId = sid.split('|')[0] + if (!validShopId(shopId)) { + throw new ZError(10, `shopInfo 没有店铺id或者店铺id格式不正确: ${shopId}`) } let rspData: any = {} - let shop = await Shop.fetchByID(sid) + let shop = await Shop.fetchByID(shopId) if (!shop) { throw new ZError(11, '未找到对应的店铺') } + let user = (await GameUser.findOrCreate({ accountId })).doc + user.shop = shop.id + user.shops.pushOnce(shop.id) + user.loginParams = sid.split('|').slice(1) + await user.save() rspData.gameCfg = {} if (!!shop.gameInfo) { let gameInfo = shop.gameInfo diff --git a/src/models/user/GameUser.ts b/src/models/user/GameUser.ts index 0ede4fd..60296e4 100644 --- a/src/models/user/GameUser.ts +++ b/src/models/user/GameUser.ts @@ -1,6 +1,7 @@ import { getModelForClass, index, modelOptions, prop, ReturnModelType } from '@typegoose/typegoose' import { BaseModule } from '../Base' import { dbconn } from '../../decorators/dbconn' +import { Shop } from '../shop/Shop' @dbconn() @index({ accountId: 1 }, { unique: true }) @@ -45,6 +46,9 @@ class GameUserClass extends BaseModule { @prop() public shop: string + @prop({ type: () => [String] }) + public loginParams: string[] + public static async getByAccountID(this: ReturnModelType, accountId: string) { let records = await this.find({ accountId }).limit(1) return records.length > 0 ? records[0] : null @@ -58,13 +62,6 @@ class GameUserClass extends BaseModule { } return map } - - public updateFromReq(data: any) { - super.updateFromReq(data) - if (data.shop) { - this.shops.pushOnce(data.shop) - } - } } export const GameUser = getModelForClass(GameUserClass, { existingConnection: GameUserClass.db })