import BaseController from 'common/base.controller' import { ZError } from 'common/ZError' import { router } from 'decorators/router' import { Wallet } from 'modules/Wallet' import { WalletExt } from 'modules/WalletExt' import { customAlphabet } from 'nanoid' const nanoid = customAlphabet('1234567890abcdef', 10) class WalletController extends BaseController { @router('get /wallet/info') async getWalletInfo(req, res) { let user = req.user let record = await Wallet.insertOrUpdate({ account: user.id }, {}) let data: any = { oid: user.id } if (record.nweRecord) { record.salt = nanoid() record.is = nanoid(12) record.nweRecord = false await record.save() } Object.assign(data, record.toJson()) return data } @router('post /wallet/info') async uploadWalletInfo(req, res) { let user = req.user let { key } = req.params if (!key) { throw new ZError(10, 'no data to save') } let record = await Wallet.insertOrUpdate({ account: user.id }, {}) record.key = key await record.save() return {} } @router('post /wallet/collection') async uploadUserCollection(req, res) { let user = req.user let { data } = req.params let record = await WalletExt.insertOrUpdate({ account: user.id }, { data }) if (record.nweRecord) { record.nweRecord = false await record.save() } return {} } @router('get /wallet/collection') async getUserCollection(req, res) { let user = req.user let record = await WalletExt.insertOrUpdate({ account: user.id }, {}) return record.data } }