邮件 活跃度下发
This commit is contained in:
@@ -117,18 +117,6 @@ export enum GUILD_REC_TYPE {
|
||||
SET_LEADER = 10, // 转让团长 guildName roleName
|
||||
IMPEACH = 11, // 弹劾 roleName roleName
|
||||
}
|
||||
export enum GUILD_DATA_NAME {
|
||||
BOSS_SCRIPT = 'BossInstance',
|
||||
TRAIN = 'BossInstance',
|
||||
TRAIN_BOX = 'BossInstanceBox',
|
||||
GUILD = 'Guild',
|
||||
GUILD_REFINE = 'GuildRefine',
|
||||
GUILD_ASSIST_REFINE = 'GuildAssistRefine',
|
||||
UP_STRUCTURE = 'GuildStructure',
|
||||
JOIN_GUILD = 'JoinGuild',
|
||||
REFRESH_ACTIVE = 'GuildRefActive',
|
||||
WEEKLY_GUILD_SUM = 'WeeklyGuildSum', // 每周结算活跃和奖励
|
||||
}
|
||||
|
||||
|
||||
export const GUILD_REPORT_NUM = 40;
|
||||
|
||||
18
shared/consts/constModules/mailConst.ts
Normal file
18
shared/consts/constModules/mailConst.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
export const MAIL_STATUS = {
|
||||
DELETE: -1,
|
||||
CREATE: 0,
|
||||
READ: 1,
|
||||
RECEIVED: 2,
|
||||
};
|
||||
export const MAIL_TYPE = {
|
||||
SINGLEMAIL: 1,
|
||||
GROUPMAIL: 2,
|
||||
};
|
||||
export const MAIL_TEM_TYPE = {
|
||||
GAMEMAIL: 1,
|
||||
GMTYPE: 2,
|
||||
};
|
||||
export const GM_MAIL_TYPE = {
|
||||
GROUPMAIL: 1, //1:群体邮件
|
||||
SERVER: 2, //2:分服务器邮件
|
||||
};
|
||||
@@ -8,205 +8,205 @@ export const ENCRYPT_KEY = 'fiqaxijabbantusmprc234fj';
|
||||
export const AUTH_SMS_CNT_PER_DAY = 8;
|
||||
|
||||
export const COUNTER = {
|
||||
UID: { name: 'uid', def: 1 },
|
||||
GMUID: { name: 'gmuid', def: 1 },
|
||||
API: { name: 'api', def: 1 },
|
||||
GM_GROUP: { name: 'gmgroup', def: 1 },
|
||||
HID: { name: 'hid', def: 10000 },
|
||||
EID: { name: 'eid', def: 1 },
|
||||
ROLE: { name: 'role', def: 1 }
|
||||
UID: { name: 'uid', def: 1 },
|
||||
GMUID: { name: 'gmuid', def: 1 },
|
||||
API: { name: 'api', def: 1 },
|
||||
GM_GROUP: { name: 'gmgroup', def: 1 },
|
||||
HID: { name: 'hid', def: 10000 },
|
||||
EID: { name: 'eid', def: 1 },
|
||||
ROLE: { name: 'role', def: 1 }
|
||||
};
|
||||
|
||||
export const DEFAULT_HEROES = [19, 53, 55, 54, 13];
|
||||
export const DEFAULT_ITEMS = [
|
||||
{"id": 11004, "count": 99999999},
|
||||
{"id": 11013, "count": 999999},
|
||||
{"id": 11014, "count": 999999},
|
||||
{"id": 11015, "count": 999999},
|
||||
{"id": 11016, "count": 999999},
|
||||
{"id": 17001, "count": 99999999},
|
||||
{"id": 17002, "count": 99999999},
|
||||
{"id": 17003, "count": 99999999},
|
||||
{"id": 17004, "count": 99999999},
|
||||
{"id": 17005, "count": 99999999},
|
||||
{"id": 17006, "count": 99999999},
|
||||
{"id": 17007, "count": 99999999},
|
||||
{"id": 17008, "count": 99999999},
|
||||
{"id": 17009, "count": 99999999},
|
||||
{"id": 17010, "count": 99999999},
|
||||
{"id": 17011, "count": 99999999},
|
||||
{"id": 17012, "count": 99999999},
|
||||
{"id": 17013, "count": 99999999},
|
||||
{"id": 17014, "count": 99999999},
|
||||
{"id": 17015, "count": 99999999},
|
||||
{"id": 17016, "count": 99999999},
|
||||
{"id": 17017, "count": 99999999},
|
||||
{"id": 17018, "count": 99999999},
|
||||
{"id": 17019, "count": 99999999},
|
||||
{"id": 17020, "count": 99999999},
|
||||
{"id": 17021, "count": 99999999},
|
||||
{"id": 17022, "count": 99999999},
|
||||
{"id": 17023, "count": 99999999},
|
||||
{"id": 17024, "count": 99999999},
|
||||
{"id": 17025, "count": 99999999},
|
||||
{"id": 17026, "count": 99999999},
|
||||
{"id": 17027, "count": 99999999},
|
||||
{"id": 17028, "count": 99999999},
|
||||
{"id": 17029, "count": 99999999},
|
||||
{"id": 17030, "count": 99999999},
|
||||
{"id": 17031, "count": 99999999},
|
||||
{"id": 17032, "count": 99999999},
|
||||
{"id": 17033, "count": 99999999},
|
||||
{"id": 17037, "count": 99999999},
|
||||
{"id": 17038, "count": 99999999},
|
||||
{"id": 17039, "count": 99999999},
|
||||
{"id": 17040, "count": 99999999},
|
||||
{"id": 17041, "count": 99999999},
|
||||
{"id": 17042, "count": 99999999},
|
||||
{"id": 17043, "count": 99999999},
|
||||
{"id": 17044, "count": 99999999},
|
||||
{"id": 17045, "count": 99999999},
|
||||
{"id": 17046, "count": 99999999},
|
||||
{"id": 17047, "count": 99999999},
|
||||
{"id": 17048, "count": 99999999},
|
||||
{"id": 17049, "count": 99999999},
|
||||
{"id": 17050, "count": 99999999},
|
||||
{"id": 17051, "count": 99999999},
|
||||
{"id": 17052, "count": 99999999},
|
||||
|
||||
{"id": 21009, "count": 99999999},
|
||||
{"id": 21011, "count": 99999999},
|
||||
{"id": 21012, "count": 99999999},
|
||||
{"id": 21014, "count": 99999999},
|
||||
{"id": 21015, "count": 99999999},
|
||||
{"id": 21042, "count": 99999999},
|
||||
|
||||
{"id": 42083, "count": 9999},
|
||||
{"id": 42084, "count": 9999},
|
||||
{"id": 42085, "count": 9999},
|
||||
{"id": 42086, "count": 9999},
|
||||
{"id": 42087, "count": 9999},
|
||||
{"id": 42088, "count": 9999},
|
||||
{"id": 42176, "count": 9999},
|
||||
{"id": 42177, "count": 9999},
|
||||
{"id": 42178, "count": 9999},
|
||||
{"id": 42179, "count": 9999},
|
||||
{"id": 42180, "count": 9999},
|
||||
{"id": 50059, "count": 1},
|
||||
{"id": 50060, "count": 1},
|
||||
{"id": 50061, "count": 1},
|
||||
{"id": 50062, "count": 1},
|
||||
{"id": 50089, "count": 1},
|
||||
{"id": 50090, "count": 1},
|
||||
{"id": 50091, "count": 1},
|
||||
{"id": 50107, "count": 1},
|
||||
{"id": 50108, "count": 1},
|
||||
{"id": 50109, "count": 1},
|
||||
{ "id": 11004, "count": 99999999 },
|
||||
{ "id": 11013, "count": 999999 },
|
||||
{ "id": 11014, "count": 999999 },
|
||||
{ "id": 11015, "count": 999999 },
|
||||
{ "id": 11016, "count": 999999 },
|
||||
{ "id": 17001, "count": 99999999 },
|
||||
{ "id": 17002, "count": 99999999 },
|
||||
{ "id": 17003, "count": 99999999 },
|
||||
{ "id": 17004, "count": 99999999 },
|
||||
{ "id": 17005, "count": 99999999 },
|
||||
{ "id": 17006, "count": 99999999 },
|
||||
{ "id": 17007, "count": 99999999 },
|
||||
{ "id": 17008, "count": 99999999 },
|
||||
{ "id": 17009, "count": 99999999 },
|
||||
{ "id": 17010, "count": 99999999 },
|
||||
{ "id": 17011, "count": 99999999 },
|
||||
{ "id": 17012, "count": 99999999 },
|
||||
{ "id": 17013, "count": 99999999 },
|
||||
{ "id": 17014, "count": 99999999 },
|
||||
{ "id": 17015, "count": 99999999 },
|
||||
{ "id": 17016, "count": 99999999 },
|
||||
{ "id": 17017, "count": 99999999 },
|
||||
{ "id": 17018, "count": 99999999 },
|
||||
{ "id": 17019, "count": 99999999 },
|
||||
{ "id": 17020, "count": 99999999 },
|
||||
{ "id": 17021, "count": 99999999 },
|
||||
{ "id": 17022, "count": 99999999 },
|
||||
{ "id": 17023, "count": 99999999 },
|
||||
{ "id": 17024, "count": 99999999 },
|
||||
{ "id": 17025, "count": 99999999 },
|
||||
{ "id": 17026, "count": 99999999 },
|
||||
{ "id": 17027, "count": 99999999 },
|
||||
{ "id": 17028, "count": 99999999 },
|
||||
{ "id": 17029, "count": 99999999 },
|
||||
{ "id": 17030, "count": 99999999 },
|
||||
{ "id": 17031, "count": 99999999 },
|
||||
{ "id": 17032, "count": 99999999 },
|
||||
{ "id": 17033, "count": 99999999 },
|
||||
{ "id": 17037, "count": 99999999 },
|
||||
{ "id": 17038, "count": 99999999 },
|
||||
{ "id": 17039, "count": 99999999 },
|
||||
{ "id": 17040, "count": 99999999 },
|
||||
{ "id": 17041, "count": 99999999 },
|
||||
{ "id": 17042, "count": 99999999 },
|
||||
{ "id": 17043, "count": 99999999 },
|
||||
{ "id": 17044, "count": 99999999 },
|
||||
{ "id": 17045, "count": 99999999 },
|
||||
{ "id": 17046, "count": 99999999 },
|
||||
{ "id": 17047, "count": 99999999 },
|
||||
{ "id": 17048, "count": 99999999 },
|
||||
{ "id": 17049, "count": 99999999 },
|
||||
{ "id": 17050, "count": 99999999 },
|
||||
{ "id": 17051, "count": 99999999 },
|
||||
{ "id": 17052, "count": 99999999 },
|
||||
|
||||
{"id": 60001, "count": 8888888},
|
||||
{"id": 60002, "count": 8888888},
|
||||
{"id": 60003, "count": 8888888},
|
||||
{"id": 60004, "count": 8888888},
|
||||
{"id": 60005, "count": 8888888},
|
||||
{"id": 60006, "count": 8888888},
|
||||
{"id": 60007, "count": 8888888},
|
||||
{"id": 60008, "count": 8888888},
|
||||
{"id": 60009, "count": 8888888},
|
||||
{"id": 60011, "count": 8888888},
|
||||
{"id": 60012, "count": 8888888},
|
||||
{"id": 60013, "count": 8888888},
|
||||
{"id": 60014, "count": 8888888},
|
||||
{"id": 60015, "count": 8888888},
|
||||
{"id": 60016, "count": 8888888},
|
||||
{"id": 60017, "count": 8888888},
|
||||
{"id": 60018, "count": 8888888},
|
||||
{"id": 60019, "count": 8888888},
|
||||
{"id": 60021, "count": 8888888},
|
||||
{"id": 60022, "count": 8888888},
|
||||
{"id": 60023, "count": 8888888},
|
||||
{"id": 60024, "count": 8888888},
|
||||
{"id": 60025, "count": 8888888},
|
||||
{"id": 60026, "count": 8888888},
|
||||
{"id": 60027, "count": 8888888},
|
||||
{"id": 60028, "count": 8888888},
|
||||
{"id": 60029, "count": 8888888},
|
||||
{"id": 60031, "count": 8888888},
|
||||
{"id": 60032, "count": 8888888},
|
||||
{"id": 60033, "count": 8888888},
|
||||
{"id": 60034, "count": 8888888},
|
||||
{"id": 60035, "count": 8888888},
|
||||
{"id": 60036, "count": 8888888},
|
||||
{"id": 60037, "count": 8888888},
|
||||
{"id": 60038, "count": 8888888},
|
||||
{"id": 60039, "count": 8888888},
|
||||
{"id": 60041, "count": 8888888},
|
||||
{"id": 60042, "count": 8888888},
|
||||
{"id": 60043, "count": 8888888},
|
||||
{"id": 60044, "count": 8888888},
|
||||
{"id": 60045, "count": 8888888},
|
||||
{"id": 60046, "count": 8888888},
|
||||
{"id": 60047, "count": 8888888},
|
||||
{"id": 60048, "count": 8888888},
|
||||
{"id": 60049, "count": 8888888},
|
||||
{"id": 60051, "count": 8888888},
|
||||
{"id": 60052, "count": 8888888},
|
||||
{"id": 60053, "count": 8888888},
|
||||
{"id": 60054, "count": 8888888},
|
||||
{"id": 60055, "count": 8888888},
|
||||
{"id": 60056, "count": 8888888},
|
||||
{"id": 60057, "count": 8888888},
|
||||
{"id": 60058, "count": 8888888},
|
||||
{"id": 60059, "count": 8888888},
|
||||
{"id": 60060, "count": 8888888},
|
||||
{ "id": 21009, "count": 99999999 },
|
||||
{ "id": 21011, "count": 99999999 },
|
||||
{ "id": 21012, "count": 99999999 },
|
||||
{ "id": 21014, "count": 99999999 },
|
||||
{ "id": 21015, "count": 99999999 },
|
||||
{ "id": 21042, "count": 99999999 },
|
||||
|
||||
{ "id": 42083, "count": 9999 },
|
||||
{ "id": 42084, "count": 9999 },
|
||||
{ "id": 42085, "count": 9999 },
|
||||
{ "id": 42086, "count": 9999 },
|
||||
{ "id": 42087, "count": 9999 },
|
||||
{ "id": 42088, "count": 9999 },
|
||||
{ "id": 42176, "count": 9999 },
|
||||
{ "id": 42177, "count": 9999 },
|
||||
{ "id": 42178, "count": 9999 },
|
||||
{ "id": 42179, "count": 9999 },
|
||||
{ "id": 42180, "count": 9999 },
|
||||
{ "id": 50059, "count": 1 },
|
||||
{ "id": 50060, "count": 1 },
|
||||
{ "id": 50061, "count": 1 },
|
||||
{ "id": 50062, "count": 1 },
|
||||
{ "id": 50089, "count": 1 },
|
||||
{ "id": 50090, "count": 1 },
|
||||
{ "id": 50091, "count": 1 },
|
||||
{ "id": 50107, "count": 1 },
|
||||
{ "id": 50108, "count": 1 },
|
||||
{ "id": 50109, "count": 1 },
|
||||
|
||||
{ "id": 60001, "count": 8888888 },
|
||||
{ "id": 60002, "count": 8888888 },
|
||||
{ "id": 60003, "count": 8888888 },
|
||||
{ "id": 60004, "count": 8888888 },
|
||||
{ "id": 60005, "count": 8888888 },
|
||||
{ "id": 60006, "count": 8888888 },
|
||||
{ "id": 60007, "count": 8888888 },
|
||||
{ "id": 60008, "count": 8888888 },
|
||||
{ "id": 60009, "count": 8888888 },
|
||||
{ "id": 60011, "count": 8888888 },
|
||||
{ "id": 60012, "count": 8888888 },
|
||||
{ "id": 60013, "count": 8888888 },
|
||||
{ "id": 60014, "count": 8888888 },
|
||||
{ "id": 60015, "count": 8888888 },
|
||||
{ "id": 60016, "count": 8888888 },
|
||||
{ "id": 60017, "count": 8888888 },
|
||||
{ "id": 60018, "count": 8888888 },
|
||||
{ "id": 60019, "count": 8888888 },
|
||||
{ "id": 60021, "count": 8888888 },
|
||||
{ "id": 60022, "count": 8888888 },
|
||||
{ "id": 60023, "count": 8888888 },
|
||||
{ "id": 60024, "count": 8888888 },
|
||||
{ "id": 60025, "count": 8888888 },
|
||||
{ "id": 60026, "count": 8888888 },
|
||||
{ "id": 60027, "count": 8888888 },
|
||||
{ "id": 60028, "count": 8888888 },
|
||||
{ "id": 60029, "count": 8888888 },
|
||||
{ "id": 60031, "count": 8888888 },
|
||||
{ "id": 60032, "count": 8888888 },
|
||||
{ "id": 60033, "count": 8888888 },
|
||||
{ "id": 60034, "count": 8888888 },
|
||||
{ "id": 60035, "count": 8888888 },
|
||||
{ "id": 60036, "count": 8888888 },
|
||||
{ "id": 60037, "count": 8888888 },
|
||||
{ "id": 60038, "count": 8888888 },
|
||||
{ "id": 60039, "count": 8888888 },
|
||||
{ "id": 60041, "count": 8888888 },
|
||||
{ "id": 60042, "count": 8888888 },
|
||||
{ "id": 60043, "count": 8888888 },
|
||||
{ "id": 60044, "count": 8888888 },
|
||||
{ "id": 60045, "count": 8888888 },
|
||||
{ "id": 60046, "count": 8888888 },
|
||||
{ "id": 60047, "count": 8888888 },
|
||||
{ "id": 60048, "count": 8888888 },
|
||||
{ "id": 60049, "count": 8888888 },
|
||||
{ "id": 60051, "count": 8888888 },
|
||||
{ "id": 60052, "count": 8888888 },
|
||||
{ "id": 60053, "count": 8888888 },
|
||||
{ "id": 60054, "count": 8888888 },
|
||||
{ "id": 60055, "count": 8888888 },
|
||||
{ "id": 60056, "count": 8888888 },
|
||||
{ "id": 60057, "count": 8888888 },
|
||||
{ "id": 60058, "count": 8888888 },
|
||||
{ "id": 60059, "count": 8888888 },
|
||||
{ "id": 60060, "count": 8888888 },
|
||||
];
|
||||
|
||||
export const DEFAULT_EQUIPS = [
|
||||
{"id": 8, "count": 1},
|
||||
{"id": 108, "count": 1},
|
||||
{"id": 208, "count": 1},
|
||||
{"id": 308, "count": 1},
|
||||
{"id": 408, "count": 1},
|
||||
{"id": 508, "count": 1},
|
||||
{"id": 608, "count": 1},
|
||||
{"id": 708, "count": 1},
|
||||
{"id": 2008, "count": 1},
|
||||
{"id": 2108, "count": 1},
|
||||
{"id": 2208, "count": 1},
|
||||
{"id": 3008, "count": 1},
|
||||
{"id": 3108, "count": 1},
|
||||
{"id": 3208, "count": 1},
|
||||
{"id": 4008, "count": 1},
|
||||
{"id": 4108, "count": 1},
|
||||
{"id": 4208, "count": 1},
|
||||
{"id": 5008, "count": 1},
|
||||
{"id": 5108, "count": 1},
|
||||
{"id": 5208, "count": 1},
|
||||
{"id": 6008, "count": 1},
|
||||
{"id": 6108, "count": 1},
|
||||
{"id": 6208, "count": 1},
|
||||
{"id": 26, "count": 1},
|
||||
{"id": 126, "count": 1},
|
||||
{"id": 226, "count": 1},
|
||||
{"id": 326, "count": 1},
|
||||
{"id": 426, "count": 1},
|
||||
{"id": 526, "count": 1},
|
||||
{"id": 626, "count": 1},
|
||||
{"id": 726, "count": 1},
|
||||
{"id": 2026, "count": 1},
|
||||
{"id": 2126, "count": 1},
|
||||
{"id": 2226, "count": 1},
|
||||
{"id": 3026, "count": 1},
|
||||
{"id": 3126, "count": 1},
|
||||
{"id": 3226, "count": 1},
|
||||
{"id": 4026, "count": 1},
|
||||
{"id": 4126, "count": 1},
|
||||
{"id": 4226, "count": 1},
|
||||
{"id": 5026, "count": 1},
|
||||
{"id": 5126, "count": 1},
|
||||
{"id": 5226, "count": 1},
|
||||
{"id": 6026, "count": 1},
|
||||
{"id": 6126, "count": 1},
|
||||
{"id": 6226, "count": 1},
|
||||
{ "id": 8, "count": 1 },
|
||||
{ "id": 108, "count": 1 },
|
||||
{ "id": 208, "count": 1 },
|
||||
{ "id": 308, "count": 1 },
|
||||
{ "id": 408, "count": 1 },
|
||||
{ "id": 508, "count": 1 },
|
||||
{ "id": 608, "count": 1 },
|
||||
{ "id": 708, "count": 1 },
|
||||
{ "id": 2008, "count": 1 },
|
||||
{ "id": 2108, "count": 1 },
|
||||
{ "id": 2208, "count": 1 },
|
||||
{ "id": 3008, "count": 1 },
|
||||
{ "id": 3108, "count": 1 },
|
||||
{ "id": 3208, "count": 1 },
|
||||
{ "id": 4008, "count": 1 },
|
||||
{ "id": 4108, "count": 1 },
|
||||
{ "id": 4208, "count": 1 },
|
||||
{ "id": 5008, "count": 1 },
|
||||
{ "id": 5108, "count": 1 },
|
||||
{ "id": 5208, "count": 1 },
|
||||
{ "id": 6008, "count": 1 },
|
||||
{ "id": 6108, "count": 1 },
|
||||
{ "id": 6208, "count": 1 },
|
||||
{ "id": 26, "count": 1 },
|
||||
{ "id": 126, "count": 1 },
|
||||
{ "id": 226, "count": 1 },
|
||||
{ "id": 326, "count": 1 },
|
||||
{ "id": 426, "count": 1 },
|
||||
{ "id": 526, "count": 1 },
|
||||
{ "id": 626, "count": 1 },
|
||||
{ "id": 726, "count": 1 },
|
||||
{ "id": 2026, "count": 1 },
|
||||
{ "id": 2126, "count": 1 },
|
||||
{ "id": 2226, "count": 1 },
|
||||
{ "id": 3026, "count": 1 },
|
||||
{ "id": 3126, "count": 1 },
|
||||
{ "id": 3226, "count": 1 },
|
||||
{ "id": 4026, "count": 1 },
|
||||
{ "id": 4126, "count": 1 },
|
||||
{ "id": 4226, "count": 1 },
|
||||
{ "id": 5026, "count": 1 },
|
||||
{ "id": 5126, "count": 1 },
|
||||
{ "id": 5226, "count": 1 },
|
||||
{ "id": 6026, "count": 1 },
|
||||
{ "id": 6126, "count": 1 },
|
||||
{ "id": 6226, "count": 1 },
|
||||
];
|
||||
export const DEFAULT_GOLD = 9999999999;
|
||||
export const DEFAULT_COIN = 9999999999;
|
||||
@@ -228,9 +228,9 @@ export const REDIS_KEY = {
|
||||
|
||||
// 各排行榜对应hash的key
|
||||
export const REDIS_RANK_TO_INFO = new Map([
|
||||
[REDIS_KEY.TOWER_RANK, REDIS_KEY.USER_INFO],
|
||||
[REDIS_KEY.PVP_RANK, REDIS_KEY.USER_INFO],
|
||||
[REDIS_KEY.GUILD_ACTIVE_RANK, REDIS_KEY.GUILD_INFO]
|
||||
[REDIS_KEY.TOWER_RANK, REDIS_KEY.USER_INFO],
|
||||
[REDIS_KEY.PVP_RANK, REDIS_KEY.USER_INFO],
|
||||
[REDIS_KEY.GUILD_ACTIVE_RANK, REDIS_KEY.GUILD_INFO]
|
||||
]);
|
||||
|
||||
export const FUNC_OPT_TYPE = {
|
||||
@@ -244,144 +244,156 @@ export const FUNCS_ID = {
|
||||
}
|
||||
|
||||
export const FRIEND_DROP_TYPE = {
|
||||
COM_BATTLE: 1,
|
||||
SEND_GIFT: 2
|
||||
COM_BATTLE: 1,
|
||||
SEND_GIFT: 2
|
||||
}
|
||||
|
||||
// 每日情谊点上限
|
||||
export const FRIEND_DROP_MAX = {
|
||||
COM_BTL: 150
|
||||
COM_BTL: 150
|
||||
}
|
||||
|
||||
|
||||
export const FILENAME = {
|
||||
DIC_BLUEPRT_COMPOSE: 'dic_blueprt_compose',
|
||||
DIC_BLUEPRT_POSSIBILITY: 'dic_blueprt_possibility',
|
||||
DIC_EXPEDITION: 'dic_expedition',
|
||||
DIC_EXPEDITION_POINT: 'dic_expedition_point',
|
||||
DIC_FUNC_SWITCH: 'dic_func_switch',
|
||||
DIC_GOODS: 'dic_goods',
|
||||
DIC_CHAREXP: 'dic_zyz_charexp',
|
||||
DIC_DAILY: 'dic_zyz_daily',
|
||||
DIC_EVENT: 'dic_zyz_event',
|
||||
DIC_FASHIONS: 'dic_zyz_fashions',
|
||||
DIC_FRIEND_SHIP: 'dic_zyz_friend_ship',
|
||||
DIC_FRIEND_SHIP_LEVEL: 'dic_zyz_friend_ship_level',
|
||||
DIC_GACHA: 'dic_gacha',
|
||||
DIC_GK_BRANCH: 'dic_zyz_gk_branch',
|
||||
DIC_GK_DAILY: 'dic_zyz_gk_daily',
|
||||
DIC_GK_DUNGEON: 'dic_zyz_gk_dungeon',
|
||||
DIC_GK_DUNGEON_ELITE: 'dic_zyz_gk_dungeonElite',
|
||||
DIC_GK_EVENT: 'dic_zyz_gk_event',
|
||||
DIC_GK_EXPEDITION: 'dic_zyz_gk_expedition',
|
||||
DIC_GK_MAIN: 'dic_zyz_gk_main',
|
||||
DIC_GK_MAIN_ELITE: 'dic_zyz_gk_mainElite',
|
||||
DIC_GK_TOWER: 'dic_zyz_gk_tower',
|
||||
DIC_GK_TREASURE: 'dic_zyz_gk_Treasure',
|
||||
DIC_HERO: 'dic_zyz_hero',
|
||||
DIC_HERO_QUALITY_UP: 'dic_zyz_hero_quality_up',
|
||||
DIC_HERO_STAR: 'dic_zyz_hero_star',
|
||||
DIC_HERO_WAKE: 'dic_zyz_hero_wake',
|
||||
DIC_HERO_SKILL: 'dic_zyz_heroskill',
|
||||
DIC_JOB: 'dic_zyz_job',
|
||||
DIC_KING_EXP: 'dic_zyz_kingexp',
|
||||
DIC_CHAR_EXP: 'dic_zyz_charexp',
|
||||
DIC_SE: 'dic_zyz_se',
|
||||
DIC_TOWER_TASK: 'dic_zyz_search',
|
||||
DIC_TOWER: 'dic_zyz_tower',
|
||||
DIC_XUNBAO: 'dic_zyz_xunbao',
|
||||
DIC_QUESTION: 'Questions',
|
||||
DIC_RANDOM_EFFECT_POOL: 'dic_zyz_randomEffectPool',
|
||||
DIC_STRENGTHEN_COST: 'dic_zyz_enhancementCost',
|
||||
DIC_REFINE: 'dic_zyz_jinglian',
|
||||
DIC_HERO_EQUIP: 'dic_zyz_heroEquip',
|
||||
DIC_SUIT: 'dic_zyz_suit',
|
||||
DIC_TITLE: 'dic_zyz_title',
|
||||
DIC_TERAPH: 'dic_zyz_teraph',
|
||||
DIC_SCHOOL: 'dic_zyz_school',
|
||||
DIC_SCHOOL_RATE: 'dic_zyz_schoolRate',
|
||||
DIC_HERO_SCROLL: 'dic_zyz_heroScroll',
|
||||
DIC_PVP_OPPONENT: 'dic_pvp_opponent',
|
||||
DIC_PVP_TEAM_LEVEL: 'dic_pvp_teamLevel',
|
||||
DIC_GK_PVP: 'dic_zyz_gk_pvp',
|
||||
DIC_PVP_REFRESH_CONSUME: 'dic_pvp_refreshConsume',
|
||||
DIC_PVP_HERO_REWARD: 'dic_pvp_heroAccountReward',
|
||||
DIC_PVP_RANK_REWARD: 'dic_pvp_rankReward',
|
||||
DIC_PVP_BOX: 'dic_pvp_boxReward',
|
||||
DIC_GUILD_AUTH: 'dic_army_authority',
|
||||
DIC_GUILD_STRUCTURE_CENTER: 'dic_army_structureCentre',
|
||||
DIC_GUILD_EQUIP_PRODUCE_BASE: 'dic_army_equipProduceBase',
|
||||
DIC_GUILD_BOSS_BASE: 'dic_army_bossBase',
|
||||
DIC_GUILD_TRAIN_BASE: 'dic_army_trainBase',
|
||||
DIC_GUILD_DONATE_BASE: 'dic_army_donateBase',
|
||||
DIC_GUILD_WISH_POOL_BASE: 'dic_army_wishPool',
|
||||
DIC_GUILD_STORE_BASE: 'dic_army_storeBase',
|
||||
DIC_GUILD_POSITION: 'dic_army_position',
|
||||
DIC_ACTIVE_DAY_REWARD: 'dic_army_activeDayReward',
|
||||
DIC_ACTIVE_WEEK_REWARD: 'dic_army_activeWeekReward',
|
||||
DIC_MAIL: 'dic_email_army',
|
||||
DIC_ARMY_TRAIN_JU_DIAN: 'dic_army_trainJuDian',
|
||||
DIC_ARMY_TRAIN_SOLO_REWARD: 'dic_army_trainSoloReward',
|
||||
DIC_ARMY_ACTIVE_POINT_WAYS: 'dic_army_activePointWays',
|
||||
DIC_ARMY_DEVELOPMENTCONSUME: 'dic_army_developmentConsume',
|
||||
DIC_ARMY_BOSS_RANK_REWARD: 'dic_army_bossrankReward',
|
||||
DIC_ARMY_DONATE_BOX_REWARD: 'dic_army_donateBoxReward',
|
||||
DIC_ROLE_FRIEND: 'dic_zyz_friends',
|
||||
DIC_ROLE_FRIEND_LEVEL: 'dic_zyz_closelevel'
|
||||
DIC_BLUEPRT_COMPOSE: 'dic_blueprt_compose',
|
||||
DIC_BLUEPRT_POSSIBILITY: 'dic_blueprt_possibility',
|
||||
DIC_EXPEDITION: 'dic_expedition',
|
||||
DIC_EXPEDITION_POINT: 'dic_expedition_point',
|
||||
DIC_FUNC_SWITCH: 'dic_func_switch',
|
||||
DIC_GOODS: 'dic_goods',
|
||||
DIC_CHAREXP: 'dic_zyz_charexp',
|
||||
DIC_DAILY: 'dic_zyz_daily',
|
||||
DIC_EVENT: 'dic_zyz_event',
|
||||
DIC_FASHIONS: 'dic_zyz_fashions',
|
||||
DIC_FRIEND_SHIP: 'dic_zyz_friend_ship',
|
||||
DIC_FRIEND_SHIP_LEVEL: 'dic_zyz_friend_ship_level',
|
||||
DIC_GACHA: 'dic_gacha',
|
||||
DIC_GK_BRANCH: 'dic_zyz_gk_branch',
|
||||
DIC_GK_DAILY: 'dic_zyz_gk_daily',
|
||||
DIC_GK_DUNGEON: 'dic_zyz_gk_dungeon',
|
||||
DIC_GK_DUNGEON_ELITE: 'dic_zyz_gk_dungeonElite',
|
||||
DIC_GK_EVENT: 'dic_zyz_gk_event',
|
||||
DIC_GK_EXPEDITION: 'dic_zyz_gk_expedition',
|
||||
DIC_GK_MAIN: 'dic_zyz_gk_main',
|
||||
DIC_GK_MAIN_ELITE: 'dic_zyz_gk_mainElite',
|
||||
DIC_GK_TOWER: 'dic_zyz_gk_tower',
|
||||
DIC_GK_TREASURE: 'dic_zyz_gk_Treasure',
|
||||
DIC_HERO: 'dic_zyz_hero',
|
||||
DIC_HERO_QUALITY_UP: 'dic_zyz_hero_quality_up',
|
||||
DIC_HERO_STAR: 'dic_zyz_hero_star',
|
||||
DIC_HERO_WAKE: 'dic_zyz_hero_wake',
|
||||
DIC_HERO_SKILL: 'dic_zyz_heroskill',
|
||||
DIC_JOB: 'dic_zyz_job',
|
||||
DIC_KING_EXP: 'dic_zyz_kingexp',
|
||||
DIC_CHAR_EXP: 'dic_zyz_charexp',
|
||||
DIC_SE: 'dic_zyz_se',
|
||||
DIC_TOWER_TASK: 'dic_zyz_search',
|
||||
DIC_TOWER: 'dic_zyz_tower',
|
||||
DIC_XUNBAO: 'dic_zyz_xunbao',
|
||||
DIC_QUESTION: 'Questions',
|
||||
DIC_RANDOM_EFFECT_POOL: 'dic_zyz_randomEffectPool',
|
||||
DIC_STRENGTHEN_COST: 'dic_zyz_enhancementCost',
|
||||
DIC_REFINE: 'dic_zyz_jinglian',
|
||||
DIC_HERO_EQUIP: 'dic_zyz_heroEquip',
|
||||
DIC_SUIT: 'dic_zyz_suit',
|
||||
DIC_TITLE: 'dic_zyz_title',
|
||||
DIC_TERAPH: 'dic_zyz_teraph',
|
||||
DIC_SCHOOL: 'dic_zyz_school',
|
||||
DIC_SCHOOL_RATE: 'dic_zyz_schoolRate',
|
||||
DIC_HERO_SCROLL: 'dic_zyz_heroScroll',
|
||||
DIC_PVP_OPPONENT: 'dic_pvp_opponent',
|
||||
DIC_PVP_TEAM_LEVEL: 'dic_pvp_teamLevel',
|
||||
DIC_GK_PVP: 'dic_zyz_gk_pvp',
|
||||
DIC_PVP_REFRESH_CONSUME: 'dic_pvp_refreshConsume',
|
||||
DIC_PVP_HERO_REWARD: 'dic_pvp_heroAccountReward',
|
||||
DIC_PVP_RANK_REWARD: 'dic_pvp_rankReward',
|
||||
DIC_PVP_BOX: 'dic_pvp_boxReward',
|
||||
DIC_GUILD_AUTH: 'dic_army_authority',
|
||||
DIC_GUILD_STRUCTURE_CENTER: 'dic_army_structureCentre',
|
||||
DIC_GUILD_EQUIP_PRODUCE_BASE: 'dic_army_equipProduceBase',
|
||||
DIC_GUILD_BOSS_BASE: 'dic_army_bossBase',
|
||||
DIC_GUILD_TRAIN_BASE: 'dic_army_trainBase',
|
||||
DIC_GUILD_DONATE_BASE: 'dic_army_donateBase',
|
||||
DIC_GUILD_WISH_POOL_BASE: 'dic_army_wishPool',
|
||||
DIC_GUILD_STORE_BASE: 'dic_army_storeBase',
|
||||
DIC_GUILD_POSITION: 'dic_army_position',
|
||||
DIC_ACTIVE_DAY_REWARD: 'dic_army_activeDayReward',
|
||||
DIC_ACTIVE_WEEK_REWARD: 'dic_army_activeWeekReward',
|
||||
DIC_MAIL: 'dic_email_content',
|
||||
DIC_ARMY_TRAIN_JU_DIAN: 'dic_army_trainJuDian',
|
||||
DIC_ARMY_TRAIN_SOLO_REWARD: 'dic_army_trainSoloReward',
|
||||
DIC_ARMY_ACTIVE_POINT_WAYS: 'dic_army_activePointWays',
|
||||
DIC_ARMY_DEVELOPMENTCONSUME: 'dic_army_developmentConsume',
|
||||
DIC_ARMY_BOSS_RANK_REWARD: 'dic_army_bossrankReward',
|
||||
DIC_ARMY_DONATE_BOX_REWARD: 'dic_army_donateBoxReward',
|
||||
DIC_ROLE_FRIEND: 'dic_zyz_friends',
|
||||
DIC_ROLE_FRIEND_LEVEL: 'dic_zyz_closelevel'
|
||||
}
|
||||
|
||||
export const WAR_RELATE_TABLES = [
|
||||
FILENAME.DIC_GK_BRANCH,
|
||||
FILENAME.DIC_GK_DAILY,
|
||||
FILENAME.DIC_GK_DUNGEON,
|
||||
FILENAME.DIC_GK_DUNGEON_ELITE,
|
||||
FILENAME.DIC_GK_EVENT,
|
||||
FILENAME.DIC_GK_EXPEDITION,
|
||||
FILENAME.DIC_GK_MAIN,
|
||||
FILENAME.DIC_GK_MAIN_ELITE,
|
||||
FILENAME.DIC_GK_TOWER,
|
||||
FILENAME.DIC_GK_TREASURE,
|
||||
FILENAME.DIC_GK_PVP
|
||||
FILENAME.DIC_GK_BRANCH,
|
||||
FILENAME.DIC_GK_DAILY,
|
||||
FILENAME.DIC_GK_DUNGEON,
|
||||
FILENAME.DIC_GK_DUNGEON_ELITE,
|
||||
FILENAME.DIC_GK_EVENT,
|
||||
FILENAME.DIC_GK_EXPEDITION,
|
||||
FILENAME.DIC_GK_MAIN,
|
||||
FILENAME.DIC_GK_MAIN_ELITE,
|
||||
FILENAME.DIC_GK_TOWER,
|
||||
FILENAME.DIC_GK_TREASURE,
|
||||
FILENAME.DIC_GK_PVP
|
||||
]
|
||||
|
||||
// 装备栏强化类型
|
||||
export const EQUIP_STRENGTHEN_TYPE = {
|
||||
SINGLE: 1, // 单件单级强化
|
||||
SINGLE_QUICK: 2, // 单件一键强化
|
||||
ALL_QUICK: 3 // 武将全部装备栏一键强化
|
||||
SINGLE: 1, // 单件单级强化
|
||||
SINGLE_QUICK: 2, // 单件一键强化
|
||||
ALL_QUICK: 3 // 武将全部装备栏一键强化
|
||||
}
|
||||
|
||||
// 邮件内容类型
|
||||
export const MAIL_TYPE = {
|
||||
SEND_MAIL: 0,
|
||||
GUILD_APPLY_REFUSE: 1,
|
||||
GUILD_BE_IMPEACH: 2,
|
||||
GUILD_BE_SET_LEADER: 3,
|
||||
GUILD_BE_KICK: 4,
|
||||
GUILD_ACTIVE_REWARD: 5,
|
||||
GUILD_BE_SET_MANAGER: 6,
|
||||
GUILD_BE_SET_MEMBER: 7
|
||||
SEND_MAIL: 0,
|
||||
GUILD_APPLY_REFUSE: 1,
|
||||
GUILD_BE_IMPEACH: 2,
|
||||
GUILD_BE_SET_LEADER: 3,
|
||||
GUILD_BE_KICK: 4,
|
||||
GUILD_ACTIVE_REWARD: 5,
|
||||
GUILD_BE_SET_MANAGER: 6,
|
||||
GUILD_BE_SET_MEMBER: 7,
|
||||
GUILD_BOSS_OPEN: 8,
|
||||
GUILD_BOSS_REWARD: 9,
|
||||
GUILD_TRAIN_REWARD: 10,
|
||||
WISH_POOL_REWARD: 11,
|
||||
PVP_RESULT: 12,
|
||||
PVP_RANK_REWARD: 13
|
||||
};
|
||||
|
||||
export const CHAT_SERVER = 'chat-server-1';
|
||||
|
||||
export enum FRIEND_RELATION_TYPE {
|
||||
NORMAL = 1,
|
||||
HAS_FRIEND = 2,
|
||||
HAS_BLOCKED = 3,
|
||||
MYSELF = 4
|
||||
NORMAL = 1,
|
||||
HAS_FRIEND = 2,
|
||||
HAS_BLOCKED = 3,
|
||||
MYSELF = 4
|
||||
}
|
||||
|
||||
export enum POPULATE_TYPE {
|
||||
NOT = 0,
|
||||
FRIEND = 1,
|
||||
BLACKLIST = 2,
|
||||
FRIENDSHIP = 3
|
||||
NOT = 0,
|
||||
FRIEND = 1,
|
||||
BLACKLIST = 2,
|
||||
FRIENDSHIP = 3
|
||||
}
|
||||
|
||||
export enum BLOCK_OPEATE {
|
||||
<<<<<<< HEAD
|
||||
ADD = 1,
|
||||
REMOVE_BLACK = 2,
|
||||
REMOVE_AND_APPLY = 3,
|
||||
REMOVE_FRIEND = 4
|
||||
=======
|
||||
ADD = 1,
|
||||
REMOVE = 2,
|
||||
REMOVE_AND_APPLY = 3
|
||||
>>>>>>> cf60d7c... 邮件 活跃度下发
|
||||
}
|
||||
13
shared/consts/dataName.ts
Normal file
13
shared/consts/dataName.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
export enum DATA_NAME {
|
||||
BOSS_SCRIPT = 'BossInstance',
|
||||
TRAIN = 'BossInstance',
|
||||
TRAIN_BOX = 'BossInstanceBox',
|
||||
GUILD = 'Guild',
|
||||
GUILD_REFINE = 'GuildRefine',
|
||||
GUILD_ASSIST_REFINE = 'GuildAssistRefine',
|
||||
UP_STRUCTURE = 'GuildStructure',
|
||||
JOIN_GUILD = 'JoinGuild',
|
||||
REFRESH_ACTIVE = 'GuildRefActive',
|
||||
WEEKLY_GUILD_SUM = 'WeeklyGuildSum', // 每周结算活跃和奖励
|
||||
GAMEMAIL = 'Mail',
|
||||
}
|
||||
68
shared/db/GMMail.ts
Normal file
68
shared/db/GMMail.ts
Normal file
@@ -0,0 +1,68 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { now } from 'moment';
|
||||
class RewardInter {
|
||||
id: number;
|
||||
count: number;
|
||||
}
|
||||
class SendRole {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
status: number;
|
||||
}
|
||||
|
||||
export default class GMMail extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
serverId: number;
|
||||
|
||||
@prop({ required: true })
|
||||
sendRoles: SendRole[];
|
||||
|
||||
@prop({ required: true, type: RewardInter, default: [], _id: false })
|
||||
goods: RewardInter[];
|
||||
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
sendTime: number;
|
||||
|
||||
@prop({ required: true })
|
||||
endTime: number;
|
||||
|
||||
@prop({ required: true })
|
||||
content: string;
|
||||
|
||||
@prop({ required: true })
|
||||
sendName: string;
|
||||
|
||||
@prop({ required: true })
|
||||
gmMailType: number; //1:群体邮件,2:分服务器邮件
|
||||
|
||||
public static async addMail(params: {serverId: number, sendRoles: SendRole[], sendName: string, endTime: number, content: string, gmMailType: number, sendTime?: number, goods?: RewardInter[] }) {
|
||||
const doc = new GMMailModel();
|
||||
const mail = Object.assign(doc.toJSON(), params);
|
||||
await GMMailModel.create(mail);
|
||||
return mail;
|
||||
}
|
||||
|
||||
public static async getGmMailById(_id: string, lean = true) {
|
||||
const result: GMMailType = await GMMailModel.findOne({ _id }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMail(updatedMailAt: number, lean = true) {
|
||||
const result: GMMailType[] = await GMMailModel.find({ $or: [{updatedAt: { $gte: new Date(updatedMailAt) }}, {sendTime: { $lte: nowSeconds() }}], endTime: { $gte: nowSeconds()} }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMails( lean = true) {
|
||||
const result: GMMailType[] = await GMMailModel.find({ endTime: { $gte: nowSeconds() }}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export const GMMailModel = getModelForClass(GMMail);
|
||||
|
||||
export interface GMMailType extends Pick<DocumentType<GMMail>, keyof GMMail> { };
|
||||
109
shared/db/GroupMail.ts
Normal file
109
shared/db/GroupMail.ts
Normal file
@@ -0,0 +1,109 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { SrvRecord } from 'dns';
|
||||
import { MAIL_STATUS } from '../consts/constModules/mailConst';
|
||||
import { select } from 'underscore';
|
||||
class RewardInter {
|
||||
id: number;
|
||||
count: number;
|
||||
}
|
||||
class SendRole {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
@prop({ required: true })
|
||||
status: number;
|
||||
}
|
||||
|
||||
@index({ sendRoles: 1 })
|
||||
@index({ mailId: 1, type: 1 })
|
||||
export default class GroupMail extends BaseModel {
|
||||
@prop({ required: true })
|
||||
sendRoles: SendRole[];
|
||||
|
||||
@prop({ required: true })
|
||||
mailId: string;
|
||||
|
||||
@prop({ required: true, type:RewardInter, default: [], _id: false})
|
||||
goods: RewardInter[];
|
||||
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
sendTime: number;
|
||||
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
endTime: number;
|
||||
|
||||
@prop({ required: true })
|
||||
params: string[];
|
||||
|
||||
@prop({ required: true })
|
||||
mailTemType: number; //1:表示模板邮件,2:表示系统邮件
|
||||
|
||||
@prop({ required: true })
|
||||
sendName: string;
|
||||
public static async addGroupMails(mails: Array<GroupMailType>) {
|
||||
await GroupMailModel.insertMany(mails);
|
||||
}
|
||||
|
||||
public static async addGroupMail(params:{ sendRoles: SendRole[],mailId: string, mailTemType:number, goods?: Array<RewardInter>, sendName?: string, endTime?:number, sendTime?: number, params?:string[] }) {
|
||||
const doc = new GroupMailModel();
|
||||
const mail = Object.assign(doc.toJSON(), params);
|
||||
await GroupMailModel.create(mail);
|
||||
return mail;
|
||||
}
|
||||
|
||||
public static async getGroupMailsByRoleId(roleId: string, lean = true) {
|
||||
const result: GroupMailType[] = await GroupMailModel.findOne({ 'sendRoles.roleId': roleId, 'sendRoles.status': { $ne: -1}, endTime: { $gte: nowSeconds() }}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMail( mailId: string, mailTemType: number, lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOne({ mailId, mailTemType }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async pushRoleMail( roleId: string, mailId: string, mailTemType: number, lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({ mailId, mailTemType }, {$push: {sendRoles: {roleId, status: 0}}}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMailById(_id: string, lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOne({ _id }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateMailByStatus(_id: string, roleId: string, status: number, conditions: number[], lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({ _id, 'sendRoles.roleId': roleId, 'sendRoles.status': {$in: conditions} }, {$set:{ 'sendRoles.$.status': status }}, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async deleteMail(_id: string, roleId: string, status: number, lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({ _id, 'sendRoles.roleId': roleId, }, {$set:{ 'sendRoles.$.status': status }}, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findReadAndRewardsMails(roleId: string, lean = true) {
|
||||
const ids: string[] = await GroupMailModel.find({ 'sendRoles.roleId': roleId, $or:[ {$and: [{'sendRoles.status': MAIL_STATUS.READ, goods: []}]}, {'sendRoles.status': MAIL_STATUS.RECEIVED}] }).select('_id').lean(lean);
|
||||
return ids;
|
||||
}
|
||||
|
||||
public static async updateMailStatus(ids: string[], status: number, roleId: string) {
|
||||
const result: GroupMailType[] = await GroupMailModel.update({_id: {$in: ids}, 'sendRoles.roleId': roleId}, { $set:{ 'sendRoles.$.status': status } });
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async delMail(_id: string, roleId: string, lean = true) {
|
||||
const result: GroupMailType = await GroupMailModel.findOneAndUpdate({ _id, 'sendRoles.roleId': roleId, $or:[ {$and: [{'sendRoles.status': MAIL_STATUS.READ, goods: []}]}, {'sendRoles.status': MAIL_STATUS.RECEIVED}] }, { $set:{ 'sendRoles.$.status': MAIL_STATUS.DELETE } }, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findRewardsMails(roleId: string, lean = true) {
|
||||
const result: GroupMailType[] = await GroupMailModel.find({ 'sendRoles.roleId': roleId, $and: [{'sendRoles.status': MAIL_STATUS.READ, goods: {$ne: []}}] }).select('_id goods').lean(lean);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const GroupMailModel = getModelForClass(GroupMail);
|
||||
|
||||
export interface GroupMailType extends Pick<DocumentType<GroupMail>, keyof GroupMail>{}
|
||||
export type GroupMailTypeParam = Partial<GroupMailType>; // 将所有字段变成可选项
|
||||
@@ -1,46 +1,98 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
|
||||
import { nowSeconds } from '../pubUtils/timeUtil';
|
||||
import { MAIL_STATUS } from '../consts/constModules/mailConst';
|
||||
class RewardInter {
|
||||
id: number;
|
||||
count: number;
|
||||
}
|
||||
@index({ roleId: 1 })
|
||||
@index({ roleId: 1, mailId: 1, type: 1 })
|
||||
|
||||
export default class Mail extends BaseModel {
|
||||
@prop({ required: true })
|
||||
roleId: string;
|
||||
|
||||
@prop({ required: true })
|
||||
mailId: number;
|
||||
mailId: string;
|
||||
|
||||
@prop({ required: true, type:RewardInter, default: [], _id: false})
|
||||
@prop({ required: true, type: RewardInter, default: [], _id: false })
|
||||
goods: RewardInter[];
|
||||
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
sendTime: number;
|
||||
|
||||
@prop({ required: true, default: "" })
|
||||
sendName: string;
|
||||
@prop({ required: true, default: nowSeconds() })
|
||||
sendTime: number;
|
||||
|
||||
@prop({ required: true })
|
||||
content: string;
|
||||
params: string[];
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
status: number;
|
||||
@prop({ required: true, default: MAIL_STATUS.CREATE })
|
||||
status: number;
|
||||
|
||||
@prop({ required: true })
|
||||
mailTemType: number; //1:表示模板邮件,2:表示系统邮件
|
||||
|
||||
@prop({ required: true })
|
||||
sendName: string;
|
||||
|
||||
@prop({ required: true })
|
||||
endTime: number;
|
||||
public static async addMails(mails: Array<MailType>) {
|
||||
await MailModel.insertMany(mails);
|
||||
}
|
||||
|
||||
public static async addMail(params:{ roleId: string, goods: Array<RewardInter>, sendName: string, mailId: number, sendTime?: number, content?:string }) {
|
||||
public static async addMail(params: { roleId: string, goods: Array<RewardInter>, sendName: string, mailId: string, endTime: number, mailTemType: number, params?: string[], sendTime?: number }) {
|
||||
const doc = new MailModel();
|
||||
const mail = Object.assign(doc.toJSON(), params);
|
||||
await MailModel.create(mail);
|
||||
return mail;
|
||||
}
|
||||
|
||||
public static async getMailsByRoleId(roleId: string, lean = true) {
|
||||
const result: MailType[] = await MailModel.find({ roleId, status: { $ne: -1 } }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMail(roleId: string, mailId: string, mailTemType: number, lean = true) {
|
||||
const result: MailType = await MailModel.findOne({ roleId, mailId, mailTemType }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async getMailById(_id: string, lean = true) {
|
||||
const result: MailType = await MailModel.findOne({ _id }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateMailByStatus(_id: string, conditions: number[], update: MailTypeParam, lean = true) {
|
||||
const result: MailType = await MailModel.findOneAndUpdate({ _id, status: { $in: conditions } }, { $set: update }, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateMail(_id: string, update: MailTypeParam, lean = true) {
|
||||
const result: MailType = await MailModel.findOneAndUpdate({ _id }, { $set: update }, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findReadAndRewardsMails(roleId: string, lean = true) {
|
||||
const ids: string[] = await MailModel.find({ roleId, $or: [{ $and: [{ status: MAIL_STATUS.READ, goods: [] }] }, { status: MAIL_STATUS.RECEIVED }] }).select('_id').lean(lean);
|
||||
return ids;
|
||||
}
|
||||
|
||||
public static async updateMailStatus(ids: string[], status: number) {
|
||||
await MailModel.update({ _id: { $in: ids } }, { $set: { status } });
|
||||
}
|
||||
|
||||
public static async delMail(_id: string, lean = true) {
|
||||
const result: MailType = await MailModel.findOneAndUpdate({ _id, $or: [{ $and: [{ status: MAIL_STATUS.READ, goods: [] }] }, { status: MAIL_STATUS.RECEIVED }] }, { $set: { status: MAIL_STATUS.DELETE } }, { new: true }).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async findRewardsMails(roleId: string, lean = true) {
|
||||
const result: MailType[] = await MailModel.find({ roleId, $and: [{ status: MAIL_STATUS.READ, goods: { $ne: [] } }] }).select('_id goods').lean(lean);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export const MailModel = getModelForClass(Mail);
|
||||
|
||||
export interface MailType extends Pick<DocumentType<Mail>, keyof Mail> { };
|
||||
export interface MailType extends Pick<DocumentType<Mail>, keyof Mail> { };
|
||||
export type MailTypeParam = Partial<MailType>; // 将所有字段变成可选项
|
||||
|
||||
@@ -224,7 +224,8 @@ export default class Role extends BaseModel {
|
||||
blockCnt: number; // 黑名单人数
|
||||
@prop({ required: true, default: 0 })
|
||||
recFrdApplyCnt: number; // 玩家收取好友申请数量
|
||||
|
||||
@prop({ required: true, default: 0 })
|
||||
updatedMailAt: number;
|
||||
public static async findAllByUid(uid: number, lean = true) {
|
||||
const role: RoleType[] = await RoleModel.find({ 'userInfo.uid': uid }).select('roleId roleName serverId').lean(lean);
|
||||
return role;
|
||||
|
||||
@@ -7,14 +7,16 @@ export interface DicMail {
|
||||
readonly id: number;
|
||||
// 内容 %d 替换
|
||||
readonly content: string;
|
||||
readonly time: number;
|
||||
}
|
||||
|
||||
const str = readJsonFile(FILENAME.DIC_MAIL);
|
||||
let arr = JSON.parse(str);
|
||||
|
||||
export const dicMail = new Map<number, string>();
|
||||
export const dicMail = new Map<number, DicMail>();
|
||||
|
||||
arr.forEach(o => {
|
||||
dicMail.set(o.id, o.content);
|
||||
o.time = o.time * 24 * 60 * 60;
|
||||
dicMail.set(o.id, o);
|
||||
});
|
||||
arr = undefined;
|
||||
@@ -57,6 +57,8 @@ export interface DicBossBase {
|
||||
readonly reward: RewardInter[];
|
||||
|
||||
readonly consume: number;
|
||||
|
||||
readonly opencost: number;
|
||||
}
|
||||
|
||||
const DicBossKeys: KeysEnum<DicBossBase> = {
|
||||
@@ -65,7 +67,8 @@ const DicBossKeys: KeysEnum<DicBossBase> = {
|
||||
bossLevel: true,
|
||||
wars: true,
|
||||
reward: true,
|
||||
consume: true
|
||||
consume: true,
|
||||
opencost: true
|
||||
};
|
||||
|
||||
// 练兵场
|
||||
|
||||
38
shared/pubUtils/gmData/gmDataUtil.ts
Normal file
38
shared/pubUtils/gmData/gmDataUtil.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import { mailInit, setMails, GMMail } from '../gmData/gmMail';
|
||||
import { nowSeconds } from '../timeUtil';
|
||||
const ALL_SERVER = 0;
|
||||
export let gmData:any = {};
|
||||
export async function init() {
|
||||
gmData.mails = await mailInit();
|
||||
}
|
||||
|
||||
export function getGmMails(updatedMailAt: number, serverId: number) {
|
||||
let list = [];
|
||||
let serverIds = [serverId, ALL_SERVER];
|
||||
for (let serverId of serverIds) {
|
||||
if (!gmData.mails.get(serverId))
|
||||
continue;
|
||||
gmData.mails.get(serverId).map(({updatedAt, sendTime, endTime, id, sendRoles, goods, content, gmMailType})=>{
|
||||
if (updatedAt >= updatedMailAt || sendTime > updatedMailAt || endTime < nowSeconds() )
|
||||
list.push({updatedAt, sendTime, endTime, id, sendRoles, goods, content, gmMailType});
|
||||
});
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
export function getGmMailById(id: string, serverId: number) {
|
||||
let gmMail;
|
||||
if (!!gmData.mails.get(serverId)) {
|
||||
gmMail = gmData.mails.get(serverId).get(id);
|
||||
}
|
||||
if (!gmMail) {
|
||||
if (!!gmData.mails.get(ALL_SERVER)) {
|
||||
gmMail = gmData.mails.get(ALL_SERVER).get(id);
|
||||
}
|
||||
}
|
||||
return gmMail;
|
||||
}
|
||||
|
||||
export function setGmMails(mails: GMMail[]) {
|
||||
setMails(mails, gmData.mails);
|
||||
}
|
||||
59
shared/pubUtils/gmData/gmMail.ts
Normal file
59
shared/pubUtils/gmData/gmMail.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
type KeysEnum<T> = { [P in keyof Required<T>]: true };
|
||||
import { RewardInter } from '../interface';
|
||||
import { GMMailModel } from '../../db/GMMail';
|
||||
const _ = require('lodash');
|
||||
|
||||
export interface GMMail {
|
||||
readonly id: string;
|
||||
readonly sendRoles?: Array<{roleId: string, status: number}>;
|
||||
readonly goods: Array<RewardInter>;
|
||||
readonly sendTime: number;
|
||||
readonly endTime: number;
|
||||
readonly content: string;
|
||||
readonly gmMailType: number;
|
||||
readonly updatedAt: number;
|
||||
readonly serverId: number;
|
||||
readonly sendName: string;
|
||||
}
|
||||
|
||||
const GMMailKeys: KeysEnum<GMMail> = {
|
||||
id: true,
|
||||
sendRoles: true,
|
||||
goods: true,
|
||||
sendTime: true,
|
||||
endTime: true,
|
||||
content: true,
|
||||
gmMailType: true,
|
||||
updatedAt: true,
|
||||
serverId: true,
|
||||
sendName: true
|
||||
};
|
||||
|
||||
export async function mailInit() {
|
||||
let gmMail = new Map<number, any>();
|
||||
let mails = await GMMailModel.getMails();
|
||||
mails.map((o:any)=>{
|
||||
o.id = o._id;
|
||||
o.updatedAt = Math.floor(o.updatedAt.getTime()/1000);
|
||||
let mail = gmMail.get(o.serverId);
|
||||
if (!mail)
|
||||
mail = new Map<string, GMMail>();
|
||||
mail.set(o._id, _.pick(o, Object.keys(GMMailKeys)));
|
||||
gmMail.set(o.serverId, mail);
|
||||
});
|
||||
return gmMail;
|
||||
}
|
||||
|
||||
|
||||
export function setMails(mails:GMMail[], gmMail) {
|
||||
mails.map((o:any)=>{
|
||||
o.id = o._id;
|
||||
o.updatedAt = Math.floor(o.updatedAt.getTime()/1000);
|
||||
let mail = gmMail.get(o.serverId);
|
||||
if (!mail)
|
||||
mail = new Map<string, GMMail>();
|
||||
mail.set(o._id, _.pick(o, Object.keys(GMMailKeys)));
|
||||
gmMail.set(o.serverId, mail);
|
||||
});
|
||||
}
|
||||
@@ -104,6 +104,18 @@ export interface Uid {
|
||||
|
||||
export interface pushMail {
|
||||
route: string;
|
||||
data:any[];
|
||||
uids:Uid[];
|
||||
}
|
||||
data: mailData[];
|
||||
uids: Uid[];
|
||||
}
|
||||
|
||||
export interface mailData {
|
||||
id: string;
|
||||
mailId: string;
|
||||
goods: RewardInter[];
|
||||
sendTime: number;
|
||||
endTime: number;
|
||||
content: string;
|
||||
status: number;
|
||||
mailType: number;
|
||||
sendName: string;
|
||||
}
|
||||
67
shared/resource/jsons/dic_email_content.json
Normal file
67
shared/resource/jsons/dic_email_content.json
Normal file
@@ -0,0 +1,67 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"content": "您对军团%d的申请被拒绝",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"content": "由于被弹劾,您在军团%d的大将军职务已卸任",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"content": "您被任命为军团%d的大将军",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"content": "您被军团%d踢出",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"content": "周活跃分成奖励",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"content": "您被任命为军团%d的管理",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"content": "您已卸任军团%d的管理",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"content": "小将军,您的军团已开启boss%d,请赶往支援",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"content": "恭喜小将军,军团上下一心,已成功压制boss%d,您在此次压制中的排名为第%d名,获得如下奖励:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"content": "小将军,您在上周军团练兵场中有奖励尚未领取,奖励如下:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"content": "小将军,%d赠送您一个%d,请查收:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"content": "亲爱的小将军,您在%d赛季结算奖励如下:",
|
||||
"time": 24
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"content": "恭喜小将军,您在%d赛季最终获得了第%d名,获得如下奖励:",
|
||||
"time": 24
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user