136 lines
5.4 KiB
TypeScript
136 lines
5.4 KiB
TypeScript
|
|
import { Controller, Get, Post, Put, Delete, Body, Param, Query, UseGuards, Request } from '@nestjs/common';
|
||
|
|
import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth } from '@nestjs/swagger';
|
||
|
|
import { MemberService } from '../../services/api/MemberService';
|
||
|
|
import { CreateMemberDto, UpdateProfileDto, ChangePasswordDto, ResetPasswordDto, SignDto } from '../../dto/api/MemberDto';
|
||
|
|
|
||
|
|
@ApiTags('前台-会员管理')
|
||
|
|
@ApiBearerAuth()
|
||
|
|
@Controller('api/member')
|
||
|
|
export class MemberController {
|
||
|
|
constructor(private readonly memberService: MemberService) {}
|
||
|
|
|
||
|
|
@Post('register')
|
||
|
|
@ApiOperation({ summary: '会员注册' })
|
||
|
|
@ApiResponse({ status: 201, description: '注册成功' })
|
||
|
|
async register(@Body() createMemberDto: CreateMemberDto) {
|
||
|
|
return await this.memberService.register(createMemberDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('login')
|
||
|
|
@ApiOperation({ summary: '会员登录' })
|
||
|
|
@ApiResponse({ status: 200, description: '登录成功' })
|
||
|
|
async login(@Body() loginDto: { username: string; password: string; ip?: string; address?: string; device?: string }) {
|
||
|
|
return await this.memberService.login(loginDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Get('profile')
|
||
|
|
@ApiOperation({ summary: '获取个人资料' })
|
||
|
|
@ApiResponse({ status: 200, description: '获取成功' })
|
||
|
|
async getProfile(@Request() req: any) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.getProfile(memberId);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Put('profile')
|
||
|
|
@ApiOperation({ summary: '更新个人资料' })
|
||
|
|
@ApiResponse({ status: 200, description: '更新成功' })
|
||
|
|
async updateProfile(@Request() req: any, @Body() updateProfileDto: UpdateProfileDto) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.updateProfile(memberId, updateProfileDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('change-password')
|
||
|
|
@ApiOperation({ summary: '修改密码' })
|
||
|
|
@ApiResponse({ status: 200, description: '修改成功' })
|
||
|
|
async changePassword(@Request() req: any, @Body() changePasswordDto: ChangePasswordDto) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.changePassword(memberId, changePasswordDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('reset-password')
|
||
|
|
@ApiOperation({ summary: '重置密码' })
|
||
|
|
@ApiResponse({ status: 200, description: '重置成功' })
|
||
|
|
async resetPassword(@Body() resetPasswordDto: ResetPasswordDto) {
|
||
|
|
return await this.memberService.resetPassword(resetPasswordDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('sign')
|
||
|
|
@ApiOperation({ summary: '会员签到' })
|
||
|
|
@ApiResponse({ status: 200, description: '签到成功' })
|
||
|
|
async sign(@Request() req: any, @Body() signDto: SignDto) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.sign(memberId, signDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Get('points/history')
|
||
|
|
@ApiOperation({ summary: '获取积分历史' })
|
||
|
|
@ApiResponse({ status: 200, description: '获取成功' })
|
||
|
|
async getPointsHistory(@Request() req: any, @Query() query: { page?: number; limit?: number }) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.getPointsHistory(memberId, query);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Get('balance/history')
|
||
|
|
@ApiOperation({ summary: '获取余额历史' })
|
||
|
|
@ApiResponse({ status: 200, description: '获取成功' })
|
||
|
|
async getBalanceHistory(@Request() req: any, @Query() query: { page?: number; limit?: number }) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.getBalanceHistory(memberId, query);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Get('address')
|
||
|
|
@ApiOperation({ summary: '获取地址列表' })
|
||
|
|
@ApiResponse({ status: 200, description: '获取成功' })
|
||
|
|
async getAddressList(@Request() req: any) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.getAddressList(memberId);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('address')
|
||
|
|
@ApiOperation({ summary: '添加地址' })
|
||
|
|
@ApiResponse({ status: 201, description: '添加成功' })
|
||
|
|
async addAddress(@Request() req: any, @Body() addressDto: any) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.addAddress(memberId, addressDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Put('address/:id')
|
||
|
|
@ApiOperation({ summary: '更新地址' })
|
||
|
|
@ApiResponse({ status: 200, description: '更新成功' })
|
||
|
|
async updateAddress(@Request() req: any, @Param('id') id: number, @Body() addressDto: any) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.updateAddress(memberId, id, addressDto);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Delete('address/:id')
|
||
|
|
@ApiOperation({ summary: '删除地址' })
|
||
|
|
@ApiResponse({ status: 200, description: '删除成功' })
|
||
|
|
async deleteAddress(@Request() req: any, @Param('id') id: number) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.deleteAddress(memberId, id);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Post('address/:id/default')
|
||
|
|
@ApiOperation({ summary: '设置默认地址' })
|
||
|
|
@ApiResponse({ status: 200, description: '设置成功' })
|
||
|
|
async setDefaultAddress(@Request() req: any, @Param('id') id: number) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.setDefaultAddress(memberId, id);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Get('level')
|
||
|
|
@ApiOperation({ summary: '获取会员等级信息' })
|
||
|
|
@ApiResponse({ status: 200, description: '获取成功' })
|
||
|
|
async getMemberLevel(@Request() req: any) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.getMemberLevel(memberId);
|
||
|
|
}
|
||
|
|
|
||
|
|
@Get('logout')
|
||
|
|
@ApiOperation({ summary: '会员登出' })
|
||
|
|
@ApiResponse({ status: 200, description: '登出成功' })
|
||
|
|
async logout(@Request() req: any) {
|
||
|
|
const memberId = req.user.member_id;
|
||
|
|
return await this.memberService.logout(memberId);
|
||
|
|
}
|
||
|
|
}
|