From 1dd5d8f8a616f5cf3caa7828d46989c7d3dcafc4 Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Thu, 19 Oct 2023 15:01:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/jtdev' into jtdev

---
 skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java |   53 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
index 8edf1d1..c8927ea 100644
--- a/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
+++ b/skjcmanager/skjcmanager-auth/src/main/java/cn/gistack/auth/service/BladeUserDetailsServiceImpl.java
@@ -17,9 +17,17 @@
 package cn.gistack.auth.service;
 
 import cn.gistack.auth.constant.AuthConstant;
+import cn.gistack.common.utils.Base64Utils;
+import cn.gistack.pwd.dto.CBCResultDTO;
+import cn.gistack.pwd.dto.ResultDTO;
+import cn.gistack.pwd.fegin.IPwdClient;
+import cn.gistack.sm.collect.feign.ICollectClient;
+import cn.gistack.sm.collect.feign.ICollectClientFallback;
 import cn.gistack.sm.sjztmd.entity.AttResManagePerson;
 import cn.gistack.sm.sjztmd.feign.IAttResManagePersonClient;
 import cn.gistack.system.entity.Dept;
+import cn.gistack.system.user.supo.UserSUPO;
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.StringUtils;
 import io.jsonwebtoken.Claims;
 import lombok.AllArgsConstructor;
@@ -45,6 +53,7 @@
 import org.springframework.stereotype.Service;
 import javax.servlet.http.HttpServletRequest;
 import java.time.Duration;
+import java.util.Base64;
 import java.util.List;
 
 /**
@@ -66,6 +75,10 @@
 
 	private final BladeRedis bladeRedis;
 	private final JwtProperties jwtProperties;
+
+	private final ICollectClient collectClient;
+
+	private final IPwdClient pwdClient;
 
 	@Override
 	@SneakyThrows
@@ -147,8 +160,12 @@
 			}
 
 			//拼接用户所属行政区划、责任人需要返回水库ids
-			R<AttResManagePerson> attRes = attResManagePersonClient.queryListByPhone(user.getPhone());
-			userInfo.getDetail().set("resIds",attRes.getData());
+			userInfo.getDetail().set("resIds","");
+			if (StringUtil.isNotBlank(user.getPhone())) {
+				R<AttResManagePerson> attRes = attResManagePersonClient.queryListByPhone(user.getPhone());
+				userInfo.getDetail().set("resIds",attRes.getData());
+			}
+
 
 			String deptStr = "";
 			if (userInfo.getUser().getDeptId().indexOf(",") > 0){
@@ -157,11 +174,37 @@
 				deptStr = userInfo.getUser().getDeptId();
 			}
 			R<Dept> deptRes = sysClient.getDept(Long.valueOf(deptStr));
-			if (StringUtil.isBlank(deptRes.getData().getAdCode()))
+			if (StringUtil.isBlank(deptRes.getData().getAdCode())) {
 				// 部门为空
-				throw new UserDeniedAuthorizationException("没有找到有效组织机构~");
-			else
+//				throw new UserDeniedAuthorizationException("没有找到有效组织机构~");
+				userInfo.getDetail().set("adCodeBase", "");
+				userInfo.getDetail().set("parentDept",0);
+			} else {
 				userInfo.getDetail().set("adCodeBase",attResManagePersonClient.getAdBaseById(deptRes.getData().getAdCode()).getData());
+				userInfo.getDetail().set("parentDept",deptRes.getData().getParentId());
+			}
+
+			String collectResIds = collectClient.getMyCollect(user.getId().toString());
+			userInfo.getDetail().set("collect",collectResIds);
+
+			User loginUserInfo = userInfo.getUser();
+
+			//获取解密后的Base64字符串
+			R<ResultDTO> encryptRes = pwdClient.getDecrypt(loginUserInfo.getSm4iv(), loginUserInfo.getKeyindexs(),loginUserInfo.getEncdata());
+
+			if (encryptRes.getCode() != 200){
+				throw new UserDeniedAuthorizationException("获取密钥失败");
+			}
+
+			//解码Base64
+			String base64Decode = Base64Utils.getBase64Decode(encryptRes.getData().getData());
+
+			UserSUPO userSUPO = JSONObject.parseObject(base64Decode, UserSUPO.class);
+
+			//若登录用户的电话、角色、部门与原加密数据不符,登录失败
+			if (!(loginUserInfo.getPhone().equals(userSUPO.getPhone())  && loginUserInfo.getRoleId().equals(userSUPO.getRoleId())  && loginUserInfo.getDeptId().equals(userSUPO.getDeptId())) ){
+				throw new UserDeniedAuthorizationException("用户信息异常,请联系管理员");
+			}
 
 			return new BladeUserDetails(user.getId(),
 				user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR),

--
Gitblit v1.9.3