From aaea4819b873c5ca7b9be1a87af173ee2015a12a Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期四, 25 一月 2024 14:52:24 +0800 Subject: [PATCH] 开发业务接口 --- server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 52 insertions(+), 6 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java index b41579c..1c5593b 100644 --- a/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java @@ -1,13 +1,17 @@ package com.doumee.service.system.impl; import com.baomidou.mybatisplus.extension.api.R; +import com.doumee.config.shiro.ShiroToken; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; +import com.doumee.dao.business.SmsEmailMapper; import com.doumee.dao.system.dto.LoginDTO; +import com.doumee.dao.system.dto.LoginPhoneDTO; import com.doumee.dao.system.model.SystemLoginLog; +import com.doumee.service.business.impl.SmsEmailServiceImpl; import com.doumee.service.common.CaptchaService; import com.doumee.service.system.SystemLoginLogService; import com.doumee.service.system.SystemLoginService; @@ -30,9 +34,10 @@ @Value("${project.version}") private String systemVersion; - @Value("${captcha_check}") - private boolean captchaCheck; - + @Value("${debug_model}") + private Boolean debugModel; + @Autowired + private SmsEmailMapper smsEmailMapper; @Autowired private CaptchaService captchaService; @@ -52,10 +57,51 @@ loginLog.setOsInfo(Utils.User_Client.getOS(request)); loginLog.setServerIp(Utils.Server.getIP()); // 鏍¢獙楠岃瘉鐮� + try { + if(debugModel){ + captchaService.check(dto.getUuid(), dto.getCode()); + } + } catch (Exception e) { + log.error(e.getMessage(), e); + loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); + loginLog.setSuccess(Boolean.FALSE); + systemLoginLogService.create(loginLog); + throw e; + } + // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜 + Subject subject = SecurityUtils.getSubject(); + ShiroToken token = new ShiroToken(dto.getUsername(), dto.getPassword(),true,Constants.ZERO); + try { + subject.login(token); + loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId()); + loginLog.setSuccess(Boolean.TRUE); + systemLoginLogService.create(loginLog); + return (String)subject.getSession().getId(); + } catch (AuthenticationException e) { + log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); + loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); + loginLog.setSuccess(Boolean.FALSE); + systemLoginLogService.create(loginLog); + throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), Objects.isNull(e.getCause())?ResponseStatus.ACCOUNT_INCORRECT.getMessage():e.getCause().getMessage()); + } + } + @Override + public String loginByPhone (LoginPhoneDTO dto, int type, HttpServletRequest request) { + SystemLoginLog loginLog = new SystemLoginLog(); + loginLog.setLoginUsername(dto.getPhone()); + loginLog.setLoginTime(new Date()); + loginLog.setSystemVersion(systemVersion); + loginLog.setIp(Utils.User_Client.getIP(request)); + loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); + loginLog.setPlatform(Utils.User_Client.getPlatform(request)); + loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); + loginLog.setOsInfo(Utils.User_Client.getOS(request)); + loginLog.setServerIp(Utils.Server.getIP()); + // 鏍¢獙楠岃瘉鐮� if(type!= Constants.TWO){ try { - if(captchaCheck){ - captchaService.check(dto.getUuid(), dto.getCode()); + if(debugModel){ + SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,dto.getPhone(), dto.getCode()); } } catch (Exception e) { log.error(e.getMessage(), e); @@ -67,7 +113,7 @@ } // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜 Subject subject = SecurityUtils.getSubject(); - UsernamePasswordToken token = new UsernamePasswordToken(dto.getUsername(), dto.getPassword()); + ShiroToken token = new ShiroToken(dto.getPhone(), null,false,Constants.ZERO); try { subject.login(token); loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId()); -- Gitblit v1.9.3