This commit is contained in:
xy
2026-03-13 01:38:40 +00:00
parent e6e4f88257
commit 28855885cd
311 changed files with 89544 additions and 94350 deletions

View File

@@ -146,8 +146,8 @@ export default class GVGLeagueFarm extends BaseModel {
const fieldResult: GVGLeagueFarmType[] = await GVGLeagueFarmModel.find({ configId, leagueCode, farmId, lockRoleId: roleId, harvestTime: { $lt: nowSeconds() } }).lean();
const _ids = fieldResult.map(cur => cur._id);
const result = await GVGLeagueFarmModel.updateMany({ _id: { $in: _ids } },
{ $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '', seedType: 0, index: 0 }}, { new: true });
if(result.modifiedCount == 0) return [];
{ $set: { unlockTime: 0, harvestTime: 0, lockRoleId: '', lockRoleName: '', seedType: 0, index: 0 } });
if((result as any).nModified == 0) return [];
return fieldResult
}

View File

@@ -109,7 +109,10 @@ export default class Region extends BaseModel {
}
public static async findRegionByEnv(env: string) {
console.log('****** findRegionByEnv env:', env);
console.log('****** findRegionByEnv RegionModel:', RegionModel);
const rec: RegionType = await RegionModel.findOne({ env }).select('-_id').lean();
console.log('****** findRegionByEnv rec:', rec);
return rec;
}

View File

