package com.aurora.controller; import com.aurora.annotation.AccessLimit; import com.aurora.annotation.OptLog; import com.aurora.model.dto.*; import com.aurora.service.UserAuthService; import com.aurora.model.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; import static com.aurora.constant.OptTypeConstant.UPDATE; @Api(tags = "用户账号模块") @RestController public class UserAuthController { @Autowired private UserAuthService userAuthService;//用于调用用户账号相关的业务方法 @AccessLimit(seconds = 60,maxCount = 1)//自定义限流注解,限制60s内只能调用1次,防止验证码被频繁发送 @ApiOperation(value = "发送邮箱验证码")//给指定用户名(邮箱)发送验证码 @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String") @GetMapping("/users/code") public ResultVO sendCode(String username) { //String username:接收用户的邮箱账号 userAuthService.sendCode(username); return ResultVO.ok(); } @ApiOperation(value = "获取用户区域分布")//获取用户在不同区域的分布情况(用于后台数据统计分布) @GetMapping("/admin/users/area") //返回用户区域分布列表 public ResultVO> listUserAreas(ConditionVO conditionVO) { return ResultVO.ok(userAuthService.listUserAreas(conditionVO)); } @ApiOperation(value = "查询后台用户列表")//分页 @GetMapping("/admin/users") public ResultVO> listUsers(ConditionVO conditionVO) { return ResultVO.ok(userAuthService.listUsers(conditionVO)); } @ApiOperation(value = "用户注册") @PostMapping("/users/register") public ResultVO register(@Valid @RequestBody UserVO userVO) { userAuthService.register(userVO); return ResultVO.ok(); } @OptLog(optType = UPDATE) @ApiOperation(value = "修改密码")//用户自主修改个人密码 @PutMapping("/users/password") public ResultVO updatePassword(@Valid @RequestBody UserVO user) { //UserVO user:封装密码修改的参数,包含原密码、新密码、验证码等信息,且会被@Valid校验 userAuthService.updatePassword(user); return ResultVO.ok(); } @OptLog(optType = UPDATE) @ApiOperation(value = "修改管理员密码")//后台 @PutMapping("/admin/users/password") public ResultVO updateAdminPassword(@Valid @RequestBody PasswordVO passwordVO) { userAuthService.updateAdminPassword(passwordVO); return ResultVO.ok(); } @ApiOperation("用户登出")//处理用户的登出请求(清除登录状态) @PostMapping("/users/logout") public ResultVO logout() {//返回登出结果 return ResultVO.ok(userAuthService.logout()); } @ApiOperation(value = "qq登录")//通过QQ账号进行第三方登录 @PostMapping("/users/oauth/qq") //返回登录结果和用户信息 public ResultVO qqLogin(@Valid @RequestBody QQLoginVO qqLoginVO) { //QQLoginVO qqLoginVO:封装QQ登录的参数,包含QQ授权码、openid等第三方登录所需信息,且会被@Valid校验 return ResultVO.ok(userAuthService.qqLogin(qqLoginVO)); } }