后台:虚拟充值
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
import { Application, BackendSession, pinus } from 'pinus';
|
||||
import { genCode, getRandSingleEelm, resResult } from '../../../pubUtils/util';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { PAY_TYPE } from '../../../consts';
|
||||
import _ = require('underscore');
|
||||
import { dicRMB } from '../../../pubUtils/dictionary/DicRMB';
|
||||
import { getActivityById } from '../../../services/activity/activityService';
|
||||
import { UserOrderModel } from '../../../db/UserOrder';
|
||||
import { makeOrder, settleOrder, settleOrderAli, settleOrderWx } from '../../../services/orderService';
|
||||
import { getActivityProducts } from '../../../services/gmService';
|
||||
import { ActivityGroupModel } from '../../../db/ActivityGroup';
|
||||
|
||||
export interface Cascader {
|
||||
value: number|string;
|
||||
label: number|string;
|
||||
children?: Cascader[];
|
||||
}
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GmOrderHandler(app);
|
||||
}
|
||||
|
||||
export class GmOrderHandler {
|
||||
constructor(private app: Application) {
|
||||
}
|
||||
|
||||
async getActivitiesCanBuy(msg: { serverId: number }, session: BackendSession) {
|
||||
const { serverId } = msg;
|
||||
|
||||
let groups = await ActivityGroupModel.findByServerId(serverId);
|
||||
let result: Cascader[] = [];
|
||||
for (let groupData of groups) {
|
||||
let activities: Cascader[] = [];
|
||||
for (let activityId of groupData.activities) {
|
||||
let activityData = await getActivityById(activityId);
|
||||
let products = getActivityProducts(activityData);
|
||||
if(products) {
|
||||
let children = products.filter(cur => !!cur);
|
||||
if(children.length > 0) {
|
||||
activities.push({
|
||||
value: activityData.activityId,
|
||||
label: activityData.name,
|
||||
children
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if(activities.length > 0) {
|
||||
result.push({
|
||||
value: groupData.groupId,
|
||||
label: groupData.groupName,
|
||||
children: activities
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
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 虚拟充值
|
||||
* @param {{productID:string, magicWord:string, paramStr: string }} msg
|
||||
* @param {BackendSession} session
|
||||
* @memberof orderHandler
|
||||
*/
|
||||
async applyOrder(msg: { productID: string, activityId: number, beginTimeStamp: number, monopolyActivityId: number }, session: BackendSession) {
|
||||
const { productID, activityId, beginTimeStamp, monopolyActivityId } = msg;
|
||||
|
||||
const roleId = session.get('roleId');
|
||||
const serverId = session.get('serverId');
|
||||
const sid = session.get('sid');
|
||||
const roleName = session.get('roleName');
|
||||
|
||||
|
||||
let payType = PAY_TYPE.TEST
|
||||
//如果有特殊情况,activityId可为0
|
||||
if (!productID || !_.isString(productID)) {
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
}
|
||||
|
||||
//商品价格信息
|
||||
let productInfo = dicRMB.get(productID)
|
||||
if (!productInfo) {
|
||||
console.log('productID', productID)
|
||||
return resResult(STATUS.NO_PRODUCT_ID);
|
||||
}
|
||||
|
||||
let price = productInfo.price;//价格
|
||||
let productType = productInfo.type;//类型
|
||||
let message = productInfo.message;//商品信息
|
||||
let localOrderID = genCode(32);//本地订单号
|
||||
let orderID = '';//平台订单号
|
||||
let sdkOrderInfo = null;//客户端需要的平台订单信息
|
||||
|
||||
let activityData = await getActivityById(activityId);
|
||||
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);
|
||||
|
||||
//订单成功
|
||||
if(!orderInfo) {
|
||||
return resResult(STATUS.NO_ORDER);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user