活动:军团付费
This commit is contained in:
@@ -37,6 +37,7 @@ import { getTimeLimitRankDataShow } from './timeLimitRankService';
|
||||
import { ActivityTaskPointModel } from '../../db/ActivityTaskPoint';
|
||||
import { getRoleOnlineInfo } from '../redisService';
|
||||
import { addTaskPassPoint } from './taskPassService';
|
||||
import { getGuildChannelSid } from '../chatService';
|
||||
|
||||
/**
|
||||
* 获取活动数据
|
||||
@@ -46,7 +47,7 @@ import { addTaskPassPoint } from './taskPassService';
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
export async function getActivity(serverId: number, roleId: string, activityId: number, activityType: number) {
|
||||
export async function getActivity(serverId: number, roleId: string, guildCode: string, activityId: number, activityType: number) {
|
||||
let activityData = null;
|
||||
switch (activityType) {
|
||||
case ACTIVITY_TYPE.SIGN_IN://签到 4
|
||||
@@ -200,6 +201,10 @@ export async function getActivity(serverId: number, roleId: string, activityId:
|
||||
activityData = await getTimeLimitRankDataShow(activityId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.GUILD_PAY:
|
||||
{
|
||||
|
||||
}
|
||||
default: {
|
||||
console.log('未知活动类型.........', activityType)
|
||||
break;
|
||||
@@ -357,6 +362,8 @@ export async function addActvityTaskPoint(type: number, id: number, session: Bac
|
||||
interface pushActivityParamInter {
|
||||
ticketCnt?: number; // 木签活动的签数(type21)
|
||||
totalPoint?: number; // 新将好礼(type37)和战令(type42)更新后的积分
|
||||
payMemberCnt?: number; // 军团充值活动,你的军团充值的人数
|
||||
payMember?: string; // 军团充值活动,充值人员名字,添加到payRecord里面
|
||||
}
|
||||
|
||||
export interface pushActivityInter {
|
||||
@@ -374,9 +381,23 @@ export async function pushActivities(arr: pushActivityInter[], roleId: string, s
|
||||
let onlineUser = await getRoleOnlineInfo(roleId);
|
||||
sid = onlineUser.sid;
|
||||
}
|
||||
pinus.app.get('channelService').pushMessageByUids('onActivityUpdate',
|
||||
resResult(STATUS.SUCCESS, {
|
||||
activities: arr
|
||||
}),
|
||||
[{ uid: roleId, sid }]);
|
||||
if(!!sid && arr.length > 0) {
|
||||
pinus.app.get('channelService').pushMessageByUids('onActivityUpdate',
|
||||
resResult(STATUS.SUCCESS, {
|
||||
activities: arr
|
||||
}),
|
||||
[{ uid: roleId, sid }]);
|
||||
}
|
||||
}
|
||||
|
||||
export async function pushActivitiesToGuild(arr: pushActivityInter[], guildCode: string) {
|
||||
let chatSid = await getGuildChannelSid(guildCode);
|
||||
console.log('####', chatSid, arr)
|
||||
if(!!chatSid && arr.length > 0) {
|
||||
pinus.app.rpc.chat.guildRemote.sendMailToGuild.toServer(chatSid, guildCode, 'onActivityUpdate',
|
||||
resResult(STATUS.SUCCESS, {
|
||||
activities: arr
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
import { ACTIVITY_TYPE } from "../../consts";
|
||||
import { ActivityGuildPayModel } from "../../db/ActivityGuildPay";
|
||||
import { RoleType } from "../../db/Role";
|
||||
import { GuildPayData } from "../../domain/activityField/guildPay";
|
||||
import { getActivitiesByType, getActivityById, pushActivitiesToGuild, pushActivityInter } from "./activityService";
|
||||
import { ServerlistModel } from '../../db/Serverlist';
|
||||
import { ActivityGuildPayRecordModel } from "../../db/ActivityGuildPayRecord";
|
||||
|
||||
|
||||
/**
|
||||
* 玩家活动数据
|
||||
*
|
||||
* @param {number} serverId 区Id
|
||||
* @param {number} activityId 活动Id
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
export async function getGuildPayData(serverId: number, activityId: number, roleId: string, guildCode: string) {
|
||||
let activityData = await getActivityById(activityId);
|
||||
let { openTime } = await ServerlistModel.findByServerId(serverId);
|
||||
|
||||
let playerData = new GuildPayData(activityData, 0, openTime * 1000);
|
||||
let receiveRecord = await ActivityGuildPayRecordModel.findData(serverId, activityId, playerData.roundIndex, roleId);
|
||||
playerData.setReceiveRecord(receiveRecord);
|
||||
if(guildCode) {
|
||||
let guildRecord = await ActivityGuildPayModel.findData(serverId, activityId, playerData.roundIndex, guildCode);
|
||||
playerData.setGuildRecord(guildRecord);
|
||||
}
|
||||
|
||||
return playerData;
|
||||
}
|
||||
|
||||
export async function getGuildPayDataShow(serverId: number, activityId: number, roleId: string, guildCode: string) {
|
||||
let playerData = await getGuildPayData(serverId, activityId, roleId, guildCode);
|
||||
if(playerData && playerData.canShow && playerData.canShow()) {
|
||||
return playerData.getShowResult();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
export async function addGuildPay(role: RoleType, price: number) {
|
||||
let { hasGuild, roleId, roleName, serverId, guildCode } = role;
|
||||
if(hasGuild) { // 向全军团推送充值的人
|
||||
let { openTime } = await ServerlistModel.findByServerId(serverId);
|
||||
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.GUILD_PAY);
|
||||
let pushResult: pushActivityInter[] = [];
|
||||
for(let activityData of activities) {
|
||||
let { activityId, type: activityType } = activityData;
|
||||
let obj = new GuildPayData(activityData, 0, openTime * 1000);
|
||||
|
||||
let { isNew, result } = await ActivityGuildPayModel.addRecord(serverId, activityId, obj.roundIndex, guildCode, {
|
||||
roleId, roleName, price
|
||||
});
|
||||
if(isNew) {
|
||||
let { memberRecord } = result;
|
||||
pushResult.push({ activityId, activityType, param: { payMember: roleName, payMemberCnt: memberRecord.length } });
|
||||
}
|
||||
}
|
||||
await pushActivitiesToGuild(pushResult, guildCode);
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import { reportTAEvent, reportTAUserSet } from './sdkService';
|
||||
import { savePayLog } from '../pubUtils/logUtil';
|
||||
import { recordFirstGift } from './activity/firstGiftService';
|
||||
import { makeTaskPass } from './activity/taskPassService';
|
||||
import { addGuildPay } from './activity/guildPayService';
|
||||
|
||||
|
||||
/**
|
||||
@@ -151,7 +152,7 @@ export async function makeOrder(orderInfo: UserOrderModelType, sid: string) {
|
||||
totalPay: roleInfo.totalPay
|
||||
}), [{ uid: roleId, sid }]);
|
||||
|
||||
return rewardResult
|
||||
return {...rewardResult, roleInfo}
|
||||
}
|
||||
|
||||
export async function settleOrder(order: UserOrderModelType, serverId: number, sid?: string) {
|
||||
@@ -180,6 +181,7 @@ export async function settleOrder(order: UserOrderModelType, serverId: number, s
|
||||
//活动统计
|
||||
addRechargeMoney(order.roleId, serverId, order.price);
|
||||
addVipRechargeMoney(order.roleId, serverId, order.price);
|
||||
addGuildPay(result.roleInfo, order.price)
|
||||
//成长任务
|
||||
await checkActivityTask(serverId, sid, order.roleId, TASK_TYPE.ACTIVITY_RMB, order.price, { activityId: order.activityId });
|
||||
if(order.payType != PAY_TYPE.TEST) {
|
||||
|
||||
Reference in New Issue
Block a user