资源:冲突提交

This commit is contained in:
Maodou
2021-05-27 11:19:57 +08:00
45 changed files with 4640 additions and 16916 deletions

View File

@@ -2,12 +2,12 @@ import { Application, BackendSession } from 'pinus';
import { resResult } from '../../../pubUtils/util';
import { ACTIVITY_TYPE, FIRST_GIFT_STATE, STATUS } from '../../../consts';
import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService';
import { RoleModel } from '../../../db/Role';
import { addReward, stringToRewardParam, useGiftPackage } from '../../../services/giftPackageService';
import { ActivityFirstGiftModel } from '../../../db/ActivityFirstGift';
import { signInActivity, signInVIPActivity } from '../../../services/signInService';
import { growthFundActivity } from '../../../services/growthFundService';
import { newPlayerLimitPackageActivity } from '../../../services/limitPackageService';
import { growthActivity } from '../../../services/growthService';
import { dailyChallengesActivity } from '../../../services/dailyChallengesService';
import { dailyGiftsActivity } from '../../../services/dailyGiftsService';
export default function (app: Application) {
return new ActivityHandler(app);
@@ -30,6 +30,42 @@ export class ActivityHandler {
const serverId = session.get('serverId');
let playerActivityArray = [];
//七天乐活动-成长任务
{
let sevenData = [];
let growthData = await growthActivity(serverId, roleId);
if (growthData) {
sevenData.push({
type: ACTIVITY_TYPE.TASK_GROWTH,
activityId: growthData.activityId,
data: growthData,
});
}
let dailyChallengesData = await dailyChallengesActivity(serverId, roleId);
if (dailyChallengesData) {
sevenData.push({
type: ACTIVITY_TYPE.TASK_DAILY_CHALLENGES,
activityId: dailyChallengesData.activityId,
data: dailyChallengesData,
});
}
let dailyGiftsData = await dailyGiftsActivity(serverId, roleId);
if (dailyGiftsData) {
sevenData.push({
type: ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT,
activityId: dailyGiftsData.activityId,
data: dailyGiftsData,
});
}
if (sevenData.length > 0) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SEVEN_DAY,
activityId: 0,
data: sevenData,
});
}
}
//首冲礼包活动
{
let data = await firstGiftActivity(serverId, roleId);
@@ -58,7 +94,7 @@ export class ActivityHandler {
let data = await signInVIPActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN,
type: ACTIVITY_TYPE.SIGN_IN_VIP,
activityId: data.activityId,
data,
});

View File

@@ -266,7 +266,7 @@ export class GachaHandler {
let heroes: number[] = [];
if (gachaId == GACHA_ID.TIMELIMIT) {
let activityData = await ActivityModel.findActivity(serverId, activityId, true);
let activityData = await ActivityModel.findActivity(activityId);
if (!activityData) return resResult(STATUS.ACTIVITY_MISSING);
let gachaData = new GachaData(activityData);

View File

@@ -91,6 +91,9 @@ export class LimitPackageHandler {
}
let item = playerData.findItem(id);
if (!item) {
return resResult(STATUS.ACTIVITY_ID_ERROR);
}
if (item.countMax > 0 && item.buyCount >= item.countMax) {
return resResult(STATUS.ACTIVITY_MAX_COUNT);
}
@@ -99,7 +102,12 @@ export class LimitPackageHandler {
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardArray);
await ActivityShopModel.addRecord(activityId, roleId, roundIndex, id);
return resResult(STATUS.SUCCESS, Object.assign(result, {}));
item.buyCount += 1;
return resResult(STATUS.SUCCESS, Object.assign(result, {
param: { activityId, roundIndex, id },
item: item
}));
}
}

View File

@@ -45,7 +45,9 @@ export class MonthlyTicketHandler {
let result = await getPlayerMonthlyTicketDayReward(roleId, roleName, sid, serverId, funcs, activityId)
if (result) {
return resResult(STATUS.SUCCESS, result);
return resResult(STATUS.SUCCESS, Object.assign(result, {
param: { activityId },
}));
}
return resResult(STATUS.NO_MOTHLY_TICKET_REWARD);
}

View File

