82 lines
2.8 KiB
TypeScript
82 lines
2.8 KiB
TypeScript
import { Body, Controller, Get, Param, Post, Query, UseGuards } from '@nestjs/common';
|
|
import { RedeemService } from './redeem.service';
|
|
import { JwtAuthGuard, AuthUser } from '../../common/guards/jwt-auth.guard';
|
|
import { CurrentUser } from '../../common/decorators/current-user.decorator';
|
|
import {
|
|
RedeemPhoneBalanceDto,
|
|
RedeemPhoneConfirmDto,
|
|
RedeemPhonePrepareDto,
|
|
RedeemPhoneSendLookupSmsDto,
|
|
} from './dto/phone-redeem.dto';
|
|
|
|
@Controller('redeem')
|
|
@UseGuards(JwtAuthGuard)
|
|
export class UserRedeemController {
|
|
constructor(private readonly redeemService: RedeemService) {}
|
|
|
|
@Post('tokens')
|
|
createToken(@CurrentUser() user: AuthUser, @Body() body: Record<string, unknown>) {
|
|
return this.redeemService.createToken(user.actorId, body as never);
|
|
}
|
|
|
|
@Get('tokens/:token')
|
|
getToken(@Param('token') token: string) {
|
|
return this.redeemService.getToken(token);
|
|
}
|
|
|
|
@Get('tokens/:token/status')
|
|
getTokenStatus(@CurrentUser() user: AuthUser, @Param('token') token: string) {
|
|
return this.redeemService.getTokenStatus(token, user.actorId);
|
|
}
|
|
|
|
@Post('ratings')
|
|
rating(@CurrentUser() user: AuthUser, @Body() body: Record<string, unknown>) {
|
|
return this.redeemService.submitRating(user.actorId, body as never);
|
|
}
|
|
}
|
|
|
|
@Controller('shop/redeem')
|
|
@UseGuards(JwtAuthGuard)
|
|
export class ShopRedeemController {
|
|
constructor(private readonly redeemService: RedeemService) {}
|
|
|
|
@Post('preview')
|
|
preview(@CurrentUser() user: AuthUser, @Body() body: { token: string }) {
|
|
return this.redeemService.previewRedeem(user.actorId, body.token);
|
|
}
|
|
|
|
@Post('confirm')
|
|
confirm(@CurrentUser() user: AuthUser, @Body() body: { token: string }) {
|
|
return this.redeemService.confirmRedeem(user.actorId, body);
|
|
}
|
|
|
|
@Get('records')
|
|
records(
|
|
@CurrentUser() user: AuthUser,
|
|
@Query('page') page = '1',
|
|
@Query('pageSize') pageSize = '20',
|
|
) {
|
|
return this.redeemService.listShopRecords(user.actorId, Number(page), Number(pageSize));
|
|
}
|
|
|
|
@Post('phone/send-lookup-sms')
|
|
sendPhoneLookupSms(@CurrentUser() user: AuthUser, @Body() body: RedeemPhoneSendLookupSmsDto) {
|
|
return this.redeemService.sendPhoneLookupSms(user.actorId, body.phone);
|
|
}
|
|
|
|
@Post('phone/balance')
|
|
phoneBalance(@CurrentUser() user: AuthUser, @Body() body: RedeemPhoneBalanceDto) {
|
|
return this.redeemService.verifyPhoneAndGetBalance(user.actorId, body.phone, body.code);
|
|
}
|
|
|
|
@Post('phone/prepare')
|
|
phonePrepare(@CurrentUser() user: AuthUser, @Body() body: RedeemPhonePrepareDto) {
|
|
return this.redeemService.preparePhoneRedeem(user.actorId, body.sessionId, body.amount);
|
|
}
|
|
|
|
@Post('phone/confirm')
|
|
phoneConfirm(@CurrentUser() user: AuthUser, @Body() body: RedeemPhoneConfirmDto) {
|
|
return this.redeemService.confirmPhoneRedeem(user.actorId, body.sessionId, body.code);
|
|
}
|
|
}
|