Files
wwjcloud-nest-v1/wwjcloud/src/common/member/controllers/api/MemberController.ts

184 lines
5.5 KiB
TypeScript
Raw Normal View History

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 {
CreateMemberApiDto,
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: CreateMemberApiDto) {
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);
}
}