diff --git a/src/modules/user/controller/app/login.ts b/src/modules/user/controller/app/login.ts new file mode 100644 index 0000000..e089df4 --- /dev/null +++ b/src/modules/user/controller/app/login.ts @@ -0,0 +1,106 @@ +import { + CoolController, + BaseController, + CoolUrlTag, + TagTypes, + CoolTag, +} from '@cool-midway/core'; +import { Body, Get, Inject, Post, Query } from '@midwayjs/core'; +import { UserLoginService } from '../../service/login'; +import { BaseSysLoginService } from '../../../base/service/sys/login'; + +/** + * 登录 + */ +@CoolUrlTag() +@CoolController() +export class AppUserLoginController extends BaseController { + @Inject() + userLoginService: UserLoginService; + + @Inject() + baseSysLoginService: BaseSysLoginService; + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/mini', { summary: '小程序登录' }) + async mini(@Body() body) { + const { code, encryptedData, iv } = body; + return this.ok(await this.userLoginService.mini(code, encryptedData, iv)); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/mp', { summary: '公众号登录' }) + async mp(@Body('code') code: string) { + return this.ok(await this.userLoginService.mp(code)); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/wxApp', { summary: '微信APP授权登录' }) + async app(@Body('code') code: string) { + return this.ok(await this.userLoginService.wxApp(code)); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/phone', { summary: '手机号登录' }) + async phone(@Body('phone') phone: string, @Body('smsCode') smsCode: string) { + return this.ok(await this.userLoginService.phoneVerifyCode(phone, smsCode)); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/uniPhone', { summary: '一键手机号登录' }) + async uniPhone( + @Body('access_token') access_token: string, + @Body('openid') openid: string, + @Body('appId') appId: string + ) { + return this.ok( + await this.userLoginService.uniPhone(access_token, openid, appId) + ); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/miniPhone', { summary: '绑定小程序手机号' }) + async miniPhone(@Body() body) { + const { code, encryptedData, iv } = body; + return this.ok( + await this.userLoginService.miniPhone(code, encryptedData, iv) + ); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Get('/captcha', { summary: '图片验证码' }) + async captcha( + @Query('width') width: number, + @Query('height') height: number, + @Query('color') color: string + ) { + return this.ok( + await this.baseSysLoginService.captcha(width, height, color) + ); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/smsCode', { summary: '验证码' }) + async smsCode( + @Body('phone') phone: string, + @Body('captchaId') captchaId: string, + @Body('code') code: string + ) { + return this.ok(await this.userLoginService.smsCode(phone, captchaId, code)); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/refreshToken', { summary: '刷新token' }) + public async refreshToken(@Body('refreshToken') refreshToken) { + return this.ok(await this.userLoginService.refreshToken(refreshToken)); + } + + @CoolTag(TagTypes.IGNORE_TOKEN) + @Post('/password', { summary: '密码登录' }) + async password( + @Body('phone') phone: string, + @Body('password') password: string + ) { + return this.ok(await this.userLoginService.password(phone, password)); + } +}