init
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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> { };
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
19
shared/resource/privateKey.bak
Normal file
19
shared/resource/privateKey.bak
Normal 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-----
|
||||
28
shared/resource/privateKey.pem
Normal file
28
shared/resource/privateKey.pem
Normal 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-----
|
||||
@@ -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-----
|
||||
|
||||
6
shared/resource/publicKey.bak
Normal file
6
shared/resource/publicKey.bak
Normal file
@@ -0,0 +1,6 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiU143FYs5+uJlIn/AK6gKhOEl
|
||||
WydR/7OJ1MUSWFJz9yL/acIyNBQ4Ji/0adDaIB01pQ9eqCYFP0Z9SgGMcpST/ejU
|
||||
LEUbjls7GTwutxoVVe9PUDBkRY601RVAEjXaZmWfZZ7028uWrqfJmeEo3voKhscO
|
||||
/vCOKII2TM1xC+FMGwIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
9
shared/resource/publicKey.pem
Normal file
9
shared/resource/publicKey.pem
Normal 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-----
|
||||
Reference in New Issue
Block a user