package com.moral.api.controller; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.SysConfig; import com.moral.api.service.SysConfigService; import com.moral.api.service.UserService; import com.moral.constant.Constants; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.pojo.VerificationCode; import com.moral.util.KaptchaUtils; import com.moral.util.TokenUtils; @Slf4j @Api(tags = {"登陆"}) @RestController public class LoginController { @Autowired private UserService userService; @Autowired private SysConfigService sysConfigService; @ApiOperation(value = "登陆", notes = "登陆") @RequestMapping(value = "login", method = RequestMethod.POST) public ResultMessage login(@RequestBody Map parameters) { if (!(parameters.containsKey("account") && parameters.containsKey("password"))) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Map result = userService.login(parameters); if (!result.containsKey("token")) { return ResultMessage.fail((int) result.get("code"), (String) result.get("msg")); } return ResultMessage.ok(result); } @ApiOperation(value = "获取用户信息", notes = "获取用户信息") @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String") }) @RequestMapping(value = "getUserInfo", method = RequestMethod.POST) public ResultMessage getUserInfo() { Map result = userService.getCurrentUserInfo(); return ResultMessage.ok(result); } @ApiOperation(value = "退出", notes = "退出") @RequestMapping(value = "logout", method = RequestMethod.GET) @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String") }) public ResultMessage logout(Integer userId, HttpServletRequest request) { if (userId == null) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } String token = request.getHeader("token"); TokenUtils.destoryToken(userId.toString(), token); return ResultMessage.ok(); } @ApiOperation(value = "获取验证码是否开启", notes = "获取验证码是否开启") @RequestMapping(value = "verificationCode/config", method = RequestMethod.GET) public ResultMessage verifyConfig(HttpServletResponse response) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(Constants.FRONT_VERIFICATIONCODE_COLUMN, Constants.FRONT_ERIFICATIONCODE_VALUE); SysConfig sysConfig = sysConfigService.getOne(queryWrapper); if (Constants.VERFICATIONCODE_OPEN.equals(sysConfig.getCode())) { return new ResultMessage(ResponseCodeEnum.VERIFICATION_OPEN, null); } return new ResultMessage(ResponseCodeEnum.VERIFICATION_CLOSE, null); } @ApiOperation(value = "获取验证码", notes = "获取验证码") @RequestMapping(value = "verificationCode/get", method = RequestMethod.GET) public ResultMessage getVerificationCode() { VerificationCode verificationCode = null; try { verificationCode = KaptchaUtils.createVerificationCode(); } catch (IOException e) { log.error(e.getMessage()); } if (ObjectUtils.isEmpty(verificationCode)) return ResultMessage.fail(); return ResultMessage.ok(verificationCode); } @ApiOperation(value = "校验验证码", notes = "校验验证码") @RequestMapping(value = "verificationCode/verify", method = RequestMethod.GET) public ResultMessage gverifyVerificationCode(VerificationCode verificationCode) { if (!verificationCode.valid()) return ResultMessage.fail(); if (KaptchaUtils.verify(verificationCode)) return ResultMessage.ok(); return ResultMessage.fail(); } }