141 lines
7.1 KiB
TypeScript
141 lines
7.1 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';
|
||
import { makeShop } from './treasureHuntService';
|
||
import { makeSelfServerShop } from './selfServiceShopActivityService';
|
||
import { makeRefreshShopReward } from './refreshShopService';
|
||
import { ActivityMonopolyModel, ActivityMonopolyModelType } from '../db/ActivityMonopoly';
|
||
import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../db/ActivityMonopolyLand';
|
||
|
||
|
||
|
||
|
||
|
||
/**
|
||
* 结算账单
|
||
* @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;
|
||
}
|
||
case ACTIVITY_TYPE.REFRESH_SHOP://通用的刷新商店(分页,可刷新,限制购买次数,支持rmb与资源兑换)
|
||
{
|
||
if (orderInfo.paramStr) {//大富翁商店结算
|
||
let paramObj = JSON.parse(orderInfo.paramStr);
|
||
let activityId = paramObj.activityId;//大富翁活动id; orderInfo.activityId是大富翁中的商店活动id
|
||
let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(orderInfo.serverId, activityId, roleId);
|
||
let playerLandData: ActivityMonopolyLandModelType = await ActivityMonopolyLandModel.findDataByPosition(orderInfo.serverId, activityId, roleId, playerMonopolyData.curPosition);
|
||
let roundIndex = playerLandData.stopCount;
|
||
rewardResult = await makeRefreshShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID, roundIndex)
|
||
|
||
} else {//正常商店结算
|
||
rewardResult = await makeRefreshShopReward(roleId, roleInfo.roleName, sid, orderInfo.serverId, roleInfo.funcs, orderInfo.activityId, orderInfo.productID, 0)
|
||
}
|
||
break;
|
||
}
|
||
default:
|
||
rewardResult = STATUS.ERROR_TYPE;
|
||
break;
|
||
}
|
||
return rewardResult
|
||
} |