活动:根据订单获得活动
This commit is contained in:
@@ -3,8 +3,9 @@ import { aesEncrypt, aesEncryptcfb, resResult } from '../../../pubUtils/util';
|
||||
import { ENCRYPT_IV, ENCRYPT_KEY, STATUS, TASK_TYPE } from '../../../consts';
|
||||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||||
import { ServerlistModel } from '../../../db/Serverlist';
|
||||
import { getActivity, getActivityById } from '../../../services/activity/activityService';
|
||||
import { ActivityModel } from '../../../db/Activity';
|
||||
import { getActivitiesWithOrder, getActivity, getActivityById } from '../../../services/activity/activityService';
|
||||
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
|
||||
import { UserOrderModel } from '../../../db/UserOrder';
|
||||
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
@@ -56,6 +57,30 @@ export class ActivityHandler {
|
||||
return resResult(STATUS.SUCCESS, { playerActivityArray, playerGroupArray });
|
||||
}
|
||||
|
||||
async getActivitiesByOrder(msg: { localOrderID: string }, session: BackendSession) {
|
||||
|
||||
const { localOrderID } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
const guildCode = session.get('guildCode');
|
||||
|
||||
let orderInfo = await UserOrderModel.findOrder(localOrderID);
|
||||
if (!orderInfo || orderInfo.roleId != roleId) {
|
||||
return resResult(STATUS.NO_ORDER);
|
||||
}
|
||||
let activities: ActivityModelType[] = await getActivitiesWithOrder(orderInfo);
|
||||
let result = [];
|
||||
for(let activityData of activities) {
|
||||
if (!activityData) continue;
|
||||
|
||||
let playerActivityData = await getActivity(serverId, roleId, guildCode, activityData.activityId, activityData.type);
|
||||
if(playerActivityData) {
|
||||
result.push(playerActivityData);
|
||||
}
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { activities: result });
|
||||
}
|
||||
|
||||
async debugActivityMemory(msg: {}, session: BackendSession) {
|
||||
const { } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
|
||||
@@ -254,6 +254,6 @@ export class orderHandler {
|
||||
let result = await settleOrder(orderInfo, serverId, sid);
|
||||
orderInfo = await UserOrderModel.success(roleId, localOrderID, JSON.stringify(result));
|
||||
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
|
||||
return resResult(STATUS.SUCCESS, result);
|
||||
return resResult(STATUS.SUCCESS, {...result, localOrderID});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ import { getGuildChannelSid } from '../chatService';
|
||||
import { getGuildPayDataShow } from './guildPayService';
|
||||
import { PopUpShopItemShow } from '../../domain/activityField/popUpShopField';
|
||||
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from '../pushService';
|
||||
import { UserOrderModelType } from '../../db/UserOrder';
|
||||
import { isArray } from 'underscore';
|
||||
|
||||
/**
|
||||
* 获取活动数据
|
||||
@@ -56,6 +58,7 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s
|
||||
case ACTIVITY_TYPE.SIGN_IN://签到 4
|
||||
case ACTIVITY_TYPE.SIGN_IN_VIP://高级签到 5
|
||||
case ACTIVITY_TYPE.NEW_PLAYER_SIGN_IN://新手签到 25
|
||||
case ACTIVITY_TYPE.COMMON_SIGN_IN://通用签到 36
|
||||
{
|
||||
activityData = await getPlayerSignInData(activityId, serverId, roleId);
|
||||
break;
|
||||
@@ -176,11 +179,6 @@ export async function getActivity(serverId: number, roleId: string, guildCode: s
|
||||
activityData = await getPlayerMonopolyData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.COMMON_SIGN_IN://通用签到 36
|
||||
{
|
||||
activityData = await getPlayerSignInData(activityId, serverId, roleId);
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.NEW_HERO_GIFTS://新将好礼(很多红包,用积分兑换一遍结束) 37
|
||||
{
|
||||
activityData = await getPlayerNewHeroGiftsData(activityId, serverId, roleId);
|
||||
@@ -252,6 +250,15 @@ export async function getActivitiesByType(serverId: number, type: number) {
|
||||
return activities.map(transActivityInRemoteToModelType);
|
||||
}
|
||||
|
||||
export async function getActivitiesByTypes(serverId: number, types: number[]) {
|
||||
let result: ActivityModelType[] = [];
|
||||
for(let type of types) {
|
||||
let activities = await getActivitiesByType(serverId, type);
|
||||
if(activities && isArray(activities)) result.push(...activities);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
export async function getActivities() {
|
||||
let serverType = pinus.app.getServerType();
|
||||
if(serverType == 'activity') {
|
||||
@@ -432,4 +439,24 @@ export async function pushActivities(arr: pushActivityInter[], roleId: string, s
|
||||
|
||||
export async function pushActivitiesToGuild(arr: pushActivityInter[], guildCode: string) {
|
||||
if(arr.length > 0) await sendMessageToGuildWithSuc(guildCode, PUSH_ROUTE.ACTIVITY_UPDATE, { activities: arr })
|
||||
}
|
||||
|
||||
export async function getActivitiesWithOrder(orderInfo: UserOrderModelType) {
|
||||
let activities: ActivityModelType[] = [];
|
||||
let curActivity = await getActivityById(orderInfo.activityId);
|
||||
if(curActivity) activities.push(curActivity);
|
||||
|
||||
let activitiesWithSum = await getActivitiesByTypes(orderInfo.serverId, [ACTIVITY_TYPE.FIRST_GIFT, ACTIVITY_TYPE.RECHARGE_MONEY, ACTIVITY_TYPE.VIP_RECHARGE_MONEY, ACTIVITY_TYPE.GUILD_PAY]);
|
||||
if(activitiesWithSum && isArray(activitiesWithSum)) activities.push(...activitiesWithSum);
|
||||
|
||||
if(orderInfo.paramStr) { //大富翁商店结算
|
||||
try {
|
||||
let paramObj = JSON.parse(orderInfo.paramStr);
|
||||
let paramActivity = paramObj.activityId && await getActivityById(paramObj.activityId);
|
||||
if(paramActivity) activities.push(paramActivity);
|
||||
} catch(e) {
|
||||
console.error(e);
|
||||
}
|
||||
}
|
||||
return activities;
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
import moment = require('moment');
|
||||
import { ACTIVITY_TYPE, REFRESH_TIME, SERVER_OPEN_TIME, SIGNIN_VIP_OPEN_LIMIT, STATUS } from '../../consts';
|
||||
import { ActivityModel, ActivityModelType } from '../../db/Activity';
|
||||
import { ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_VIP_OPEN_LIMIT, STATUS } from '../../consts';
|
||||
import { ActivityModelType } from '../../db/Activity';
|
||||
import { ActivitySignInModel, ActivitySignInModelType } from '../../db/ActivitySignIn';
|
||||
import { RoleModel } from '../../db/Role';
|
||||
import { ServerlistModel } from '../../db/Serverlist';
|
||||
import { SignInData } from '../../domain/activityField/signInField';
|
||||
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
|
||||
import { getActivitiesByType, getActivityById } from './activityService';
|
||||
|
||||
@@ -124,7 +124,7 @@ export async function makeOrder(orderInfo: UserOrderModelType, sid: string) {
|
||||
rewardResult = await makeShop(roleId, roleInfo.roleName, sid, orderInfo.serverId, orderInfo.activityId, orderInfo.productID)
|
||||
break;
|
||||
}
|
||||
case ACTIVITY_TYPE.SELF_SERVICE_SHOP://自选商店-购买礼包
|
||||
case ACTIVITY_TYPE.SELF_SERVICE_SHOP://自选商店-购买礼包(糜家商队)
|
||||
{
|
||||
rewardResult = await makeSelfServerShop(roleId, roleInfo.roleName, sid, orderInfo.serverId, orderInfo.activityId, orderInfo.productID)
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user