活动:活动按照合集调整数据结构
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { ACTIVITY_TYPE, FIRST_GIFT_STATE, SERVER_OPEN_TIME, STATUS, TASK_TYPE } from '../../../consts';
|
||||
import { ACTIVITY_TYPE, ACTIVITY_GROUP_TYPE, SERVER_OPEN_TIME, STATUS, TASK_TYPE } from '../../../consts';
|
||||
import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService';
|
||||
import { newPlayerSignInActivity, signInActivity, signInVIPActivity } from '../../../services/signInService';
|
||||
import { growthFundActivity } from '../../../services/growthFundService';
|
||||
@@ -24,6 +24,10 @@ import { getSelfServiceShopActivityData } from '../../../services/selfServiceSho
|
||||
import { ActivitySelfServiceGoodsModel } from '../../../db/ActivitySelfServiceGoods';
|
||||
import { dailyMealActivity } from '../../../services/dailyMealService';
|
||||
import { dailyCoinActivity } from '../../../services/dailyCoinService';
|
||||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||||
import { ServerlistModel } from '../../../db/Serverlist';
|
||||
import { getActivity } from '../../../services/activityService';
|
||||
import { ActivityModel } from '../../../db/Activity';
|
||||
// import { ActivityDailyChallengesModel } from '../../../db/ActivityDailyChallenges';
|
||||
// import { isComplete } from '../../../pubUtils/taskUtil';
|
||||
|
||||
@@ -466,7 +470,27 @@ export class ActivityHandler {
|
||||
}
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { playerActivityArray });
|
||||
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
|
||||
let groups = await ActivityGroupModel.findGroupsData(activityGroupId);
|
||||
let playerGroupArray = [];
|
||||
for (let groupData of groups) {
|
||||
if (groupData.type !== ACTIVITY_GROUP_TYPE.UNKNOW) {
|
||||
let playerActivityArray = [];
|
||||
for (let activityId of groupData.activities) {
|
||||
let activityData = await ActivityModel.findActivity(activityId);
|
||||
if (activityData) {
|
||||
let playerActivityData = await getActivity(serverId, roleId, activityId, activityData.type)
|
||||
if (playerActivityData) playerActivityArray.push(playerActivityData);
|
||||
}
|
||||
}
|
||||
playerGroupArray.push({
|
||||
type: groupData.type,
|
||||
activities: playerActivityArray,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return resResult(STATUS.SUCCESS, { playerActivityArray, playerGroupArray });
|
||||
}
|
||||
|
||||
//测试活动任务数据
|
||||
|
||||
@@ -64,6 +64,7 @@ export class DailyCoinHandler {
|
||||
let allConsume: Array<ItemInter> = []
|
||||
let allReward: Array<RewardParam> = [];
|
||||
let role = await RoleModel.findByRoleId(roleId)
|
||||
let rateArray = [];//暴击记录
|
||||
for (let i = 1; i <= count; i++) {
|
||||
let index = curIndex + i;
|
||||
console.log('第几次抽奖', index)
|
||||
@@ -75,7 +76,7 @@ export class DailyCoinHandler {
|
||||
allConsume = allConsume.concat(consume)
|
||||
}
|
||||
let rate = playerData.getRate()//翻几倍
|
||||
|
||||
rateArray.push(rate);
|
||||
let rewardItem: CoinRewardFormulaItem = playerData.findCoinRewardFormulaItem(index);
|
||||
let lv = role.lv;//玩家等级
|
||||
let coinRewardCount = eval(rewardItem.rewardFormula);
|
||||
@@ -86,10 +87,12 @@ export class DailyCoinHandler {
|
||||
reward.count = reward.count * rate;
|
||||
}
|
||||
allReward = allReward.concat(baseRewardParamArr);
|
||||
if (playerData.isExtra(index)) {//额外奖励
|
||||
let extraIndex = playerData.isExtra(index);
|
||||
if (extraIndex != -1) {//额外奖励
|
||||
let extraRewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.extraReward);
|
||||
console.log('额外奖励', JSON.stringify(extraRewardParamArr))
|
||||
allReward = allReward.concat(extraRewardParamArr);
|
||||
let extraReward = extraRewardParamArr[extraIndex];
|
||||
console.log('额外奖励', JSON.stringify(extraReward))
|
||||
allReward.push(extraReward);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +128,7 @@ export class DailyCoinHandler {
|
||||
let exchangeCount = playerData.exchangeCount + count;
|
||||
return resResult(STATUS.SUCCESS, Object.assign(result, {
|
||||
param: { activityId, count },
|
||||
item: { exchangeCount },
|
||||
item: { exchangeCount, recordMsg: `${count}&${consumeGold}&${addCoin}`, rateArray },
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
97
game-server/app/services/activityService.ts
Normal file
97
game-server/app/services/activityService.ts
Normal file
@@ -0,0 +1,97 @@
|
||||
import { ACTIVITY_TYPE } from '../consts';
|
||||
import { getPlayerFirstGiftData } from './firstGiftService';
|
||||
import { getPlayerSignInData, } from './signInService';
|
||||
import { getPlayerGrowthFundData, } from './growthFundService';
|
||||
import { getPlayerLimitPackageData, } from './limitPackageService';
|
||||
import { getPlayerDailyGiftsData } from './dailyGiftsService';
|
||||
import { getPlayerYuanbaoShopData, } from './yuanbaoService';
|
||||
import { getPlayerMonthlyTicketData, } from './monthlyTicketService';
|
||||
import { getPlayerRechargeMoneyData, } from './rechargeMoneyService';
|
||||
import { getPlayerThirtyDaysData, playerThirtyDaysActivityDays, } from './thirtyDaysService';
|
||||
import { getPlayerVipRechargeMoneyData, } from './vipRechargeMoneyService';
|
||||
import { getPlayerActivityData, } from './selfServiceShopActivityService';
|
||||
import { ActivitySelfServiceGoodsModel } from '../db/ActivitySelfServiceGoods';
|
||||
|
||||
/**
|
||||
* 获取活动数据
|
||||
*
|
||||
* @param {number} serverId 区Id
|
||||
* @param {number} activityId 活动Id
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
export async function getActivity(serverId: number, roleId: string, activityId: number, activityType: number) {
|
||||
let activityData = null;
|
||||
switch (activityType) {
|
||||
case ACTIVITY_TYPE.SIGN_IN://签到 4
|
||||
case ACTIVITY_TYPE.SIGN_IN_VIP://高级签到 5
|
||||
case ACTIVITY_TYPE.NEW_PLAYER_SIGN_IN://新手签到 25
|
||||
{
|
||||
activityData = await getPlayerSignInData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN://成长基金 6
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP://高阶成长基金 7
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_TOWER://镇念塔成长基金 8
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP://高阶镇念塔成长基金 9
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE://精英成长基金 10
|
||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP://高阶精英成长基金 11
|
||||
{
|
||||
activityData = await getPlayerGrowthFundData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.THIRTY_DAYS://30天目标活动 12
|
||||
{
|
||||
let data = await getPlayerThirtyDaysData(activityId, serverId, roleId);
|
||||
let todayIndex = await playerThirtyDaysActivityDays(roleId);
|
||||
activityData = { playerData: data, todayIndex }
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.SELF_SERVICE_SHOP://自选商店 糜家商队 13
|
||||
{
|
||||
let data = await getPlayerActivityData(activityId, serverId, roleId);
|
||||
let playerGoods = await ActivitySelfServiceGoodsModel.findData(activityId, roleId, data.roundIndex, true);
|
||||
activityData = { playerData: data, playerGoods: playerGoods ? playerGoods : [] }
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.FIRST_GIFT://首冲礼包活动 14
|
||||
{
|
||||
activityData = await getPlayerFirstGiftData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY://每日限购礼包,RMB购买礼包 16
|
||||
case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY://每周限购礼包,RMB购买礼包 17
|
||||
{
|
||||
activityData = await getPlayerLimitPackageData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.YUAN_BAO_SHOP://元宝商店 18
|
||||
{
|
||||
activityData = await getPlayerYuanbaoShopData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.MONTHLY_TICKET_1://月卡1 19
|
||||
case ACTIVITY_TYPE.MONTHLY_TICKET_2://月卡2 20
|
||||
{
|
||||
activityData = await getPlayerMonthlyTicketData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.RECHARGE_MONEY://累计充值RMB活动 21
|
||||
{
|
||||
activityData = await getPlayerRechargeMoneyData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.DAILY_RMB_GIFTS://每日特惠RMB购买,一次性购买7天礼包 22
|
||||
{
|
||||
activityData = await getPlayerDailyGiftsData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.VIP_RECHARGE_MONEY://vip累计充值活动 26
|
||||
{
|
||||
activityData = await getPlayerVipRechargeMoneyData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return activityData;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ACTIVITY_TYPE, DAILY_MEAL_TYPE } from '../consts';
|
||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||
import { ActivityDailyCoinModel, ActivityDailyCoinModelType } from '../db/ActivityDailyCoin';
|
||||
import { ActivityGroupModel } from '../db/ActivityGroup';
|
||||
import { ServerlistModel } from '../db/Serverlist';
|
||||
import { DailyCoinData } from '../domain/activityField/dailyCoinField';
|
||||
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
*/
|
||||
|
||||
export enum ACTIVITY_GROUP_TYPE {
|
||||
UNKNOW = 0, // 未知类型
|
||||
FESTIVAL = 1, // 节日活动合集
|
||||
}
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
|
||||
@@ -22,6 +22,8 @@ export default class Activity_Group extends BaseModel {
|
||||
endTime: Date; // 里面的activity的最晚的时间
|
||||
@prop({ required: true, type: Number })
|
||||
serverIds: number[]; // 关联服务器列表
|
||||
@prop({ required: true })
|
||||
type: number; // 类型 ACTIVITY_GROUP_TYPE
|
||||
|
||||
|
||||
//查询组
|
||||
@@ -34,6 +36,12 @@ export default class Activity_Group extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
//查询组
|
||||
public static async findGroupsData(groupIds: number[]) {
|
||||
let result: ActivityGroupModelType[] = await ActivityGroupModel.find({ groupId: { $in: groupIds } }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
//查询组
|
||||
public static async findGroupData(groupId: number) {
|
||||
let result: ActivityGroupModelType = await ActivityGroupModel.findOne({ groupId }).lean();
|
||||
@@ -71,9 +79,9 @@ export default class Activity_Group extends BaseModel {
|
||||
private static async updateTime(groupId: number, aids: number[]) {
|
||||
let activities = await ActivityModel.findActivityByIds(aids);
|
||||
let beginTime = undefined, endTime = undefined;
|
||||
for(let activity of activities) {
|
||||
if(!beginTime || activity.beginTime < beginTime) beginTime = activity.beginTime;
|
||||
if(!endTime || activity.endTime > endTime) endTime = activity.endTime;
|
||||
for (let activity of activities) {
|
||||
if (!beginTime || activity.beginTime < beginTime) beginTime = activity.beginTime;
|
||||
if (!endTime || activity.endTime > endTime) endTime = activity.endTime;
|
||||
}
|
||||
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
|
||||
{ $set: { beginTime, endTime } }, { new: true }).lean(true);
|
||||
@@ -85,7 +93,7 @@ export default class Activity_Group extends BaseModel {
|
||||
public static async pullByActivityIds(activities: number[], uid = 1) {
|
||||
await ActivityModel.updateGroupId(activities, 0, uid);
|
||||
let activityGroups = await ActivityGroupModel.find({ activities: { $in: activities } });
|
||||
for(let { groupId } of activityGroups) {
|
||||
for (let { groupId } of activityGroups) {
|
||||
let result = await ActivityGroupModel.findOneAndUpdate({ groupId }, { $pull: { activities: { $in: activities } } }, { new: true }).lean(true);
|
||||
await this.updateTime(result.groupId, result.activities);
|
||||
}
|
||||
@@ -108,7 +116,7 @@ export default class Activity_Group extends BaseModel {
|
||||
//查询
|
||||
public static async findByCondition(page: number, pageSize: number, serverId: number = 0, current: boolean = false, groupId: number = 0) {
|
||||
let searchObj = {};
|
||||
if (serverId != 0) searchObj['serverIds'] = { $elemMatch:{$eq:serverId} };
|
||||
if (serverId != 0) searchObj['serverIds'] = { $elemMatch: { $eq: serverId } };
|
||||
if (groupId != 0) searchObj['groupId'] = groupId;
|
||||
if (current) {
|
||||
searchObj['beginTime'] = { $lte: new Date };
|
||||
|
||||
@@ -66,7 +66,7 @@ export class DailyCoinData extends ActivityBase {
|
||||
|
||||
public isExtra(index: number) {
|
||||
let arr = splitString(this.extraRewardCount, '&');
|
||||
return arr.indexOf(index) != -1;
|
||||
return arr.indexOf(index);
|
||||
}
|
||||
|
||||
public findConsumeExchangeFormulaItem(index: number) {
|
||||
|
||||
Reference in New Issue
Block a user