测试环境配置及带租房的登录功能

This commit is contained in:
2026-07-06 09:28:20 +08:00
parent 7c319a80a4
commit c43915105c
40 changed files with 1975 additions and 468 deletions

View File

@@ -0,0 +1,35 @@
package com.zf.foodpurchase.common.constant;
/**
* 租户常量信息
*
* @author Lion Li
*/
public interface TenantConstants {
/**
* 超级管理员ID
*/
Long SUPER_ADMIN_ID = 1L;
/**
* 超级管理员角色 roleKey
*/
String SUPER_ADMIN_ROLE_KEY = "super_admin";
/**
* 租户管理员角色 roleKey
*/
String TENANT_ADMIN_ROLE_KEY = "tenant_admin";
/**
* 租户管理员角色名称
*/
String TENANT_ADMIN_ROLE_NAME = "租户管理员";
/**
* 默认租户ID
*/
String DEFAULT_TENANT_ID = "000000";
}

View File

@@ -25,6 +25,10 @@ public class SysDept extends BaseEntity
/** 父商户ID */
private Long parentId;
private String tenantId;
private String isTenant;
/** 祖级列表 */
private String ancestors;
@@ -235,11 +239,29 @@ public class SysDept extends BaseEntity
this.children = children;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public String getIsTenant() {
return isTenant;
}
public void setIsTenant(String isTenant) {
this.isTenant = isTenant;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("deptId", getDeptId())
.append("parentId", getParentId())
.append("tenantId", getTenantId())
.append("isTenant", getIsTenant())
.append("ancestors", getAncestors())
.append("deptName", getDeptName())
.append("orderNum", getOrderNum())

View File

@@ -35,6 +35,8 @@ public class SysRole extends BaseEntity
@Excel(name = "角色排序")
private Integer roleSort;
private String tenantId;
/** 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) */
@Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
private String dataScope;
@@ -219,6 +221,14 @@ public class SysRole extends BaseEntity
this.permissions = permissions;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
@@ -226,6 +236,7 @@ public class SysRole extends BaseEntity
.append("roleName", getRoleName())
.append("roleKey", getRoleKey())
.append("roleSort", getRoleSort())
.append("tenantId", getTenantId())
.append("dataScope", getDataScope())
.append("menuCheckStrictly", isMenuCheckStrictly())
.append("deptCheckStrictly", isDeptCheckStrictly())

View File

@@ -0,0 +1,112 @@
package com.zf.foodpurchase.common.core.domain.entity;
import com.zf.foodpurchase.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 租户业务对象 sys_tenant
*
* @author Michelle.Chung
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SysTenantBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空")
private Long id;
/**
* 租户编号
*/
private String tenantId;
/**
* 联系人
*/
@NotBlank(message = "联系人不能为空")
private String contactUserName;
/**
* 联系电话
*/
@NotBlank(message = "联系电话不能为空")
private String contactPhone;
/**
* 企业名称
*/
@NotBlank(message = "企业名称不能为空")
private String companyName;
/**
* 用户名(创建系统用户)
*/
@NotBlank(message = "用户名不能为空")
private String username;
/**
* 密码(创建系统用户)
*/
@NotBlank(message = "密码不能为空")
// @Pattern(regexp = RegexConstants.PASSWORD, message = "{user.password.format.valid}", groups = { AddGroup.class })
private String password;
/**
* 统一社会信用代码
*/
private String licenseNumber;
/**
* 地址
*/
private String address;
/**
* 域名
*/
private String domain;
/**
* 企业简介
*/
private String intro;
/**
* 备注
*/
private String remark;
/**
* 租户套餐编号
*/
@NotNull(message = "租户套餐不能为空")
private Long packageId;
/**
* 过期时间
*/
private Date expireTime;
/**
* 用户数量(-1不限制)
*/
private Long accountCount;
/**
* 租户状态(0正常 1停用)
*/
private String status;
private Long deptId;
}

View File

