package com.example.controller.user; import com.example.constant.JwtClaimsConstant; import com.example.dto.PasswordDTO; import com.example.dto.UserDTO; import com.example.dto.UserLoginDTO; import com.example.entity.User; import com.example.properties.JwtProperties; import com.example.result.Result; import com.example.service.UserService; import com.example.utils.JwtUtil; import com.example.vo.UserLoginVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; /** * 账户管理 */ @RestController @Slf4j @Api(tags = "账户相关接口") @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @Autowired private JwtProperties jwtProperties; /** * 老师登录 * * @param userLoginDTO * @return */ @PostMapping("/login") @ApiOperation(value = "老师登录") public Result login(@RequestBody UserLoginDTO userLoginDTO) { log.info("老师登录:{}", userLoginDTO); User user = userService.login(userLoginDTO); //登录成功后,生成jwt令牌 Map claims = new HashMap<>(); claims.put(JwtClaimsConstant.USER_ID, user.getId()); String token = JwtUtil.createJWT( jwtProperties.getAdminSecretKey(), jwtProperties.getAdminTtl(), claims); UserLoginVO userLoginVO = UserLoginVO.builder() .id(user.getId()) .userName(user.getUserName()) .name(user.getName()) .token(token).build(); return Result.success(userLoginVO); } /** * 退出 * * @return */ @PostMapping("/logout") @ApiOperation("老师退出") public Result logout() { return Result.success(); } @PostMapping("/register") @ApiOperation("老师注册") private Result register(@RequestBody UserDTO userDTO) { log.info("老师注册:{}", userDTO); userService.register(userDTO); return Result.success(); } @PostMapping("/password") @ApiOperation(value = "修改密码") public Result update(@RequestBody PasswordDTO passwordDTO) { log.info("修改密码:{}", passwordDTO.getId()); userService.update(passwordDTO); return Result.success(); } @PostMapping("/forget") @ApiOperation(value = "忘记密码") public Result forget(@RequestBody UserDTO userDTO) { log.info("修改密码:{}", userDTO.getUserName()); userService.forget(userDTO); return Result.success(); } }