活动:支付添加错误码返回

This commit is contained in:
qiaoxin
2021-05-29 15:18:22 +08:00
parent 7049b7e44d
commit 6aaaa391f2
12 changed files with 72 additions and 38 deletions

View File

@@ -178,14 +178,18 @@ export class orderHandler {
//结算奖励
let result = await makeOrder(localOrderID, sid, orderInfo);
if (result.code !== 0) {//结算失败
console.log(`测试支付失败..... ${JSON.stringify(result)}`)
return resResult(result);
}
//推送
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
data: result,
data: result.data,
}), [{ uid: roleId, sid: sid }]);
//活动统计
await addRechargeMoney(roleId, serverId, price);
console.log('结算完成', localOrderID)
return resResult(STATUS.SUCCESS, result);
return resResult(STATUS.SUCCESS, result.data);
}
return resResult(STATUS.DUPLICATE_ORDER);
@@ -243,14 +247,18 @@ export class orderHandler {
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid, orderInfo);
if (result.code !== 0) {//结算失败
console.log(`测试支付失败..... ${JSON.stringify(result)}`)
return resResult(result);
}
//推送
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
data: result,
data: result.data,
}), [{ uid: roleId, sid: sid }]);
//活动统计
await addRechargeMoney(roleId, serverId, price);
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
return resResult(STATUS.SUCCESS, result);
return resResult(STATUS.SUCCESS, result.data);
}
return resResult(STATUS.NO_ORDER, {});

View File

@@ -1,4 +1,4 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ACTIVITY_TYPE, STATUS, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityDailyRMBGiftsModel, ActivityDailyRMBGiftsModelType } from '../db/ActivityDailyRMBGifts';
import { DailyRMBGiftsData, DailyRMBGiftsItem } from '../domain/activityField/dailyRMBGiftsField';
@@ -72,20 +72,26 @@ export async function makeDailyRMBGiftsReward(roleId: string, roleName: string,
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (activityData.type !== ACTIVITY_TYPE.RECHARGE_MONEY) {
return null;
return STATUS.ACTIVITY_TYPE_ERROR;
}
let playerData = new DailyRMBGiftsData(activityData);
let bigGiftProductID = playerData.productID;
if (bigGiftProductID == productID) {//一次性购买7天礼包
let buyTime = moment(new Date()).startOf('d').toDate()
let endTime = moment(buyTime).add(7, 'd').endOf('d').toDate()
return Object.assign({}, { item: { endTime, receiveCount: 0 } })
return {
code: 0,
data: Object.assign({}, { item: { endTime, receiveCount: 0 } })
}
} else {
let item = playerData.findProduct(productID);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
item.isBuy = true;
item.isReceive = true;
return Object.assign(result, { item })
return {
code: 0,
data: Object.assign(result, { item })
}
}
}

View File

@@ -1,4 +1,4 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ACTIVITY_TYPE, STATUS, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityGrowthFundModel, ActivityGrowthFundModelType } from '../db/ActivityGrowthFund';
import { ActivityBuyRecordsModel, ActivityBuyRecordsModelType } from '../db/ActivityBuyRecords';
@@ -126,15 +126,18 @@ export async function getPlayerGrowthFundData(activityId: number, serverId: numb
export async function makeGrowthFund(roleId: string, roleName: string, sid: string, serverId: number, funcs: number[],
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP && activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP && activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP) {
return null;
}
if (!activityData) {
return null;
return STATUS.ACTIVITY_MISSING;
}
if (activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP && activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP && activityData.type !== ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP) {
return STATUS.ACTIVITY_TYPE_ERROR;
}
let playerData = new GrowthFundData(activityData);
let pageData = playerData.findPageByProductID(productID);
let pageIndex = pageData.pageIndex;
await ActivityBuyRecordsModel.addRecord(activityId, roleId, activityData.type, pageIndex, true);
return Object.assign({}, { item: { pageIndex }, activityId: activityId })
return {
code: 0,
data: Object.assign({}, { item: { pageIndex }, activityId: activityId })
}
}

