Files
ZYZ/game-server/app/services/orderService.ts
2021-05-31 18:07:41 +08:00

111 lines
4.9 KiB
TypeScript

import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
import { ActivitySignInModel, ActivitySignInModelType } from '../db/ActivitySignIn';
import { SignInData, SignInItem } from '../domain/activityField/signInField';
import { ACTIVITY_TYPE, ORDER_STATE, STATUS } from '../consts';
import { dicRMB } from '../pubUtils/dictionary/DicRMB';
import { makeYuanbaoShopReward } from './yuanbaoService';
import { RoleModel } from '../db/Role';
import { makeMonthlyTicketReward } from './monthlyTicketService';
import { makeSignInVIP } from './signInService';
import { makeDailyRMBGiftsReward } from './dailyRMBGiftsService';
import { makePopUpShopReward } from './popUpShopService';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityFirstGiftModel } from '../db/ActivityFirstGift';
import { ServerlistModel } from '../db/Serverlist';
import { makeGrowthFund } from './growthFundService';
import { makeLimitPackageReward } from './limitPackageService';
/**
* 结算账单
* @param localOrderID 本地订单号
*/
export async function makeOrder(localOrderID: string, sid: string, orderInfo: UserOrderModelType) {
// let orderInfo = await UserOrderModel.findOrder(localOrderID);
//商品价格信息
let productInfo = dicRMB.get(orderInfo.productID)
let productType = productInfo.type;//类型
let price = orderInfo.price;//下单时的价格
let payType = orderInfo.payType;//支付类型
let roleId = orderInfo.roleId;//角色
const roleInfo = await RoleModel.findByRoleId(roleId);
let rewardResult: any = { code: 0, data: null };
//首冲礼包
{
let { activityGroupId } = await ServerlistModel.findByServerId(orderInfo.serverId);
let activityArray: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.FIRST_GIFT, new Date())
for (let obj of activityArray) {
await ActivityFirstGiftModel.begin(obj.activityId, roleId);
}
}
switch (productType) {
case ACTIVITY_TYPE.SIGN_IN_VIP:
{
rewardResult = await makeSignInVIP(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE:
{
rewardResult = await makeLimitPackageReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY:
case ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY:
{
rewardResult = await makeLimitPackageReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.YUAN_BAO_SHOP:
{
rewardResult = await makeYuanbaoShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.MONTHLY_TICKET_1:
case ACTIVITY_TYPE.MONTHLY_TICKET_2:
{
rewardResult = await makeMonthlyTicketReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.DAILY_RMB_GIFTS:
{
rewardResult = await makeDailyRMBGiftsReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.POP_UP_SHOP:
{
rewardResult = await makePopUpShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: //主线成长基金(高阶)
{
rewardResult = await makeGrowthFund(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP://镇念塔成长基金(高阶)
{
rewardResult = await makeGrowthFund(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP://精英成长基金(高阶)
{
rewardResult = await makeGrowthFund(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID)
break;
}
default:
rewardResult = STATUS.ERROR_TYPE;
break;
}
return rewardResult
}