UserController.java 2.38 KB
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));
    }
}