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'; import { makeShop } from './treasureHuntService'; import { makeSelfServerShop } from './selfServiceShopActivityService'; /** * 结算账单 * @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, orderInfo.paramStr) 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; } case ACTIVITY_TYPE.TREASURE_HUNT://寻宝奇兵活动-每日物资商店 { rewardResult = await makeShop(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID) break; } case ACTIVITY_TYPE.SELF_SERVICE_SHOP://自选商店-购买礼包 { rewardResult = await makeSelfServerShop(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID) break; } default: rewardResult = STATUS.ERROR_TYPE; break; } return rewardResult }