活动:大额累计充值活动
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
import { Application, BackendSession } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { STATUS, } from '../../../consts';
|
||||
import { getPlayerVipRechargeMoneyData, } from '../../../services/vipRechargeMoneyService';
|
||||
import { VipRechargeMoneyItem } from '../../../domain/activityField/vipRechargeMoneyField';
|
||||
import { addReward, stringToRewardParam } from '../../../services/giftPackageService';
|
||||
import { RewardParam } from '../../../domain/activityField/rewardField';
|
||||
import { ActivityVipRechargeMoneyModel } from '../../../db/ActivityVipRechargeMoney';
|
||||
import { UserOrderModel } from '../../../db/UserOrder';
|
||||
import { dicRMB } from '../../../pubUtils/dictionary/DicRMB';
|
||||
import moment = require('moment');
|
||||
|
||||
|
||||
export default function (app: Application) {
|
||||
return new VipRechargeMoneyHandler(app);
|
||||
}
|
||||
|
||||
export class VipRechargeMoneyHandler {
|
||||
constructor(private app: Application) {
|
||||
}
|
||||
|
||||
/************************vip累计充值奖励****************************/
|
||||
|
||||
/**
|
||||
* @description 获取活动数据
|
||||
* @param {BackendSession} session
|
||||
* @memberof VipRechargeMoneyHandler
|
||||
*/
|
||||
async getVipRechargeMoneyActivity(msg: { activityId: number }, session: BackendSession) {
|
||||
const { activityId } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
|
||||
let playerData = await getPlayerVipRechargeMoneyData(activityId, serverId, roleId);
|
||||
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||
|
||||
return resResult(STATUS.SUCCESS, playerData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取奖励
|
||||
* @param {BackendSession} session
|
||||
* @memberof VipRechargeMoneyHandler
|
||||
*/
|
||||
async getVipRechargeMoneyReward(msg: { activityId: number, id: number }, session: BackendSession) {
|
||||
const { activityId, id } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
const sid = session.get('sid');
|
||||
const roleName = session.get('roleName');
|
||||
const funcs: number[] = session.get('funcs');
|
||||
|
||||
let playerData = await getPlayerVipRechargeMoneyData(activityId, serverId, roleId);
|
||||
if (!playerData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||
|
||||
let item: VipRechargeMoneyItem = playerData.findItem(id);
|
||||
if (!item) {
|
||||
return resResult(STATUS.ACTIVITY_DATA_ERROR);
|
||||
}
|
||||
if (playerData.totalRMB < item.condition) {
|
||||
return resResult(STATUS.ACTIVITY_TASK_UNCOMPLETED);
|
||||
}
|
||||
if (item.receiveCount >= item.countMax) {
|
||||
return resResult(STATUS.ACTIVITY_MAX_COUNT);
|
||||
}
|
||||
|
||||
await ActivityVipRechargeMoneyModel.addRecord(serverId, activityId, roleId, id);
|
||||
|
||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
|
||||
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
|
||||
item.receiveCount += 1;
|
||||
|
||||
return resResult(STATUS.SUCCESS, Object.assign(result, {
|
||||
param: { activityId, id },
|
||||
item: item
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 获取订单记录
|
||||
* @param {BackendSession} session
|
||||
* @memberof VipRechargeMoneyHandler
|
||||
*/
|
||||
async getOrderList(msg: { begin: number, count: number }, session: BackendSession) {
|
||||
const { begin, count } = msg;
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
const sid = session.get('sid');
|
||||
const roleName = session.get('roleName');
|
||||
const funcs: number[] = session.get('funcs');
|
||||
|
||||
if (begin > 0 && count > 0) {
|
||||
let orders = await UserOrderModel.findOrderList(serverId, roleId, begin - 1, count)
|
||||
|
||||
for (let order of orders) {
|
||||
let productInfo = dicRMB.get(order.productID)
|
||||
if (productInfo) {
|
||||
order['message'] = productInfo.message;
|
||||
}
|
||||
order['time'] = moment(order.createdAt).valueOf();
|
||||
delete order.createdAt;
|
||||
delete order.productID;
|
||||
delete order._id;
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { orders });
|
||||
}
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import { makeOrder } from '../../../services/orderService';
|
||||
import { addRechargeMoney } from '../../../services/rechargeMoneyService';
|
||||
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
|
||||
import { ServerlistModel } from '../../../db/Serverlist';
|
||||
import { addVipRechargeMoney } from '../../../services/vipRechargeMoneyService';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new orderHandler(app);
|
||||
@@ -188,6 +189,7 @@ export class orderHandler {
|
||||
}), [{ uid: roleId, sid: sid }]);
|
||||
//活动统计
|
||||
await addRechargeMoney(roleId, serverId, price);
|
||||
await addVipRechargeMoney(roleId, serverId, price)
|
||||
console.log('结算完成', localOrderID)
|
||||
return resResult(STATUS.SUCCESS, result.data);
|
||||
}
|
||||
@@ -257,6 +259,7 @@ export class orderHandler {
|
||||
}), [{ uid: roleId, sid: sid }]);
|
||||
//活动统计
|
||||
await addRechargeMoney(roleId, serverId, price);
|
||||
await addVipRechargeMoney(roleId, serverId, price);
|
||||
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
|
||||
return resResult(STATUS.SUCCESS, result.data);
|
||||
}
|
||||
|
||||
70
game-server/app/services/vipRechargeMoneyService.ts
Normal file
70
game-server/app/services/vipRechargeMoneyService.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
|
||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||
import { ActivityVipRechargeMoneyModel, ActivityVipRechargeMoneyModelType } from '../db/ActivityVipRechargeMoney';
|
||||
import { VipRechargeMoneyData, VipRechargeMoneyItem } from '../domain/activityField/vipRechargeMoneyField';
|
||||
|
||||
import moment = require('moment');
|
||||
import { ServerlistModel } from '../db/Serverlist';
|
||||
|
||||
/**
|
||||
* 获取活动数据
|
||||
*
|
||||
* @param {number} serverId 区Id
|
||||
* @param {number} type 活动类型 ACTIVITY_TYPE
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
|
||||
export async function vipRechargeMoneyActivity(serverId: number, roleId: string) {
|
||||
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
|
||||
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.VIP_RECHARGE_MONEY, new Date())
|
||||
if (activityArray.length == 0) {
|
||||
return null;
|
||||
}
|
||||
let activityData = activityArray[0];
|
||||
let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityData.activityId);
|
||||
let playerData = new VipRechargeMoneyData(activityData);
|
||||
playerData.setPlayerRecords(playerRecord);
|
||||
return playerData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 玩家活动数据
|
||||
*
|
||||
* @param {number} serverId 区Id
|
||||
* @param {number} activityId 活动Id
|
||||
* @param {string} roleId 角色Id
|
||||
*
|
||||
*/
|
||||
export async function getPlayerVipRechargeMoneyData(activityId: number, serverId: number, roleId: string) {
|
||||
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
|
||||
if (!activityData) {
|
||||
return null;
|
||||
}
|
||||
let playerRecord: ActivityVipRechargeMoneyModelType = await ActivityVipRechargeMoneyModel.findData(serverId, roleId, activityId);
|
||||
|
||||
let playerData = new VipRechargeMoneyData(activityData);
|
||||
playerData.setPlayerRecords(playerRecord);
|
||||
return playerData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 统计充值金额
|
||||
*
|
||||
* @param {number} serverId 区Id
|
||||
* @param {string} roleId 角色Id
|
||||
* @param {string} RMB 金额
|
||||
*
|
||||
*/
|
||||
export async function addVipRechargeMoney(roleId: string, serverId: number, RMB: number) {
|
||||
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
|
||||
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.VIP_RECHARGE_MONEY, new Date())
|
||||
if (activityArray.length == 0) {
|
||||
return null;
|
||||
}
|
||||
let activityData = activityArray[0];
|
||||
await ActivityVipRechargeMoneyModel.addRMB(serverId, roleId, activityData.activityId, RMB);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user