jyy
2022-04-15 f57554f7da5e4d05b4b4bab99bf49ac9ca8c2038
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.matrix.system.common.authority.strategy;
 
import com.matrix.component.websoket.WebSoketScanQrCodeLoginObserver;
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.exception.GlobleException;
import com.matrix.core.tools.LogUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.common.bean.SysUserLoginRecord;
import com.matrix.system.common.bean.SysUsers;
import com.matrix.system.common.constance.AppConstance;
import com.matrix.system.common.constance.AppMessageCode;
import com.matrix.system.common.service.SysUsersService;
 
import java.util.Date;
 
/**
 * 账号密码登录策略
 *
 * @author JIANGYOUYAO
 * @email 935090232@qq.com
 * @date 2017年12月9日
 */
public class ScanQrCodeLogin implements LoginStrategy {
 
    private SysUsersService sysUsersService;
 
 
    private String loginQrCodeKey;
 
    public ScanQrCodeLogin(SysUsersService sysUsersService, String loginQrCodeKey) {
 
        this.sysUsersService = sysUsersService;
        this.loginQrCodeKey = loginQrCodeKey;
    }
 
    @Override
    public Object login() {
 
        Long loginUserId = WebSoketScanQrCodeLoginObserver.getScanCashValue(loginQrCodeKey);
 
        if (loginUserId != null) {
            SysUsers loginUser = sysUsersService.findById(loginUserId);
            if (loginUser != null) {
                addErrorLoginRecord(loginUser,AppConstance.LOGIN_SUCCESS);
                return loginUser;
            } else {
                LogUtil.error("登录失败");
                throw new GlobleException(AppMessageCode.User.ACCOUNT_NOT_EXIST);
            }
        }
 
        LogUtil.error("登录失败");
        throw new GlobleException(AppMessageCode.User.ACCOUNT_NOT_EXIST);
    }
 
 
    /**
     * 添加登录记录
     *
     * @param loginUser
     * @param loginResult
     * @author JIANGYOUYAO
     * @email 935090232@qq.com
     * @date 2017年12月12日
     */
    private void addErrorLoginRecord(SysUsers loginUser, int loginResult) {
 
        if (AppConstance.LOGIN_SUCCESS.equals(loginResult)) {
            sysUsersService.cleanUserTodayErrorLoginTime(loginUser.getSuAccount());
        }
        SysUserLoginRecord loginRecord = new SysUserLoginRecord();
        loginRecord.setCreateBy(MatrixConstance.SYSTEM_USER);
        loginRecord.setUpdateBy(MatrixConstance.SYSTEM_USER);
        loginRecord.setLrLoginTime(new Date());
        loginRecord.setLrId(null);
        loginRecord.setUserAccount(loginUser.getSuAccount());
        loginRecord.setLrResult(loginResult);
        loginRecord.setLrIp(WebUtil.getCustomerIp());
        loginRecord.setLrValid(AppConstance.RECORD_VALID);
        sysUsersService.addUserLoginRecord(loginRecord);
    }
}