活动:支付添加推送

This commit is contained in:
qiaoxin
2021-05-27 14:08:54 +08:00
parent c261fdc045
commit 9b80dae800
13 changed files with 206 additions and 116 deletions

View File

@@ -4,10 +4,12 @@ import { ACTIVITY_TYPE, FIRST_GIFT_STATE, STATUS } from '../../../consts';
import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService';
import { signInActivity, signInVIPActivity } from '../../../services/signInService';
import { growthFundActivity } from '../../../services/growthFundService';
import { newPlayerLimitPackageActivity } from '../../../services/limitPackageService';
import { limitPackageActivity, newPlayerLimitPackageActivity } from '../../../services/limitPackageService';
import { growthActivity } from '../../../services/growthService';
import { dailyChallengesActivity } from '../../../services/dailyChallengesService';
import { dailyGiftsActivity } from '../../../services/dailyGiftsService';
import { yuanbaoActivity } from '../../../services/yuanbaoService';
import { monthlyTicketActivity } from '../../../services/monthlyTicketService';
export default function (app: Application) {
return new ActivityHandler(app);
@@ -30,7 +32,7 @@ export class ActivityHandler {
const serverId = session.get('serverId');
let playerActivityArray = [];
//七天乐活动-成长任务
//七天乐活动-成长任务 1 2 3
{
let sevenData = [];
let growthData = await growthActivity(serverId, roleId);
@@ -65,8 +67,98 @@ export class ActivityHandler {
});
}
}
//签到 4
{
let data = await signInActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN,
activityId: data.activityId,
data,
});
}
}
//高级签到 5
{
let data = await signInVIPActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN_VIP,
activityId: data.activityId,
data,
});
}
}
//首冲礼包活动
//成长基金 6
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN,
activityId: data.activityId,
data,
});
}
}
//高阶成长基金 7
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP,
activityId: data.activityId,
data,
});
}
}
//镇念塔成长基金 8
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER,
activityId: data.activityId,
data,
});
}
}
//高阶镇念塔成长基金 9
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP,
activityId: data.activityId,
data,
});
}
}
//精英成长基金 10
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE,
activityId: data.activityId,
data,
});
}
}
//高阶精英成长基金 11
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP,
activityId: data.activityId,
data,
});
}
}
//首冲礼包活动 14
{
let data = await firstGiftActivity(serverId, roleId);
if (data) {
@@ -78,95 +170,7 @@ export class ActivityHandler {
}
}
//签到
{
let data = await signInActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN,
activityId: data.activityId,
data,
});
}
}
//高级签到
{
let data = await signInVIPActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.SIGN_IN_VIP,
activityId: data.activityId,
data,
});
}
}
//成长基金
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN,
activityId: data.activityId,
data,
});
}
}
//高阶成长基金
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP,
activityId: data.activityId,
data,
});
}
}
//镇念塔成长基金
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER,
activityId: data.activityId,
data,
});
}
}
//高阶镇念塔成长基金
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP,
activityId: data.activityId,
data,
});
}
}
//精英成长基金
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE,
activityId: data.activityId,
data,
});
}
}
//高阶精英成长基金
{
let data = await growthFundActivity(ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP, serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP,
activityId: data.activityId,
data,
});
}
}
//新手限定RMB购买礼包
//新手限定RMB购买礼包 15
{
let data = await newPlayerLimitPackageActivity(serverId, roleId);
if (data) {
@@ -177,6 +181,64 @@ export class ActivityHandler {
});
}
}
//每日限购礼包RMB购买礼包 16
{
let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY,
activityId: data.activityId,
data,
});
}
}
//每日限购礼包RMB购买礼包 17
{
let data = await limitPackageActivity(serverId, roleId, ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY,
activityId: data.activityId,
data,
});
}
}
//元宝商店 18
{
let data = await yuanbaoActivity(serverId, roleId);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.YUAN_BAO_SHOP,
activityId: data.activityId,
data,
});
}
}
//月卡1 19
{
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_1);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.MONTHLY_TICKET_1,
activityId: data.activityId,
data,
});
}
}
//月卡2 20
{
let data = await monthlyTicketActivity(serverId, roleId, ACTIVITY_TYPE.MONTHLY_TICKET_2);
if (data) {
playerActivityArray.push({
type: ACTIVITY_TYPE.MONTHLY_TICKET_1,
activityId: data.activityId,
data,
});
}
}
return resResult(STATUS.SUCCESS, { playerActivityArray });
}

