From a732684ccf6a76c3d7e4048b3718e0dd401f6e5f Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Mon, 22 Apr 2024 16:13:52 +0800
Subject: [PATCH] 登录新增登录类型,根据类型过滤对应类型的角色信息返回

---
 src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index 871e434..682f01c 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -274,6 +274,30 @@
 		return buildUserInfo(user);
 	}
 
+	/**
+	 * 用户信息
+	 *
+	 * @param tenantId
+	 * @param account
+	 * @param password
+	 * @param type 登录类型 2:pc 3:app
+	 * @return
+	 */
+	@Override
+	public UserInfo userInfo(String tenantId, String account, String password, Integer type) {
+		User user = baseMapper.getUser(tenantId, account, password);
+		return buildUserInfo(user, type);
+	}
+
+	/**
+	 * 用户信息
+	 *
+	 * @param tenantId
+	 * @param account
+	 * @param password
+	 * @param userEnum
+	 * @return
+	 */
 	@Override
 	public UserInfo userInfo(String tenantId, String account, String password, UserEnum userEnum) {
 		User user = baseMapper.getUser(tenantId, account, password);
@@ -319,6 +343,36 @@
 		return userInfo;
 	}
 
+	/**
+	 *
+	 * @param user
+	 * @param type 登录类型 2:pc 3:app
+	 * @return
+	 */
+	private UserInfo buildUserInfo(User user, Integer type) {
+		if (ObjectUtil.isEmpty(user)) {
+			return null;
+		}
+		UserInfo userInfo = new UserInfo();
+		userInfo.setUser(user);
+		if (Func.isNotEmpty(user)) {
+			// 判断登录类型设置对应的角色id
+			user.setRoleId(Strings.join(roleService.getRoleIdStrByRoleIdAndType(user.getRoleId(),type), ','));
+			// 设置角色别名
+			List<String> roleAlias = roleService.getRoleAliases(user.getRoleId());
+			userInfo.setRoles(roleAlias);
+		}
+		// 根据每个用户平台,建立对应的detail表,通过查询将结果集写入到detail字段
+		Kv detail = Kv.create().set("type", null);
+		UserOther userOther = new UserOther();
+		UserOther query = userOther.selectOne(Wrappers.<UserOther>lambdaQuery().eq(UserOther::getUserId, user.getId()));
+		if (ObjectUtil.isNotEmpty(query)) {
+			detail.set("ext", query.getUserExt());
+		}
+		userInfo.setDetail(detail);
+		return userInfo;
+	}
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public UserInfo userInfo(UserOauth userOauth) {

--
Gitblit v1.9.3