Commit 0a13d7b5 authored by tianbo's avatar tianbo

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

parent e6417a1b
......@@ -4,17 +4,23 @@ import cn.hutool.core.util.URLUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
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.robot.AmosRequestContext;
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.TaAccessConfigBizeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.typroject.tyboot.core.foundation.context.RequestContext;
import org.typroject.tyboot.core.foundation.utils.ValidationUtil;
import java.util.Date;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
/**
......@@ -29,6 +35,9 @@ public class SSOServiceImpl {
@Autowired
private SSOAccountRelationServiceImpl ssoAccountRelationService;
@Autowired
AmosRequestContext amosRequestContext;
public Map<String, String> getPlatformUserInfo(String portalCode) {
// 获取统一门户accessToken
String accessToken = getPortalAccessToken(portalCode);
......@@ -53,20 +62,41 @@ public class SSOServiceImpl {
ssoAccountRelationService.save(ssoAccountRelation);
return null;
}
// 存在两个平台用户对应关系并且登录状态(LoginStatus)为1,则用查到的用户信息登录监管平台
if (ssoAccountRelation.getLoginStatus().equals(SSOLoginStatusEnum.SUCCESS.getCode())) {
// 1.查询监管平台用户登录信息(loginId和password)
List<LoginInfoModel> agencyUserClientList = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.getLoginInfoList(userPhoneNumber));
if (ValidationUtil.isEmpty(agencyUserClientList)) {
ssoAccountRelation.setLoginStatus(SSOLoginStatusEnum.FAILED.getCode());
ssoAccountRelationService.updateById(ssoAccountRelation);
RequestContext.setProduct(amosRequestContext.getProduct());
RequestContext.setAppKey(amosRequestContext.getAppKey());
RequestContext.setToken(amosRequestContext.getToken());
// 1.查询监管平台用户信息
Page<AgencyUserModel> agencyUserModelList = FeignUtil.remoteCall(() -> Privilege.agencyUserClient.queryForPage(null, null, userPhoneNumber, null, 1, 100));
if (ValidationUtil.isEmpty(agencyUserModelList) || agencyUserModelList.getTotal() == 0) {
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;
}
// 2.登录监管平台
ssoAccountRelationService.updateById(ssoAccountRelation);
String amosUserId = loginResult.getResult().get("userId");
String amosToken = loginResult.getResult().get("token");
// 3.为用户授权应用
RequestContext.setToken(amosToken);
RequestContext.setAgencyCode("tzs");
RequestContext.setExeUserId(amosUserId);
FeignUtil.remoteCall(() -> Privilege.applicationClient.queryUserService());
// 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