From d1f3fed196e78ee15114321ddd626db6a07551dd Mon Sep 17 00:00:00 2001 From: CounterFire2023 <136581895+CounterFire2023@users.noreply.github.com> Date: Mon, 14 Aug 2023 14:58:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=B4=A6=E5=8F=B7=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pm2_release.sh | 1 + src/controllers/alchemyout.controller.ts | 2 +- src/controllers/main.controllers.ts | 2 +- src/controllers/wallet.controller.ts | 14 ++++++++- src/modules/WalletBackup.ts | 40 ++++++++++++++++++++++++ 5 files changed, 56 insertions(+), 3 deletions(-) create mode 100755 pm2_release.sh create mode 100644 src/modules/WalletBackup.ts diff --git a/pm2_release.sh b/pm2_release.sh new file mode 100755 index 0000000..10ea686 --- /dev/null +++ b/pm2_release.sh @@ -0,0 +1 @@ +pm2 start npm --name "wallet-svr" --log-date-format "YYYY-MM-DD HH:mm:ss" -- run "prod:api" diff --git a/src/controllers/alchemyout.controller.ts b/src/controllers/alchemyout.controller.ts index 386f1c9..2e873bd 100644 --- a/src/controllers/alchemyout.controller.ts +++ b/src/controllers/alchemyout.controller.ts @@ -22,7 +22,7 @@ let errorRes = function (msg: string) { * for Alchemy call */ class AlchemyOutController extends BaseController { - @role(ROLE_ANON) + // @role(ROLE_ANON) // @router('post /pay/out/alchemy/buycb') async alchemyCallback(req, res) { let { orderNo, status, crypto, network, merchantOrderNo } = req.params diff --git a/src/controllers/main.controllers.ts b/src/controllers/main.controllers.ts index 60ddf6c..332b892 100644 --- a/src/controllers/main.controllers.ts +++ b/src/controllers/main.controllers.ts @@ -13,7 +13,7 @@ class MainController extends BaseController { @router('post /wallet/account/reset') async resetAccount(req, res) { - const user = req.user + let user = req.user await user.updateOne({ $inc: { accountVersion: 1 } }) return {} } diff --git a/src/controllers/wallet.controller.ts b/src/controllers/wallet.controller.ts index 52bc36b..658ead9 100644 --- a/src/controllers/wallet.controller.ts +++ b/src/controllers/wallet.controller.ts @@ -3,6 +3,7 @@ import { ZError } from 'common/ZError' import { router } from 'decorators/router' import { Wallet } from 'modules/Wallet' +import { WalletBackup } from 'modules/WalletBackup' import { WalletExt } from 'modules/WalletExt' import { customAlphabet } from 'nanoid' import { genRandomString, sha3_256, sha512 } from 'utils/security.util' @@ -66,8 +67,19 @@ class WalletController extends BaseController { return {} } - @router('post /wallet/rest') + @router('post /wallet/reset') async resetWalletInfo(req, res) { + let user = req.user + let record = await Wallet.findOne({ account: user.id }) + if (!record) { + throw new ZError(11, 'no wallet found') + } + let data: any = record.toJson() + data.account = user.id + let recordBack = new WalletBackup(data) + await recordBack.save() + record.address = '' + await record.save() return {} } diff --git a/src/modules/WalletBackup.ts b/src/modules/WalletBackup.ts new file mode 100644 index 0000000..11d8d38 --- /dev/null +++ b/src/modules/WalletBackup.ts @@ -0,0 +1,40 @@ +import { getModelForClass, index, modelOptions, mongoose, prop, Severity } from '@typegoose/typegoose' +import { dbconn } from 'decorators/dbconn' +import { BaseModule } from './Base' + +@dbconn() +@index({ account: 1 }, { unique: false }) +@modelOptions({ + schemaOptions: { collection: 'wallet_backup', timestamps: true }, +}) +class WalletBackupClass extends BaseModule { + @prop({ required: true }) + public account!: string + + /** + * 钱包的master key + */ + @prop() + public key: string + + @prop() + public address: string + /** + * 用于客户端生成密钥时的加盐 + */ + @prop() + public salt: string + + @prop({ required: true, default: true }) + public nweRecord: boolean + + public toJson() { + return { + key: this.key, + address: this.address, + salt: this.salt, + } + } +} + +export const WalletBackup = getModelForClass(WalletBackupClass, { existingConnection: WalletBackupClass.db })