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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.moral.api.service.SysConfigService; import com.moral.api.service.UserService; 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; import com.moral.util.WebUtils; @Slf4j @Api(tags = {"登陆"}) @RestController public class LoginController { @Autowired private UserService userService; @Autowired private SysConfigService sysConfigService; @ApiOperation(value = "登陆", notes = "登陆") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "账户", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "password", value = "密码", required = true, paramType = "query", dataType = "String") }) @RequestMapping(value = "login", method = RequestMethod.POST) public ResultMessage login(HttpServletRequest request) { Map parameters = WebUtils.getParametersStartingWith(request, null); 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("data")) { return ResultMessage.fail((int) result.get("code"), (String) result.get("msg")); } return ResultMessage.ok(result.get("data")); } @ApiOperation(value = "注销", notes = "注销") @RequestMapping(value = "logout", method = RequestMethod.POST) @ApiImplicitParams({ @ApiImplicitParam(name = "uid", value = "账户", required = false, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String") }) public ResultMessage logout(HttpServletRequest request) { Map parameters = WebUtils.getParametersStartingWith(request, null); if (!parameters.containsKey("uid")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } String userId = parameters.get("uid").toString(); String token = request.getHeader("token"); TokenUtils.destoryToken(userId, token); return ResultMessage.ok(); } /** * @Description: 获取验证码是否开启 * @Param: [] * @return: com.moral.constant.ResultMessage * @Author: 陈凯裕 * @Date: 2021/3/18 */ @ApiOperation(value = "获取验证码是否开启", notes = "获取验证码是否开启") @RequestMapping(value = "verificationCodeConfig", method = RequestMethod.GET) public ResultMessage verifyConfig() { return 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(); } }