|
|
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<List<UserAreaDTO>> listUserAreas(ConditionVO conditionVO) {
|
|
|
return ResultVO.ok(userAuthService.listUserAreas(conditionVO));
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "查询后台用户列表")//分页
|
|
|
@GetMapping("/admin/users")
|
|
|
public ResultVO<PageResultDTO<UserAdminDTO>> 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<UserLogoutStatusDTO> logout() {//返回登出结果
|
|
|
return ResultVO.ok(userAuthService.logout());
|
|
|
}
|
|
|
|
|
|
@ApiOperation(value = "qq登录")//通过QQ账号进行第三方登录
|
|
|
@PostMapping("/users/oauth/qq")
|
|
|
//返回登录结果和用户信息
|
|
|
public ResultVO<UserInfoDTO> qqLogin(@Valid @RequestBody QQLoginVO qqLoginVO) {
|
|
|
//QQLoginVO qqLoginVO:封装QQ登录的参数,包含QQ授权码、openid等第三方登录所需信息,且会被@Valid校验
|
|
|
return ResultVO.ok(userAuthService.qqLogin(qqLoginVO));
|
|
|
}
|
|
|
|
|
|
}
|