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