@@ -11,7 +11,7 @@ const moment = require('moment');
@index({ tel: 1 })
export default class Sms extends BaseModel {
@prop({ required: true, set: (val: string) => aesEncryptcfb(val, ENCRYPT_KEY, ENCRYPT_IV), get: (val: string) => aesDecryptcfb(val, ENCRYPT_KEY, ENCRYPT_IV) })
@prop({ required: true, set: (val: string) => aesEncryptcfb(val, ENCRYPT_KEY, ENCRYPT_IV), get: (val: string) => aesDecryptcfb(val, ENCRYPT_KEY, ENCRYPT_IV) })
tel: string;
@prop({ required: true })
@@ -33,7 +33,11 @@ export default class Sms extends BaseModel {
isFixed: boolean;
public static async findByTel(tel: string, lean = true) {
console.log(4);
const sms: SmsType = await smsModel.findOne({ tel }).lean(lean);
console.log(sms);
return sms;
}
@@ -71,17 +75,19 @@ export default class Sms extends BaseModel {
public static async fixSms(tel: string) {
const sms: SmsType = await smsModel.findOneAndUpdate({ tel }, { $setOnInsert: {
tel,
code: generateNum(6),
used: false,
updateTime: new Date(),
countToday: 1
}, $set: { isFixed: true } }, {new: true, upsert: true}).lean({ getters: true });
const sms: SmsType = await smsModel.findOneAndUpdate({ tel }, {
$setOnInsert: {
tel,
code: generateNum(6),
used: false,
updateTime: new Date(),
countToday: 1
}, $set: { isFixed: true }
}, { new: true, upsert: true }).lean({ getters: true });
return sms;
}
}
export const smsModel = getModelForClass(Sms);
export interface SmsType extends Pick<DocumentType<Sms>, keyof Sms>{};
export interface SmsType extends Pick<DocumentType<Sms>, keyof Sms> { };

View File

@@ -12,13 +12,13 @@ const publicKey = fs.readFileSync(path.resolve(__dirname, `../resource/publicKey
export async function checkWhiteList(env: string, ip: string, uid: number) {
if(ip) {
if (ip) {
let result = await WhiteListModel.checkIp(env, ip);
if(!!result) return true;
if (!!result) return true;
}
if(uid) {
if (uid) {
let result = await WhiteListModel.checkUid(env, uid);
if(!!result) return true;
if (!!result) return true;
}
return false
}
@@ -30,20 +30,20 @@ export class MsgEncrypt {
private encodeV: string = '';
constructor(data: { k?: string, v?: string, encodeK?: string, encodeV?: string, originK?: string, originV?: string }) {
if(data.k && data.v) {
if (data.k && data.v) {
this.encodeAndSetKv(data.k, data.v);
}
if(data.encodeK && data.encodeV) {
if (data.encodeK && data.encodeV) {
this.decodeAndSetKv(data.encodeK, data.encodeV);
}
if(data.originK && data.originV) {
if (data.originK && data.originV) {
this.k = data.originK;
this.v = data.originV;
}
}
public decryptMsg(data: string) {
if(!data) return false
if (!data) return false
try {
const decodeStr = aesDecrypt(data, this.k, this.v);
@@ -51,32 +51,32 @@ export class MsgEncrypt {
let body = JSON.parse(decodeStr);
return body
} catch(e) {
} catch (e) {
console.error(e);
return false;
}
}
public encryptMsg(json: Object) {
if(!isJSON(json)) return false;
if (!isJSON(json)) return false;
try {
const encodeStr = aesEncrypt(JSON.stringify(json), this.k, this.v);
// console.log('encode str:', encodeStr);
return encodeStr;
} catch(e) {
} catch (e) {
console.error(e);
return false;
}
}
public decodeAndSetKv(requestK: string, requestV: string) {
if(requestK) {
if (requestK) {
this.encodeK = requestK;
this.k = this.privateDecrypt(Buffer.from(requestK, 'base64'));
}
if(requestV) {
if (requestV) {
this.encodeV = requestV;
this.v = this.privateDecrypt(Buffer.from(requestV, 'base64'));
}
@@ -93,26 +93,26 @@ export class MsgEncrypt {
private privateDecrypt(encryptMsg: Buffer) {
const decryptMsg = crypto.privateDecrypt(
{ key: privateKey, padding: crypto.constants.RSA_PKCS1_PADDING },
encryptMsg
{ key: privateKey, padding: crypto.constants.RSA_PKCS1_PADDING },
encryptMsg
);
return decryptMsg.toString();
}
private getRsaEncodedData(original: string) {
const encryptMsg = crypto.publicEncrypt(
{ key: publicKey, padding: crypto.constants.RSA_PKCS1_PADDING },
Buffer.from(original)
);
);
return encryptMsg.toString('base64');
}
private encodeAndSetKv(k: string, v: string) {
if(k) {
if (k) {
this.k = k;
this.encodeK = this.getRsaEncodedData(k);
}
if(v) {
if (v) {
this.v = v;
this.encodeV = this.getRsaEncodedData(v);
}

View File

@@ -906,11 +906,28 @@ export function getArrayOfNumber(len: number) {
// 比较以 . 分隔的版本号。返回 0 则版本号相等,返回正数则 versionA 大,返回负数则 versionB 大
export function compareVersion(versionA: string, versionB: string) {
if (!versionA && !versionB) {
return 0;
}
if (!versionA) {
return -1;
}
if (!versionB) {
return 1;
}
var vA = versionA.split('.');
var vB = versionB.split('.');
for (var i = 0; i < vA.length; ++i) {
var a = parseInt(vA[i]);
var b = parseInt(vB[i] || '0');
if (isNaN(a) || isNaN(b)) {
if (a === b) {
continue;
} else {
return isNaN(a) ? -1 : 1;
}
}
if (a === b) {
} else {

View File

@@ -0,0 +1,19 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA3z9t4t3e7r6u9v8y7x6s5d4f3g2h1j0k9l8m7n6o5p4q3r2t
1u0v9w8x7y6z5a4b3c2d1e0f/g9h8i7j6k5l4m3n2o1p0q/r9s8t7u6v5w4x3y2
z1a0b9c8d7e6f5g4h3i2j1k0l9m8n7o6p5q4r3s2t1u0v/w8x7y6z5a4b3c2d1e
0f9g8h7i6j5k4l3m2n1o0p9q8r7s6t5u4v3w2x1y0z/a9b8c7d6e5f4g3h2i1j0
k9l8m7n6o5p4q3r2t1u0v9w8x7y6z5a4b3c2d1e0f8g7h6i5j4k3l2m1n0o9p8q
7r6s5t4u3v2w1x0y9z8a7b6c5d4e3f2g1h0i9j8k7l6m5n4o3p2q1r0s9t8u7v6
w5x4y3z2a1b0c9d8e7f6g5h4i3j2k1l0m9n8o7p6q5r4s3t2u1v0w9x8y7z6a5b
4c3d2e1f0/g9h8i7j6k5l4m3n2o1p0q9r8s7t6u5v4w3x2y1z0a9b8c7d6e5f4g
3h2i1j0k9l8m7n6o5p4q3r2t1u0v9w8x7y6z5a4b3c2d1e0f7g6h5i4j3k2l1m0
n9o8p7q6r5s4t3u2v1w0x9y8z7a6b5c4d3e2f1g0h9i8j7k6l5m4n3o2p1q0r9s
8t7u6v5w4x3y2z1a0b9c8d7e6f5g4h3i2j1k0l9m8n7o6p5q4r3s2t1u0v/w8x
7y6z5a4b3c2d1e0f9g8h7i6j5k4l3m2n1o0p9q8r7s6t5u4v3w2x1y0z/a9b8c7
d6e5f4g3h2i1j0k9l8m7n6o5p4q3r2t1u0v9w8x7y6z5a4b3c2d1e0f8g7h6i5j
4k3l2m1n0o9p8q7r6s5t4u3v2w1x0y9z8a7b6c5d4e3f2g1h0i9j8k7l6m5n4o3
p2q1r0s9t8u7v6w5x4y3z2a1b0c9d8e7f6g5h4i3j2k1l0m9n8o7p6q5r4s3t2u
1v0w9x8y7z6a5b4c3d2e1f0/g9h8i7j6k5l4m3n2o1p0q9r8s7t6u5v4w3x2y1z
0a9b8c7d6e5f4g3h2i1j0k9l8m7n6o5p4q3r2t1u0v9w8x7y6z5a4b3c2d1e0f7
-----END RSA PRIVATE KEY-----

View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDvMNFFkoHvvr7l
/mVXf5znhN8opWTbW5lK6EWi7k0xPKhFxl2WWow+JbowIXRa8UmMZyrk6DUqLLWJ
Ha2B3B/WXHJ00S4LCFE3UO0XF1rLJ3qYCRkDed+O+/AvykcWsNUOG2LApscjOfsd
xuO/RBY6sEkSnZNsvxeEbBXKf7tD2pSo+RwW7/h1RN4zqWRwMP72e4wqqd6yCEEU
rHre900dMoz0lckbtK9uEsqXonsCpkQtVqPNie2hiUcOCXrRQbCoEA9Nirzm+UrV
zqPYDUu+l6sixe8lLSbTRPaCKJ36mjQoWJ9HQN0Nji9THtkbWadBc9P+uc0M3266
Pa2tHVbHAgMBAAECggEAZpfbyymSDhEUtHWvZh5YYH1/cmGupt/dGmISLFZmSa4o
xvTUg38HFEj+WVKgI7nGwDAoF9L5qsNOgid2mnKePUWd2jk2tIi2vTE64GKmEOk4
DiooznLhzuSFGxp572OdntVkQBnI5HUkHpuGaC1+E2I1lYR9DXHRVn09w4OSAQHV
4XTODIxhb09o1IB1vMp6OF1b5WBTwHopDWMUSuoJbHv0B8UoO176/FT2qV/53qKn
CjIazDNycn0zl/nFWInvIY3WAAMyANPFWfgjDfBQ/pvY7yF67x8fk16ezSLhKZ6J
GSN+CEaYm6KHg5HsXWNrSy2RM8FCex2m6fJalFi7gQKBgQD0AMGimIofydbyYYH1
pP8vJfzGXjnzF6z7pS7lKADruHDYUoCfo8QTpsZ7WNBPw1j2QPWpZP+1RC35DhA4
Wp17riWPLDSTA1XToqPk4V7EQdLXrbv//W14NDHzML0RfXhgmlUq7f38VhmBy/d8
6ALhl99UPrzgl1ZyXSrciRl9JwKBgQD6831UlFw2Ex1pzx5leZMxlJMPk9NXVRbA
/Hw0FjzZEvZppeDse5JY1FusWmQy35mbQMEtIcs9IypmH3jD0UzDhl/zEB0B6K+Y
OXlGrTYpXcwPqg5zYnPU/n8YHu7xaK4tm8csVP5PyNJca10zqX8E6i2H6oOK2JUd
vE3FeiydYQKBgGxABafwCp9NuXmwvqpPOBMfxEPxO75YS5scznBFzhrFqfKer4ej
bPLW84l3fntUjBw794DeWP9/LvImRhXqRaHAQdOB5hUuzp3kstdxEMz68uJSpmxM
b4t7hImCnu6qfoRFE/HGwf536DsIVVTpzZVt/ltutfbhzS1RnhlXDaLTAoGAH8JM
7DVSbi2BHXDu4dy++hlZezE0H+tO0+GgPl9KGBbERJ6Plp4U6VUGvQs7fwy5PeK2
D+Yk+HnI1d/Jws5sLpqE7hft893kyxkK9hzZq+aI+rqE1alyC1Sh9QWFK9wZnwAF
9uBSxvodVUDpLK6YuqCAXqEZQKskQ/0ewo0xtEECgYAtLhT7ghs15K4v0SuBrDDL
Jipo4o0cewEEzjxa4J3cHWUzJFE45uFWCH9EgGy/YM7fxeewa+LyyYKPOGYLJ9nw
abb3MFm1nxrzrJgBwGM6x2ORmEaIu00NC5H1ey0yXFj0HLt4OYY0Qlt4yako3Pvr
qHdpsSOk/QkdT4WrZWFsdw==
-----END PRIVATE KEY-----

View File

@@ -1,6 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiU143FYs5+uJlIn/AK6gKhOEl
WydR/7OJ1MUSWFJz9yL/acIyNBQ4Ji/0adDaIB01pQ9eqCYFP0Z9SgGMcpST/ejU
LEUbjls7GTwutxoVVe9PUDBkRY601RVAEjXaZmWfZZ7028uWrqfJmeEo3voKhscO
/vCOKII2TM1xC+FMGwIDAQAB
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7zDRRZKB776+5f5lV3+c
54TfKKVk21uZSuhFou5NMTyoRcZdllqMPiW6MCF0WvFJjGcq5Og1Kiy1iR2tgdwf
1lxydNEuCwhRN1DtFxdayyd6mAkZA3nfjvvwL8pHFrDVDhtiwKbHIzn7Hcbjv0QW
OrBJEp2TbL8XhGwVyn+7Q9qUqPkcFu/4dUTeM6lkcDD+9nuMKqnesghBFKx63vdN
HTKM9JXJG7SvbhLKl6J7AqZELVajzYntoYlHDgl60UGwqBAPTYq85vlK1c6j2A1L
vperIsXvJS0m00T2giid+po0KFifR0DdDY4vUx7ZG1mnQXPT/rnNDN9uuj2trR1W
xwIDAQAB
-----END PUBLIC KEY-----

View File

@@ -0,0 +1,6 @@
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiU143FYs5+uJlIn/AK6gKhOEl
WydR/7OJ1MUSWFJz9yL/acIyNBQ4Ji/0adDaIB01pQ9eqCYFP0Z9SgGMcpST/ejU
LEUbjls7GTwutxoVVe9PUDBkRY601RVAEjXaZmWfZZ7028uWrqfJmeEo3voKhscO
/vCOKII2TM1xC+FMGwIDAQAB
-----END PUBLIC KEY-----

View File

@@ -0,0 +1,9 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7zDRRZKB776+5f5lV3+c
54TfKKVk21uZSuhFou5NMTyoRcZdllqMPiW6MCF0WvFJjGcq5Og1Kiy1iR2tgdwf
1lxydNEuCwhRN1DtFxdayyd6mAkZA3nfjvvwL8pHFrDVDhtiwKbHIzn7Hcbjv0QW
OrBJEp2TbL8XhGwVyn+7Q9qUqPkcFu/4dUTeM6lkcDD+9nuMKqnesghBFKx63vdN
HTKM9JXJG7SvbhLKl6J7AqZELVajzYntoYlHDgl60UGwqBAPTYq85vlK1c6j2A1L
vperIsXvJS0m00T2giid+po0KFifR0DdDY4vUx7ZG1mnQXPT/rnNDN9uuj2trR1W
xwIDAQAB
-----END PUBLIC KEY-----