活动:成长基金添加购买记录
This commit is contained in:
@@ -52,6 +52,10 @@ export class SevenDaysHandler {
|
|||||||
let playerData = await getPlayerGrowthFundData(activityId, serverId, roleId)
|
let playerData = await getPlayerGrowthFundData(activityId, serverId, roleId)
|
||||||
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
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);
|
let growthFundItemData: GrowthFundItem = playerData.findGrowthFundItem(pageIndex, cellIndex);
|
||||||
if (!growthFundItemData) {
|
if (!growthFundItemData) {
|
||||||
return resResult(STATUS.ACTIVITY_DATA_ERROR);
|
return resResult(STATUS.ACTIVITY_DATA_ERROR);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
|
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
|
||||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||||
import { ActivityGrowthFundModel, ActivityGrowthFundModelType } from '../db/ActivityGrowthFund';
|
import { ActivityGrowthFundModel, ActivityGrowthFundModelType } from '../db/ActivityGrowthFund';
|
||||||
|
import { ActivityBuyRecordsModel, ActivityBuyRecordsModelType } from '../db/ActivityBuyRecords';
|
||||||
import { RoleModel } from '../db/Role';
|
import { RoleModel } from '../db/Role';
|
||||||
import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFundField';
|
import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFundField';
|
||||||
|
|
||||||
@@ -12,8 +13,17 @@ import { GrowthFundData, GrowthFundItem } from '../domain/activityField/growthFu
|
|||||||
* @param {string} roleId 角色Id
|
* @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) {
|
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
|
return a.acvitityId - b.acvitityId
|
||||||
});
|
});
|
||||||
for (let i = 0; i < activityArray.length; i++) {
|
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);
|
let playerData = new GrowthFundData(activityData);
|
||||||
playerData.setPlayerRecords(playerRecords);
|
playerData.setPlayerRecords(playerRecords);
|
||||||
|
if (playerData.isVipActivity()) {//vip高阶需要购买
|
||||||
|
let buyRecords = await ActivityBuyRecordsModel.findRecordsByActivityId(activityData.acvitityId, roleId);
|
||||||
|
playerData.initBuyRecords(buyRecords);
|
||||||
|
}
|
||||||
|
|
||||||
let activityType = activityData.type;
|
let activityType = activityData.type;
|
||||||
switch (activityType) {
|
switch (activityType) {
|
||||||
|
|||||||
@@ -11,8 +11,11 @@ export enum ACTIVITY_TYPE {
|
|||||||
SIGN_IN = 4, // 签到活动
|
SIGN_IN = 4, // 签到活动
|
||||||
SIGN_IN_VIP = 5, // 签到活动(高级)
|
SIGN_IN_VIP = 5, // 签到活动(高级)
|
||||||
GROWTH_FUND_MAIN = 6, // 主线成长基金
|
GROWTH_FUND_MAIN = 6, // 主线成长基金
|
||||||
GROWTH_FUND_TOWER = 7, // 镇念塔成长基金
|
GROWTH_FUND_MAIN_VIP = 7, // 主线成长基金(高阶)
|
||||||
GROWTH_FUND_MAIN_ELITE = 8, // 精英成长基金
|
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_DAY_INDEX_OVER: { code: 50010, simStr: '心急吃不了热豆腐' },
|
||||||
ACTIVITY_EXPIRE: { code: 50011, simStr: '活动到期,刷新' },
|
ACTIVITY_EXPIRE: { code: 50011, simStr: '活动到期,刷新' },
|
||||||
ACTIVITY_GROWTH_FUND_END: { code: 50012, simStr: '成长基金活动结束' },
|
ACTIVITY_GROWTH_FUND_END: { code: 50012, simStr: '成长基金活动结束' },
|
||||||
|
ACTIVITY_NEED_BUY: { code: 50012, simStr: '成长基金需要购买' },
|
||||||
// GM后台相关状态 60000 - 69999
|
// GM后台相关状态 60000 - 69999
|
||||||
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
|
GM_ERR_PASSWORD: { code: 60001, simStr: '账号或密码错误' },
|
||||||
GM_MISS_API: { code: 60002, simStr: '未找到该接口' },
|
GM_MISS_API: { code: 60002, simStr: '未找到该接口' },
|
||||||
|
|||||||
@@ -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 { ActivityModelType } from '../../db/Activity';
|
||||||
|
import { ActivityBuyRecordsModelType } from '../../db/ActivityBuyRecords';
|
||||||
import { ActivityGrowthFundModelType } from '../../db/ActivityGrowthFund';
|
import { ActivityGrowthFundModelType } from '../../db/ActivityGrowthFund';
|
||||||
import { RewardInter } from '../../pubUtils/interface';
|
import { RewardInter } from '../../pubUtils/interface';
|
||||||
import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util';
|
import { parseGoodStrWithType, parseHeroStrWithType, splitString } from '../../pubUtils/util';
|
||||||
@@ -21,6 +22,7 @@ export class GrowthFundItem {
|
|||||||
isComplete: boolean = false; //是否完成任务
|
isComplete: boolean = false; //是否完成任务
|
||||||
isReceive: boolean = false; //是否领取过奖励
|
isReceive: boolean = false; //是否领取过奖励
|
||||||
|
|
||||||
|
|
||||||
constructor(data: any) {
|
constructor(data: any) {
|
||||||
this.pageIndex = data.pageIndex;
|
this.pageIndex = data.pageIndex;
|
||||||
this.cellIndex = data.cellIndex;
|
this.cellIndex = data.cellIndex;
|
||||||
@@ -61,6 +63,21 @@ export class GrowthFundItem {
|
|||||||
// 成长基金活动数据
|
// 成长基金活动数据
|
||||||
export class GrowthFundData extends ActivityBase {
|
export class GrowthFundData extends ActivityBase {
|
||||||
list: Array<GrowthFundItem> = [];
|
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() {
|
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) {
|
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) {
|
for (let obj of arr) {
|
||||||
this.list.push(new GrowthFundItem(obj))
|
this.list.push(new GrowthFundItem(obj))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user