返利:达到等级发返利邮件
This commit is contained in:
@@ -4,7 +4,7 @@ import Role, { RoleModel, RoleType, WarCount } from '../db/Role'
|
||||
import { getLvByExp, getExpByLv, gameData, getDicApByLv } from '../pubUtils/data';
|
||||
import { updateRoleOnlineInfo, updateUserInfo } from './redisService';
|
||||
// import { switchOnFunc } from './funcSwitchService';
|
||||
import { FUNC_OPT_TYPE, TASK_TYPE, WAR_TYPE, STATUS, KING_EXP_RATIO_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, HERO_SYSTEM_TYPE, PUSH_ROUTE } from '../consts';
|
||||
import { FUNC_OPT_TYPE, TASK_TYPE, WAR_TYPE, STATUS, KING_EXP_RATIO_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, HERO_SYSTEM_TYPE, PUSH_ROUTE, REBATE_LV } from '../consts';
|
||||
import { BackendSession, pinus } from 'pinus';
|
||||
import { REDIS_KEY } from '../consts';
|
||||
import { Rank } from './rankService';
|
||||
@@ -20,6 +20,7 @@ import { calculateCeWithRole } from './playerCeService';
|
||||
import { sendMessageToUserWithSuc } from './pushService';
|
||||
import { ActionPointModel } from '../db/ActionPoint';
|
||||
import { GK_MAIN, GK_MAINELITE } from '../pubUtils/dicParam';
|
||||
import { rebateHistoryOrder } from './orderService';
|
||||
|
||||
export async function roleLevelup(type: KING_EXP_RATIO_TYPE, roleId: string, kingExp: number = 0, session: BackendSession) {
|
||||
const serverId = session.get('serverId');
|
||||
@@ -51,7 +52,10 @@ export async function roleLevelup(type: KING_EXP_RATIO_TYPE, roleId: string, kin
|
||||
// await calculateCeWithRole(HERO_SYSTEM_TYPE.ROLE_LV, roleId, serverId, sid, { lv: newLv });
|
||||
|
||||
await updateRoleOnlineInfo(roleId, { lv: newLv });
|
||||
|
||||
// 达到等级返利
|
||||
if(lv < REBATE_LV && newLv >= REBATE_LV) {
|
||||
rebateHistoryOrder(roleId, role.userInfo?.uid);
|
||||
}
|
||||
}
|
||||
let actordata: { lv: number, exp: number, getExp: number, mostExp: number }[] = [];
|
||||
for (let i = lv; i <= newLv; i++) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
|
||||
import { ACTIVITY_TYPE, DEBUG_PRICE, ORDER_STATE, PAY_TYPE, PUSH_ROUTE, REFUND_PRICE_TO_GOLD, STATUS, TASK_TYPE, TA_EVENT, TA_USERSET_TYPE } from '../consts';
|
||||
import { ACTIVITY_TYPE, DEBUG_PRICE, MAIL_TYPE, ORDER_STATE, PAY_TYPE, PUSH_ROUTE, REBATE_RATIO, REFUND_PRICE_TO_GOLD, STATUS, TASK_TYPE, TA_EVENT, TA_USERSET_TYPE } from '../consts';
|
||||
import { dicRMB } from '../pubUtils/dictionary/DicRMB';
|
||||
import { makeYuanbaoShopReward } from './activity/yuanbaoService';
|
||||
import { RoleModel } from '../db/Role';
|
||||
@@ -34,6 +34,10 @@ import { sendMessageToUserWithSuc } from './pushService';
|
||||
import { gameData } from '../pubUtils/data';
|
||||
import { checkParamPrice } from '../pubUtils/sdkUtil';
|
||||
import { checkShopCanBuyInOrder, makeShopOrder } from './shopService';
|
||||
import { UserModel } from '../db/User';
|
||||
import { HistoryOrderModel } from '../db/HistoryOrder';
|
||||
import { sendMailByContent } from './mailService';
|
||||
import { getGoldObject } from './role/rewardService';
|
||||
|
||||
export async function checkOrderCanBuy(roleId: string, serverId: number, activityData: ActivityModelType, productID: string, paramStr: string) {
|
||||
let activityId = activityData.activityId;
|
||||
@@ -349,4 +353,18 @@ export async function refundOrderFromRedisPub(message: string) {
|
||||
await UserOrderModel.refund(order.roleId, order.localOrderID, message);
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
export async function rebateHistoryOrder(roleId: string, uid: number) {
|
||||
let user = await UserModel.findUserByUid(uid);
|
||||
if(user) {
|
||||
let historyOrder = await HistoryOrderModel.findByChannelId(user.channelId);
|
||||
if(historyOrder && !historyOrder.isReceived) {
|
||||
let totalPay = historyOrder.totalPay;
|
||||
if(totalPay > 0) {
|
||||
await sendMailByContent(MAIL_TYPE.REBATE, roleId, { goods: [getGoldObject(totalPay * REBATE_RATIO)] });
|
||||
await HistoryOrderModel.receive(user.channelId, roleId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,7 @@ export enum MAIL_TYPE {
|
||||
GUILD_DISSMISS = 29, // 军团解散
|
||||
LADDER = 30, // 名将擂台
|
||||
GUILD_MAIL = 31, // 军团邮件
|
||||
REBATE = 32, // 返利邮件
|
||||
};
|
||||
|
||||
export const SEND_NAME = '系统';
|
||||
|
||||
@@ -1145,4 +1145,8 @@ export enum SYSTEM_OPEN_ID {
|
||||
EXPEDITION = 36, // 远征
|
||||
}
|
||||
|
||||
export const DEBUG_PRICE = 0.01;
|
||||
export const DEBUG_PRICE = 0.01;
|
||||
|
||||
// 返利等级
|
||||
export const REBATE_LV = 10;
|
||||
export const REBATE_RATIO = 10;
|
||||
46
shared/db/HistoryOrder.ts
Normal file
46
shared/db/HistoryOrder.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
|
||||
/**
|
||||
* 累计充值活动
|
||||
*/
|
||||
@index({ channelId: 1 })
|
||||
|
||||
export default class HistoryOrder extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
serverId: number; // 区号
|
||||
|
||||
@prop({ required: true })
|
||||
channelId: string; // 37账号id
|
||||
|
||||
@prop({ required: true })
|
||||
roleId: string; // 当时的玩家id
|
||||
|
||||
@prop({ required: true })
|
||||
roleName: string; // 当时的玩家名
|
||||
|
||||
@prop({ required: true })
|
||||
totalPay: number; // 总支付金额
|
||||
|
||||
@prop({ required: true })
|
||||
isReceived: boolean; // 是否领取
|
||||
|
||||
@prop({ required: true })
|
||||
receiveRoleId: string; // 领取的玩家id
|
||||
|
||||
public static async findByChannelId(channelId: string) {
|
||||
let result: HistoryOrderModelType = await HistoryOrderModel.findOne({ channelId }).lean();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async receive(channelId: string, roleId: string) {
|
||||
let result: HistoryOrderModelType = await HistoryOrderModel.findOneAndUpdate({ channelId }, { $set: { isReceived: true, roleId } }, { new: true }).lean();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const HistoryOrderModel = getModelForClass(HistoryOrder);
|
||||
|
||||
export interface HistoryOrderModelType extends Pick<DocumentType<HistoryOrder>, keyof HistoryOrder> { }
|
||||
export type HistoryOrderModelTypeParam = Partial<HistoryOrderModelType>; // 将所有字段变成可选项
|
||||
@@ -222,5 +222,12 @@
|
||||
"sendName": "&",
|
||||
"content": "%d",
|
||||
"time": 720
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"title": "返利邮件",
|
||||
"sendName": "&",
|
||||
"content": "%d",
|
||||
"time": 720
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user