完善:完善用户登录 API,优化部分包结构(引入 MyBatis Plus、多数据源、P6Spy、Liquibase 等依赖,详情可见 README 介绍)

This commit is contained in:
2022-12-25 12:35:35 +08:00
parent 00e2b44d0e
commit 78e84e8941
28 changed files with 954 additions and 106 deletions

View File

@@ -0,0 +1,59 @@
/*
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package top.charles7c.cnadmin.common.util;
import java.util.Collection;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import cn.hutool.core.collection.CollUtil;
/**
* Stream 工具类
*
* @author Charles7c
* @since 2022/12/22 19:51
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class StreamUtils {
/**
* 将集合中的指定字段使用分隔符拼接成字符串
*
* @param collection
* 集合
* @param function
* 字段方法
* @param delimiter
* 分隔符
* @param <E>
* /
* @return 拼接结果
*/
public static <E> String join(Collection<E> collection, Function<E, String> function, CharSequence delimiter) {
if (CollUtil.isEmpty(collection)) {
return StringUtils.EMPTY;
}
return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter));
}
}

View File

@@ -0,0 +1,95 @@
/*
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package top.charles7c.cnadmin.common.util.helper;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.stp.StpUtil;
import top.charles7c.cnadmin.common.model.dto.LoginUser;
import top.charles7c.cnadmin.common.util.ExceptionUtils;
/**
* 登录助手
*
* @author Charles7c
* @since 2022/12/24 12:58
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class LoginHelper {
private static final String LOGIN_USER_KEY = "LOGIN_USER";
/**
* 用户登录并缓存用户信息
*
* @param loginUser
* 登录用户信息
*/
public static void login(LoginUser loginUser) {
SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
StpUtil.login(loginUser.getUserId());
StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
}
/**
* 获取登录用户信息
*
* @return /
*/
public static LoginUser getLoginUser() {
LoginUser loginUser = (LoginUser)SaHolder.getStorage().get(LOGIN_USER_KEY);
if (loginUser != null) {
return loginUser;
}
try {
loginUser = (LoginUser)StpUtil.getTokenSession().get(LOGIN_USER_KEY);
SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
} catch (Exception ignored) {
}
return loginUser;
}
/**
* 获取登录用户 ID
*
* @return /
*/
public static Long getUserId() {
return ExceptionUtils.exToNull(() -> getLoginUser().getUserId());
}
/**
* 获取登录用户名
*
* @return /
*/
public static String getUsername() {
return ExceptionUtils.exToNull(() -> getLoginUser().getUsername());
}
/**
* 获取登录用户昵称
*
* @return /
*/
public static String getNickname() {
return ExceptionUtils.exToNull(() -> getLoginUser().getNickname());
}
}