zqy
10 天以前 213bd603709926013857c5ad7406663772a122d3
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -3,6 +3,7 @@
import javax.annotation.Resource;
import com.ruoyi.domain.SysUserRole1;
import com.ruoyi.framework.web.domain.server.Sys;
import com.ruoyi.service.ZfRegisterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
@@ -31,6 +32,14 @@
import com.ruoyi.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.util.Date;
import java.util.Objects;
/**
 * 登录校验方法
@@ -108,30 +117,50 @@
    public boolean endOfLife(String username) {
        SysUser sysUser = userService.selectUserByNickName(username);
        System.out.println("[[[[[[["+sysUser);
        if (sysUser.getPaid() != null && sysUser.getPaid().equals(0) && !"4".equals(sysUser.getStatus())) {
            Date startTime = sysUser.getCreateTime();
            // 安全转换
            Instant instant = startTime.toInstant();
            LocalDateTime startDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
            long daysPassed = ChronoUnit.DAYS.between(startDateTime, LocalDateTime.now());
            if (daysPassed > 7) {
                sysUser.setStatus("4");
                userService.updateUserStatus(sysUser);
            }
        }
        return true;
    }
    /**
     * 登录验证
     * 
     * @param username 用户名
     * @param nickName 用户名
     * @param password 密码
     * @param code 验证码
     * @param uuid 唯一标识
     * @return 结果
     */
    public String login(String username, String password, String code, String uuid)
    public String login(String nickName, String password, String code, String uuid)
    {
        System.out.println("[[[[[[[[[[[[[[");
        endOfLife(nickName);
        // 验证码校验
        validateCaptcha(username, code, uuid);
        validateCaptcha(nickName, code, uuid);
        // 登录前置校验
        loginPreCheck(username, password);
        loginPreCheck(nickName, password);
        // 用户验证
        Authentication authentication = null;
        try
        {
            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password);
            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(nickName, password);
            AuthenticationContextHolder.setContext(authenticationToken);
            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
            authentication = authenticationManager.authenticate(authenticationToken);
@@ -140,12 +169,12 @@
        {
            if (e instanceof BadCredentialsException)
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(nickName, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
                throw new UserPasswordNotMatchException();
            }
            else
            {
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
                AsyncManager.me().execute(AsyncFactory.recordLogininfor(nickName, Constants.LOGIN_FAIL, e.getMessage()));
                throw new ServiceException(e.getMessage());
            }
        }
@@ -153,12 +182,14 @@
        {
            AuthenticationContextHolder.clearContext();
        }
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(nickName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        LoginUser loginUser = (LoginUser) authentication.getPrincipal();
        recordLoginInfo(loginUser.getUserId());
        SysUser sysUser = userService.selectUserByUserName(username);
        SysUser sysUser = userService.selectUserByNickName(nickName);
                //.selectUserByUserName(username);
        Long userId = sysUser.getUserId();
        // 生成token
        String token = tokenService.createToken(loginUser);
@@ -210,6 +241,9 @@
    public void loginPreCheck(String username, String password)
    {
        // 用户名或密码为空 错误
        System.out.println(username);
        System.out.println("099999999999999999999999999999999999");
        System.out.println(password);
        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
        {
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));