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,