🐞 fix(订单): 各种类型的订单在支付之前校验次数
This commit is contained in:
@@ -68,6 +68,9 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string,
|
|||||||
let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime);
|
let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime);
|
||||||
let bigGiftProductID = playerData.productID;
|
let bigGiftProductID = playerData.productID;
|
||||||
if (bigGiftProductID == productID) {//一次性购买7天礼包
|
if (bigGiftProductID == productID) {//一次性购买7天礼包
|
||||||
|
let hasBoughtTomorrow = await ActivityDailyRMBGiftsModel.checkHasBought(serverId, activityData.activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex + 1);
|
||||||
|
if(hasBoughtTomorrow) return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
|
||||||
let playerRecord: ActivityDailyRMBGiftsModelType = await ActivityDailyRMBGiftsModel.findRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex);
|
let playerRecord: ActivityDailyRMBGiftsModelType = await ActivityDailyRMBGiftsModel.findRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex);
|
||||||
playerData.setPlayerRecords(playerRecord?[playerRecord]: []);
|
playerData.setPlayerRecords(playerRecord?[playerRecord]: []);
|
||||||
if (playerData.shouldbuyNextDay()) {//今天已经购买过其他奖励
|
if (playerData.shouldbuyNextDay()) {//今天已经购买过其他奖励
|
||||||
@@ -85,11 +88,12 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string,
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let item = playerData.findProduct(productID);
|
let item = playerData.findProduct(productID);
|
||||||
if (!item) {
|
if (!item) return STATUS.ACTIVITY_NO_PRODUCT;
|
||||||
return {
|
let hasReceived = await ActivityDailyRMBGiftsModel.checkHasReceive(serverId, activityData.activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex, item.id);
|
||||||
code: STATUS.ACTIVITY_NO_PRODUCT,
|
if(hasReceived) {
|
||||||
}
|
return STATUS.ORDER_CANNOT_BUY
|
||||||
}
|
}
|
||||||
|
|
||||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
|
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
|
||||||
let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.DAILY_RMB_GIFT)
|
let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.DAILY_RMB_GIFT)
|
||||||
await ActivityDailyRMBGiftsModel.receiveRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex, [item.id]);
|
await ActivityDailyRMBGiftsModel.receiveRecord(serverId, activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex, [item.id]);
|
||||||
@@ -100,3 +104,30 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查每日特惠是否可以购买
|
||||||
|
*
|
||||||
|
* @param {number} serverId 区Id
|
||||||
|
* @param {number} activityId 活动Id
|
||||||
|
* @param {string} roleId 角色Id
|
||||||
|
* @param {string} productID 商品ID
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
export async function checkDailyRMBGifts(roleId: string, serverId: number, activityData: ActivityModelType, productID: string) {
|
||||||
|
if(!activityData) return false
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new DailyRMBGiftsData(activityData, createTime, serverTime);
|
||||||
|
let bigGiftProductID = playerData.productID;
|
||||||
|
if (bigGiftProductID == productID) {//一次性购买7天礼包
|
||||||
|
let hasBoughtTomorrow = await ActivityDailyRMBGiftsModel.checkHasBought(serverId, activityData.activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex + 1);
|
||||||
|
return !hasBoughtTomorrow;
|
||||||
|
} else {
|
||||||
|
let item = playerData.findProduct(productID);
|
||||||
|
if (!item) return false
|
||||||
|
let hasReceived = await ActivityDailyRMBGiftsModel.checkHasReceive(serverId, activityData.activityId, roleId, moment(playerData.beginTime).toDate(), playerData.todayIndex, item.id);
|
||||||
|
return !hasReceived;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -143,9 +143,23 @@ export async function makeGrowthFund(roleId: string, roleName: string, sid: stri
|
|||||||
let playerData = new GrowthFundData(activityData, createTime, serverTime);
|
let playerData = new GrowthFundData(activityData, createTime, serverTime);
|
||||||
let pageData = playerData.findPageByProductID(productID);
|
let pageData = playerData.findPageByProductID(productID);
|
||||||
let pageIndex = pageData.pageIndex;
|
let pageIndex = pageData.pageIndex;
|
||||||
|
let checkResult = await ActivityBuyRecordsModel.checkRecord(activityId, roleId, activityData.type, pageIndex);
|
||||||
|
if(checkResult) return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
|
||||||
await ActivityBuyRecordsModel.addRecord(activityId, roleId, activityData.type, pageIndex, true);
|
await ActivityBuyRecordsModel.addRecord(activityId, roleId, activityData.type, pageIndex, true);
|
||||||
return {
|
return {
|
||||||
code: 0,
|
code: 0,
|
||||||
data: Object.assign({}, { item: { pageIndex }, activityId: activityId })
|
data: Object.assign({}, { item: { pageIndex }, activityId: activityId })
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function checkGrowthFund(roleId: string, serverId: number, activityData: ActivityModelType, productID: string) {
|
||||||
|
if(!activityData) return false;
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new GrowthFundData(activityData, createTime, serverTime);
|
||||||
|
let pageData = playerData.findPageByProductID(productID);
|
||||||
|
let pageIndex = pageData.pageIndex;
|
||||||
|
let checkResult = await ActivityBuyRecordsModel.checkRecord(activityData.activityId, roleId, activityData.type, pageIndex);
|
||||||
|
return !checkResult;
|
||||||
}
|
}
|
||||||
@@ -125,9 +125,9 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s
|
|||||||
if (!item) {
|
if (!item) {
|
||||||
return STATUS.ACTIVITY_NO_PRODUCT;
|
return STATUS.ACTIVITY_NO_PRODUCT;
|
||||||
}
|
}
|
||||||
// if (item.countMax > 0 && item.buyCount >= item.countMax) {
|
if (item.countMax > 0 && item.buyCount >= item.countMax) {
|
||||||
// return STATUS.ACTIVITY_MAX_COUNT;
|
return STATUS.ACTIVITY_MAX_COUNT;
|
||||||
// }
|
}
|
||||||
|
|
||||||
let rewardArray = stringToRewardParam(item.reward)
|
let rewardArray = stringToRewardParam(item.reward)
|
||||||
let result = await addReward(roleId, roleName, sid, serverId, rewardArray, ITEM_CHANGE_REASON.BUY_LIMIT_PACKAGE);
|
let result = await addReward(roleId, roleName, sid, serverId, rewardArray, ITEM_CHANGE_REASON.BUY_LIMIT_PACKAGE);
|
||||||
|
|||||||
@@ -79,7 +79,11 @@ export async function makeMonthlyFund(roleId: string, roleName: string, sid: str
|
|||||||
let createTime = await getRoleCreateTime(roleId);
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
let playerData = new MonthlyFundData(activityData, createTime, serverTime);
|
let playerData = new MonthlyFundData(activityData, createTime, serverTime);
|
||||||
|
let playerRecords = await ActivityMonthlyFundModel.findData(serverId, activityData.activityId, playerData.roundIndex, roleId);
|
||||||
|
playerData.setPlayerRecords(playerRecords);
|
||||||
let page = playerData.findByProductID(productID);
|
let page = playerData.findByProductID(productID);
|
||||||
|
if(page.hasBought) return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
|
||||||
await ActivityMonthlyFundModel.buy(serverId, activityId, roleId, playerData.roundIndex, page.pageIndex, productID);
|
await ActivityMonthlyFundModel.buy(serverId, activityId, roleId, playerData.roundIndex, page.pageIndex, productID);
|
||||||
|
|
||||||
let rewardParamArr = stringToRewardParam(page.onceReward);
|
let rewardParamArr = stringToRewardParam(page.onceReward);
|
||||||
|
|||||||
@@ -121,12 +121,15 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string,
|
|||||||
return STATUS.ACTIVITY_TYPE_ERROR;
|
return STATUS.ACTIVITY_TYPE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!await checkMonthlyTicket(roleId, serverId, activityData)) return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
|
||||||
let createTime = await getRoleCreateTime(roleId);
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
let playerData = new MonthlyTicketData(activityData, createTime, serverTime);
|
let playerData = new MonthlyTicketData(activityData, createTime, serverTime);
|
||||||
|
|
||||||
let endTime = playerData.isForever? moment(playerData.endTime).toDate(): moment(new Date()).startOf('d').add(playerData.days, 'day').add(REFRESH_TIME, 'h').toDate();
|
let endTime = playerData.isForever? moment(playerData.endTime).toDate(): moment(new Date()).startOf('d').add(playerData.days, 'day').add(REFRESH_TIME, 'h').toDate();
|
||||||
console.log('endTime', playerData.isForever, moment(new Date()).startOf('d'), endTime, playerData.days)
|
console.log('endTime', playerData.isForever, moment(new Date()).startOf('d'), endTime, playerData.days)
|
||||||
|
|
||||||
await ActivityMonthlyTicketModel.buyMonthlyTicket(serverId, roleId, activityId, activityData.type, endTime, playerData.isForever)
|
await ActivityMonthlyTicketModel.buyMonthlyTicket(serverId, roleId, activityId, activityData.type, endTime, playerData.isForever)
|
||||||
if(activityData.type == ACTIVITY_TYPE.MONTHLY_TICKET_2) {
|
if(activityData.type == ACTIVITY_TYPE.MONTHLY_TICKET_2) {
|
||||||
let role = await RoleModel.buyForeverTicket(roleId);
|
let role = await RoleModel.buyForeverTicket(roleId);
|
||||||
@@ -141,7 +144,13 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 月卡权限
|
// 是否可以购买月卡
|
||||||
|
export async function checkMonthlyTicket(roleId: string, serverId: number, activityData: ActivityModelType) {
|
||||||
|
if(!activityData) return false;
|
||||||
|
|
||||||
|
let result = await ActivityMonthlyTicketModel.checkHasBought(serverId, roleId, activityData.activityId, activityData.type);
|
||||||
|
return !result;
|
||||||
|
}
|
||||||
|
|
||||||
// 军团捐献消耗
|
// 军团捐献消耗
|
||||||
export function getVipDonateConsume(originConsume: RewardInter, vipStartTime: number) {
|
export function getVipDonateConsume(originConsume: RewardInter, vipStartTime: number) {
|
||||||
|
|||||||
@@ -168,6 +168,7 @@ export async function makePopUpShopReward(roleId: string, roleName: string, sid:
|
|||||||
return STATUS.APPLY_ORDER_ERROR;
|
return STATUS.APPLY_ORDER_ERROR;
|
||||||
}
|
}
|
||||||
let item = playerData.updateRecord(playerRecord, productID);
|
let item = playerData.updateRecord(playerRecord, productID);
|
||||||
|
if(!item) return STATUS.NO_PRODUCT_ID
|
||||||
|
|
||||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
|
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
|
||||||
let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.POP_UP_BUY_GIFT)
|
let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.POP_UP_BUY_GIFT)
|
||||||
|
|||||||
@@ -153,3 +153,22 @@ export async function makeRefreshShopReward(roleId: string, roleName: string, si
|
|||||||
data: Object.assign(result, { item: item, activityId: activityId })
|
data: Object.assign(result, { item: item, activityId: activityId })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function checkRefreshShop(roleId: string, serverId: number, activityData: ActivityModelType, productID: string, roundIndex: number) {
|
||||||
|
if (!activityData) return false;
|
||||||
|
if (activityData.type !== ACTIVITY_TYPE.REFRESH_SHOP) return false;
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new RefreshShopData(activityData, createTime, serverTime);
|
||||||
|
|
||||||
|
if(!roundIndex) {
|
||||||
|
roundIndex = playerData.roundIndex;
|
||||||
|
}
|
||||||
|
let playerRecord: ActivityRefreshShopModelType = await ActivityRefreshShopModel.findData(activityData.activityId, roleId, roundIndex);
|
||||||
|
playerData.setPlayerRecords(playerRecord);
|
||||||
|
|
||||||
|
let item = playerData.findItemByProductID(productID);
|
||||||
|
if (!item) return false;
|
||||||
|
if (item.countMax > 0 && item.buyCount >= item.countMax) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@@ -124,25 +124,19 @@ export async function makeSelfServerShop(roleId: string, roleName: string, sid:
|
|||||||
|
|
||||||
let activityData: ActivityModelType = await getActivityById(activityId);
|
let activityData: ActivityModelType = await getActivityById(activityId);
|
||||||
if (!activityData) {
|
if (!activityData) {
|
||||||
return {
|
return STATUS.ACTIVITY_MISSING
|
||||||
code: STATUS.ACTIVITY_MISSING,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
let createTime = await getRoleCreateTime(roleId);
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
|
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
|
||||||
let item: SelfServiceShopItem = playerData.getItemByProductID(productID);
|
let item: SelfServiceShopItem = playerData.getItemByProductID(productID);
|
||||||
if (!item) {
|
if (!item) {
|
||||||
return {
|
return STATUS.ACTIVITY_DATA_ERROR
|
||||||
code: STATUS.ACTIVITY_DATA_ERROR,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (item.countMax > 0) {//限制购买次数
|
if (item.countMax > 0) {//限制购买次数
|
||||||
let playerRecords: ActivitySelfServiceShopModelType[] = await ActivitySelfServiceShopModel.findDataByIndex(serverId, activityId, roleId, playerData.roundIndex, item.index);
|
let playerRecords: ActivitySelfServiceShopModelType[] = await ActivitySelfServiceShopModel.findDataByIndex(serverId, activityId, roleId, playerData.roundIndex, item.index);
|
||||||
if (playerRecords.length >= item.countMax) {
|
if (playerRecords.length >= item.countMax) {
|
||||||
return {
|
return STATUS.ACTIVITY_MAX_COUNT
|
||||||
code: STATUS.ACTIVITY_MAX_COUNT,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let result = await addSelfServiceShopGiftReward(roleId, roleName, sid, serverId, activityId, playerData.roundIndex, item.index, item);
|
let result = await addSelfServiceShopGiftReward(roleId, roleName, sid, serverId, activityId, playerData.roundIndex, item.index, item);
|
||||||
@@ -152,3 +146,18 @@ export async function makeSelfServerShop(roleId: string, roleName: string, sid:
|
|||||||
data: Object.assign(result, { item })
|
data: Object.assign(result, { item })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function checkSelfServiceShop(roleId: string, serverId: number, activityData: ActivityModelType, productID: string) {
|
||||||
|
if(!activityData) return false;
|
||||||
|
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new SelfServiceShopData(activityData, createTime, serverTime);
|
||||||
|
let item: SelfServiceShopItem = playerData.getItemByProductID(productID);
|
||||||
|
if (!item) return false
|
||||||
|
if (item.countMax > 0) {//限制购买次数
|
||||||
|
let playerRecords = await ActivitySelfServiceShopModel.findDataByIndex(serverId, activityData.activityId, roleId, playerData.roundIndex, item.index);
|
||||||
|
if (playerRecords.length >= item.countMax) return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|||||||
@@ -101,10 +101,10 @@ export async function makeSignInVIP(roleId: string, roleName: string, sid: strin
|
|||||||
if (activityData.type !== ACTIVITY_TYPE.SIGN_IN_VIP && activityData.type !== ACTIVITY_TYPE.COMMON_SIGN_IN) {
|
if (activityData.type !== ACTIVITY_TYPE.SIGN_IN_VIP && activityData.type !== ACTIVITY_TYPE.COMMON_SIGN_IN) {
|
||||||
return STATUS.ACTIVITY_TYPE_ERROR;
|
return STATUS.ACTIVITY_TYPE_ERROR;
|
||||||
}
|
}
|
||||||
let createTime = await getRoleCreateTime(roleId);
|
let playerData = await getPlayerSignInData(activityId, serverId, roleId);
|
||||||
let serverTime = await getServerCreateTime(serverId);
|
if (!playerData || playerData.isVip) {
|
||||||
let playerData = new SignInData(activityData, createTime, serverTime);
|
return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
}
|
||||||
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);
|
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -49,6 +49,9 @@ export async function getTaskPassDataShow(activityId: number, serverId: number,
|
|||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
let playerData = new TaskPassData(activityData, createTime, serverTime);
|
let playerData = new TaskPassData(activityData, createTime, serverTime);
|
||||||
let roundIndex = playerData.roundIndex;
|
let roundIndex = playerData.roundIndex;
|
||||||
|
let checkResult = await ActivityTaskPassModel.check(serverId, activityData.activityId, roleId, roundIndex, productID);
|
||||||
|
if(checkResult) return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
|
||||||
await ActivityTaskPassModel.buy(serverId, activityId, roleId, roundIndex, productID);
|
await ActivityTaskPassModel.buy(serverId, activityId, roleId, roundIndex, productID);
|
||||||
return {
|
return {
|
||||||
code: 0,
|
code: 0,
|
||||||
@@ -56,6 +59,17 @@ export async function getTaskPassDataShow(activityId: number, serverId: number,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function checkTaskPass(roleId: string, serverId: number, activityData: ActivityModelType, productID: string) {
|
||||||
|
if(!activityData) return false;
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new TaskPassData(activityData, createTime, serverTime);
|
||||||
|
let roundIndex = playerData.roundIndex;
|
||||||
|
|
||||||
|
let checkResult = await ActivityTaskPassModel.check(serverId, activityData.activityId, roleId, roundIndex, productID);
|
||||||
|
return !checkResult;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务活动完成后会获得点数
|
* 任务活动完成后会获得点数
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import { getActivitiesByType, getActivityById, getActivityByServerId } from './a
|
|||||||
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
|
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
|
||||||
import { handleCost } from '../role/rewardService';
|
import { handleCost } from '../role/rewardService';
|
||||||
import { ActivityTreasureHuntChallengeModel } from '../../db/ActivityTreasureHuntChallenge';
|
import { ActivityTreasureHuntChallengeModel } from '../../db/ActivityTreasureHuntChallenge';
|
||||||
|
import { ActivityModelType } from '../../db/Activity';
|
||||||
|
|
||||||
export async function getPlayerTreasureHuntDataShow(activityId: number, serverId: number, roleId: string) {
|
export async function getPlayerTreasureHuntDataShow(activityId: number, serverId: number, roleId: string) {
|
||||||
let playerData = await getPlayerTreasureHuntData(activityId, serverId, roleId);
|
let playerData = await getPlayerTreasureHuntData(activityId, serverId, roleId);
|
||||||
@@ -121,6 +122,22 @@ export async function makeShop(roleId: string, roleName: string, sid: string, se
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function checkTreasureHuntShop(roleId: string, serverId: number, activityData: ActivityModelType, productID: string) {
|
||||||
|
if(!activityData) return false;
|
||||||
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
|
let playerData = new TreasureHuntData(activityData, createTime, serverTime);
|
||||||
|
|
||||||
|
let playerShopRecord = await ActivityTreasureHuntShopModel.findTreasureData(activityData.activityId, roleId, playerData.roundIndex, playerData.todayIndex);
|
||||||
|
playerData.shop.setPlayerShopRecords(playerShopRecord);
|
||||||
|
|
||||||
|
let item = playerData.shop.findProductID(productID)
|
||||||
|
|
||||||
|
if (!item) return false;
|
||||||
|
if (item.buyCount >= item.countMax) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
export async function treasureHuntChallengeConsume(serverId: number, roleId: string, sid: string) {
|
export async function treasureHuntChallengeConsume(serverId: number, roleId: string, sid: string) {
|
||||||
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT);
|
let activities = await getActivitiesByType(serverId, ACTIVITY_TYPE.TREASURE_HUNT);
|
||||||
for(let { activityId } of activities) {
|
for(let { activityId } of activities) {
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ export async function getWeeklyFundData(activityId: number, serverId: number, ro
|
|||||||
*/
|
*/
|
||||||
export async function getWeeklyFundDataShow(activityId: number, serverId: number, roleId: string) {
|
export async function getWeeklyFundDataShow(activityId: number, serverId: number, roleId: string) {
|
||||||
let playerData = await getWeeklyFundData(activityId, serverId, roleId);
|
let playerData = await getWeeklyFundData(activityId, serverId, roleId);
|
||||||
|
console.log('##### weeklyFund', playerData)
|
||||||
if(playerData && playerData.canShow && playerData.canShow()) {
|
if(playerData && playerData.canShow && playerData.canShow()) {
|
||||||
return playerData.getShowResult();
|
return playerData.getShowResult();
|
||||||
}
|
}
|
||||||
@@ -75,6 +76,11 @@ export async function makeWeeklyFund(roleId: string, roleName: string, sid: stri
|
|||||||
let createTime = await getRoleCreateTime(roleId);
|
let createTime = await getRoleCreateTime(roleId);
|
||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
let playerData = new WeeklyFundData(activityData, createTime, serverTime);
|
let playerData = new WeeklyFundData(activityData, createTime, serverTime);
|
||||||
|
let playerRecord = await ActivityWeeklyFundModel.findData(serverId, activityData.activityId, roleId);
|
||||||
|
if(playerRecord) {
|
||||||
|
return STATUS.ORDER_CANNOT_BUY;
|
||||||
|
}
|
||||||
|
|
||||||
await ActivityWeeklyFundModel.buy(serverId, activityId, roleId, productID);
|
await ActivityWeeklyFundModel.buy(serverId, activityId, roleId, productID);
|
||||||
|
|
||||||
let rewardParamArr = stringToRewardParam(playerData.onceReward);
|
let rewardParamArr = stringToRewardParam(playerData.onceReward);
|
||||||
|
|||||||
@@ -3,16 +3,16 @@ import { ACTIVITY_TYPE, DEBUG_PRICE, MAIL_TYPE, ORDER_STATE, PAY_TYPE, PUSH_ROUT
|
|||||||
import { dicRMB } from '../pubUtils/dictionary/DicRMB';
|
import { dicRMB } from '../pubUtils/dictionary/DicRMB';
|
||||||
import { makeYuanbaoShopReward } from './activity/yuanbaoService';
|
import { makeYuanbaoShopReward } from './activity/yuanbaoService';
|
||||||
import { RoleModel } from '../db/Role';
|
import { RoleModel } from '../db/Role';
|
||||||
import { makeMonthlyTicketReward } from './activity/monthlyTicketService';
|
import { checkMonthlyTicket, makeMonthlyTicketReward } from './activity/monthlyTicketService';
|
||||||
import { checkSignInCanBuy, makeSignInVIP } from './activity/signInService';
|
import { checkSignInCanBuy, makeSignInVIP } from './activity/signInService';
|
||||||
import { makeDailyRMBGiftsReward } from './activity/dailyRMBGiftsService';
|
import { checkDailyRMBGifts, makeDailyRMBGiftsReward } from './activity/dailyRMBGiftsService';
|
||||||
import { checkPopUpShopCanBuy, makePopUpShopReward } from './activity/popUpShopService';
|
import { checkPopUpShopCanBuy, makePopUpShopReward } from './activity/popUpShopService';
|
||||||
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
import { ActivityModel, ActivityModelType } from '../db/Activity';
|
||||||
import { makeGrowthFund } from './activity/growthFundService';
|
import { checkGrowthFund, makeGrowthFund } from './activity/growthFundService';
|
||||||
import { checkLimitPackageCanBuy, makeLimitPackageReward } from './activity/limitPackageService';
|
import { checkLimitPackageCanBuy, makeLimitPackageReward } from './activity/limitPackageService';
|
||||||
import { makeShop } from './activity/treasureHuntService';
|
import { checkTreasureHuntShop, makeShop } from './activity/treasureHuntService';
|
||||||
import { makeSelfServerShop } from './activity/selfServiceShopActivityService';
|
import { checkSelfServiceShop, makeSelfServerShop } from './activity/selfServiceShopActivityService';
|
||||||
import { makeRefreshShopReward } from './activity/refreshShopService';
|
import { checkRefreshShop, makeRefreshShopReward } from './activity/refreshShopService';
|
||||||
import { ActivityMonopolyModel, ActivityMonopolyModelType } from '../db/ActivityMonopoly';
|
import { ActivityMonopolyModel, ActivityMonopolyModelType } from '../db/ActivityMonopoly';
|
||||||
import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../db/ActivityMonopolyLand';
|
import { ActivityMonopolyLandModel, ActivityMonopolyLandModelType } from '../db/ActivityMonopolyLand';
|
||||||
import { parseGoodStr, resResult } from '../pubUtils/util';
|
import { parseGoodStr, resResult } from '../pubUtils/util';
|
||||||
@@ -26,7 +26,7 @@ import { PayCallback37Data } from '../domain/sdk';
|
|||||||
import { reportTAEvent, reportTAUserSet } from './sdkService';
|
import { reportTAEvent, reportTAUserSet } from './sdkService';
|
||||||
import { savePayLog } from '../pubUtils/logUtil';
|
import { savePayLog } from '../pubUtils/logUtil';
|
||||||
import { recordFirstGift } from './activity/firstGiftService';
|
import { recordFirstGift } from './activity/firstGiftService';
|
||||||
import { makeTaskPass } from './activity/taskPassService';
|
import { checkTaskPass, makeTaskPass } from './activity/taskPassService';
|
||||||
import { addGuildPay } from './activity/guildPayService';
|
import { addGuildPay } from './activity/guildPayService';
|
||||||
import { sendMessageToUserWithSuc } from './pushService';
|
import { sendMessageToUserWithSuc } from './pushService';
|
||||||
import { checkParamPrice, needRebate } from '../pubUtils/sdkUtil';
|
import { checkParamPrice, needRebate } from '../pubUtils/sdkUtil';
|
||||||
@@ -69,6 +69,48 @@ export async function checkOrderCanBuy(roleId: string, serverId: number, activit
|
|||||||
{
|
{
|
||||||
return await checkMonthlyFund(roleId, serverId, activityData, productID);
|
return await checkMonthlyFund(roleId, serverId, activityData, productID);
|
||||||
}
|
}
|
||||||
|
case ACTIVITY_TYPE.DAILY_RMB_GIFTS:
|
||||||
|
{
|
||||||
|
return await checkDailyRMBGifts(roleId, serverId, activityData, productID);
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.MONTHLY_TICKET_1:
|
||||||
|
case ACTIVITY_TYPE.MONTHLY_TICKET_2:
|
||||||
|
{
|
||||||
|
return await checkMonthlyTicket(roleId, serverId, activityData);
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP: //主线成长基金(高阶)
|
||||||
|
case ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP://镇念塔成长基金(高阶)
|
||||||
|
case ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP://精英成长基金(高阶)
|
||||||
|
{
|
||||||
|
return await checkGrowthFund(roleId, serverId, activityData, productID);
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.SELF_SERVICE_SHOP:
|
||||||
|
{
|
||||||
|
return await checkSelfServiceShop(roleId, serverId, activityData, productID);
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.TASK_PASS:
|
||||||
|
{
|
||||||
|
return await checkTaskPass(roleId, serverId, activityData, productID);
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.REFRESH_SHOP://通用的刷新商店(分页,可刷新,限制购买次数,支持rmb与资源兑换)
|
||||||
|
{
|
||||||
|
if (paramStr) {//大富翁商店结算
|
||||||
|
let paramObj = JSON.parse(paramStr);
|
||||||
|
let activityId = paramObj.activityId;//大富翁活动id; orderInfo.activityId是大富翁中的商店活动id
|
||||||
|
if (activityId) {
|
||||||
|
let playerMonopolyData: ActivityMonopolyModelType = await ActivityMonopolyModel.findData(serverId, activityId, roleId);
|
||||||
|
let playerLandData: ActivityMonopolyLandModelType = await ActivityMonopolyLandModel.findDataByPosition(serverId, activityId, roleId, playerMonopolyData.curPosition);
|
||||||
|
let roundIndex = playerLandData.stopCount;
|
||||||
|
return await checkRefreshShop(roleId, serverId, activityData, productID, roundIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//正常商店结算
|
||||||
|
return await checkRefreshShop(roleId, serverId, activityData, productID, 0);
|
||||||
|
}
|
||||||
|
case ACTIVITY_TYPE.TREASURE_HUNT://寻宝奇兵活动-每日物资商店
|
||||||
|
{
|
||||||
|
return await checkTreasureHuntShop(roleId, serverId, activityData, productID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -203,11 +203,17 @@ export async function checkShopItemCanBuy(activityId: number, shopItemId: number
|
|||||||
if (activityData.type !== ACTIVITY_TYPE.SHOP) {
|
if (activityData.type !== ACTIVITY_TYPE.SHOP) {
|
||||||
return STATUS.ACTIVITY_TYPE_ERROR;
|
return STATUS.ACTIVITY_TYPE_ERROR;
|
||||||
}
|
}
|
||||||
let createTime = await getRoleCreateTime(roleId);
|
let role = await RoleModel.findByRoleId(roleId, 'guildCode createTime vipStartTime');
|
||||||
|
let { createTime, guildCode, vipStartTime } = role;
|
||||||
let serverTime = await getServerCreateTime(serverId);
|
let serverTime = await getServerCreateTime(serverId);
|
||||||
let shopData = new ShopData(activityData, createTime, serverTime);
|
let shopData = new ShopData(activityData, createTime, serverTime);
|
||||||
let dicItem = shopData.findByProductID(productID);
|
let dicItem = shopData.findByProductID(productID);
|
||||||
if(!dicItem) return STATUS.DIC_DATA_NOT_FOUND;
|
if(!dicItem) return STATUS.DIC_DATA_NOT_FOUND;
|
||||||
|
|
||||||
|
let userShop = await UserShopModel.findByRoleAndItem(roleId, dicItem, seasonNum);
|
||||||
|
let result = await checkShopItemCanBuy(activityId, dicItem.id, roleId, serverId, guildCode, vipStartTime, 1, userShop?.count||0, dicItem);
|
||||||
|
if(result.code != STATUS.SUCCESS.code) return result;
|
||||||
|
|
||||||
let reward = [{
|
let reward = [{
|
||||||
id: dicItem.goodId,
|
id: dicItem.goodId,
|
||||||
count: 1
|
count: 1
|
||||||
|
|||||||
@@ -40,6 +40,10 @@ export default class Activity_Buy_Records extends BaseModel {
|
|||||||
public static async deleteActivity(activityId: number, roleId: string, pageIndex: number, cellIndex: number) {
|
public static async deleteActivity(activityId: number, roleId: string, pageIndex: number, cellIndex: number) {
|
||||||
await ActivityBuyRecordsModel.deleteMany({ roleId, activityId, pageIndex, cellIndex });
|
await ActivityBuyRecordsModel.deleteMany({ roleId, activityId, pageIndex, cellIndex });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async checkRecord(activityId: number, roleId: string, type: number, pageIndex: number) {
|
||||||
|
return await ActivityBuyRecordsModel.exists({ roleId, activityId, type, pageIndex });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ActivityBuyRecordsModel = getModelForClass(Activity_Buy_Records);
|
export const ActivityBuyRecordsModel = getModelForClass(Activity_Buy_Records);
|
||||||
|
|||||||
@@ -73,6 +73,16 @@ export default class Activity_Daily_RMB_Gifts extends BaseModel {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 检查是否购买过
|
||||||
|
public static async checkHasBought(serverId: number, activityId: number, roleId: string, beginTime: Date, todayIndex: number) {
|
||||||
|
return await ActivityDailyRMBGiftsModel.exists({ serverId, roleId, activityId, beginTime, todayIndex });
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async checkHasReceive(serverId: number, activityId: number, roleId: string, beginTime: Date, todayIndex: number, id: number) {
|
||||||
|
return await ActivityDailyRMBGiftsModel.exists({ serverId, roleId, activityId, beginTime, todayIndex, 'records.id': id });
|
||||||
|
}
|
||||||
|
|
||||||
//删除活动领取记录
|
//删除活动领取记录
|
||||||
public static async deleteActivity(serverId: number, activityId: number, roleId: string) {
|
public static async deleteActivity(serverId: number, activityId: number, roleId: string) {
|
||||||
await ActivityDailyRMBGiftsModel.deleteMany({ serverId, roleId, activityId });
|
await ActivityDailyRMBGiftsModel.deleteMany({ serverId, roleId, activityId });
|
||||||
|
|||||||
@@ -41,6 +41,10 @@ export default class Activity_Monthly_Ticket extends BaseModel {
|
|||||||
public static async buyMonthlyTicket(serverId: number, roleId: string, activityId: number, activityType: number, endTime: Date, isForever: boolean) {
|
public static async buyMonthlyTicket(serverId: number, roleId: string, activityId: number, activityType: number, endTime: Date, isForever: boolean) {
|
||||||
await ActivityMonthlyTicketModel.findOneAndUpdate({ serverId, roleId, activityId, activityType }, { $set: { endTime, dayIndex: 0, isForever } }, { upsert: true, new: true }).lean();
|
await ActivityMonthlyTicketModel.findOneAndUpdate({ serverId, roleId, activityId, activityType }, { $set: { endTime, dayIndex: 0, isForever } }, { upsert: true, new: true }).lean();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async checkHasBought(serverId: number, roleId: string, activityId: number, activityType: number,) {
|
||||||
|
return await ActivityMonthlyTicketModel.exists({ serverId, roleId, activityId, activityType, endTime: { $gt: new Date() } });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ActivityMonthlyTicketModel = getModelForClass(Activity_Monthly_Ticket);
|
export const ActivityMonthlyTicketModel = getModelForClass(Activity_Monthly_Ticket);
|
||||||
|
|||||||
@@ -62,6 +62,11 @@ export default class Activity_Task_Pass extends BaseModel {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 是否买过
|
||||||
|
public static async check(serverId: number, activityId: number, roleId: string, roundIndex: number, productID: string) {
|
||||||
|
return await ActivityTaskPassModel.exists({ serverId, roleId, activityId, roundIndex, productIDs: productID });
|
||||||
|
}
|
||||||
|
|
||||||
public static async receiveItems(serverId: number, activityId: number, roleId: string, roundIndex: number, receivedReward: ReceivedReward[]) {
|
public static async receiveItems(serverId: number, activityId: number, roleId: string, roundIndex: number, receivedReward: ReceivedReward[]) {
|
||||||
// console.log(receivedReward)
|
// console.log(receivedReward)
|
||||||
let result: ActivityTaskPassModelType = await ActivityTaskPassModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex},
|
let result: ActivityTaskPassModelType = await ActivityTaskPassModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex},
|
||||||
|
|||||||
Reference in New Issue
Block a user