Commit f7524233 by zhangxingmin

用户服务相关接口开发

parent f9f3a831
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.ApiRelDeptUserService;
import com.yd.user.feign.client.reldeptuser.ApiRelDeptUserFeignClient;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserDelRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportAddRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse;
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;
/**
* 部门-用户关系信息
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/relDeptUser")
@Validated
public class ApiRelDeptUserController implements ApiRelDeptUserFeignClient {
@Autowired
private ApiRelDeptUserService apiRelDeptUserService;
/**
* 租户管理-分配权限-部门配置-用户列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantDeptUserPageResponse>> page(ApiRelTenantDeptUserPageRequest request) {
return apiRelDeptUserService.page(request);
}
/**
* 租户管理-分配权限-部门配置-用户列表删除
* @param request
* @return
*/
@Override
public Result del(ApiRelTenantDeptUserDelRequest request) {
return apiRelDeptUserService.del(request);
}
/**
* 租户管理-分配权限-部门配置-用户列表导入分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantDeptUserImportPageResponse>> importPage(ApiRelTenantDeptUserImportPageRequest request) {
return apiRelDeptUserService.importPage(request);
}
/**
* 租户管理-分配权限-部门配置-用户列表导入添加
* @param request
* @return
*/
@Override
public Result importAdd(ApiRelTenantDeptUserImportAddRequest request) {
return apiRelDeptUserService.importAdd(request);
}
}
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.ApiRelTenantDeptService;
import com.yd.user.feign.client.reltenantdept.ApiRelTenantDeptFeignClient;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListAddRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
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("/relTenantDept")
@Validated
public class ApiRelTenantDeptController implements ApiRelTenantDeptFeignClient {
@Autowired
private ApiRelTenantDeptService apiRelTenantDeptService;
/**
* 租户和部门关系分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantDeptListPageResponse>> page(ApiRelTenantDeptListPageRequest request) {
return apiRelTenantDeptService.page(request);
}
/**
* 租户和部门关系树形列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelTenantDeptTreeListResponse>> tree(ApiRelTenantDeptTreeListRequest request) {
return apiRelTenantDeptService.tree(request);
}
/**
* 添加租户和部门列表关系
* @param request
* @return
*/
@Override
public Result addDeptList(ApiRelTenantDeptListAddRequest request) {
return apiRelTenantDeptService.addDeptList(request);
}
/**
* 删除租户和部门关系
* @param id 租户和部门关系表主键id
* @return
*/
@Override
public Result del(Long id) {
return apiRelTenantDeptService.del(id);
}
/**
* 导入-树形部门查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelTenantDeptImportQueryDeptTreeResponse>> importQueryDeptTree(ApiRelTenantDeptImportQueryDeptTreeRequest request) {
return apiRelTenantDeptService.importQueryDeptTree(request);
}
/**
* 导入-树形部门-查询选中的部门id集合
* @param tenantBizId
* @return
*/
@Override
public Result<List<String>> selectedList(String tenantBizId) {
return apiRelTenantDeptService.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.ApiSysDeptService;
import com.yd.user.feign.client.sysdept.ApiSysDeptFeignClient;
import com.yd.user.feign.request.sysdept.*;
import com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptDetailResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
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;
/**
* 部门信息(部门信息)
*
* @author zxm
* @since 2025-07-31
*/
@RestController
@RequestMapping("/sysDept")
@Validated
public class ApiSysDeptController implements ApiSysDeptFeignClient {
@Autowired
private ApiSysDeptService apiSysDeptService;
/**
* 树形部门列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiSysDeptTreeListResponse>> treeList(ApiSysDeptTreeListRequest request) {
return apiSysDeptService.treeList(request);
}
/**
* 部门分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysDeptPageResponse>> page(ApiSysDeptPageRequest request) {
return apiSysDeptService.page(request);
}
/**
* 公司分页查询(公司类型)
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysDeptCompanyPageResponse>> companyPage(ApiSysDeptCompanyPageRequest request) {
return apiSysDeptService.companyPage(request);
}
/**
* 获取部门详情
* @param deptBizId 部门唯一标识(业务ID)
* @return
*/
@Override
public Result<ApiSysDeptDetailResponse> detail(String deptBizId) {
return apiSysDeptService.detail(deptBizId);
}
/**
* 添加部门
* @param request
* @return
*/
@Override
public Result add(ApiSysDeptAddRequest request) {
return apiSysDeptService.add(request);
}
/**
* 编辑部门
* @param request
* @return
*/
@Override
public Result edit(ApiSysDeptEditRequest request) {
return apiSysDeptService.edit(request);
}
/**
* 删除部门(逻辑删除) TODO
* @param deptBizId 部门唯一标识(业务ID)
* @return
*/
@Override
public Result del(String deptBizId) {
return apiSysDeptService.del(deptBizId);
}
/**
* 编辑部门状态 TODO
* @param deptBizId 部门唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@Override
public Result editStatus(String deptBizId, Integer status) {
return apiSysDeptService.editStatus(deptBizId,status);
}
}
......@@ -7,6 +7,7 @@ import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
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.login.GetLoginPermissionProjectResponse;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
......@@ -14,6 +15,8 @@ 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;
/**
......@@ -117,5 +120,32 @@ public class ApiSysUserController implements ApiSysUserFeignClient {
return apiSysUserService.scopePage(request);
}
/**
* 权限-管理端-获取登录后的项目权限信息
* @return
*/
@Override
public Result<GetLoginPermissionProjectResponse> getLoginPermissionProject(String tenantBizId,String projectBizId) {
return apiSysUserService.getLoginPermissionProject(tenantBizId,projectBizId);
}
/**
* 权限-管理端-获取当前登录用户绑定的当前项目用户角色菜单列表
* @return
*/
@Override
public Result<List<ApiLoginMenuInfoResponse>> getProjectMenuRouters(String projectBizId) {
return apiSysUserService.getProjectMenuRouters(projectBizId);
}
/**
* 权限-管理端-获取当前登录用户是否有权限访问该项目
* @return
*/
@Override
public Result<Boolean> isProjectVisit(String projectBizId) {
return apiSysUserService.isProjectVisit(projectBizId);
}
}
......@@ -5,14 +5,14 @@ import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 部门-用户关系表(多对多关系) 前端控制器
* 项目-部门关系表 前端控制器
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
@RestController
@RequestMapping("/relDeptUser")
public class RelDeptUserController {
@RequestMapping("/relProjectDept")
public class RelProjectDeptController {
}
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("/relTenantDept")
public class RelTenantDeptController {
}
package com.yd.user.api.dto;
import lombok.Data;
/**
* 部门添加和编辑校验入参的DTO
*/
@Data
public class ApiSysDeptAddAndEditReqCheckDto {
/**
* 部门id
*/
private String deptBizId;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
/**
* 是否是超级管理员
*/
private Boolean isAdmin;
/**
* 操作来源 1-添加 2-编辑
*/
private String oprSource;
}
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.reldeptuser.ApiRelTenantDeptUserDelRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportAddRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse;
public interface ApiRelDeptUserService {
Result<IPage<ApiRelTenantDeptUserPageResponse>> page(ApiRelTenantDeptUserPageRequest request);
Result del(ApiRelTenantDeptUserDelRequest request);
Result<IPage<ApiRelTenantDeptUserImportPageResponse>> importPage(ApiRelTenantDeptUserImportPageRequest request);
Result importAdd(ApiRelTenantDeptUserImportAddRequest request);
}
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.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListAddRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
import java.util.List;
public interface ApiRelTenantDeptService {
Result<IPage<ApiRelTenantDeptListPageResponse>> page(ApiRelTenantDeptListPageRequest request);
Result<List<ApiRelTenantDeptTreeListResponse>> tree(ApiRelTenantDeptTreeListRequest request);
Result addDeptList(ApiRelTenantDeptListAddRequest request);
Result del(Long id);
Result<List<ApiRelTenantDeptImportQueryDeptTreeResponse>> importQueryDeptTree(ApiRelTenantDeptImportQueryDeptTreeRequest request);
Result<List<String>> selectedList(String tenantBizId);
Result addSingleRel(String tenantBizId, String deptBizId);
}
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.sysdept.*;
import com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptDetailResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
import java.util.List;
public interface ApiSysDeptService {
Result<List<ApiSysDeptTreeListResponse>> treeList(ApiSysDeptTreeListRequest request);
Result<IPage<ApiSysDeptPageResponse>> page(ApiSysDeptPageRequest request);
Result<IPage<ApiSysDeptCompanyPageResponse>> companyPage(ApiSysDeptCompanyPageRequest request);
Result<ApiSysDeptDetailResponse> detail(String deptBizId);
Result add(ApiSysDeptAddRequest request);
Result edit(ApiSysDeptEditRequest request);
Result del(String deptBizId);
Result editStatus(String deptBizId, Integer status);
}
......@@ -5,6 +5,7 @@ import com.yd.common.result.Result;
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.login.GetLoginPermissionProjectResponse;
import com.yd.user.feign.response.sysuser.ApiScopePageResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserPageResponse;
......@@ -30,4 +31,10 @@ public interface ApiSysUserService {
Result<List<ApiLoginMenuInfoResponse>> getMenuRouters(String tenantBizId);
Result<IPage<ApiScopePageResponse>> scopePage(ApiScopePageRequest request);
Result<GetLoginPermissionProjectResponse> getLoginPermissionProject(String tenantBizId, String projectBizId);
Result<List<ApiLoginMenuInfoResponse>> getProjectMenuRouters(String projectBizId);
Result<Boolean> isProjectVisit(String projectBizId);
}
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.user.api.service.ApiRelDeptUserService;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserDelRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportAddRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse;
import com.yd.user.service.model.RelDeptUser;
import com.yd.user.service.model.RelProjectUser;
import com.yd.user.service.service.IRelDeptUserService;
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 ApiRelDeptUserServiceImpl implements ApiRelDeptUserService {
@Autowired
private IRelDeptUserService iRelDeptUserService;
/**
* 租户管理-分配权限-部门配置-用户列表
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantDeptUserPageResponse>> page(ApiRelTenantDeptUserPageRequest request) {
Page<ApiRelTenantDeptUserPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiRelTenantDeptUserPageResponse> iPage = iRelDeptUserService.page(page, request);
return Result.success(iPage);
}
/**
* 租户管理-分配权限-部门配置-用户列表删除
* @param request
* @return
*/
@Override
public Result del(ApiRelTenantDeptUserDelRequest request) {
RelDeptUser relDeptUser = iRelDeptUserService.queryOne(request.getId());
if (Objects.isNull(relDeptUser)) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
iRelDeptUserService.removeById(request.getId());
return Result.success();
}
/**
* 租户管理-分配权限-部门配置-用户列表导入分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantDeptUserImportPageResponse>> importPage(ApiRelTenantDeptUserImportPageRequest request) {
Page<ApiRelTenantDeptUserImportPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiRelTenantDeptUserImportPageResponse> iPage = iRelDeptUserService.importPage(page, request);
return Result.success(iPage);
}
/**
* 租户管理-分配权限-部门配置-用户列表导入添加
* @param request
* @return
*/
@Override
public Result importAdd(ApiRelTenantDeptUserImportAddRequest request) {
List<RelDeptUser> list = new ArrayList<>();
if (!CollectionUtils.isEmpty(request.getUserBizIdList())) {
//用户唯一标识(业务ID) 列表(选中列表)不为空
list = request.getUserBizIdList().stream().map(bizId -> {
RelDeptUser relDeptUser = new RelDeptUser();
relDeptUser.setTenantBizId(request.getTenantBizId());
relDeptUser.setDeptBizId(request.getDeptBizId());
relDeptUser.setUserBizId(bizId);
return relDeptUser;
}).collect(Collectors.toList());
iRelDeptUserService.saveOrUpdateBatch(list);
}
return Result.success();
}
}
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.ApiRelTenantDeptService;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListAddRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
import com.yd.user.service.dto.RelTenantDeptDto;
import com.yd.user.service.model.RelTenantDept;
import com.yd.user.service.service.IRelTenantDeptService;
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 ApiRelTenantDeptServiceImpl implements ApiRelTenantDeptService {
@Autowired
private IRelTenantDeptService iRelTenantDeptService;
/**
* 租户和部门关系分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiRelTenantDeptListPageResponse>> page(ApiRelTenantDeptListPageRequest request) {
Page<ApiRelTenantDeptListPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiRelTenantDeptListPageResponse> iPage = iRelTenantDeptService.page(page, request);
return Result.success(iPage);
}
/**
* 租户和部门关系树形列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelTenantDeptTreeListResponse>> tree(ApiRelTenantDeptTreeListRequest request) {
List<ApiRelTenantDeptTreeListResponse> treeMenu = new ArrayList<>();
//租户和部门关系列表
List<ApiRelTenantDeptTreeListResponse> queryList = iRelTenantDeptService.treeList(request);
if (!CollectionUtils.isEmpty(queryList)) {
//构建部门树形结构
treeMenu = TreeUtils.buildTree(
queryList,
ApiRelTenantDeptTreeListResponse::getDeptBizId, // 获取节点ID
ApiRelTenantDeptTreeListResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
* 添加租户和部门列表关系
* @param request
* @return
*/
@Override
public Result addDeptList(ApiRelTenantDeptListAddRequest request) {
List<RelTenantDept> list = new ArrayList<>();
//先删后增加
iRelTenantDeptService.removeByTenantBizId(request.getTenantBizId());
if (!CollectionUtils.isEmpty(request.getDeptBizIdList())) {
//部门唯一标识(业务ID) 列表(选中列表)不为空
list = request.getDeptBizIdList().stream().map(bizId -> {
RelTenantDept relTenantDept = new RelTenantDept();
relTenantDept.setTenantBizId(request.getTenantBizId());
relTenantDept.setDeptBizId(bizId);
return relTenantDept;
}).collect(Collectors.toList());
iRelTenantDeptService.saveOrUpdateBatch(list);
}
return Result.success();
}
/**
* 删除租户和部门关系
* @param id 租户和部门关系表主键id
* @return
*/
@Override
public Result del(Long id) {
RelTenantDept relTenantDept = iRelTenantDeptService.queryOne(id);
if (Objects.isNull(relTenantDept)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
iRelTenantDeptService.removeById(relTenantDept.getId());
return Result.success();
}
/**
* 导入-树形部门查询
* @param request
* @return
*/
@Override
public Result<List<ApiRelTenantDeptImportQueryDeptTreeResponse>> importQueryDeptTree(ApiRelTenantDeptImportQueryDeptTreeRequest request) {
//TODO 条件搜索部门树后续完善
List<ApiRelTenantDeptImportQueryDeptTreeResponse> treeMenu = new ArrayList<>();
//查询租户和部门关系数据
List<ApiRelTenantDeptImportQueryDeptTreeResponse> queryList = iRelTenantDeptService.importQueryDeptTreeList(request);
if (!CollectionUtils.isEmpty(queryList)) {
//构建部门树形结构
treeMenu = TreeUtils.buildTree(
queryList,
ApiRelTenantDeptImportQueryDeptTreeResponse::getDeptBizId, // 获取节点ID
ApiRelTenantDeptImportQueryDeptTreeResponse::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> deptBizIdList = new ArrayList<>();
List<RelTenantDept> relTenantDeptList = iRelTenantDeptService.queryList(RelTenantDeptDto.builder()
.tenantBizId(tenantBizId)
.build());
if (!CollectionUtils.isEmpty(relTenantDeptList)) {
deptBizIdList = relTenantDeptList.stream().map(RelTenantDept::getDeptBizId).collect(Collectors.toList());
}
return Result.success(deptBizIdList);
}
/**
* 添加单个租户和部门关系
* @param tenantBizId
* @param deptBizId
* @return
*/
@Override
public Result addSingleRel(String tenantBizId, String deptBizId) {
//新增关系
RelTenantDept relTenantDept = new RelTenantDept();
relTenantDept.setTenantBizId(tenantBizId);
relTenantDept.setDeptBizId(deptBizId);
iRelTenantDeptService.saveOrUpdate(relTenantDept);
return Result.success();
}
}
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.common.utils.TreeUtils;
import com.yd.user.api.dto.ApiSysDeptAddAndEditReqCheckDto;
import com.yd.user.api.service.ApiRelTenantDeptService;
import com.yd.user.api.service.ApiSysDeptService;
import com.yd.user.feign.request.sysdept.*;
import com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptDetailResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
import com.yd.user.service.dto.RelTenantProjectDto;
import com.yd.user.service.dto.SysDeptDto;
import com.yd.user.service.model.*;
import com.yd.user.service.service.IRelTenantProjectService;
import com.yd.user.service.service.ISysDeptService;
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 ApiSysDeptServiceImpl implements ApiSysDeptService {
@Autowired
private IRelTenantProjectService iRelTenantProjectService;
@Autowired
private ISysDeptService iSysDeptService;
@Autowired
private ISysTenantService iSysTenantService;
@Autowired
private ISysProjectService iSysProjectService;
@Autowired
private ApiRelTenantDeptService apiRelTenantDeptService;
// @Autowired
// private ApiRelProjectDeptService apiRelProjectDeptService;
/**
* 树形部门列表查询
* @param request
* @return
*/
@Override
public Result<List<ApiSysDeptTreeListResponse>> treeList(ApiSysDeptTreeListRequest 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();
List<ApiSysDeptTreeListResponse> apiSysDeptTreeListResponses = new ArrayList<>();
List<ApiSysDeptTreeListResponse> 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());
}
}
//条件搜索构建部门树的数据
apiSysDeptTreeListResponses = iSysDeptService.treeList(loginTenantBizId,
isAdmin,
request.getDeptName(),
projectBizIdList);
if (!CollectionUtils.isEmpty(apiSysDeptTreeListResponses)) {
//构建部门树形结构
treeMenu = TreeUtils.buildTree(
apiSysDeptTreeListResponses,
ApiSysDeptTreeListResponse::getDeptBizId, // 获取节点ID
ApiSysDeptTreeListResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
return Result.success(treeMenu);
}
/**
* 部门分页查询
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysDeptPageResponse>> page(ApiSysDeptPageRequest 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();
List<String> projectBizIdList = new ArrayList<>();
Page<ApiSysDeptPageResponse> 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<ApiSysDeptPageResponse> iPage = iSysDeptService.page(page, request,isAdmin,projectBizIdList,loginTenantBizId);
return Result.success(iPage);
}
/**
* 公司分页查询(公司类型)
* @param request
* @return
*/
@Override
public Result<IPage<ApiSysDeptCompanyPageResponse>> companyPage(ApiSysDeptCompanyPageRequest request) {
Page<ApiSysDeptCompanyPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiSysDeptCompanyPageResponse> iPage = iSysDeptService.companyPage(page, request);
return Result.success(iPage);
}
/**
* 获取部门详情
* @param deptBizId 部门唯一标识(业务ID)
* @return
*/
@Override
public Result<ApiSysDeptDetailResponse> detail(String deptBizId) {
Result<SysDept> result = checkSysDeptIsExist(deptBizId);
SysDept sysDept = result.getData();
ApiSysDeptDetailResponse response = new ApiSysDeptDetailResponse();
BeanUtils.copyProperties(sysDept,response);
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);
}
/**
* 添加部门
* @param request
* @return
*/
@Override
public Result add(ApiSysDeptAddRequest request) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
ApiSysDeptAddAndEditReqCheckDto dto = new ApiSysDeptAddAndEditReqCheckDto();
BeanUtils.copyProperties(request,dto);
dto.setIsAdmin(isAdmin);
dto.setOprSource(CommonEnum.OPR_SOURCE_ADD.getCode());
//部门添加和编辑校验入参的合理性(非查询库校验)
addAndEditReqCheck(dto);
//校验部门名称唯一性
List<SysDept> list = iSysDeptService.queryList(SysDeptDto.builder()
.deptName(request.getDeptName())
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.DEPT_NAME_EXISTS.getCode(),ResultCode.DEPT_NAME_EXISTS.getMessage());
}
SysDept sysDept = new SysDept();
BeanUtils.copyProperties(request,sysDept);
sysDept.setDeptBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_DEPT.getCode()));
//添加和编辑保存设置参数公共方法
sysDept = addAndEditSaveSetCommon(sysDept);
iSysDeptService.saveOrUpdate(sysDept);
//新增或者编辑-更新租户部门关系、更新项目部门关系公共方法
addAndEditByRelCommon(request.getTenantBizId(),
request.getProjectBizId(),
sysDept.getDeptBizId(),
request.getScope(),
CommonEnum.OPR_SOURCE_ADD.getCode());
return Result.success();
}
/**
* 编辑部门
* @param request
* @return
*/
@Override
public Result edit(ApiSysDeptEditRequest request) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
//当前登录用户的角色类型 true是超级管理员 false是超级管理员
Boolean isAdmin = authUserDto.getIsSuperAdmin() == 1;
ApiSysDeptAddAndEditReqCheckDto dto = new ApiSysDeptAddAndEditReqCheckDto();
BeanUtils.copyProperties(request,dto);
dto.setIsAdmin(isAdmin);
dto.setOprSource(CommonEnum.OPR_SOURCE_EDIT.getCode());
//部门添加和编辑校验入参的合理性(非查询库校验)
addAndEditReqCheck(dto);
//校验部门是否存在
Result<SysDept> result = checkSysDeptIsExist(request.getDeptBizId());
SysDept sysDept = result.getData();
//校验部门名称唯一性
List<SysDept> list = iSysDeptService.queryList(SysDeptDto.builder()
.deptName(request.getDeptName())
.deptBizId(request.getDeptBizId())
.isExcludeMy(true)
.build());
if (!CollectionUtils.isEmpty(list)) {
throw new BusinessException(ResultCode.DEPT_NAME_EXISTS.getCode(),ResultCode.DEPT_NAME_EXISTS.getMessage());
}
//TODO 换绑逻辑(作用域换绑:提示校验需要先把什么解绑再来换绑)
BeanUtils.copyProperties(request,sysDept);
//添加和编辑保存设置参数公共方法
sysDept = addAndEditSaveSetCommon(sysDept);
iSysDeptService.saveOrUpdate(sysDept);
//新增或者编辑-更新租户部门关系、更新项目部门关系公共方法 TODO
// addAndEditByRelCommon(request.getTenantBizId(),
// request.getProjectBizId(),
// sysDept.getDeptBizId(),
// request.getScope(),
// CommonEnum.OPR_SOURCE_EDIT.getCode());
return Result.success();
}
/**
* 删除部门(逻辑删除)
* @param deptBizId 部门唯一标识(业务ID)
* @return
*/
@Override
public Result del(String deptBizId) {
return null;
}
/**
* 编辑部门状态
* @param deptBizId 部门唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@Override
public Result editStatus(String deptBizId, Integer status) {
return null;
}
/**
* 新增或者编辑-更新租户部门关系、更新项目部门关系公共方法
* @param tenantBizId 租户id
* @param projectBizId 项目id
* @param deptBizId 部门id
* @param scope 作用域
* @param oprSource 操作来源 1-添加 2-编辑
*/
public void addAndEditByRelCommon(String tenantBizId,
String projectBizId,
String deptBizId,
Integer scope,
String oprSource) {
if (CommonEnum.OPR_SOURCE_ADD.getCode().equals(oprSource)) {
//添加来源
if (CommonEnum.SCOPE_TENANT.getCode().equals(scope.toString())) {
//作用域租户级-新增租户部门关系
apiRelTenantDeptService.addSingleRel(tenantBizId,deptBizId);
}
if (CommonEnum.SCOPE_PROJECT.getCode().equals(scope.toString())) {
//作用域项目级-新增项目部门关系
// apiRelProjectDeptService.addSingleRel(projectBizId,deptBizId);
}
}else if (CommonEnum.OPR_SOURCE_EDIT.getCode().equals(oprSource)) {
//编辑来源 TODO
}
}
/**
* 添加和编辑保存设置参数公共方法
* @param sysDept
* @return
*/
public SysDept addAndEditSaveSetCommon(SysDept sysDept) {
if (CommonEnum.SCOPE_SYS.getCode().equals(sysDept.getScope().toString())) {
//系统级
sysDept.setTenantBizId("");
sysDept.setProjectBizId("");
}else if (CommonEnum.SCOPE_TENANT.getCode().equals(sysDept.getScope().toString())) {
//租户级
sysDept.setProjectBizId("");
}else if (CommonEnum.SCOPE_PROJECT.getCode().equals(sysDept.getScope().toString())) {
//项目级
sysDept.setTenantBizId("");
}
return sysDept;
}
/**
* 部门添加和编辑校验入参的合理性(非查询库校验)
* @param dto
*/
public void addAndEditReqCheck(ApiSysDeptAddAndEditReqCheckDto dto) {
if (dto.getParentBizId().equals(dto.getDeptBizId())) {
//父级部门不能为当前部门
throw new BusinessException("父级部门不能为当前部门!!");
}
if (!dto.getIsAdmin() && CommonEnum.SCOPE_SYS.getCode().equals(dto.getScope().toString())) {
//非超级管理员不能选择系统级作用域
throw new BusinessException("非超级管理员不能选择系统级作用域!");
}
//校验作用域scope字段,如果为作用域租户级所属租户id必须传值
if(CommonEnum.SCOPE_TENANT.getCode().equals(dto.getScope().toString())
&& StringUtils.isBlank(dto.getTenantBizId())) {
throw new BusinessException("租户级作用域,所属租户id不能为空");
}
//校验作用域scope字段,如果为作用域项目级所属项目id必须传值
if(CommonEnum.SCOPE_PROJECT.getCode().equals(dto.getScope().toString())
&& StringUtils.isBlank(dto.getProjectBizId())) {
throw new BusinessException("项目级作用域,所属项目id不能为空");
}
}
/**
* 校验部门是否存在
* @param deptBizId
* @return
*/
public Result<SysDept> checkSysDeptIsExist(String deptBizId) {
SysDept sysDept = iSysDeptService.queryOne(deptBizId);
if (Objects.isNull(sysDept)) {
//数据不存在
throw new BusinessException(ResultCode.NULL_ERROR.getCode(),ResultCode.NULL_ERROR.getMessage());
}
return Result.success(sysDept);
}
}
......@@ -64,6 +64,9 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
private IRelTenantProjectService iRelTenantProjectService;
@Autowired
private IRelProjectUserService iRelProjectUserService;
@Autowired
private ISysProjectService iSysProjectService;
/**
......@@ -363,7 +366,6 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
}
List<RelUserRole> relUserRoleList = iRelUserRoleService.queryList(RelUserRoleDto.builder()
.tenantBizId(sysTenant.getTenantBizId())
.userBizId(authUserDto.getUserBizId())
......@@ -515,6 +517,176 @@ public class ApiSysUserServiceImpl implements ApiSysUserService {
}
/**
* 权限-管理端-获取登录后的项目权限信息
* @return
*/
@Override
public Result<GetLoginPermissionProjectResponse> getLoginPermissionProject(String tenantBizId, String projectBizId) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
GetLoginPermissionProjectResponse response = new GetLoginPermissionProjectResponse();
//当前登录的用户基础信息
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);
//当前租户基础信息
ApiLoginTenantInfoResponse apiLoginTenantInfoResponse = null;
SysTenant sysTenant = iSysTenantService.queryOne(tenantBizId);
if (!Objects.isNull(sysTenant)) {
apiLoginTenantInfoResponse = new ApiLoginTenantInfoResponse();
BeanUtils.copyProperties(sysTenant,apiLoginTenantInfoResponse);
response.setApiLoginTenantInfoResponse(apiLoginTenantInfoResponse);
}
//当前项目基础信息
ApiLoginProjectInfoResponse apiLoginProjectInfoResponse = null;
SysProject sysProject = iSysProjectService.queryOne(projectBizId);
if (!Objects.isNull(sysProject)) {
apiLoginProjectInfoResponse = new ApiLoginProjectInfoResponse();
BeanUtils.copyProperties(sysProject,apiLoginProjectInfoResponse);
response.setApiLoginProjectInfoResponse(apiLoginProjectInfoResponse);
}
List<RelUserRole> relUserRoleList = iRelUserRoleService.queryList(RelUserRoleDto.builder()
.projectBizId(projectBizId)
.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());
response.setRoles(roleCodeList);
}
//项目用户角色菜单按钮权限列表信息
List<RelRoleMenu> relRoleMenuList = iRelRoleMenuService.queryList(RelRoleMenuDto.builder()
.projectBizId(projectBizId)
.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());
response.setPermissions(menuPermissionList);
}
}
}
return Result.success(response);
}
/**
* 权限-管理端-获取当前登录用户绑定的当前项目用户角色菜单列表
* @return
*/
@Override
public Result<List<ApiLoginMenuInfoResponse>> getProjectMenuRouters(String projectBizId) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
List<ApiLoginMenuInfoResponse> treeMenu = new ArrayList<>();
List<RelUserRole> relUserRoleList = iRelUserRoleService.queryList(RelUserRoleDto.builder()
.tenantBizId(projectBizId)
.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(projectBizId)
.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);
}
/**
* 权限-管理端-获取当前登录用户是否有权限访问该项目
* @return
*/
@Override
public Result<Boolean> isProjectVisit(String projectBizId) {
//获取Security上下文当前用户的登录信息
AuthUserDto authUserDto = SecurityUtil.getCurrentLoginUser();
List<RelProjectUser> relProjectUserList = iRelProjectUserService.queryList(RelProjectUserDto.builder()
.projectBizId(projectBizId)
.userBizId(authUserDto.getUserBizId())
.build());
if (CollectionUtils.isEmpty(relProjectUserList)) {
throw new BusinessException("无项目用户权限,请在当前项目添加项目用户权限!");
}
List<RelUserRole> relUserRoleList = iRelUserRoleService.queryList(RelUserRoleDto.builder()
.projectBizId(projectBizId)
.userBizId(authUserDto.getUserBizId())
.build());
if (CollectionUtils.isEmpty(relUserRoleList)) {
throw new BusinessException("无项目用户角色权限,请在当前项目添加用户角色权限!");
}
List<String> roleBizIdList = relUserRoleList.stream().map(RelUserRole::getRoleBizId).collect(Collectors.toList());
List<RelRoleMenu> relRoleMenuList = iRelRoleMenuService.queryList(RelRoleMenuDto.builder()
.projectBizId(projectBizId)
.roleBizIdList(roleBizIdList)
.build());
if (CollectionUtils.isEmpty(relRoleMenuList)) {
throw new BusinessException("无项目角色权限,请在当前项目添加角色菜单权限!");
}
return Result.success();
}
/**
* 校验用户是否存在
* @param userBizId
* @return
......
package com.yd.user.feign.client.reldeptuser;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.reldeptuser.ApiRelDeptUserFeignFallbackFactory;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserDelRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportAddRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
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;
/**
* 用户服务:部门-用户关系信息Feign客户端
*/
@FeignClient(name = "yd-user-api", fallbackFactory = ApiRelDeptUserFeignFallbackFactory.class)
public interface ApiRelDeptUserFeignClient {
/**
* 租户管理-分配权限-部门配置-用户列表
* @param request
* @return
*/
@PostMapping("/tenant/page")
Result page(@Validated @RequestBody ApiRelTenantDeptUserPageRequest request);
/**
* 租户管理-分配权限-部门配置-用户列表删除
* @param request
* @return
*/
@PostMapping("/tenant/del")
Result del(@Validated @RequestBody ApiRelTenantDeptUserDelRequest request);
/**
* 租户管理-分配权限-部门配置-用户列表导入分页查询
* @param request
* @return
*/
@PostMapping("/tenant/import/page")
Result importPage(@Validated @RequestBody ApiRelTenantDeptUserImportPageRequest request);
/**
* 租户管理-分配权限-部门配置-用户列表导入添加
* @param request
* @return
*/
@PostMapping("/tenant/import/add")
Result importAdd(@Validated @RequestBody ApiRelTenantDeptUserImportAddRequest request);
}
package com.yd.user.feign.client.reltenantdept;
import com.yd.common.result.Result;
import com.yd.user.feign.fallback.reltenantdept.ApiRelTenantDeptFeignFallbackFactory;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListAddRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
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 = ApiRelTenantDeptFeignFallbackFactory.class)
public interface ApiRelTenantDeptFeignClient {
/**
* 租户和部门关系分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@Validated @RequestBody ApiRelTenantDeptListPageRequest request);
/**
* 租户和部门关系树形列表查询
* @param request
* @return
*/
@PostMapping("/tree")
Result<List<ApiRelTenantDeptTreeListResponse>> tree(@Validated @RequestBody ApiRelTenantDeptTreeListRequest request);
/**
* 添加租户和部门列表关系
* @param request
* @return
*/
@PostMapping("/add/dept/list")
Result addDeptList(@Validated @RequestBody ApiRelTenantDeptListAddRequest request);
/**
* 删除租户和部门关系
* @param id 租户和部门关系表主键id
* @return
*/
@DeleteMapping("/del")
Result del(@NotNull(message = "租户和部门关系表主键id不能为空") @RequestParam(value = "id") Long id);
/**
* 导入-树形部门查询
* @param request
* @return
*/
@PostMapping("/import/query/dept/tree")
Result<List<ApiRelTenantDeptImportQueryDeptTreeResponse>> importQueryDeptTree(@Validated @RequestBody ApiRelTenantDeptImportQueryDeptTreeRequest request);
/**
* 导入-树形部门-查询选中的部门id集合
* @param tenantBizId
* @return
*/
@GetMapping("/import/query/selected/dept/list")
Result<List<String>> selectedList(@NotBlank(message = "租户id不能为空") @RequestParam(value = "tenantBizId") String tenantBizId);
}
package com.yd.user.feign.client.sysdept;
import com.yd.common.result.Result;
import com.yd.user.feign.request.sysdept.*;
import com.yd.user.feign.response.sysdept.ApiSysDeptDetailResponse;
import com.yd.user.feign.fallback.sysdept.ApiSysDeptFeignFallbackFactory;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
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 = ApiSysDeptFeignFallbackFactory.class)
public interface ApiSysDeptFeignClient {
/**
* 树形部门列表查询
* @param request
* @return
*/
@PostMapping("/tree/list")
Result<List<ApiSysDeptTreeListResponse>> treeList(@RequestBody ApiSysDeptTreeListRequest request);
/**
* 部门分页查询
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiSysDeptPageRequest request);
/**
* 公司分页查询(公司类型)
* @param request
* @return
*/
@PostMapping("/company/page")
Result companyPage(@RequestBody ApiSysDeptCompanyPageRequest request);
/**
* 获取部门详情
* @param deptBizId 部门唯一标识(业务ID)
* @return
*/
@GetMapping("/detail")
Result<ApiSysDeptDetailResponse> detail(@NotBlank(message = "部门唯一标识(业务ID)不能为空") @RequestParam(value = "deptBizId") String deptBizId);
/**
* 添加部门
* @param request
* @return
*/
@PostMapping("/add")
Result add(@Validated @RequestBody ApiSysDeptAddRequest request);
/**
* 编辑部门
* @param request
* @return
*/
@PutMapping("/edit")
Result edit(@Validated @RequestBody ApiSysDeptEditRequest request);
/**
* 删除部门(逻辑删除)
* @param deptBizId 部门唯一标识(业务ID)
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "部门唯一标识(业务ID)不能为空") @RequestParam(value = "deptBizId") String deptBizId);
/**
* 编辑部门状态
* @param deptBizId 部门唯一标识(业务ID)
* @param status 状态(0:禁用 1:启用)
* @return
*/
@PatchMapping("/edit/status")
Result editStatus(@NotBlank(message = "部门唯一标识(业务ID)不能为空") @RequestParam(value = "deptBizId") String deptBizId,
@NotNull(message = "状态不能为空") @RequestParam(value = "status") Integer status);
}
......@@ -5,6 +5,7 @@ import com.yd.user.feign.fallback.sysuser.ApiSysUserFeignFallbackFactory;
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.login.GetLoginPermissionProjectResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import com.yd.user.feign.response.login.GetLoginInfoResponse;
import org.springframework.cloud.openfeign.FeignClient;
......@@ -91,4 +92,26 @@ public interface ApiSysUserFeignClient {
*/
@PostMapping("/scope/page")
Result scopePage(@Validated @RequestBody ApiScopePageRequest request);
/**
* 权限-管理端-获取登录后的项目权限信息
* @return
*/
@GetMapping("/login/permission/project")
Result<GetLoginPermissionProjectResponse> getLoginPermissionProject(@NotBlank(message = "租户业务id不能为空") @RequestParam(value = "tenantBizId") String tenantBizId,
@NotBlank(message = "项目业务id不能为空") @RequestParam(value = "projectBizId") String projectBizId);
/**
* 权限-管理端-获取当前登录用户绑定的当前项目用户角色菜单列表
* @return
*/
@GetMapping("/login/permission/project/getMenuRouters")
Result<List<ApiLoginMenuInfoResponse>> getProjectMenuRouters(@NotBlank(message = "项目业务id不能为空") @RequestParam(value = "projectBizId") String projectBizId);
/**
* 权限-管理端-获取当前登录用户是否有权限访问该项目
* @return
*/
@GetMapping("/login/permission/project/visit")
Result<Boolean> isProjectVisit(@NotBlank(message = "项目业务id不能为空") @RequestParam(value = "projectBizId") String projectBizId);
}
package com.yd.user.feign.fallback.reldeptuser;
import com.yd.common.result.Result;
import com.yd.user.feign.client.reldeptuser.ApiRelDeptUserFeignClient;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserDelRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportAddRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 用户服务-部门-用户关系信息Feign降级处理
*/
@Slf4j
@Component
public class ApiRelDeptUserFeignFallbackFactory implements FallbackFactory<ApiRelDeptUserFeignClient> {
@Override
public ApiRelDeptUserFeignClient create(Throwable cause) {
return new ApiRelDeptUserFeignClient() {
@Override
public Result page(ApiRelTenantDeptUserPageRequest request) {
return null;
}
@Override
public Result del(ApiRelTenantDeptUserDelRequest request) {
return null;
}
@Override
public Result importPage(ApiRelTenantDeptUserImportPageRequest request) {
return null;
}
@Override
public Result importAdd(ApiRelTenantDeptUserImportAddRequest request) {
return null;
}
};
}
}
package com.yd.user.feign.fallback.reltenantdept;
import com.yd.common.result.Result;
import com.yd.user.feign.client.reltenantdept.ApiRelTenantDeptFeignClient;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListAddRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
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 ApiRelTenantDeptFeignFallbackFactory implements FallbackFactory<ApiRelTenantDeptFeignClient> {
@Override
public ApiRelTenantDeptFeignClient create(Throwable cause) {
return new ApiRelTenantDeptFeignClient() {
@Override
public Result page(ApiRelTenantDeptListPageRequest request) {
return null;
}
@Override
public Result<List<ApiRelTenantDeptTreeListResponse>> tree(ApiRelTenantDeptTreeListRequest request) {
return null;
}
@Override
public Result addDeptList(ApiRelTenantDeptListAddRequest request) {
return null;
}
@Override
public Result del(Long id) {
return null;
}
@Override
public Result<List<ApiRelTenantDeptImportQueryDeptTreeResponse>> importQueryDeptTree(ApiRelTenantDeptImportQueryDeptTreeRequest request) {
return null;
}
@Override
public Result<List<String>> selectedList(String tenantBizId) {
return null;
}
};
}
}
package com.yd.user.feign.fallback.sysdept;
import com.yd.common.result.Result;
import com.yd.user.feign.client.sysdept.ApiSysDeptFeignClient;
import com.yd.user.feign.request.sysdept.*;
import com.yd.user.feign.response.sysdept.ApiSysDeptDetailResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
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降级处理
*/
@Slf4j
@Component
public class ApiSysDeptFeignFallbackFactory implements FallbackFactory<ApiSysDeptFeignClient> {
@Override
public ApiSysDeptFeignClient create(Throwable cause) {
return new ApiSysDeptFeignClient() {
@Override
public Result<List<ApiSysDeptTreeListResponse>> treeList(ApiSysDeptTreeListRequest request) {
return null;
}
@Override
public Result page(ApiSysDeptPageRequest request) {
return null;
}
@Override
public Result companyPage(ApiSysDeptCompanyPageRequest request) {
return null;
}
@Override
public Result<ApiSysDeptDetailResponse> detail(@NotBlank(message = "部门唯一标识(业务ID)不能为空") String deptBizId) {
return null;
}
@Override
public Result add(ApiSysDeptAddRequest request) {
return null;
}
@Override
public Result edit(ApiSysDeptEditRequest request) {
return null;
}
@Override
public Result del(@NotBlank(message = "部门唯一标识(业务ID)不能为空") String deptBizId) {
return null;
}
@Override
public Result editStatus(@NotBlank(message = "部门唯一标识(业务ID)不能为空") String deptBizId, @NotNull(message = "状态不能为空") Integer status) {
return null;
}
};
}
}
......@@ -6,6 +6,7 @@ import com.yd.user.feign.client.sysuser.ApiSysUserFeignClient;
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.login.GetLoginPermissionProjectResponse;
import com.yd.user.feign.response.sysuser.ApiSysUserDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
......@@ -74,6 +75,21 @@ public class ApiSysUserFeignFallbackFactory implements FallbackFactory<ApiSysUse
return null;
}
@Override
public Result<GetLoginPermissionProjectResponse> getLoginPermissionProject(String tenantBizId,String projectBizId) {
return null;
}
@Override
public Result<List<ApiLoginMenuInfoResponse>> getProjectMenuRouters(String projectBizId) {
return null;
}
@Override
public Result<Boolean> isProjectVisit(String projectBizId) {
return null;
}
};
}
}
package com.yd.user.feign.request.reldeptuser;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Data
public class ApiRelTenantDeptUserDelRequest {
/**
* 部门-用户关系主键id
*/
@NotNull(message = "部门-用户关系主键id不能为空")
private Long id;
}
package com.yd.user.feign.request.reldeptuser;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiRelTenantDeptUserImportAddRequest {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 部门唯一业务ID
*/
@NotBlank(message = "部门唯一业务ID不能为空")
private String deptBizId;
/**
* 选中的唯一业务ID列表
*/
@NotEmpty(message = "选中的唯一业务ID列表不能为空")
private List<String> userBizIdList;
}
package com.yd.user.feign.request.reldeptuser;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiRelTenantDeptUserImportPageRequest extends PageDto {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 部门唯一业务ID
*/
@NotBlank(message = "部门唯一业务ID不能为空")
private String deptBizId;
/**
* 账号
*/
private String userName;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
}
package com.yd.user.feign.request.reldeptuser;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiRelTenantDeptUserPageRequest extends PageDto {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 部门唯一业务ID
*/
@NotBlank(message = "部门唯一业务ID不能为空")
private String deptBizId;
/**
* 账号
*/
private String userName;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
}
package com.yd.user.feign.request.reltenantdept;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiRelTenantDeptImportQueryDeptTreeRequest {
/**
* 租户id
*/
@NotBlank(message = "租户id不能为空")
private String tenantBizId;
/**
* 部门名称
*/
private String deptName;
}
package com.yd.user.feign.request.reltenantdept;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiRelTenantDeptListAddRequest {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 部门唯一标识(业务ID) 列表(选中列表)
*/
@NotEmpty(message = "部门唯一标识(业务ID) 列表(选中列表)不能为空")
private List<String> deptBizIdList;
}
package com.yd.user.feign.request.reltenantdept;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiRelTenantDeptListPageRequest extends PageDto {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 部门名称
*/
private String deptName;
}
package com.yd.user.feign.request.reltenantdept;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiRelTenantDeptTreeListRequest {
/**
* 租户唯一标识(业务ID)
*/
@NotBlank(message = "租户唯一标识(业务ID)不能为空")
private String tenantBizId;
/**
* 部门名称
*/
private String deptName;
}
package com.yd.user.feign.request.sysdept;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiSysDeptAddRequest {
/**
* 类型(1:部门 2:公司)
*/
@NotNull(message = "部门类型不能为空")
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
@NotBlank(message = "部门名称不能为空")
private String deptName;
/**
* 父部门ID
*/
@NotBlank(message = "父部门ID不能为空")
private String parentBizId;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(0:停用 1:启用)
*/
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
@NotNull(message = "作用域不能为空")
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
}
package com.yd.user.feign.request.sysdept;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiSysDeptCompanyPageRequest extends PageDto {
/**
* 部门名称
*/
private String deptName;
}
package com.yd.user.feign.request.sysdept;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class ApiSysDeptEditRequest {
@NotNull(message = "部门主键id不能为空")
private Long id;
/**
* 部门唯一标识(业务ID)
*/
@NotBlank(message = "部门唯一业务标识不能为空")
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
@NotNull(message = "部门类型不能为空")
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
@NotBlank(message = "部门名称不能为空")
private String deptName;
/**
* 父部门ID
*/
@NotBlank(message = "父部门ID不能为空")
private String parentBizId;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(0:停用 1:启用)
*/
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
@NotNull(message = "作用域不能为空")
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
}
package com.yd.user.feign.request.sysdept;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiSysDeptPageRequest extends PageDto {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 部门名称
*/
private String deptName;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
}
package com.yd.user.feign.request.sysdept;
import lombok.Data;
@Data
public class ApiSysDeptTreeListRequest {
/**
* 当前登录用户所属的租户id(当前页面右上角显示的租户)
*/
private String loginTenantBizId;
/**
* 部门名称
*/
private String deptName;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
}
......@@ -73,6 +73,11 @@ public class ApiSysUserAddRequest {
*/
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 用户属性(1-业务员(销售) 2-签单员)
*/
private Integer attribute;
//
// /**
// * 用户来源(1:系统创建...)
......
......@@ -81,6 +81,11 @@ public class ApiSysUserEditRequest {
@NotNull(message = "状态不能为空")
private Integer status;
/**
* 用户属性(1-业务员(销售) 2-签单员)
*/
private Integer attribute;
// /**
// * 用户来源(1:系统创建...)
// */
......
......@@ -5,7 +5,7 @@ import lombok.Data;
import java.util.List;
/**
* 当前登录用户绑定的租户被分配的菜单集合(当前租户用户菜单集合)
* 当前登录用户绑定的租户/项目被分配的菜单集合(当前户/项目用户菜单集合)
*/
@Data
public class ApiLoginMenuInfoResponse {
......@@ -41,6 +41,11 @@ public class ApiLoginMenuInfoResponse {
private String path;
/**
* 路由名称
*/
private String routeName;
/**
* 组件路径
*/
private String component;
......
package com.yd.user.feign.response.login;
import lombok.Data;
import java.util.List;
/**
* 权限-管理端-获取登录后的项目权限信息
*/
@Data
public class GetLoginPermissionProjectResponse {
/**
* 是否是初始密码
*/
private Boolean isDefaultModifyPwd = false;
/**
* 是否是过期密码
*/
private Boolean isPasswordExpired = false;
/**
* 当前登录的用户基础信息
*/
private ApiLoginUserInfoResponse apiLoginUserInfoResponse;
/**
* 当前租户基础信息
*/
private ApiLoginTenantInfoResponse apiLoginTenantInfoResponse;
/**
* 当前项目基础信息
*/
private ApiLoginProjectInfoResponse apiLoginProjectInfoResponse;
/**
* 当前登录用户绑定的当前项目被分配的菜单集合(当前项目用户菜单集合)
*/
private List<ApiLoginMenuInfoResponse> apiLoginMenuInfoResponseList;
/**
* 当前登录用户绑定的当前项目被分配的角色编码集合(当前项目用户角色编码集合)
*/
private List<String> roles;
/**
* 当前登录用户绑定的当前项目被分配的控制页面内的具体操作(按钮级权限)集合(当前项目用户所拥有的所有按钮及权限集合)
*/
private List<String> permissions;
}
package com.yd.user.feign.response.reldeptuser;
import lombok.Data;
@Data
public class ApiRelTenantDeptUserImportPageResponse {
/**
* 用户主键ID
*/
private Long id;
/**
* 用户唯一标识(业务ID)
*/
private String userBizId;
/**
* 账号
*/
private String userName;
/**
* 真实姓名
*/
private String realName;
/**
* 昵称
*/
private String nickName;
/**
* 头像URL
*/
private String avatar;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
/**
* 性别(0:未知 1:男 2:女)
*/
private Integer gender;
/**
* 用户属性(1-业务员(销售) 2-签单员)
*/
private Integer attribute;
}
package com.yd.user.feign.response.reldeptuser;
import lombok.Data;
@Data
public class ApiRelTenantDeptUserPageResponse {
/**
* 部门-用户关系主键id
*/
private Long id;
/**
* 租户ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:租户级)
*/
private String tenantBizId;
/**
* 部门唯一业务ID
*/
private String deptBizId;
/**
* 用户唯一业务ID
*/
private String userBizId;
/**
* 账号
*/
private String userName;
/**
* 真实姓名
*/
private String realName;
/**
* 昵称
*/
private String nickName;
/**
* 邮箱
*/
private String email;
/**
* 手机号
*/
private String mobile;
/**
* 性别(0:未知 1:男 2:女)
*/
private Integer gender;
/**
* 用户属性(1-业务员(销售) 2-签单员)
*/
private Integer attribute;
}
package com.yd.user.feign.response.reltenantdept;
import lombok.Data;
import java.util.List;
@Data
public class ApiRelTenantDeptImportQueryDeptTreeResponse {
/**
* 部门表主键id
*/
private Long id;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 部门名称
*/
private String deptName;
/**
* 子级部门
*/
private List<ApiRelTenantDeptImportQueryDeptTreeResponse> children;
}
package com.yd.user.feign.response.reltenantdept;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ApiRelTenantDeptListPageResponse {
/**
* 租户和部门关系主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 部门主键id
*/
private Long deptId;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
private String deptName;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 子级部门
*/
private List<ApiRelTenantDeptListPageResponse> children = new ArrayList<>();
}
package com.yd.user.feign.response.reltenantdept;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ApiRelTenantDeptTreeListResponse {
/**
* 租户和部门关系主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 部门主键id
*/
private Long deptId;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
private String deptName;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 子级部门
*/
private List<ApiRelTenantDeptTreeListResponse> children = new ArrayList<>();
}
package com.yd.user.feign.response.sysdept;
import lombok.Data;
@Data
public class ApiSysDeptCompanyPageResponse {
/**
* 主键id
*/
private Long id;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
private String deptName;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 作用域(1:系统级(全局) 2:租户级 3:项目级)
*/
private Integer scope;
/**
* 所属租户ID(业务id)
*/
private String tenantBizId;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
}
package com.yd.user.feign.response.sysdept;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class ApiSysDeptDetailResponse {
/**
* 部门主键id
*/
private Long id;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
private String deptName;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 父子级列表(点符号拼接)
*/
private String ancestors;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(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 String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.user.feign.response.sysdept;
import lombok.Data;
import java.util.List;
@Data
public class ApiSysDeptPageResponse {
/**
* 主键id
*/
private Long id;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
private String deptName;
/**
* 父ID(树绑定的父id, 展示作用)
*/
private String parentId;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 父子级列表(点符号拼接)
*/
private String ancestors;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(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<ApiSysDeptPageResponse> children;
}
package com.yd.user.feign.response.sysdept;
import lombok.Data;
import java.util.List;
@Data
public class ApiSysDeptTreeListResponse {
/**
* 主键id
*/
private Long id;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 类型(1:部门 2:公司)
*/
private Integer type;
/**
* 部门属性(0-未知 1-保险 2-中介)
*/
private Integer attribute;
/**
* 部门名称
*/
private String deptName;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 父子级列表(点符号拼接)
*/
private String ancestors;
/**
* 显示顺序
*/
private Integer orderNum;
/**
* 联系电话
*/
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 状态(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<ApiSysDeptTreeListResponse> children;
}
......@@ -132,7 +132,7 @@ public class ApiSysMenuDetailResponse {
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -87,7 +87,7 @@ public class ApiSysProjectDetailResponse {
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -71,7 +71,7 @@ public class ApiSysRoleDetailResponse {
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -103,7 +103,7 @@ public class ApiSysTenantDetailResponse {
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -95,6 +95,11 @@ public class ApiSysUserDetailResponse {
private Integer sourceType;
/**
* 用户属性(1-业务员(销售) 2-签单员)
*/
private Integer attribute;
/**
* 通用备注
*/
private String remark;
......@@ -102,7 +107,7 @@ public class ApiSysUserDetailResponse {
/**
* 删除标识: 0-正常, 1-删除
*/
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -82,4 +82,8 @@ public class ApiSysUserPageResponse {
*/
private LocalDateTime createTime;
/**
* 用户属性(1-业务员(销售) 2-签单员)
*/
private Integer attribute;
}
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.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse;
import com.yd.user.service.model.RelDeptUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
......@@ -9,8 +16,13 @@ import com.yd.user.service.model.RelDeptUser;
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
public interface RelDeptUserMapper extends BaseMapper<RelDeptUser> {
IPage<ApiRelTenantDeptUserPageResponse> page(@Param("page") Page<ApiRelTenantDeptUserPageResponse> page,
@Param("request") ApiRelTenantDeptUserPageRequest request);
IPage<ApiRelTenantDeptUserImportPageResponse> importPage(@Param("page") Page<ApiRelTenantDeptUserImportPageResponse> page,
@Param("request") ApiRelTenantDeptUserImportPageRequest request);
}
package com.yd.user.api.controller;
package com.yd.user.service.dao;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.yd.user.service.model.RelProjectDept;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 部门表 前端控制器
* 项目-部门关系表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
@RestController
@RequestMapping("/sysDept")
public class SysDeptController {
public interface RelProjectDeptMapper extends BaseMapper<RelProjectDept> {
}
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.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuListPageRequest;
import com.yd.user.feign.request.reltenantmenu.ApiRelTenantMenuTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuImportQueryMenuTreeResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuListPageResponse;
import com.yd.user.feign.response.reltenantmenu.ApiRelTenantMenuTreeListResponse;
import com.yd.user.service.model.RelTenantDept;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
* 租户-部门关系表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
public interface RelTenantDeptMapper extends BaseMapper<RelTenantDept> {
IPage<ApiRelTenantDeptListPageResponse> page(@Param("page") IPage<ApiRelTenantDeptListPageResponse> page,
@Param("request") ApiRelTenantDeptListPageRequest request);
List<ApiRelTenantDeptTreeListResponse> treeList(@Param("request") ApiRelTenantDeptTreeListRequest request);
List<ApiRelTenantDeptImportQueryDeptTreeResponse> importQueryDeptTreeList(@Param("request") ApiRelTenantDeptImportQueryDeptTreeRequest 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.sysdept.ApiSysDeptCompanyPageRequest;
import com.yd.user.feign.request.sysdept.ApiSysDeptPageRequest;
import com.yd.user.feign.request.sysmenu.ApiSysMenuPageRequest;
import com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.model.SysDept;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
......@@ -13,4 +26,17 @@ import com.yd.user.service.model.SysDept;
*/
public interface SysDeptMapper extends BaseMapper<SysDept> {
List<ApiSysDeptTreeListResponse> treeList(@Param("loginTenantBizId") String loginTenantBizId,
@Param("isAdmin") Boolean isAdmin,
@Param("deptName") String deptName,
@Param("projectBizIdList") List<String> projectBizIdList);
IPage<ApiSysDeptPageResponse> page(@Param("page") Page<ApiSysDeptPageResponse> page,
@Param("request") ApiSysDeptPageRequest request,
@Param("isAdmin") Boolean isAdmin,
@Param("projectBizIdList") List<String> projectBizIdList,
@Param("loginTenantBizId") String loginTenantBizId);
IPage<ApiSysDeptCompanyPageResponse> companyPage(@Param("page") Page<ApiSysDeptCompanyPageResponse> page,
@Param("request") ApiSysDeptCompanyPageRequest request);
}
package com.yd.user.service.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RelProjectUserDto {
/**
* 项目ID(业务id)
*/
private String projectBizId;
/**
* 用户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 RelTenantDeptDto {
/**
* 租户部门关系主键id
*/
private Long id;
/**
* 租户ID(业务id)
*/
private String tenantBizId;
/**
* 部门ID(业务id)
*/
private String deptBizId;
}
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 SysDeptDto {
/**
* 部门表主键id
*/
private Long id;
/**
* 部门唯一标识(业务ID)
*/
private String deptBizId;
/**
* 部门唯一标识(业务ID)集合
*/
private List<String> deptBizIdList;
/**
* 父部门ID
*/
private String parentBizId;
/**
* 部门名称
*/
private String deptName;
/**
* 查询是否排除当前部门唯一标识数据,默认false不排除,true的话projectBizId必传
*/
@Builder.Default
private Boolean isExcludeMy = false;
}
......@@ -4,12 +4,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
......@@ -17,11 +15,10 @@ import java.time.LocalDateTime;
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
@Getter
@Setter
@ToString
@TableName("rel_dept_user")
public class RelDeptUser implements Serializable {
......@@ -31,13 +28,25 @@ public class RelDeptUser implements Serializable {
private Long id;
/**
* 部门ID(业务id)
* 租户ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:租户级)
*/
@TableField("tenant_biz_id")
private String tenantBizId;
/**
* 项目ID(业务id)(冗余字段,目的当前关系是发生在哪个作用域下:项目级)
*/
@TableField("project_biz_id")
private String projectBizId;
/**
* 部门唯一业务ID
*/
@TableField("dept_biz_id")
private String deptBizId;
/**
* 用户ID(业务id)
* 用户唯一业务ID
*/
@TableField("user_biz_id")
private String userBizId;
......@@ -58,7 +67,7 @@ public class RelDeptUser implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelGroupRole implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelGroupUser implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
package com.yd.user.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 项目-部门关系表
* </p>
*
* @author zxm
* @since 2025-08-25
*/
@Getter
@Setter
@TableName("rel_project_dept")
public class RelProjectDept implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 项目ID(业务id)
*/
@TableField("project_biz_id")
private String projectBizId;
/**
* 部门唯一业务ID
*/
@TableField("dept_biz_id")
private String deptBizId;
/**
* 状态(0:禁用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
......@@ -58,7 +58,7 @@ public class RelProjectMenu implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelProjectRole implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelProjectUser implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelProjectUserGroup implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -70,7 +70,7 @@ public class RelRoleMenu implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -4,24 +4,21 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展)
* 租户-部门关系表
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
@Getter
@Setter
@ToString
@TableName("rel_tenant_dept")
public class RelTenantDept implements Serializable {
......@@ -37,7 +34,7 @@ public class RelTenantDept implements Serializable {
private String tenantBizId;
/**
* 部门ID(业务id)
* 部门唯一业务ID
*/
@TableField("dept_biz_id")
private String deptBizId;
......@@ -58,7 +55,7 @@ public class RelTenantDept implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelTenantMenu implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelTenantProject implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelTenantRole implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelTenantUser implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -58,7 +58,7 @@ public class RelTenantUserGroup implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -70,7 +70,7 @@ public class RelUserRole implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -43,7 +43,7 @@ public class SysDept implements Serializable {
private Integer type;
/**
* 组织属性(0-未知 1-保险 2-中介)
* 部门属性(0-未知 1-保险 2-中介)
*/
@TableField("attribute")
private Integer attribute;
......@@ -58,7 +58,7 @@ public class SysDept implements Serializable {
* 父部门ID
*/
@TableField("parent_biz_id")
private Long parentBizId;
private String parentBizId;
/**
* 父子级列表(点符号拼接)
......@@ -118,7 +118,7 @@ public class SysDept implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -64,7 +64,7 @@ public class SysDict implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -82,7 +82,7 @@ public class SysDictItem implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -112,7 +112,7 @@ public class SysLoginLog implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -154,7 +154,7 @@ public class SysMenu implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -142,7 +142,7 @@ public class SysOperLog implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -70,7 +70,7 @@ public class SysPost implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -115,7 +115,7 @@ public class SysProject implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -100,7 +100,7 @@ public class SysRole implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -139,7 +139,7 @@ public class SysTenant implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -130,7 +130,7 @@ public class SysUser implements Serializable {
private Integer sourceType;
/**
* 用户属性(0-未知 1-业务员(销售) 2-签单员)
* 用户属性(1-业务员(销售) 2-签单员)
*/
@TableField("attribute")
private Integer attribute;
......@@ -145,7 +145,7 @@ public class SysUser implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
......@@ -46,7 +46,7 @@ public class SysUserGroup implements Serializable {
* 父用户组ID
*/
@TableField("parent_biz_id")
private Long parentBizId;
private String parentBizId;
/**
* 父子级列表(点符号拼接)
......@@ -76,7 +76,7 @@ public class SysUserGroup implements Serializable {
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Boolean isDeleted;
private Integer isDeleted;
/**
* 创建人ID
......
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.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse;
import com.yd.user.service.model.RelDeptUser;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -9,8 +15,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
public interface IRelDeptUserService extends IService<RelDeptUser> {
IPage<ApiRelTenantDeptUserPageResponse> page(Page<ApiRelTenantDeptUserPageResponse> page,
ApiRelTenantDeptUserPageRequest request);
RelDeptUser queryOne(Long id);
IPage<ApiRelTenantDeptUserImportPageResponse> importPage(Page<ApiRelTenantDeptUserImportPageResponse> page,
ApiRelTenantDeptUserImportPageRequest request);
}
package com.yd.user.service.service;
import com.yd.user.service.model.RelProjectDept;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 项目-部门关系表 服务类
* </p>
*
* @author zxm
* @since 2025-08-25
*/
public interface IRelProjectDeptService extends IService<RelProjectDept> {
}
......@@ -6,10 +6,13 @@ import com.yd.user.feign.request.relprojectuser.ApiRelProjectUserListPageRequest
import com.yd.user.feign.request.relprojectuser.ApiRelProjectUserSelectPageRequest;
import com.yd.user.feign.response.relprojectuser.ApiRelProjectUserListPageResponse;
import com.yd.user.feign.response.relprojectuser.ApiRelProjectUserSelectPageResponse;
import com.yd.user.service.dto.RelProjectUserDto;
import com.yd.user.service.model.RelProjectUser;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.RelTenantUser;
import java.util.List;
/**
* <p>
* 项目-用户关系表(多对多关系) 服务类
......@@ -27,4 +30,6 @@ public interface IRelProjectUserService extends IService<RelProjectUser> {
ApiRelProjectUserSelectPageRequest request);
RelProjectUser queryOne(Long id);
List<RelProjectUser> queryList(RelProjectUserDto dto);
}
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.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
import com.yd.user.service.dto.RelTenantDeptDto;
import com.yd.user.service.model.RelTenantDept;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) 服务类
* 租户-部门关系表 服务类
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
public interface IRelTenantDeptService extends IService<RelTenantDept> {
IPage<ApiRelTenantDeptListPageResponse> page(Page<ApiRelTenantDeptListPageResponse> page,
ApiRelTenantDeptListPageRequest request);
List<ApiRelTenantDeptTreeListResponse> treeList(ApiRelTenantDeptTreeListRequest request);
Boolean removeByTenantBizId(String tenantBizId);
RelTenantDept queryOne(Long id);
List<ApiRelTenantDeptImportQueryDeptTreeResponse> importQueryDeptTreeList(ApiRelTenantDeptImportQueryDeptTreeRequest request);
List<RelTenantDept> queryList(RelTenantDeptDto dto);
}
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.sysdept.ApiSysDeptCompanyPageRequest;
import com.yd.user.feign.request.sysdept.ApiSysDeptPageRequest;
import com.yd.user.feign.request.sysmenu.ApiSysMenuPageRequest;
import com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.dto.SysDeptDto;
import com.yd.user.service.dto.SysMenuDto;
import com.yd.user.service.model.SysDept;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.SysMenu;
import java.util.List;
/**
* <p>
......@@ -13,4 +28,21 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ISysDeptService extends IService<SysDept> {
List<ApiSysDeptTreeListResponse> treeList(String loginTenantBizId,
Boolean isAdmin,
String deptName,
List<String> projectBizIdList);
IPage<ApiSysDeptPageResponse> page(Page<ApiSysDeptPageResponse> page,
ApiSysDeptPageRequest request,
Boolean isAdmin,
List<String> projectBizIdList,
String loginTenantBizId);
IPage<ApiSysDeptCompanyPageResponse> companyPage(Page<ApiSysDeptCompanyPageResponse> page,
ApiSysDeptCompanyPageRequest request);
SysDept queryOne(String deptBizId);
List<SysDept> queryList(SysDeptDto dto);
}
package com.yd.user.service.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserImportPageRequest;
import com.yd.user.feign.request.reldeptuser.ApiRelTenantDeptUserPageRequest;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse;
import com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse;
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;
/**
......@@ -13,10 +18,30 @@ import org.springframework.stereotype.Service;
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
@Service
@Primary
public class RelDeptUserServiceImpl extends ServiceImpl<RelDeptUserMapper, RelDeptUser> implements IRelDeptUserService {
@Override
public IPage<ApiRelTenantDeptUserPageResponse> page(Page<ApiRelTenantDeptUserPageResponse> page,
ApiRelTenantDeptUserPageRequest request) {
return baseMapper.page(page,request);
}
/**
* 主键拆查询单个对象
* @param id
* @return
*/
@Override
public RelDeptUser queryOne(Long id) {
return this.getById(id);
}
@Override
public IPage<ApiRelTenantDeptUserImportPageResponse> importPage(Page<ApiRelTenantDeptUserImportPageResponse> page,
ApiRelTenantDeptUserImportPageRequest request) {
return baseMapper.importPage(page,request);
}
}
package com.yd.user.service.service.impl;
import com.yd.user.service.model.RelProjectDept;
import com.yd.user.service.dao.RelProjectDeptMapper;
import com.yd.user.service.service.IRelProjectDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 项目-部门关系表 服务实现类
* </p>
*
* @author zxm
* @since 2025-08-25
*/
@Service
public class RelProjectDeptServiceImpl extends ServiceImpl<RelProjectDeptMapper, RelProjectDept> implements IRelProjectDeptService {
}
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.relprojectuser.ApiRelProjectUserListPageRequest;
import com.yd.user.feign.request.relprojectuser.ApiRelProjectUserSelectPageRequest;
import com.yd.user.feign.response.relprojectuser.ApiRelProjectUserListPageResponse;
import com.yd.user.feign.response.relprojectuser.ApiRelProjectUserSelectPageResponse;
import com.yd.user.service.dto.RelProjectUserDto;
import com.yd.user.service.model.RelProjectUser;
import com.yd.user.service.dao.RelProjectUserMapper;
import com.yd.user.service.model.RelRoleMenu;
import com.yd.user.service.service.IRelProjectUserService;
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>
......@@ -55,4 +63,18 @@ public class RelProjectUserServiceImpl extends ServiceImpl<RelProjectUserMapper,
public RelProjectUser queryOne(Long id) {
return this.getById(id);
}
/**
* 查询关系列表
* @param dto
* @return
*/
@Override
public List<RelProjectUser> queryList(RelProjectUserDto dto) {
List<RelProjectUser> list = baseMapper.selectList(new LambdaQueryWrapper<RelProjectUser>()
.eq(StringUtils.isNotBlank(dto.getProjectBizId()),RelProjectUser::getProjectBizId,dto.getProjectBizId())
.eq(StringUtils.isNotBlank(dto.getUserBizId()),RelProjectUser::getUserBizId,dto.getUserBizId())
);
return list;
}
}
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.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptListPageRequest;
import com.yd.user.feign.request.reltenantdept.ApiRelTenantDeptTreeListRequest;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse;
import com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse;
import com.yd.user.service.dto.RelTenantDeptDto;
import com.yd.user.service.model.RelTenantDept;
import com.yd.user.service.dao.RelTenantDeptMapper;
import com.yd.user.service.model.RelTenantMenu;
import com.yd.user.service.service.IRelTenantDeptService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* <p>
* 租户-部门关系表(正常来说一对多,加关系表方便扩展) 服务实现类
* 租户-部门关系表 服务实现类
* </p>
*
* @author zxm
* @since 2025-07-31
* @since 2025-08-25
*/
@Service
@Primary
public class RelTenantDeptServiceImpl extends ServiceImpl<RelTenantDeptMapper, RelTenantDept> implements IRelTenantDeptService {
@Override
public IPage<ApiRelTenantDeptListPageResponse> page(Page<ApiRelTenantDeptListPageResponse> page,
ApiRelTenantDeptListPageRequest request) {
return baseMapper.page(page,request);
}
@Override
public List<ApiRelTenantDeptTreeListResponse> treeList(ApiRelTenantDeptTreeListRequest request) {
return baseMapper.treeList(request);
}
/**
* 根据租户id删除关系
* @param tenantBizId
* @return
*/
@Override
public Boolean removeByTenantBizId(String tenantBizId) {
return this.remove(new LambdaQueryWrapper<RelTenantDept>().eq(RelTenantDept::getTenantBizId,tenantBizId));
}
/**
* 查询单个对象
* @param id
* @return
*/
@Override
public RelTenantDept queryOne(Long id) {
return this.getById(id);
}
@Override
public List<ApiRelTenantDeptImportQueryDeptTreeResponse> importQueryDeptTreeList(ApiRelTenantDeptImportQueryDeptTreeRequest request) {
return baseMapper.importQueryDeptTreeList(request);
}
/**
* 根据条件查询列表
* @param dto
* @return
*/
@Override
public List<RelTenantDept> queryList(RelTenantDeptDto dto) {
List<RelTenantDept> list = baseMapper.selectList(new LambdaQueryWrapper<RelTenantDept>()
.eq(!Objects.isNull(dto.getId()),RelTenantDept::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getTenantBizId()),RelTenantDept::getTenantBizId,dto.getTenantBizId())
.eq(StringUtils.isNotBlank(dto.getDeptBizId()),RelTenantDept::getDeptBizId,dto.getDeptBizId())
);
return list;
}
}
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.sysdept.ApiSysDeptCompanyPageRequest;
import com.yd.user.feign.request.sysdept.ApiSysDeptPageRequest;
import com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse;
import com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse;
import com.yd.user.service.dto.SysDeptDto;
import com.yd.user.service.model.SysDept;
import com.yd.user.service.dao.SysDeptMapper;
import com.yd.user.service.model.SysMenu;
import com.yd.user.service.service.ISysDeptService;
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>
......@@ -19,4 +34,61 @@ import org.springframework.stereotype.Service;
@Primary
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements ISysDeptService {
/**
* 条件搜索构建部门树的数据
* @param loginTenantBizId
* @param isAdmin
* @param deptName
* @param projectBizIdList
* @return
*/
@Override
public List<ApiSysDeptTreeListResponse> treeList(String loginTenantBizId,
Boolean isAdmin,
String deptName,
List<String> projectBizIdList) {
return baseMapper.treeList(loginTenantBizId,isAdmin,deptName,projectBizIdList);
}
@Override
public IPage<ApiSysDeptPageResponse> page(Page<ApiSysDeptPageResponse> page,
ApiSysDeptPageRequest request,
Boolean isAdmin,
List<String> projectBizIdList,
String loginTenantBizId) {
return baseMapper.page(page,request,isAdmin,projectBizIdList,loginTenantBizId);
}
@Override
public IPage<ApiSysDeptCompanyPageResponse> companyPage(Page<ApiSysDeptCompanyPageResponse> page,
ApiSysDeptCompanyPageRequest request) {
return baseMapper.companyPage(page,request);
}
/**
* 查询单个对象
* @param deptBizId
* @return
*/
@Override
public SysDept queryOne(String deptBizId) {
return this.getOne(new LambdaQueryWrapper<SysDept>().eq(SysDept::getDeptBizId,deptBizId));
}
/**
* 根据条件查询列表
* @param dto
* @return
*/
@Override
public List<SysDept> queryList(SysDeptDto dto) {
List<SysDept> list = baseMapper.selectList(new LambdaQueryWrapper<SysDept>()
.eq(!Objects.isNull(dto.getId()),SysDept::getId,dto.getId())
.eq(StringUtils.isNotBlank(dto.getDeptBizId()) && !dto.getIsExcludeMy(),SysDept::getDeptBizId,dto.getDeptBizId())
.eq(StringUtils.isNotBlank(dto.getDeptName()),SysDept::getDeptName,dto.getDeptName())
.in(!CollectionUtils.isEmpty(dto.getDeptBizIdList()),SysDept::getDeptBizId,dto.getDeptBizIdList())
.ne(dto.getIsExcludeMy(),SysDept::getDeptBizId,dto.getDeptBizId())
);
return list;
}
}
......@@ -8,8 +8,8 @@ public class MyBatisPlusCodeGenerator {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd?serverTimezone=GMT%2B8", "root", "123456")
.globalConfig(builder -> {
builder.author("zxm")
.outputDir("src/main/java/com/yd/user/service");
// .outputDir("D:/soft/ideaproject/v2/yd-user/yd-user-service/src/main/java");
// .outputDir("src/main/java/com/yd/user/service");
.outputDir("D:/soft/ideaproject/v2/yd-user/yd-user-service/src/main/java");
})
.packageConfig(builder -> {
builder.parent("com.yd.user.service")
......@@ -21,14 +21,15 @@ public class MyBatisPlusCodeGenerator {
})
.strategyConfig(builder -> {
builder.addInclude(
"rel_dept_user", "rel_group_role", "rel_group_user",
"rel_project_menu", "rel_project_role", "rel_project_user",
"rel_project_user_group", "rel_role_menu", "rel_tenant_dept",
"rel_tenant_menu", "rel_tenant_project", "rel_tenant_role",
"rel_tenant_user", "rel_tenant_user_group", "rel_user_role",
"sys_dept", "sys_dict", "sys_dict_item", "sys_login_log",
"sys_menu", "sys_oper_log", "sys_post", "sys_role",
"sys_tenant", "sys_user", "sys_user_group", "sys_project"
"rel_dept_user", "rel_tenant_dept", "rel_project_dept"
// "rel_dept_user", "rel_group_role", "rel_group_user",
// "rel_project_menu", "rel_project_role", "rel_project_user",
// "rel_project_user_group", "rel_role_menu", "rel_tenant_dept",
// "rel_tenant_menu", "rel_tenant_project", "rel_tenant_role",
// "rel_tenant_user", "rel_tenant_user_group", "rel_user_role",
// "sys_dept", "sys_dict", "sys_dict_item", "sys_login_log",
// "sys_menu", "sys_oper_log", "sys_post", "sys_role",
// "sys_tenant", "sys_user", "sys_user_group", "sys_project"
)
.entityBuilder()
.enableLombok()
......
......@@ -2,4 +2,60 @@
<!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.RelDeptUserMapper">
<select id="page" resultType="com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserPageResponse">
select
rdu.id,rdu.tenant_biz_id,rdu.dept_biz_id,rdu.user_biz_id,
su.user_name,su.real_name,su.nick_name,su.email,su.mobile,su.gender,su.attribute
from rel_dept_user rdu
left join sys_user su on su.user_biz_id = rdu.user_biz_id and su.is_deleted = 0
<where>
and rdu.tenant_biz_id = #{request.tenantBizId}
and rdu.dept_biz_id = #{request.deptBizId}
and rdu.is_deleted = 0
<if test="request.userName != null and request.userName != ''">
and su.user_name like concat('%', #{request.userName}, '%')
</if>
<if test="request.email != null and request.email != ''">
and su.email like concat('%', #{request.email}, '%')
</if>
<if test="request.mobile != null and request.mobile != ''">
and su.mobile like concat('%', #{request.mobile}, '%')
</if>
</where>
</select>
<select id="importPage"
resultType="com.yd.user.feign.response.reldeptuser.ApiRelTenantDeptUserImportPageResponse">
select
su.id,su.user_biz_id,
su.user_name,su.real_name,su.nick_name,su.email,su.mobile,su.gender,su.attribute
from sys_user su
<where>
<if test="request.userName != null and request.userName != ''">
and su.user_name like concat('%', #{request.userName}, '%')
</if>
<if test="request.email != null and request.email != ''">
and su.email like concat('%', #{request.email}, '%')
</if>
<if test="request.mobile != null and request.mobile != ''">
and su.mobile like concat('%', #{request.mobile}, '%')
</if>
and su.is_deleted = 0
and su.user_biz_id
not in( select rdu.user_biz_id from rel_dept_user rdu
where
rdu.tenant_biz_id = #{request.tenantBizId}
and rdu.dept_biz_id = #{request.deptBizId}
and rdu.is_deleted = 0)
</where>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!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.RelProjectDeptMapper">
</mapper>
......@@ -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.RelTenantDeptMapper">
<select id="page" resultType="com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptListPageResponse">
select rtd.id,rtd.tenant_biz_id,sd.id as deptId,
sd.dept_biz_id,sd.type,sd.attribute,sd.dept_name,
sd.parent_biz_id,sd.order_num,sd.phone,sd.email,sd.status,sd.scope
from rel_tenant_dept rtd
inner join sys_dept sd on sd.dept_biz_id = rtd.dept_biz_id and sd.is_deleted = 0
<where>
and rtd.tenant_biz_id = #{request.tenantBizId}
<if test="request.deptName != null and request.deptName != ''">
and sd.dept_name like concat('%', #{request.deptName}, '%')
</if>
and rtd.is_deleted = 0
</where>
</select>
<select id="treeList"
resultType="com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptTreeListResponse">
select rtd.id,rtd.tenant_biz_id,sd.id as deptId,
sd.dept_biz_id,sd.type,sd.attribute,sd.dept_name,
sd.parent_biz_id,sd.order_num,sd.phone,sd.email,sd.status,sd.scope
from rel_tenant_dept rtd
inner join sys_dept sd on sd.dept_biz_id = rtd.dept_biz_id and sd.is_deleted = 0
<where>
and rtd.tenant_biz_id = #{request.tenantBizId}
<if test="request.deptName != null and request.deptName != ''">
and sd.dept_name like concat('%', #{request.deptName}, '%')
</if>
and rtd.is_deleted = 0
</where>
</select>
<select id="importQueryDeptTreeList"
resultType="com.yd.user.feign.response.reltenantdept.ApiRelTenantDeptImportQueryDeptTreeResponse">
select
*
from sys_dept sd
<where>
and ((sd.tenant_biz_id = #{request.tenantBizId} and sd.scope = 2) or sd.scope = 1)
<if test="request.deptName != null and request.deptName != ''">
and sd.dept_name like concat('%', #{request.deptName}, '%')
</if>
and sd.is_deleted = 0
</where>
</select>
</mapper>
......@@ -2,4 +2,73 @@
<!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.SysDeptMapper">
<select id="treeList" resultType="com.yd.user.feign.response.sysdept.ApiSysDeptTreeListResponse">
select sd.*,
st.tenant_name,sp.project_name
from sys_dept sd
left join sys_tenant st on st.tenant_biz_id = sd.tenant_biz_id and st.is_deleted = 0
left join sys_project sp on sp.project_biz_id = sd.project_biz_id and sp.is_deleted = 0
<where>
<if test="!isAdmin">
and ((sd.scope = 2 and sd.tenant_biz_id = #{loginTenantBizId})
<if test="projectBizIdList.size > 0 and projectBizIdList != null">
or (sd.scope = 3 and sd.project_biz_id in
<foreach collection="projectBizIdList" item="item" index="index" open="(" separator=","
close=")">
#{item}
</foreach>
)
</if>
or (sd.scope = 1)
)
</if>
<if test="deptName != null and deptName != ''">
and sd.dept_name like concat('%', #{deptName}, '%')
</if>
and sd.is_deleted = 0
</where>
</select>
<select id="page" resultType="com.yd.user.feign.response.sysdept.ApiSysDeptPageResponse">
select sd.*,
st.tenant_name,sp.project_name,sd.parent_biz_id as parentId
from sys_dept sd
left join sys_tenant st on st.tenant_biz_id = sd.tenant_biz_id and st.is_deleted = 0
left join sys_project sp on sp.project_biz_id = sd.project_biz_id and sp.is_deleted = 0
<where>
<if test="!isAdmin">
and ((sd.scope = 2 and sd.tenant_biz_id = #{loginTenantBizId})
<if test="projectBizIdList.size > 0 and projectBizIdList != null">
or (sd.scope = 3 and sd.project_biz_id in
<foreach collection="projectBizIdList" item="item" index="index" open="(" separator=","
close=")">
#{item}
</foreach>
)
</if>
or (sd.scope = 1)
)
</if>
<if test="request.deptName != null and request.deptName != ''">
and sd.dept_name like concat('%', #{request.deptName}, '%')
</if>
and sd.is_deleted = 0
</where>
</select>
<select id="companyPage" resultType="com.yd.user.feign.response.sysdept.ApiSysDeptCompanyPageResponse">
select sd.* from sys_dept sd
<where>
<if test="request.deptName != null and request.deptName != ''">
and sd.dept_name like concat('%', #{request.deptName}, '%')
</if>
and sd.type = 2 and sd.is_deleted = 0
</where>
</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