New file |
| | |
| | | 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); |
| | | } |
| | | } |