93 lines
2.8 KiB
TypeScript
93 lines
2.8 KiB
TypeScript
import BaseController from '../../common/base.controller'
|
|
import { permission, role, router } from '../../decorators/router'
|
|
import { ZError } from '../../common/ZError'
|
|
import { Game } from '../../models/content/Game'
|
|
import { generateQrFile } from '../../services/File'
|
|
import { getInviteeNum } from '../../services/JCFW'
|
|
import { UserItem } from '../../models/user/UserItem'
|
|
import { checkText } from '../../services/Baidu'
|
|
import { refreshToken } from '../../services/Wechat'
|
|
|
|
class GameController extends BaseController {
|
|
@role('anon')
|
|
@router('post /api/test')
|
|
async test(req) {
|
|
// let gameId = '60810dd156af0e8550832a44'
|
|
// let version = '608117912ff0238a3e607d33'
|
|
// let shop = 'sa6xtgbmj7'
|
|
// const { file, url } = await generateQrFile({ gameId, version, shop })
|
|
// return { file, url }
|
|
// let accountId = '7101_8004_opBlx1vRs-UIGF6rZDkkSrSTJYAs'
|
|
// let sessionId = '1622783517_1556611531_60838f020d9c51716f144bf7a71b2af5_e5818d3fc90f8491aa285246cb6d85ce'
|
|
// let result = await getInviteeNum(accountId, sessionId, [1001])
|
|
// return result
|
|
const { txt } = req.params
|
|
// const res = await checkText(txt)
|
|
const token = await refreshToken('wxf8c3da4e7dfe00a2', '8c0a1e88a6b43e4be80ed6a597c0b047')
|
|
return { token }
|
|
}
|
|
@permission(['game:read', 'shop:game_setting'])
|
|
@router('post /api/games')
|
|
async list(req, res) {
|
|
let { start, limit, page } = req.params
|
|
limit = +limit || 10
|
|
start = +start || (+page - 1) * limit || 0
|
|
let { opt, sort } = Game.parseQueryParam(req.params)
|
|
let articles = await Game.find(opt).sort(sort).skip(start).limit(limit)
|
|
let count = await Game.countDocuments(opt)
|
|
let records = []
|
|
for (let record of articles) {
|
|
records.push(record.toJson())
|
|
}
|
|
return {
|
|
total: count,
|
|
start,
|
|
limit,
|
|
records,
|
|
}
|
|
}
|
|
|
|
@permission('game:read')
|
|
@router('get /api/game/:id')
|
|
async detail(req, res) {
|
|
let { id } = req.params
|
|
const record = await Game.findById(id)
|
|
if (!record) {
|
|
throw new ZError(11, 'record not found')
|
|
}
|
|
return record.toJson()
|
|
}
|
|
|
|
@permission('game:read')
|
|
@router('post /api/game/save')
|
|
async save(req: any) {
|
|
let { _id } = req.params
|
|
let user = req.user
|
|
let record
|
|
if (!_id) {
|
|
record = new Game(req.params)
|
|
record.createdBy = user.id
|
|
} else {
|
|
record = await Game.findById(_id)
|
|
record.updateFromReq(req.params)
|
|
}
|
|
await record.save()
|
|
return record.toJson()
|
|
}
|
|
@permission('game:read')
|
|
@router('post /api/game/:id/delete')
|
|
async delete(req: any) {
|
|
let { id } = req.params
|
|
if (!id) {
|
|
throw new ZError(11, 'params mismatch')
|
|
}
|
|
await Game.findByIdAndUpdate(id, {
|
|
$set: {
|
|
deleted: true,
|
|
deleteTime: new Date(),
|
|
},
|
|
})
|
|
return {}
|
|
}
|
|
}
|