diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java
index 8116943f..93899ea4 100644
--- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java
@@ -56,4 +56,8 @@ public class Role extends CommonEntity {
@TableField(exist = false)
private String[] menuIds;
+ /** 菜单组 */
+ @TableField(exist = false)
+ private String[] tenantIds;
+
}
diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/RoleTenant.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/RoleTenant.java
new file mode 100644
index 00000000..84699d10
--- /dev/null
+++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/RoleTenant.java
@@ -0,0 +1,36 @@
+package com.cloud.kicc.system.api.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ *
+ * 角色和多租户关联表
+ *
+ *
+ * @Author: entfrm开发团队-王翔
+ * @Date: 2022/2/24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("sys_role_tenant")
+public class RoleTenant implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 角色ID
+ */
+ private String roleId;
+
+ /**
+ * 多租户ID
+ */
+ private String multiTenantId;
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleTenantMapper.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleTenantMapper.java
new file mode 100644
index 00000000..097e7d6c
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleTenantMapper.java
@@ -0,0 +1,16 @@
+package com.cloud.kicc.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cloud.kicc.system.api.entity.RoleTenant;
+
+/**
+ *
+ * 角色和多租户关联表 Mapper 接口
+ *
+ *
+ * @Author: entfrm开发团队-王翔
+ * @Date: 2022/2/24
+ */
+public interface RoleTenantMapper extends BaseMapper {
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleTenantService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleTenantService.java
new file mode 100644
index 00000000..244b1d85
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleTenantService.java
@@ -0,0 +1,16 @@
+package com.cloud.kicc.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cloud.kicc.system.api.entity.RoleTenant;
+
+/**
+ *
+ * 角色和多租户关联表 服务类
+ *
+ *
+ * @Author: entfrm开发团队-王翔
+ * @Date: 2022/2/24
+ */
+public interface RoleTenantService extends IService {
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java
index f4d453cf..a962223b 100644
--- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java
@@ -4,9 +4,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.system.api.entity.Role;
import com.cloud.kicc.system.api.entity.RoleMenu;
+import com.cloud.kicc.system.api.entity.RoleTenant;
import com.cloud.kicc.system.mapper.RoleMapper;
import com.cloud.kicc.system.service.RoleMenuService;
import com.cloud.kicc.system.service.RoleService;
+import com.cloud.kicc.system.service.RoleTenantService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -27,12 +29,14 @@ import java.util.List;
public class RoleServiceImpl extends ServiceImpl implements RoleService {
private final RoleMenuService roleMenuService;
+ private final RoleTenantService RoleTenantService;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean insertRole(Role role) {
// 新增角色信息
baseMapper.insert(role);
+ insertRoleTenant(role);
return insertRoleMenu(role);
}
@@ -61,6 +65,22 @@ public class RoleServiceImpl extends ServiceImpl implements Ro
return rows;
}
+ public boolean insertRoleTenant(Role role) {
+ boolean rows = true;
+ // 新增用户与多租户管理
+ List list = new ArrayList();
+ for (String tenantId : role.getTenantIds()) {
+ RoleTenant rt = new RoleTenant();
+ rt.setRoleId(role.getId());
+ rt.setMultiTenantId(tenantId);
+ list.add(rt);
+ }
+ if (list.size() > 0) {
+ rows = RoleTenantService.saveBatch(list);
+ }
+ return rows;
+ }
+
@Override
public List selectMyRolesByUserId(String userId) {
return baseMapper.selectRolesByUserId(userId);
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleTenantServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleTenantServiceImpl.java
new file mode 100644
index 00000000..f8a689e7
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleTenantServiceImpl.java
@@ -0,0 +1,20 @@
+package com.cloud.kicc.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.cloud.kicc.system.api.entity.RoleTenant;
+import com.cloud.kicc.system.mapper.RoleTenantMapper;
+import com.cloud.kicc.system.service.RoleTenantService;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 角色和菜单关联表 服务实现类
+ *
+ *
+ * @Author: entfrm开发团队-王翔
+ * @Date: 2022/2/24
+ */
+@Service
+public class RoleTenantServiceImpl extends ServiceImpl implements RoleTenantService {
+
+}
diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/RoleTenantMapper.xml b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/RoleTenantMapper.xml
new file mode 100644
index 00000000..ffbd27e0
--- /dev/null
+++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/RoleTenantMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/kicc-ui/src/views/system/role/role.data.ts b/kicc-ui/src/views/system/role/role.data.ts
index b62573c5..51872878 100644
--- a/kicc-ui/src/views/system/role/role.data.ts
+++ b/kicc-ui/src/views/system/role/role.data.ts
@@ -10,6 +10,7 @@ import { FormSchema } from '/@/components/Table';
import { h } from 'vue';
import { Switch, Tag } from 'ant-design-vue';
import { changeStatus } from '/@/api/platform/system/controller/role';
+import { listTenant } from '/@/api/platform/system/controller/tenant';
import { useMessage } from '/@/hooks/web/useMessage';
/** 通用变量统一声明区域 */
@@ -125,6 +126,19 @@ export const formSchema: FormSchema[] = [
},
required: true
},
+ {
+ field: 'tenantIds',
+ label: '多租户',
+ component: 'ApiSelect',
+ required: true,
+ componentProps: {
+ mode: 'multiple',
+ api: listTenant,
+ labelField: 'name',
+ valueField: 'id',
+ resultField: 'data'
+ }
+ },
{
field: 'status',
label: '状态',
diff --git a/kicc-ui/src/views/system/user/user.data.ts b/kicc-ui/src/views/system/user/user.data.ts
index 55dcf933..fb61584a 100644
--- a/kicc-ui/src/views/system/user/user.data.ts
+++ b/kicc-ui/src/views/system/user/user.data.ts
@@ -239,6 +239,7 @@ export const userFormSchema: FormSchema[] = [
field: 'roleIds',
label: '授权角色',
component: 'ApiSelect',
+ required: true,
componentProps: {
mode: 'multiple',
api: listRole,