diff --git a/src/api/controllers/game_user.controller.ts b/src/api/controllers/game_user.controller.ts new file mode 100644 index 0000000..975a714 --- /dev/null +++ b/src/api/controllers/game_user.controller.ts @@ -0,0 +1,17 @@ +import BaseController from '../../common/base.controller' +import { role, router } from '../../decorators/router' +import { GameUser } from '../../models/GameUser' + +class GameUserController extends BaseController { + @role('anon') + @router('post /weapp/login') + async gameUserLogin(req, res) { + const {accountId} = req.params + let user = (await GameUser.findOrCreate({accountId})).doc + user.updateFromReq(req.params) + await user.save() + const token = await res.jwtSign({ id: user.id, accountId: accountId }); + return {token} + } + +} diff --git a/src/models/GameUser.ts b/src/models/GameUser.ts new file mode 100644 index 0000000..964528d --- /dev/null +++ b/src/models/GameUser.ts @@ -0,0 +1,38 @@ +import { dbconn } from '../decorators/dbconn' +import { + getModelForClass, + index, + modelOptions, + prop +} from '@typegoose/typegoose' +import { BaseModule } from './Base' + +@dbconn() +@index({ accoundId: 1}, { unique: true }) +@modelOptions({ schemaOptions: { collection: 'game_user', timestamps: true } }) +class GameUserClass extends BaseModule { + @prop() + public accountId: string + @prop() + public nickname: string + @prop() + public avatar: string + + @prop({default: 0}) + public sex?: string; + @prop({default: 'CN'}) + public country?: string; + @prop() + public province?: string; + @prop() + public city?: string; + @prop({default: false}) + public locked: boolean; + @prop() + public lockedTime?: Date; + + + +} + +export const GameUser = getModelForClass(GameUserClass, {existingConnection: GameUserClass.db});