View File

@@ -1,5 +1,5 @@
import moment = require('moment');
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ACTIVITY_TYPE, STATUS, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivityShopModel, ActivityShopModelType } from '../db/ActivityShop';
import { RoleModel } from '../db/Role';
@@ -103,12 +103,12 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (!activityData) {
return null;
return STATUS.ACTIVITY_MISSING;
}
if (activityData.type !== ACTIVITY_TYPE.NEW_PLAYER_LIMIT_PACKAGE &&
activityData.type !== ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_DAILY &&
activityData.type !== ACTIVITY_TYPE.LIMIT_PACKAGE_SHOP_WEEKLY) {
return null;
return STATUS.ACTIVITY_TYPE_ERROR;
}
let playerData = new LimitShopData(activityData);
@@ -117,10 +117,10 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s
let item = playerData.findItemByProductID(productID);
if (!item) {
return null;
return STATUS.ACTIVITY_NO_PRODUCT;
}
if (item.countMax > 0 && item.buyCount >= item.countMax) {
return null;
return STATUS.ACTIVITY_MAX_COUNT;
}
let rewardArray = stringToRewardParam(item.reward)
@@ -129,5 +129,8 @@ export async function makeLimitPackageReward(roleId: string, roleName: string, s
await ActivityShopModel.addRecord(activityId, roleId, playerData.roundIndex, item.id);
item.buyCount += 1;
return Object.assign(result, { item: item, activityId: activityId })
return {
code: 0,
data: Object.assign(result, { item: item, activityId: activityId })
}
}

View File

