Explorar el Código

feat:login by pwd

shc hace 1 año
padre
commit
233e4a8f1e

+ 5 - 2
hnqz-auth/src/main/java/com/qunzhixinxi/hnqz/auth/service/HnqzUserDetailsServiceImpl.java

@@ -60,6 +60,7 @@ public class HnqzUserDetailsServiceImpl implements HnqzUserDetailsService {
 
 	/**
 	 * 用户密码登录
+	 *
 	 * @param username 用户名
 	 * @return
 	 * @throws UsernameNotFoundException
@@ -67,9 +68,11 @@ public class HnqzUserDetailsServiceImpl implements HnqzUserDetailsService {
 	@Override
 	@SneakyThrows
 	public UserDetails loadUserByUsername(String username) {
+		String u1 = username.endsWith("@mp") ? username.split("@")[0] : username;
+
 		Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS);
-		if (cache != null && cache.get(username) != null) {
-			return (HnqzUser) cache.get(username).get();
+		if (cache != null && cache.get(u1) != null) {
+			return (HnqzUser) cache.get(u1).get();
 		}
 
 		R<UserInfo> result = remoteUserService.info(username, SecurityConstants.FROM_IN);

+ 16 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/SysUserController.java

@@ -143,6 +143,11 @@ public class SysUserController {
 	@GetMapping("/info/{username}")
 	public R info(@PathVariable String username) {
 
+		boolean b = username.endsWith("@mp");
+		if (b){
+			username = username.split("@")[0];
+		}
+
 		// 根据用户名查询用户时,过滤掉已删除和已禁用的用户
 		List<SysUser> user = userService.list(Wrappers.<SysUser>query().lambda().eq(SysUser::getUsername, username)
 				.eq(SysUser::getDelFlag, 0).eq(SysUser::getLockFlag, 0));
@@ -155,12 +160,22 @@ public class SysUserController {
 			UserInfo userInfo = userService.findUserInfo(user.get(0));
 			// 校验用户角色是否包含众包用户和医药代表用户
 
-			if (isZbOrDbUsers(userInfo.getRoles())) {
+			if (b || isZbOrDbUsers(userInfo.getRoles())) {
 				return R.ok(userInfo);
 			} else {
 				return R.failed(null, String.format("用户信息为空 %s", username));
 			}
 		} else {
+			// 小程序多账号情况
+			if (b) {
+				for (SysUser u : user) {
+					UserInfo userInfo = userService.findUserInfo(u);
+					if (!isZbOrDbUsers(userInfo.getRoles())) {
+						// 角色是小程序角色,则直接返回
+						return R.ok(userInfo);
+					}
+				}
+			}
 			String password = redisTemplate.opsForValue().get(username) + "";
 			if (null != password) {
 				for (int i = 0; i < user.size(); i++) {