| | |
| | | package com.doumee.service.system.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.system.SystemUserMapper; |
| | | import com.doumee.dao.system.dto.LoginDTO; |
| | | import com.doumee.dao.system.dto.WebLoginDTO; |
| | | import com.doumee.dao.system.model.SystemLoginLog; |
| | |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.Date; |
| | | import java.util.Objects; |
| | | |
| | | @Slf4j |
| | | @Service |
| | |
| | | @Value("${project.version}") |
| | | private String systemVersion; |
| | | |
| | | |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | | @Autowired |
| | | private CaptchaService captchaService; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Autowired |
| | | private SystemUserService systemUserService; |
| | |
| | | return doLogin(d,false,request); |
| | | |
| | | } |
| | | @Override |
| | | public void logoutWx(String memberId){ |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .set(Member::getSysuserId,null) |
| | | .eq(Member::getId,memberId));//解除绑定前端用户openId关系 |
| | | } |
| | | @Override |
| | | public SystemUser loginByPasswordWx(WebLoginDTO dto, HttpServletRequest request) { |
| | | if(StringUtils.isBlank(dto.getUsername()) |
| | | ||StringUtils.isBlank(dto.getPassword())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | SystemLoginLog loginLog = new SystemLoginLog(); |
| | | loginLog.setLoginUsername(dto.getUsername()); |
| | | loginLog.setLoginTime(new Date()); |
| | | loginLog.setSystemVersion(systemVersion); |
| | | loginLog.setIp(Utils.User_Client.getIP(request)); |
| | | 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()); |
| | | try { |
| | | SystemUser s = new SystemUser(); |
| | | s.setUsername(dto.getUsername()); |
| | | SystemUser systemUser =systemUserService.findOne(s); |
| | | if(systemUser ==null){ |
| | | throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), "对不起,账号或密码错误!"); |
| | | } |
| | | if (!StringUtils.equals(systemUser.getPassword(),Utils.Secure.encryptPassword(dto.getPassword(), systemUser.getSalt()))) { |
| | | throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), "对不起,账号或密码错误"); |
| | | } |
| | | if(Objects.equals(s.getStatus(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"登录账号已禁用,请联系管理员!"); |
| | | } |
| | | memberMapper.update(null,new UpdateWrapper<Member>().lambda() |
| | | .set(Member::getSysuserId,systemUser.getId()) |
| | | .eq(Member::getId,dto.getMemberId()));//绑定前端用户openId关系 |
| | | |
| | | return systemUser; |
| | | /* SystemUser u = new SystemUser(); |
| | | u.setLastLogin(DateUtil.getCurrentDate()); |
| | | u.setId(systemUser.getId()); |
| | | systemUserService.updateById(u);//更新最后登录时间 |
| | | |
| | | loginLog.setUserId(u.getId()); |
| | | loginLog.setSuccess(Constants.ZERO); |
| | | systemLoginLogService.create(loginLog);//登录日志*/ |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); |
| | | loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); |
| | | loginLog.setSuccess(Constants.ONE); |
| | | systemLoginLogService.create(loginLog); |
| | | if (e.getCause() instanceof BusinessException) { |
| | | throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), e.getCause().getMessage()); |
| | | } |
| | | throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), "对不起,账号或密码错误!"); |
| | | } |
| | | } |
| | | public String doLogin(LoginDTO dto,boolean needCheckCode, HttpServletRequest request) { |
| | | if(StringUtils.isBlank(dto.getUsername()) |
| | | ||StringUtils.isBlank(dto.getPassword()) |