@@ -51,7 +51,7 @@ export class PopUpShopHandler {
const roleName = session.get('roleName');
const funcs: number[] = session.get('funcs');
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (!activityData) {
return resResult(STATUS.ACTIVITY_MISSING);
}

View File

@@ -50,7 +50,7 @@ export class SelfServiceShopHandler {
const roleName = session.get('roleName');
const funcs: number[] = session.get('funcs');
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new SelfServiceShopData(activityData);
let item = playerData.getItem(index);

View File

@@ -72,7 +72,7 @@ export class SevenDaysHandler {
return resResult(STATUS.ACTIVITY_REWARDED);
}
await ActivityGrowthModel.addCellRecord(serverId, activityId, roleId, dayIndex, cellIndex, type, 1, growthItemData.point);
await ActivityGrowthModel.addCellRecord(serverId, activityId, roleId, dayIndex, cellIndex, type, 1);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(growthItemData.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)

View File

@@ -8,6 +8,7 @@ import { ActivityThirtyDaysModel } from '../../../db/ActivityThirtyDays';
import { ActivityThirtyDaysPointRewardModel } from '../../../db/ActivityThirtyDaysPointReward';
import moment = require('moment');
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
import { ServerlistModel } from '../../../db/Serverlist';
export default function (app: Application) {
return new ThirtyDaysHandler(app);
@@ -54,8 +55,8 @@ export class ThirtyDaysHandler {
const funcs: number[] = session.get('funcs');
let todayIndex = await playerThirtyDaysActivityDays(roleId);//玩家当前的天数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, ACTIVITY_TYPE.THIRTY_DAYS, 1)
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.THIRTY_DAYS, 1)
let activityDays = 0;
for (let i = 0; i < activityArray.length; i++) {

View File

@@ -9,6 +9,7 @@ import { applyOrderALI, checkOrderALI } from '../../../services/pay/aliPay';
import { makeOrder } from '../../../services/orderService';
import { addRechargeMoney } from '../../../services/rechargeMoneyService';
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
import { ServerlistModel } from '../../../db/Serverlist';
export default function (app: Application) {
return new orderHandler(app);
@@ -175,7 +176,7 @@ export class orderHandler {
orderInfo = await UserOrderModel.success(roleId, localOrderID);
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid);
let result = await makeOrder(localOrderID, sid, orderInfo);
//活动统计
await addRechargeMoney(roleId, serverId, price);
console.log('结算完成', localOrderID)
@@ -223,7 +224,8 @@ export class orderHandler {
let orderID = '';//平台订单号
let sdkOrderInfo = null;//客户端需要的平台订单信息
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, productType, -1);
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, productType, -1);
if (activityArray.length === 0) {
return resResult(STATUS.ACTIVITY_MISSING);
}
@@ -235,7 +237,7 @@ export class orderHandler {
let orderInfo = await UserOrderModel.success(roleId, localOrderID);
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid);
let result = await makeOrder(localOrderID, sid, orderInfo);
//活动统计
await addRechargeMoney(roleId, serverId, price);
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, roleId:${roleId}, localOrderID:${localOrderID}`)

View File

@@ -1,8 +1,32 @@
import { ACTIVITY_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityDailyChallengesModel, ActivityDailyChallengesModelType } from '../db/ActivityDailyChallenges';
import { ServerlistModel } from '../db/Serverlist';
import { DailyChallengesData, DailyItem } from '../domain/activityField/dailyChallengesField';
/**
* 获取活动数据
*
* @param {number} serverId 区Id
* @param {number} activityId 活动Id
* @param {string} roleId 角色Id
*
*/
export async function dailyChallengesActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, new Date());
if (activityDataArray.length === 0) {
return null;
}
let activityData: ActivityModelType = activityDataArray[0];
let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityData.activityId, roleId);
let playerData = new DailyChallengesData(activityData);
playerData.setPlayerRecords(playerRecords);
return playerData;
}
/**
* 玩家玩家活动数据
*
@@ -12,7 +36,7 @@ import { DailyChallengesData, DailyItem } from '../domain/activityField/dailyCha
*
*/
export async function getPlayerDailyChallengesData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityDailyChallengesModelType[] = await ActivityDailyChallengesModel.findData(serverId, activityId, roleId);
let playerData = new DailyChallengesData(activityData);

View File

@@ -1,8 +1,33 @@
import { ACTIVITY_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityDailyGiftsModel, ActivityDailyGiftsModelType } from '../db/ActivityDailyGifts';
import { ServerlistModel } from '../db/Serverlist';
import { DailyGiftsData, DailyGiftItem } from '../domain/activityField/dailyGiftsField';
/**
* 获取活动数据
*
* @param {number} serverId 区Id
* @param {number} activityId 活动Id
* @param {string} roleId 角色Id
*
*/
export async function dailyGiftsActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.DAILY_DISCOUNT_GIFT, new Date());
if (activityDataArray.length === 0) {
return null;
}
let activityData: ActivityModelType = activityDataArray[0];
let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityData.activityId, roleId);
let playerData = new DailyGiftsData(activityData);
playerData.setPlayerRecords(playerRecords);
return playerData;
}
/**
* 玩家玩家活动数据
*
@@ -12,7 +37,7 @@ import { DailyGiftsData, DailyGiftItem } from '../domain/activityField/dailyGift
*
*/
export async function getPlayerDailyGiftsData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityDailyGiftsModelType[] = await ActivityDailyGiftsModel.findData(serverId, activityId, roleId);
let playerData = new DailyGiftsData(activityData);

View File

@@ -7,6 +7,7 @@ import moment = require('moment');
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
import { RewardParam } from '../domain/activityField/rewardField';
import { addReward, stringToRewardParam } from './giftPackageService';
import { ServerlistModel } from '../db/Serverlist';
/**
* 获取活动数据
@@ -17,8 +18,9 @@ import { addReward, stringToRewardParam } from './giftPackageService';
*
*/
export async function thirtyDaysActivity(type: number, serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, type, 1)
export async function dailyGiftsActivity(type: number, serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, type, 1)
let allPlayerActivity = [];
for (let i = 0; i < activityArray.length; i++) {
@@ -39,7 +41,7 @@ export async function thirtyDaysActivity(type: number, serverId: number, roleId:
*
*/
export async function getPlayerDailyGiftsData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new DailyRMBGiftsData(activityData);
let productID = playerData.productID;
@@ -68,7 +70,7 @@ export async function getPlayerDailyGiftsData(activityId: number, serverId: numb
*/
export async function makeDailyRMBGiftsReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new DailyRMBGiftsData(activityData);
let bigGiftProductID = playerData.productID;
if (bigGiftProductID == productID) {//一次性购买7天礼包

View File

@@ -130,6 +130,7 @@ export async function dressEquip(serverId: number, roleId: string, sid: string,
await checkTaskWithHero(roleId, sid, funcs, TASK_TYPE.EQUIP_BY_HERO, hero, [1]);
await checkTaskWithEquip(roleId, sid, funcs, TASK_TYPE.EQUIP_QUALITY, equip, [1]);
await accomplishTask(serverId, roleId, TASK_TYPE.EQUIP_QUALITY, 1, { quality: equip.quality })
await accomplishTask(serverId, roleId, TASK_TYPE.EQUIP_SUM, 1)
return { seqId: equip.seqId, hid: hero.hid };
}

View File

@@ -1,6 +1,7 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityFirstGiftModel, ActivityFirstGiftModelType } from '../db/ActivityFirstGift';
import { ServerlistModel } from '../db/Serverlist';
import { FirstGiftData } from '../domain/activityField/firstGiftField';
/**
@@ -13,7 +14,8 @@ import { FirstGiftData } from '../domain/activityField/firstGiftField';
*/
export async function firstGiftActivity(serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, ACTIVITY_TYPE.FIRST_GIFT, 1)
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.FIRST_GIFT, 1)
if (activityArray.length == 0) {
return null;
@@ -38,7 +40,7 @@ export async function firstGiftActivity(serverId: number, roleId: string) {
*
*/
export async function getPlayerFirstGiftData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecord: ActivityFirstGiftModelType = await ActivityFirstGiftModel.findData(activityId, roleId);
let playerData = new FirstGiftData(activityData);

View File

@@ -15,7 +15,7 @@ import { gameData, getDicGachaFloor } from "../pubUtils/data";
*/
export async function getLimitGacha(serverId: number, roleId: string, activityId: number) {
let activityData = await ActivityModel.findActivity(serverId, activityId, true);
let activityData = await ActivityModel.findActivity(activityId);
if (!activityData) return false;
let gachaData = new GachaData(activityData);

View File

@@ -4,6 +4,7 @@ import { ActivityGrowthFundModel, ActivityGrowthFundModelType } from '../db/Acti
import { ActivityBuyRecordsModel, ActivityBuyRecordsModelType } from '../db/ActivityBuyRecords';
import { RoleModel } from '../db/Role';
import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFundField';
import { ServerlistModel } from '../db/Serverlist';
/**
* 获取活动数据
@@ -22,7 +23,8 @@ import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFu
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
*/
export async function growthFundActivity(type: number, serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, type, new Date())
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date())
if (activityArray.length == 0) {
return null;
}
@@ -43,7 +45,7 @@ export async function growthFundActivity(type: number, serverId: number, roleId:
*
*/
export async function getPlayerGrowthFundData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activityId, roleId);
let playerData = new GrowthFundData(activityData);
@@ -77,7 +79,7 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb
let { towerLv } = await RoleModel.findByRoleId(roleId);
for (let item of playerData.list) {
if (item.taskType == TASK_TYPE.BATTLE_TOWER_LV) {
if (towerLv < item.taskParamArray[0]) {
if (towerLv >= item.taskParamArray[0]) {
item.isComplete = true;
}
}
@@ -90,7 +92,7 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb
let { mainEliteWarId } = await RoleModel.findByRoleId(roleId);
for (let item of playerData.list) {
if (item.taskType == TASK_TYPE.BATTLE_MAIN_ELITE) {
if (mainEliteWarId <= item.taskParamArray[0]) {
if (mainEliteWarId >= item.taskParamArray[0]) {
item.isComplete = true;
}
}

View File

@@ -2,6 +2,7 @@ import { ACTIVITY_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityGrowthModel, ActivityGrowthModelType } from '../db/ActivityGrowth';
import { ActivityGrowthPointModel, ActivityGrowthPointModelType } from '../db/ActivityGrowthPoint';
import { ServerlistModel } from '../db/Serverlist';
import { GrowthData, GrowthItem } from '../domain/activityField/growthField';
/**
@@ -12,9 +13,20 @@ import { GrowthData, GrowthItem } from '../domain/activityField/growthField';
* @param {string} roleId 角色Id
*
*/
export async function getGrowthActivityData(serverId: number, roleId: string) {
let activityData: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
return { data: activityData };
export async function growthActivity(serverId: number, roleId: string) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityDataArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
if (activityDataArray.length === 0) {
return null;
}
let activityData: ActivityModelType = activityDataArray[0];
let playerRecords: ActivityGrowthModelType[] = await ActivityGrowthModel.findData(serverId, activityData.activityId, roleId);
let playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityData.activityId, roleId);
let playerData = new GrowthData(activityData);
await playerData.setPlayerRecords(playerRecords, roleId);
playerData.setPlayerPointRecord(playerPointRecord);
return playerData;
}
/**
@@ -26,14 +38,13 @@ export async function getGrowthActivityData(serverId: number, roleId: string) {
*
*/
export async function getPlayerGrowthData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityGrowthModelType[] = await ActivityGrowthModel.findData(serverId, activityId, roleId);
let playerPointRecord: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findData(serverId, activityId, roleId);
let playerData = new GrowthData(activityData);
playerData.setPlayerRecords(playerRecords);
await playerData.setPlayerRecords(playerRecords, roleId);
playerData.setPlayerPointRecord(playerPointRecord);
return playerData;
}

View File

@@ -1,6 +1,7 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityShopModel, ActivityShopModelType } from '../db/ActivityShop';
import { ServerlistModel } from '../db/Serverlist';
import { LimitShopData, ShopItem } from '../domain/activityField/limitShopField';
/**
@@ -13,7 +14,8 @@ import { LimitShopData, ShopItem } from '../domain/activityField/limitShopField'
*/
export async function newPlayerLimitPackageActivity(serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, new Date)
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE, new Date)
if (activityArray.length == 0) {
return null;
}
@@ -34,7 +36,7 @@ export async function newPlayerLimitPackageActivity(serverId: number, roleId: st
*
*/
export async function getPlayerLimitPackageData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new LimitShopData(activityData);
let playerRecord: ActivityShopModelType = await ActivityShopModel.findData(activityId, roleId, playerData.roundIndex);
@@ -53,7 +55,8 @@ export async function getPlayerLimitPackageData(activityId: number, serverId: nu
*/
export async function limitPackageActivity(serverId: number, roleId: string, type: number) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, type, new Date)
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date)
activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId
});

View File

@@ -5,6 +5,7 @@ import { RewardParam } from '../domain/activityField/rewardField';
import { MonthlyTicketData } from '../domain/activityField/monthlyTicketField';
import { addReward, stringToRewardParam } from './giftPackageService';
import moment = require('moment');
import { ServerlistModel } from '../db/Serverlist';
/**
* 获取活动数据
@@ -16,7 +17,8 @@ import moment = require('moment');
*/
export async function monthlyTicketActivity(serverId: number, roleId: string, type: number) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, type, new Date())
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, type, new Date())
activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId
});
@@ -37,7 +39,7 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty
*
*/
export async function getPlayerMonthlyTicketData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
let playerData = new MonthlyTicketData(activityData);
playerData.setPlayerRecords(playerRecord);
@@ -54,7 +56,7 @@ export async function getPlayerMonthlyTicketData(activityId: number, serverId: n
*/
export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number,) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityId);
if (!playerRecord) {//没有购买过
return null;
@@ -84,7 +86,7 @@ export async function getPlayerMonthlyTicketDayReward(roleId: string, roleName:
*/
export async function makeMonthlyTicketReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new MonthlyTicketData(activityData);
let endTime = moment(new Date()).startOf('d').add(playerData.days, 'day').toDate();

View File

@@ -1,4 +1,4 @@
import { UserOrderModel } from '../db/UserOrder';
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
import { ActivitySignInModel, ActivitySignInModelType } from '../db/ActivitySignIn';
import { SignInData, SignInItem } from '../domain/activityField/signInField';
import { ACTIVITY_TYPE, ORDER_STATE } from '../consts';
@@ -11,6 +11,7 @@ import { makeDailyRMBGiftsReward } from './dailyRMBGiftsService';
import { makePopUpShopReward } from './popUpShopService';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityFirstGiftModel } from '../db/ActivityFirstGift';
import { ServerlistModel } from '../db/Serverlist';
@@ -20,14 +21,12 @@ import { ActivityFirstGiftModel } from '../db/ActivityFirstGift';
* 结算账单
* @param localOrderID 本地订单号
*/
export async function makeOrder(localOrderID: string, sid: string) {
let orderInfo = await UserOrderModel.findOrder(localOrderID);
export async function makeOrder(localOrderID: string, sid: string, orderInfo: UserOrderModelType) {
// let orderInfo = await UserOrderModel.findOrder(localOrderID);
if (!orderInfo) {
return '查无此订单';
}
if (orderInfo.state == ORDER_STATE.RESULT_SUCCESS) {
return '结算过';
}
//商品价格信息
let productInfo = dicRMB.get(orderInfo.productID)
if (!productInfo) {
@@ -43,7 +42,8 @@ export async function makeOrder(localOrderID: string, sid: string) {
//首冲礼包
{
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(orderInfo.serverId, ACTIVITY_TYPE.FIRST_GIFT, new Date())
let { activityGroupId } = await ServerlistModel.findByServerId(orderInfo.serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.FIRST_GIFT, new Date())
for (let obj of activityArray) {
await ActivityFirstGiftModel.begin(obj.activityId, roleId);
}

View File

@@ -4,6 +4,7 @@ import { PopUpShopData, } from '../domain/activityField/popUpShopField';
import { RewardParam } from '../domain/activityField/rewardField';
import { addReward, stringToRewardParam } from './giftPackageService';
import { ActivityPopUpShopModel, ActivityPopUpShopModelType } from '../db/ActivityPopUpShop';
import { ServerlistModel } from '../db/Serverlist';
/**
* 获取活动数据
@@ -15,7 +16,8 @@ import { ActivityPopUpShopModel, ActivityPopUpShopModelType } from '../db/Activi
*/
export async function popUpShopActivity(serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.POP_UP_SHOP, new Date())
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.POP_UP_SHOP, new Date())
activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId
});
@@ -36,7 +38,7 @@ export async function popUpShopActivity(serverId: number, roleId: string) {
*
*/
export async function getPlayerPopUpShopData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityPopUpShopModelType[] = await ActivityPopUpShopModel.findAllOpenData(serverId, activityId, roleId);
let allPlayerShop = [];
@@ -65,7 +67,7 @@ export async function getPlayerPopUpShopData(activityId: number, serverId: numbe
*/
export async function makePopUpShopReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (!activityData) {
return null;
}

View File

@@ -6,6 +6,7 @@ import { RechargeMoneyData, RechargeMoneyItem } from '../domain/activityField/re
import { addReward, stringToRewardParam } from './giftPackageService';
import moment = require('moment');
import { ServerlistModel } from '../db/Serverlist';
/**
* 获取活动数据
@@ -17,7 +18,8 @@ import moment = require('moment');
*/
export async function rechargeMoneyActivity(serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.RECHARGE_MONEY, new Date())
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.RECHARGE_MONEY, new Date())
activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId
});
@@ -38,7 +40,7 @@ export async function rechargeMoneyActivity(serverId: number, roleId: string) {
*
*/
export async function getPlayerRechargeMoneyData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecord: ActivityRechargeMoneyModelType[] = await ActivityRechargeMoneyModel.findData(serverId, roleId);
let playerData = new RechargeMoneyData(activityData);

View File

@@ -2,6 +2,7 @@ import { ACTIVITY_RESOURCES_TYPE, ACTIVITY_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivitySelfServiceGoodsModel, ActivitySelfServiceGoodsModelType } from '../db/ActivitySelfServiceGoods';
import { ActivitySelfServiceShopModel, ActivitySelfServiceShopModelType } from '../db/ActivitySelfServiceShop';
import { ServerlistModel } from '../db/Serverlist';
import { RewardParam } from '../domain/activityField/rewardField';
import { SelfServiceShopData, SelfServiceShopItem } from '../domain/activityField/selfServiceShopField';
import { gameData } from '../pubUtils/data';
@@ -16,7 +17,8 @@ import { addReward, getSelectedReward } from './giftPackageService';
*
*/
export async function getActivityData(serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SELF_SERVICE_SHOP, new Date())
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SELF_SERVICE_SHOP, new Date())
activityArray = activityArray.sort((a, b) => {
return b.activityId - a.activityId
});
@@ -37,7 +39,7 @@ export async function getActivityData(serverId: number, roleId: string) {
*
*/
export async function getPlayerActivityData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new SelfServiceShopData(activityData);
let playerRecords: ActivitySelfServiceShopModelType[] = await ActivitySelfServiceShopModel.findDataByPriceType(serverId, activityId, roleId, playerData.roundIndex, ACTIVITY_RESOURCES_TYPE.RMB);

View File

@@ -2,6 +2,7 @@ import moment = require('moment');
import { ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_CLOSE, SIGNIN_OPEN, SIGNIN_VIP_OPEN_LIMIT } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivitySignInModel, ActivitySignInModelType } from '../db/ActivitySignIn';
import { ServerlistModel } from '../db/Serverlist';
import { SignInData, SignInItem } from '../domain/activityField/signInField';
/**
@@ -19,7 +20,8 @@ export async function signInActivity(serverId: number, roleId: string) {
return null;
}
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SIGN_IN, new Date());
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SIGN_IN, new Date());
if (activityArray.length == 0) {
return null;
}
@@ -45,7 +47,8 @@ export async function signInVIPActivity(serverId: number, roleId: string) {
return null;
}
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.SIGN_IN_VIP, new Date());
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SIGN_IN_VIP, new Date());
if (activityArray.length == 0) {
return null;
}
@@ -65,7 +68,7 @@ export async function signInVIPActivity(serverId: number, roleId: string) {
*
*/
export async function getPlayerSignInData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new SignInData(activityData);
let playerRecords: ActivitySignInModelType[] = await ActivitySignInModel.findData(activityId, roleId, playerData.roundIndex);
@@ -86,7 +89,7 @@ export async function getPlayerSignInData(activityId: number, serverId: number,
*/
export async function makeSignInVIP(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new SignInData(activityData);
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);

View File

@@ -7,6 +7,7 @@ import { ActivityThirtyDaysPointRewardModel, ActivityThirtyDaysPointRewardModelT
import Role, { RoleModel } from '../db/Role';
import moment = require('moment');
import { deltaDays } from '../pubUtils/util';
import { ServerlistModel } from '../db/Serverlist';
/**
* 获取活动数据
@@ -18,7 +19,8 @@ import { deltaDays } from '../pubUtils/util';
*/
export async function thirtyDaysActivity(type: number, serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, type, 1)
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, type, 1)
let allPlayerActivity = [];
for (let i = 0; i < activityArray.length; i++) {
@@ -39,7 +41,7 @@ export async function thirtyDaysActivity(type: number, serverId: number, roleId:
*
*/
export async function getPlayerThirtyDaysData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activityId, roleId);
let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId);
@@ -58,7 +60,7 @@ export async function getPlayerThirtyDaysData(activityId: number, serverId: numb
*
*/
export async function addPlayerThirtyDaysTask(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activityId, roleId);
let playerPointRecords: ActivityThirtyDaysPointRewardModelType[] = await ActivityThirtyDaysPointRewardModel.findData(activityId, roleId);

View File

@@ -2,6 +2,7 @@ import moment = require('moment');
import { ACTIVITY_TYPE, SERVER_OPEN_TIME, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityTreasureHuntShopModel, ActivityTreasureHuntShopModelType } from '../db/ActivityTreasureHuntShop';
import { ServerlistModel } from '../db/Serverlist';
import { ServerTempModel, ServerTempModelType } from '../db/ServerTemp';
import { RewardParam } from '../domain/activityField/rewardField';
import { TreasureHuntData } from '../domain/activityField/treasureHuntField';
@@ -35,7 +36,7 @@ export async function treasureHuntActivity(serverId: number, roleId: string) {
*
*/
export async function getPlayerTreasureHuntData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new TreasureHuntData(activityData);
playerData.beginTime = moment(huntBeginTime).valueOf();
@@ -49,7 +50,7 @@ export async function getPlayerTreasureHuntData(activityId: number, serverId: nu
}
export async function getPlayerTreasureHuntShopData(activityId: number, serverId: number, roleId: string, huntRoundIndex: number, huntBeginTime: Date, huntEndTime: Date) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new TreasureHuntData(activityData);
playerData.beginTime = moment(huntBeginTime).valueOf();
@@ -74,7 +75,7 @@ export async function getTreasureHuntData(serverId: number) {
return { huntActivityId, huntBeginTime, huntEndTime, huntRoundIndex, activityData }
}
tempData = await ServerTempModel.updateTreasureHuntData(serverId, huntActivityId, huntBeginTime, huntEndTime, huntRoundIndex);
activityData = await ActivityModel.findActivity(serverId, huntActivityId, true);
activityData = await ActivityModel.findActivity(huntActivityId);
return { huntActivityId, huntBeginTime, huntEndTime, huntRoundIndex, activityData }
}
if (now > tempData.huntEndTime) {//活动过期
@@ -83,11 +84,11 @@ export async function getTreasureHuntData(serverId: number) {
return { huntActivityId, huntBeginTime, huntEndTime, huntRoundIndex, activityData }
}
tempData = await ServerTempModel.updateTreasureHuntData(serverId, huntActivityId, huntBeginTime, huntEndTime, huntRoundIndex);
activityData = await ActivityModel.findActivity(serverId, huntActivityId, true);
activityData = await ActivityModel.findActivity(huntActivityId);
return { huntActivityId, huntBeginTime, huntEndTime, huntRoundIndex, activityData }
}
if (!activityData) {
activityData = await ActivityModel.findActivity(serverId, tempData.huntActivityId, true);
activityData = await ActivityModel.findActivity(tempData.huntActivityId);
}
return {
huntActivityId: tempData.huntActivityId,
@@ -99,10 +100,11 @@ export async function getTreasureHuntData(serverId: number) {
}
async function getNewActivityData(serverId: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let huntActivityId: number = 0; // 寻宝骑兵-活动Id
let huntEndTime: Date = null; // 寻宝骑兵-结束时间
let huntRoundIndex: number = 0; // 寻宝骑兵-周期数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序
let treasureHuntDataArray: TreasureHuntData[] = [];
for (let obj of activityArray) {
treasureHuntDataArray.push(new TreasureHuntData(obj));
@@ -130,10 +132,11 @@ async function getNewActivityData(serverId: number) {
}
async function getNextActivityData(serverId: number, oldHuntActivityId: number, oldHuntEndTime: Date, oldHuntRoundIndex: number) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let huntActivityId: number = 0; // 寻宝骑兵-活动Id
let huntEndTime: Date = null; // 寻宝骑兵-结束时间
let huntRoundIndex: number = oldHuntRoundIndex; // 寻宝骑兵-周期数
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.TREASURE_HUNT, 1)//activityId从小到大排序
let treasureHuntDataArray: TreasureHuntData[] = [];
for (let obj of activityArray) {
treasureHuntDataArray.push(new TreasureHuntData(obj));

View File

@@ -1,5 +1,6 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ServerlistModel } from '../db/Serverlist';
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
import { RewardParam } from '../domain/activityField/rewardField';
import { YuanBaoShopData, YuanBaoShopItem } from '../domain/activityField/yuanBaoShopField';
@@ -15,7 +16,8 @@ import { addReward, stringToRewardParam } from './giftPackageService';
*/
export async function yuanbaoActivity(serverId: number, roleId: string) {
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(serverId, ACTIVITY_TYPE.YUAN_BAO_SHOP, -1)
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.YUAN_BAO_SHOP, -1)
if (activityArray.length == 0) {
return null;
}
@@ -33,7 +35,7 @@ export async function yuanbaoActivity(serverId: number, roleId: string) {
*
*/
export async function getPlayerYuanbaoShopData(activityId: number, serverId: number, roleId: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityId, roleId);
let playerData = new YuanBaoShopData(activityData);
@@ -54,7 +56,7 @@ export async function getPlayerYuanbaoShopData(activityId: number, serverId: num
export async function makeYuanbaoShopReward(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number, productID: string) {
let records = await UserOrderModel.findOrderByProductID(productID, roleId, activityId);
let activityData: ActivityModelType = await ActivityModel.findActivity(serverId, activityId, true);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
let playerData = new YuanBaoShopData(activityData);
let item = playerData.findItem(productID);

View File

@@ -13,4 +13,10 @@ export default class GameController extends Controller {
ctx.body = await ctx.service.game.getServerListByEnv();
return
}
public async getDicHero() {
const { ctx } = this;
ctx.body = await ctx.service.game.getDicHero();
return
}
}

View File

@@ -45,6 +45,7 @@ export default (app: Application) => {
router.post('/api/game/getserverenv', tokenParser, controller.game.getServerEnv);
router.post('/api/game/getserverlistbyenv', controller.game.getServerListByEnv);
router.post('/api/game/getdichero', controller.game.getDicHero);
router.post('/api/activity/getactivitylist', controller.activity.getActivityList);
router.post('/api/activity/updateactivity', controller.activity.updateActivity);

View File

@@ -2,6 +2,8 @@ import { Service } from 'egg';
import { STATUS } from '@consts';
import { GameModel } from '@db/Game';
import { ServerlistModel } from '@db/Serverlist';
import { gameData } from '@pubUtils/data';
import { DicHero } from '@pubUtils/dictionary/DicHero';
/**
* Test Service
@@ -37,4 +39,16 @@ export default class Game extends Service {
});
}
public async getDicHero() {
let list: DicHero[] = [];
for(let [heroId, hero] of gameData.hero) {
if(heroId <= 300) {
list.push(hero)
}
}
return this.ctx.service.utils.resResult(STATUS.SUCCESS, {
list
})
}
}

View File

@@ -270,6 +270,7 @@ export default class GMUsers extends Service {
return ctx.service.utils.resResult(STATUS.SUCCESS, { uids });
} catch(e) {
console.error(e.stack)
return ctx.service.utils.resResult(STATUS.GM_CREATE_ERROR, null, e.stack);
}
}

View File

@@ -5,6 +5,7 @@
*/
export enum ACTIVITY_TYPE {
SEVEN_DAY = 0, // 七天乐活动(虚)
DAILY_DISCOUNT_GIFT = 1, // 七天乐活动,每日特惠礼包
TASK_GROWTH = 2, // 成长任务活动
TASK_DAILY_CHALLENGES = 3, // 今日挑战活动
@@ -97,4 +98,4 @@ export const DAILYRMBGIFTS_DAYS = 7;//一次性购买*天
//签到活动开启时间
export const SIGNIN_OPEN = 5;//*号0点开启
export const SIGNIN_CLOSE = 24;//*号晚上24点结束
export const SIGNIN_CLOSE = 30;//*号晚上24点结束

View File

@@ -359,6 +359,7 @@ export const STATUS = {
ACTIVITY_POP_UP_SHOP_EXPIRE: { code: 50022, simStr: '弹出商店过期' },
ACTIVITY_NEED_PAY: { code: 50023, simStr: '客户端调错接口了' },
ACTIVITY_GOLD_RESOURCE: { code: 50024, simStr: '元宝资源' },
ACTIVITY_ID_ERROR: { code: 50025, simStr: 'id错误' },
// GM后台相关状态 60000 - 69999
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
GM_MISS_API: { code: 60002, simStr: '未找到该接口' },

View File

@@ -10,7 +10,7 @@ import { COUNTER } from '../consts';
export default class Activity extends BaseModel {
@prop({ required: true })
serverId: number; // Id
groupId: number; // Id
@prop({ required: true })
activityId: number; // 活动Id
@prop({ required: true })
@@ -23,25 +23,27 @@ export default class Activity extends BaseModel {
data: string; // 活动表中的数据
//根据活动类型查询开启的活动数据
public static async findOpenActivityByType(serverId: number, type: number, date: Date, lean = true) {
let result: ActivityModelType[] = await ActivityModel.find({ serverId, type, beginTime: { $lte: date }, endTime: { $gte: date } }).sort({ activityId: -1 }).lean(lean);
public static async findOpenActivityByType(activityGroupId: number[], type: number, date: Date) {
let result: ActivityModelType[] = await ActivityModel.find(
{ groupId: { $in: activityGroupId }, type, beginTime: { $lte: date }, endTime: { $gte: date } }
).sort({ activityId: -1 }).lean(true);
return result;
}
//根据活动类型查询活动数据
public static async findActivityByType(serverId: number, type: number, sort: number) {
let result: ActivityModelType[] = await ActivityModel.find({ serverId, type }).sort({ activityId: sort }).lean(true);
public static async findActivityByType(activityGroupId: number[], type: number, sort: number) {
let result: ActivityModelType[] = await ActivityModel.find({ groupId: { $in: activityGroupId }, type }).sort({ activityId: sort }).lean(true);
return result;
}
//根据活动id查询活动数据
public static async findActivity(serverId: number, activityId: number, lean = true) {
let result: ActivityModelType = await ActivityModel.findOne({ serverId, activityId }).lean(lean);
public static async findActivity(activityId: number) {
let result: ActivityModelType = await ActivityModel.findOne({ activityId }).lean(true);
return result;
}
//新增活动
public static async addActivity(aids: number[], serverId: number, beginTime: Date, endTime: Date, type: number, data: string, lean = true) {
public static async addActivity(aids: number[], serverId: number, beginTime: Date, endTime: Date, type: number, data: string) {
let result: ActivityModelType[] = [];
for (let activityId of aids) {
if (!activityId) activityId = await CounterModel.getNewCounter(COUNTER.ACTIVITY);
@@ -56,7 +58,7 @@ export default class Activity extends BaseModel {
update["endTime"] = endTime;
}
let rec: ActivityModelType = await ActivityModel.findOneAndUpdate({ activityId }, { $set: update },
{ new: true, upsert: true }).lean(lean);
{ new: true, upsert: true }).lean(true);
result.push(rec);
}
return result;

View File

@@ -0,0 +1,52 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
/**
* 活动合集
*/
@index({ activityId: 1 })
export default class Activity_Group extends BaseModel {
@prop({ required: true })
groupId: number; // 组Id
@prop({ required: true })
groupName: string; // 组名
@prop({ required: true })
activities: number[]; // 活动Id
@prop({ required: true })
beginTime: Date; // 里面的activity的最早的时间
@prop({ required: true })
endTime: Date; // 里面的activity的最晚的时间
//查询组
public static async findGroupData(groupId: number) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOne({ groupId }).lean(true);
return result;
}
//更新名字
public static async updateGroupName(groupId: number, groupName: string) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { groupName } }, { upsert: true, new: true }).lean(true);
return result;
}
//更新询组
public static async updateGroupData(groupId: number, activities: number[], beginTime: Date, endTime: Date) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { activities, beginTime, endTime } }, { upsert: true, new: true }).lean(true);
return result;
}
//删除组
public static async deleteGroup(groupId: number) {
let result = await ActivityGroupModel.deleteMany({ groupId });
return result;
}
}
export const ActivityGroupModel = getModelForClass(Activity_Group);
export interface ActivityGroupModelType extends Pick<DocumentType<Activity_Group>, keyof Activity_Group> { }
export type ActivityGroupModelTypeParam = Partial<ActivityGroupModelType>; // 将所有字段变成可选项

View File

@@ -23,15 +23,13 @@ export default class Activity_Growth extends BaseModel {
totalCount: number; // 累计达成次数
@prop({ required: true })
receiveRewardCount: number; // 领取奖励次数
@prop({ required: true, default: 0 })
addPointCount: number; // 获得奖章个数
@prop({ required: true, default: false })
getPointReward: boolean; // 是否兑换领取奖章奖励
//任务领取记录
public static async addCellRecord(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, count: number, addPointCount: number, lean = true) {
public static async addCellRecord(serverId: number, activityId: number, roleId: string, dayIndex: number, cellIndex: number, type: number, count: number,) {
let result: ActivityGrowthModelType = await ActivityGrowthModel.findOneAndUpdate({ serverId, roleId, activityId, dayIndex, cellIndex, type },
{ $inc: { receiveRewardCount: count, addPointCount: addPointCount } }, { upsert: true, new: true }).lean(lean);
{ $inc: { receiveRewardCount: count } }, { upsert: true, new: true }).lean(true);
return result;
}

View File

@@ -18,7 +18,7 @@ export default class Activity_Growth_Point extends BaseModel {
//当日奖章领取记录
public static async addRecord(serverId: number, activityId: number, roleId: string, id: number) {
let result: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findOneAndUpdate({ serverId, roleId, activityId, id },
let result: ActivityGrowthPointModelType = await ActivityGrowthPointModel.findOneAndUpdate({ serverId, roleId, activityId },
{ $push: { ids: id } }, { upsert: true, new: true }).lean(true);
return result;
}
@@ -30,8 +30,8 @@ export default class Activity_Growth_Point extends BaseModel {
}
//删除活动领取记录
public static async deleteActivity(serverId: number, activityId: number, roleId: string, id: number) {
await ActivityGrowthPointModel.deleteMany({ serverId, roleId, activityId, id });
public static async deleteActivity(serverId: number, activityId: number, roleId: string) {
await ActivityGrowthPointModel.deleteMany({ serverId, roleId, activityId });
}
}

View File

@@ -7,7 +7,7 @@ import { index, getModelForClass, prop, DocumentType, modelOptions } from '@type
* 游戏字段接口
*/
@index({ id: 1 })
@modelOptions({schemaOptions: {id: false}})
@modelOptions({ schemaOptions: { id: false } })
export default class Serverlist extends BaseModel {
@prop({ required: true, default: 1 })
@@ -33,10 +33,13 @@ export default class Serverlist extends BaseModel {
@prop({ required: true })
serverStatus: number; // 服务器状态
@prop({ required: true })
activityGroupId: number[]; // 活动组
public get status() {
let now = new Date();
if( now > this.openTime) {
if (now > this.openTime) {
return this.serverStatus;
} else {
return 3; // 未开服
@@ -61,19 +64,19 @@ export default class Serverlist extends BaseModel {
}
public static async findByServerId(serverId: number) {
let server: ServerlistType = await ServerlistModel.findOne({ id: serverId }).select('medianCe').lean({ getters: true, virtuals: true });
let server: ServerlistType = await ServerlistModel.findOne({ id: serverId }).select('medianCe activityGroupId').lean({ getters: true, virtuals: true });
return server;
}
public static async updateByServerId(serverId: number, update: ServerlistUpdate) {
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({id: serverId}, {$set: update}).lean({ getters: true, virtuals: true });
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId }, { $set: update }).lean({ getters: true, virtuals: true });
return server;
}
public static async newServer(serverId: number, serverType: string, params: ServerlistUpdate) {
const doc = new ServerlistModel();
const update = Object.assign(doc.toJSON(), { id: serverId, serverType }, params);
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId, serverType }, {$setOnInsert: update }, {new: true, upsert: true}).lean({ getters: true, virtuals: true });
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId, serverType }, { $setOnInsert: update }, { new: true, upsert: true }).lean({ getters: true, virtuals: true });
return server;
}
@@ -85,7 +88,7 @@ export default class Serverlist extends BaseModel {
export const ServerlistModel = getModelForClass(Serverlist);
export interface ServerlistType extends Pick<DocumentType<Serverlist>, keyof Serverlist>{
export interface ServerlistType extends Pick<DocumentType<Serverlist>, keyof Serverlist> {
id: number;
};
export type ServerlistUpdate = Partial<ServerlistType>; // 将所有字段变成可选项

View File

@@ -24,6 +24,6 @@ export abstract class ActivityBase {
this.type = activityData.type;
// this.data = activityData.data;
this.todayIndex = deltaDays(activityData.beginTime, new Date) + 1;
console.log('今天是活动第几天', activityData.beginTime, new Date, this.todayIndex)
// console.log('今天是活动第几天', activityData.beginTime, new Date, this.todayIndex)
}
}

View File

@@ -2,7 +2,7 @@ import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../consts';
import { ActivityModelType } from '../../db/Activity';
import { ActivityDailyChallengesModelType } from '../../db/ActivityDailyChallenges';
import { RewardInter } from '../../pubUtils/interface';
import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util';
import { parseGoodStrWithType, parseHeroStrWithType } from '../../pubUtils/util';
import { CreateHeroParam } from '../roleField/hero';
import { ActivityBase } from './activityField';

View File

@@ -2,8 +2,9 @@ import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../consts';
import { ActivityModelType } from '../../db/Activity';
import { ActivityGrowthModelType } from '../../db/ActivityGrowth';
import { ActivityGrowthPointModelType } from '../../db/ActivityGrowthPoint';
import { RoleModel } from '../../db/Role';
import { RewardInter } from '../../pubUtils/interface';
import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util';
import { parseGoodStrWithType, parseHeroStrWithType } from '../../pubUtils/util';
import { CreateHeroParam } from '../roleField/hero';
import { ActivityBase } from './activityField';
@@ -145,6 +146,7 @@ export class GrowthData extends ActivityBase {
//第几天的奖章兑换
public findPointItem(id: number) {
console.log('ddddddddddd', JSON.stringify(this.pointRewardList), id)
let index = this.pointRewardList.findIndex(obj => { return obj && obj.id === id })
return (index != -1) ? this.pointRewardList[index] : null;
}
@@ -174,13 +176,18 @@ export class GrowthData extends ActivityBase {
}
//解析玩家领取记录
public setPlayerRecords(data: ActivityGrowthModelType[]) {
public async setPlayerRecords(data: ActivityGrowthModelType[], roleId: string) {
let { heroNum } = await RoleModel.findByRoleId(roleId);
for (let obj of this.list) {
let index = data.findIndex(record => { return obj.dayIndex == record.dayIndex && obj.cellIndex == record.cellIndex })
if (index != -1) {
obj.totalCount = data[index].totalCount ? data[index].totalCount : 0;
obj.receiveRewardCount = data[index].receiveRewardCount ? data[index].receiveRewardCount : 0;
}
if (obj.taskType === TASK_TYPE.HERO_NUM) {
obj.totalCount = heroNum;
}
}
}

View File

@@ -16,6 +16,7 @@ export class GrowthFundItem {
taskType: number; // 任务类型 dic_zyz_taskType.json
taskParam: string; //任务数据 dic_zyz_taskType.json
taskParamArray: Array<number>; //任务数据 dic_zyz_taskType.json
condition: number; //0
reward: string; // 任务奖励,格式:1&3&1(类型&id&数量) 类型定义:1.英雄2.物品
@@ -30,6 +31,7 @@ export class GrowthFundItem {
this.taskType = data.taskType;
this.taskParam = data.taskParam;
this.reward = data.reward;
this.condition = data.condition;
this.isComplete = false;
this.isReceive = false;

View File

@@ -17,6 +17,7 @@ import { ActivityGrowthModel } from '../db/ActivityGrowth';
import { ActivityDailyChallengesModel } from '../db/ActivityDailyChallenges';
import { ThirtyDaysData } from '../domain/activityField/thirtyDaysField';
import { ActivityThirtyDaysModel, ActivityThirtyDaysModelType } from '../db/ActivityThirtyDays';
import { ServerlistModel } from '../db/Serverlist';
@@ -482,8 +483,9 @@ function checkRecResult(rec: UserTaskRecType, id: number) {
*
*/
export async function accomplishTask(serverId: number, roleId: string, taskType: TASK_TYPE, count: number, parma?: any) {
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
//七天乐-成长活动统计
let allActivity: ActivityModelType[] = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
let allActivity: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
for (let activity of allActivity) {
let growthActivity = new GrowthData(activity);
let taskArray = growthActivity.findTaskByType(taskType);
@@ -491,16 +493,16 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
let addCount = isComplete(roleId, task.taskType, task.taskParam, count, parma);
if (addCount) {
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) {
await ActivityGrowthModel.setTaskCount(activity.serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
await ActivityGrowthModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
} else {
await ActivityGrowthModel.addTaskCount(activity.serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
await ActivityGrowthModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
}
}
}
}
//今日挑战统计
allActivity = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, new Date());
allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, new Date());
for (let activity of allActivity) {
let growthActivity = new DailyChallengesData(activity);
let taskArray = growthActivity.findTaskByType(taskType, growthActivity.today());
@@ -508,9 +510,9 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
let addCount = isComplete(roleId, task.taskType, task.taskParam, count, parma);
if (addCount) {
if (taskType == TASK_TYPE.ROLE_LV || taskType == TASK_TYPE.ROLE_TITLE) {
await ActivityDailyChallengesModel.setTaskCount(activity.serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
await ActivityDailyChallengesModel.setTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
} else {
await ActivityDailyChallengesModel.addTaskCount(activity.serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
await ActivityDailyChallengesModel.addTaskCount(serverId, growthActivity.activityId, roleId, task.dayIndex, task.cellIndex, task.taskType, addCount);
}
}
}
@@ -531,16 +533,16 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
taskType === TASK_TYPE.EQUIP_QUALITY
) {
allActivity = await ActivityModel.findOpenActivityByType(serverId, ACTIVITY_TYPE.THIRTY_DAYS, new Date());
allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.THIRTY_DAYS, new Date());
for (let activity of allActivity) {
let thirtyDaysActivity = new ThirtyDaysData(activity);
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(activity.serverId, activity.activityId, roleId);
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activity.activityId, roleId);
thirtyDaysActivity.setPlayerRecords(playerRecords);
let taskArray = thirtyDaysActivity.findUncompleteTaskByType(taskType);
for (let task of taskArray) {
let addCount = isComplete(roleId, task.taskType, task.taskParam, count, parma);
if (addCount) {
await ActivityThirtyDaysModel.addTaskCount(activity.serverId, thirtyDaysActivity.activityId, roleId, task.pageIndex, task.cellIndex, task.taskType, addCount);
await ActivityThirtyDaysModel.addTaskCount(serverId, thirtyDaysActivity.activityId, roleId, task.pageIndex, task.cellIndex, task.taskType, addCount);
}
}
}
@@ -566,7 +568,7 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
let addCount: number = 0; // 条件是否满足
switch (taskType) {
case TASK_TYPE.ROLE_LV://重置数据
addCount = param[0] <= count ? count : 0;
addCount = count;
break;
case TASK_TYPE.GUILD_JOIN:
addCount = count;
@@ -642,6 +644,9 @@ export function isComplete(roleId: string, taskType: TASK_TYPE, taskParam: strin
case TASK_TYPE.HERO_TRAIN_SUM:
addCount = count;
break;
case TASK_TYPE.EQUIP_SUM:
addCount = count;
break;
default:
addCount = 0;
break;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff