Commit 52bceccb by zhangxingmin

接口优化

parent a7cdc247
......@@ -34,11 +34,6 @@
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- swagger2-->
<dependency>
<groupId>io.springfox</groupId>
......@@ -51,6 +46,24 @@
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- Jackson 数据绑定库 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!-- Jackson 注解支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
<!-- Java 8 时间类型支持 -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<!-- 实体类模块 -->
<dependency>
<groupId>com.yd</groupId>
......
......@@ -7,7 +7,7 @@ import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication(scanBasePackages = "com.yd")
@MapperScan("com.yd.user.service.dao")
@MapperScan("com.yd.**.dao")
@EnableFeignClients(basePackages = "com.yd")
public class UserApiApplication {
......
package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiRelRoleMenuService;
import com.yd.user.feign.client.relrolemenu.ApiRelRoleMenuFeignClient;
import com.yd.user.feign.request.relrolemenu.ApiProjectRoleMenuListAddRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedProjectRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedTenantRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiTenantRoleMenuListAddRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 角色-菜单关系信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relRoleMenu")
@Validated
public class ApiRelRoleMenuController implements ApiRelRoleMenuFeignClient {
@Autowired
private ApiRelRoleMenuService apiRelRoleMenuService;
/**
* 租户管理-角色配置-分配菜单-添加菜单角色列表关系
* @param request
* @return
*/
@Override
public Result addTenantRoleMenuList(ApiTenantRoleMenuListAddRequest request) {
return apiRelRoleMenuService.addTenantRoleMenuList(request);
}
/**
* 租户管理-角色配置-分配菜单-查询选中的菜单列表
* @return
*/
@Override
public Result<List<String>> selectedTenantRoleMenuList(ApiSelectedTenantRoleMenuListRequest request) {
return apiRelRoleMenuService.selectedTenantRoleMenuList(request);
}
/**
* 项目管理-角色配置-分配菜单-添加菜单角色列表关系
* @param request
* @return
*/
@Override
public Result addProjectRoleMenuList(ApiProjectRoleMenuListAddRequest request) {
return apiRelRoleMenuService.addProjectRoleMenuList(request);
}
/**
* 项目管理-角色配置-分配菜单-查询选中的菜单列表
* @return
*/
@Override
public Result<List<String>> selectedProjectRoleMenuList(ApiSelectedProjectRoleMenuListRequest request) {
return apiRelRoleMenuService.selectedProjectRoleMenuList(request);
}
}
......@@ -6,15 +6,18 @@ import com.yd.user.api.service.ApiRelTenantMenuService;
import com.yd.user.feign.client.reltenantmenu.ApiRelTenantMenuFeignClient;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListAddRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 租户-菜单关系信息(租户管理-菜单配置)
......@@ -41,6 +44,16 @@ public class ApiRelTenantMenuController implements ApiRelTenantMenuFeignClient {
}
/**
* 租户和菜单关系树形列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelTenantMenuTreeListResponse>> tree(ApiRelTenantMenuTreeListRequest request) {
return apiRelTenantMenuService.tree(request);
}
/**
* 添加租户和菜单列表关系
* @param request
* @return
......@@ -61,12 +74,24 @@ public class ApiRelTenantMenuController implements ApiRelTenantMenuFeignClient {
}
/**
* 导入-选择菜单分页查询(查询当前租户级(当前所属租户绑定的菜单)或者系统级(全局菜单在任何地方都适用导入绑定)的菜单表数据)
* 导入-树形菜单查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantMenuSelectPageResponse>> selectMenuPage(ApiRelTenantMenuSelectPageRequest request) {
return apiRelTenantMenuService.selectMenuPage(request);
public Result<List<ApiRelTenantMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelTenantMenuImportQueryMenuTreeRequest request) {
return apiRelTenantMenuService.importQueryMenuTree(request);
}
/**
* 导入-树形菜单-查询选中的菜单id集合
* @param tenantBizId
* @return
*/
@Override
public Result<List<String>> selectedList(String tenantBizId) {
return apiRelTenantMenuService.selectedList(tenantBizId);
}
}
package com.yd.user.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiRelUserRoleService;
import com.yd.user.feign.client.reluserrole.ApiRelUserRoleFeignClient;
import com.yd.user.feign.request.reluserrole.ApiProjectUserRoleListAddRequest;
import com.yd.user.feign.request.reluserrole.ApiTenantUserRoleListAddRequest;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.yd.user.feign.request.reluserrole.*;
import com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.List;
import org.springframework.web.bind.annotation.*;
/**
* 用户-角色关系信息
......@@ -30,40 +28,78 @@ public class ApiRelUserRoleController implements ApiRelUserRoleFeignClient {
private ApiRelUserRoleService apiRelUserRoleService;
/**
* 租户管理-用户配置-权限配置-添加用户角色列表关系
* 租户管理-用户配置-分配角色-添加用户角色列表关系
* @param request
* @return
*/
@Override
public Result addTenantUserRoleList(ApiTenantUserRoleListAddRequest request) {
public Result addTenantUserRoleList(ApiTenantUserRoleListAddRequest request){
return apiRelUserRoleService.addTenantUserRoleList(request);
}
/**
* 租户管理-用户配置-权限配置-查询选中的角色列表
* 租户管理-用户配置-分配角色-移除用户角色列表关系
* @param request
* @return
*/
@Override
public Result delTenantUserRoleList(ApiTenantUserRoleListDelRequest request) {
return apiRelUserRoleService.delTenantUserRoleList(request);
}
/**
* 租户管理-用户配置-分配角色-查询待选的角色分页列表
* @return
*/
@Override
public Result<IPage<ApiCandidateTenantUserRolePageResponse>> candidateTenantUserRolePage(ApiCandidateTenantUserRolePageRequest request){
return apiRelUserRoleService.candidateTenantUserRolePage(request);
}
/**
* 租户管理-用户配置-分配角色-查询选中的角色分页列表
* @return
*/
@Override
public Result<List<ApiSelectedTenantUserRoleListResponse>> selectedTenantUserRoleList(String tenantBizId, String userBizId) {
return apiRelUserRoleService.selectedTenantUserRoleList(tenantBizId,userBizId);
public Result<IPage<ApiSelectedTenantUserRolePageResponse>> selectedTenantUserRolePage(ApiSelectedTenantUserRolePageRequest request){
return apiRelUserRoleService.selectedTenantUserRolePage(request);
}
/**
* 项目管理-用户配置-权限配置-添加用户角色列表关系
* 项目管理-用户配置-分配角色-添加用户角色列表关系
* @param request
* @return
*/
@Override
public Result addProjectUserRoleList(ApiProjectUserRoleListAddRequest request) {
public Result addProjectUserRoleList(ApiProjectUserRoleListAddRequest request){
return apiRelUserRoleService.addProjectUserRoleList(request);
}
/**
* 项目管理-用户配置-权限配置-查询选中的角色列表
* 项目管理-用户配置-分配角色-移除用户角色列表关系
* @param request
* @return
*/
@Override
public Result delProjectUserRoleList(ApiProjectUserRoleListDelRequest request) {
return apiRelUserRoleService.delProjectUserRoleList(request);
}
/**
* 项目管理-用户配置-分配角色-查询待选的角色分页列表
* @return
*/
@Override
public Result<IPage<ApiCandidateProjectUserRolePageResponse>> candidateProjectUserRolePage(ApiCandidateProjectUserRolePageRequest request){
return apiRelUserRoleService.candidateProjectUserRolePage(request);
}
/**
* 项目管理-用户配置-分配角色-查询选中的角色列表
* @return
*/
@Override
public Result<List<ApiSelectedProjectUserRoleListResponse>> selectedProjectUserRoleList(String projectBizId, String userBizId) {
return apiRelUserRoleService.selectedProjectUserRoleList(projectBizId,userBizId);
public Result<IPage<ApiSelectedProjectUserRolePageResponse>> selectedProjectUserRolePage(ApiSelectedProjectUserRolePageRequest request){
return apiRelUserRoleService.selectedProjectUserRolePage(request);
}
}
package com.yd.user.api.controller;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysDictService;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 字典类型信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysDict")
@Validated
public class ApiSysDictController implements ApiSysDictFeignClient {
@Autowired
private ApiSysDictService apiSysDictService;
/**
* 根据字典类型获取字典数据项列表
* @param dictType
* @return
*/
@Override
public Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType) {
return apiSysDictService.getDictItemListByDictType(dictType);
}
}
......@@ -4,19 +4,17 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysUserService;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditPwdRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.request.sysuser.*;
import com.yd.user.feign.response.login.ApiLoginMenuInfoResponse;
import com.yd.user.feign.response.login.GetLoginInfoResponse;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 用户信息
......@@ -83,11 +81,41 @@ public class ApiSysUserController implements ApiSysUserFeignClient {
}
/**
* 编辑用户密码 TODO
* 编辑用户密码
* @return
*/
@Override
public Result editPwd(ApiSysUserEditPwdRequest request) {
return null;
return apiSysUserService.editPwd(request);
}
/**
* 管理端-获取用户登录后权限信息
* @return
*/
@Override
public Result<GetLoginInfoResponse> getLoginInfo() {
return apiSysUserService.getLoginInfo();
}
/**
* 管理端-获取当前登录用户绑定的当前租户用户角色菜单列表
* @return
*/
@Override
public Result<List<ApiLoginMenuInfoResponse>> getMenuRouters(String tenantBizId) {
return apiSysUserService.getMenuRouters(tenantBizId);
}
/**
* 权限-管理端-根据作用域分页查询租户或项目列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiScopePageResponse>> scopePage(ApiScopePageRequest request) {
return apiSysUserService.scopePage(request);
}
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 角色-菜单关系表(多对多关系) 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relRoleMenu")
public class RelRoleMenuController {
}
package com.yd.user.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 字典类型表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysDict")
public class SysDictController {
}
package com.yd.user.api.dto;
import lombok.Data;
/**
* 项目添加和编辑校验入参的DTO
*/
@Data
public class ApiSysProjectAddAndEditReqCheckDto {
/**
* 作用域(1:系统级(全局) 2:租户级 )
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
private Integer isIn;
/**
* 项目访问地址
*/
private String projectUrl;
/**
* 是否超级管理员
*/
private Boolean isAdmin;
}
package com.yd.user.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListAddRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuListPageResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import java.util.List;
public interface ApiRelProjectMenuService {
Result<IPage<ApiRelProjectMenuListPageResponse>> page(ApiRelProjectMenuListPageRequest request);
Result<List<ApiRelProjectMenuTreeListResponse>> tree(ApiRelProjectMenuTreeListRequest request);
Result addMenuList(ApiRelProjectMenuListAddRequest request);
Result del(Long id);
Result<List<ApiRelProjectMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelProjectMenuImportQueryMenuTreeRequest request);
Result<List<String>> selectedList(String projectBizId);
Result addSingleRel(String projectBizId, String menuBizId);
}
package com.yd.user.api.service;
import com.yd.common.result.Result;
import com.yd.user.feign.request.relrolemenu.ApiProjectRoleMenuListAddRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedProjectRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedTenantRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiTenantRoleMenuListAddRequest;
import java.util.List;
public interface ApiRelRoleMenuService {
Result addTenantRoleMenuList(ApiTenantRoleMenuListAddRequest request);
Result<List<String>> selectedTenantRoleMenuList(ApiSelectedTenantRoleMenuListRequest request);
Result addProjectRoleMenuList(ApiProjectRoleMenuListAddRequest request);
Result<List<String>> selectedProjectRoleMenuList(ApiSelectedProjectRoleMenuListRequest request);
}
......@@ -4,19 +4,27 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListAddRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import java.util.List;
public interface ApiRelTenantMenuService {
Result<IPage<ApiRelTenantMenuListPageResponse>> page(ApiRelTenantMenuListPageRequest request);
Result<List<ApiRelTenantMenuTreeListResponse>> tree(ApiRelTenantMenuTreeListRequest request);
Result addMenuList(ApiRelTenantMenuListAddRequest request);
Result del(Long id);
Result<IPage<ApiRelTenantMenuSelectPageResponse>> selectMenuPage(ApiRelTenantMenuSelectPageRequest request);
Result<List<ApiRelTenantMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelTenantMenuImportQueryMenuTreeRequest request);
Result<List<String>> selectedList(String tenantBizId);
Result addSingleRel(String tenantBizId, String menuBizId);
}
package com.yd.user.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.reluserrole.ApiProjectUserRoleListAddRequest;
import com.yd.user.feign.request.reluserrole.ApiTenantUserRoleListAddRequest;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.yd.user.feign.request.reluserrole.*;
import com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse;
import java.util.List;
......@@ -12,9 +14,17 @@ public interface ApiRelUserRoleService {
Result addTenantUserRoleList(ApiTenantUserRoleListAddRequest request);
Result<List<ApiSelectedTenantUserRoleListResponse>> selectedTenantUserRoleList(String tenantBizId, String userBizId);
Result delTenantUserRoleList(ApiTenantUserRoleListDelRequest request);
Result<IPage<ApiCandidateTenantUserRolePageResponse>> candidateTenantUserRolePage(ApiCandidateTenantUserRolePageRequest request);
Result<IPage<ApiSelectedTenantUserRolePageResponse>> selectedTenantUserRolePage(ApiSelectedTenantUserRolePageRequest request);
Result addProjectUserRoleList(ApiProjectUserRoleListAddRequest request);
Result<List<ApiSelectedProjectUserRoleListResponse>> selectedProjectUserRoleList(String projectBizId, String userBizId);
Result delProjectUserRoleList(ApiProjectUserRoleListDelRequest request);
Result<IPage<ApiCandidateProjectUserRolePageResponse>> candidateProjectUserRolePage(ApiCandidateProjectUserRolePageRequest request);
Result<IPage<ApiSelectedProjectUserRolePageResponse>> selectedProjectUserRolePage(ApiSelectedProjectUserRolePageRequest request);
}
package com.yd.user.api.service;
import com.yd.common.result.Result;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import java.util.List;
public interface ApiSysDictService {
Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType);
}
......@@ -2,12 +2,15 @@ package com.yd.user.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.request.sysuser.*;
import com.yd.user.feign.response.login.ApiLoginMenuInfoResponse;
import com.yd.user.feign.response.login.GetLoginInfoResponse;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import java.util.List;
public interface ApiSysUserService {
Result<IPage<ApiSysUserPageResponse>> page(ApiSysUserPageRequest request);
......@@ -19,4 +22,12 @@ public interface ApiSysUserService {
Result<ApiSysUserDetailResponse> detail(String userBizId);
Result editStatus(String userBizId,Integer status);
Result editPwd(ApiSysUserEditPwdRequest request);
Result<GetLoginInfoResponse> getLoginInfo();
Result<List<ApiLoginMenuInfoResponse>> getMenuRouters(String tenantBizId);
Result<IPage<ApiScopePageResponse>> scopePage(ApiScopePageRequest request);
}
package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.TreeUtils;
import com.yd.user.api.service.ApiRelProjectMenuService;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListAddRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuListPageResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.dto.RelProjectMenuDto;
import com.yd.user.service.model.RelProjectMenu;
import com.yd.user.service.service.IRelProjectMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class ApiRelProjectMenuServiceImpl implements ApiRelProjectMenuService {
......@@ -14,6 +33,127 @@ public class ApiRelProjectMenuServiceImpl implements ApiRelProjectMenuService {
private IRelProjectMenuService iRelProjectMenuService;
/**
* 项目和菜单关系分页查询r
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelProjectMenuListPageResponse>> page(ApiRelProjectMenuListPageRequest request) {
Page<ApiRelProjectMenuListPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiRelProjectMenuListPageResponse> iPage = iRelProjectMenuService.page(page, request);
return Result.success(iPage);
}
/**
* 项目和菜单关系树形列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelProjectMenuTreeListResponse>> tree(ApiRelProjectMenuTreeListRequest request) {
List<ApiRelProjectMenuTreeListResponse> treeMenu = new ArrayList<>();
//项目和菜单关系列表
List<ApiRelProjectMenuTreeListResponse> queryList = iRelProjectMenuService.treeList(request);
if (!CollectionUtils.isEmpty(queryList)) {
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
queryList,
ApiRelProjectMenuTreeListResponse::getMenuBizId, // 获取节点ID
ApiRelProjectMenuTreeListResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
* 添加项目和菜单列表关系
* @param request
* @return
*/
@Override
public Result addMenuList(ApiRelProjectMenuListAddRequest request) {
List<RelProjectMenu> list = new ArrayList<>();
//先删后增加
iRelProjectMenuService.removeByProjectBizId(request.getProjectBizId());
if (!CollectionUtils.isEmpty(request.getMenuBizIdList())) {
//菜单唯一标识(业务ID) 列表(选中列表)不为空
list = request.getMenuBizIdList().stream().map(bizId -> {
RelProjectMenu relProjectMenu = new RelProjectMenu();
relProjectMenu.setProjectBizId(request.getProjectBizId());
relProjectMenu.setMenuBizId(bizId);
return relProjectMenu;
}).collect(Collectors.toList());
iRelProjectMenuService.saveOrUpdateBatch(list);
}
return Result.success();
}
/**
* 删除项目和菜单关系
* @param id 项目和菜单关系表主键id
* @return
*/
@Override
public Result del(Long id) {
RelProjectMenu relProjectMenu = iRelProjectMenuService.queryOne(id);
if (Objects.isNull(relProjectMenu)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
iRelProjectMenuService.removeById(relProjectMenu.getId());
return Result.success();
}
/**
* 导入-树形菜单查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelProjectMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelProjectMenuImportQueryMenuTreeRequest request) {
//TODO 条件搜索菜单树后续完善
List<ApiRelProjectMenuImportQueryMenuTreeResponse> treeMenu = new ArrayList<>();
//查询项目和菜单关系数据(排除已导入的)
List<ApiRelProjectMenuImportQueryMenuTreeResponse> queryList = iRelProjectMenuService.importQueryMenuTreeList(request);
if (!CollectionUtils.isEmpty(queryList)) {
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
queryList,
ApiRelProjectMenuImportQueryMenuTreeResponse::getMenuBizId, // 获取节点ID
ApiRelProjectMenuImportQueryMenuTreeResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
* 导入-树形菜单-查询选中的菜单id集合
* @param projectBizId
* @return
*/
@Override
public Result<List<String>> selectedList(String projectBizId) {
List<String> menuBizIdList = new ArrayList<>();
List<RelProjectMenu> relProjectMenuList = iRelProjectMenuService.queryList(RelProjectMenuDto.builder()
.projectBizId(projectBizId)
.build());
if (!CollectionUtils.isEmpty(relProjectMenuList)) {
menuBizIdList = relProjectMenuList.stream().map(RelProjectMenu::getMenuBizId).collect(Collectors.toList());
}
return Result.success(menuBizIdList);
}
/**
* 添加单个项目和菜单关系
* @param projectBizId
* @param menuBizId
......
......@@ -51,7 +51,7 @@ public class ApiRelProjectRoleServiceImpl implements ApiRelProjectRoleService {
@Override
public Result addRoleList(ApiRelProjectRoleListAddRequest request) {
List<RelProjectRole> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getRoleBizIdList())) {
if (!CollectionUtils.isEmpty(request.getRoleBizIdList())) {
//角色唯一标识(业务ID) 列表(选中列表)不为空
list = request.getRoleBizIdList().stream().map(bizId -> {
RelProjectRole relProjectRole = new RelProjectRole();
......
......@@ -47,7 +47,7 @@ public class ApiRelProjectUserServiceImpl implements ApiRelProjectUserService {
@Override
public Result addUserList(ApiRelProjectUserListAddRequest request) {
List<RelProjectUser> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getUserBizIdList())) {
if (!CollectionUtils.isEmpty(request.getUserBizIdList())) {
//用户唯一标识(业务ID) 列表(选中列表)不为空
list = request.getUserBizIdList().stream().map(bizId -> {
RelProjectUser relTenantUser = new RelProjectUser();
......
package com.yd.user.api.service.impl;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiRelRoleMenuService;
import com.yd.user.feign.request.relrolemenu.ApiProjectRoleMenuListAddRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedProjectRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedTenantRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiTenantRoleMenuListAddRequest;
import com.yd.user.service.dto.RelRoleMenuDto;
import com.yd.user.service.model.RelRoleMenu;
import com.yd.user.service.model.RelTenantMenu;
import com.yd.user.service.service.IRelRoleMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class ApiRelRoleMenuServiceImpl implements ApiRelRoleMenuService {
@Autowired
private IRelRoleMenuService iRelRoleMenuService;
/**
* 租户管理-角色配置-分配菜单-添加菜单角色列表关系
* @param request
* @return
*/
@Override
public Result addTenantRoleMenuList(ApiTenantRoleMenuListAddRequest request) {
//先删后增加
//删除租户角色菜单关系
iRelRoleMenuService.removeByTenant(request.getTenantBizId(),request.getRoleBizId());
//增加租户角色菜单关系
if (!CollectionUtils.isEmpty(request.getMenuBizIdList())) {
//菜单唯一标识(业务ID) 列表(选中列表)不为空
List<RelRoleMenu> list = request.getMenuBizIdList().stream().map(bizId -> {
RelRoleMenu relRoleMenu = new RelRoleMenu();
relRoleMenu.setTenantBizId(request.getTenantBizId());
relRoleMenu.setRoleBizId(request.getRoleBizId());
relRoleMenu.setMenuBizId(bizId);
return relRoleMenu;
}).collect(Collectors.toList());
iRelRoleMenuService.saveOrUpdateBatch(list);
}
return Result.success();
}
/**
* 租户管理-角色配置-分配菜单-查询选中的菜单列表
* @return
*/
@Override
public Result<List<String>> selectedTenantRoleMenuList(ApiSelectedTenantRoleMenuListRequest request) {
List<RelRoleMenu> list = iRelRoleMenuService.queryList(RelRoleMenuDto.builder()
.tenantBizId(request.getTenantBizId())
.roleBizId(request.getRoleBizId())
.build());
List<String> menuList = new ArrayList<>();
if (!CollectionUtils.isEmpty(list)) {
menuList = list.stream().map(RelRoleMenu::getMenuBizId).collect(Collectors.toList());
}
return Result.success(menuList);
}
/**
* 项目管理-角色配置-分配菜单-添加菜单角色列表关系
* @param request
* @return
*/
@Override
public Result addProjectRoleMenuList(ApiProjectRoleMenuListAddRequest request) {
//先删后增加
//删除项目角色菜单关系
iRelRoleMenuService.removeByProject(request.getProjectBizId(),request.getRoleBizId());
//增加项目角色菜单关系
if (!CollectionUtils.isEmpty(request.getMenuBizIdList())) {
//菜单唯一标识(业务ID) 列表(选中列表)不为空
List<RelRoleMenu> list = request.getMenuBizIdList().stream().map(bizId -> {
RelRoleMenu relRoleMenu = new RelRoleMenu();
relRoleMenu.setProjectBizId(request.getProjectBizId());
relRoleMenu.setRoleBizId(request.getRoleBizId());
relRoleMenu.setMenuBizId(bizId);
return relRoleMenu;
}).collect(Collectors.toList());
iRelRoleMenuService.saveOrUpdateBatch(list);
}
return Result.success();
}
/**
* 项目管理-角色配置-分配菜单-查询选中的菜单列表
* @return
*/
@Override
public Result<List<String>> selectedProjectRoleMenuList(ApiSelectedProjectRoleMenuListRequest request) {
List<RelRoleMenu> list = iRelRoleMenuService.queryList(RelRoleMenuDto.builder()
.projectBizId(request.getProjectBizId())
.roleBizId(request.getRoleBizId())
.build());
List<String> menuList = new ArrayList<>();
if (!CollectionUtils.isEmpty(list)) {
menuList = list.stream().map(RelRoleMenu::getMenuBizId).collect(Collectors.toList());
}
return Result.success(menuList);
}
}
......@@ -5,14 +5,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.TreeUtils;
import com.yd.user.api.service.ApiRelTenantMenuService;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListAddRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.dto.RelTenantMenuDto;
import com.yd.user.service.model.RelTenantMenu;
import com.yd.user.service.model.SysMenu;
import com.yd.user.service.service.IRelTenantMenuService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -40,6 +47,30 @@ public class ApiRelTenantMenuServiceImpl implements ApiRelTenantMenuService {
}
/**
* 租户和菜单关系树形列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelTenantMenuTreeListResponse>> tree(ApiRelTenantMenuTreeListRequest request) {
List<ApiRelTenantMenuTreeListResponse> treeMenu = new ArrayList<>();
//租户和菜单关系列表
List<ApiRelTenantMenuTreeListResponse> queryList = iRelTenantMenuService.treeList(request);
if (!CollectionUtils.isEmpty(queryList)) {
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
queryList,
ApiRelTenantMenuTreeListResponse::getMenuBizId, // 获取节点ID
ApiRelTenantMenuTreeListResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
* 添加租户和菜单列表关系
* @param request
* @return
......@@ -47,7 +78,10 @@ public class ApiRelTenantMenuServiceImpl implements ApiRelTenantMenuService {
@Override
public Result addMenuList(ApiRelTenantMenuListAddRequest request) {
List<RelTenantMenu> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getMenuBizIdList())) {
//先删后增加
iRelTenantMenuService.removeByTenantBizId(request.getTenantBizId());
if (!CollectionUtils.isEmpty(request.getMenuBizIdList())) {
//菜单唯一标识(业务ID) 列表(选中列表)不为空
list = request.getMenuBizIdList().stream().map(bizId -> {
RelTenantMenu relTenantMenu = new RelTenantMenu();
......@@ -79,15 +113,46 @@ public class ApiRelTenantMenuServiceImpl implements ApiRelTenantMenuService {
}
/**
* 导入-选择菜单分页查询(查询当前租户级(当前所属租户绑定的菜单)或者系统级(全局菜单在任何地方都适用导入绑定)的菜单表数据)
* 导入-树形菜单查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantMenuSelectPageResponse>> selectMenuPage(ApiRelTenantMenuSelectPageRequest request) {
Page<ApiRelTenantMenuSelectPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiRelTenantMenuSelectPageResponse> iPage = iRelTenantMenuService.selectProjectPage(page, request);
return Result.success(iPage);
public Result<List<ApiRelTenantMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelTenantMenuImportQueryMenuTreeRequest request) {
//TODO 条件搜索菜单树后续完善
List<ApiRelTenantMenuImportQueryMenuTreeResponse> treeMenu = new ArrayList<>();
//查询租户和菜单关系数据
List<ApiRelTenantMenuImportQueryMenuTreeResponse> queryList = iRelTenantMenuService.importQueryMenuTreeList(request);
if (!CollectionUtils.isEmpty(queryList)) {
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
queryList,
ApiRelTenantMenuImportQueryMenuTreeResponse::getMenuBizId, // 获取节点ID
ApiRelTenantMenuImportQueryMenuTreeResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
* 导入-树形菜单-查询选中的菜单id集合
* @param tenantBizId
* @return
*/
@Override
public Result<List<String>> selectedList(String tenantBizId) {
List<String> menuBizIdList = new ArrayList<>();
List<RelTenantMenu> relTenantMenuList = iRelTenantMenuService.queryList(RelTenantMenuDto.builder()
.tenantBizId(tenantBizId)
.build());
if (!CollectionUtils.isEmpty(relTenantMenuList)) {
menuBizIdList = relTenantMenuList.stream().map(RelTenantMenu::getMenuBizId).collect(Collectors.toList());
}
return Result.success(menuBizIdList);
}
/**
......
......@@ -47,7 +47,7 @@ public class ApiRelTenantProjectServiceImpl implements ApiRelTenantProjectServic
@Override
public Result addProjectList(ApiRelTenantProjectListAddRequest request) {
List<RelTenantProject> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getProjectBizIdList())) {
if (!CollectionUtils.isEmpty(request.getProjectBizIdList())) {
//项目唯一标识(业务ID) 列表(选中列表)不为空
list = request.getProjectBizIdList().stream().map(bizId -> {
RelTenantProject relTenantProject = new RelTenantProject();
......
......@@ -51,7 +51,7 @@ public class ApiRelTenantRoleServiceImpl implements ApiRelTenantRoleService {
@Override
public Result addRoleList(ApiRelTenantRoleListAddRequest request) {
List<RelTenantRole> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getRoleBizIdList())) {
if (!CollectionUtils.isEmpty(request.getRoleBizIdList())) {
//角色唯一标识(业务ID) 列表(选中列表)不为空
list = request.getRoleBizIdList().stream().map(bizId -> {
RelTenantRole relTenantRole = new RelTenantRole();
......
......@@ -47,7 +47,7 @@ public class ApiRelTenantUserServiceImpl implements ApiRelTenantUserService {
@Override
public Result addUserList(ApiRelTenantUserListAddRequest request) {
List<RelTenantUser> list = new ArrayList<>();
if (CollectionUtils.isEmpty(request.getUserBizIdList())) {
if (!CollectionUtils.isEmpty(request.getUserBizIdList())) {
//用户唯一标识(业务ID) 列表(选中列表)不为空
list = request.getUserBizIdList().stream().map(bizId -> {
RelTenantUser relTenantUser = new RelTenantUser();
......
package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiRelUserRoleService;
import com.yd.user.feign.request.reluserrole.ApiProjectUserRoleListAddRequest;
import com.yd.user.feign.request.reluserrole.ApiTenantUserRoleListAddRequest;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.yd.user.feign.request.reluserrole.*;
import com.yd.user.feign.response.reltenantuser.ApiRelTenantUserListPageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse;
import com.yd.user.service.model.RelUserRole;
import com.yd.user.service.service.IRelUserRoleService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -27,9 +31,6 @@ public class ApiRelUserRoleServiceImpl implements ApiRelUserRoleService {
*/
@Override
public Result addTenantUserRoleList(ApiTenantUserRoleListAddRequest request) {
//先删后新增关系
//删除租户用户角色列表关系
iRelUserRoleService.delRelTenantUserRole(request.getTenantBizId(),request.getUserBizId());
//新增租户用户角色列表关系
if (!CollectionUtils.isEmpty(request.getRoleBizIdList())) {
......@@ -47,17 +48,42 @@ public class ApiRelUserRoleServiceImpl implements ApiRelUserRoleService {
}
/**
* 租户管理-用户配置-权限配置-查询选中的角色列表
* 租户管理-用户配置-分配角色-移除用户角色列表关系
* @param request
* @return
*/
@Override
public Result delTenantUserRoleList(ApiTenantUserRoleListDelRequest request) {
iRelUserRoleService.delRelTenantUserRole(request.getTenantBizId(),
request.getUserBizId(),request.getRoleBizIdList());
return Result.success();
}
/**
* 租户管理-用户配置-分配角色-查询待选的角色分页列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiCandidateTenantUserRolePageResponse>> candidateTenantUserRolePage(ApiCandidateTenantUserRolePageRequest request) {
Page<ApiCandidateTenantUserRolePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiCandidateTenantUserRolePageResponse> iPage = iRelUserRoleService.candidateTenantUserRolePage(page, request);
return Result.success(iPage);
}
/**
* 租户管理-用户配置-分配角色-查询选中的角色列表
* @return
*/
@Override
public Result<List<ApiSelectedTenantUserRoleListResponse>> selectedTenantUserRoleList(String tenantBizId, String userBizId) {
List<ApiSelectedTenantUserRoleListResponse> list = iRelUserRoleService.selectedTenantUserRoleList(tenantBizId,userBizId);
return Result.success(list);
public Result<IPage<ApiSelectedTenantUserRolePageResponse>> selectedTenantUserRolePage(ApiSelectedTenantUserRolePageRequest request) {
Page<ApiSelectedTenantUserRolePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSelectedTenantUserRolePageResponse> iPage = iRelUserRoleService.selectedTenantUserRolePage(page, request);
return Result.success(iPage);
}
/**
* 项目管理-用户配置-权限配置-添加用户角色列表关系
* 项目管理-用户配置-分配角色-添加项目用户角色列表关系
* @param request
* @return
*/
......@@ -65,9 +91,9 @@ public class ApiRelUserRoleServiceImpl implements ApiRelUserRoleService {
public Result addProjectUserRoleList(ApiProjectUserRoleListAddRequest request) {
//先删后新增关系
//删除项目用户角色列表关系
iRelUserRoleService.delRelProjectUserRole(request.getProjectBizId(),request.getUserBizId());
// iRelUserRoleService.delRelProjectUserRole(request.getProjectBizId(),request.getUserBizId());
//新增租户用户角色列表关系
//新增项目用户角色列表关系
if (!CollectionUtils.isEmpty(request.getRoleBizIdList())) {
List<RelUserRole> list = request.getRoleBizIdList().stream().map(bizId -> {
RelUserRole relUserRole = new RelUserRole();
......@@ -83,13 +109,37 @@ public class ApiRelUserRoleServiceImpl implements ApiRelUserRoleService {
}
/**
* 项目管理-用户配置-权限配置-查询选中的角色列表
* 项目管理-用户配置-分配角色-移除用户角色列表关系
* @param request
* @return
*/
@Override
public Result delProjectUserRoleList(ApiProjectUserRoleListDelRequest request) {
iRelUserRoleService.delRelProjectUserRole(request.getProjectBizId(),
request.getUserBizId(),request.getRoleBizIdList());
return Result.success();
}
/**
* 项目管理-用户配置-分配角色-查询待选的角色分页列表
* @return
*/
@Override
public Result<IPage<ApiCandidateProjectUserRolePageResponse>> candidateProjectUserRolePage(ApiCandidateProjectUserRolePageRequest request) {
Page<ApiCandidateProjectUserRolePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiCandidateProjectUserRolePageResponse> iPage = iRelUserRoleService.candidateProjectUserRolePage(page, request);
return Result.success(iPage);
}
/**
* 项目管理-用户配置-分配角色-查询选中的角色列表
* @return
*/
@Override
public Result<List<ApiSelectedProjectUserRoleListResponse>> selectedProjectUserRoleList(String projectBizId, String userBizId) {
List<ApiSelectedProjectUserRoleListResponse> list = iRelUserRoleService.selectedProjectUserRoleList(projectBizId,userBizId);
return Result.success(list);
public Result<IPage<ApiSelectedProjectUserRolePageResponse>> selectedProjectUserRolePage(ApiSelectedProjectUserRolePageRequest request) {
Page<ApiSelectedProjectUserRolePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSelectedProjectUserRolePageResponse> iPage = iRelUserRoleService.selectedProjectUserRolePage(page, request);
return Result.success(iPage);
}
}
package com.yd.user.api.service.impl;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.user.api.service.ApiSysDictService;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import com.yd.user.service.dto.SysDictItemDto;
import com.yd.user.service.model.SysDict;
import com.yd.user.service.model.SysDictItem;
import com.yd.user.service.service.ISysDictItemService;
import com.yd.user.service.service.ISysDictService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class ApiSysDictServiceImpl implements ApiSysDictService {
@Autowired
private ISysDictService iSysDictService;
@Autowired
private ISysDictItemService iSysDictItemService;
/**
* 根据字典类型获取字典数据项列表
* @param dictType
* @return
*/
@Override
public Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType) {
SysDict sysDict = iSysDictService.queryOneByType(dictType);
if (Objects.isNull(sysDict)) {
throw new BusinessException("字典类型数据不存在");
}
List<GetDictItemListByDictTypeResponse> responses = new ArrayList<>();
//查询字典数据项列表
List<SysDictItem> sysDictItemList = iSysDictItemService.queryList(SysDictItemDto.builder()
.dictBizId(sysDict.getDictBizId())
.build());
if (!CollectionUtils.isEmpty(sysDictItemList)) {
responses = sysDictItemList.stream().map(dto -> {
GetDictItemListByDictTypeResponse response = new GetDictItemListByDictTypeResponse();
BeanUtils.copyProperties(dto,response);
return response;
}).collect(Collectors.toList());
}
return Result.success(responses);
}
}
package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.MenuTypeEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.TreeUtils;
import com.yd.user.api.dto.ApiSysMenuAddAndEditReqCheckDto;
import com.yd.user.api.service.ApiRelProjectMenuService;
import com.yd.user.api.service.ApiRelTenantMenuService;
......@@ -15,19 +19,31 @@ import com.yd.user.feign.request.sysmenu.ApiSysMenuAddRequest;
import com.yd.user.feign.request.sysmenu.ApiSysMenuEditRequest;
import com.yd.user.feign.request.sysmenu.ApiSysMenuPageRequest;
import com.yd.user.feign.request.sysmenu.ApiSysMenuTreeListRequest;
import com.yd.user.feign.response.login.ApiLoginMenuInfoResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.feign.response.sysrole.ApiSysRolePageResponse;
import com.yd.user.service.dto.RelTenantProjectDto;
import com.yd.user.service.dto.SysMenuDto;
import com.yd.user.service.model.RelTenantProject;
import com.yd.user.service.model.SysMenu;
import com.yd.user.service.model.SysProject;
import com.yd.user.service.model.SysTenant;
import com.yd.user.service.service.IRelTenantProjectService;
import com.yd.user.service.service.ISysMenuService;
import com.yd.user.service.service.ISysProjectService;
import com.yd.user.service.service.ISysTenantService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class ApiSysMenuServiceImpl implements ApiSysMenuService {
......@@ -36,6 +52,15 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
private ISysMenuService iSysMenuService;
@Autowired
private ISysTenantService iSysTenantService;
@Autowired
private ISysProjectService iSysProjectService;
@Autowired
private IRelTenantProjectService iRelTenantProjectService;
@Autowired
private ApiRelTenantMenuService apiRelTenantMenuService;
@Autowired
......@@ -48,7 +73,51 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
*/
@Override
public Result<List<ApiSysMenuTreeListResponse>> treeList(ApiSysMenuTreeListRequest request) {
return null;
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
List<ApiSysMenuTreeListResponse> apiSysMenuTreeListResponses = new ArrayList<>();
List<ApiSysMenuTreeListResponse> treeMenu = new ArrayList<>();
List<RelTenantProject> relTenantProjectList = new ArrayList<>();
List<String> projectBizIdList = new ArrayList<>();
if (!isAdmin) {
//非超级管理员查询当前租户绑定的项目id列表,用于查询菜单表绑定所属的菜单
relTenantProjectList = iRelTenantProjectService.queryList(RelTenantProjectDto.builder()
.tenantBizId(loginTenantBizId)
.build());
if (!CollectionUtils.isEmpty(relTenantProjectList)) {
projectBizIdList = relTenantProjectList.stream().map(RelTenantProject::getProjectBizId).collect(Collectors.toList());
}
}
//条件搜索构建菜单树的数据
apiSysMenuTreeListResponses = iSysMenuService.treeList(loginTenantBizId,
isAdmin,
request.getMenuName(),
projectBizIdList);
if (!CollectionUtils.isEmpty(apiSysMenuTreeListResponses)) {
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
apiSysMenuTreeListResponses,
ApiSysMenuTreeListResponse::getMenuBizId, // 获取节点ID
ApiSysMenuTreeListResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
......@@ -58,7 +127,32 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
*/
@Override
public Result<IPage<ApiSysMenuPageResponse>> page(ApiSysMenuPageRequest request) {
return null;
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
List<String> projectBizIdList = new ArrayList<>();
Page<ApiSysMenuPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
if (!isAdmin) {
//非超级管理员,查询当前租户下绑定的项目列表id
List<RelTenantProject> relTenantProjectList = iRelTenantProjectService.queryList(RelTenantProjectDto.builder()
.tenantBizId(loginTenantBizId)
.build());
if (CollectionUtils.isEmpty(relTenantProjectList)) {
projectBizIdList = relTenantProjectList.stream().map(RelTenantProject::getProjectBizId).collect(Collectors.toList());
}
}
IPage<ApiSysMenuPageResponse> iPage = iSysMenuService.page(page, request,isAdmin,projectBizIdList,loginTenantBizId);
return Result.success(iPage);
}
/**
......@@ -73,6 +167,31 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
ApiSysMenuDetailResponse response = new ApiSysMenuDetailResponse();
BeanUtils.copyProperties(sysMenu,response);
response.setParentId(sysMenu.getParentBizId());
if (CommonEnum.SCOPE_SYS.getCode().equals(response.getScope().toString())) {
//系统级
response.setTenantBizId("");
response.setTenantName("");
response.setProjectBizId("");
response.setProjectName("");
}else if (CommonEnum.SCOPE_TENANT.getCode().equals(response.getScope().toString())) {
//租户级
SysTenant sysTenant = iSysTenantService.queryOne(response.getTenantBizId());
if (!Objects.isNull(sysTenant)) {
response.setTenantName(sysTenant.getTenantName());
}
response.setProjectBizId("");
response.setProjectName("");
}else if (CommonEnum.SCOPE_PROJECT.getCode().equals(response.getScope().toString())) {
//项目级
SysProject sysProject = iSysProjectService.queryOne(response.getProjectBizId());
if (!Objects.isNull(sysProject)) {
response.setProjectName(sysProject.getProjectName());
}
response.setTenantBizId("");
response.setTenantName("");
}
return Result.success(response);
}
......@@ -83,8 +202,11 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
*/
@Override
public Result add(ApiSysMenuAddRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
ApiSysMenuAddAndEditReqCheckDto dto = new ApiSysMenuAddAndEditReqCheckDto();
BeanUtils.copyProperties(request,dto);
dto.setIsAdmin(isAdmin);
......@@ -124,8 +246,11 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
*/
@Override
public Result edit(ApiSysMenuEditRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
ApiSysMenuAddAndEditReqCheckDto dto = new ApiSysMenuAddAndEditReqCheckDto();
BeanUtils.copyProperties(request,dto);
dto.setIsAdmin(isAdmin);
......@@ -147,6 +272,8 @@ public class ApiSysMenuServiceImpl implements ApiSysMenuService {
throw new BusinessException(ResultCode.MENU_NAME_EXISTS.getCode(),ResultCode.MENU_NAME_EXISTS.getMessage());
}
//TODO 换绑逻辑(作用域换绑:提示校验需要先把什么解绑再来换绑)
BeanUtils.copyProperties(request,sysMenu);
//添加和编辑保存设置参数公共方法
sysMenu = addAndEditSaveSetCommon(sysMenu);
......
......@@ -2,11 +2,14 @@ package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.user.api.dto.ApiSysProjectAddAndEditReqCheckDto;
import com.yd.user.api.service.ApiRelTenantProjectService;
import com.yd.user.api.service.ApiSysProjectService;
import com.yd.user.feign.request.sysproject.ApiSysProjectAddRequest;
......@@ -53,10 +56,17 @@ public class ApiSysProjectServiceImpl implements ApiSysProjectService {
@Override
public Result<IPage<ApiSysProjectPageResponse>> page(ApiSysProjectPageRequest request) {
Page<ApiSysProjectPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//TODO 当前登录人所属租户id
String loginTenantBizId = "";
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
IPage<ApiSysProjectPageResponse> iPage = iSysProjectService.page(page, request,isAdmin,loginTenantBizId);
return Result.success(iPage);
}
......@@ -92,10 +102,16 @@ public class ApiSysProjectServiceImpl implements ApiSysProjectService {
*/
@Override
public Result add(ApiSysProjectAddRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//添加和编辑校验入参的作用域字段
addAndEditReqScopeCheck(isAdmin,request.getScope(),request.getTenantBizId());
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
ApiSysProjectAddAndEditReqCheckDto checkDto = new ApiSysProjectAddAndEditReqCheckDto();
BeanUtils.copyProperties(request,checkDto);
checkDto.setIsAdmin(isAdmin);
//添加和编辑校验入参
addAndEditReqCheck(checkDto);
//校验项目名称的唯一性
List<SysProject> list = iSysProjectService.queryList(SysProjectDto.builder()
......@@ -129,11 +145,16 @@ public class ApiSysProjectServiceImpl implements ApiSysProjectService {
*/
@Override
public Result edit(ApiSysProjectEditRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//添加和编辑校验入参的作用域字段
addAndEditReqScopeCheck(isAdmin,request.getScope(),request.getTenantBizId());
ApiSysProjectAddAndEditReqCheckDto checkDto = new ApiSysProjectAddAndEditReqCheckDto();
BeanUtils.copyProperties(request,checkDto);
checkDto.setIsAdmin(isAdmin);
//添加和编辑校验入参
addAndEditReqCheck(checkDto);
//校验项目是否存在·
Result<SysProject> result = checkSysProjectIsExist(request.getProjectBizId());
......@@ -174,21 +195,24 @@ public class ApiSysProjectServiceImpl implements ApiSysProjectService {
}
/**
* 添加和编辑校验入参的作用域字段
* @param isAdmin
* @param scope
* @param tenantBizId
* 添加和编辑校验入参
* @param checkDto
*/
public void addAndEditReqScopeCheck(Boolean isAdmin,Integer scope,String tenantBizId) {
if (!isAdmin && CommonEnum.SCOPE_SYS.getCode().equals(scope.toString())) {
public void addAndEditReqCheck(ApiSysProjectAddAndEditReqCheckDto checkDto) {
if (!checkDto.getIsAdmin() && CommonEnum.SCOPE_SYS.getCode().equals(checkDto.getScope().toString())) {
//非超级管理员不能选择系统级作用域
throw new BusinessException("非超级管理员不能选择系统级作用域!");
}
//校验作用域scope字段,如果为作用域租户级所属租户id必须传值
if(CommonEnum.SCOPE_TENANT.getCode().equals(scope.toString())
&& StringUtils.isBlank(tenantBizId)) {
if(CommonEnum.SCOPE_TENANT.getCode().equals(checkDto.getScope().toString())
&& StringUtils.isBlank(checkDto.getTenantBizId())) {
throw new BusinessException("租户级作用域,所属租户id不能为空");
}
//校验内置项目字段,如果不是内置项目,项目访问地址必须传值
if (checkDto.getIsIn() == 0 && StringUtils.isBlank(checkDto.getProjectUrl())) {
throw new BusinessException("不是内置项目,项目访问地址不能为空");
}
}
/**
......
......@@ -2,6 +2,8 @@ package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
......@@ -63,19 +65,27 @@ public class ApiSysRoleServiceImpl implements ApiSysRoleService {
*/
@Override
public Result<IPage<ApiSysRolePageResponse>> page(ApiSysRolePageRequest request) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
Page<ApiSysRolePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//TODO 当前登录人所属租户id
String loginTenantBizId = "";
List<String> projectBizIdList = new ArrayList<>();
if (!isAdmin) {
//查询当前租户下绑定的项目列表id
List<RelTenantProject> relTenantProjectList = iRelTenantProjectService.queryList(RelTenantProjectDto.builder().tenantBizId(loginTenantBizId).build());
List<String> projectBizIdList = new ArrayList<>();
if (CollectionUtils.isEmpty(relTenantProjectList)) {
projectBizIdList = relTenantProjectList.stream().map(RelTenantProject::getProjectBizId).collect(Collectors.toList());
}
}
IPage<ApiSysRolePageResponse> iPage = iSysRoleService.page(page, request,isAdmin,projectBizIdList,loginTenantBizId);
return Result.success(iPage);
......@@ -94,20 +104,28 @@ public class ApiSysRoleServiceImpl implements ApiSysRoleService {
ApiSysRoleDetailResponse response = new ApiSysRoleDetailResponse();
BeanUtils.copyProperties(sysRole,response);
if (StringUtils.isNotBlank(response.getTenantBizId())) {
//租户id非空获取名称
if (CommonEnum.SCOPE_SYS.getCode().equals(response.getScope().toString())) {
//系统级
response.setTenantBizId("");
response.setTenantName("");
response.setProjectBizId("");
response.setProjectName("");
}else if (CommonEnum.SCOPE_TENANT.getCode().equals(response.getScope().toString())) {
//租户级
SysTenant sysTenant = iSysTenantService.queryOne(response.getTenantBizId());
if (!Objects.isNull(sysTenant)) {
response.setTenantName(sysTenant.getTenantName());
}
}
if (StringUtils.isNotBlank(response.getProjectBizId())) {
//项目id非空获取名称
response.setProjectBizId("");
response.setProjectName("");
}else if (CommonEnum.SCOPE_PROJECT.getCode().equals(response.getScope().toString())) {
//项目
SysProject sysProject = iSysProjectService.queryOne(response.getProjectBizId());
if (!Objects.isNull(sysProject)) {
response.setProjectName(sysProject.getProjectName());
}
response.setTenantBizId("");
response.setTenantName("");
}
return Result.success(response);
}
......@@ -119,10 +137,17 @@ public class ApiSysRoleServiceImpl implements ApiSysRoleService {
*/
@Override
public Result add(ApiSysRoleAddRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//添加和编辑校验入参的作用域字段
addAndEditReqScopeCheck(isAdmin,request.getScope(),request.getTenantBizId(),request.getProjectBizId());
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//添加和编辑校验入参
addAndEditReqCheck(isAdmin,
request.getScope(),
request.getTenantBizId(),
request.getProjectBizId());
//校验角色名称的唯一性
List<SysRole> list = iSysRoleService.queryList(SysRoleDto.builder().roleName(request.getRoleName()).build());
if (!CollectionUtils.isEmpty(list)) {
......@@ -152,10 +177,17 @@ public class ApiSysRoleServiceImpl implements ApiSysRoleService {
*/
@Override
public Result edit(ApiSysRoleEditRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//添加和编辑校验入参的作用域字段
addAndEditReqScopeCheck(isAdmin,request.getScope(),request.getTenantBizId(),request.getProjectBizId());
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//添加和编辑校验入参
addAndEditReqCheck(isAdmin,
request.getScope(),
request.getTenantBizId(),
request.getProjectBizId());
//校验角色是否存在
Result<SysRole> result = checkSysRoleIsExist(request.getRoleBizId());
SysRole sysRole = result.getData();
......@@ -169,7 +201,8 @@ public class ApiSysRoleServiceImpl implements ApiSysRoleService {
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.ROLE_NAME_EXISTS.getCode(),ResultCode.ROLE_NAME_EXISTS.getMessage());
}
//TODO 编辑作用域和所属租户、所属项目的校验待定-换绑的意思
//TODO 换绑逻辑(作用域换绑:提示校验需要先把什么解绑再来换绑)
//编辑角色
BeanUtils.copyProperties(request,sysRole);
......@@ -247,18 +280,21 @@ public class ApiSysRoleServiceImpl implements ApiSysRoleService {
apiRelProjectRoleService.addSingleRel(projectBizId,roleBizId);
}
}else if (CommonEnum.OPR_SOURCE_EDIT.getCode().equals(oprSource)) {
//编辑来源 TODO
//编辑来源 TODO 编辑
}
}
/**
* 添加和编辑校验入参的作用域字段
* 添加和编辑校验入参
* @param isAdmin
* @param scope
* @param tenantBizId
* @param projectBizId
*/
public void addAndEditReqScopeCheck(Boolean isAdmin,Integer scope,String tenantBizId,String projectBizId) {
public void addAndEditReqCheck(Boolean isAdmin,
Integer scope,
String tenantBizId,
String projectBizId) {
if (!isAdmin && CommonEnum.SCOPE_SYS.getCode().equals(scope.toString())) {
//非超级管理员不能选择系统级作用域
throw new BusinessException("非超级管理员不能选择系统级作用域!");
......
......@@ -2,6 +2,8 @@ package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
......@@ -38,12 +40,18 @@ public class ApiSysTenantServiceImpl implements ApiSysTenantService {
*/
@Override
public Result<IPage<ApiSysTenantPageResponse>> page(ApiSysTenantPageRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//TODO 获取当前登录用户id
String userBizId = "";
//TODO 当前登录人所属租户id
String loginTenantBizId = "";
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//获取当前登录用户id
String userBizId = authUserDto.getUserBizId();
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
Page<ApiSysTenantPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSysTenantPageResponse> iPage = iSysTenantService.page(page, request,isAdmin,userBizId,loginTenantBizId);
return Result.success(iPage);
......@@ -72,8 +80,10 @@ public class ApiSysTenantServiceImpl implements ApiSysTenantService {
*/
@Override
public Result add(ApiSysTenantAddRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
if (!isAdmin) {
//非超级管理员不能添加租户
throw new BusinessException("非超级管理员不能添加租户!");
......@@ -100,11 +110,10 @@ public class ApiSysTenantServiceImpl implements ApiSysTenantService {
*/
@Override
public Result edit(ApiSysTenantEditRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//校验租户是否存在
checkSysTenantIsExist(request.getTenantBizId());
Result<SysTenant> result = checkSysTenantIsExist(request.getTenantBizId());
SysTenant sysTenant = result.getData();
//校验租户名称的唯一性
List<SysTenant> list = iSysTenantService.queryList(SysTenantDto.builder()
......@@ -117,9 +126,7 @@ public class ApiSysTenantServiceImpl implements ApiSysTenantService {
throw new BusinessException(ResultCode.TENANT_NAME_EXISTS.getCode(),ResultCode.TENANT_NAME_EXISTS.getMessage());
}
//编辑
SysTenant sysTenant = new SysTenant();
BeanUtils.copyProperties(request,sysTenant);
sysTenant.setTenantBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_TENANT.getCode()));
iSysTenantService.saveOrUpdate(sysTenant);
return Result.success();
}
......
......@@ -2,30 +2,36 @@ package com.yd.user.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.auth.core.utils.SecurityUtil;
import com.yd.common.enums.CommonEnum;
import com.yd.common.enums.MenuTypeEnum;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.common.utils.SM3Util;
import com.yd.common.utils.TreeUtils;
import com.yd.user.api.service.ApiRelTenantUserService;
import com.yd.user.api.service.ApiSysUserService;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.request.sysuser.*;
import com.yd.user.feign.response.login.*;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.dto.SysUserDto;
import com.yd.user.service.model.SysTenant;
import com.yd.user.service.model.SysUser;
import com.yd.user.service.service.ISysUserService;
import com.yd.user.service.dto.*;
import com.yd.user.service.model.*;
import com.yd.user.service.service.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class ApiSysUserServiceImpl implements ApiSysUserService {
......@@ -36,6 +42,30 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
@Autowired
private ApiRelTenantUserService apiRelTenantUserService;
@Autowired
private IRelTenantUserService iRelTenantUserService;
@Autowired
private ISysTenantService iSysTenantService;
@Autowired
private ISysRoleService iSysRoleService;
@Autowired
private ISysMenuService iSysMenuService;
@Autowired
private IRelUserRoleService iRelUserRoleService;
@Autowired
private IRelRoleMenuService iRelRoleMenuService;
@Autowired
private IRelTenantProjectService iRelTenantProjectService;
@Autowired
private ISysProjectService iSysProjectService;
/**
* 用户分页查询
* @param request
......@@ -43,10 +73,16 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
*/
@Override
public Result<IPage<ApiSysUserPageResponse>> page(ApiSysUserPageRequest request) {
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//TODO 当前登录人所属租户id
String loginTenantBizId = "";
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
Page<ApiSysUserPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSysUserPageResponse> iPage = iSysUserService.page(page, request,isAdmin,loginTenantBizId);
return Result.success(iPage);
......@@ -60,20 +96,32 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
@Override
public Result add(ApiSysUserAddRequest request) {
LocalDateTime now = LocalDateTime.now();
//TODO 当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = false;
//TODO 当前登录人所属租户id
String loginTenantBizId = "";
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
//添加和编辑校验入参的唯一性
addAndEditReqCheckCommon(request.getUserName(),
addAndEditReqCheckCommon(
request.getUserName(),
request.getMobile(),
request.getEmail(),
CommonEnum.OPR_SOURCE_ADD.getCode(),"");
CommonEnum.OPR_SOURCE_ADD.getCode(),
"");
//新增用户数据
SysUser sysUser = new SysUser();
BeanUtils.copyProperties(request,sysUser);
//TODO 修改密码,加密密码
//SM3国密算法加密密码
sysUser = encryptPwd(sysUser,request.getPassword());
//用户业务唯一id
sysUser.setUserBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_USER.getCode()));
sysUser.setIsSuperAdmin(0);
......@@ -102,20 +150,60 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
SysUser sysUser = result.getData();
//添加和编辑校验入参的唯一性
addAndEditReqCheckCommon(request.getUserName(),
addAndEditReqCheckCommon(
request.getUserName(),
request.getMobile(),
request.getEmail(),
CommonEnum.OPR_SOURCE_EDIT.getCode(),request.getUserBizId());
CommonEnum.OPR_SOURCE_EDIT.getCode(),
request.getUserBizId());
//校验入参密码是否修改过
// Boolean pwdIsEdit = checkPwdIsEdit(request.getPassword(),sysUser.getPassword(),sysUser.getPasswordSalt());
//编辑用户
BeanUtils.copyProperties(request,sysUser);
//TODO 修改密码,加密密码
sysUser.setLastPasswordTime(now);
sysUser.setSourceType(1);
//修改过密码,重新加密
// if (pwdIsEdit) {
// //SM3国密算法加密密码
// sysUser = encryptPwd(sysUser,request.getPassword());
// }
iSysUserService.saveOrUpdate(sysUser);
return Result.success();
}
/**
* SM3国密算法加密密码
* @param sysUser
* @return
*/
public SysUser encryptPwd(SysUser sysUser,String password) {
//密码:SM3国密算法
//生成盐值
String salt = SM3Util.generateSalt();
//生成加密密码:带盐的SM3哈希
String hashedPassword = SM3Util.hashWithSalt(password, salt);
sysUser.setPasswordSalt(salt);
sysUser.setPassword(hashedPassword);
return sysUser;
}
/**
* 校验入参密码是否修改过
* @param reqPwd 入参修改的密码
* @param encryptPwd 库里加密密码
* @param salt 库里盐值
* @return
*/
public Boolean checkPwdIsEdit(String reqPwd,String encryptPwd,String salt) {
//入参密码加密
String hashedPassword = SM3Util.hashWithSalt(reqPwd, salt);
return !hashedPassword.equals(encryptPwd);
}
/**
* 添加和编辑校验入参的唯一性
......@@ -123,7 +211,11 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
* @param mobile
* @param email
*/
public void addAndEditReqCheckCommon(String userName,String mobile,String email,String oprSource,String userBizId) {
public void addAndEditReqCheckCommon(String userName,
String mobile,
String email,
String oprSource,
String userBizId) {
Boolean isExcludeMy = true;
if (CommonEnum.OPR_SOURCE_ADD.getCode().equals(oprSource)) {
//添加来源
......@@ -194,6 +286,235 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
}
/**
* 编辑用户密码
* @return
*/
@Override
public Result editPwd(ApiSysUserEditPwdRequest request) {
//校验用户是否存在
Result<SysUser> result = checkSysUserIsExist(request.getUserBizId());
SysUser sysUser = result.getData();
LocalDateTime now = LocalDateTime.now();
//SM3国密算法加密密码
sysUser = encryptPwd(sysUser,request.getPassword());
sysUser.setLastPasswordTime(now);
iSysUserService.saveOrUpdate(sysUser);
return Result.success();
}
/**
* 管理端-获取用户登录后权限信息
* @return
*/
@Override
public Result<GetLoginInfoResponse> getLoginInfo() {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
GetLoginInfoResponse response = new GetLoginInfoResponse();
//用户信息
ApiLoginUserInfoResponse userInfoResponse = new ApiLoginUserInfoResponse();
SysUser sysUser = iSysUserService.queryOne(authUserDto.getUserBizId());
if (Objects.isNull(sysUser)) {
//用户不存在
throw new BusinessException(ResultCode.USER_NOT_EXISTS.getCode(),ResultCode.USER_NOT_EXISTS.getMessage());
}
BeanUtils.copyProperties(sysUser,userInfoResponse);
response.setApiLoginUserInfoResponse(userInfoResponse);
//用户绑定租户列表信息
List<ApiLoginTenantResponse> apiLoginTenantResponseList = new ArrayList<>();
List<RelTenantUser> relTenantUserList = iRelTenantUserService.queryList(RelTenantUserDto.builder()
.userBizId(authUserDto.getUserBizId())
.build());
if (!CollectionUtils.isEmpty(relTenantUserList)) {
//查询租户列表信息
List<SysTenant> tenantList = iSysTenantService.queryList(relTenantUserList.stream().map(RelTenantUser::getTenantBizId).collect(Collectors.toList()));
if (!CollectionUtils.isEmpty(tenantList)) {
for (SysTenant sysTenant : tenantList) {
ApiLoginTenantResponse loginTenantResponse = new ApiLoginTenantResponse();
//租户信息
ApiLoginTenantInfoResponse apiLoginTenantInfoResponse = new ApiLoginTenantInfoResponse();
BeanUtils.copyProperties(sysTenant,apiLoginTenantInfoResponse);
loginTenantResponse.setApiLoginTenantInfoResponse(apiLoginTenantInfoResponse);
//查询租户绑定的项目列表
List<RelTenantProject> relTenantProjectList = iRelTenantProjectService.queryList(RelTenantProjectDto.builder()
.tenantBizId(sysTenant.getTenantBizId())
.build());
if (!CollectionUtils.isEmpty(relTenantProjectList)) {
List<String> projectBizIdList = relTenantProjectList.stream().map(RelTenantProject::getProjectBizId).collect(Collectors.toList());
List<SysProject> projectList = iSysProjectService.queryList(SysProjectDto.builder()
.projectBizIdList(projectBizIdList)
.build());
if (!CollectionUtils.isEmpty(projectList)) {
List<ApiLoginProjectInfoResponse> apiLoginProjectInfoResponseList = projectList.stream().map(dto -> {
ApiLoginProjectInfoResponse apiLoginProjectInfoResponse = new ApiLoginProjectInfoResponse();
BeanUtils.copyProperties(dto,apiLoginProjectInfoResponse);
return apiLoginProjectInfoResponse;
}).collect(Collectors.toList());
loginTenantResponse.setApiLoginProjectInfoResponseList(apiLoginProjectInfoResponseList);
}
}
List<RelUserRole> relUserRoleList = iRelUserRoleService.queryList(RelUserRoleDto.builder()
.tenantBizId(sysTenant.getTenantBizId())
.userBizId(authUserDto.getUserBizId())
.build());
if (!CollectionUtils.isEmpty(relUserRoleList)) {
//租户用户角色编码列表信息
List<String> roleBizIdList = relUserRoleList.stream().map(RelUserRole::getRoleBizId).collect(Collectors.toList());
List<SysRole> sysRoleList = iSysRoleService.queryList(SysRoleDto.builder()
.roleBizIdList(roleBizIdList)
.isExcludeMy(false)
.build());
if (!CollectionUtils.isEmpty(sysRoleList)) {
List<String> roleCodeList = sysRoleList.stream().map(SysRole::getRoleCode).collect(Collectors.toList());
loginTenantResponse.setRoles(roleCodeList);
}
//租户用户角色菜单按钮权限列表信息
List<RelRoleMenu> relRoleMenuList = iRelRoleMenuService.queryList(RelRoleMenuDto.builder()
.tenantBizId(sysTenant.getTenantBizId())
.roleBizIdList(roleBizIdList)
.build());
if (!CollectionUtils.isEmpty(relRoleMenuList)) {
//去重菜单id(多个角色绑定有重复的菜单)
List<String> menuBizIdList = relRoleMenuList.stream().map(RelRoleMenu::getMenuBizId).distinct().collect(Collectors.toList());
//查询按钮权限标识列表
List<SysMenu> anMenuList = iSysMenuService.queryList(SysMenuDto.builder()
.menuBizIdList(menuBizIdList)
.menuType(Integer.valueOf(MenuTypeEnum.AN.getCode()))
.isExcludeMy(false)
.build());
if (!CollectionUtils.isEmpty(anMenuList)) {
List<String> menuPermissionList = anMenuList.stream().map(SysMenu::getPermission).collect(Collectors.toList());
loginTenantResponse.setPermissions(menuPermissionList);
}
//租户用户角色菜单列表(树形结构)
// List<SysMenu> sysMenuList = iSysMenuService.queryList(SysMenuDto.builder()
// .menuBizIdList(menuBizIdList)
// .isExcludeMy(false)
// .build());
// if (!CollectionUtils.isEmpty(sysMenuList)){
// List<ApiLoginMenuInfoResponse> apiLoginMenuInfoResponseList = sysMenuList
// .stream()
// .map(dto -> {
// ApiLoginMenuInfoResponse menuInfoResponse = new ApiLoginMenuInfoResponse();
// BeanUtils.copyProperties(dto,menuInfoResponse);
// return menuInfoResponse;
// }).collect(Collectors.toList());
//
// //构建菜单树形结构
// List<ApiLoginMenuInfoResponse> treeMenu = TreeUtils.buildTree(
// apiLoginMenuInfoResponseList,
// ApiLoginMenuInfoResponse::getMenuBizId, // 获取节点ID
// ApiLoginMenuInfoResponse::getParentBizId, // 获取父节点ID
// (parent, children) -> parent.setChildren(children), // 设置子节点
// "0" // 根节点的父ID值
// );
// loginTenantResponse.setApiLoginMenuInfoResponseList(treeMenu);
// }
}
}
apiLoginTenantResponseList.add(loginTenantResponse);
}
}
}
response.setApiLoginTenantResponseList(apiLoginTenantResponseList);
return Result.success(response);
}
/**
* 管理端-获取当前登录用户绑定的当前租户用户角色菜单列表
* @return
*/
@Override
public Result<List<ApiLoginMenuInfoResponse>> getMenuRouters(String tenantBizId) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
List<ApiLoginMenuInfoResponse> treeMenu = new ArrayList<>();
List<RelUserRole> relUserRoleList = iRelUserRoleService.queryList(RelUserRoleDto.builder()
.tenantBizId(tenantBizId)
.userBizId(authUserDto.getUserBizId())
.build());
if (!CollectionUtils.isEmpty(relUserRoleList)) {
//租户用户角色编码列表信息
List<String> roleBizIdList = relUserRoleList.stream().map(RelUserRole::getRoleBizId).collect(Collectors.toList());
//租户用户角色菜单按钮权限列表信息
List<RelRoleMenu> relRoleMenuList = iRelRoleMenuService.queryList(RelRoleMenuDto.builder()
.tenantBizId(tenantBizId)
.roleBizIdList(roleBizIdList)
.build());
if (!CollectionUtils.isEmpty(relRoleMenuList)) {
//去重菜单id(多个角色绑定有重复的菜单)
List<String> menuBizIdList = relRoleMenuList.stream().map(RelRoleMenu::getMenuBizId).distinct().collect(Collectors.toList());
//租户用户角色菜单列表(树形结构)
List<SysMenu> sysMenuList = iSysMenuService.queryList(SysMenuDto.builder()
.menuBizIdList(menuBizIdList)
.isExcludeMy(false)
.build());
if (!CollectionUtils.isEmpty(sysMenuList)){
List<ApiLoginMenuInfoResponse> apiLoginMenuInfoResponseList = sysMenuList
.stream()
.map(dto -> {
ApiLoginMenuInfoResponse menuInfoResponse = new ApiLoginMenuInfoResponse();
BeanUtils.copyProperties(dto,menuInfoResponse);
return menuInfoResponse;
}).collect(Collectors.toList());
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
apiLoginMenuInfoResponseList,
ApiLoginMenuInfoResponse::getMenuBizId, // 获取节点ID
ApiLoginMenuInfoResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
}
}
return Result.success(treeMenu);
}
/**
* 权限-管理端-根据作用域分页查询租户或项目列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiScopePageResponse>> scopePage(ApiScopePageRequest request) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
//当前所属的租户id(当前页面右上角显示的租户) 超级管理员不传值,非超级管理员根据传值来
if (!isAdmin && StringUtils.isBlank(request.getLoginTenantBizId())) {
//非超级管理员并且LoginTenantBizId为空,提示必须传值LoginTenantBizId
throw new BusinessException("非超级管理员,当前登录用户所属的租户id(当前页面右上角显示的租户)必须传值");
}
String loginTenantBizId = isAdmin ? "" : request.getLoginTenantBizId();
Page<ApiScopePageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiScopePageResponse> iPage = iSysUserService.scopePage(page, request,isAdmin,loginTenantBizId);
return Result.success(iPage);
}
/**
* 校验用户是否存在
* @param userBizId
* @return
......
......@@ -61,6 +61,7 @@ spring:
namespace: ${spring.cloud.nacos.config.namespace}
# nacos的ip地址和端口
server-addr: ${spring.cloud.nacos.config.server-addr}
group: YD_GROUP
---
spring:
profiles: prod
......
......@@ -23,5 +23,9 @@
<artifactId>yd-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
</dependencies>
</project>
package com.yd.user.feign.client.relprojectmenu;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.projectmenu.ApiRelProjectMenuFeignFallbackFactory;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListAddRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 用户服务:项目-菜单关系信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiRelProjectMenuFeignFallbackFactory.class)
public interface ApiRelProjectMenuFeignClient {
/**
* 项目和菜单关系分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@Validated @RequestBody ApiRelProjectMenuListPageRequest request);
/**
* 项目和菜单关系树形列表查询
* @param request
* @return
*/
@PostMapping("/tree")
Result<List<ApiRelProjectMenuTreeListResponse>> tree(@Validated @RequestBody ApiRelProjectMenuTreeListRequest request);
/**
* 添加项目和菜单列表关系
* @param request
* @return
*/
@PostMapping("/add/menu/list")
Result addMenuList(@Validated @RequestBody ApiRelProjectMenuListAddRequest request);
/**
* 删除项目和菜单关系
* @param id 项目和菜单关系表主键id
* @return
*/
@DeleteMapping("/del")
Result del(@NotNull(message = "项目和菜单关系表主键id不能为空") @RequestParam(value = "id") Long id);
/**
* 导入-树形菜单查询
* @param request
* @return
*/
@PostMapping("/import/query/menu/tree")
Result<List<ApiRelProjectMenuImportQueryMenuTreeResponse>> importQueryMenuTree(@Validated @RequestBody ApiRelProjectMenuImportQueryMenuTreeRequest request);
/**
* 导入-树形菜单-查询选中的菜单id集合
* @param projectBizId
* @return
*/
@GetMapping("/import/query/selected/menu/list")
Result<List<String>> selectedList(@NotBlank(message = "项目id不能为空") @RequestParam(value = "projectBizId") String projectBizId);
}
package com.yd.user.feign.client.relrolemenu;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.relrolemenu.ApiRelRoleMenuFeignFallbackFactory;
import com.yd.user.feign.request.relrolemenu.ApiProjectRoleMenuListAddRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedProjectRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedTenantRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiTenantRoleMenuListAddRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* 用户服务:角色-菜单关系信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiRelRoleMenuFeignFallbackFactory.class)
public interface ApiRelRoleMenuFeignClient {
/**
* 租户管理-角色配置-分配菜单-添加菜单角色列表关系
* @param request
* @return
*/
@PostMapping("/add/tenant/roleMenuList")
Result addTenantRoleMenuList(@Validated @RequestBody ApiTenantRoleMenuListAddRequest request);
/**
* 租户管理-角色配置-分配菜单-查询选中的菜单列表
* @return
*/
@PostMapping("/selected/tenant/roleMenuList")
Result<List<String>> selectedTenantRoleMenuList(@Validated @RequestBody ApiSelectedTenantRoleMenuListRequest request);
/**
* 项目管理-角色配置-分配菜单-添加菜单角色列表关系
* @param request
* @return
*/
@PostMapping("/add/project/roleMenuList")
Result addProjectRoleMenuList(@Validated @RequestBody ApiProjectRoleMenuListAddRequest request);
/**
* 项目管理-角色配置-分配菜单-查询选中的菜单列表
* @return
*/
@PostMapping("/selected/project/roleMenuList")
Result<List<String>> selectedProjectRoleMenuList(@Validated @RequestBody ApiSelectedProjectRoleMenuListRequest request);
}
......@@ -4,14 +4,17 @@ import com.yd.common.result.Result;
import com.yd.user.feign.fallback.reltenantmenu.ApiRelTenantMenuFeignFallbackFactory;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListAddRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 用户服务:租户-菜单关系信息Feign客户端
......@@ -28,6 +31,14 @@ public interface ApiRelTenantMenuFeignClient {
Result page(@Validated @RequestBody ApiRelTenantMenuListPageRequest request);
/**
* 租户和菜单关系树形列表查询
* @param request
* @return
*/
@PostMapping("/tree")
Result<List<ApiRelTenantMenuTreeListResponse>> tree(@Validated @RequestBody ApiRelTenantMenuTreeListRequest request);
/**
* 添加租户和菜单列表关系
* @param request
* @return
......@@ -44,10 +55,18 @@ public interface ApiRelTenantMenuFeignClient {
Result del(@NotNull(message = "租户和菜单关系表主键id不能为空") @RequestParam(value = "id") Long id);
/**
* 导入-选择菜单分页查询(查询当前租户级(当前所属租户绑定的菜单)或者系统级(全局菜单在任何地方都适用导入绑定)的菜单表数据)
* 导入-树形菜单查询
* @param request
* @return
*/
@PostMapping("/select/menu/page")
Result selectMenuPage(@Validated @RequestBody ApiRelTenantMenuSelectPageRequest request);
@PostMapping("/import/query/menu/tree")
Result<List<ApiRelTenantMenuImportQueryMenuTreeResponse>> importQueryMenuTree(@Validated @RequestBody ApiRelTenantMenuImportQueryMenuTreeRequest request);
/**
* 导入-树形菜单-查询选中的菜单id集合
* @param tenantBizId
* @return
*/
@GetMapping("/import/query/selected/menu/list")
Result<List<String>> selectedList(@NotBlank(message = "租户id不能为空") @RequestParam(value = "tenantBizId") String tenantBizId);
}
......@@ -2,18 +2,12 @@ package com.yd.user.feign.client.reluserrole;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.reluserrole.ApiRelUserRoleFeignFallbackFactory;
import com.yd.user.feign.request.reluserrole.ApiProjectUserRoleListAddRequest;
import com.yd.user.feign.request.reluserrole.ApiTenantUserRoleListAddRequest;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.yd.user.feign.request.reluserrole.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 用户服务:用户-角色关系信息Feign客户端
......@@ -22,7 +16,7 @@ import java.util.List;
public interface ApiRelUserRoleFeignClient {
/**
* 租户管理-用户配置-权限配置-添加用户角色列表关系
* 租户管理-用户配置-分配角色-添加用户角色列表关系
* @param request
* @return
*/
......@@ -30,15 +24,29 @@ public interface ApiRelUserRoleFeignClient {
Result addTenantUserRoleList(@Validated @RequestBody ApiTenantUserRoleListAddRequest request);
/**
* 租户管理-用户配置-权限配置-查询选中的角色列表
* 租户管理-用户配置-分配角色-移除用户角色列表关系
* @param request
* @return
*/
@PostMapping("/del/tenant/userRoleList")
Result delTenantUserRoleList(@Validated @RequestBody ApiTenantUserRoleListDelRequest request);
/**
* 租户管理-用户配置-分配角色-查询待选的角色分页列表
* @return
*/
@PostMapping("/candidate/tenant/userRolePage")
Result candidateTenantUserRolePage(@Validated @RequestBody ApiCandidateTenantUserRolePageRequest request);
/**
* 租户管理-用户配置-分配角色-查询选中的角色分页列表
* @return
*/
@GetMapping("/selected/tenant/userRoleList")
Result<List<ApiSelectedTenantUserRoleListResponse>> selectedTenantUserRoleList(@NotBlank(message = "租户唯一标识(业务ID)不能为空") @RequestParam(value = "tenantBizId") String tenantBizId,
@NotBlank(message = "用户ID(业务id)不能为空") @RequestParam(value = "userBizId") String userBizId);
@PostMapping("/selected/tenant/userRolePage")
Result selectedTenantUserRolePage(@Validated @RequestBody ApiSelectedTenantUserRolePageRequest request);
/**
* 项目管理-用户配置-权限配置-添加用户角色列表关系
* 项目管理-用户配置-分配角色-添加用户角色列表关系
* @param request
* @return
*/
......@@ -46,10 +54,24 @@ public interface ApiRelUserRoleFeignClient {
Result addProjectUserRoleList(@Validated @RequestBody ApiProjectUserRoleListAddRequest request);
/**
* 项目管理-用户配置-权限配置-查询选中的角色列表
* 项目管理-用户配置-分配角色-移除用户角色列表关系
* @param request
* @return
*/
@PostMapping("/del/project/userRoleList")
Result delProjectUserRoleList(@Validated @RequestBody ApiProjectUserRoleListDelRequest request);
/**
* 项目管理-用户配置-分配角色-查询待选的角色分页列表
* @return
*/
@PostMapping("/candidate/project/userRolePage")
Result candidateProjectUserRolePage(@Validated @RequestBody ApiCandidateProjectUserRolePageRequest request);
/**
* 项目管理-用户配置-分配角色-查询选中的角色列表
* @return
*/
@GetMapping("/selected/project/userRoleList")
Result<List<ApiSelectedProjectUserRoleListResponse>> selectedProjectUserRoleList(@NotBlank(message = "项目唯一标识(业务ID)不能为空") @RequestParam(value = "projectBizId") String projectBizId,
@NotBlank(message = "用户ID(业务id)不能为空") @RequestParam(value = "userBizId") String userBizId);
@PostMapping("/selected/project/userRolePage")
Result selectedProjectUserRolePage(@Validated @RequestBody ApiSelectedProjectUserRolePageRequest request);
}
package com.yd.user.feign.client.sysdict;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.sysdict.ApiSysDictFeignFallbackFactory;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 用户服务-字典类型信息信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiSysDictFeignFallbackFactory.class)
public interface ApiSysDictFeignClient {
/**
* 根据字典类型获取字典数据项列表
* @param dictType
* @return
*/
@GetMapping("/type/item/list/{dictType}")
Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(@NotBlank(message = "字典类型不能为空") @PathVariable("dictType") String dictType);
}
......@@ -68,4 +68,5 @@ public interface ApiSysTenantFeignClient {
@PatchMapping("/edit/status")
Result editStatus(@NotBlank(message = "租户唯一标识(业务ID)不能为空") @RequestParam(value = "tenantBizId") String tenantBizId,
@NotNull(message = "状态不能为空") @RequestParam(value = "status") Integer status);
}
......@@ -2,17 +2,18 @@ package com.yd.user.feign.client.sysuser;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.sysuser.ApiSysUserFeignFallbackFactory;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditPwdRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
import com.yd.user.feign.request.sysuser.*;
import com.yd.user.feign.response.login.ApiLoginMenuInfoResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.login.GetLoginInfoResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 用户服务-系统用户信息Feign客户端
......@@ -66,6 +67,28 @@ public interface ApiSysUserFeignClient {
* 编辑用户密码
* @return
*/
@PostMapping("/edit/pwd")
@PutMapping("/edit/pwd")
Result editPwd(@Validated @RequestBody ApiSysUserEditPwdRequest request);
/**
* 权限-管理端-获取用户登录后权限信息
* @return
*/
@GetMapping("/login/permission/getInfo")
Result<GetLoginInfoResponse> getLoginInfo();
/**
* 权限-管理端-获取当前登录用户绑定的当前租户用户角色菜单列表
* @return
*/
@GetMapping("/login/permission/getMenuRouters")
Result<List<ApiLoginMenuInfoResponse>> getMenuRouters(@NotBlank(message = "租户业务id不能为空") @RequestParam(value = "tenantBizId") String tenantBizId);
/**
* 权限-管理端-根据作用域分页查询租户或项目列表
* @param request
* @return
*/
@PostMapping("/scope/page")
Result scopePage(@Validated @RequestBody ApiScopePageRequest request);
}
package com.yd.user.feign.fallback.projectmenu;
import com.yd.common.result.Result;
import com.yd.user.feign.client.relprojectmenu.ApiRelProjectMenuFeignClient;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListAddRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用户服务:项目-菜单关系信息Feign降级处理
*/
@Slf4j
@Component
public class ApiRelProjectMenuFeignFallbackFactory implements FallbackFactory<ApiRelProjectMenuFeignClient> {
@Override
public ApiRelProjectMenuFeignClient create(Throwable cause) {
return new ApiRelProjectMenuFeignClient() {
@Override
public Result page(ApiRelProjectMenuListPageRequest request) {
return null;
}
@Override
public Result<List<ApiRelProjectMenuTreeListResponse>> tree(ApiRelProjectMenuTreeListRequest request) {
return null;
}
@Override
public Result addMenuList(ApiRelProjectMenuListAddRequest request) {
return null;
}
@Override
public Result del(Long id) {
return null;
}
@Override
public Result<List<ApiRelProjectMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelProjectMenuImportQueryMenuTreeRequest request) {
return null;
}
@Override
public Result<List<String>> selectedList(String projectBizId) {
return null;
}
};
}
}
package com.yd.user.feign.fallback.relrolemenu;
import com.yd.common.result.Result;
import com.yd.user.feign.client.relrolemenu.ApiRelRoleMenuFeignClient;
import com.yd.user.feign.request.relrolemenu.ApiProjectRoleMenuListAddRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedProjectRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiSelectedTenantRoleMenuListRequest;
import com.yd.user.feign.request.relrolemenu.ApiTenantRoleMenuListAddRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用户服务:角色-菜单关系信息Feign降级处理
*/
@Slf4j
@Component
public class ApiRelRoleMenuFeignFallbackFactory implements FallbackFactory<ApiRelRoleMenuFeignClient> {
@Override
public ApiRelRoleMenuFeignClient create(Throwable cause) {
return new ApiRelRoleMenuFeignClient() {
@Override
public Result addTenantRoleMenuList(ApiTenantRoleMenuListAddRequest request) {
return null;
}
@Override
public Result<List<String>> selectedTenantRoleMenuList(ApiSelectedTenantRoleMenuListRequest request) {
return null;
}
@Override
public Result addProjectRoleMenuList(ApiProjectRoleMenuListAddRequest request) {
return null;
}
@Override
public Result<List<String>> selectedProjectRoleMenuList(ApiSelectedProjectRoleMenuListRequest request) {
return null;
}
};
}
}
......@@ -4,11 +4,17 @@ import com.yd.common.result.Result;
import com.yd.user.feign.client.reltenantmenu.ApiRelTenantMenuFeignClient;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListAddRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 用户服务:租户-菜单关系信息Feign降级处理
*/
......@@ -24,6 +30,11 @@ public class ApiRelTenantMenuFeignFallbackFactory implements FallbackFactory<Api
}
@Override
public Result<List<ApiRelTenantMenuTreeListResponse>> tree(ApiRelTenantMenuTreeListRequest request) {
return null;
}
@Override
public Result addMenuList(ApiRelTenantMenuListAddRequest request) {
return null;
}
......@@ -34,9 +45,15 @@ public class ApiRelTenantMenuFeignFallbackFactory implements FallbackFactory<Api
}
@Override
public Result selectMenuPage(ApiRelTenantMenuSelectPageRequest request) {
public Result<List<ApiRelTenantMenuImportQueryMenuTreeResponse>> importQueryMenuTree(ApiRelTenantMenuImportQueryMenuTreeRequest request) {
return null;
}
@Override
public Result<List<String>> selectedList(String tenantBizId) {
return null;
}
};
}
}
......@@ -2,16 +2,11 @@ package com.yd.user.feign.fallback.reluserrole;
import com.yd.common.result.Result;
import com.yd.user.feign.client.reluserrole.ApiRelUserRoleFeignClient;
import com.yd.user.feign.request.reluserrole.ApiProjectUserRoleListAddRequest;
import com.yd.user.feign.request.reluserrole.ApiTenantUserRoleListAddRequest;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.yd.user.feign.request.reluserrole.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 用户服务:用户-角色关系信息Feign降级处理
*/
......@@ -21,13 +16,24 @@ public class ApiRelUserRoleFeignFallbackFactory implements FallbackFactory<ApiRe
@Override
public ApiRelUserRoleFeignClient create(Throwable cause) {
return new ApiRelUserRoleFeignClient() {
@Override
public Result addTenantUserRoleList(ApiTenantUserRoleListAddRequest request) {
return null;
}
@Override
public Result<List<ApiSelectedTenantUserRoleListResponse>> selectedTenantUserRoleList(String tenantBizId, String userBizId) {
public Result delTenantUserRoleList(ApiTenantUserRoleListDelRequest request) {
return null;
}
@Override
public Result candidateTenantUserRolePage(ApiCandidateTenantUserRolePageRequest request) {
return null;
}
@Override
public Result selectedTenantUserRolePage(ApiSelectedTenantUserRolePageRequest request) {
return null;
}
......@@ -37,7 +43,17 @@ public class ApiRelUserRoleFeignFallbackFactory implements FallbackFactory<ApiRe
}
@Override
public Result selectedProjectUserRoleList(String projectBizId,String userBizId) {
public Result delProjectUserRoleList(ApiProjectUserRoleListDelRequest request) {
return null;
}
@Override
public Result candidateProjectUserRolePage(ApiCandidateProjectUserRolePageRequest request) {
return null;
}
@Override
public Result selectedProjectUserRolePage(ApiSelectedProjectUserRolePageRequest request) {
return null;
}
};
......
package com.yd.user.feign.fallback.sysdict;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysdict.ApiSysDictFeignClient;
import com.yd.user.feign.response.sysdict.GetDictItemListByDictTypeResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用户服务-字典类型信息Feign降级处理
*/
@Slf4j
@Component
public class ApiSysDictFeignFallbackFactory implements FallbackFactory<ApiSysDictFeignClient> {
@Override
public ApiSysDictFeignClient create(Throwable cause) {
return new ApiSysDictFeignClient() {
@Override
public Result<List<GetDictItemListByDictTypeResponse>> getDictItemListByDictType(String dictType) {
return null;
}
};
}
}
......@@ -3,14 +3,18 @@ package com.yd.user.feign.fallback.sysuser;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
import com.yd.user.feign.request.sysuser.ApiSysUserAddRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserEditRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.request.sysuser.*;
import com.yd.user.feign.response.login.ApiLoginMenuInfoResponse;
import com.yd.user.feign.response.login.GetLoginInfoResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 用户服务-系统用户信息Feign降级处理
*/
......@@ -44,6 +48,32 @@ public class ApiSysUserFeignFallbackFactory implements FallbackFactory<ApiSysUse
log.error("获取用户信息失败: {}", cause.getMessage());
throw new BusinessException("获取用户信息失败,请稍后重试");
}
@Override
public Result editStatus(String userBizId, Integer status) {
return null;
}
@Override
public Result editPwd(ApiSysUserEditPwdRequest request) {
return null;
}
@Override
public Result<GetLoginInfoResponse> getLoginInfo() {
return null;
}
@Override
public Result<List<ApiLoginMenuInfoResponse>> getMenuRouters(String tenantBizId) {
return null;
}
@Override
public Result scopePage(ApiScopePageRequest request) {
return null;
}
};
}
}
package com.yd.user.feign.request.relprojectmenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 导入-树形菜单查询
*/
@Data
public class ApiRelProjectMenuImportQueryMenuTreeRequest {
/**
* 项目id
*/
@NotBlank(message = "项目id不能为空")
private String projectBizId;
/**
* 菜单名称
*/
private String menuName;
}
package com.yd.user.feign.request.relprojectmenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 添加项目和菜单列表关系入参
*/
@Data
public class ApiRelProjectMenuListAddRequest {
/**
* 项目唯一标识(业务ID)
*/
@NotBlank(message = "项目唯一标识(业务ID)不能为空")
private String projectBizId;
/**
* 菜单唯一标识(业务ID) 列表(选中列表)
*/
@NotEmpty(message = "菜单唯一标识(业务ID) 列表(选中列表)不能为空")
private List<String> menuBizIdList;
}
package com.yd.user.feign.request.relprojectmenu;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 项目和菜单关系分页查询入参
*/
@Data
public class ApiRelProjectMenuListPageRequest extends PageDto {
/**
* 项目唯一标识(业务ID)
*/
@NotBlank(message = "项目唯一标识(业务ID)不能为空")
private String projectBizId;
/**
* 菜单名称
*/
private String menuName;
}
package com.yd.user.feign.request.relprojectmenu;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 项目和菜单关系分页查询入参
*/
@Data
public class ApiRelProjectMenuTreeListRequest extends PageDto {
/**
* 项目唯一标识(业务ID)
*/
@NotBlank(message = "项目唯一标识(业务ID)不能为空")
private String projectBizId;
/**
* 菜单名称
*/
private String menuName;
}
package com.yd.user.feign.request.relrolemenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiProjectRoleMenuListAddRequest {
/**
* 项目唯一标识(业务ID)
*/
@NotBlank(message = "项目唯一标识(业务ID)不能为空")
private String projectBizId;
/**
* 角色唯一标识(业务ID)
*/
@NotBlank(message = "角色唯一标识(业务ID)不能为空")
private String roleBizId;
/**
* 菜单唯一标识(业务ID) 列表(选中列表)
*/
@NotEmpty(message = "菜单唯一标识(业务ID) 列表(选中列表)不能为空")
private List<String> menuBizIdList;
}
package com.yd.user.feign.request.relrolemenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiSelectedProjectRoleMenuListRequest {
/**
* 项目唯一标识(业务ID)
*/
@NotBlank(message = "项目唯一标识(业务ID)不能为空")
private String projectBizId;
/**
* 角色唯一标识(业务ID)
*/
@NotBlank(message = "角色唯一标识(业务ID)不能为空")
private String roleBizId;
}
package com.yd.user.feign.request.relrolemenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiSelectedTenantRoleMenuListRequest {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 角色唯一标识(业务ID)
*/
@NotBlank(message = "角色唯一标识(业务ID)不能为空")
private String roleBizId;
}
package com.yd.user.feign.request.relrolemenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiTenantRoleMenuListAddRequest {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 角色唯一标识(业务ID)
*/
@NotBlank(message = "角色唯一标识(业务ID)不能为空")
private String roleBizId;
/**
* 菜单唯一标识(业务ID) 列表(选中列表)
*/
@NotEmpty(message = "菜单唯一标识(业务ID) 列表(选中列表)不能为空")
private List<String> menuBizIdList;
}
package com.yd.user.feign.request.reltenantmenu;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 导入-树形菜单查询
*/
@Data
public class ApiRelTenantMenuImportQueryMenuTreeRequest {
/**
* 租户id
*/
@NotBlank(message = "租户id不能为空")
private String tenantBizId;
/**
* 菜单名称
*/
private String menuName;
}
package com.yd.user.feign.request.reltenantmenu;
import com.yd.common.dto.PageDto;
import lombok.Data;
/**
* 导入-选择菜单分页查询(查询当前租户级(当前所属租户绑定的菜单)或者系统级(全局菜单在任何地方都适用导入绑定)的菜单表数据)入参
*/
@Data
public class ApiRelTenantMenuSelectPageRequest extends PageDto {
}
package com.yd.user.feign.request.reltenantmenu;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 租户和菜单关系分页查询入参
*/
@Data
public class ApiRelTenantMenuTreeListRequest extends PageDto {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 菜单名称
*/
private String menuName;
}
package com.yd.user.feign.request.reluserrole;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiCandidateProjectUserRolePageRequest extends PageDto {
/**
* 项目ID(业务id)
*/
@NotBlank(message = "项目ID(业务id)不能为空")
private String projectBizId;
/**
* 用户ID(业务id)
*/
@NotBlank(message = "用户ID(业务id)不能为空")
private String userBizId;
/**
* 角色名称
*/
private String roleName;
}
package com.yd.user.feign.request.reluserrole;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiCandidateTenantUserRolePageRequest extends PageDto {
/**
* 租户ID(业务id)
*/
@NotBlank(message = "租户ID(业务id)不能为空")
private String tenantBizId;
/**
* 用户ID(业务id)
*/
@NotBlank(message = "用户ID(业务id)不能为空")
private String userBizId;
/**
* 角色名称
*/
private String roleName;
}
......@@ -7,7 +7,7 @@ import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 项目管理-用户配置-权限配置-添加用户角色列表关系入参
* 项目管理-用户配置-分配角色-添加用户角色列表关系入参
*/
@Data
public class ApiProjectUserRoleListAddRequest {
......
package com.yd.user.feign.request.reluserrole;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiProjectUserRoleListDelRequest {
/**
* 项目ID(业务id)
*/
@NotBlank(message = "项目ID(业务id)不能为空")
private String projectBizId;
/**
* 用户ID(业务id)
*/
@NotBlank(message = "用户ID(业务id)不能为空")
private String userBizId;
/**
* 选择的角色ID(业务id)列表
*/
@NotEmpty(message = "选择的角色ID(业务id)列表不能为空")
private List<String> roleBizIdList;
}
package com.yd.user.feign.request.reluserrole;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiSelectedProjectUserRolePageRequest extends PageDto {
/**
* 项目ID(业务id)
*/
@NotBlank(message = "项目ID(业务id)不能为空")
private String projectBizId;
/**
* 用户ID(业务id)
*/
@NotBlank(message = "用户ID(业务id)不能为空")
private String userBizId;
/**
* 角色名称
*/
private String roleName;
}
package com.yd.user.feign.request.reluserrole;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiSelectedTenantUserRolePageRequest extends PageDto {
/**
* 租户ID(业务id)
*/
@NotBlank(message = "租户ID(业务id)不能为空")
private String tenantBizId;
/**
* 用户ID(业务id)
*/
@NotBlank(message = "用户ID(业务id)不能为空")
private String userBizId;
/**
* 角色名称
*/
private String roleName;
}
package com.yd.user.feign.request.reluserrole;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 租户管理-用户配置-分配角色-移除用户角色列表关系入参
*/
@Data
public class ApiTenantUserRoleListDelRequest {
/**
* 租户ID(业务id)
*/
@NotBlank(message = "租户ID(业务id)不能为空")
private String tenantBizId;
/**
* 用户ID(业务id)
*/
@NotBlank(message = "用户ID(业务id)不能为空")
private String userBizId;
/**
* 选择的角色ID(业务id)列表
*/
@NotEmpty(message = "选择的角色ID(业务id)列表不能为空")
private List<String> roleBizIdList;
}
......@@ -29,11 +29,21 @@ public class ApiSysMenuAddRequest {
private Integer menuType;
/**
* 路由名称
*/
private String routeName;
/**
* 路由地址
*/
private String path;
/**
* 路由参数
*/
private String query;
/**
* 组件路径
*/
private String component;
......
......@@ -42,11 +42,21 @@ public class ApiSysMenuEditRequest {
private Integer menuType;
/**
* 路由名称
*/
private String routeName;
/**
* 路由地址
*/
private String path;
/**
* 路由参数
*/
private String query;
/**
* 组件路径
*/
private String component;
......
......@@ -9,4 +9,13 @@ import lombok.Data;
@Data
public class ApiSysMenuPageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 菜单名称
*/
private String menuName;
}
......@@ -8,4 +8,14 @@ import lombok.Data;
@Data
public class ApiSysMenuTreeListRequest {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 菜单名称
*/
private String menuName;
}
package com.yd.user.feign.request.sysproject;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
......@@ -31,11 +32,15 @@ public class ApiSysProjectAddRequest {
/**
* 项目开始时间
*/
@NotNull(message = "项目开始时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 项目结束时间
*/
@NotNull(message = "项目结束时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
......@@ -48,4 +53,21 @@ public class ApiSysProjectAddRequest {
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 项目图标地址
*/
@NotBlank(message = "项目图标不能为空")
private String logoUrl;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
@NotNull(message = "是否内置项目不能为空")
private Integer isIn;
/**
* 项目访问地址
*/
private String projectUrl;
}
package com.yd.user.feign.request.sysproject;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
......@@ -44,11 +45,15 @@ public class ApiSysProjectEditRequest {
/**
* 项目开始时间
*/
@NotNull(message = "项目开始时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
/**
* 项目结束时间
*/
@NotNull(message = "项目结束时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/**
......@@ -61,4 +66,21 @@ public class ApiSysProjectEditRequest {
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 项目图标地址
*/
@NotBlank(message = "项目图标不能为空")
private String logoUrl;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
@NotNull(message = "是否内置项目不能为空")
private Integer isIn;
/**
* 项目访问地址
*/
private String projectUrl;
}
......@@ -9,6 +9,10 @@ import lombok.Data;
@Data
public class ApiSysProjectPageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 项目名称
......
......@@ -18,11 +18,6 @@ public class ApiSysRoleAddRequest {
private String roleName;
/**
* 角色权限字符串(用于安全认证访问控制)
*/
private String roleKey;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
......
......@@ -27,11 +27,6 @@ public class ApiSysRoleEditRequest {
private String roleName;
/**
* 角色权限字符串(用于安全认证访问控制)
*/
private String roleKey;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
......
......@@ -10,6 +10,11 @@ import lombok.Data;
public class ApiSysRolePageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 角色名称
*/
private String roleName;
......
package com.yd.user.feign.request.systenant;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
......@@ -56,6 +57,7 @@ public class ApiSysTenantAddRequest {
/**
* 服务到期时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime expireTime;
/**
......
......@@ -13,12 +13,6 @@ import java.time.LocalDateTime;
public class ApiSysTenantEditRequest {
/**
* 当前登录账号绑定所属租户ID(业务id)
* 超级管理员不传值,非超级管理传值
*/
private String loginTenantBizId;
/**
* 租户主键id
*/
@NotNull(message = "租户主键id不能为空")
......
......@@ -12,6 +12,11 @@ import java.time.LocalDateTime;
public class ApiSysTenantPageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 租户名称
*/
private String tenantName;
......
package com.yd.user.feign.request.sysuser;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiScopePageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
@NotBlank(message = "当前登录用户所属的租户id(当前页面右上角显示的租户)不能为空")
private String loginTenantBizId;
/**
* 作用域 1-系统级(全局) 2-租户级 3-项目级
*/
@NotNull(message = "作用域不能为空")
private Integer scope;
/**
* 搜索的名称(作用域对应的名称)
*/
private String name;
}
......@@ -14,6 +14,11 @@ import javax.validation.constraints.Pattern;
public class ApiSysUserAddRequest {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 登录用户账号
*/
@NotBlank(message = "登录用户账号不能为空")
......@@ -68,11 +73,11 @@ public class ApiSysUserAddRequest {
*/
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 用户来源(1:系统创建...)
*/
@NotNull(message = "用户来源不能为空")
private Integer sourceType;
//
// /**
// * 用户来源(1:系统创建...)
// */
// @NotNull(message = "用户来源不能为空")
// private Integer sourceType = 1;
}
......@@ -2,10 +2,23 @@ package com.yd.user.feign.request.sysuser;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 编辑用户密码入参
*/
@Data
public class ApiSysUserEditPwdRequest {
/**
* 用户唯一业务id
*/
@NotBlank(message = "用户id不能为空")
private String userBizId;
/**
* 重置的密码
*/
@NotBlank(message = "重置的密码不能为空")
private String password;
}
......@@ -31,11 +31,11 @@ public class ApiSysUserEditRequest {
@NotBlank(message = "登录用户账号不能为空")
private String userName;
/**
* 明文密码 TODO
*/
@NotBlank(message = "密码不能为空")
private String password;
// /**
// * 明文密码 TODO
// */
// @NotBlank(message = "密码不能为空")
// private String password;
/**
* 真实姓名
......@@ -81,10 +81,10 @@ public class ApiSysUserEditRequest {
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 用户来源(1:系统创建...)
*/
@NotNull(message = "用户来源不能为空")
private Integer sourceType;
// /**
// * 用户来源(1:系统创建...)
// */
// @NotNull(message = "用户来源不能为空")
// private Integer sourceType;
}
......@@ -12,6 +12,11 @@ import java.time.LocalDateTime;
public class ApiSysUserPageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 登录账号
*/
private String userName;
......
package com.yd.user.feign.response.login;
import lombok.Data;
import java.util.List;
/**
* 当前登录用户绑定的租户被分配的菜单集合(当前租户用户菜单集合)
*/
@Data
public class ApiLoginMenuInfoResponse {
/**
* 菜单主键id
*/
private Long id;
/**
* 菜单唯一标识(业务ID)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 路由地址
*/
private String path;
/**
* 组件路径
*/
private String component;
/**
* 图标
*/
private String icon;
/**
* 是否外链(0:否 1:是)
*/
private Integer isExternal;
/**
* 是否缓存(0:否 1:是)
*/
private Integer isCache;
/**
* 是否显示(0:隐藏 1:显示)
*/
private Integer isVisible;
/**
* 权限标识(如:user:add)
*/
private String permission;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
/**
* 子级菜单
*/
private List<ApiLoginMenuInfoResponse> children;
}
package com.yd.user.feign.response.login;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 租户绑定的项目列表信息出参
*/
@Data
public class ApiLoginProjectInfoResponse {
/**
* 项目主键ID
*/
private Long id;
/**
* 项目唯一标识(业务ID)
*/
private String projectBizId;
/**
* 作用域(1:系统级(全局) 2:租户级 )
*/
private Integer scope;
/**
* 项目名称
*/
private String projectName;
/**
* 项目编码(租户内唯一)
*/
private String projectCode;
/**
* 项目描述
*/
private String description;
/**
* 状态(0:禁用 1:启用)
*/
private Integer status;
/**
* 项目开始时间
*/
private LocalDateTime startTime;
/**
* 项目结束时间
*/
private LocalDateTime endTime;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
private Integer isIn;
/**
* 项目图标地址
*/
private String logoUrl;
/**
* 项目访问地址
*/
private String projectUrl;
}
package com.yd.user.feign.response.login;
import lombok.Data;
import java.time.LocalDateTime;
/**
* 租户基础信息出参
*/
@Data
public class ApiLoginTenantInfoResponse {
/**
* 租户主键ID
*/
private Long id;
/**
* 租户唯一标识(业务ID)
*/
private String tenantBizId;
/**
* 租户名称
*/
private String tenantName;
/**
* 租户编码(用于API标识)
*/
private String tenantCode;
/**
* 租户LOGO
*/
private String logoUrl;
/**
* 联系人姓名
*/
private String contactName;
/**
* 联系电话
*/
private String contactPhone;
/**
* 联系邮箱
*/
private String contactEmail;
/**
* 所属行业
*/
private String industry;
/**
* 联系地址
*/
private String address;
/**
* 状态(0:禁用 1:启用)
*/
private Integer status;
/**
* 是否系统内置租户(0:否 1:是)
*/
private Integer isSystem;
/**
* 服务到期时间
*/
private LocalDateTime expireTime;
/**
* 最大项目数
*/
private Integer maxProject;
/**
* 最大用户数
*/
private Integer maxUser;
/**
* 最大存储空间(字节)
*/
private Long maxStorage;
/**
* 租户级配置(JSON格式)
*/
private String configJson;
}
package com.yd.user.feign.response.login;
import lombok.Data;
import java.util.List;
/**
* 登录用户绑定的租户信息列表出参
*/
@Data
public class ApiLoginTenantResponse {
/**
* 租户基础信息
*/
private ApiLoginTenantInfoResponse apiLoginTenantInfoResponse;
/**
* 租户绑定的项目列表信息
*/
private List<ApiLoginProjectInfoResponse> apiLoginProjectInfoResponseList;
/**
* 当前登录用户绑定的租户被分配的菜单集合(当前租户用户菜单集合)
*/
private List<ApiLoginMenuInfoResponse> apiLoginMenuInfoResponseList;
/**
* 当前登录用户绑定的租户被分配的角色编码集合(当前租户用户角色编码集合)
*/
private List<String> roles;
/**
* 当前登录用户绑定的租户被分配的控制页面内的具体操作(按钮级权限)集合(当前租户用户所拥有的所有按钮及权限集合)
*/
private List<String> permissions;
}
package com.yd.user.feign.response.login;
import lombok.Data;
/**
* 登录的用户信息出参
*/
@Data
public class ApiLoginUserInfoResponse {
/**
* 用户主键ID
*/
private Long id;
/**
* 用户唯一标识(业务ID)
*/
private String userBizId;
/**
* 登录账号
*/
private String userName;
/**
* 加密密码
*/
private String password;
/**
* 密码盐值
*/
private String passwordSalt;
/**
* 真实姓名
*/
private String realName;
/**
* 昵称
*/
private String nickName;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
/**
* 性别(0:未知 1:男 2:女)
*/
private Integer gender;
/**
* 状态(0:禁用 1:正常 2:锁定)
*/
private Integer status;
/**
* 是否超级管理员(0:否 1:是)
*/
private Integer isSuperAdmin;
/**
* 用户来源(1:系统创建...)
*/
private Integer sourceType;
}
package com.yd.user.feign.response.login;
import lombok.Data;
import java.util.List;
/**
* 管理端-获取登录后信息出参
*/
@Data
public class GetLoginInfoResponse {
/**
* 是否是初始密码
*/
private Boolean isDefaultModifyPwd = false;
/**
* 是否是过期密码
*/
private Boolean isPasswordExpired = false;
/**
* 登录的用户基础信息
*/
private ApiLoginUserInfoResponse apiLoginUserInfoResponse;
/**
* 登录用户绑定的租户信息列表
*/
private List<ApiLoginTenantResponse> apiLoginTenantResponseList;
}
package com.yd.user.feign.response.relprojectmenu;
import lombok.Data;
import java.util.List;
/**
* 导入-树形菜单查询
*/
@Data
public class ApiRelProjectMenuImportQueryMenuTreeResponse {
/**
* 菜单表主键id
*/
private Long id;
/**
* 菜单唯一标识(业务ID)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 图标
*/
private String icon;
/**
* 子级菜单
*/
private List<ApiRelProjectMenuImportQueryMenuTreeResponse> children;
}
package com.yd.user.feign.response.relprojectmenu;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 项目和菜单关系分页查询出参
*/
@Data
public class ApiRelProjectMenuListPageResponse {
/**
* 项目和菜单关系主键id
*/
private Long id;
/**
* 项目ID(业务id)
*/
private String projectBizId;
/**
* 菜单表主键id
*/
private Long menuId;
/**
* 菜单ID(业务id)(用于前端显示绑定参数)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 父菜单ID(用于前端显示绑定参数)
*/
private String parentId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 图标
*/
private String icon;
/**
* 作用域(1:系统级(全局) 2:项目级 3:项目级)
*/
private Integer scope;
/**
* 子级菜单
*/
private List<ApiRelProjectMenuListPageResponse> children = new ArrayList<>();
}
package com.yd.user.feign.response.relprojectmenu;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 项目和菜单关系树形列表出参
*/
@Data
public class ApiRelProjectMenuTreeListResponse {
/**
* 项目和菜单关系主键id
*/
private Long id;
/**
* 项目ID(业务id)
*/
private String projectBizId;
/**
* 菜单表主键id
*/
private Long menuId;
/**
* 菜单ID(业务id)(用于前端显示绑定参数)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 图标
*/
private String icon;
/**
* 作用域(1:系统级(全局) 2:项目级 3:项目级)
*/
private Integer scope;
/**
* 子级菜单
*/
private List<ApiRelProjectMenuTreeListResponse> children = new ArrayList<>();
}
package com.yd.user.feign.response.reltenantmenu;
import lombok.Data;
import java.util.List;
/**
* 导入-树形菜单查询
*/
@Data
public class ApiRelTenantMenuImportQueryMenuTreeResponse {
/**
* 菜单表主键id
*/
private Long id;
/**
* 菜单唯一标识(业务ID)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 图标
*/
private String icon;
/**
* 子级菜单
*/
private List<ApiRelTenantMenuImportQueryMenuTreeResponse> children;
}
......@@ -2,6 +2,9 @@ package com.yd.user.feign.response.reltenantmenu;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 租户和菜单关系分页查询出参
*/
......@@ -19,18 +22,47 @@ public class ApiRelTenantMenuListPageResponse {
private String tenantBizId;
/**
* 菜单ID(业务id)
* 菜单表主键id
*/
private Long menuId;
/**
* 菜单ID(业务id)(用于前端显示绑定参数)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 父菜单ID(用于前端显示绑定参数)
*/
private String parentId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 图标
*/
private String icon;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 子级菜单
*/
private List<ApiRelTenantMenuListPageResponse> children = new ArrayList<>();
}
package com.yd.user.feign.response.reltenantmenu;
import lombok.Data;
/**
* 导入-选择菜单分页查询(查询当前租户级(当前所属租户绑定的菜单)或者系统级(全局菜单在任何地方都适用导入绑定)的菜单表数据)
*/
@Data
public class ApiRelTenantMenuSelectPageResponse {
}
package com.yd.user.feign.response.reltenantmenu;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 租户和菜单关系树形列表出参
*/
@Data
public class ApiRelTenantMenuTreeListResponse {
/**
* 租户和菜单关系主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 菜单表主键id
*/
private Long menuId;
/**
* 菜单ID(业务id)(用于前端显示绑定参数)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 图标
*/
private String icon;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 子级菜单
*/
private List<ApiRelTenantMenuTreeListResponse> children = new ArrayList<>();
}
package com.yd.user.feign.response.reluserrole;
import lombok.Data;
@Data
public class ApiCandidateProjectUserRolePageResponse {
/**
* 项目角色关系表主键id
*/
private Long id;
/**
* 项目ID(业务id)
*/
private String projectBizId;
/**
* 角色ID(业务id)
*/
private String roleBizId;
/**
* 角色名称
*/
private String roleName;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
}
package com.yd.user.feign.response.reluserrole;
import lombok.Data;
@Data
public class ApiCandidateTenantUserRolePageResponse {
/**
* 租户角色关系表主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 角色ID(业务id)
*/
private String roleBizId;
/**
* 角色名称
*/
private String roleName;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
}
......@@ -2,8 +2,11 @@ package com.yd.user.feign.response.reluserrole;
import lombok.Data;
/**
* 项目管理-用户配置-分配角色-查询选中的角色列表出参
*/
@Data
public class ApiSelectedTenantUserRoleListResponse {
public class ApiSelectedProjectUserRolePageResponse {
/**
* 用户角色关系表主键id
......@@ -34,4 +37,14 @@ public class ApiSelectedTenantUserRoleListResponse {
* 角色名称
*/
private String roleName;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
}
......@@ -2,11 +2,8 @@ package com.yd.user.feign.response.reluserrole;
import lombok.Data;
/**
* 项目管理-用户配置-权限配置-查询选中的角色列表出参
*/
@Data
public class ApiSelectedProjectUserRoleListResponse {
public class ApiSelectedTenantUserRolePageResponse {
/**
* 用户角色关系表主键id
......@@ -37,4 +34,14 @@ public class ApiSelectedProjectUserRoleListResponse {
* 角色名称
*/
private String roleName;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
}
package com.yd.user.feign.response.sysdict;
import lombok.Data;
/**
* 根据字典类型获取字典数据项列表出参
*/
@Data
public class GetDictItemListByDictTypeResponse {
/**
* 字典项表主键id
*/
private Long id;
/**
* 字典数据id(业务id)
*/
private String dictItemBizId;
/**
* 字典ID(字典类型表id)(业务id)
*/
private String dictBizId;
/**
* 字典项标签(名称)
*/
private String itemLabel;
/**
* 字典项值(值)
*/
private String itemValue;
/**
* 是否默认(0:否 1:是)
*/
private Integer isDefault;
/**
* 排序
*/
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
}
......@@ -20,9 +20,14 @@ public class ApiSysMenuDetailResponse {
private String menuBizId;
/**
* 父ID(树绑定的父id, 展示作用)
*/
private String parentId;
/**
* 父菜单ID
*/
private Long parentBizId;
private String parentBizId;
/**
* 菜单名称
......@@ -35,11 +40,21 @@ public class ApiSysMenuDetailResponse {
private Integer menuType;
/**
* 路由名称
*/
private String routeName;
/**
* 路由地址
*/
private String path;
/**
* 路由参数
*/
private String query;
/**
* 组件路径
*/
private String component;
......@@ -65,7 +80,12 @@ public class ApiSysMenuDetailResponse {
private Integer isVisible;
/**
* 权限标识(如:user:add)
* 菜单编码
*/
private String menuCode;
/**
* 菜单权限标识(如:user:add)
*/
private String permission;
......@@ -90,11 +110,21 @@ public class ApiSysMenuDetailResponse {
private String tenantBizId;
/**
* 所属租户名称
*/
private String tenantName;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
/**
* 所属项目名称
*/
private String projectName;
/**
* 通用备注
*/
private String remark;
......
......@@ -2,9 +2,121 @@ package com.yd.user.feign.response.sysmenu;
import lombok.Data;
import java.util.List;
/**
* 菜单分页查询出参
*/
@Data
public class ApiSysMenuPageResponse {
/**
* 菜单表主键id
*/
private Long id;
/**
* 菜单唯一标识(业务ID)
*/
private String menuBizId;
/**
* 父ID(树绑定的父id, 展示作用)
*/
private String parentId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 路由地址
*/
private String path;
/**
* 组件路径
*/
private String component;
/**
* 图标
*/
private String icon;
/**
* 是否外链(0:否 1:是)
*/
private Integer isExternal;
/**
* 是否缓存(0:否 1:是)
*/
private Integer isCache;
/**
* 是否显示(0:隐藏 1:显示)
*/
private Integer isVisible;
/**
* 菜单编码
*/
private String menuCode;
/**
* 菜单权限标识(如:user:add)
*/
private String permission;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属租户名称
*/
private String tenantName;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
/**
* 所属项目名称
*/
private String projectName;
/**
* 子级菜单
*/
private List<ApiSysMenuPageResponse> children;
}
......@@ -2,10 +2,116 @@ package com.yd.user.feign.response.sysmenu;
import lombok.Data;
import java.util.List;
/**
* 树形菜单列表查询
*/
@Data
public class ApiSysMenuTreeListResponse {
/**
* 菜单表主键id
*/
private Long id;
/**
* 菜单唯一标识(业务ID)
*/
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 菜单名称
*/
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 路由地址
*/
private String path;
/**
* 组件路径
*/
private String component;
/**
* 图标
*/
private String icon;
/**
* 是否外链(0:否 1:是)
*/
private Integer isExternal;
/**
* 是否缓存(0:否 1:是)
*/
private Integer isCache;
/**
* 是否显示(0:隐藏 1:显示)
*/
private Integer isVisible;
/**
* 菜单编码
*/
private String menuCode;
/**
* 菜单权限标识(如:user:add)
*/
private String permission;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属租户名称
*/
private String tenantName;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
/**
* 所属项目名称
*/
private String projectName;
/**
* 子级菜单
*/
private List<ApiSysMenuTreeListResponse> children;
}
package com.yd.user.feign.response.sysproject;
import lombok.Data;
import java.time.LocalDateTime;
/**
......@@ -9,6 +8,7 @@ import java.time.LocalDateTime;
*/
@Data
public class ApiSysProjectDetailResponse {
/**
* 项目ID
*/
......@@ -20,6 +20,11 @@ public class ApiSysProjectDetailResponse {
private String projectBizId;
/**
* 作用域(1:系统级(全局) 2:租户级 )
*/
private Integer scope;
/**
* 项目名称
*/
private String projectName;
......@@ -50,16 +55,31 @@ public class ApiSysProjectDetailResponse {
private LocalDateTime endTime;
/**
* 所属租户ID(业务id) 数据范围:1-私有
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属租户名称 数据范围:1-私有
* 所属租户名称
*/
private String tenantName;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
private Integer isIn;
/**
* 项目图标地址
*/
private String logoUrl;
/**
* 项目访问地址
*/
private String projectUrl;
/**
* 通用备注
*/
private String remark;
......
......@@ -21,6 +21,11 @@ public class ApiSysProjectPageResponse {
private String projectBizId;
/**
* 项目图标地址
*/
private String logoUrl;
/**
* 项目名称
*/
private String projectName;
......@@ -40,15 +45,25 @@ public class ApiSysProjectPageResponse {
*/
private LocalDateTime endTime;
// /**
// * 所属租户ID(业务id)
// */
// private String tenantBizId;
//
// /**
// * 所属租户名称
// */
// private String tenantName;
/**
* 作用域(1:系统级(全局) 2:租户级 )
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属租户名称
*/
private String tenantName;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
private Integer isIn;
/**
* 创建时间
......
......@@ -24,11 +24,6 @@ public class ApiSysRoleDetailResponse {
private String roleName;
/**
* 角色权限字符串(用于安全认证访问控制)
*/
private String roleKey;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
private Integer roleType;
......
package com.yd.user.feign.response.sysuser;
import lombok.Data;
@Data
public class ApiScopePageResponse {
/**
* 租户主键ID
*/
private Long tenantId;
/**
* 租户唯一标识(业务ID)
*/
private String tenantBizId;
/**
* 租户名称
*/
private String tenantName;
/**
* 项目主键ID
*/
private Long projectId;
/**
* 项目唯一标识(业务ID)
*/
private String projectBizId;
/**
* 项目名称
*/
private String projectName;
}
......@@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
@Configuration
public class MybatisPlusConfig {
public class UserMybatisPlusConfig {
/**
* 分页插件配置(必须)
......
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuListPageResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import com.yd.user.service.model.RelProjectMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -13,4 +22,11 @@ import com.yd.user.service.model.RelProjectMenu;
*/
public interface RelProjectMenuMapper extends BaseMapper<RelProjectMenu> {
IPage<ApiRelProjectMenuListPageResponse> page(@Param("page") IPage<ApiRelProjectMenuListPageResponse> page,
@Param("request") ApiRelProjectMenuListPageRequest request);
List<ApiRelProjectMenuTreeListResponse> treeList(@Param("request") ApiRelProjectMenuTreeListRequest request);
List<ApiRelProjectMenuImportQueryMenuTreeResponse> importQueryMenuTreeList(@Param("request") ApiRelProjectMenuImportQueryMenuTreeRequest request);
}
......@@ -3,16 +3,16 @@ package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleListPageRequest;
import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleListPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.model.RelTenantMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
......@@ -26,7 +26,7 @@ public interface RelTenantMenuMapper extends BaseMapper<RelTenantMenu> {
IPage<ApiRelTenantMenuListPageResponse> page(@Param("page") IPage<ApiRelTenantMenuListPageResponse> page,
@Param("request") ApiRelTenantMenuListPageRequest request);
List<ApiRelTenantMenuTreeListResponse> treeList(@Param("request") ApiRelTenantMenuTreeListRequest request);
IPage<ApiRelTenantMenuSelectPageResponse> selectProjectPage(@Param("page") IPage<ApiRelTenantMenuSelectPageResponse> page,
@Param("request") ApiRelTenantMenuSelectPageRequest request);
List<ApiRelTenantMenuImportQueryMenuTreeResponse> importQueryMenuTreeList(@Param("request") ApiRelTenantMenuImportQueryMenuTreeRequest request);
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.reluserrole.ApiCandidateProjectUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiCandidateTenantUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiSelectedProjectUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiSelectedTenantUserRolePageRequest;
import com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse;
import com.yd.user.service.model.RelUserRole;
import org.apache.ibatis.annotations.Param;
......@@ -18,9 +26,15 @@ import java.util.List;
*/
public interface RelUserRoleMapper extends BaseMapper<RelUserRole> {
List<ApiSelectedTenantUserRoleListResponse> selectedTenantUserRoleList(@Param("tenantBizId") String tenantBizId,
@Param("userBizId") String userBizId);
IPage<ApiCandidateTenantUserRolePageResponse> candidateTenantUserRolePage(@Param("page") Page<ApiCandidateTenantUserRolePageResponse> page,
@Param("request") ApiCandidateTenantUserRolePageRequest request);
List<ApiSelectedProjectUserRoleListResponse> selectedProjectUserRoleList(@Param("projectBizId") String projectBizId,
@Param("userBizId") String userBizId);
IPage<ApiSelectedTenantUserRolePageResponse> selectedTenantUserRolePage(@Param("page") Page<ApiSelectedTenantUserRolePageResponse> page,
@Param("request") ApiSelectedTenantUserRolePageRequest request);
IPage<ApiCandidateProjectUserRolePageResponse> candidateProjectUserRolePage(@Param("page") Page<ApiCandidateProjectUserRolePageResponse> page,
@Param("request") ApiCandidateProjectUserRolePageRequest request);
IPage<ApiSelectedProjectUserRolePageResponse> selectedProjectUserRolePage(@Param("page") Page<ApiSelectedProjectUserRolePageResponse> page,
@Param("request") ApiSelectedProjectUserRolePageRequest request);
}
package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.sysmenu.ApiSysMenuPageRequest;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.model.SysMenu;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -13,4 +21,14 @@ import com.yd.user.service.model.SysMenu;
*/
public interface SysMenuMapper extends BaseMapper<SysMenu> {
List<ApiSysMenuTreeListResponse> treeList(@Param("loginTenantBizId") String loginTenantBizId,
@Param("isAdmin") Boolean isAdmin,
@Param("menuName") String menuName,
@Param("projectBizIdList") List<String> projectBizIdList);
IPage<ApiSysMenuPageResponse> page(@Param("page") Page<ApiSysMenuPageResponse> page,
@Param("request") ApiSysMenuPageRequest request,
@Param("isAdmin") Boolean isAdmin,
@Param("projectBizIdList") List<String> projectBizIdList,
@Param("loginTenantBizId") String loginTenantBizId);
}
......@@ -2,7 +2,10 @@ package com.yd.user.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.sysuser.ApiScopePageRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.model.SysUser;
import org.apache.ibatis.annotations.Param;
......@@ -23,4 +26,8 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
@Param("loginTenantBizId") String loginTenantBizId
);
IPage<ApiScopePageResponse> scopePage(@Param("page") Page<ApiScopePageResponse> page,
@Param("request") ApiScopePageRequest request,
@Param("isAdmin") Boolean isAdmin,
@Param("loginTenantBizId") String loginTenantBizId);
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelProjectMenuDto {
/**
* 项目菜单关系主键id
*/
private Long id;
/**
* 项目ID(业务id)
*/
private String projectBizId;
/**
* 菜单ID(业务id)
*/
private String menuBizId;
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelRoleMenuDto {
private Long id;
/**
* 租户ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:租户级)
*/
private String tenantBizId;
/**
* 项目ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:项目级)
*/
private String projectBizId;
/**
* 角色ID(业务id)
*/
private String roleBizId;
/**
* 角色ID(业务id)集合
*/
private List<String> roleBizIdList;
/**
* 菜单ID(业务id)
*/
private String menuBizId;
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelTenantMenuDto {
/**
* 租户菜单关系主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 菜单ID(业务id)
*/
private String menuBizId;
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelTenantRoleDto {
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 角色ID(业务id)
*/
private String roleBizId;
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelTenantUserDto {
/**
* 租户用户关系主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 用户ID(业务id)
*/
private String userBizId;
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelUserRoleDto {
private Long id;
/**
* 租户ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:租户级)
*/
private String tenantBizId;
/**
* 项目ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:项目级)
*/
private String projectBizId;
/**
* 用户ID(业务id)
*/
private String userBizId;
/**
* 角色ID(业务id)
*/
private String roleBizId;
}
package com.yd.user.service.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SysDictItemDto {
/**
* 字典数据项主键id
*/
private Long id;
/**
* 字典ID(字典类型表id)
*/
private String dictBizId;
/**
* 字典数据id(业务id)
*/
private String dictItemBizId;
}
......@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 菜单公共参数对象
*/
......@@ -22,6 +24,11 @@ public class SysMenuDto {
private String menuBizId;
/**
* 菜单唯一标识(业务ID)集合
*/
private List<String> menuBizIdList;
/**
* 父菜单ID
*/
private String parentBizId;
......@@ -32,7 +39,13 @@ public class SysMenuDto {
private String menuName;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
/**
* 查询是否排除当前菜单唯一标识数据,默认false不排除,true的话projectBizId必传
*/
@Builder.Default
private Boolean isExcludeMy = false;
}
......@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* 项目公共参数对象
*/
......@@ -25,6 +27,11 @@ public class SysProjectDto {
private String projectBizId;
/**
* 项目唯一标识(业务ID)集合
*/
private List<String> projectBizIdList;
/**
* 项目名称
*/
private String projectName;
......@@ -37,6 +44,7 @@ public class SysProjectDto {
/**
* 查询是否排除当前项目唯一标识数据,默认false不排除,true的话projectBizId必传
*/
@Builder.Default
private Boolean isExcludeMy = false;
}
......@@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
......@@ -22,6 +24,11 @@ public class SysRoleDto {
private String roleBizId;
/**
* 角色唯一标识(业务ID)集合
*/
private List<String> roleBizIdList;
/**
* 角色名称
*/
private String roleName;
......@@ -29,5 +36,6 @@ public class SysRoleDto {
/**
* 查询是否排除当前角色唯一标识数据,默认false不排除,true的话roleBizId必传
*/
@Builder.Default
private Boolean isExcludeMy = false;
}
......@@ -37,5 +37,6 @@ public class SysTenantDto {
/**
* 查询是否排除当前租户唯一标识数据,默认false不排除,true的话tenantBizId必传
*/
@Builder.Default
private Boolean isExcludeMy = false;
}
......@@ -52,5 +52,6 @@ public class SysUserDto {
/**
* 查询是否排除当前用户唯一标识数据,默认false不排除,true的话userBizId必传
*/
@Builder.Default
private Boolean isExcludeMy = false;
}
......@@ -31,10 +31,16 @@ public class SysDictItem implements Serializable {
private Long id;
/**
* 字典ID(字典类型表id)
* 字典数据id(业务id)
*/
@TableField("dict_item_biz_id")
private String dictItemBizId;
/**
* 字典ID(字典类型表id)(业务id)
*/
@TableField("dict_biz_id")
private Long dictBizId;
private String dictBizId;
/**
* 字典项标签(名称)
......
......@@ -55,12 +55,24 @@ public class SysMenu implements Serializable {
private Integer menuType;
/**
* 路由名称
*/
@TableField("route_name")
private String routeName;
/**
* 路由地址
*/
@TableField("path")
private String path;
/**
* 路由参数
*/
@TableField("query")
private String query;
/**
* 组件路径
*/
@TableField("component")
......@@ -91,7 +103,13 @@ public class SysMenu implements Serializable {
private Integer isVisible;
/**
* 权限标识(如:user:add)
* 菜单编码
*/
@TableField("menu_code")
private String menuCode;
/**
* 菜单权限标识(如:user:add)
*/
@TableField("permission")
private String permission;
......
......@@ -88,6 +88,24 @@ public class SysProject implements Serializable {
private String tenantBizId;
/**
* 是否内置项目(0-否 1-是 默认0-否 是内置项目,那么整个项目的所绑定的菜单权限都在中台系统展示内嵌外链iframe, 如果不是直接是访问项目卡片直接跳转到独立的前端项目链接获取权限菜单访问)
*/
@TableField("is_in")
private Integer isIn;
/**
* 项目图标地址
*/
@TableField("logo_url")
private String logoUrl;
/**
* 项目访问地址
*/
@TableField("project_url")
private String projectUrl;
/**
* 通用备注
*/
@TableField("remark")
......
......@@ -43,18 +43,24 @@ public class SysRole implements Serializable {
private String roleName;
/**
* 角色权限字符串(用于安全认证访问控制)
*/
@TableField("role_key")
private String roleKey;
/**
* 角色类型(1:超级管理员 2:管理员 3:普通用户)
*/
@TableField("role_type")
private Integer roleType;
/**
* 角色编码
*/
@TableField("role_code")
private String roleCode;
/**
* 角色权限字符
*/
@TableField("permission")
private String permission;
/**
* 描述
*/
@TableField("description")
......
package com.yd.user.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuListPageResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.dto.RelProjectMenuDto;
import com.yd.user.service.model.RelProjectMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
......@@ -13,4 +25,16 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IRelProjectMenuService extends IService<RelProjectMenu> {
IPage<ApiRelProjectMenuListPageResponse> page(Page<ApiRelProjectMenuListPageResponse> page,
ApiRelProjectMenuListPageRequest request);
List<ApiRelProjectMenuTreeListResponse> treeList(ApiRelProjectMenuTreeListRequest request);
RelProjectMenu queryOne(Long id);
List<RelProjectMenu> queryList(RelProjectMenuDto dto);
List<ApiRelProjectMenuImportQueryMenuTreeResponse> importQueryMenuTreeList(ApiRelProjectMenuImportQueryMenuTreeRequest request);
Boolean removeByProjectBizId(String projectBizId);
}
package com.yd.user.service.service;
import com.yd.user.service.dto.RelRoleMenuDto;
import com.yd.user.service.model.RelRoleMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 角色-菜单关系表(多对多关系) 服务类
......@@ -13,4 +16,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IRelRoleMenuService extends IService<RelRoleMenu> {
List<RelRoleMenu> queryList(RelRoleMenuDto dto);
Boolean removeByTenant(String tenantBizId,String roleBizId);
Boolean removeByProject(String projectBizId,String roleBizId);
}
......@@ -2,17 +2,18 @@ package com.yd.user.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleListPageRequest;
import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleListPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.dto.RelTenantMenuDto;
import com.yd.user.service.model.RelTenantMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.RelTenantRole;
import java.util.List;
/**
* <p>
......@@ -27,8 +28,13 @@ public interface IRelTenantMenuService extends IService<RelTenantMenu> {
IPage<ApiRelTenantMenuListPageResponse> page(Page<ApiRelTenantMenuListPageResponse> page,
ApiRelTenantMenuListPageRequest request);
IPage<ApiRelTenantMenuSelectPageResponse> selectProjectPage(Page<ApiRelTenantMenuSelectPageResponse> page,
ApiRelTenantMenuSelectPageRequest request);
List<ApiRelTenantMenuTreeListResponse> treeList(ApiRelTenantMenuTreeListRequest request);
RelTenantMenu queryOne(Long id);
List<RelTenantMenu> queryList(RelTenantMenuDto dto);
List<ApiRelTenantMenuImportQueryMenuTreeResponse> importQueryMenuTreeList(ApiRelTenantMenuImportQueryMenuTreeRequest request);
Boolean removeByTenantBizId(String tenantBizId);
}
......@@ -6,10 +6,13 @@ import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleListPageRequest;
import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleSelectPageRequest;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleListPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse;
import com.yd.user.service.dto.RelTenantRoleDto;
import com.yd.user.service.model.RelTenantProject;
import com.yd.user.service.model.RelTenantRole;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展) 服务类
......@@ -25,6 +28,8 @@ public interface IRelTenantRoleService extends IService<RelTenantRole> {
RelTenantRole queryOne(Long id);
List<RelTenantRole> queryList(RelTenantRoleDto dto);
IPage<ApiRelTenantRoleSelectPageResponse> selectProjectPage(Page<ApiRelTenantRoleSelectPageResponse> page,
ApiRelTenantRoleSelectPageRequest request);
}
......@@ -6,9 +6,14 @@ import com.yd.user.feign.request.reltenantuser.ApiRelTenantUserListPageRequest;
import com.yd.user.feign.request.reltenantuser.ApiRelTenantUserSelectPageRequest;
import com.yd.user.feign.response.reltenantuser.ApiRelTenantUserListPageResponse;
import com.yd.user.feign.response.reltenantuser.ApiRelTenantUserSelectPageResponse;
import com.yd.user.service.dto.RelTenantUserDto;
import com.yd.user.service.dto.SysMenuDto;
import com.yd.user.service.model.RelTenantRole;
import com.yd.user.service.model.RelTenantUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.SysMenu;
import java.util.List;
/**
* <p>
......@@ -27,4 +32,6 @@ public interface IRelTenantUserService extends IService<RelTenantUser> {
ApiRelTenantUserSelectPageRequest request);
RelTenantUser queryOne(Long id);
List<RelTenantUser> queryList(RelTenantUserDto dto);
}
package com.yd.user.service.service;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.reluserrole.ApiCandidateProjectUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiCandidateTenantUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiSelectedProjectUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiSelectedTenantUserRolePageRequest;
import com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse;
import com.yd.user.service.dto.RelUserRoleDto;
import com.yd.user.service.model.RelUserRole;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -19,9 +28,23 @@ public interface IRelUserRoleService extends IService<RelUserRole> {
void delRelTenantUserRole(String tenantBizId,String userBizId);
void delRelTenantUserRole(String tenantBizId,String userBizId,List<String> roleBizIdList);
void delRelProjectUserRole(String projectBizId,String userBizId);
List<ApiSelectedTenantUserRoleListResponse> selectedTenantUserRoleList(String tenantBizId, String userBizId);
void delRelProjectUserRole(String projectBizId,String userBizId,List<String> roleBizIdList);
IPage<ApiCandidateTenantUserRolePageResponse> candidateTenantUserRolePage(Page<ApiCandidateTenantUserRolePageResponse> page,
ApiCandidateTenantUserRolePageRequest request);
IPage<ApiSelectedTenantUserRolePageResponse> selectedTenantUserRolePage(Page<ApiSelectedTenantUserRolePageResponse> page,
ApiSelectedTenantUserRolePageRequest request);
IPage<ApiCandidateProjectUserRolePageResponse> candidateProjectUserRolePage(Page<ApiCandidateProjectUserRolePageResponse> page,
ApiCandidateProjectUserRolePageRequest request);
IPage<ApiSelectedProjectUserRolePageResponse> selectedProjectUserRolePage(Page<ApiSelectedProjectUserRolePageResponse> page,
ApiSelectedProjectUserRolePageRequest request);
List<ApiSelectedProjectUserRoleListResponse> selectedProjectUserRoleList(String projectBizId, String userBizId);
List<RelUserRole> queryList(RelUserRoleDto dto);
}
package com.yd.user.service.service;
import com.yd.user.service.dto.SysDictItemDto;
import com.yd.user.service.model.SysDictItem;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 字典数据表 服务类
......@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISysDictItemService extends IService<SysDictItem> {
List<SysDictItem> queryList(SysDictItemDto dto);
}
......@@ -2,6 +2,7 @@ package com.yd.user.service.service;
import com.yd.user.service.model.SysDict;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.SysMenu;
/**
* <p>
......@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISysDictService extends IService<SysDict> {
SysDict queryOneByType(String dictType);
}
package com.yd.user.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.sysmenu.ApiSysMenuPageRequest;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.dto.SysMenuDto;
import com.yd.user.service.dto.SysRoleDto;
import com.yd.user.service.model.SysMenu;
......@@ -21,4 +26,17 @@ public interface ISysMenuService extends IService<SysMenu> {
SysMenu queryOne(String menuBizId);
List<SysMenu> queryList(SysMenuDto dto);
List<SysMenu> queryAll();
List<ApiSysMenuTreeListResponse> treeList(String loginTenantBizId,
Boolean isAdmin,
String menuName,
List<String> projectBizIdList);
IPage<ApiSysMenuPageResponse> page(Page<ApiSysMenuPageResponse> page,
ApiSysMenuPageRequest request,
Boolean isAdmin,
List<String> projectBizIdList,
String loginTenantBizId);
}
......@@ -31,4 +31,6 @@ public interface ISysTenantService extends IService<SysTenant> {
SysTenant queryOne(String tenantBizId);
List<SysTenant> queryList(SysTenantDto dto);
List<SysTenant> queryList(List<String> tenantBizIdList);
}
......@@ -3,7 +3,9 @@ package com.yd.user.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.result.Result;
import com.yd.user.feign.request.sysuser.ApiScopePageRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.dto.SysRoleDto;
import com.yd.user.service.dto.SysUserDto;
......@@ -29,6 +31,11 @@ public interface ISysUserService extends IService<SysUser> {
Boolean isAdmin,
String loginTenantBizId);
IPage<ApiScopePageResponse> scopePage(Page<ApiScopePageResponse> page,
ApiScopePageRequest request,
Boolean isAdmin,
String loginTenantBizId);
SysUser queryOne(String userBizId);
SysUser queryOneByName(String userName);
......
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.RelDeptUser;
import com.yd.user.service.dao.RelDeptUserMapper;
import com.yd.user.service.service.IRelDeptUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelDeptUserServiceImpl extends ServiceImpl<RelDeptUserMapper, RelDeptUser> implements IRelDeptUserService {
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.RelGroupRole;
import com.yd.user.service.dao.RelGroupRoleMapper;
import com.yd.user.service.service.IRelGroupRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelGroupRoleServiceImpl extends ServiceImpl<RelGroupRoleMapper, RelGroupRole> implements IRelGroupRoleService {
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.RelGroupUser;
import com.yd.user.service.dao.RelGroupUserMapper;
import com.yd.user.service.service.IRelGroupUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelGroupUserServiceImpl extends ServiceImpl<RelGroupUserMapper, RelGroupUser> implements IRelGroupUserService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuListPageRequest;
import com.yd.user.feign.request.relprojectmenu.ApiRelProjectMenuTreeListRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuListPageResponse;
import com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.dto.RelProjectMenuDto;
import com.yd.user.service.model.RelProjectMenu;
import com.yd.user.service.dao.RelProjectMenuMapper;
import com.yd.user.service.service.IRelProjectMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
......@@ -15,6 +31,56 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelProjectMenuServiceImpl extends ServiceImpl<RelProjectMenuMapper, RelProjectMenu> implements IRelProjectMenuService {
/**
* 项目和菜单关系分页查询
* @param request
* @return
*/
@Override
public IPage<ApiRelProjectMenuListPageResponse> page(Page<ApiRelProjectMenuListPageResponse> page,
ApiRelProjectMenuListPageRequest request) {
return baseMapper.page(page,request);
}
@Override
public List<ApiRelProjectMenuTreeListResponse> treeList(ApiRelProjectMenuTreeListRequest request) {
return baseMapper.treeList(request);
}
/**
* 查询单个对象
* @param id
* @return
*/
@Override
public RelProjectMenu queryOne(Long id) {
return this.getById(id);
}
@Override
public List<RelProjectMenu> queryList(RelProjectMenuDto dto) {
List<RelProjectMenu> list = baseMapper.selectList(new LambdaQueryWrapper<RelProjectMenu>()
.eq(!Objects.isNull(dto.getId()),RelProjectMenu::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getProjectBizId()),RelProjectMenu::getProjectBizId,dto.getProjectBizId())
.eq(StringUtils.isNotBlank(dto.getMenuBizId()),RelProjectMenu::getMenuBizId,dto.getMenuBizId())
);
return list;
}
@Override
public List<ApiRelProjectMenuImportQueryMenuTreeResponse> importQueryMenuTreeList(ApiRelProjectMenuImportQueryMenuTreeRequest request) {
return baseMapper.importQueryMenuTreeList(request);
}
/**
* 根据项目id删除关系
*/
@Override
public Boolean removeByProjectBizId(String projectBizId) {
return this.remove(new LambdaQueryWrapper<RelProjectMenu>().eq(RelProjectMenu::getProjectBizId,projectBizId));
}
}
......@@ -10,6 +10,7 @@ import com.yd.user.service.model.RelProjectRole;
import com.yd.user.service.dao.RelProjectRoleMapper;
import com.yd.user.service.service.IRelProjectRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelProjectRoleServiceImpl extends ServiceImpl<RelProjectRoleMapper, RelProjectRole> implements IRelProjectRoleService {
/**
......
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.RelProjectUserGroup;
import com.yd.user.service.dao.RelProjectUserGroupMapper;
import com.yd.user.service.service.IRelProjectUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelProjectUserGroupServiceImpl extends ServiceImpl<RelProjectUserGroupMapper, RelProjectUserGroup> implements IRelProjectUserGroupService {
}
......@@ -10,6 +10,7 @@ import com.yd.user.service.model.RelProjectUser;
import com.yd.user.service.dao.RelProjectUserMapper;
import com.yd.user.service.service.IRelProjectUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -21,6 +22,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelProjectUserServiceImpl extends ServiceImpl<RelProjectUserMapper, RelProjectUser> implements IRelProjectUserService {
/**
......
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.user.service.dto.RelRoleMenuDto;
import com.yd.user.service.model.RelRoleMenu;
import com.yd.user.service.dao.RelRoleMenuMapper;
import com.yd.user.service.model.RelTenantUser;
import com.yd.user.service.service.IRelRoleMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
* <p>
......@@ -15,6 +24,40 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelRoleMenuServiceImpl extends ServiceImpl<RelRoleMenuMapper, RelRoleMenu> implements IRelRoleMenuService {
/**
* 根据条件查询角色菜单列表
* @param dto
* @return
*/
@Override
public List<RelRoleMenu> queryList(RelRoleMenuDto dto) {
List<RelRoleMenu> list = baseMapper.selectList(new LambdaQueryWrapper<RelRoleMenu>()
.eq(!Objects.isNull(dto.getId()),RelRoleMenu::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),RelRoleMenu::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getProjectBizId()),RelRoleMenu::getProjectBizId,dto.getProjectBizId())
.eq(StringUtils.isNotBlank(dto.getRoleBizId()),RelRoleMenu::getRoleBizId,dto.getRoleBizId())
.eq(StringUtils.isNotBlank(dto.getMenuBizId()),RelRoleMenu::getMenuBizId,dto.getMenuBizId())
.in(!CollectionUtils.isEmpty(dto.getRoleBizIdList()),RelRoleMenu::getRoleBizId,dto.getRoleBizIdList())
);
return list;
}
@Override
public Boolean removeByTenant(String tenantBizId, String roleBizId) {
return this.remove(new LambdaQueryWrapper<RelRoleMenu>()
.eq(RelRoleMenu::getTenantBizId,tenantBizId)
.eq(RelRoleMenu::getRoleBizId,roleBizId)
);
}
@Override
public Boolean removeByProject(String projectBizId, String roleBizId) {
return this.remove(new LambdaQueryWrapper<RelRoleMenu>()
.eq(RelRoleMenu::getProjectBizId,projectBizId)
.eq(RelRoleMenu::getRoleBizId,roleBizId)
);
}
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.RelTenantDept;
import com.yd.user.service.dao.RelTenantDeptMapper;
import com.yd.user.service.service.IRelTenantDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelTenantDeptServiceImpl extends ServiceImpl<RelTenantDeptMapper, RelTenantDept> implements IRelTenantDeptService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuSelectPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.dto.RelTenantMenuDto;
import com.yd.user.service.model.RelTenantMenu;
import com.yd.user.service.dao.RelTenantMenuMapper;
import com.yd.user.service.service.IRelTenantMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 租户-菜单关系表(正常来说一对多,加关系表方便扩展) 服务实现类
......@@ -21,6 +30,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelTenantMenuServiceImpl extends ServiceImpl<RelTenantMenuMapper, RelTenantMenu> implements IRelTenantMenuService {
/**
......@@ -34,15 +44,9 @@ public class RelTenantMenuServiceImpl extends ServiceImpl<RelTenantMenuMapper, R
return baseMapper.page(page,request);
}
/**
* 导入-选择菜单分页查询(查询当前租户级(当前所属租户绑定的菜单)或者系统级(全局菜单在任何地方都适用导入绑定)的菜单表数据)
* @param request
* @return
*/
@Override
public IPage<ApiRelTenantMenuSelectPageResponse> selectProjectPage(Page<ApiRelTenantMenuSelectPageResponse> page,
ApiRelTenantMenuSelectPageRequest request) {
return baseMapper.selectProjectPage(page,request);
public List<ApiRelTenantMenuTreeListResponse> treeList(ApiRelTenantMenuTreeListRequest request) {
return baseMapper.treeList(request);
}
/**
......@@ -54,4 +58,27 @@ public class RelTenantMenuServiceImpl extends ServiceImpl<RelTenantMenuMapper, R
public RelTenantMenu queryOne(Long id) {
return this.getById(id);
}
@Override
public List<RelTenantMenu> queryList(RelTenantMenuDto dto) {
List<RelTenantMenu> list = baseMapper.selectList(new LambdaQueryWrapper<RelTenantMenu>()
.eq(!Objects.isNull(dto.getId()),RelTenantMenu::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),RelTenantMenu::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getMenuBizId()),RelTenantMenu::getMenuBizId,dto.getMenuBizId())
);
return list;
}
@Override
public List<ApiRelTenantMenuImportQueryMenuTreeResponse> importQueryMenuTreeList(ApiRelTenantMenuImportQueryMenuTreeRequest request) {
return baseMapper.importQueryMenuTreeList(request);
}
/**
* 根据租户id删除关系
*/
@Override
public Boolean removeByTenantBizId(String tenantBizId) {
return this.remove(new LambdaQueryWrapper<RelTenantMenu>().eq(RelTenantMenu::getTenantBizId,tenantBizId));
}
}
......@@ -14,6 +14,7 @@ import com.yd.user.service.model.SysProject;
import com.yd.user.service.service.IRelTenantProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -28,6 +29,7 @@ import java.util.Objects;
* @since 2025-07-31
*/
@Service
@Primary
public class RelTenantProjectServiceImpl extends ServiceImpl<RelTenantProjectMapper, RelTenantProject> implements IRelTenantProjectService {
/**
......
......@@ -7,12 +7,19 @@ import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleListPageRequest;
import com.yd.user.feign.request.reltenantrole.ApiRelTenantRoleSelectPageRequest;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleListPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse;
import com.yd.user.service.dto.RelTenantRoleDto;
import com.yd.user.service.model.RelTenantProject;
import com.yd.user.service.model.RelTenantRole;
import com.yd.user.service.dao.RelTenantRoleMapper;
import com.yd.user.service.service.IRelTenantRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 租户-角色关系表(正常来说一对多,加关系表方便扩展) 服务实现类
......@@ -22,6 +29,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelTenantRoleServiceImpl extends ServiceImpl<RelTenantRoleMapper, RelTenantRole> implements IRelTenantRoleService {
/**
......@@ -45,6 +53,21 @@ public class RelTenantRoleServiceImpl extends ServiceImpl<RelTenantRoleMapper, R
}
/**
* 查询租户角色关系列表
* @param dto
* @return
*/
@Override
public List<RelTenantRole> queryList(RelTenantRoleDto dto) {
List<RelTenantRole> list = baseMapper.selectList(new LambdaQueryWrapper<RelTenantRole>()
.eq(!Objects.isNull(dto.getId()),RelTenantRole::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),RelTenantRole::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getRoleBizId()),RelTenantRole::getRoleBizId,dto.getRoleBizId())
);
return list;
}
/**
* 导入-选择角色分页查询
* @param request
* @return
......
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.RelTenantUserGroup;
import com.yd.user.service.dao.RelTenantUserGroupMapper;
import com.yd.user.service.service.IRelTenantUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelTenantUserGroupServiceImpl extends ServiceImpl<RelTenantUserGroupMapper, RelTenantUserGroup> implements IRelTenantUserGroupService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.reltenantuser.ApiRelTenantUserListPageRequest;
import com.yd.user.feign.request.reltenantuser.ApiRelTenantUserSelectPageRequest;
import com.yd.user.feign.response.reltenantuser.ApiRelTenantUserListPageResponse;
import com.yd.user.feign.response.reltenantuser.ApiRelTenantUserSelectPageResponse;
import com.yd.user.service.dto.RelTenantUserDto;
import com.yd.user.service.model.RelTenantProject;
import com.yd.user.service.model.RelTenantUser;
import com.yd.user.service.dao.RelTenantUserMapper;
import com.yd.user.service.service.IRelTenantUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 租户-用户关系表(多对多关系) 服务实现类
......@@ -21,6 +29,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class RelTenantUserServiceImpl extends ServiceImpl<RelTenantUserMapper, RelTenantUser> implements IRelTenantUserService {
/**
......@@ -54,4 +63,19 @@ public class RelTenantUserServiceImpl extends ServiceImpl<RelTenantUserMapper, R
public RelTenantUser queryOne(Long id) {
return this.getById(id);
}
/**
* 根据条件查询租户用户关系列表信息
* @param dto
* @return
*/
@Override
public List<RelTenantUser> queryList(RelTenantUserDto dto) {
List<RelTenantUser> list = baseMapper.selectList(new LambdaQueryWrapper<RelTenantUser>()
.eq(!Objects.isNull(dto.getId()),RelTenantUser::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),RelTenantUser::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getUserBizId()),RelTenantUser::getUserBizId,dto.getUserBizId())
);
return list;
}
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.reluserrole.ApiCandidateProjectUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiCandidateTenantUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiSelectedProjectUserRolePageRequest;
import com.yd.user.feign.request.reluserrole.ApiSelectedTenantUserRolePageRequest;
import com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse;
import com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse;
import com.yd.user.service.dto.RelUserRoleDto;
import com.yd.user.service.model.RelUserRole;
import com.yd.user.service.dao.RelUserRoleMapper;
import com.yd.user.service.service.IRelUserRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
......@@ -20,6 +32,7 @@ import java.util.List;
* @since 2025-07-31
*/
@Service
@Primary
public class RelUserRoleServiceImpl extends ServiceImpl<RelUserRoleMapper, RelUserRole> implements IRelUserRoleService {
/**
......@@ -36,6 +49,22 @@ public class RelUserRoleServiceImpl extends ServiceImpl<RelUserRoleMapper, RelUs
}
/**
* 删除租户用户角色关系
* @param tenantBizId
* @param userBizId
*/
@Override
public void delRelTenantUserRole(String tenantBizId,
String userBizId,
List<String> roleBizIdList) {
this.remove(new LambdaQueryWrapper<RelUserRole>()
.eq(RelUserRole::getTenantBizId,tenantBizId)
.eq(RelUserRole::getUserBizId,userBizId)
.in(RelUserRole::getRoleBizId,roleBizIdList)
);
}
/**
* 删除项目用户角色关系
* @param projectBizId
* @param userBizId
......@@ -49,20 +78,59 @@ public class RelUserRoleServiceImpl extends ServiceImpl<RelUserRoleMapper, RelUs
}
/**
* 租户管理-用户配置-权限配置-查询选中的角色列表
* @return
* 删除项目用户角色关系
* @param projectBizId
* @param userBizId
*/
@Override
public List<ApiSelectedTenantUserRoleListResponse> selectedTenantUserRoleList(String tenantBizId, String userBizId) {
return baseMapper.selectedTenantUserRoleList(tenantBizId,userBizId);
public void delRelProjectUserRole(String projectBizId,
String userBizId,
List<String> roleBizIdList) {
this.remove(new LambdaQueryWrapper<RelUserRole>()
.eq(RelUserRole::getProjectBizId,projectBizId)
.eq(RelUserRole::getUserBizId,userBizId)
.in(RelUserRole::getRoleBizId,roleBizIdList)
);
}
@Override
public IPage<ApiCandidateTenantUserRolePageResponse> candidateTenantUserRolePage(Page<ApiCandidateTenantUserRolePageResponse> page,
ApiCandidateTenantUserRolePageRequest request) {
return baseMapper.candidateTenantUserRolePage(page,request);
}
@Override
public IPage<ApiSelectedTenantUserRolePageResponse> selectedTenantUserRolePage(Page<ApiSelectedTenantUserRolePageResponse> page,
ApiSelectedTenantUserRolePageRequest request) {
return baseMapper.selectedTenantUserRolePage(page,request);
}
@Override
public IPage<ApiCandidateProjectUserRolePageResponse> candidateProjectUserRolePage(Page<ApiCandidateProjectUserRolePageResponse> page,
ApiCandidateProjectUserRolePageRequest request) {
return baseMapper.candidateProjectUserRolePage(page,request);
}
@Override
public IPage<ApiSelectedProjectUserRolePageResponse> selectedProjectUserRolePage(Page<ApiSelectedProjectUserRolePageResponse> page,
ApiSelectedProjectUserRolePageRequest request) {
return baseMapper.selectedProjectUserRolePage(page,request);
}
/**
* 项目管理-用户配置-权限配置-查询选中的角色列表
* 根据条件查询用户角色列表
* @param dto
* @return
*/
@Override
public List<ApiSelectedProjectUserRoleListResponse> selectedProjectUserRoleList(String projectBizId, String userBizId) {
return baseMapper.selectedProjectUserRoleList(projectBizId,userBizId);
public List<RelUserRole> queryList(RelUserRoleDto dto) {
List<RelUserRole> list = baseMapper.selectList(new LambdaQueryWrapper<RelUserRole>()
.eq(!Objects.isNull(dto.getId()),RelUserRole::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),RelUserRole::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getProjectBizId()),RelUserRole::getProjectBizId,dto.getProjectBizId())
.eq(StringUtils.isNotBlank(dto.getUserBizId()),RelUserRole::getUserBizId,dto.getUserBizId())
.eq(StringUtils.isNotBlank(dto.getRoleBizId()),RelUserRole::getRoleBizId,dto.getRoleBizId())
);
return list;
}
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.SysDept;
import com.yd.user.service.dao.SysDeptMapper;
import com.yd.user.service.service.ISysDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements ISysDeptService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.user.service.dto.SysDictItemDto;
import com.yd.user.service.model.RelTenantUser;
import com.yd.user.service.model.SysDictItem;
import com.yd.user.service.dao.SysDictItemMapper;
import com.yd.user.service.service.ISysDictItemService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 字典数据表 服务实现类
......@@ -15,6 +23,21 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements ISysDictItemService {
/**
* 根据条件查询列表
* @param dto
* @return
*/
@Override
public List<SysDictItem> queryList(SysDictItemDto dto) {
List<SysDictItem> list = baseMapper.selectList(new LambdaQueryWrapper<SysDictItem>()
.eq(!Objects.isNull(dto.getId()),SysDictItem::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getDictBizId()),SysDictItem::getDictBizId,dto.getDictBizId())
.eq(StringUtils.isNotBlank(dto.getDictItemBizId()),SysDictItem::getDictItemBizId,dto.getDictItemBizId())
);
return list;
}
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yd.user.service.model.SysDict;
import com.yd.user.service.dao.SysDictMapper;
import com.yd.user.service.service.ISysDictService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +17,16 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements ISysDictService {
/**
* 根据字典类型查询单个对象
* @param dictType
* @return
*/
@Override
public SysDict queryOneByType(String dictType) {
return this.getOne(new LambdaQueryWrapper<SysDict>().eq(SysDict::getDictType,dictType));
}
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.SysLoginLog;
import com.yd.user.service.dao.SysLoginLogMapper;
import com.yd.user.service.service.ISysLoginLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements ISysLoginLogService {
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.sysmenu.ApiSysMenuPageRequest;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.dto.SysMenuDto;
import com.yd.user.service.model.SysMenu;
import com.yd.user.service.dao.SysMenuMapper;
......@@ -8,7 +13,9 @@ import com.yd.user.service.model.SysRole;
import com.yd.user.service.service.ISysMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -22,6 +29,7 @@ import java.util.Objects;
* @since 2025-07-31
*/
@Service
@Primary
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements ISysMenuService {
/**
......@@ -45,8 +53,54 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
.eq(!Objects.isNull(dto.getId()),SysMenu::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getMenuBizId()) && !dto.getIsExcludeMy(),SysMenu::getMenuBizId,dto.getMenuBizId())
.eq(StringUtils.isNotBlank(dto.getMenuName()),SysMenu::getMenuName,dto.getMenuName())
.eq(!Objects.isNull(dto.getMenuType()),SysMenu::getMenuType,dto.getMenuType())
.in(!CollectionUtils.isEmpty(dto.getMenuBizIdList()),SysMenu::getMenuBizId,dto.getMenuBizIdList())
.ne(dto.getIsExcludeMy(),SysMenu::getMenuBizId,dto.getMenuBizId())
);
return list;
}
/**
* 查询所有
* @return
*/
@Override
public List<SysMenu> queryAll() {
return this.list();
}
/**
* 条件搜索构建菜单树的数据
* @param loginTenantBizId
* @param isAdmin
* @param menuName
* @param projectBizIdList
* @return
*/
@Override
public List<ApiSysMenuTreeListResponse> treeList(String loginTenantBizId,
Boolean isAdmin,
String menuName,
List<String> projectBizIdList) {
return baseMapper.treeList(loginTenantBizId,isAdmin,menuName,projectBizIdList);
}
/**
* 菜单分页查询
* @param page
* @param request
* @param isAdmin
* @param projectBizIdList
* @param loginTenantBizId
* @return
*/
@Override
public IPage<ApiSysMenuPageResponse> page(Page<ApiSysMenuPageResponse> page,
ApiSysMenuPageRequest request,
Boolean isAdmin,
List<String> projectBizIdList,
String loginTenantBizId) {
return baseMapper.page(page,request,isAdmin,projectBizIdList,loginTenantBizId);
}
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.SysOperLog;
import com.yd.user.service.dao.SysOperLogMapper;
import com.yd.user.service.service.ISysOperLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog> implements ISysOperLogService {
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.SysPost;
import com.yd.user.service.dao.SysPostMapper;
import com.yd.user.service.service.ISysPostService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysPostServiceImpl extends ServiceImpl<SysPostMapper, SysPost> implements ISysPostService {
}
......@@ -12,7 +12,9 @@ import com.yd.user.service.model.SysTenant;
import com.yd.user.service.service.ISysProjectService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -26,6 +28,7 @@ import java.util.Objects;
* @since 2025-07-31
*/
@Service
@Primary
public class SysProjectServiceImpl extends ServiceImpl<SysProjectMapper, SysProject> implements ISysProjectService {
/**
......@@ -63,6 +66,7 @@ public class SysProjectServiceImpl extends ServiceImpl<SysProjectMapper, SysProj
.eq(StringUtils.isNotBlank(dto.getProjectBizId()) && !dto.getIsExcludeMy(),SysProject::getProjectBizId,dto.getProjectBizId())
.eq(StringUtils.isNotBlank(dto.getProjectName()),SysProject::getProjectName,dto.getProjectName())
.eq(!Objects.isNull(dto.getStatus()),SysProject::getStatus,dto.getStatus())
.in(!CollectionUtils.isEmpty(dto.getProjectBizIdList()),SysProject::getProjectBizId,dto.getProjectBizIdList())
.ne(dto.getIsExcludeMy(),SysProject::getProjectBizId,dto.getProjectBizId())
);
return list;
......
......@@ -11,7 +11,10 @@ import com.yd.user.service.dao.SysRoleMapper;
import com.yd.user.service.service.ISysRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
......@@ -24,6 +27,7 @@ import java.util.Objects;
* @since 2025-07-31
*/
@Service
@Primary
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements ISysRoleService {
/**
......@@ -61,6 +65,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
.eq(!Objects.isNull(dto.getId()),SysRole::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getRoleBizId()) && !dto.getIsExcludeMy(),SysRole::getRoleBizId,dto.getRoleBizId())
.eq(StringUtils.isNotBlank(dto.getRoleName()),SysRole::getRoleName,dto.getRoleName())
.in(!CollectionUtils.isEmpty(dto.getRoleBizIdList()),SysRole::getRoleBizId,dto.getRoleBizIdList())
.ne(dto.getIsExcludeMy(),SysRole::getRoleBizId,dto.getRoleBizId())
);
return list;
......
......@@ -2,6 +2,7 @@ package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.systenant.ApiSysTenantPageRequest;
......@@ -12,6 +13,7 @@ import com.yd.user.service.dao.SysTenantMapper;
import com.yd.user.service.service.ISysTenantService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -26,6 +28,7 @@ import java.util.Objects;
* @since 2025-07-31
*/
@Service
@Primary
public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant> implements ISysTenantService {
/**
......@@ -69,4 +72,15 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
return list;
}
/**
* 根据租户业务id集合查询列表信息
* @param tenantBizIdList
* @return
*/
@Override
public List<SysTenant> queryList(List<String> tenantBizIdList) {
return baseMapper.selectList(new LambdaQueryWrapper<SysTenant>()
.in(!CollectionUtils.isEmpty(tenantBizIdList),SysTenant::getTenantBizId,tenantBizIdList));
}
}
......@@ -4,6 +4,7 @@ import com.yd.user.service.model.SysUserGroup;
import com.yd.user.service.dao.SysUserGroupMapper;
import com.yd.user.service.service.ISysUserGroupService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
/**
......@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
* @since 2025-07-31
*/
@Service
@Primary
public class SysUserGroupServiceImpl extends ServiceImpl<SysUserGroupMapper, SysUserGroup> implements ISysUserGroupService {
}
......@@ -6,7 +6,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.auth.core.dto.AuthUserDto;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.user.feign.request.sysuser.ApiScopePageRequest;
import com.yd.user.feign.request.sysuser.ApiSysUserPageRequest;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
import com.yd.user.service.dto.SysUserDto;
import com.yd.user.service.model.SysTenant;
......@@ -16,6 +18,7 @@ import com.yd.user.service.service.ISysUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Primary;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Service;
......@@ -31,6 +34,7 @@ import java.util.Objects;
* @since 2025-07-31
*/
@Service
@Primary
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
@Override
......@@ -42,6 +46,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
}
@Override
public IPage<ApiScopePageResponse> scopePage(Page<ApiScopePageResponse> page,
ApiScopePageRequest request,
Boolean isAdmin,
String loginTenantBizId) {
return baseMapper.scopePage(page,request,isAdmin,loginTenantBizId);
}
@Override
public SysUser queryOne(String userBizId) {
return this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserBizId,userBizId));
}
......
......@@ -2,4 +2,52 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.user.service.dao.RelProjectMenuMapper">
<select id="page" resultType="com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuListPageResponse">
select rpm.id,rpm.project_biz_id,sm.id as menuId,
sm.menu_biz_id,sm.parent_biz_id,sm.parent_biz_id as parentId,
sm.menu_name,sm.menu_type,sm.icon,sm.scope
from rel_project_menu rpm
inner join sys_menu sm on sm.menu_biz_id = rpm.menu_biz_id and sm.is_deleted = 0
<where>
and rpm.project_biz_id = #{request.projectBizId}
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and rpm.is_deleted = 0
</where>
</select>
<select id="importQueryMenuTreeList"
resultType="com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuImportQueryMenuTreeResponse">
select
*
from sys_menu sm
<where>
and ((sm.project_biz_id = #{request.projectBizId} and sm.scope = 3) or sm.scope = 1)
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and sm.is_deleted = 0
</where>
</select>
<select id="treeList"
resultType="com.yd.user.feign.response.relprojectmenu.ApiRelProjectMenuTreeListResponse">
select rpm.id,rpm.project_biz_id,sm.id as menuId,
sm.menu_biz_id,sm.parent_biz_id,
sm.menu_name,sm.menu_type,sm.icon,sm.scope
from rel_project_menu rpm
inner join sys_menu sm on sm.menu_biz_id = rpm.menu_biz_id and sm.is_deleted = 0
<where>
and rpm.project_biz_id = #{request.projectBizId}
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and rpm.is_deleted = 0
</where>
</select>
</mapper>
......@@ -7,21 +7,21 @@
rpr.id,rpr.project_biz_id,rpr.role_biz_id,
sr.role_name,sr.scope,sr.role_type
from rel_project_role rpr
inner join sys_role sr on sr.role_biz_id = rpr.role_biz_id
inner join sys_role sr on sr.role_biz_id = rpr.role_biz_id and sr.is_deleted = 0
<where>
and rpr.project_biz_id = #{request.projectBizId}
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
and sr.is_deleted = 0
and rpr.is_deleted = 0
</where>
</select>
<select id="selectProjectPage"
resultType="com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse">
select
sr.id.sr.role_biz_id,sr.role_name,sr.role_type,sr.status,sr.scope
sr.id,sr.role_biz_id,sr.role_name,sr.role_type,sr.status,sr.scope
from sys_role sr
<where>
......@@ -31,7 +31,8 @@
</if>
and sr.is_deleted = 0
and sr.role_biz_id
not in( select rpr.role_biz_id from rel_project_role rpr where rpr.project_biz_id = #{request.projectBizId})
not in( select rpr.role_biz_id from rel_project_role rpr
where rpr.project_biz_id = #{request.projectBizId} and rpr.is_deleted = 0)
</where>
</select>
</mapper>
......@@ -7,7 +7,7 @@
rpu.id,rpu.user_biz_id,
su.user_name,su.real_name,su.nick_name,su.email,su.mobile,su.gender
from rel_project_user rpu
inner join sys_user su on su.user_biz_id = rpu.user_biz_id
inner join sys_user su on su.user_biz_id = rpu.user_biz_id and su.is_deleted = 0
<where>
and rpu.project_biz_id = #{request.projectBizId}
......@@ -24,7 +24,7 @@
and su.mobile like concat('%', #{request.mobile}, '%')
</if>
and su.is_deleted = 0
and rpu.is_deleted = 0
</where>
</select>
......@@ -51,7 +51,9 @@
and su.is_deleted = 0
and su.user_biz_id
not in( select rpu.user_biz_id from rel_project_user rpu where rpu.project_biz_id = #{request.projectBizId})
not in( select rpu.user_biz_id from rel_project_user rpu
where rpu.project_biz_id = #{request.projectBizId} and rpu.is_deleted = 0)
</where>
</select>
</mapper>
......@@ -3,10 +3,50 @@
<mapper namespace="com.yd.user.service.dao.RelTenantMenuMapper">
<select id="page" resultType="com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse">
select rtm.id,rtm.tenant_biz_id,sm.id as menuId,
sm.menu_biz_id,sm.parent_biz_id,sm.parent_biz_id as parentId,
sm.menu_name,sm.menu_type,sm.icon,sm.scope
from rel_tenant_menu rtm
inner join sys_menu sm on sm.menu_biz_id = rtm.menu_biz_id and sm.is_deleted = 0
<where>
and rtm.tenant_biz_id = #{request.tenantBizId}
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and rtm.is_deleted = 0
</where>
</select>
<select id="selectProjectPage"
resultType="com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuSelectPageResponse">
<select id="importQueryMenuTreeList"
resultType="com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse">
select
*
from sys_menu sm
<where>
and ((sm.tenant_biz_id = #{request.tenantBizId} and sm.scope = 2) or sm.scope = 1)
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and sm.is_deleted = 0
</where>
</select>
<select id="treeList"
resultType="com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse">
select rtm.id,rtm.tenant_biz_id,sm.id as menuId,
sm.menu_biz_id,sm.parent_biz_id,
sm.menu_name,sm.menu_type,sm.icon,sm.scope
from rel_tenant_menu rtm
inner join sys_menu sm on sm.menu_biz_id = rtm.menu_biz_id and sm.is_deleted = 0
<where>
and rtm.tenant_biz_id = #{request.tenantBizId}
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and rtm.is_deleted = 0
</where>
</select>
</mapper>
......@@ -16,6 +16,7 @@
and sp.project_name like concat('%', #{request.projectName}, '%')
</if>
and rtp.is_deleted = 0
</where>
</select>
......@@ -36,7 +37,7 @@
</if>
and sp.is_deleted = 0
and sp.project_biz_id
not in( select rtp.project_biz_id from rel_tenant_project rtp where rtp.tenant_biz_id = #{request.tenantBizId})
not in( select rtp.project_biz_id from rel_tenant_project rtp where rtp.tenant_biz_id = #{request.tenantBizId} and rtp.is_deleted = 0)
</where>
</select>
......
......@@ -7,21 +7,21 @@
rtr.id,rtr.tenant_biz_id,rtr.role_biz_id,
sr.role_name,sr.scope,sr.role_type
from rel_tenant_role rtr
inner join sys_role sr on sr.role_biz_id = rtr.role_biz_id
inner join sys_role sr on sr.role_biz_id = rtr.role_biz_id and sr.is_deleted = 0
<where>
and rtr.tenant_biz_id = #{request.tenantBizId}
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
and sr.is_deleted = 0
and rtr.is_deleted = 0
</where>
</select>
<select id="selectProjectPage"
resultType="com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse">
select
sr.id.sr.role_biz_id,sr.role_name,sr.role_type,sr.status,sr.scope
sr.id,sr.role_biz_id,sr.role_name,sr.role_type,sr.status,sr.scope
from sys_role sr
<where>
......@@ -31,7 +31,8 @@
</if>
and sr.is_deleted = 0
and sr.role_biz_id
not in( select rtr.role_biz_id from rel_tenant_role rtr where rtr.tenant_biz_id = #{request.tenantBizId})
not in( select rtr.role_biz_id from rel_tenant_role rtr
where rtr.tenant_biz_id = #{request.tenantBizId} and rtr.is_deleted = 0)
</where>
</select>
......
......@@ -7,7 +7,7 @@
rtu.id,rtu.user_biz_id,
su.user_name,su.real_name,su.nick_name,su.email,su.mobile,su.gender
from rel_tenant_user rtu
inner join sys_user su on su.user_biz_id = rtu.user_biz_id
inner join sys_user su on su.user_biz_id = rtu.user_biz_id and su.is_deleted = 0
<where>
and rtu.tenant_biz_id = #{request.tenantBizId}
......@@ -24,7 +24,7 @@
and su.mobile like concat('%', #{request.mobile}, '%')
</if>
and su.is_deleted = 0
and rtu.is_deleted = 0
</where>
</select>
......@@ -51,7 +51,8 @@
and su.is_deleted = 0
and su.user_biz_id
not in( select rtu.user_biz_id from rel_tenant_user rtu where rtu.tenant_biz_id = #{request.tenantBizId})
not in( select rtu.user_biz_id from rel_tenant_user rtu
where rtu.tenant_biz_id = #{request.tenantBizId} and rtu.is_deleted = 0)
</where>
</select>
</mapper>
......@@ -2,29 +2,91 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.user.service.dao.RelUserRoleMapper">
<select id="selectedTenantUserRoleList"
resultType="com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRoleListResponse">
<select id="candidateTenantUserRolePage"
resultType="com.yd.user.feign.response.reluserrole.ApiCandidateTenantUserRolePageResponse">
select
rur.id,rur.tenant_biz_id,rur.project_biz_id,rur.user_biz_id,rur.role_biz_id,sr.role_name
rtr.*,sr.role_name,sr.role_type,sr.scope
from rel_tenant_role rtr
left join sys_role sr on sr.role_biz_id = rtr.role_biz_id and sr.is_deleted = 0
<where>
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
and rtr.tenant_biz_id = #{request.tenantBizId}
and rtr.is_deleted = 0
and rtr.role_biz_id
not in(select rur.role_biz_id from rel_user_role rur
where
rur.tenant_biz_id = #{request.tenantBizId}
and rur.user_biz_id = #{request.userBizId}
and rur.is_deleted = 0
)
</where>
</select>
<select id="selectedTenantUserRolePage"
resultType="com.yd.user.feign.response.reluserrole.ApiSelectedTenantUserRolePageResponse">
select
rur.*,sr.role_name,sr.role_type,sr.scope
from rel_user_role rur
inner join sys_role sr on sr.role_biz_id = rur.role_biz_id and sr.is_deleted = 0
left join sys_role sr on sr.role_biz_id = rur.role_biz_id and sr.is_deleted = 0
<where>
and rur.tenant_biz_id = #{tenantBizId}
and rur.user_biz_id = #{userBizId}
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
and rur.tenant_biz_id = #{request.tenantBizId}
and rur.user_biz_id = #{request.userBizId}
and rur.is_deleted = 0
</where>
</select>
<select id="selectedProjectUserRoleList"
resultType="com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRoleListResponse">
<select id="candidateProjectUserRolePage"
resultType="com.yd.user.feign.response.reluserrole.ApiCandidateProjectUserRolePageResponse">
select
rur.id,rur.tenant_biz_id,rur.project_biz_id,rur.user_biz_id,rur.role_biz_id,sr.role_name
rpr.*,sr.role_name,sr.role_type,sr.scope
from rel_project_role rpr
left join sys_role sr on sr.role_biz_id = rpr.role_biz_id and sr.is_deleted = 0
<where>
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
and rpr.project_biz_id = #{request.projectBizId}
and rpr.is_deleted = 0
and rpr.role_biz_id
not in(select rur.role_biz_id from rel_user_role rur
where
rur.project_biz_id = #{request.projectBizId}
and rur.user_biz_id = #{request.userBizId}
and rur.is_deleted = 0
)
</where>
</select>
<select id="selectedProjectUserRolePage"
resultType="com.yd.user.feign.response.reluserrole.ApiSelectedProjectUserRolePageResponse">
select
rur.*,sr.role_name,sr.role_type,sr.scope
from rel_user_role rur
inner join sys_role sr on sr.role_biz_id = rur.role_biz_id and sr.is_deleted = 0
left join sys_role sr on sr.role_biz_id = rur.role_biz_id and sr.is_deleted = 0
<where>
and rur.project_biz_id = #{projectBizId}
and rur.user_biz_id = #{userBizId}
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
and rur.project_biz_id = #{request.projectBizId}
and rur.user_biz_id = #{request.userBizId}
and rur.is_deleted = 0
</where>
</select>
</mapper>
......@@ -2,4 +2,61 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.user.service.dao.SysMenuMapper">
<select id="treeList" resultType="com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse">
select sm.*,
st.tenant_name,sp.project_name
from sys_menu sm
left join sys_tenant st on st.tenant_biz_id = sm.tenant_biz_id and st.is_deleted = 0
left join sys_project sp on sp.project_biz_id = sm.project_biz_id and sp.is_deleted = 0
<where>
<if test="!isAdmin">
and ((sm.scope = 2 and sm.tenant_biz_id = #{loginTenantBizId})
<if test="projectBizIdList.size > 0 and projectBizIdList != null">
or (sm.scope = 3 and sm.project_biz_id in
<foreach collection="projectBizIdList" item="item" index="index" open="(" separator=","
close=")">
#{item}
</foreach>
)
</if>
or (sm.scope = 1)
)
</if>
<if test="menuName != null and menuName != ''">
and sm.menu_name like concat('%', #{menuName}, '%')
</if>
and sm.is_deleted = 0
</where>
</select>
<select id="page" resultType="com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse">
select sm.*,
st.tenant_name,sp.project_name,sm.parent_biz_id as parentId
from sys_menu sm
left join sys_tenant st on st.tenant_biz_id = sm.tenant_biz_id and st.is_deleted = 0
left join sys_project sp on sp.project_biz_id = sm.project_biz_id and sp.is_deleted = 0
<where>
<if test="!isAdmin">
and ((sm.scope = 2 and sm.tenant_biz_id = #{loginTenantBizId})
<if test="projectBizIdList.size > 0 and projectBizIdList != null">
or (sm.scope = 3 and sm.project_biz_id in
<foreach collection="projectBizIdList" item="item" index="index" open="(" separator=","
close=")">
#{item}
</foreach>
)
</if>
or (sm.scope = 1)
)
</if>
<if test="request.menuName != null and request.menuName != ''">
and sm.menu_name like concat('%', #{request.menuName}, '%')
</if>
and sm.is_deleted = 0
</where>
</select>
</mapper>
......@@ -6,12 +6,14 @@
select sp.id,sp.project_biz_id,
sp.project_name,sp.status,
sp.start_time,sp.end_time,
sp.data_scope
sp.logo_url,sp.scope,
sp.tenant_biz_id,sp.is_in,
(select st.tenant_name from sys_tenant st where st.tenant_biz_id = sp.tenant_biz_id limit 1) as tenantName
from sys_project sp
<where>
<if test="!isAdmin">
and sp.tenant_biz_id = #{loginTenantBizId}
and ((sp.tenant_biz_id = #{loginTenantBizId} and sp.scope = 2 ) or sp.scope = 1)
</if>
<if test="request.projectName != null and request.projectName != ''">
and sp.project_name like concat('%', #{request.projectName}, '%')
......
......@@ -14,16 +14,21 @@
left join sys_project sp on sp.project_biz_id = sr.project_biz_id and sp.is_deleted = 0
<where>
<if test="!isAdmin">
and (sr.tenant_biz_id = #{loginTenantBizId} or
and ((sr.scope = 2 and sr.tenant_biz_id = #{loginTenantBizId})
<if test="projectBizIdList.size > 0 and projectBizIdList != null">
sr.project_biz_id in
<foreach collection="projectBizIdList" item="item" index="index" open="(" separator="," close=")">
or (sr.scope = 3 and sr.project_biz_id in
<foreach collection="projectBizIdList" item="item" index="index" open="(" separator=","
close=")">
#{item}
</foreach>
)
</if>
or (sr.scope = 1)
)
</if>
<if test="request.roleName != null and request.roleName != ''">
and sr.role_name like concat('%', #{request.roleName}, '%')
</if>
......@@ -32,6 +37,7 @@
and sr.scope = #{request.scope}
</if>
and sr.is_deleted = 0
</where>
</select>
......
......@@ -6,7 +6,8 @@
select su.* from sys_user su
<if test="!isAdmin">
inner join rel_tenant_user rtu on rtu.user_biz_id = su.user_biz_id and rtu.tenant_biz_id = #{loginTenantBizId}
inner join rel_tenant_user rtu on rtu.user_biz_id = su.user_biz_id
and rtu.tenant_biz_id = #{loginTenantBizId} and rtu.is_deleted = 0
</if>
<where>
......@@ -34,4 +35,44 @@
and su.is_deleted = 0
</where>
</select>
<select id="scopePage" resultType="com.yd.user.feign.response.sysuser.ApiScopePageResponse">
<if test="request.scope != null">
<if test="request.scope == 2">
select
st.id as tenantId,st.tenant_biz_id,st.tenant_name
from sys_tenant st
<where>
<if test="!isAdmin">
and st.tenant_biz_id = #{loginTenantBizId}
</if>
<if test="request.name != null and request.name != ''">
and st.tenant_name like concat('%', #{request.name}, '%')
</if>
</where>
</if>
<if test="request.scope == 3">
select
sp.id as projectId,sp.project_biz_id,sp.project_name
from sys_project sp
<if test="!isAdmin">
inner join rel_tenant_project rtp on sp.project_biz_id = rtp.project_biz_id
and rtp.tenant_biz_id = #{loginTenantBizId} and rtp.is_deleted = 0
</if>
<where>
<if test="request.name != null and request.name != ''">
and sp.project_name like concat('%', #{request.name}, '%')
</if>
and sp.is_deleted = 0
</where>
</if>
</if>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment