mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-04-10 04:23:16 +08:00
[重大更新] 集成 mybatis-plus-join 重构项目代码(实验性功能不稳定)
This commit is contained in:
@@ -109,9 +109,9 @@ public class LoginUser implements Serializable {
|
||||
private List<RoleDTO> roles;
|
||||
|
||||
/**
|
||||
* 数据权限角色映射 key 为权限码 value 为可参与数据权限计算的角色
|
||||
* 数据权限角色映射 key 为权限码 value 为可参与数据权限计算的角色ID列表
|
||||
*/
|
||||
private Map<String, List<RoleDTO>> dataScopeRoleMap;
|
||||
private Map<String, List<Long>> dataScopeRoleMap;
|
||||
|
||||
/**
|
||||
* 岗位对象
|
||||
|
||||
@@ -33,8 +33,8 @@ public interface PermissionService {
|
||||
* 根据角色列表构建数据权限角色映射
|
||||
*
|
||||
* @param roles 角色列表
|
||||
* @return key 为权限码 value 为命中的角色列表
|
||||
* @return key 为权限码 value 为命中的角色ID列表
|
||||
*/
|
||||
Map<String, List<RoleDTO>> getDataScopeRoleMap(List<RoleDTO> roles);
|
||||
Map<String, List<Long>> getDataScopeRoleMap(List<RoleDTO> roles);
|
||||
|
||||
}
|
||||
|
||||
@@ -437,6 +437,64 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
return Strings.CS.contains(seq, searchSeq);
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略大小写检查指定字符序列中是否包含另一个字符序列。
|
||||
*
|
||||
* @param seq 要检查的字符序列
|
||||
* @param searchSeq 要搜索的字符序列
|
||||
* @return 如果包含则返回 true,否则返回 false
|
||||
*/
|
||||
public static boolean containsIgnoreCase(final CharSequence seq, final CharSequence searchSeq) {
|
||||
return Strings.CI.contains(seq, searchSeq);
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查 CharSequence 是否以指定前缀开头。
|
||||
*
|
||||
* @param str 要检查的字符序列
|
||||
* @param prefix 要查找的前缀
|
||||
* @return 如果以指定前缀开头则返回 true,否则返回 false
|
||||
*/
|
||||
public static boolean startsWith(final CharSequence str, final CharSequence prefix) {
|
||||
return Strings.CS.startsWith(str, prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略大小写检查 CharSequence 是否以指定前缀开头。
|
||||
*
|
||||
* @param str 要检查的字符序列
|
||||
* @param prefix 要查找的前缀
|
||||
* @return 如果以指定前缀开头则返回 true,否则返回 false
|
||||
*/
|
||||
public static boolean startsWithIgnoreCase(final CharSequence str, final CharSequence prefix) {
|
||||
return Strings.CI.startsWith(str, prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* 忽略大小写检查 CharSequence 是否以指定后缀结尾。
|
||||
*
|
||||
* @param str 要检查的字符序列
|
||||
* @param suffix 要查找的后缀
|
||||
* @return 如果以指定后缀结尾则返回 true,否则返回 false
|
||||
*/
|
||||
public static boolean endsWithIgnoreCase(final CharSequence str, final CharSequence suffix) {
|
||||
return Strings.CI.endsWith(str, suffix);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回指定字符序列首次出现的位置。
|
||||
*
|
||||
* @param seq 源字符序列
|
||||
* @param searchSeq 待查找字符序列
|
||||
* @return 首次出现的位置,不存在时返回 -1
|
||||
*/
|
||||
public static int indexOf(final CharSequence seq, final CharSequence searchSeq) {
|
||||
if (seq == null || searchSeq == null) {
|
||||
return -1;
|
||||
}
|
||||
return seq.toString().indexOf(searchSeq.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除字符串中的指定字符序列。
|
||||
*
|
||||
@@ -448,6 +506,35 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
return Strings.CS.remove(str, remove);
|
||||
}
|
||||
|
||||
/**
|
||||
* 如果字符串以指定前缀开头,则移除该前缀。
|
||||
*
|
||||
* @param str 要处理的字符串
|
||||
* @param remove 要移除的前缀
|
||||
* @return 处理后的字符串
|
||||
*/
|
||||
public static String removeStart(final String str, final String remove) {
|
||||
if (isEmpty(str) || isEmpty(remove)) {
|
||||
return str;
|
||||
}
|
||||
return startsWith(str, remove) ? str.substring(remove.length()) : str;
|
||||
}
|
||||
|
||||
/**
|
||||
* 替换字符串中的目标子串。
|
||||
*
|
||||
* @param text 原始字符串
|
||||
* @param searchString 需要替换的子串
|
||||
* @param replacement 替换后的子串
|
||||
* @return 替换后的字符串
|
||||
*/
|
||||
public static String replace(final String text, final String searchString, final String replacement) {
|
||||
if (text == null || isEmpty(searchString) || replacement == null) {
|
||||
return text;
|
||||
}
|
||||
return text.replace(searchString, replacement);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查字符串是否包含任意一个指定的字符序列
|
||||
|
||||
@@ -42,6 +42,11 @@
|
||||
<artifactId>mybatis-plus-jsqlparser</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.yulichang</groupId>
|
||||
<artifactId>mybatis-plus-join-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- sql性能分析插件 -->
|
||||
<dependency>
|
||||
<groupId>p6spy</groupId>
|
||||
|
||||
@@ -4,11 +4,11 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.reflect.GenericTypeUtils;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.toolkit.Db;
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import org.apache.ibatis.logging.Log;
|
||||
import org.apache.ibatis.logging.LogFactory;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
@@ -29,7 +29,7 @@ import java.util.function.Function;
|
||||
* @since 2021-05-13
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public interface BaseMapperPlus<T, V> extends BaseMapper<T> {
|
||||
public interface BaseMapperPlus<T, V> extends MPJBaseMapper<T> {
|
||||
|
||||
Log log = LogFactory.getLog(BaseMapperPlus.class);
|
||||
|
||||
|
||||
@@ -198,13 +198,22 @@ public class PlusDataPermissionHandler {
|
||||
if (!access.constrained()) {
|
||||
return roles;
|
||||
}
|
||||
Map<Long, RoleDTO> allRoleMap = new LinkedHashMap<>();
|
||||
if (CollUtil.isNotEmpty(roles)) {
|
||||
roles.forEach(role -> allRoleMap.put(role.getRoleId(), role));
|
||||
}
|
||||
Map<Long, RoleDTO> roleMap = new LinkedHashMap<>();
|
||||
Map<String, List<RoleDTO>> dataScopeRoleMap = user.getDataScopeRoleMap();
|
||||
Map<String, List<Long>> dataScopeRoleMap = user.getDataScopeRoleMap();
|
||||
if (CollUtil.isNotEmpty(dataScopeRoleMap)) {
|
||||
access.perms().forEach(perm -> {
|
||||
List<RoleDTO> roleList = dataScopeRoleMap.get(perm);
|
||||
if (CollUtil.isNotEmpty(roleList)) {
|
||||
roleList.forEach(role -> roleMap.putIfAbsent(role.getRoleId(), role));
|
||||
List<Long> roleIds = dataScopeRoleMap.get(perm);
|
||||
if (CollUtil.isNotEmpty(roleIds)) {
|
||||
roleIds.forEach(roleId -> {
|
||||
RoleDTO role = allRoleMap.get(roleId);
|
||||
if (role != null) {
|
||||
roleMap.putIfAbsent(role.getRoleId(), role);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -17,9 +17,8 @@ public class I18nLocaleResolver implements LocaleResolver {
|
||||
public Locale resolveLocale(HttpServletRequest httpServletRequest) {
|
||||
String language = httpServletRequest.getHeader("content-language");
|
||||
Locale locale = Locale.getDefault();
|
||||
if (language != null && language.length() > 0) {
|
||||
String[] split = language.split("_");
|
||||
locale = new Locale(split[0], split[1]);
|
||||
if (language != null && !language.isEmpty()) {
|
||||
locale = Locale.forLanguageTag(language.replace('_', '-'));
|
||||
}
|
||||
return locale;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user