| package com.moral.api.controller; | 
|   | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.moral.api.entity.SysConfig; | 
| import com.moral.api.pojo.dto.login.LoginDTO; | 
| import com.moral.api.pojo.form.login.LoginForm; | 
| import com.moral.api.pojo.form.login.LogoutForm; | 
| import com.moral.api.pojo.redisBean.AccountInfoDTO; | 
| import com.moral.api.pojo.vo.login.AccountInfoVO; | 
| import com.moral.api.pojo.vo.login.LoginVO; | 
| import com.moral.api.service.ManageAccountService; | 
| import com.moral.api.service.SysConfigService; | 
| 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; | 
| import io.swagger.annotations.Api; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.util.ObjectUtils; | 
| import org.springframework.web.bind.annotation.*; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
| import java.io.IOException; | 
|   | 
| /** | 
|  * @ClassName LoginController | 
|  * @Description TODO | 
|  * @Author 陈凯裕 | 
|  * @Date 2021/3/18 15:28 | 
|  * @Version TODO | 
|  **/ | 
| @Slf4j | 
| @Api(tags = {"登陆模块"}) | 
| @CrossOrigin(origins = "*", maxAge = 3600) | 
| @RestController | 
| public class LoginController { | 
|     @Autowired | 
|     ManageAccountService accountService; | 
|     @Autowired | 
|     SysConfigService sysConfigService; | 
|   | 
|     /** | 
|      * @Description: 登陆接口 | 
|      * @Param: [loginForm] | 
|      * @return: com.moral.constant.ResultMessage | 
|      * @Author: 陈凯裕 | 
|      * @Date: 2021/3/18 | 
|      */ | 
|     @PostMapping("login") | 
|     public ResultMessage login(@RequestBody LoginForm loginForm) { | 
|         if (!loginForm.valid()) | 
|             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), | 
|                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|   | 
|         LoginDTO loginDTO = accountService.login(loginForm); | 
|   | 
|         LoginVO loginVO = LoginVO.convert(loginDTO); | 
|   | 
|         return new ResultMessage(loginDTO.getCode(), loginDTO.getMsg(), loginVO); | 
|     } | 
|   | 
|     /** | 
|     * @Description: 获取用户信息接口 | 
|             * @Param: [] | 
|             * @return: com.moral.constant.ResultMessage | 
|             * @Author: 陈凯裕 | 
|             * @Date: 2021/6/9 | 
|             */ | 
|     @GetMapping("getAccountInfo") | 
|     public ResultMessage getAccountInfo(){ | 
|         AccountInfoDTO dto = (AccountInfoDTO) TokenUtils.getUserInfo(); | 
|         AccountInfoVO vo = AccountInfoVO.convert(dto); | 
|         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo); | 
|     } | 
|   | 
|   | 
|     /** | 
|      * @Description: 退出接口 | 
|      * @Param: [logoutForm, request] | 
|      * @return: com.moral.constant.ResultMessage | 
|      * @Author: 陈凯裕 | 
|      * @Date: 2021/3/18 | 
|      */ | 
|     @PostMapping("logout") | 
|     public ResultMessage logout(@RequestBody LogoutForm logoutForm, HttpServletRequest request) { | 
|         if (!logoutForm.valid()) | 
|             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), | 
|                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); | 
|         String token = request.getHeader("token"); | 
|         logoutForm.setToken(token); | 
|   | 
|         if (accountService.logout(logoutForm)) | 
|             return ResultMessage.ok(); | 
|         return ResultMessage.fail(); | 
|     } | 
|   | 
|     /** | 
|     * @Description: 获取验证码是否开启 | 
|             * @Param: [] | 
|             * @return: com.moral.constant.ResultMessage | 
|             * @Author: 陈凯裕 | 
|             * @Date: 2021/3/18 | 
|             */ | 
|     @GetMapping("verificationCode/config") | 
|     public ResultMessage verifyConfig(){ | 
|         QueryWrapper<SysConfig> wrapper = new QueryWrapper<>(); | 
|         wrapper.eq(Constants.MANAGE_VERIFICATIONCODE_COLUMN,Constants.MANAGE_VERIFICATIONCODE_VALUE); | 
|         SysConfig config = sysConfigService.getOne(wrapper); | 
|         if(config.getCode().equals(Constants.VERFICATIONCODE_OPEN)) | 
|             return new ResultMessage(ResponseCodeEnum.VERIFICATION_OPEN,null); | 
|         return new ResultMessage(ResponseCodeEnum.VERIFICATION_CLOSE,null); | 
|     } | 
|   | 
|     /** | 
|      * @Description: 获取验证码接口 | 
|      * @Param: [] | 
|      * @return: com.moral.constant.ResultMessage | 
|      * @Author: 陈凯裕 | 
|      * @Date: 2021/3/18 | 
|      */ | 
|     @GetMapping("verificationCode/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(); | 
|         System.out.println(verificationCode.getEncode()); | 
|         return ResultMessage.ok(verificationCode); | 
|     } | 
|   | 
|     /** | 
|     * @Description: 校验验证码 | 
|             * @Param: [verificationCode] | 
|             * @return: com.moral.constant.ResultMessage | 
|             * @Author: 陈凯裕 | 
|             * @Date: 2021/3/18 | 
|             */ | 
|     @GetMapping("verificationCode/verify") | 
|     public ResultMessage gverifyVerificationCode(VerificationCode verificationCode) { | 
|         if(!verificationCode.valid()) | 
|             return ResultMessage.fail(); | 
|         if(KaptchaUtils.verify(verificationCode)) | 
|             return ResultMessage.ok(); | 
|         return ResultMessage.fail(); | 
|     } | 
| } |