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

136 lines
5.4 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 { 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);
}
}