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 })