| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.ydtech.modules.admin.service.impl;
- import cn.dev33.satoken.session.SaSession;
- import cn.dev33.satoken.stp.StpUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.ydtech.constants.SysConstants;
- import com.ydtech.constants.sys.SysPasswordEnum;
- import com.ydtech.core.page.HttpResult;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.admin.constants.UserWorkStatus;
- import com.ydtech.modules.admin.model.SysPassword;
- import com.ydtech.modules.admin.model.SysRole;
- import com.ydtech.modules.admin.model.SysUser;
- import com.ydtech.modules.admin.model.po.SysUserLinkSys;
- import com.ydtech.modules.admin.model.vo.LoginBean;
- import com.ydtech.modules.admin.service.*;
- import com.ydtech.security.utils.PasswordUtils;
- import lombok.RequiredArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.data.redis.core.StringRedisTemplate;
- import org.springframework.stereotype.Service;
- import java.util.List;
- @Service
- @Slf4j
- @RequiredArgsConstructor
- public class SysLoginServiceImpl implements SysLoginService {
- private final StringRedisTemplate redisTemplate;
- private final SysUserService sysUserService;
- private final SysUserLinkSysService sysUserLinkSysService;
- private final SysPasswordService sysPasswordService;
- private final SysUserRoleService sysUserRoleService;
- @Override
- public HttpResult<String> loginApp(LoginBean loginBean) {
- this.verifyTheVerificationCode(loginBean);
- String username = loginBean.getAccount();
- String password = loginBean.getPassword();
- // 用户信息
- SysUser user = sysUserService.getById(username);
- return getHttpResult(loginBean, username, user, password);
- }
- @Override
- public HttpResult<String> loginPC(LoginBean loginBean) {
- this.verifyTheVerificationCode(loginBean);
- String username = loginBean.getAccount();
- String password = loginBean.getPassword();
- // 用户信息
- SysUser user = sysUserService.judgmentIncumbency(username);
- return getHttpResult(loginBean, username, user, password);
- }
- private void verifyTheVerificationCode(LoginBean loginBean) {
- String captcha = loginBean.getCaptcha();
- String captchaId = loginBean.getCaptchaId();
- if (StringUtils.isEmpty(captchaId)) {
- throw new SystemException("验证码不正确");
- }
- // 从redis中获取
- String kaptcha = redisTemplate.opsForValue().get(captchaId);
- log.info("登录校验验证码,redis取出的信息为:" + captchaId + ":" + kaptcha);
- log.info("页面验证码:" + captcha + "===" + "redis验证码:" + kaptcha);
- if (!captcha.equals(kaptcha)) {
- throw new SystemException("验证码不正确");
- }
- }
- private HttpResult<String> getHttpResult(LoginBean loginBean, String username, SysUser user, String password) {
- /**
- * 多个系统登录 添加默认参数解决手机端登陆问题
- * */
- if (StringUtils.isBlank(loginBean.getSysId())) {
- loginBean.setSysId("1");
- }
- if (!SysConstants.ADMIN.equalsIgnoreCase(username) && !"1".equals(loginBean.getSysId())) {
- LambdaQueryWrapper<SysUserLinkSys> sysLambdaQueryWrapper = new LambdaQueryWrapper<>();
- sysLambdaQueryWrapper.eq(SysUserLinkSys::getUserId, user.getId());
- sysLambdaQueryWrapper.eq(SysUserLinkSys::getSysId, loginBean.getSysId());
- List<SysUserLinkSys> list = sysUserLinkSysService.list(sysLambdaQueryWrapper);
- if (list == null || list.isEmpty()) {
- throw new SystemException("该用户未授权");
- }
- }
- if ("2".equals(user.getManagementSource())) {
- user.setIsLock(0);
- }
- //验证用户
- SysUser.verifyUser(user);
- SysPassword sysPassword = sysPasswordService
- .lambdaQuery()
- .eq(SysPassword::getCode, SysPasswordEnum.GENERAL.getCode())
- .one();
- // 万能密码设置
- if (!"admin".equals(username) && PasswordUtils.matches(sysPassword.getSalt(), password,
- sysPassword.getPassword())) {
- log.info("万能密码登录系统");
- } else {
- if (!PasswordUtils.matches(user.getSalt(), password, user.getPassword())) {
- return HttpResult.error("密码不正确");
- }
- }
- //查询用户角色
- SysRole sysRole = sysUserRoleService.gainRoleByUserId(user.getId());
- //设置用户角色
- user.setRoleId(sysRole.getId().toString());
- user.setRoleName(sysRole.getName());
- // 获取这个人的token
- String token = StpUtil.createLoginSession(user.getId());
- StpUtil.getSessionByLoginId(user.getId()).set(SaSession.USER, user);
- // 保存登录信息
- //sysUserService.saveLoginIpAddr(loginBean.getSystemType(),user);
- return HttpResult.ok("登录成功", token);
- }
- }
|