| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.ltkj.common.constant.CacheConstants; |
| | | import com.ltkj.common.core.domain.entity.SysDept; |
| | | import com.ltkj.common.enums.DataSourceType; |
| | | import com.ltkj.common.exception.CustomException; |
| | | import com.ltkj.common.exception.user.CaptchaException; |
| | | import com.ltkj.common.exception.user.CaptchaExpireException; |
| | | import com.ltkj.common.exception.user.SecretKeyException; |
| | | import com.ltkj.common.utils.*; |
| | | import com.ltkj.common.utils.sign.RsaUtils; |
| | | import com.ltkj.db.DataSourceConfig; |
| | | import com.ltkj.db.DataSourceContextHolder; |
| | | import com.ltkj.framework.config.JwtUtils; |
| | | import com.ltkj.framework.config.UserHoder; |
| | | import com.ltkj.hosp.domain.DictHosp; |
| | |
| | | import com.ltkj.framework.manager.AsyncManager; |
| | | import com.ltkj.framework.manager.factory.AsyncFactory; |
| | | import com.ltkj.framework.security.context.AuthenticationContextHolder; |
| | | import org.springframework.util.DigestUtils; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | |
| | | |
| | | @Value("${token.secret_key_login}") |
| | | private boolean secretKeyLogin; |
| | | @Autowired |
| | | private DataSourceConfig dataSourceConfig; |
| | | |
| | | |
| | | /** |
| | |
| | | * @param password 密码 |
| | | * @return 结果 |
| | | */ |
| | | public String login(String username, String password, Boolean type,String code,String uuid) { |
| | | public String login(String username, String password, Boolean type,String code,String uuid,String hospId) { |
| | | |
| | | DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); |
| | | LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(DictHosp::getCode,hospId); |
| | | DictHosp hosp = hospService.getOne(wrapper); |
| | | |
| | | DataSourceContextHolder.setDataSourceKey(hosp.getDbname()); |
| | | String aSwitch = configService.selectConfigByKey("captcha_switch"); |
| | | if(null !=aSwitch && aSwitch.equalsIgnoreCase("Y")){ |
| | | String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + uuid; |
| | |
| | | redisCache.deleteObject(verifyKey); |
| | | if (captcha == null) |
| | | { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"),hosp.getDbname())); |
| | | // AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | if (!code.equalsIgnoreCase(captcha)) |
| | | { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"),hosp.getDbname())); |
| | | // AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")); |
| | | throw new CaptchaException(); |
| | | } |
| | | } |
| | |
| | | authentication = authenticationManager.authenticate(authenticationToken); |
| | | } catch (Exception e) { |
| | | if (e instanceof BadCredentialsException) { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"),hosp.getDbname())); |
| | | // AsyncFactory.recordLogininfor(username, 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(username, Constants.LOGIN_FAIL, e.getMessage(),hosp.getDbname())); |
| | | // AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()); |
| | | throw new ServiceException(e.getMessage()); |
| | | } |
| | | } finally { |
| | | AuthenticationContextHolder.clearContext(); |
| | | } |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); |
| | | // AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); |
| | | // AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),hosp.getDbname()); |
| | | // AsyncFactory.recordLogininforord(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),hosp.getDbname()); |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"),hosp.getDbname())); |
| | | LoginUser loginUser = (LoginUser) authentication.getPrincipal(); |
| | | loginUser.setHospDB(hosp.getDbname()); |
| | | loginUser.setHospId(hospId); |
| | | tokenService.setLoginUser(loginUser); |
| | | |
| | | recordLoginInfo(Long.valueOf(loginUser.getUserId())); |
| | | //校验商家过期否 |
| | |
| | | * @param password 密码 |
| | | * @return 结果 |
| | | */ |
| | | public String Cuslogin(String username, String password, Boolean type,String code,String uuid) { |
| | | public String Cuslogin(String username,String sfzh, String password, Boolean type,String code,String uuid, String hospId) { |
| | | |
| | | DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); |
| | | LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(DictHosp::getCode,hospId); |
| | | DictHosp hosp = hospService.getOne(wrapper); |
| | | |
| | | DataSourceContextHolder.setDataSourceKey(hosp.getDbname()); |
| | | |
| | | String aSwitch = configService.selectConfigByKey("captcha_switch"); |
| | | if(null !=aSwitch && aSwitch.equalsIgnoreCase("Y")){ |
| | |
| | | redisCache.deleteObject(verifyKey); |
| | | if (captcha == null) |
| | | { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"),hosp.getDbname())); |
| | | // AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire")); |
| | | throw new CaptchaExpireException(); |
| | | } |
| | | if (!code.equalsIgnoreCase(captcha)) |
| | | { |
| | | AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); |
| | | AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"),hosp.getDbname()); |
| | | throw new CaptchaException(); |
| | | } |
| | | } |
| | | |
| | | |
| | | LoginUser loginUser = loadCusByCusname(username, password); |
| | | LoginUser loginUser = loadCusByCusname(username,sfzh, password); |
| | | if (loginUser == null) { |
| | | return "用户名或密码错误"; |
| | | } |
| | |
| | | return tokenService.createToken(loginUser); |
| | | } |
| | | |
| | | public LoginUser loadCusByCusname(String username, String password) { |
| | | public LoginUser loadCusByCusname(String username,String sfzh, String password) { |
| | | LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>(); |
| | | wq.eq(TjCustomer::getCusPhone, username); |
| | | wq.eq(TjCustomer::getCusIdcard, sfzh); |
| | | List<TjCustomer> customerList = customerService.list(wq); |
| | | if (null == customerList || customerList.size() == 0) { |
| | | if (null == customerList || customerList.isEmpty()) { |
| | | //throw new ServiceException("登录用户:" + username + " 不存在"); |
| | | throw new ServiceException("账号或密码错误,请检查!"); |
| | | } |
| | | for (TjCustomer tjCustomer : customerList) { |
| | | try { |
| | | password = RsaUtils.decryptByPrivateKey(password); |
| | | boolean b = SecurityUtils.matchesPassword(password, tjCustomer.getCusPassword()); |
| | | if (b) { |
| | | // password = RsaUtils.decryptByPrivateKey(password); |
| | | // boolean b = SecurityUtils.matchesPassword(password, tjCustomer.getCusPassword()); |
| | | // if (b) { |
| | | // return createLoginCus(tjCustomer); |
| | | // } |
| | | password = DigestUtils.md5DigestAsHex(password.getBytes()); |
| | | if (password.equals(tjCustomer.getCusPassword())){ |
| | | return createLoginCus(tjCustomer); |
| | | } |
| | | } catch (Exception e) { |