diff --git a/game-server/app/servers/activity/handler/activityHandler.ts b/game-server/app/servers/activity/handler/activityHandler.ts index 484d2b121..51cfa193e 100644 --- a/game-server/app/servers/activity/handler/activityHandler.ts +++ b/game-server/app/servers/activity/handler/activityHandler.ts @@ -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 }); } diff --git a/game-server/app/servers/activity/handler/limitPackageHandler.ts b/game-server/app/servers/activity/handler/limitPackageHandler.ts index 9a8a32055..c3e9050ea 100644 --- a/game-server/app/servers/activity/handler/limitPackageHandler.ts +++ b/game-server/app/servers/activity/handler/limitPackageHandler.ts @@ -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); } diff --git a/game-server/app/servers/order/handler/orderHandler.ts b/game-server/app/servers/order/handler/orderHandler.ts index 4d54b6bf1..5fd6fb919 100644 --- a/game-server/app/servers/order/handler/orderHandler.ts +++ b/game-server/app/servers/order/handler/orderHandler.ts @@ -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}`) diff --git a/game-server/app/services/dailyRMBGiftsService.ts b/game-server/app/services/dailyRMBGiftsService.ts index fc341c0e6..de94ffbe5 100644 --- a/game-server/app/services/dailyRMBGiftsService.ts +++ b/game-server/app/services/dailyRMBGiftsService.ts @@ -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 = 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 }) } } diff --git a/game-server/app/services/limitPackageService.ts b/game-server/app/services/limitPackageService.ts index 35d41ebe6..f40d9bb6b 100644 --- a/game-server/app/services/limitPackageService.ts +++ b/game-server/app/services/limitPackageService.ts @@ -28,7 +28,7 @@ export async function newPlayerLimitPackageActivity(serverId: number, roleId: st } /** - * 玩家新手玩家限购礼包活动数据 + * 每日、每周限购礼包活动数据 * * @param {number} serverId 区Id * @param {number} activityId 活动Id diff --git a/game-server/app/services/monthlyTicketService.ts b/game-server/app/services/monthlyTicketService.ts index a6b244e61..a9b6aa303 100644 --- a/game-server/app/services/monthlyTicketService.ts +++ b/game-server/app/services/monthlyTicketService.ts @@ -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 = 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 }) } diff --git a/game-server/app/services/orderService.ts b/game-server/app/services/orderService.ts index 1e93ca71e..71881d7ff 100644 --- a/game-server/app/services/orderService.ts +++ b/game-server/app/services/orderService.ts @@ -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 } \ No newline at end of file diff --git a/game-server/app/services/popUpShopService.ts b/game-server/app/services/popUpShopService.ts index bbee92f1d..71050adae 100644 --- a/game-server/app/services/popUpShopService.ts +++ b/game-server/app/services/popUpShopService.ts @@ -84,5 +84,5 @@ export async function makePopUpShopReward(roleId: string, roleName: string, sid: let rewardParamArr: Array = 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 }) } \ No newline at end of file diff --git a/game-server/app/services/signInService.ts b/game-server/app/services/signInService.ts index 3b828d65f..972577f2d 100644 --- a/game-server/app/services/signInService.ts +++ b/game-server/app/services/signInService.ts @@ -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 }) } //高级签到开启条件 diff --git a/game-server/app/services/yuanbaoService.ts b/game-server/app/services/yuanbaoService.ts index c8ddaeb75..965b78816 100644 --- a/game-server/app/services/yuanbaoService.ts +++ b/game-server/app/services/yuanbaoService.ts @@ -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 }) } diff --git a/shared/domain/activityField/growthFundField.ts b/shared/domain/activityField/growthFundField.ts index 37729b125..ddc108ddf 100644 --- a/shared/domain/activityField/growthFundField.ts +++ b/shared/domain/activityField/growthFundField.ts @@ -68,6 +68,7 @@ export class GrowthFundItem { export class GrowthFundData extends ActivityBase { list: Array = []; price: number = 0;//高阶价格 + productID: string = '';//商品id buyRecords: Array = [];//高阶购买记录 //是否是高阶,需要购买 @@ -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)) diff --git a/shared/domain/activityField/monthlyTicketField.ts b/shared/domain/activityField/monthlyTicketField.ts index 3734d07af..45498076e 100644 --- a/shared/domain/activityField/monthlyTicketField.ts +++ b/shared/domain/activityField/monthlyTicketField.ts @@ -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) { diff --git a/shared/domain/activityField/yuanBaoShopField.ts b/shared/domain/activityField/yuanBaoShopField.ts index 64b74680d..81e1db170 100644 --- a/shared/domain/activityField/yuanBaoShopField.ts +++ b/shared/domain/activityField/yuanBaoShopField.ts @@ -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; } }