红点:pvp推送

This commit is contained in:
luying
2021-06-09 20:39:21 +08:00
parent ff45e0f096
commit b70af1606b
6 changed files with 46 additions and 9 deletions

View File

@@ -34,6 +34,8 @@ import UserGuild, { UserGuildType } from '../db/UserGuild';
import { setMedianCe } from './guildActivityService'; import { setMedianCe } from './guildActivityService';
import { getAllOnlineRoles } from './redisService'; import { getAllOnlineRoles } from './redisService';
import Item from '../db/Item'; import Item from '../db/Item';
import { PvpDefenseModel } from '../db/PvpDefense';
import { findPvpDefAllByRoleId } from './pvpService';
export async function pushData(role: RoleType, session: FrontendOrBackendSession, pushType: 'entry'|'refresh' = 'entry') { export async function pushData(role: RoleType, session: FrontendOrBackendSession, pushType: 'entry'|'refresh' = 'entry') {
try{ try{
@@ -92,8 +94,7 @@ export async function pushData(role: RoleType, session: FrontendOrBackendSession
case 'dungeon': // 秘境 case 'dungeon': // 秘境
return await getDungeonData(role); return await getDungeonData(role);
case 'pvp': // pvp case 'pvp': // pvp
const hasSeasonReward = await getPvpEntryData(roleId); return await getPvpEntryData(roleId);
return { hasSeasonReward }
case 'gacha': case 'gacha':
return await getGachaList(roleId); return await getGachaList(roleId);
case 'school': case 'school':
@@ -175,7 +176,14 @@ async function getPvpEntryData(roleId: string) {
let { oldSeasonData, show} = pvpSeasonResult; let { oldSeasonData, show} = pvpSeasonResult;
// 旧赛季结算的时候会在pvpSeasonResult表中存上一赛季的时间并更新show字段 // 旧赛季结算的时候会在pvpSeasonResult表中存上一赛季的时间并更新show字段
return oldSeasonData.seasonEndTime <= nowSeconds() && show; let hasSeasonReward = oldSeasonData.seasonEndTime <= nowSeconds() && show;
let pvpDefense = await PvpDefenseModel.findByRoleIdIncludeAll(roleId);
if(pvpDefense) {
let { pvpDefense, } = await findPvpDefAllByRoleId(roleId);
let { challengeCnt, receivedBox, score } = pvpDefense;
return { hasSeasonReward, challengeCnt, score, receivedBox }
}
} }
/** /**

View File

@@ -486,7 +486,7 @@ export async function findPvpDefAllByRoleId(roleId: string) {
pvpDefense.challengeRefTime = challengeRefTime; pvpDefense.challengeRefTime = challengeRefTime;
} }
pvpDefense.seasonNum = seasonNum; pvpDefense.seasonNum = seasonNum;
let {challengeCnt, challengeRefTime} = refresh(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonNum); let {challengeCnt, challengeRefTime} = refresh(pvpDefense.challengeCnt, pvpDefense.challengeRefTime, seasonEndTime);
let { refOppCnt, refOppTime, shouldRefOpp } = getRefOppCnt(pvpDefense.refOppCnt, pvpDefense.refOppTime); // 刷新次数 let { refOppCnt, refOppTime, shouldRefOpp } = getRefOppCnt(pvpDefense.refOppCnt, pvpDefense.refOppTime); // 刷新次数
if (challengeCnt != pvpDefense.challengeCnt || refOppCnt != pvpDefense.refOppCnt || shouldRefOpp) { if (challengeCnt != pvpDefense.challengeCnt || refOppCnt != pvpDefense.refOppCnt || shouldRefOpp) {
let update: pvpUpdateInter = { let update: pvpUpdateInter = {

View File

@@ -12,12 +12,16 @@ export default class ActivityController extends Controller {
public async updateActivity() { public async updateActivity() {
const { ctx } = this; const { ctx } = this;
const { activityId, groupId, beginTime, endTime, type, data } = ctx.request.body; const { activityId, groupId, beginTime, endTime, type, data } = ctx.request.body;
ctx.body = await ctx.service.activity.updateActivity(activityId, groupId, beginTime, endTime, type, data); let checkActivity = await ctx.service.activity.checkActivityEditable(activityId);
if(checkActivity) return ctx.body = checkActivity;
return ctx.body = await ctx.service.activity.updateActivity(activityId, groupId, beginTime, endTime, type, data);
} }
public async deleteActivity() { public async deleteActivity() {
const { ctx } = this; const { ctx } = this;
const { activityId } = ctx.request.body; const { activityId } = ctx.request.body;
let checkActivity = await ctx.service.activity.checkActivityEditable(activityId);
if(checkActivity) return ctx.body = checkActivity;
ctx.body = await ctx.service.activity.deleteActivity(activityId); ctx.body = await ctx.service.activity.deleteActivity(activityId);
} }

View File

@@ -1,9 +1,10 @@
import { Service } from 'egg'; import { Service } from 'egg';
import { STATUS } from '@consts'; import { STATUS, ACTIVITY_TYPE } from '@consts';
import { ActivityModel } from '@db/Activity'; import { ActivityModel } from '@db/Activity';
import { ActivityGroupModel } from '@db/ActivityGroup'; import { ActivityGroupModel } from '@db/ActivityGroup';
import { ServerlistModel } from '@db/Serverlist'; import { ServerlistModel } from '@db/Serverlist';
import { GMUserType } from '@db/GMUser'; import { GMUserType } from '@db/GMUser';
import { SignInData } from '@domain/activityField/signInField';
/** /**
* Test Service * Test Service
@@ -27,6 +28,29 @@ export default class Activity extends Service {
}); });
} }
public async checkActivityEditable(activityId: number) {
let now = new Date();
let activity = await ActivityModel.findActivity(activityId);
if(!activity) {
return this.ctx.service.utils.resResult(STATUS.ACTIVITY_MISSING);
}
if(this.app.config.env == 'production') {
if(activity.beginTime < now && activity.endTime > now) {
if(activity.type == ACTIVITY_TYPE.SIGN_IN || activity.type == ACTIVITY_TYPE.SIGN_IN_VIP) {
// 签到活动的不显示期内也可以编辑
let signInObj = new SignInData(activity);
if(signInObj.beginTime < now.getTime() && signInObj.endTime > now.getTime() ) {
return this.ctx.service.utils.resResult(STATUS.GM_CAN_NOT_EDIT_ACT);
}
} else {
return this.ctx.service.utils.resResult(STATUS.GM_CAN_NOT_EDIT_ACT);
}
}
}
return 0
}
public async updateActivity(activityId: number | string, groupId: number, beginTime: number, endTime: number, type: number, data: string) { public async updateActivity(activityId: number | string, groupId: number, beginTime: number, endTime: number, type: number, data: string) {
const { ctx } = this; const { ctx } = this;
let gmuser: GMUserType = ctx.user; let gmuser: GMUserType = ctx.user;

View File

@@ -379,6 +379,7 @@ export const STATUS = {
GM_PVP_DEFENSE_HERO_NOT_FOUND: { code: 60013, simStr: '该守阵没有该武将' }, GM_PVP_DEFENSE_HERO_NOT_FOUND: { code: 60013, simStr: '该守阵没有该武将' },
GM_JSON_FORMAT_ERR: { code: 60005, simStr: 'json格式错误' }, GM_JSON_FORMAT_ERR: { code: 60005, simStr: 'json格式错误' },
GM_CAN_NOT_DEL_ACT_GROUP: { code: 60006, simStr: '活动组有指向的服务器或活动,不可删除' }, GM_CAN_NOT_DEL_ACT_GROUP: { code: 60006, simStr: '活动组有指向的服务器或活动,不可删除' },
GM_CAN_NOT_EDIT_ACT: { code: 60007, simStr: '活动期间不可编辑活动' },
// 支付相关状态 70000 - 79999 // 支付相关状态 70000 - 79999
NO_PRODUCT_ID: { code: 70001, simStr: '无效商品' }, NO_PRODUCT_ID: { code: 70001, simStr: '无效商品' },
NO_PAY_TYPE: { code: 70002, simStr: '无效支付类型' }, NO_PAY_TYPE: { code: 70002, simStr: '无效支付类型' },

View File

@@ -1,6 +1,6 @@
import { gameData } from './data'; import { gameData } from './data';
import { DicTask } from './dictionary/DicTask'; import { DicTask } from './dictionary/DicTask';
import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID, STATUS } from '../consts'; import { TASK_TYPE, ABI_STAGE, WAR_TYPE, GUILD_JOB, TASK_FUN_TYPE, FUNCS_ID } from '../consts';
import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec' import { UserTaskRecModel, UserTaskRecType } from '../db/UserTaskRec'
import { RoleType, RoleModel } from '../db/Role'; import { RoleType, RoleModel } from '../db/Role';
import { TaskParam, TaskListReturn } from '../domain/roleField/task'; import { TaskParam, TaskListReturn } from '../domain/roleField/task';
@@ -9,7 +9,7 @@ import { HeroType } from '../db/Hero';
import { EquipType, EquipModel } from '../db/Equip'; import { EquipType, EquipModel } from '../db/Equip';
import { ItemInter } from './interface'; import { ItemInter } from './interface';
import { DailyChallengesData } from '../domain/activityField/dailyChallengesField'; import { DailyChallengesData } from '../domain/activityField/dailyChallengesField';
import { resResult, splitString } from './util'; import { splitString } from './util';
import { ActivityModel, ActivityModelType } from '../db/Activity'; import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ACTIVITY_TYPE } from '../consts/constModules/activityConst'; import { ACTIVITY_TYPE } from '../consts/constModules/activityConst';
import { ActivityGrowthModel } from '../db/ActivityGrowth'; import { ActivityGrowthModel } from '../db/ActivityGrowth';
@@ -648,7 +648,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
//寻宝骑兵活动任务 //寻宝骑兵活动任务
let tempData: ServerTempModelType = await ServerTempModel.findData(serverId); let tempData: ServerTempModelType = await ServerTempModel.findData(serverId);
if (tempData) { if (tempData) {
let huntActivityId = tempData.huntActivityId; // let huntActivityId = tempData.huntActivityId;
let huntBeginTime = tempData.huntBeginTime; let huntBeginTime = tempData.huntBeginTime;
let huntEndTime = tempData.huntEndTime; let huntEndTime = tempData.huntEndTime;
let huntRoundIndex = tempData.huntRoundIndex; let huntRoundIndex = tempData.huntRoundIndex;