@@ -0,0 +1,49 @@
package com.zf.foodpurchase.common.core.domain.entity;
import com.zf.foodpurchase.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 租户套餐业务对象 sys_tenant_package
*
* @author Michelle.Chung
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SysTenantPackageBo extends BaseEntity {
/**
* 租户套餐id
*/
private Long packageId;
/**
* 套餐名称
*/
private String packageName;
/**
* 关联菜单id
*/
private Long[] menuIds;
/**
* 备注
*/
private String remark;
/**
* 菜单树选择项是否关联显示
*/
private Boolean menuCheckStrictly;
/**
* 状态(0正常 1停用)
*/
private String status;
}

View File

@@ -0,0 +1,93 @@
package com.zf.foodpurchase.common.core.domain.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 租户视图对象 sys_tenant
*
* @author Michelle.Chung
*/
@Data
public class SysTenantVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 租户编号
*/
private String tenantId;
/**
* 联系人
*/
private String contactUserName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 企业名称
*/
private String companyName;
/**
* 统一社会信用代码
*/
private String licenseNumber;
/**
* 地址
*/
private String address;
/**
* 域名
*/
private String domain;
/**
* 企业简介
*/
private String intro;
/**
* 备注
*/
private String remark;
/**
* 租户套餐编号
*/
private Long packageId;
/**
* 过期时间
*/
private Date expireTime;
/**
* 用户数量(-1不限制)
*/
private Long accountCount;
/**
* 租户状态(0正常 1停用)
*/
private String status;
private Long deptId;
private Long createDept;
}

View File

@@ -29,6 +29,16 @@ public class SysUser extends BaseEntity {
@Excel(name = "用户序号", type = Type.EXPORT, cellType = ColumnType.NUMERIC, prompt = "用户编号")
private Long userId;
/**
* 学校id
*/
private Integer organiId;
/**
* 租户id
*/
private String tenantId;
/**
* 部门ID
*/
@@ -369,10 +379,28 @@ public class SysUser extends BaseEntity {
this.roleId = roleId;
}
public Integer getOrganiId() {
return organiId;
}
public void setOrganiId(Integer organiId) {
this.organiId = organiId;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId())
.append("organiId", getOrganiId())
.append("tenantId", getTenantId())
.append("deptId", getDeptId())
.append("userName", getUserName())
.append("nickName", getNickName())

View File

@@ -7,6 +7,9 @@ package com.zf.foodpurchase.common.core.domain.model;
*/
public class LoginBody
{
private String tenantId;
/**
/**
* 用户名
*/
@@ -66,4 +69,12 @@ public class LoginBody
{
this.uuid = uuid;
}
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
}

View File

@@ -0,0 +1,44 @@
package com.zf.foodpurchase.common.utils;
import java.io.Serializable;
import java.util.List;
public class PageResult implements Serializable {
private Integer pageIndex;//当前页
private Integer pages;//总页数
private Long totles;//总条数
private List result; //结果集
public Integer getPageIndex() {
return pageIndex;
}
public void setPageIndex(Integer pageIndex) {
this.pageIndex = pageIndex;
}
public Integer getPages() {
return pages;
}
public void setPages(Integer pages) {
this.pages = pages;
}
public Long getTotles() {
return totles;
}
public void setTotles(Long totles) {
this.totles = totles;
}
public List getResult() {
return result;
}
public void setResult(List result) {
this.result = result;
}
}

View File

@@ -1,11 +1,8 @@
package com.zf.foodpurchase.common.utils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import org.springframework.util.AntPathMatcher;
import com.zf.foodpurchase.common.constant.Constants;
import com.zf.foodpurchase.common.core.text.StrFormatter;
@@ -681,4 +678,20 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
return sb.toString();
}
public static List<Long> commaStrToLongList(String str) {
// 1. 处理空值/空字符串:直接返回空集合,避免NPE
if (str == null || str.trim().isEmpty()) {
return new ArrayList<>();
}
// 2. 拆分+清理空格+转换为Long+收集为List
return Arrays.asList(str.split(",")) // 按逗号拆分字符串为数组
.stream() // 转为流处理
.map(String::trim) // 去除每个元素的前后空格(处理" 4 , 5 "的情况)
.filter(s -> !s.isEmpty()) // 过滤拆分后空字符串(比如",,6"拆分出的空元素)
.map(Long::valueOf) // 字符串转Long(非数字会抛NumberFormatException)
.collect(Collectors.toList()); // 收集为List<Long>
}
}