package isa.qa.controller; import isa.qa.core.Result; import isa.qa.core.ResultGenerator; import isa.qa.dto.request.UserLoginRequestDTO; import isa.qa.dto.request.UserRegisterRequestDTO; import isa.qa.dto.request.UserRequestDTO; import isa.qa.service.UserService; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.security.Principal; @RestController @RequestMapping("/api/users") @AllArgsConstructor public class UserController { /** * logger */ private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class); private final UserService userService; @PostMapping("/actions/login") public Result login(@Valid @RequestBody UserLoginRequestDTO loginRequestDTO) { LOGGER.info("API 调用 : 用户账户登录"); return ResultGenerator.genSuccessResult(userService.login(loginRequestDTO)); } @GetMapping("/actions/logout") public Result logout(@AuthenticationPrincipal Principal principal) { LOGGER.info("API 调用 : 用户账户登出"); return ResultGenerator.genSuccessResult(userService.logout(principal)); } @PostMapping("/actions/register") public Result registerUser(@Valid @RequestBody UserRegisterRequestDTO registerRequestDTO) { LOGGER.info("API 调用 :新用户注册"); return ResultGenerator.genSuccessResult(userService.registerUser(registerRequestDTO)); } @PutMapping("/{id}") public Result updateUser(@PathVariable Long id, @Valid @RequestBody UserRequestDTO userRequestDTO) { LOGGER.info("API 调用 : 用户信息更新"); return ResultGenerator.genSuccessResult(userService.updateUser(id, userRequestDTO)); } @GetMapping("/email/actions/check") public Result checkPhone(@RequestParam String email) { LOGGER.info("API 调用 : 检查手机号是否被占用注册"); return ResultGenerator.genSuccessResult(userService.checkEmail(email)); } @GetMapping("/verify_codes/actions/send") public Result sendVerifyCode(@RequestParam String email) { LOGGER.info("API 调用 :发送验证码短信"); return ResultGenerator.genSuccessResult(userService.sendVerifyCode(email)); } }