diff --git a/game-server/app/servers/battle/handler/guildHandler.ts b/game-server/app/servers/battle/handler/guildHandler.ts index 9c73048f1..58f41431c 100644 --- a/game-server/app/servers/battle/handler/guildHandler.ts +++ b/game-server/app/servers/battle/handler/guildHandler.ts @@ -1,4 +1,6 @@ import {Application, BackendSession, pinus} from 'pinus'; +import { resResult } from '../../../pubUtils/util'; +import { STATUS } from '../../../consts'; export default function(app: Application) { return new GuildHandler(app); @@ -14,7 +16,19 @@ export class GuildHandler { } //TODO 获取军团列表 - async getGuildList() { - + async getGuildList(msg: {page: number, showPeopleMax: boolean, name: string }, session: BackendSession) { + + const list = [{ + code: "code", + name: "name", + icon: 1, + lv: 0, + peopleNum: 0, + leader: "leader", + ceCondition: 0, + quitTime: 0, + hasApply: true + }]; + return resResult(STATUS.SUCCESS, { list }); } } \ No newline at end of file diff --git a/game-server/package.json b/game-server/package.json index c92133ee9..60dec314d 100644 --- a/game-server/package.json +++ b/game-server/package.json @@ -7,7 +7,7 @@ "build": "tsc", "start": "yarn run build && cd dist && node app", "dev": "node tsrun.js", - "test": "yarn run build", + "test": "./node_modules/mocha/bin/mocha -t 5000 -r ts-node/register ./test/*test.ts", "cov": "nyc mocha", "ci": "yarn run test", "gen-api-ref": "node ../../../node_modules/typedoc/bin/typedoc --mode file --hideGenerator --excludeExternals --ignoreCompilerErrors --out ../../../run/site/public/api-reference/pinus-loader lib/", diff --git a/game-server/test/guild.test.ts b/game-server/test/guild.test.ts new file mode 100644 index 000000000..1d84efdbe --- /dev/null +++ b/game-server/test/guild.test.ts @@ -0,0 +1,81 @@ +import 'mocha'; +import { PinusWSClient, PinusWSClientEvent } from 'pinus-robot-plugin'; +import { expect } from 'chai'; +describe('军团测试', function() { + // it('异步请求应该返回一个对象', function(done){ + // request + // .get('https://api.github.com') + // .end(function(err, res){ + // expect(res).to.be.an('object'); + // done(); + // }); + // }); + var pinusClient; + var roleInfo; + + beforeEach(function(done) { + pinusClient = new PinusWSClient(); + pinusClient.on(PinusWSClientEvent.EVENT_IO_ERROR, (event) => { + // 错误处理 + // console.error('error', event); + done(); + }); + pinusClient.on(PinusWSClientEvent.EVENT_CLOSE, function(event) { + // 关闭处理 + // console.error('close', event); + done(); + }); + pinusClient.on(PinusWSClientEvent.EVENT_HEART_BEAT_TIMEOUT, function(event) { + // 心跳timeout + // console.error('heart beat timeout', event); + }); + pinusClient.on(PinusWSClientEvent.EVENT_KICK, function(event) { + // 踢出 + // console.error('kick', event); + }); + let host = '127.0.0.1'; + let port = '3050'; + pinusClient.init({ + host: host, + port: port + }, (data) => { + // 连接成功执行函数 + console.log('gate连接成功', data); + // done(); + pinusClient.request('connector.entryHandler.enter', {token:'mgn0njiajb6kapid3eekvt7tssxelig9zi2oq2bzkxr4zzi9w9', serverId: 1} , (ret) => { + // 消息回调 + console.log('connector返回', JSON.stringify(ret)); + roleInfo = ret.role; + done(); + }); + }); + }); + + afterEach(function(done) { + pinusClient.disconnect(); + done(); + }); + + it('获取军团列表', function(done) { + pinusClient.request('battle.guildHandler.getGuildList', {page:1, showPeopleMax: true, name: ""} , (res) => { + console.log(JSON.stringify(res)) + // 消息回调 + expect(res).to.be.an('object'); + expect(res.code).equal(0); + expect(res.data).to.be.an('object'); + expect(res.data).to.have.deep.property('list').that.is.an('array'); + res.data.list.forEach(list => { + expect(list).to.have.deep.property('code').that.is.a('string'); + expect(list).to.have.deep.property('name').that.is.a('string'); + expect(list).to.have.deep.property('icon').that.is.a('number'); + expect(list).to.have.deep.property('lv').that.is.a('number'); + expect(list).to.have.deep.property('peopleNum').that.is.a('number'); + expect(list).to.have.deep.property('leader').that.is.a('string'); + expect(list).to.have.deep.property('ceCondition').that.is.a('number'); + expect(list).to.have.deep.property('quitTime').that.is.a('number'); + expect(list).to.have.deep.property('hasApply').that.is.a('boolean'); + }); + done(); + }); + }); +}); diff --git a/shared/db/Guild.ts b/shared/db/Guild.ts index ee5ad912e..920dceedd 100644 --- a/shared/db/Guild.ts +++ b/shared/db/Guild.ts @@ -1,10 +1,8 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typegoose'; import Role from './Role'; -export interface pvpUpdate { -} -class Building { +class Structure { @prop({ required: true }) id: number; @prop({ required: true }) @@ -22,41 +20,47 @@ export default class Guild extends BaseModel { @prop({ required: true }) icon: number; - @prop({ required: true }) + @prop({ required: true, default: 1 }) lv: number; - @prop({ required: true }) + @prop({ required: true, default: 0 }) peopleNum: number; @prop({ required: true }) leader: Ref; - @prop({ required: true }) + @prop({ required: true, default: true }) isAuto: boolean; - @prop({ required: true }) + @prop({ required: true, default: 0 }) ceCondition: number; - @prop({ required: true }) + @prop({ required: true, default: '' }) notice: string; - @prop({ required: true }) + @prop({ required: true, default: '' }) introduce: string; - @prop({ required: true }) + @prop({ required: true, default: 0 }) fund: number; - @prop({ required: true }) + @prop({ required: true, default: 0 }) activeDaily: number; - @prop({ required: true }) + @prop({ required: true, default: new Date() }) refTimeDaily: number; - @prop({ required: true }) + @prop({ required: true, default: new Date() }) refTimeWeekly: number; - @prop({ required: true, type: Building }) - building: Building[] + @prop({ required: true, default: 0 }) + ce: number; // 总战力 + + @prop({ required: true, type: String, default: [] }) + members: string[]; // 军团成员的roleId,用于增加战力的时候加入总战力 + + @prop({ required: true, type: Structure, default: [] }) + structure: Structure[] @prop({ required: true }) status:number; @@ -65,4 +69,5 @@ export default class Guild extends BaseModel { export const GuildModel = getModelForClass(Guild); -export interface GuildType extends Pick, keyof Guild> { }; \ No newline at end of file +export interface GuildType extends Pick, keyof Guild> { }; +export type GuildUpdateParam = Partial; // 将所有字段变成可选项 \ No newline at end of file diff --git a/shared/db/UserGuild.ts b/shared/db/UserGuild.ts new file mode 100644 index 000000000..0ce440ceb --- /dev/null +++ b/shared/db/UserGuild.ts @@ -0,0 +1,49 @@ +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typegoose'; +import Role from './Role'; + +class ActiveRecord { + @prop({ required: true }) + id: number; + @prop({ required: true }) + count: number; +} + +@index({ roleId: 1 }) +export default class UserGuild extends BaseModel { + @prop({ required: true }) + guildCode: string; + + @prop({ required: true }) + roleId: string; + + @prop({ required: true }) + role: Ref; + + @prop({ required: true, default: 0 }) + auth: number; + + @prop({ required: true, default: 0 }) + job: number; + + @prop({ required: true, default: 0 }) + honour: number; + + @prop({ required: true, default: 0 }) + honourWeek: number; + + @prop({ required: true, default: 0 }) + status: number; + + @prop({ required: true, type: ActiveRecord, default: [] }) + activeRecord: ActiveRecord[]; + + @prop({ required: true, default: new Date() }) + refTimeWeekly: number; + +} + +export const GuildModel = getModelForClass(UserGuild); + +export interface GuildType extends Pick, keyof UserGuild> { }; +export type GuildUpdateParam = Partial; // 将所有字段变成可选项 \ No newline at end of file