| package doumeemes.service.system.impl; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.iflytek.antelope.other.client.dto.resp.UserDTO; | 
| import doumeemes.biz.system.SystemDictDataBiz; | 
| import doumeemes.config.shiro.ShiroToken; | 
| import doumeemes.core.constants.ResponseStatus; | 
| import doumeemes.core.exception.BusinessException; | 
| import doumeemes.core.model.LoginUserInfo; | 
| import doumeemes.core.utils.Constants; | 
| import doumeemes.core.utils.Utils; | 
| import doumeemes.core.utils.dingding.DingDingUtil; | 
| import doumeemes.core.utils.dingding.LingyangUtil; | 
| import doumeemes.core.utils.edpg.EdgpServerUtil; | 
| import doumeemes.core.utils.edpg.bean.AppUserInfoModel; | 
| import doumeemes.dao.business.model.Company; | 
| import doumeemes.dao.business.model.CompanyUser; | 
| import doumeemes.dao.ext.CompanyExtMapper; | 
| import doumeemes.dao.ext.CompanyUserExtMapper; | 
| import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO; | 
| import doumeemes.dao.ext.vo.CompanyExtListVO; | 
| import doumeemes.dao.ext.vo.CompanyUserExtListVO; | 
| import doumeemes.dao.system.dto.LoginDTO; | 
| import doumeemes.dao.system.model.SystemLoginLog; | 
| import doumeemes.service.common.CaptchaService; | 
| import doumeemes.service.ext.CompanyExtService; | 
| import doumeemes.service.system.SystemLoginLogService; | 
| import doumeemes.service.system.SystemLoginService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.apache.commons.lang3.StringUtils; | 
| import org.apache.shiro.SecurityUtils; | 
| import org.apache.shiro.authc.AuthenticationException; | 
| import org.apache.shiro.subject.Subject; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.context.annotation.Lazy; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
| import java.util.Date; | 
|   | 
| @Slf4j | 
| @Service | 
| public class SystemLoginServiceImpl implements SystemLoginService { | 
|   | 
|     @Value("${project.version}") | 
|     private String systemVersion; | 
|   | 
|     @Autowired | 
|     private CaptchaService captchaService; | 
|     @Lazy | 
|     @Autowired | 
|     private SystemDictDataBiz systemDictDataBiz; | 
|   | 
|     @Autowired | 
|     private CompanyUserExtMapper companyUserExtMapper; | 
|     @Autowired | 
|     private CompanyExtMapper companyExtMapper; | 
|   | 
|     @Autowired | 
|     private CompanyExtService companyExtService; | 
|   | 
|     @Autowired | 
|     private SystemLoginLogService systemLoginLogService; | 
|   | 
|     @Value("${captcha_check}") | 
|     private Boolean captchaCheck; | 
|   | 
|     @Override | 
|     public String loginByPassword(LoginDTO dto, HttpServletRequest request) { | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginUsername(dto.getUsername()); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setSystemVersion(systemVersion); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|         // 校验验证码 | 
|         if(captchaCheck){ | 
|             try { | 
|                 captchaService.check(dto.getUuid(), dto.getCode()); | 
|             } catch (Exception e) { | 
|                 log.error(e.getMessage(), e); | 
|                 loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|                 loginLog.setSuccess(Boolean.FALSE); | 
|                 systemLoginLogService.create(loginLog); | 
|                 throw e; | 
|             } | 
|         } | 
|   | 
|         // 校验用户名和密码 | 
|         Subject subject = SecurityUtils.getSubject(); | 
|         ShiroToken token = new ShiroToken(dto.getCompanyId(),dto.getUsername(), dto.getPassword(),false,false); | 
|         try { | 
|             subject.login(token); | 
|             LoginUserInfo loginUser = ((LoginUserInfo)subject.getPrincipal()); | 
|             loginLog.setUserId(loginUser.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             return (String)subject.getSession().getId(); | 
|         }catch (AuthenticationException e) { | 
|             BusinessException ee = null; | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             if(e.getCause()!=null && e.getCause() instanceof  BusinessException){ | 
|                 ee =   (BusinessException)e.getCause(); | 
|                 loginLog.setReason(ee.getMessage().length() > 200 ? (ee.getMessage().substring(0, 190) + "...") : ee.getMessage()); | 
|                 log.error(ee.getMessage(), e); | 
|             }else{ | 
|                 log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|                 loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|                 ee = new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             systemLoginLogService.create(loginLog); | 
|             throw  ee; | 
|         } | 
|     } | 
|   | 
|     @Override | 
|     public String platformLogin(LoginDTO dto, HttpServletRequest request) { | 
|   | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginUsername(dto.getUsername()); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setSystemVersion(systemVersion); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|         // 校验验证码 | 
|         if(captchaCheck){ | 
|             try { | 
|                 captchaService.check(dto.getUuid(), dto.getCode()); | 
|             } catch (Exception e) { | 
|                 log.error(e.getMessage(), e); | 
|                 loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|                 loginLog.setSuccess(Boolean.FALSE); | 
|                 systemLoginLogService.create(loginLog); | 
|                 throw e; | 
|             } | 
|         } | 
|         // 校验用户名和密码 | 
|         Subject subject = SecurityUtils.getSubject(); | 
|         ShiroToken token = new ShiroToken(dto.getCompanyId(),dto.getUsername(), dto.getPassword(),false,false); | 
|         try { | 
|             subject.login(token); | 
|             LoginUserInfo loginUser = ((LoginUserInfo)subject.getPrincipal()); | 
|             loginLog.setUserId(loginUser.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             return (String)subject.getSession().getId(); | 
|         }catch (AuthenticationException e) { | 
|             BusinessException ee = null; | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             if(e.getCause()!=null && e.getCause() instanceof  BusinessException){ | 
|                 ee =   (BusinessException)e.getCause(); | 
|                 loginLog.setReason(ee.getMessage().length() > 200 ? (ee.getMessage().substring(0, 190) + "...") : ee.getMessage()); | 
|                 log.error(ee.getMessage(), e); | 
|             }else{ | 
|                 log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|                 loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|                 ee = new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             systemLoginLogService.create(loginLog); | 
|             throw  ee; | 
|         } | 
|     } | 
|     @Override | 
|     public   String getDingdingCorpId(Integer companyId){ | 
|         CompanyExtListVO company =     companyExtService.getModelById(companyId); | 
|         if(company == null){ | 
|             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"企业信息不存在!"); | 
|         } | 
|         try { | 
|             String ddinfo = company.getDingdingInfo(); | 
|             JSONObject j = JSONObject.parseObject(ddinfo); | 
|             String r = j .getString("corpId"); | 
|             if(StringUtils.isBlank(r)){ | 
|                 throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"企业配置信息有误!"); | 
|             } | 
|             return  r; | 
|         }catch (Exception e){ | 
|             throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"企业配置信息有误!"); | 
|         } | 
|     } | 
|     @Override | 
|     public String loginByDingdingCode(Integer companyId ,String code, HttpServletRequest request) { | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginUsername(companyId+"_dd_"+code); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setSystemVersion(systemVersion); | 
|   | 
|         loginLog.setOrgin(Constants.USER_LOGIN_ORIGIN.dingding); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|         try { | 
|             String mobile = null; | 
|             CompanyUser user = DingDingUtil.getUserInfoByCode(companyExtService.getDingdingToken(companyId),code); | 
|             if(user == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             QueryCompanyUserExtDTO qUser = new QueryCompanyUserExtDTO(); | 
|             qUser.setDeleted(Constants.ZERO); | 
|             qUser.setDdUserid(user.getDdUserid()); | 
|             qUser.setDdUnionid(user.getDdUnionid()); | 
|             //查询用户数据 | 
|             CompanyUserExtListVO model = companyUserExtMapper.selectModel(qUser); | 
|             if(model != null&& StringUtils.isNotBlank(model.getPhone())){ | 
|                 mobile=model.getPhone(); | 
|             }else{ | 
|                 //获取用户手机号 | 
|                 mobile= DingDingUtil.getUserMobileByUserId(companyExtService.getDingdingToken(companyId),user.getDdUserid()); | 
|             } | 
|             loginLog.setLoginUsername(mobile); | 
|             // 校验用户名和密码 | 
|             Subject subject = SecurityUtils.getSubject(); | 
|             // 钉钉登录 | 
|             ShiroToken token = new ShiroToken(companyId,mobile, null,true,false); | 
|   | 
|             subject.login(token); | 
|             LoginUserInfo loginUser =(LoginUserInfo)subject.getPrincipal(); | 
|             loginLog.setUserId(user.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             user.setId(loginUser.getCompanyUser().getId()); | 
|             //更新用户绑定的钉钉信息 | 
|             companyUserExtMapper.updateById(user); | 
|             return (String)subject.getSession().getId(); | 
|         } catch (AuthenticationException e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         }catch (Exception e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         } | 
|     } | 
|     @Override | 
|     public  String loginLingYangDemo(String token, HttpServletRequest request  ) { | 
|         Integer companyId = null; | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setSystemVersion(systemVersion); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|          companyId= Integer.parseInt(systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_DEMO_COMPANY).getCode()); | 
|         loginLog.setLoginUsername(companyId+"_lingyangDemo_"+token); | 
|         try { | 
|             String mobile = null; | 
|             CompanyExtListVO com = companyExtService.getModelById(companyId); | 
|             if(com == null || StringUtils.isBlank(com.getLingyangInfo())){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             LingyangUtil lingyangUtil = new LingyangUtil(systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_AESKEY).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_APPKEY).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_SECRET).getCode()); | 
|             UserDTO  user = lingyangUtil.getUserInfoByToken(token); | 
|             if(user == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             QueryCompanyUserExtDTO qUser = new QueryCompanyUserExtDTO(); | 
|             qUser.setDeleted(Constants.ZERO); | 
| //            qUser.setCompanyId(companyId); | 
|             qUser.setLingyangUserid(user.getUserId()); | 
|             //查询用户数据 | 
|             CompanyUserExtListVO model = companyUserExtMapper.selectModel(qUser); | 
|             //如果没有绑定过 或者手机号为空 | 
|             mobile=   systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_DEMO_USER).getCode(); | 
|             loginLog.setLoginUsername(mobile); | 
|             // 校验用户名和密码 | 
|             Subject subject = SecurityUtils.getSubject(); | 
|             // 钉钉登录 | 
|             ShiroToken atoken = new ShiroToken(companyId,mobile, null,true,false); | 
|             subject.login(atoken); | 
|             LoginUserInfo loginUser =(LoginUserInfo)subject.getPrincipal(); | 
|             loginUser.getCompanyUser().setName(user.getName()); | 
|             loginLog.setUserId(loginUser.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setLingyangUserid(user.getUserId()); | 
|             cu.setId(loginUser.getCompanyUser().getId()); | 
|             cu.setName(user.getName());//同步羚羊的名字 | 
|             cu.setUpdateTime(new Date()); | 
|             //更新用户绑定的钉钉信息 | 
|             companyUserExtMapper.updateById(cu); | 
|             return (String)subject.getSession().getId(); | 
|         } catch (AuthenticationException e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         }catch (Exception e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         } | 
|     } | 
|     @Override | 
|     public  String  loginEdgpDemo(  String token, HttpServletRequest request ) { | 
|        Integer companyId = null; | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setSystemVersion(systemVersion); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|         companyId= Integer.parseInt(systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_DEMO_COMPANY).getCode()); | 
|         loginLog.setLoginUsername(companyId+"_edgpDemo_"+token); | 
|         try { | 
|             String mobile = null; | 
|             CompanyExtListVO com = companyExtService.getModelById(companyId); | 
|             if(com == null || StringUtils.isBlank(com.getLingyangInfo())){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             EdgpServerUtil edgpServerUtil = new EdgpServerUtil( | 
|                     systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_SERVER_URL).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_APPKEY).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_SECRET).getCode()); | 
|             AppUserInfoModel user = edgpServerUtil.getUserInfoByToken(token); | 
|             if(user == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             QueryCompanyUserExtDTO qUser = new QueryCompanyUserExtDTO(); | 
|             qUser.setDeleted(Constants.ZERO); | 
| //            qUser.setCompanyId(companyId); | 
|             qUser.setEdgpUserId(user.getId()+""); | 
|             //查询用户数据 | 
|             CompanyUserExtListVO model = companyUserExtMapper.selectModel(qUser); | 
|             //如果没有绑定过 或者手机号为空 | 
|             mobile=   systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_DEMO_USER).getCode(); | 
|             loginLog.setLoginUsername(mobile); | 
|             // 校验用户名和密码 | 
|             Subject subject = SecurityUtils.getSubject(); | 
|             // 钉钉登录 | 
|             ShiroToken atoken = new ShiroToken(companyId,mobile, null,true,false); | 
|             subject.login(atoken); | 
|             LoginUserInfo loginUser =(LoginUserInfo)subject.getPrincipal(); | 
|             loginLog.setUserId(loginUser.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginUser.getCompanyUser().setName(user.getName()); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setEdgpUserId(user.getId()+""); | 
|             cu.setId(loginUser.getCompanyUser().getId()); | 
|             cu.setName(user.getName());//同步羚羊的名字 | 
|             cu.setUpdateTime(new Date()); | 
|             //更新用户绑定的钉钉信息 | 
|             companyUserExtMapper.updateById(cu); | 
|             return (String)subject.getSession().getId(); | 
|         } catch (AuthenticationException e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         }catch (Exception e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         } | 
|     } | 
|     @Override | 
|     public   String loginAutoType(  String token,int type, HttpServletRequest request,boolean isDemo){ | 
|       String result = null; | 
|         switch (type){ | 
|             case 0: | 
|                 //羚羊注册自动登录 | 
|                 result =  loginAutoBylingyangToken(  token,   request, isDemo); | 
|                 break; | 
|             case 1: | 
|                 //Edgp自动登录 | 
|                 result =  loginAutoByEdgp(  token,   request, isDemo); | 
|                 break; | 
|         } | 
|         return  result; | 
|     } | 
|     @Override | 
|     public  String loginAutoBylingyangToken(String token, HttpServletRequest request,boolean isDemo){ | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginUsername("lingyangAuto_"+token); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setOrgin(Constants.USER_LOGIN_ORIGIN.lingyang); | 
|         loginLog.setSystemVersion(systemVersion); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|         try { | 
|             String mobile = null; | 
|             LingyangUtil lingyangUtil = new LingyangUtil(systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_AESKEY).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_APPKEY).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_SECRET).getCode()); | 
|             UserDTO  user = lingyangUtil.getUserInfoByToken(token); | 
|             if(user == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             //查询企业信息 | 
|             Company com =  companyExtService.createByLingyang(user,systemDictDataBiz.queryByCode(Constants.DEFAULT,Constants.USER_PWD).getCode()); | 
|             if(com == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             //企业用户信息 | 
|             CompanyUserExtListVO model =com.getUserModel(); | 
|             if(model != null && StringUtils.isNotBlank(model.getPhone())){ | 
|                 mobile=model.getPhone(); | 
|             }else{ | 
|                 //获取羚羊手机号 | 
|                 mobile= user.getPhone(); | 
|             } | 
|             loginLog.setLoginUsername(mobile); | 
|             // 校验用户名和密码 | 
|             Subject subject = SecurityUtils.getSubject(); | 
|             // 钉钉登录 | 
|             ShiroToken atoken = new ShiroToken(com.getId(),mobile, null,true,false); | 
|             subject.login(atoken); | 
|             LoginUserInfo loginUser =(LoginUserInfo)subject.getPrincipal(); | 
|             loginUser.getCompanyUser().setName(user.getName()); | 
|             loginLog.setUserId(loginUser.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setLingyangUserid(user.getUserId()); | 
|             cu.setId(loginUser.getCompanyUser().getId()); | 
|             cu.setName(user.getName());//同步羚羊的名字 | 
|             cu.setUpdateTime(new Date()); | 
|             //更新用户绑定的钉钉信息 | 
|             companyUserExtMapper.updateById(cu); | 
|             return (String)subject.getSession().getId(); | 
|         } catch (AuthenticationException e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         }catch (Exception e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         } | 
|     } | 
|     @Override | 
|     public  String loginAutoByEdgp(String token, HttpServletRequest request,boolean isDemo){ | 
|         SystemLoginLog loginLog = new SystemLoginLog(); | 
|         loginLog.setLoginUsername("lingyangAuto_"+token); | 
|         loginLog.setLoginTime(new Date()); | 
|         loginLog.setOrgin(Constants.USER_LOGIN_ORIGIN.edgp); | 
|         loginLog.setSystemVersion(systemVersion); | 
|         loginLog.setIp(Utils.User_Client.getIP(request)); | 
|         loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp())); | 
|         loginLog.setPlatform(Utils.User_Client.getPlatform(request)); | 
|         loginLog.setClientInfo(Utils.User_Client.getBrowser(request)); | 
|         loginLog.setOsInfo(Utils.User_Client.getOS(request)); | 
|         loginLog.setServerIp(Utils.Server.getIP()); | 
|         try { | 
|             String mobile = null; | 
|             EdgpServerUtil edgpServerUtil = new EdgpServerUtil( | 
|                     systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_SERVER_URL).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_APPKEY).getCode(), | 
|                     systemDictDataBiz.queryByCode(Constants.EDGP_PARAM,Constants.EDGP_SECRET).getCode()); | 
|             AppUserInfoModel user = edgpServerUtil.getUserInfoByToken(token); | 
|             if(user == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             //查询企业信息 | 
|             Company com =  companyExtService.createByEdgp(user,systemDictDataBiz.queryByCode(Constants.DEFAULT,Constants.USER_PWD).getCode()); | 
|             if(com == null){ | 
|                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|             } | 
|             //企业用户信息 | 
|             CompanyUserExtListVO model =com.getUserModel(); | 
|             if(model != null && StringUtils.isNotBlank(model.getPhone())){ | 
|                 mobile=model.getPhone(); | 
|             }else{ | 
|                 //获取羚羊手机号 | 
|                 mobile= user.getPhone(); | 
|             } | 
|             loginLog.setLoginUsername(mobile); | 
|             // 校验用户名和密码 | 
|             Subject subject = SecurityUtils.getSubject(); | 
|             // 钉钉登录 | 
|             ShiroToken atoken = new ShiroToken(com.getId(),mobile, null,true,false); | 
|             subject.login(atoken); | 
|             LoginUserInfo loginUser =(LoginUserInfo)subject.getPrincipal(); | 
|             loginUser.getCompanyUser().setName(user.getName()); | 
|             loginLog.setUserId(loginUser.getId()); | 
|             loginLog.setCompanyId(loginUser.getCompany()!=null?loginUser.getCompany().getId():null); | 
|             loginLog.setCompanyUserId(loginUser.getCompanyUser()!=null?loginUser.getCompanyUser().getId():null); | 
|             loginLog.setSuccess(Boolean.TRUE); | 
|             systemLoginLogService.create(loginLog); | 
|             CompanyUser cu = new CompanyUser(); | 
|             cu.setEdgpUserId(user.getId()+""); | 
|             cu.setId(loginUser.getCompanyUser().getId()); | 
|             cu.setName(user.getName());//同步羚羊的名字 | 
|             cu.setUpdateTime(new Date()); | 
|             //更新用户绑定的钉钉信息 | 
|             companyUserExtMapper.updateById(cu); | 
|             return (String)subject.getSession().getId(); | 
|         } catch (AuthenticationException e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         }catch (Exception e) { | 
|             log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e); | 
|             loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage()); | 
|             loginLog.setSuccess(Boolean.FALSE); | 
|             systemLoginLogService.create(loginLog); | 
|             throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT); | 
|         } | 
|     } | 
|   | 
|   | 
|   | 
|   | 
| } |