1. 新增用户与部门,一对多的关系;
2. 新增管理多部门用户,如果有为公司的多个部门可以进行选择登录(选择后,直到下次变更访问公司前,只能访问此次选择公的业务数据,使用 company_id 控制,后续补充此数据权限的实现);
3. sql 转化工具修复,现在可以正确的对 mysql 进行不同数据库实例的转化了;
4. 所有表格主键,修改为分布式 Id 实现;
5. 补全在初始版本中没有被纳入的其他预制功能模块
This commit is contained in:
Administrator
2025-07-01 07:30:25 +00:00
parent 84ddc8ca6e
commit 06b278563e
1254 changed files with 85893 additions and 1524 deletions

View File

@@ -13,9 +13,6 @@ import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.HashSet;
import java.util.Set;
/**
* 专属于 web 包的工具类
*
@@ -30,7 +27,8 @@ public class WebFrameworkUtils {
public static final String HEADER_TENANT_ID = "tenant-id";
public static final String HEADER_VISIT_TENANT_ID = "visit-tenant-id";
public static final String HEADER_VISIT_DEPT_IDS = "visit-dept-ids";
public static final String HEADER_VISIT_COMPANY_ID = "visit-company-id";
public static final String HEADER_VISIT_COMPANY_NAME = "visit-company-name";
/**
* 终端的 Header
@@ -182,26 +180,60 @@ public class WebFrameworkUtils {
}
/**
* 获得访问的部门编号列表,从 header 中
* 获得访问的公司编号,从 header 中
* @param request 请求
* @return 部门编号列表,解析失败或无效时返回 null
* @return 公司部门编号,解析失败或无效时返回 0
*/
public static Set<Long> getVisitDeptIds(HttpServletRequest request) {
String deptIdsHeader = request.getHeader(HEADER_VISIT_DEPT_IDS);
if (StrUtil.isBlank(deptIdsHeader)) {
return new HashSet<>();
public static Long getCompanyId(HttpServletRequest request) {
String companyIdHeader = request.getHeader(HEADER_VISIT_COMPANY_ID);
if (StrUtil.isBlank(companyIdHeader)) {
return 0L;
}
try {
Set<Long> deptIds = java.util.Arrays.stream(deptIdsHeader.split(","))
.map(String::trim)
.filter(cn.hutool.core.util.StrUtil::isNotBlank)
.map(Long::valueOf)
.collect(java.util.stream.Collectors.toSet());
return deptIds.isEmpty() ? new HashSet<>() : deptIds;
// 解析部门编号列表
return Long.parseLong(companyIdHeader);
} catch (Exception e) {
// 解析失败
return new HashSet<>();
return 0L;
}
}
/**
* 获得访问的公司名称,从 header 中
* @param request 请求
* @return 公司名称,解析失败或无效时返回空字符串
*/
public static String getCompanyName(HttpServletRequest request) {
String companyName = request.getHeader(HEADER_VISIT_COMPANY_NAME);
return StrUtil.isBlank(companyName) ? StrUtil.EMPTY : companyName;
}
/**
* 获得访问的部门编号,从 header 中
* @param request 请求
* @return 部门编号,解析失败或无效时返回 0
*/
public static Long getDeptId(HttpServletRequest request) {
String deptIdHeader = request.getHeader(WebFrameworkUtils.HEADER_VISIT_TENANT_ID);
if (StrUtil.isBlank(deptIdHeader)) {
return 0L;
}
try {
// 解析部门编号
return Long.parseLong(deptIdHeader);
} catch (Exception e) {
// 解析失败
return 0L;
}
}
/**
* 获得访问的部门名称,从 header 中
* @param request 请求
* @return 部门名称,解析失败或无效时返回空字符串
*/
public static String getDeptName(HttpServletRequest request) {
String deptName = request.getHeader(WebFrameworkUtils.HEADER_VISIT_COMPANY_NAME);
return StrUtil.isBlank(deptName) ? StrUtil.EMPTY : deptName;
}
}