Commit 0a13d7b5 authored by tianbo's avatar tianbo

feat:统一门户对接-自动登录

parent e6417a1b
...@@ -4,17 +4,23 @@ import cn.hutool.core.util.URLUtil; ...@@ -4,17 +4,23 @@ import cn.hutool.core.util.URLUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.api.openapi.face.orm.entity.SSOAccountRelation; import com.yeejoin.amos.api.openapi.face.orm.entity.SSOAccountRelation;
import com.yeejoin.amos.component.feign.model.FeignClientResult;
import com.yeejoin.amos.component.feign.model.Page;
import com.yeejoin.amos.component.feign.utils.FeignUtil; import com.yeejoin.amos.component.feign.utils.FeignUtil;
import com.yeejoin.amos.component.robot.AmosRequestContext;
import com.yeejoin.amos.feign.privilege.Privilege; import com.yeejoin.amos.feign.privilege.Privilege;
import com.yeejoin.amos.feign.privilege.model.LoginInfoModel; import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import com.yeejoin.amos.feign.privilege.model.VerifyCodeAuthModel;
import com.yeejoin.amos.feign.privilege.util.AesUtil;
import com.yeejoin.amos.openapi.enums.SSOLoginStatusEnum; import com.yeejoin.amos.openapi.enums.SSOLoginStatusEnum;
import com.yeejoin.amos.openapi.enums.TaAccessConfigBizeEnum; import com.yeejoin.amos.openapi.enums.TaAccessConfigBizeEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil; import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
...@@ -29,6 +35,9 @@ public class SSOServiceImpl { ...@@ -29,6 +35,9 @@ public class SSOServiceImpl {
@Autowired @Autowired
private SSOAccountRelationServiceImpl ssoAccountRelationService; private SSOAccountRelationServiceImpl ssoAccountRelationService;
@Autowired
AmosRequestContext amosRequestContext;
public Map<String, String> getPlatformUserInfo(String portalCode) { public Map<String, String> getPlatformUserInfo(String portalCode) {
// 获取统一门户accessToken // 获取统一门户accessToken
String accessToken = getPortalAccessToken(portalCode); String accessToken = getPortalAccessToken(portalCode);
...@@ -53,20 +62,41 @@ public class SSOServiceImpl { ...@@ -53,20 +62,41 @@ public class SSOServiceImpl {
ssoAccountRelationService.save(ssoAccountRelation); ssoAccountRelationService.save(ssoAccountRelation);
return null; return null;
} }
// 存在两个平台用户对应关系并且登录状态(LoginStatus)为1,则用查到的用户信息登录监管平台 RequestContext.setProduct(amosRequestContext.getProduct());
if (ssoAccountRelation.getLoginStatus().equals(SSOLoginStatusEnum.SUCCESS.getCode())) { RequestContext.setAppKey(amosRequestContext.getAppKey());
// 1.查询监管平台用户登录信息(loginId和password) RequestContext.setToken(amosRequestContext.getToken());
List<LoginInfoModel> agencyUserClientList = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.getLoginInfoList(userPhoneNumber)); // 1.查询监管平台用户信息
if (ValidationUtil.isEmpty(agencyUserClientList)) { Page<AgencyUserModel> agencyUserModelList = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryForPage(null, null, userPhoneNumber, null, 1, 100));
ssoAccountRelation.setLoginStatus(SSOLoginStatusEnum.FAILED.getCode()); if (ValidationUtil.isEmpty(agencyUserModelList) || agencyUserModelList.getTotal() == 0) {
ssoAccountRelationService.updateById(ssoAccountRelation); ssoAccountRelation.setLoginStatus(SSOLoginStatusEnum.FAILED.getCode());
ssoAccountRelationService.updateById(ssoAccountRelation);
return null;
} else {
ssoAccountRelation.setLoginStatus(SSOLoginStatusEnum.SUCCESS.getCode());
// 2.登录监管平台
Map<String, String> agencyUserModel = (Map<String, String>) agencyUserModelList.getRecords().get(0);
VerifyCodeAuthModel verifyCodeAuthModel = new VerifyCodeAuthModel();
verifyCodeAuthModel.setLoginId(agencyUserModel.get("userName"));
verifyCodeAuthModel.setVerifyCode(AesUtil.encode(agencyUserModel.get("userName"),"qaz"));
FeignClientResult<Map<String, String>> loginResult;
loginResult = Privilege.authClient.userNameVerifyCode(verifyCodeAuthModel);
if (loginResult.getStatus() != 200) {
return null; return null;
} }
// 2.登录监管平台 ssoAccountRelationService.updateById(ssoAccountRelation);
String amosUserId = loginResult.getResult().get("userId");
String amosToken = loginResult.getResult().get("token");
// 3.为用户授权应用 // 3.为用户授权应用
RequestContext.setToken(amosToken);
RequestContext.setAgencyCode("tzs");
RequestContext.setExeUserId(amosUserId);
FeignUtil.remoteCall(() -> Privilege.applicationClient.queryUserService());
// 4.返回监管平台用户登录信息 // 4.返回监管平台用户登录信息
Map<String, String> result = new HashMap<>();
result.put("amosToken", amosToken);
result.put("amosUserId", amosUserId);
return result;
} }
return null;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment