活动:成长基金添加购买记录
This commit is contained in:
@@ -52,6 +52,10 @@ export class SevenDaysHandler {
|
||||
let playerData = await getPlayerGrowthFundData(activityId, serverId, roleId)
|
||||
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||
|
||||
if (playerData.isVipActivity() && !playerData.isBuy(pageIndex)) {//vip高阶活动,需要购买
|
||||
return resResult(STATUS.ACTIVITY_NEED_BUY);
|
||||
}
|
||||
|
||||
let growthFundItemData: GrowthFundItem = playerData.findGrowthFundItem(pageIndex, cellIndex);
|
||||
if (!growthFundItemData) {
|
||||
return resResult(STATUS.ACTIVITY_DATA_ERROR);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
|
||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||
import { ActivityGrowthFundModel, ActivityGrowthFundModelType } from '../db/ActivityGrowthFund';
|
||||
import { ActivityBuyRecordsModel, ActivityBuyRecordsModelType } from '../db/ActivityBuyRecords';
|
||||
import { RoleModel } from '../db/Role';
|
||||
import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFundField';
|
||||
|
||||
@@ -12,8 +13,17 @@ import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFu
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
/*ACTIVITY_TYPE类型
|
||||
GROWTH_FUND_MAIN = 6, // 主线成长基金
|
||||
GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶)
|
||||
GROWTH_FUND_TOWER = 8, // 镇念塔成长基金
|
||||
GROWTH_FUND_TOWER_VIP = 9, // 镇念塔成长基金(高阶)
|
||||
GROWTH_FUND_MAIN_ELITE = 10, // 精英成长基金
|
||||
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
|
||||
*/
|
||||
export async function growthFundActivity(type: number, serverId: number, roleId: string) {
|
||||
let activityArray: ActivityModelType[] = await (await ActivityModel.findActivityByType(type, true)).sort((a, b) => {
|
||||
let activityArray: ActivityModelType[] = await ActivityModel.findActivityByType(type, true)
|
||||
activityArray = activityArray.sort((a, b) => {
|
||||
return a.acvitityId - b.acvitityId
|
||||
});
|
||||
for (let i = 0; i < activityArray.length; i++) {
|
||||
@@ -40,6 +50,10 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb
|
||||
|
||||
let playerData = new GrowthFundData(activityData);
|
||||
playerData.setPlayerRecords(playerRecords);
|
||||
if (playerData.isVipActivity()) {//vip高阶需要购买
|
||||
let buyRecords = await ActivityBuyRecordsModel.findRecordsByActivityId(activityData.acvitityId, roleId);
|
||||
playerData.initBuyRecords(buyRecords);
|
||||
}
|
||||
|
||||
let activityType = activityData.type;
|
||||
switch (activityType) {
|
||||
|
||||
@@ -11,8 +11,11 @@ export enum ACTIVITY_TYPE {
|
||||
SIGN_IN = 4, // 签到活动
|
||||
SIGN_IN_VIP = 5, // 签到活动(高级)
|
||||
GROWTH_FUND_MAIN = 6, // 主线成长基金
|
||||
GROWTH_FUND_TOWER = 7, // 镇念塔成长基金
|
||||
GROWTH_FUND_MAIN_ELITE = 8, // 精英成长基金
|
||||
GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶)
|
||||
GROWTH_FUND_TOWER = 8, // 镇念塔成长基金
|
||||
GROWTH_FUND_TOWER_VIP = 9, // 镇念塔成长基金(高阶)
|
||||
GROWTH_FUND_MAIN_ELITE = 10, // 精英成长基金
|
||||
GROWTH_FUND_MAIN_ELITE_VIP = 11, // 精英成长基金(高阶)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -347,6 +347,7 @@ export const STATUS = {
|
||||
ACTIVITY_DAY_INDEX_OVER: { code: 50010, simStr: '心急吃不了热豆腐' },
|
||||
ACTIVITY_EXPIRE: { code: 50011, simStr: '活动到期,刷新' },
|
||||
ACTIVITY_GROWTH_FUND_END: { code: 50012, simStr: '成长基金活动结束' },
|
||||
ACTIVITY_NEED_BUY: { code: 50012, simStr: '成长基金需要购买' },
|
||||
// GM后台相关状态 60000 - 69999
|
||||
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
|
||||
GM_MISS_API: { code: 60002, simStr: '未找到该接口' },
|
||||
|
||||
48
shared/db/ActivityBuyRecords.ts
Normal file
48
shared/db/ActivityBuyRecords.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 活动购买记录
|
||||
*/
|
||||
@index({ roleId: 1 })
|
||||
|
||||
export default class ActivityBuyRecords extends BaseModel {
|
||||
@prop({ required: true })
|
||||
acvitityId: number; // 活动Id
|
||||
@prop({ required: true })
|
||||
roleId: string; // 用户Id
|
||||
@prop({ required: true })
|
||||
type: number; // 活动类型
|
||||
@prop({ required: true })
|
||||
pageIndex: number; // 第几页(成长基金使用)
|
||||
|
||||
|
||||
//添加购买记录
|
||||
public static async addRecord(acvitityId: number, roleId: string, type: number, pageIndex: number, lean = true) {
|
||||
let result: ActivityBuyRecordsModelType = await ActivityBuyRecordsModel.findOneAndUpdate({ roleId, acvitityId, type, pageIndex },
|
||||
{}, { upsert: true, new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
//根据活动id查询数据
|
||||
public static async findRecordsByActivityId(acvitityId: number, roleId: string, lean = true) {
|
||||
let result: ActivityBuyRecordsModelType[] = await ActivityBuyRecordsModel.find({ roleId, acvitityId }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
//查询第几页的活动数据
|
||||
public static async findDataBypageIndex(acvitityId: number, type: number, roleId: string, pageIndex: number, lean = true) {
|
||||
let result: ActivityBuyRecordsModelType[] = await ActivityBuyRecordsModel.find({ roleId, type, acvitityId, pageIndex }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
//删除活动购买记录
|
||||
public static async deleteActivity(acvitityId: number, roleId: string, pageIndex: number, cellIndex: number) {
|
||||
await ActivityBuyRecordsModel.deleteMany({ roleId, acvitityId, pageIndex, cellIndex });
|
||||
}
|
||||
}
|
||||
|
||||
export const ActivityBuyRecordsModel = getModelForClass(ActivityBuyRecords);
|
||||
|
||||
export interface ActivityBuyRecordsModelType extends Pick<DocumentType<ActivityBuyRecords>, keyof ActivityBuyRecords> { }
|
||||
export type ActivityBuyRecordsModelTypeParam = Partial<ActivityBuyRecordsModelType>; // 将所有字段变成可选项
|
||||
@@ -1,5 +1,6 @@
|
||||
import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE } from '../../consts';
|
||||
import { TASK_TYPE, ACTIVITY_RESOURCES_TYPE, ACTIVITY_TYPE } from '../../consts';
|
||||
import { ActivityModelType } from '../../db/Activity';
|
||||
import { ActivityBuyRecordsModelType } from '../../db/ActivityBuyRecords';
|
||||
import { ActivityGrowthFundModelType } from '../../db/ActivityGrowthFund';
|
||||
import { RewardInter } from '../../pubUtils/interface';
|
||||
import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util';
|
||||
@@ -21,6 +22,7 @@ export class GrowthFundItem {
|
||||
isComplete: boolean = false; //是否完成任务
|
||||
isReceive: boolean = false; //是否领取过奖励
|
||||
|
||||
|
||||
constructor(data: any) {
|
||||
this.pageIndex = data.pageIndex;
|
||||
this.cellIndex = data.cellIndex;
|
||||
@@ -61,6 +63,21 @@ export class GrowthFundItem {
|
||||
// 成长基金活动数据
|
||||
export class GrowthFundData extends ActivityBase {
|
||||
list: Array<GrowthFundItem> = [];
|
||||
price: number = 0;//高阶价格
|
||||
buyRecords: Array<number> = [];//高阶购买记录
|
||||
|
||||
//是否是高阶,需要购买
|
||||
public isVipActivity() {
|
||||
return this.type == ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP
|
||||
|| this.type == ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP
|
||||
|| this.type == ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP
|
||||
}
|
||||
|
||||
//是否购买page
|
||||
public isBuy(pageIndex: number) {
|
||||
let index = this.buyRecords.findIndex(obj => { return obj == pageIndex });
|
||||
return index != -1;
|
||||
}
|
||||
|
||||
//全部领取完成
|
||||
public isComplete() {
|
||||
@@ -88,8 +105,17 @@ export class GrowthFundData extends ActivityBase {
|
||||
}
|
||||
}
|
||||
|
||||
//高阶版购买记录
|
||||
public initBuyRecords(buyRecords: ActivityBuyRecordsModelType[]) {
|
||||
for (let obj of buyRecords) {
|
||||
this.buyRecords.push(obj.pageIndex);
|
||||
}
|
||||
}
|
||||
|
||||
public initData(data: string) {
|
||||
let arr = JSON.parse(data);
|
||||
let dataObj = JSON.parse(data);
|
||||
this.price = dataObj.price;
|
||||
let arr = dataObj.data;
|
||||
for (let obj of arr) {
|
||||
this.list.push(new GrowthFundItem(obj))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user