@@ -115,7 +115,7 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string,
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (activityData.type !== ACTIVITY_TYPE.MONTHLY_TICKET_1 && activityData.type !== ACTIVITY_TYPE.MONTHLY_TICKET_2) {
return null;
return STATUS.ACTIVITY_TYPE_ERROR;
}
let playerData = new MonthlyTicketData(activityData);
@@ -127,5 +127,8 @@ export async function makeMonthlyTicketReward(roleId: string, roleName: string,
let firstReward = playerData.firstReward;
let rewardParamArr: Array<RewardParam> = stringToRewardParam(firstReward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return Object.assign(result, { item: { isOpen: true, todayIndex: 1 }, activityId: activityData.activityId })
return {
code: 0,
data: Object.assign(result, { item: { isOpen: true, todayIndex: 1 }, activityId: activityData.activityId })
}
}

View File

@@ -37,7 +37,7 @@ export async function makeOrder(localOrderID: string, sid: string, orderInfo: Us
const roleInfo = await RoleModel.findByRoleId(roleId);
let rewardResult: any = {};
let rewardResult: any = { code: 0, data: null };
//首冲礼包
{

View File

@@ -1,4 +1,4 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ACTIVITY_TYPE, STATUS, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { PopUpShopData, } from '../domain/activityField/popUpShopField';
import { RewardParam } from '../domain/activityField/rewardField';
@@ -69,23 +69,26 @@ export async function makePopUpShopReward(roleId: string, roleName: string, sid:
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (!activityData) {
return null;
return STATUS.ACTIVITY_MISSING;
}
if (activityData.type !== ACTIVITY_TYPE.POP_UP_SHOP) {
return null;
return STATUS.ACTIVITY_TYPE_ERROR;
}
let allTaskData: any[] = JSON.parse(activityData.data);
let taskIndex = allTaskData.findIndex(obj => { return obj && obj.data.productID == productID });
if (taskIndex == -1) {
return null;
return STATUS.ACTIVITY_NO_PRODUCT;
}
let playerData = new PopUpShopData(allTaskData[taskIndex]);
let playerRecords: ActivityPopUpShopModelType = await ActivityPopUpShopModel.addRecord(serverId, activityId, roleId, playerData.id);
if (!playerRecords) {
return null;
return STATUS.APPLY_ORDER_ERROR;
}
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
return Object.assign(result, { item: { isBuy: true }, activityId: activityData.activityId })
return {
code: 0,
data: Object.assign(result, { item: { isBuy: true }, activityId: activityData.activityId })
}
}

View File

@@ -1,5 +1,5 @@
import moment = require('moment');
import { ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_CLOSE, SIGNIN_OPEN, SIGNIN_VIP_OPEN_LIMIT } from '../consts';
import { ACTIVITY_TYPE, SERVER_OPEN_TIME, SIGNIN_CLOSE, SIGNIN_OPEN, SIGNIN_VIP_OPEN_LIMIT, STATUS } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ActivitySignInModel, ActivitySignInModelType } from '../db/ActivitySignIn';
import { ServerlistModel } from '../db/Serverlist';
@@ -94,13 +94,16 @@ export async function makeSignInVIP(roleId: string, roleName: string, sid: strin
activityId: number, productID: string) {
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (activityData.type !== ACTIVITY_TYPE.SIGN_IN_VIP) {
return null;
return STATUS.ACTIVITY_TYPE_ERROR;
}
let playerData = new SignInData(activityData);
await ActivitySignInModel.buyVIP(activityId, roleId, playerData.roundIndex);
return Object.assign({}, { item: { isVip: true }, activityId: activityData.activityId })
return {
code: 0,
data: Object.assign({}, { item: { isVip: true }, activityId: activityData.activityId })
}
}
//高级签到开启条件

View File

@@ -1,4 +1,4 @@
import { ACTIVITY_TYPE, TASK_TYPE } from '../consts';
import { ACTIVITY_TYPE, STATUS, TASK_TYPE } from '../consts';
import { ActivityModel, ActivityModelType } from '../db/Activity';
import { ServerlistModel } from '../db/Serverlist';
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
@@ -60,7 +60,7 @@ export async function makeYuanbaoShopReward(roleId: string, roleName: string, si
let records = await UserOrderModel.findSuccessOrderByProductID(productID, roleId, activityId);
let activityData: ActivityModelType = await ActivityModel.findActivity(activityId);
if (activityData.type !== ACTIVITY_TYPE.YUAN_BAO_SHOP) {
return null;
return STATUS.ACTIVITY_TYPE_ERROR;
}
let playerData = new YuanBaoShopData(activityData);
let item = playerData.findItem(productID);
@@ -85,5 +85,8 @@ export async function makeYuanbaoShopReward(roleId: string, roleName: string, si
let result = await addReward(roleId, roleName, sid, serverId, funcs, arr)
item.buyCount += 1;
return Object.assign(result, { item, activityId: activityData.activityId })
return {
code: 0,
data: Object.assign(result, { item, activityId: activityData.activityId })
}
}

View File

@@ -386,6 +386,8 @@ export const STATUS = {
ORDER_ERROR: { code: 70006, simStr: '订单错误' },
PRICE_ERROR: { code: 70007, simStr: '价格错误' },
NO_PAY: { code: 70008, simStr: '未支付' },
NO_MOTHLY_TICKET_REWARD: { code: 70009, simStr: '没有可领取的月卡奖励' }
NO_MOTHLY_TICKET_REWARD: { code: 70009, simStr: '没有可领取的月卡奖励' },
ACTIVITY_TYPE_ERROR: { code: 70010, simStr: '活动类型错误' },
ACTIVITY_NO_PRODUCT: { code: 70011, simStr: '活动数据错误' }
}

View File

@@ -23,7 +23,7 @@ export default class Activity_Pop_Up_Shop extends BaseModel {
@prop({ required: true })
isBuy: boolean; // 是否购买
//购买奖励的记录
//购买记录
public static async addRecord(serverId: number, activityId: number, roleId: string, id: number) {
let nowDate = new Date();
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOneAndUpdate({

View File

@@ -34,7 +34,7 @@ export default class Activity_Sign_In extends BaseModel {
records.push(record)
}
let result: ActivitySignInModelType = await ActivitySignInModel.findOneAndUpdate({ roleId, activityId, roundIndex },
{ $push: { records: { $each: records } } }, { new: true }).lean(true);
{ $push: { records: { $each: records } } }, { upsert: true, new: true }).lean(true);
return result;
}