package doumeemes.service.system.impl;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
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.core.utils.excel.EasyExcelUtil;
|
import doumeemes.dao.business.BizLingyangMapper;
|
import doumeemes.dao.business.dto.AutoLoginUserDTO;
|
import doumeemes.dao.business.model.BizLingyang;
|
import doumeemes.dao.business.model.Company;
|
import doumeemes.dao.business.model.CompanyUser;
|
import doumeemes.dao.business.model.Material;
|
import doumeemes.dao.ext.CompanyExtMapper;
|
import doumeemes.dao.ext.CompanyUserExtMapper;
|
import doumeemes.dao.ext.dto.LingYangUserDto;
|
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.BeanUtils;
|
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 org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Random;
|
|
@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 BizLingyangMapper bizLingyangMapper;
|
@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);
|
loginLog.setOrgin(Constants.USER_LOGIN_ORIGIN.pc);
|
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;
|
}
|
}
|
// @Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
@Override
|
public String importLyAuth(MultipartFile file,HttpServletRequest request) {
|
//解析excel
|
List<AutoLoginUserDTO> materialList = EasyExcelUtil.importExcel(file, 0, 1, AutoLoginUserDTO.class);
|
if (materialList == null || materialList.size() == 0) {
|
throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容有误!");
|
}
|
int num = 0;
|
for(AutoLoginUserDTO u : materialList){
|
UserDTO user = new UserDTO();
|
BeanUtils.copyProperties(u, user);
|
user.setManager("1");
|
user.setOrgName(user.getName());
|
Date date = null;
|
if(StringUtils.isBlank(user.getName())){
|
continue;
|
}
|
try {
|
date = new Date(u.getDate().getTime()+ (long) Math.random()*60*1000);
|
}catch (Exception e){
|
}
|
boolean r = logiglingyangModel(user,date,"lingyang_import",request,false);
|
num = r?(num+1):num;
|
}
|
return "成功导入【"+num+"】个,失败【"+(materialList.size()-num)+"】个";
|
|
}
|
public boolean logiglingyangModel(UserDTO user,Date date,String remark, HttpServletRequest request,boolean isDemo){
|
SystemLoginLog loginLog = new SystemLoginLog();
|
loginLog.setLoginUsername("lingyangAuto_"+JSONObject.toJSONString(user));
|
loginLog.setLoginTime(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());
|
String mobile = null;
|
if(user == null){
|
return false;
|
}
|
//查询企业信息
|
Company qc = new Company();
|
qc.setDeleted(Constants.ZERO);
|
qc.setCreditCode(user.getCreditCode());
|
qc.setOrigin(Constants.COMPANY_ORIGIN.lingyang);
|
//根据行政区代码查询企业信息
|
if(companyExtMapper.selectOne(new QueryWrapper<>(qc).last(" limit 1") )!=null){
|
return false;
|
}
|
|
Company com = companyExtService.createByLingyang(user,date,remark,systemDictDataBiz.queryByCode(Constants.DEFAULT,Constants.USER_PWD).getCode());
|
if(com == null){
|
return false;
|
}
|
//企业用户信息
|
CompanyUserExtListVO model =com.getUserModel();
|
if(model != null && StringUtils.isNotBlank(model.getPhone())){
|
mobile=model.getPhone();
|
}else{
|
//获取羚羊手机号
|
mobile= user.getPhone();
|
}
|
loginLog.setLoginUsername(mobile);
|
loginLog.setUserId(model.getUserId());
|
loginLog.setCompanyId(com.getId());
|
loginLog.setCompanyUserId(model.getId());
|
loginLog.setSuccess(Boolean.TRUE);
|
systemLoginLogService.create(loginLog);
|
CompanyUser cu = new CompanyUser();
|
cu.setLingyangUserid(user.getUserId());
|
cu.setId(model.getId());
|
cu.setName(user.getName());//同步羚羊的名字
|
cu.setUpdateTime(new Date());
|
//更新用户绑定的钉钉信息
|
companyUserExtMapper.updateById(cu);
|
|
BizLingyang biz = new BizLingyang();
|
biz.setActionTimes(1);
|
biz.setCreateTime(date);
|
biz.setCreditCode(user.getCreditCode());
|
biz.setCompanyId(com.getId());
|
biz.setAppKey(systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM,Constants.LINGYANG_APPKEY ).getCode());
|
biz.setUserPhone(user.getPhone());
|
// biz.setRemark(remark);
|
bizLingyangMapper.insert(biz);
|
return true;
|
|
}
|
@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,new Date(),null,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);
|
}
|
}
|
|
|
|
|
}
|