活动:支付添加推送

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
@@ -4,10 +4,12 @@ import { ACTIVITY_TYPE, FIRST_GIFT_STATE, STATUS } from '../../../consts';
import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService'; import { firstGiftActivity, getPlayerFirstGiftData } from '../../../services/firstGiftService';
import { signInActivity, signInVIPActivity } from '../../../services/signInService'; import { signInActivity, signInVIPActivity } from '../../../services/signInService';
import { growthFundActivity } from '../../../services/growthFundService'; import { growthFundActivity } from '../../../services/growthFundService';
import { newPlayerLimitPackageActivity } from '../../../services/limitPackageService'; import { limitPackageActivity, newPlayerLimitPackageActivity } from '../../../services/limitPackageService';
import { growthActivity } from '../../../services/growthService'; import { growthActivity } from '../../../services/growthService';
import { dailyChallengesActivity } from '../../../services/dailyChallengesService'; import { dailyChallengesActivity } from '../../../services/dailyChallengesService';
import { dailyGiftsActivity } from '../../../services/dailyGiftsService'; import { dailyGiftsActivity } from '../../../services/dailyGiftsService';
import { yuanbaoActivity } from '../../../services/yuanbaoService';
import { monthlyTicketActivity } from '../../../services/monthlyTicketService';
export default function (app: Application) { export default function (app: Application) {
return new ActivityHandler(app); return new ActivityHandler(app);
@@ -30,7 +32,7 @@ export class ActivityHandler {
const serverId = session.get('serverId'); const serverId = session.get('serverId');
let playerActivityArray = []; let playerActivityArray = [];
//七天乐活动-成长任务 //七天乐活动-成长任务 1 2 3
{ {
let sevenData = []; let sevenData = [];
let growthData = await growthActivity(serverId, roleId); 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); let data = await firstGiftActivity(serverId, roleId);
if (data) { if (data) {
@@ -78,95 +170,7 @@ export class ActivityHandler {
} }
} }
//签到 //新手限定RMB购买礼包 15
{
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购买礼包
{ {
let data = await newPlayerLimitPackageActivity(serverId, roleId); let data = await newPlayerLimitPackageActivity(serverId, roleId);
if (data) { 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 }); return resResult(STATUS.SUCCESS, { playerActivityArray });
} }
@@ -47,7 +47,7 @@ export class LimitPackageHandler {
const roleId = session.get('roleId'); const roleId = session.get('roleId');
const serverId = session.get('serverId'); const serverId = session.get('serverId');
let playerData = await limitPackageActivity(serverId, roleId, type); let playerData = await getPlayerLimitPackageData(activityId, serverId, roleId);
if (!playerData) { if (!playerData) {
return resResult(STATUS.ACTIVITY_MISSING); return resResult(STATUS.ACTIVITY_MISSING);
} }
@@ -175,8 +175,13 @@ export class orderHandler {
//订单成功 //订单成功
orderInfo = await UserOrderModel.success(roleId, localOrderID); orderInfo = await UserOrderModel.success(roleId, localOrderID);
if (orderInfo) { if (orderInfo) {
//结算奖励 //结算奖励
let result = await makeOrder(localOrderID, sid, 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); await addRechargeMoney(roleId, serverId, price);
console.log('结算完成', localOrderID) console.log('结算完成', localOrderID)
@@ -238,6 +243,10 @@ export class orderHandler {
if (orderInfo) { if (orderInfo) {
//结算奖励 //结算奖励
let result = await makeOrder(localOrderID, sid, 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); await addRechargeMoney(roleId, serverId, price);
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, roleId:${roleId}, localOrderID:${localOrderID}`) console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, roleId:${roleId}, localOrderID:${localOrderID}`)
@@ -74,11 +74,15 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string,
let playerData = new DailyRMBGiftsData(activityData); let playerData = new DailyRMBGiftsData(activityData);
let bigGiftProductID = playerData.productID; let bigGiftProductID = playerData.productID;
if (bigGiftProductID == productID) {//一次性购买7天礼包 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 { } else {
let item = playerData.findProduct(productID); let item = playerData.findProduct(productID);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward); let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr) let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result item.isBuy = true;
item.isReceive = true;
return Object.assign(result, { item })
} }
} }
@@ -28,7 +28,7 @@ export async function newPlayerLimitPackageActivity(serverId: number, roleId: st
} }
/** /**
* 玩家新手玩家限购礼包活动数据 * 每日、每周限购礼包活动数据
* *
* @param {number} serverId 区Id * @param {number} serverId 区Id
* @param {number} activityId 活动Id * @param {number} activityId 活动Id
@@ -26,8 +26,10 @@ export async function monthlyTicketActivity(serverId: number, roleId: string, ty
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let playerData = await getPlayerMonthlyTicketData(activityData.activityId, serverId, roleId); let playerRecord: ActivityMonthlyTicketModelType = await ActivityMonthlyTicketModel.findMonthlyTicket(serverId, roleId, activityData.activityId);
return playerData 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 firstReward = playerData.firstReward;
let rewardParamArr: Array<RewardParam> = stringToRewardParam(firstReward); let rewardParamArr: Array<RewardParam> = stringToRewardParam(firstReward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr) let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result return Object.assign(result, { item: { isOpen: true, todayIndex: 1 }, activityId: activityData.activityId })
} }
+10 -13
View File
@@ -23,15 +23,10 @@ import { ServerlistModel } from '../db/Serverlist';
*/ */
export async function makeOrder(localOrderID: string, sid: string, orderInfo: UserOrderModelType) { export async function makeOrder(localOrderID: string, sid: string, orderInfo: UserOrderModelType) {
// let orderInfo = await UserOrderModel.findOrder(localOrderID); // let orderInfo = await UserOrderModel.findOrder(localOrderID);
if (!orderInfo) {
return '查无此订单';
}
//商品价格信息 //商品价格信息
let productInfo = dicRMB.get(orderInfo.productID) let productInfo = dicRMB.get(orderInfo.productID)
if (!productInfo) {
return '无效商品';
}
let productType = productInfo.type;//类型 let productType = productInfo.type;//类型
let price = orderInfo.price;//下单时的价格 let price = orderInfo.price;//下单时的价格
@@ -40,6 +35,8 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
const roleInfo = await RoleModel.findByRoleId(roleId); const roleInfo = await RoleModel.findByRoleId(roleId);
let rewardResult: any = {};
//首冲礼包 //首冲礼包
{ {
let { activityGroupId } = await ServerlistModel.findByServerId(orderInfo.serverId); let { activityGroupId } = await ServerlistModel.findByServerId(orderInfo.serverId);
@@ -53,7 +50,7 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
switch (productType) { switch (productType) {
case ACTIVITY_TYPE.SIGN_IN_VIP: 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; break;
} }
case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE: 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: 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; break;
} }
case ACTIVITY_TYPE.MONTHLY_TICKET_1: case ACTIVITY_TYPE.MONTHLY_TICKET_1:
case ACTIVITY_TYPE.MONTHLY_TICKET_2: 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; break;
} }
case ACTIVITY_TYPE.RECHARGE_MONEY: 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; break;
} }
case ACTIVITY_TYPE.POP_UP_SHOP: 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; break;
} }
default: default:
return '未知商品类型'; break;
} }
return { goods: [], addHeros: [] } return rewardResult
} }
+1 -1
View File
@@ -84,5 +84,5 @@ export async function makePopUpShopReward(roleId: string, roleName: string, sid:
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward); let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr) let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result return Object.assign(result, { item: { isBuy: true }, activityId: activityData.activityId })
} }
@@ -93,6 +93,8 @@ export async function makeSignInVIP(roleId: string, roleName: string, sid: strin
let playerData = new SignInData(activityData); let playerData = new SignInData(activityData);
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex); await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);
return Object.assign({}, { item: { isVip: true }, activityId: activityData.activityId })
} }
//高级签到开启条件 //高级签到开启条件
+6 -3
View File
@@ -22,8 +22,10 @@ export async function yuanbaoActivity(serverId: number, roleId: string) {
return null; return null;
} }
let activityData = activityArray[0]; let activityData = activityArray[0];
let playerData = await getPlayerYuanbaoShopData(activityData.activityId, serverId, roleId); let playerRecord: UserOrderModelType[] = await UserOrderModel.findOrderByActivityID(activityData.activityId, roleId);
return playerData 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) let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return result item.buyCount += 1;
return Object.assign(result, { item, activityId: activityData.activityId })
} }
@@ -68,6 +68,7 @@ export class GrowthFundItem {
export class GrowthFundData extends ActivityBase { export class GrowthFundData extends ActivityBase {
list: Array<GrowthFundItem> = []; list: Array<GrowthFundItem> = [];
price: number = 0;//高阶价格 price: number = 0;//高阶价格
productID: string = '';//商品id
buyRecords: Array<number> = [];//高阶购买记录 buyRecords: Array<number> = [];//高阶购买记录
//是否是高阶,需要购买 //是否是高阶,需要购买
@@ -119,6 +120,7 @@ export class GrowthFundData extends ActivityBase {
public initData(data: string) { public initData(data: string) {
let dataObj = JSON.parse(data); let dataObj = JSON.parse(data);
this.price = dataObj.price; this.price = dataObj.price;
this.productID = dataObj.productID;
let arr = dataObj.data; 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))
@@ -15,6 +15,7 @@ export class MonthlyTicketData extends ActivityBase {
days: number = 0;//持续天数 days: number = 0;//持续天数
baseReward: string = '';//每天领取的奖励 baseReward: string = '';//每天领取的奖励
firstReward: string = '';//首次购买获得的奖励 firstReward: string = '';//首次购买获得的奖励
imageName: string = '';
endTime: number = 0;//结束时间 endTime: number = 0;//结束时间
dayIndex: number = 0;//已经领取了几天 dayIndex: number = 0;//已经领取了几天
@@ -45,6 +46,12 @@ export class MonthlyTicketData extends ActivityBase {
this.days = dataObj.days; this.days = dataObj.days;
this.baseReward = dataObj.baseReward; this.baseReward = dataObj.baseReward;
this.firstReward = dataObj.firstReward; this.firstReward = dataObj.firstReward;
this.imageName = dataObj.imageName;
this.isOpen = false;
this.todayIndex = 0;
this.dayIndex = 0;
this.endTime = 0;
} }
constructor(activityData: ActivityModelType) { constructor(activityData: ActivityModelType) {
@@ -11,6 +11,7 @@ export class YuanBaoShopItem {
baseReward: string; //购买即可获得的基础奖励 baseReward: string; //购买即可获得的基础奖励
firstReward: string; //首充时,赠送的奖励 firstReward: string; //首充时,赠送的奖励
extraReward: string; //不是首冲时,赠送的奖励 extraReward: string; //不是首冲时,赠送的奖励
imageName: string;
buyCount: number = 0; //购买过的次数 buyCount: number = 0; //购买过的次数
@@ -22,6 +23,7 @@ export class YuanBaoShopItem {
this.baseReward = data.baseReward; this.baseReward = data.baseReward;
this.firstReward = data.firstReward; this.firstReward = data.firstReward;
this.extraReward = data.extraReward; this.extraReward = data.extraReward;
this.imageName = data.imageName;
} }
} }