| import _ from 'lodash'; |
|
|
| import Request from '@/lib/request/Request.ts'; |
| import { getTokenLiveStatus, getCredit, receiveCredit, tokenSplit } from '@/api/controllers/core.ts'; |
| import logger from '@/lib/logger.ts'; |
|
|
| export default { |
|
|
| prefix: '/token', |
|
|
| post: { |
|
|
| '/check': async (request: Request) => { |
| request |
| .validate('body.token', _.isString) |
| const live = await getTokenLiveStatus(request.body.token); |
| return { |
| live |
| } |
| }, |
|
|
| '/points': async (request: Request) => { |
| request |
| .validate('headers.authorization', _.isString) |
| |
| const tokens = tokenSplit(request.headers.authorization); |
| const points = await Promise.all(tokens.map(async (token) => { |
| return { |
| token, |
| points: await getCredit(token) |
| } |
| })) |
| return points; |
| }, |
|
|
| '/receive': async (request: Request) => { |
| request |
| .validate('headers.authorization', _.isString) |
| |
| const tokens = tokenSplit(request.headers.authorization); |
| const credits = await Promise.all(tokens.map(async (token) => { |
| const currentCredit = await getCredit(token); |
| if (currentCredit.totalCredit <= 0) { |
| try { |
| await receiveCredit(token); |
| const updatedCredit = await getCredit(token); |
| return { |
| token, |
| credits: updatedCredit, |
| received: true |
| } |
| } catch (err) { |
| logger.warn('收取积分失败:', err); |
| return { |
| token, |
| credits: currentCredit, |
| received: false, |
| error: err.message |
| } |
| } |
| } |
| return { |
| token, |
| credits: currentCredit, |
| received: false |
| } |
| })) |
| return credits; |
| } |
|
|
| } |
|
|
| } |
|
|