虚拟充值
This commit is contained in:
@@ -7,8 +7,11 @@ import { dicRMB } from '../../../pubUtils/dictionary/DicRMB';
|
|||||||
import { getActivityById } from '../../../services/activity/activityService';
|
import { getActivityById } from '../../../services/activity/activityService';
|
||||||
import { UserOrderModel } from '../../../db/UserOrder';
|
import { UserOrderModel } from '../../../db/UserOrder';
|
||||||
import { makeOrder, settleOrder, settleOrderAli, settleOrderWx } from '../../../services/orderService';
|
import { makeOrder, settleOrder, settleOrderAli, settleOrderWx } from '../../../services/orderService';
|
||||||
import { getActivityProducts } from '../../../services/gmService';
|
import { getActivityProducts, getParamStr } from '../../../services/gmService';
|
||||||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||||||
|
import { Receiver } from '../../../db/GMMail';
|
||||||
|
import { getRoleOnlineInfo } from '../../../services/redisService';
|
||||||
|
import { RoleModel } from '../../../db/Role';
|
||||||
|
|
||||||
export interface Cascader {
|
export interface Cascader {
|
||||||
value: number|string;
|
value: number|string;
|
||||||
@@ -57,31 +60,15 @@ export class GmOrderHandler {
|
|||||||
return resResult(STATUS.SUCCESS, result);
|
return resResult(STATUS.SUCCESS, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
getParamStr(beginTimeStamp: number, monopolyActivityId: number) {
|
|
||||||
let param = {};
|
|
||||||
if(beginTimeStamp) {
|
|
||||||
param['beginTimeStamp'] = beginTimeStamp;
|
|
||||||
}
|
|
||||||
if(monopolyActivityId) {
|
|
||||||
param['monopolyActivityId'] = monopolyActivityId;
|
|
||||||
}
|
|
||||||
return JSON.stringify(param);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 虚拟充值
|
* @description 虚拟充值
|
||||||
* @param {{productID:string, magicWord:string, paramStr: string }} msg
|
|
||||||
* @param {BackendSession} session
|
* @param {BackendSession} session
|
||||||
* @memberof orderHandler
|
* @memberof orderHandler
|
||||||
*/
|
*/
|
||||||
async applyOrder(msg: { productID: string, activityId: number, beginTimeStamp: number, monopolyActivityId: number }, session: BackendSession) {
|
async applyOrder(msg: { serverId: number, activityId: (number|string)[], receiver: Receiver[] }, session: BackendSession) {
|
||||||
const { productID, activityId, beginTimeStamp, monopolyActivityId } = msg;
|
const { activityId: activityIds, receiver } = msg;
|
||||||
|
let activityId = <number>activityIds[1];
|
||||||
const roleId = session.get('roleId');
|
let productID = <string>activityIds[2];
|
||||||
const serverId = session.get('serverId');
|
|
||||||
const sid = session.get('sid');
|
|
||||||
const roleName = session.get('roleName');
|
|
||||||
|
|
||||||
|
|
||||||
let payType = PAY_TYPE.TEST
|
let payType = PAY_TYPE.TEST
|
||||||
//如果有特殊情况,activityId可为0
|
//如果有特殊情况,activityId可为0
|
||||||
@@ -105,15 +92,34 @@ export class GmOrderHandler {
|
|||||||
|
|
||||||
let activityData = await getActivityById(activityId);
|
let activityData = await getActivityById(activityId);
|
||||||
if (!activityData) return resResult(STATUS.ACTIVITY_MISSING);
|
if (!activityData) return resResult(STATUS.ACTIVITY_MISSING);
|
||||||
let orderInfo = await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, this.getParamStr(beginTimeStamp, monopolyActivityId), message);
|
|
||||||
|
|
||||||
//订单成功
|
let results = [];
|
||||||
if(!orderInfo) {
|
for(let { roleId, serverId } of receiver) {
|
||||||
return resResult(STATUS.NO_ORDER);
|
let role = await RoleModel.findByRoleId(roleId);
|
||||||
|
if(!role && role.serverId != serverId) {
|
||||||
|
results.push(resResult(STATUS.ROLE_NOT_FOUND));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let paramStr = await getParamStr(activityData, productID, role);
|
||||||
|
let orderInfo = await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, paramStr, message);
|
||||||
|
|
||||||
|
//订单成功
|
||||||
|
if(!orderInfo) {
|
||||||
|
results.push(resResult(STATUS.NO_ORDER));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let onlineUser = await getRoleOnlineInfo(roleId);
|
||||||
|
let result = await settleOrder(orderInfo, serverId, onlineUser?.sid);
|
||||||
|
orderInfo = await UserOrderModel.success(roleId, localOrderID, JSON.stringify(result));
|
||||||
|
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
|
||||||
|
results.push(resResult(STATUS.SUCCESS));
|
||||||
|
}
|
||||||
|
|
||||||
|
let findResultErrCode = results.find(cur => cur.code != 0);
|
||||||
|
if(!findResultErrCode) {
|
||||||
|
return resResult(STATUS.SUCCESS);
|
||||||
|
} else {
|
||||||
|
return findResultErrCode;
|
||||||
}
|
}
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ import { SignInData } from "../domain/activityField/signInField";
|
|||||||
import { RegionModel, RegionType } from "../db/Region";
|
import { RegionModel, RegionType } from "../db/Region";
|
||||||
import { GMMail as StategyMail } from "../db/ServerStategy";
|
import { GMMail as StategyMail } from "../db/ServerStategy";
|
||||||
import { uniq } from "underscore";
|
import { uniq } from "underscore";
|
||||||
import { ActivityModelType } from "../db/Activity";
|
import { ActivityModel, ActivityModelType } from "../db/Activity";
|
||||||
import { dicRMB } from "../pubUtils/dictionary/DicRMB";
|
import { dicRMB } from "../pubUtils/dictionary/DicRMB";
|
||||||
import { LimitShopData } from "../domain/activityField/limitShopField";
|
import { LimitShopData } from "../domain/activityField/limitShopField";
|
||||||
import { YuanBaoShopData } from "../domain/activityField/yuanBaoShopField";
|
import { YuanBaoShopData } from "../domain/activityField/yuanBaoShopField";
|
||||||
@@ -26,6 +26,9 @@ import { PopUpShopData } from "../domain/activityField/popUpShopField";
|
|||||||
import { GrowthFundData } from "../domain/activityField/growthFundField";
|
import { GrowthFundData } from "../domain/activityField/growthFundField";
|
||||||
import { TreasureHuntData } from "../domain/activityField/treasureHuntField";
|
import { TreasureHuntData } from "../domain/activityField/treasureHuntField";
|
||||||
import { RefreshShopData } from "../domain/activityField/refreshShopField";
|
import { RefreshShopData } from "../domain/activityField/refreshShopField";
|
||||||
|
import { RoleType } from "../db/Role";
|
||||||
|
import { MonopolyData } from "../domain/activityField/monopolyField";
|
||||||
|
import { ActivityPopUpShopModel } from "../db/ActivityPopUpShop";
|
||||||
|
|
||||||
// —————————————— 跑马灯 —————————————— //
|
// —————————————— 跑马灯 —————————————— //
|
||||||
// 初始
|
// 初始
|
||||||
@@ -246,8 +249,13 @@ export function getActivityProducts(activity: ActivityModelType) {
|
|||||||
}
|
}
|
||||||
case ACTIVITY_TYPE.POP_UP_SHOP://弹出礼包
|
case ACTIVITY_TYPE.POP_UP_SHOP://弹出礼包
|
||||||
{
|
{
|
||||||
let data = new PopUpShopData(activity, 0);
|
let products: { label: string, value: string }[] = [];
|
||||||
return [getDicRMB(data.productID)];
|
let allTaskData: any[] = JSON.parse(activity.data);
|
||||||
|
for(let task of allTaskData) {
|
||||||
|
let data = new PopUpShopData(task, activity.activityId);
|
||||||
|
products.push(getDicRMB(data.productID))
|
||||||
|
}
|
||||||
|
return products;
|
||||||
}
|
}
|
||||||
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: //主线成长基金(高阶)
|
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: //主线成长基金(高阶)
|
||||||
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP://镇念塔成长基金(高阶)
|
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP://镇念塔成长基金(高阶)
|
||||||
@@ -281,3 +289,34 @@ export function getActivityProducts(activity: ActivityModelType) {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getParamStr(activity: ActivityModelType, productID: string, role: RoleType) {
|
||||||
|
let param = {};
|
||||||
|
switch(activity.type) {
|
||||||
|
case ACTIVITY_TYPE.POP_UP_SHOP:
|
||||||
|
let allTaskData: any[] = JSON.parse(activity.data);
|
||||||
|
let task = allTaskData.find(cur => cur.productID == productID);
|
||||||
|
if(!task) break;
|
||||||
|
let beginTime = new Date();
|
||||||
|
let endTime = moment(new Date()).add(task.duration, 'h').toDate();
|
||||||
|
let playerRecord = await ActivityPopUpShopModel.addTaskPushMessage(role.serverId, activity.activityId, role.roleId, task.id, task.taskType, task.condition, beginTime, endTime);
|
||||||
|
param['beginTimeStamp'] = playerRecord.beginTime;
|
||||||
|
break;
|
||||||
|
case ACTIVITY_TYPE.REFRESH_SHOP:
|
||||||
|
let { activityGroupId } = await ServerlistModel.findByServerId(role.serverId);
|
||||||
|
let monopolyActivitys = await ActivityModel.findActivityByType(activityGroupId, ACTIVITY_TYPE.MONOPOLY, 1);
|
||||||
|
let parentActivity = monopolyActivitys.find(activity => {
|
||||||
|
let data = new MonopolyData(activity, 0);
|
||||||
|
let curShop = data.list.find(land => { // 找到关联活动
|
||||||
|
return land.shopActivityId == activity.activityId;
|
||||||
|
});
|
||||||
|
return !!curShop;
|
||||||
|
});
|
||||||
|
|
||||||
|
if(parentActivity) {
|
||||||
|
param['monopolyActivityId'] = parentActivity.activityId;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return JSON.stringify(param);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user