View File

@@ -47,7 +47,7 @@ export class LimitPackageHandler {
const roleId = session.get('roleId');
const serverId = session.get('serverId');
let playerData = await limitPackageActivity(serverId, roleId, type);
let playerData = await getPlayerLimitPackageData(activityId, serverId, roleId);
if (!playerData) {
return resResult(STATUS.ACTIVITY_MISSING);
}

View File

@@ -175,8 +175,13 @@ export class orderHandler {
//订单成功
orderInfo = await UserOrderModel.success(roleId, localOrderID);
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid, orderInfo);
//推送
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
data: result,
}), [{ uid: roleId, sid: sid }]);
//活动统计
await addRechargeMoney(roleId, serverId, price);
console.log('结算完成', localOrderID)
@@ -238,6 +243,10 @@ export class orderHandler {
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid, orderInfo);
//推送
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
data: result,
}), [{ uid: roleId, sid: sid }]);
//活动统计
await addRechargeMoney(roleId, serverId, price);
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, roleId:${roleId}, localOrderID:${localOrderID}`)

View File

@@ -74,11 +74,15 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string,
let playerData = new DailyRMBGiftsData(activityData);
let bigGiftProductID = playerData.productID;
if (bigGiftProductID == productID) {//一次性购买7天礼包
return { goods: [], addHeros: [] }
let buyTime = moment(new Date()).startOf('d').toDate()
let endTime = moment(buyTime).add(7, 'd').endOf('d').toDate()
return Object.assign({}, { item: { endTime, receiveCount: 0 } })
} else {
let item = playerData.findProduct(productID);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result
item.isBuy = true;
item.isReceive = true;
return Object.assign(result, { item })
}
}

View File

@@ -28,7 +28,7 @@ export async function newPlayerLimitPackageActivity(serverId: number, roleId: st
}
/**
* 玩家新手玩家限购礼包活动数据
* 每日、每周限购礼包活动数据
*
* @param {number} serverId 区Id
* @param {number} activityId 活动Id

View File

@@ -26,8 +26,10 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty
return null;
}
let activityData = activityArray[0];
let playerData = await getPlayerMonthlyTicketData(activityData.activityId, serverId, roleId);
return playerData
let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId);
let playerData = new MonthlyTicketData(activityData);
playerData.setPlayerRecords(playerRecord);
return playerData;
}
/**
@@ -96,5 +98,5 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string,
let firstReward = playerData.firstReward;
let rewardParamArr: Array<RewardParam> = stringToRewardParam(firstReward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result
return Object.assign(result, { item: { isOpen: true, todayIndex: 1 }, activityId: activityData.activityId })
}

View File

@@ -23,15 +23,10 @@ import { ServerlistModel } from '../db/Serverlist';
*/
export async function makeOrder(localOrderID: string, sid: string, orderInfo: UserOrderModelType) {
// let orderInfo = await UserOrderModel.findOrder(localOrderID);
if (!orderInfo) {
return '查无此订单';
}
//商品价格信息
let productInfo = dicRMB.get(orderInfo.productID)
if (!productInfo) {
return '无效商品';
}
let productType = productInfo.type;//类型
let price = orderInfo.price;//下单时的价格
@@ -40,6 +35,8 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
const roleInfo = await RoleModel.findByRoleId(roleId);
let rewardResult: any = {};
//首冲礼包
{
let { activityGroupId } = await ServerlistModel.findByServerId(orderInfo.serverId);
@@ -53,7 +50,7 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
switch (productType) {
case ACTIVITY_TYPE.SIGN_IN_VIP:
{
let resule = await makeSignInVIP(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
rewardResult = await makeSignInVIP(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE:
@@ -67,28 +64,28 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
}
case ACTIVITY_TYPE.YUAN_BAO_SHOP:
{
let resule = await makeYuanbaoShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
rewardResult = await makeYuanbaoShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.MONTHLY_TICKET_1:
case ACTIVITY_TYPE.MONTHLY_TICKET_2:
{
let resule = await makeMonthlyTicketReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
rewardResult = await makeMonthlyTicketReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.RECHARGE_MONEY:
{
let resule = await makeDailyRMBGiftsReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
rewardResult = await makeDailyRMBGiftsReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.POP_UP_SHOP:
{
let resule = await makePopUpShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
rewardResult = await makePopUpShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
default:
return '未知商品类型';
break;
}
return { goods: [], addHeros: [] }
return rewardResult
}

View File

@@ -84,5 +84,5 @@ export async function makePopUpShopReward(roleId: string, roleName: string, sid:
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result
return Object.assign(result, { item: { isBuy: true }, activityId: activityData.activityId })
}

View File

@@ -93,6 +93,8 @@ export async function makeSignInVIP(roleId: string, roleName: string, sid: strin
let playerData = new SignInData(activityData);
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);
return Object.assign({}, { item: { isVip: true }, activityId: activityData.activityId })
}
//高级签到开启条件

View File

@@ -22,8 +22,10 @@ export async function yuanbaoActivity(serverId: number, roleId: string) {
return null;
}
let activityData = activityArray[0];
let playerData = await getPlayerYuanbaoShopData(activityData.activityId, serverId, roleId);
return playerData
let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityData.activityId, roleId);
let playerData = new YuanBaoShopData(activityData);
playerData.setPlayerRecords(playerRecord);
return playerData;
}
/**
@@ -70,5 +72,6 @@ export async function makeYuanbaoShopReward(roleId: string, roleName: string, si
}
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result
item.buyCount += 1;
return Object.assign(result, { item, activityId: activityData.activityId })
}

View File

@@ -68,6 +68,7 @@ export class GrowthFundItem {
export class GrowthFundData extends ActivityBase {
list: Array<GrowthFundItem> = [];
price: number = 0;//高阶价格
productID: string = '';//商品id
buyRecords: Array<number> = [];//高阶购买记录
//是否是高阶,需要购买
@@ -119,6 +120,7 @@ export class GrowthFundData extends ActivityBase {
public initData(data: string) {
let dataObj = JSON.parse(data);
this.price = dataObj.price;
this.productID = dataObj.productID;
let arr = dataObj.data;
for (let obj of arr) {
this.list.push(new GrowthFundItem(obj))

View File

@@ -15,6 +15,7 @@ export class MonthlyTicketData extends ActivityBase {
days: number = 0;//持续天数
baseReward: string = '';//每天领取的奖励
firstReward: string = '';//首次购买获得的奖励
imageName: string = '';
endTime: number = 0;//结束时间
dayIndex: number = 0;//已经领取了几天
@@ -45,6 +46,12 @@ export class MonthlyTicketData extends ActivityBase {
this.days = dataObj.days;
this.baseReward = dataObj.baseReward;
this.firstReward = dataObj.firstReward;
this.imageName = dataObj.imageName;
this.isOpen = false;
this.todayIndex = 0;
this.dayIndex = 0;
this.endTime = 0;
}
constructor(activityData: ActivityModelType) {

View File

@@ -11,6 +11,7 @@ export class YuanBaoShopItem {
baseReward: string; //购买即可获得的基础奖励
firstReward: string; //首充时,赠送的奖励
extraReward: string; //不是首冲时,赠送的奖励
imageName: string;
buyCount: number = 0; //购买过的次数
@@ -22,6 +23,7 @@ export class YuanBaoShopItem {
this.baseReward = data.baseReward;
this.firstReward = data.firstReward;
this.extraReward = data.extraReward;
this.imageName = data.imageName;
}
}