wallet-svr/src/controllers/wallet.controller.ts
2022-10-25 15:33:11 +08:00

59 lines
1.6 KiB
TypeScript

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