资源:冲突提交

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

@@ -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