diff --git a/game-server/app/servers/battle/handler/guildHandler.ts b/game-server/app/servers/battle/handler/guildHandler.ts new file mode 100644 index 000000000..9c73048f1 --- /dev/null +++ b/game-server/app/servers/battle/handler/guildHandler.ts @@ -0,0 +1,20 @@ +import {Application, BackendSession, pinus} from 'pinus'; + +export default function(app: Application) { + return new GuildHandler(app); +} + +export class GuildHandler { + constructor(private app: Application) { + } + + //TODO创建军团 + async createGuild() { + + } + + //TODO 获取军团列表 + async getGuildList() { + + } +} \ No newline at end of file diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index aa7b1f13c..c0b349700 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -110,7 +110,7 @@ export class PvpHandler { refOppCnt = oldSeasonData.refOppCnt; challengeCnt = oldSeasonData.challengeCnt; challengeRefTime = oldSeasonData.challengeRefTime; - } else if(show) { + } else if (show) { await PvpSeasonResultModel.updatePvpSeasonResult(roleId, {show: false}); flag = true; } diff --git a/game-server/app/services/redLockService.ts b/game-server/app/services/redLockService.ts new file mode 100644 index 000000000..7dd35ead6 --- /dev/null +++ b/game-server/app/services/redLockService.ts @@ -0,0 +1,43 @@ +var Redlock = require('redlock'); +var RedisService = module.exports; + +export class RedlockService { + _redisClient: any; + ttl: number; + redlock: any; + constructor(redisClient) { + this._redisClient = redisClient; + this._redisClient.on("error", function (err) { + console.error("Redis:Error:" + err); + }); + this.ttl = 1000; + this.redlock = new Redlock( + [this._redisClient], + { + // the expected clock drift; for more details + // see http://redis.io/topics/distlock + driftFactor: 0.01, // time in ms + + // the max number of times Redlock will attempt + // to lock a resource before erroring + retryCount: 10, + + // the time in ms between attempts + retryDelay: 200, // time in ms + + // the max time in ms randomly added to retries + // to improve performance under high contention + // see https://www.awsarchitectureblog.com/2015/03/backoff.html + retryJitter: 200 // time in ms + } + ); + + this.redlock.on('clientError', function(err) { + console.error('A redis error has occurred:', err); + }); + } + + getWithModify() { + + } +} \ No newline at end of file diff --git a/game-server/app/services/redisService.ts b/game-server/app/services/redisService.ts index 0e37a8003..36940c465 100644 --- a/game-server/app/services/redisService.ts +++ b/game-server/app/services/redisService.ts @@ -232,6 +232,7 @@ export async function resetPvpRanks() { const client: Redis.RedisClient = pinus.app.get('redis'); await client.delAsync(REDIS_KEY.PVP_RANK); let { seasonNum } = await SystemConfigModel.findSystemConfig(); + console.log('execute season resetPvpRanks seasonNum = ' + seasonNum); let pvpRank = await PvpDefenseModel.getRank(seasonNum); for(let {roleId, role: _role, score, updatedAt } of pvpRank) { let role = _role; diff --git a/shared/db/Guild.ts b/shared/db/Guild.ts new file mode 100644 index 000000000..ee5ad912e --- /dev/null +++ b/shared/db/Guild.ts @@ -0,0 +1,68 @@ +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType, Ref } from '@typegoose/typegoose'; +import Role from './Role'; +export interface pvpUpdate { +} + +class Building { + @prop({ required: true }) + id: number; + @prop({ required: true }) + lv: number; +} + +@index({ roleId: 1 }) +export default class Guild extends BaseModel { + @prop({ required: true }) + code: string; + + @prop({ required: true }) + name: string; + + @prop({ required: true }) + icon: number; + + @prop({ required: true }) + lv: number; + + @prop({ required: true }) + peopleNum: number; + + @prop({ required: true }) + leader: Ref; + + @prop({ required: true }) + isAuto: boolean; + + @prop({ required: true }) + ceCondition: number; + + @prop({ required: true }) + notice: string; + + @prop({ required: true }) + introduce: string; + + @prop({ required: true }) + fund: number; + + @prop({ required: true }) + activeDaily: number; + + @prop({ required: true }) + refTimeDaily: number; + + @prop({ required: true }) + refTimeWeekly: number; + + @prop({ required: true, type: Building }) + building: Building[] + + @prop({ required: true }) + status:number; + +} + +export const GuildModel = getModelForClass(Guild); + +export interface GuildType extends Pick, keyof Guild> { }; \ No newline at end of file