Commit 5c43ec9b by 李小龙

整理代码

parent ebd03123
Showing with 1217 additions and 2103 deletions
...@@ -12,15 +12,93 @@ CREATE TABLE `plat_user` ( ...@@ -12,15 +12,93 @@ CREATE TABLE `plat_user` (
`is_tenant` char(1) DEFAULT NULL COMMENT '是否租户账户/租户管理员 0否 1是', `is_tenant` char(1) DEFAULT NULL COMMENT '是否租户账户/租户管理员 0否 1是',
`create_date` datetime NOT NULL COMMENT '创建时间', `create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间', `update_date` datetime NOT NULL COMMENT '更新时间',
`deleted_at` datetime DEFAULT NULL COMMENT '删除时间', `del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`created_by_name` varchar(64) NOT NULL COMMENT '创建人', `created_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by_name` varchar(64) NOT NULL COMMENT '更新人', `update_by` varchar(64) NOT NULL COMMENT '更新人',
`dept_id` varchar(64) DEFAULT NULL COMMENT '部门树id', `org_id` varchar(64) DEFAULT NULL COMMENT '部门树id',
`dept_path` varchar(512) DEFAULT NULL COMMENT '部门树冗余id', `org_path` varchar(512) DEFAULT NULL COMMENT '部门树冗余id',
`remark` varchar(255) DEFAULT NULL COMMENT '备注', `remark` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `plat_user_account_index` (`account`), KEY `plat_user_account_index` (`account`),
KEY `plat_user_dept_id_index` (`dept_id`), KEY `plat_user_org_id_index` (`org_id`),
KEY `plat_user_mobile_index` (`mobile`) KEY `plat_user_mobile_index` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户账号管理'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户账号管理';
CREATE TABLE `plat_role` (
`id` varchar(64) NOT NULL COLLATE utf8mb4_general_ci COMMENT 'id',
`tenant_id` varchar(64) NOT NULL COMMENT '租户id',
`role_name` varchar(100) NOT NULL COMMENT '名称',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`data_scope` varchar(600) DEFAULT NULL COMMENT '数据权限 子公司id 上级可看到下级',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`updated_by` varchar(64) DEFAULT NULL COMMENT '更新人',
`created_by` varchar(64) DEFAULT NULL COMMENT '创建人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='租户端角色';
CREATE TABLE `plat_user_role` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`user_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户id',
`role_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`created_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_user_role_role_id_index` (`role_id`),
KEY `plat_user_role_user_id_index` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端用户角色关联表';
CREATE TABLE `plat_role_menu` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`role_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`menu_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '菜单id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`created_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_role_menu_menu_id_index` (`menu_id`),
KEY `plat_role_menu_role_id_index` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端角色菜单关联表';
CREATE TABLE `plat_org` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`parent_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '父级id',
`name` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '组织名称',
`sort` int DEFAULT NULL COMMENT '排序',
`status` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态 0禁用 1启用',
`type` char(1) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '类型 1-居家 2-机构',
`region` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '管辖区域id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`created_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_org_parent_id_index` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端部门';
CREATE TABLE `plat_role_org` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '租户id',
`role_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色id',
`org_id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '部门树id',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` CHAR(1) DEFAULT NULL COMMENT '删除标识',
`created_by` varchar(64) NOT NULL COMMENT '创建人',
`update_by` varchar(64) NOT NULL COMMENT '更新人',
PRIMARY KEY (`id`),
KEY `plat_role_iorg_id_index` (`org_id`),
KEY `plat_role_role_id_index` (`role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=COMPACT COMMENT='租户端角色部门关联表';
\ No newline at end of file
...@@ -4,7 +4,7 @@ import com.makeit.common.dto.LoginDTO; ...@@ -4,7 +4,7 @@ import com.makeit.common.dto.LoginDTO;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.service.saas.SaasUserService; import com.makeit.service.saas.SaasUserService;
import com.makeit.utils.user.SaasUserLoginVO; import com.makeit.utils.user.saas.SaasUserLoginVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
......
...@@ -7,8 +7,8 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -7,8 +7,8 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action; import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasRoleDTOVO; import com.makeit.module.admin.saas.SaasRoleDTOVO;
import com.makeit.module.admin.saas.PlatRoleMenuDTO; import com.makeit.module.admin.saas.SaasRoleMenuDTO;
import com.makeit.module.admin.saas.PlatUserRoleDTO; import com.makeit.module.admin.saas.SaasUserRoleDTO;
import com.makeit.service.saas.SaasRoleService; import com.makeit.service.saas.SaasRoleService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -93,7 +93,7 @@ public class SaasRoleController { ...@@ -93,7 +93,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "分配用户", code = "saas:role:assignUserList") @Action(module = "saas端-角色", name = "分配用户", code = "saas:role:assignUserList")
@ApiOperation("分配用户") @ApiOperation("分配用户")
@PostMapping("assignUserList") @PostMapping("assignUserList")
public ApiResponseEntity<?> assignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList){//参数要不要是一个对象里 有一个数组 public ApiResponseEntity<?> assignUserList(@RequestBody List<SaasUserRoleDTO> userRoleDTOList){//参数要不要是一个对象里 有一个数组
saasRoleService.assignUserList(userRoleDTOList); saasRoleService.assignUserList(userRoleDTOList);
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
...@@ -101,7 +101,7 @@ public class SaasRoleController { ...@@ -101,7 +101,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "删除分配用户", code = "saas:role:removeAssignUserList") @Action(module = "saas端-角色", name = "删除分配用户", code = "saas:role:removeAssignUserList")
@ApiOperation("删除分配用户") @ApiOperation("删除分配用户")
@PostMapping("removeAssignUserList") @PostMapping("removeAssignUserList")
public ApiResponseEntity<?> removeAssignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList){ public ApiResponseEntity<?> removeAssignUserList(@RequestBody List<SaasUserRoleDTO> userRoleDTOList){
saasRoleService.removeAssignUserList(userRoleDTOList); saasRoleService.removeAssignUserList(userRoleDTOList);
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
...@@ -109,7 +109,7 @@ public class SaasRoleController { ...@@ -109,7 +109,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "分配菜单", code = "saas:role:assignMenuList") @Action(module = "saas端-角色", name = "分配菜单", code = "saas:role:assignMenuList")
@ApiOperation("分配菜单") @ApiOperation("分配菜单")
@PostMapping("assignMenuList") @PostMapping("assignMenuList")
public ApiResponseEntity<?> assignMenuList(@RequestBody PlatRoleMenuDTO roleMenuDTO){ public ApiResponseEntity<?> assignMenuList(@RequestBody SaasRoleMenuDTO roleMenuDTO){
saasRoleService.assignMenuList(roleMenuDTO); saasRoleService.assignMenuList(roleMenuDTO);
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
......
...@@ -9,9 +9,9 @@ import com.makeit.common.response.ApiResponseEntity; ...@@ -9,9 +9,9 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action; import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasUserDTOVO; import com.makeit.module.admin.saas.SaasUserDTOVO;
import com.makeit.module.admin.saas.PlatUserQueryDTO; import com.makeit.module.admin.saas.SaasUserQueryDTO;
import com.makeit.service.saas.SaasUserService; import com.makeit.service.saas.SaasUserService;
import com.makeit.utils.user.SaasUserLoginVO; import com.makeit.utils.user.saas.SaasUserLoginVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -42,33 +42,33 @@ public class SaasUserController { ...@@ -42,33 +42,33 @@ public class SaasUserController {
@Action(module = "SAAS端-用户", name = "分页列表", code = "saas:user:page") @Action(module = "SAAS端-用户", name = "分页列表", code = "saas:user:page")
@ApiOperation("分页列表") @ApiOperation("分页列表")
@PostMapping("page") @PostMapping("page")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> page(@RequestBody PageReqDTO<PlatUserQueryDTO> page){ public ApiResponseEntity<PageVO<SaasUserDTOVO>> page(@RequestBody PageReqDTO<SaasUserQueryDTO> page){
//return ApiResponseUtils.success(saasUserService.page(page)); //return ApiResponseUtils.success(saasUserService.page(page));
return ApiResponseUtils.success(null); return ApiResponseUtils.success(null);
} }
@ApiOperation("分页列表") @ApiOperation("分页列表")
@PostMapping("pageAuthIgnore") @PostMapping("pageAuthIgnore")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> pageAuthIgnore(@RequestBody PageReqDTO<PlatUserQueryDTO> page){ public ApiResponseEntity<PageVO<SaasUserDTOVO>> pageAuthIgnore(@RequestBody PageReqDTO<SaasUserQueryDTO> page){
return ApiResponseUtils.success(saasUserService.page(page)); return ApiResponseUtils.success(saasUserService.page(page));
} }
//@Action(module = "SAAS端-用户", name = "分页列表-排除超级管理员", code = "plat:user:pageNotSuperAdmin") //@Action(module = "SAAS端-用户", name = "分页列表-排除超级管理员", code = "plat:user:pageNotSuperAdmin")
@ApiOperation("分页列表-排除超级管理员") @ApiOperation("分页列表-排除超级管理员")
@PostMapping("pageNotSuperAdmin") @PostMapping("pageNotSuperAdmin")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> pageNotSuperAdmin(@RequestBody PageReqDTO<PlatUserQueryDTO> page){ public ApiResponseEntity<PageVO<SaasUserDTOVO>> pageNotSuperAdmin(@RequestBody PageReqDTO<SaasUserQueryDTO> page){
return ApiResponseUtils.success(saasUserService.pageNoSuperAdmin(page)); return ApiResponseUtils.success(saasUserService.pageNoSuperAdmin(page));
} }
@ApiOperation("分页列表(AuthIgnore)") @ApiOperation("分页列表(AuthIgnore)")
@PostMapping("listAuthIgnore") @PostMapping("listAuthIgnore")
public ApiResponseEntity<List<SaasUserDTOVO>> listAuthIgnore(@RequestBody PlatUserQueryDTO dto){ public ApiResponseEntity<List<SaasUserDTOVO>> listAuthIgnore(@RequestBody SaasUserQueryDTO dto){
return ApiResponseUtils.success(saasUserService.list(dto)); return ApiResponseUtils.success(saasUserService.list(dto));
} }
@ApiOperation("分页列表-排除超级管理员(AuthIgnore)") @ApiOperation("分页列表-排除超级管理员(AuthIgnore)")
@PostMapping("listNotSuperAdminAuthIgnore") @PostMapping("listNotSuperAdminAuthIgnore")
public ApiResponseEntity<List<SaasUserDTOVO>> listNotSuperAdminAuthIgnore(@RequestBody PlatUserQueryDTO dto){ public ApiResponseEntity<List<SaasUserDTOVO>> listNotSuperAdminAuthIgnore(@RequestBody SaasUserQueryDTO dto){
return ApiResponseUtils.success(saasUserService.listNoSuperAdmin(dto)); return ApiResponseUtils.success(saasUserService.listNoSuperAdmin(dto));
} }
......
package com.makeit.common.controller.test;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.startup.Runner;
import com.makeit.utils.event.BizEvent;
import com.makeit.utils.event.EventUtil;
import com.makeit.utils.user.tenant.SysUserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "测试-事件")
@RestController
@RequestMapping("/test/event")
public class TestEventController {
private static final Logger logger = LoggerFactory.getLogger(TestEventController.class);
@ApiOperation("test")
@PostMapping("test")
public ApiResponseEntity<?> test() {
EventUtil.publish(new TestEvent("123"));
return ApiResponseUtils.success();
}
@ApiOperation("test2")
@PostMapping("test2")
public ApiResponseEntity<?> test2() {
EventUtil.publish(new BizEvent<>(new SysUserVO()));
//EventUtil.publish(new BizEvent<>(new SubmitOrderDTO()));
return ApiResponseUtils.success();
}
@EventListener
public void onApplicationEvent(TestEvent event) {
logger.info("test event{}", event.getSource());
}
@EventListener
public void onApplicationEvent(BizEvent<SysUserVO> event) {
logger.info("biz event 1 {}", event.getSource());
}
// @EventListener
// public void onApplicationEvent2(BizEvent<SubmitOrderDTO> event) {
// logger.info("biz event 2 {}", event.getSource());
// }
@Order(2)
@Runner
public void run() throws Exception {
logger.info("TestRunner run 1");
}
private static class TestEvent extends ApplicationEvent {
public TestEvent(Object source) {
super(source);
}
}
}
...@@ -3,8 +3,8 @@ package com.makeit.config; ...@@ -3,8 +3,8 @@ package com.makeit.config;
import com.makeit.global.inteceptor.RequestIdInterceptor; import com.makeit.global.inteceptor.RequestIdInterceptor;
import com.makeit.global.inteceptor.SaasAuthenticationInterceptor; import com.makeit.global.inteceptor.SaasAuthenticationInterceptor;
import com.makeit.global.inteceptor.SaasAuthorizationInterceptor; import com.makeit.global.inteceptor.SaasAuthorizationInterceptor;
import com.makeit.global.inteceptor.TntAuthenticationInterceptor; import com.makeit.global.inteceptor.PlatAuthenticationInterceptor;
import com.makeit.global.inteceptor.TntAuthorizationInterceptor; import com.makeit.global.inteceptor.PlatAuthorizationInterceptor;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import lombok.Data; import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -25,9 +25,9 @@ public class WebInterceptorConfig implements WebMvcConfigurer { ...@@ -25,9 +25,9 @@ public class WebInterceptorConfig implements WebMvcConfigurer {
private RequestIdInterceptor requestIdInterceptor; private RequestIdInterceptor requestIdInterceptor;
@Autowired @Autowired
private TntAuthenticationInterceptor tntAuthenticationInterceptor; private PlatAuthenticationInterceptor tntAuthenticationInterceptor;
@Autowired @Autowired
private TntAuthorizationInterceptor tntAuthorizationInterceptor; private PlatAuthorizationInterceptor tntAuthorizationInterceptor;
@Autowired @Autowired
private SaasAuthenticationInterceptor saasAuthenticationInterceptor; private SaasAuthenticationInterceptor saasAuthenticationInterceptor;
......
package com.makeit.config.global.thread.wrapper; package com.makeit.config.global.thread.wrapper;
import com.makeit.utils.user.tenant.SysUserUtil; import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.tenant.SysUserVO; import com.makeit.utils.user.plat.PlatUserVO;
//TODO ywc 要不要用阿里的 TransmittableThreadLocal(TTL) //TODO ywc 要不要用阿里的 TransmittableThreadLocal(TTL)
public class UserRunnerWrapper implements BizRunnable { public class UserRunnerWrapper implements BizRunnable {
private Runnable task; private Runnable task;
private SysUserVO userVO; private PlatUserVO userVO;
public UserRunnerWrapper(Runnable task) { public UserRunnerWrapper(Runnable task) {
super(); super();
this.task = task; this.task = task;
userVO = SysUserUtil.getUserVOCanNull(); userVO = PlatUserUtil.getUserVOCanNull();
} }
@Override @Override
public void run() { public void run() {
SysUserUtil.execute(userVO, task); PlatUserUtil.execute(userVO, task);
} }
......
package com.makeit.global.aspect.tenant; package com.makeit.global.aspect.tenant;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.entity.SysDept;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.module.admin.service.SysFactoryService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.function.CallableThrowable; import com.makeit.utils.function.CallableThrowable;
import com.makeit.utils.old.StringUtils; import com.makeit.utils.old.StringUtils;
import com.makeit.utils.request.RequestUtil; import com.makeit.utils.request.RequestUtil;
import com.makeit.utils.request.Scope; import com.makeit.utils.request.Scope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors;
@Component @Component
public class TenantIdUtil { public class TenantIdUtil {
private static SysFactoryService sysFactoryService;
private static SysDeptService sysDeptService;
private static final Scope<String> THREAD_LOCAL_FACTORY_ID = new Scope<>(); private static final Scope<String> THREAD_LOCAL_FACTORY_ID = new Scope<>();
public static String getFromThreadLocal() { public static String getFromThreadLocal() {
...@@ -59,18 +48,6 @@ public class TenantIdUtil { ...@@ -59,18 +48,6 @@ public class TenantIdUtil {
return null; return null;
} }
public static List<String> deptIdList() {
return deptIdList(getTenantId());
}
public static List<String> deptIdList(String factoryId) {
List<String> deptIdList = Arrays.stream(sysFactoryService.getById(factoryId).getDeptIdList().split(",")).filter(StringUtils::isNotBlank)
.collect(Collectors.toList());
deptIdList.add(-1 + "");
return StreamUtil.map(sysDeptService.listByIds(deptIdList), SysDept::getId);
}
public static void execute(String tenantId, Runnable runnable) { public static void execute(String tenantId, Runnable runnable) {
THREAD_LOCAL_FACTORY_ID.execute(tenantId, runnable); THREAD_LOCAL_FACTORY_ID.execute(tenantId, runnable);
...@@ -84,20 +61,4 @@ public class TenantIdUtil { ...@@ -84,20 +61,4 @@ public class TenantIdUtil {
return THREAD_LOCAL_FACTORY_ID.execute(tenantId, callable); return THREAD_LOCAL_FACTORY_ID.execute(tenantId, callable);
} }
public static void executeTenantList(Runnable runnable) {
List<SysFactoryDTOVO> tntTenantList = sysFactoryService.enableList();
tntTenantList.forEach(e -> {
execute(e.getId(), runnable);
});
}
@Autowired
public void setSysDeptService(SysDeptService sysDeptService) {
TenantIdUtil.sysDeptService = sysDeptService;
}
@Autowired
public void setSysFactoryService(SysFactoryService sysFactoryService) {
TenantIdUtil.sysFactoryService = sysFactoryService;
}
} }
...@@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -14,7 +14,7 @@ import javax.servlet.http.HttpServletResponse;
@Order(InterceptorOrderConst.TNT_AUTHENTICATION_INTERCEPTOR) @Order(InterceptorOrderConst.TNT_AUTHENTICATION_INTERCEPTOR)
@Component @Component
public class TntAuthenticationInterceptor implements HandlerInterceptor { public class PlatAuthenticationInterceptor implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
......
...@@ -5,8 +5,8 @@ import com.makeit.enums.CodeMessageEnum; ...@@ -5,8 +5,8 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.order.InterceptorOrderConst; import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action; import com.makeit.global.annotation.Action;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO; import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
import com.makeit.utils.user.tenant.SysUserUtil; import com.makeit.utils.user.plat.PlatUserUtil;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
...@@ -20,7 +20,7 @@ import java.util.Set; ...@@ -20,7 +20,7 @@ import java.util.Set;
@Order(InterceptorOrderConst.TNT_AUTHORIZATION_INTERCEPTOR) @Order(InterceptorOrderConst.TNT_AUTHORIZATION_INTERCEPTOR)
@Component @Component
public class TntAuthorizationInterceptor implements HandlerInterceptor { public class PlatAuthorizationInterceptor implements HandlerInterceptor {
@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
...@@ -37,13 +37,13 @@ public class TntAuthorizationInterceptor implements HandlerInterceptor { ...@@ -37,13 +37,13 @@ public class TntAuthorizationInterceptor implements HandlerInterceptor {
return true; return true;
} }
SysUserRoleMenuRedisVO userLoginVO = SysUserUtil.getTntUserRoleMenu(); PlatUserRoleMenuRedisVO userLoginVO = PlatUserUtil.getTntUserRoleMenu();
// if (IsFactoryAccountEnum.YES.getValue().equals(userLoginVO.getIsFactory())) { // if (IsFactoryAccountEnum.YES.getValue().equals(userLoginVO.getIsFactory())) {
// return true; // return true;
// } // }
if (SysUserUtil.isSuper()) { if (PlatUserUtil.isSuper()) {
return true; return true;
} }
......
...@@ -6,7 +6,7 @@ import com.makeit.enums.order.InterceptorOrderConst; ...@@ -6,7 +6,7 @@ import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action; import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO; import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.utils.user.PlatUserUtil; import com.makeit.utils.user.saas.SaasUserUtil;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
...@@ -35,7 +35,7 @@ public class SaasAuthorizationInterceptor implements HandlerInterceptor { ...@@ -35,7 +35,7 @@ public class SaasAuthorizationInterceptor implements HandlerInterceptor {
return true; return true;
} }
SaasUserRoleMenuRedisVO userLoginVO = PlatUserUtil.getPlatUserRoleMenu(); SaasUserRoleMenuRedisVO userLoginVO = SaasUserUtil.getPlatUserRoleMenu();
if (userLoginVO == null) { if (userLoginVO == null) {
return true; return true;
} }
......
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.entity.BaseEntity;
import groovy.transform.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 部门
* </p>
*
* @author eugene young
* @since 2022-05-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SysAuthDept对象", description = "部门")
@TableName("sys_auth_dept")
public class SysDept extends BaseEntity {
private static final long serialVersionUID = 1L;
//@NotBlank(message = "上级部门不能为空")
@ApiModelProperty(value = "父级id")
private String parentId;
@ApiModelProperty(value = " 父级路径 ")
private String parentPath;
@Size(max = 50,message = "名称最长50个字符")
@NotBlank(message = "名称不能为空")
@ApiModelProperty(value = "名称")
private String name;
@Size(max = 50,message = "全名最长50个字符")
@NotBlank(message = "全名不能为空")
@ApiModelProperty(value = "全名")
private String fullName;
@ApiModelProperty(value = "原始部门ID")
private String oriId;
@NotBlank(message = "状态不能为空")
@Pattern(regexp = "0|1", message = "状态可选值为 0禁用 1启用")
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
//@NotBlank(message = "标签不能为空")
//@Pattern(regexp = "1|2|3|4", message = "标签可选值 1集团 2子公司 3部门")
@ApiModelProperty(value = "标签/类型 1部门 2岗位")
private String tag;
@ApiModelProperty(value = "同步时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime syncTime;
@Size(max = 500,message = "描述最长500个字符")
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "子集")
@TableField(exist = false)
private List<SysDept> children;
@ApiModelProperty(value = "父亲")
@TableField(exist = false)
private SysDept parent;
}
package com.makeit.module.admin.entity;
import com.makeit.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 厂别
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SysTenant对象", description = "厂别")
public class SysFactory extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "部门id集合")
private String deptIdList;
}
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 角色
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SysRole对象", description = "角色")
@TableName("sys_auth_role")
public class SysRole extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "编码")
private String code;
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "备注")
private String remark;
}
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 角色菜单关联表
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="SysRoleFactory对象", description="角色工厂关联表")
@TableName("sys_auth_role_factory")
public class SysRoleFactory extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "角色id")
private String roleId;
@ApiModelProperty(value = "工厂id")
private String factoryId;
}
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 角色菜单关联表
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="SysRoleMenu对象", description="角色菜单关联表")
@TableName("sys_auth_role_menu")
public class SysRoleMenu extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "角色id")
private String roleId;
@ApiModelProperty(value = "菜单id")
private String menuId;
@TableField(exist = false)
@ApiModelProperty(value = "菜单名称")
private String menuName;
}
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 角色菜单关联表
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="SysRoleMenu对象", description="角色菜单关联表")
@TableName("sys_auth_role_wechat_menu")
public class SysRoleWechatMenu extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "角色id")
private String roleId;
@ApiModelProperty(value = "菜单id")
private String menuId;
}
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.FieldNameConstants;
import java.time.LocalDateTime;
/**
* <p>
* 用户
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@FieldNameConstants
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SysUser对象", description = "用户")
@TableName("sys_auth_user")
public class SysUser extends BaseBusEntity {//要不要继承 BaseCompanyEntity
private static final long serialVersionUID = 1L;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "账户")
private String account;
@ApiModelProperty(value = "密码")
private String password;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "性別 数据字典 1男 2女")
private String sex;
@ApiModelProperty(value = "手机号")
private String mobile;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "邮箱")
private String mail;
@ApiModelProperty(value = "状态 1启用 0禁用")
private String status;
@ApiModelProperty(value = "在职状态 1在职 0离职")
private String empStatus;
@ApiModelProperty(value = "部门id")
private String deptId;
@ApiModelProperty(value = "部门id路径")
private String deptIdPath;
//TODO ywc
//要不要记录所有部门id 路径
@ApiModelProperty(value = "主管")
private String superior;
@ApiModelProperty(value = "AD账号")
private String empNo;
@ApiModelProperty(value = "是否系统账号 0否 1是")
private String systemStatus;
@ApiModelProperty(value = "是否公共账号 0否 1是")
private String publicStatus;
@ApiModelProperty(value = "是否主账号 0否 1是")
private String masterStatus;
@ApiModelProperty(value = "是否自建账号 0否 1是")
private String selfStatus;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "是否厂别账户 0否 1是")
private String isFactory;
@ApiModelProperty(value = "同步时间")
private LocalDateTime syncTime;
}
package com.makeit.module.admin.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户角色关联表
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="SysUserRole对象", description="用户角色关联表")
@TableName("sys_auth_user_role")
public class SysUserRole extends BaseBusEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户id")
private String userId;
@ApiModelProperty(value = "角色id")
private String roleId;
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysDept;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 部门 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-17
*/
@Mapper
public interface SysDeptMapper extends BaseMapper<SysDept> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysFactory;
/**
* <p>
* 厂别 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysFactoryMapper extends BaseMapper<SysFactory> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysMenu;
/**
* <p>
* 菜单 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysMenuMapper extends BaseMapper<SysMenu> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysRoleFactory;
/**
* <p>
* 角色菜单关联表 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleFactoryMapper extends BaseMapper<SysRoleFactory> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysRole;
/**
* <p>
* 角色 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleMapper extends BaseMapper<SysRole> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysRoleMenu;
/**
* <p>
* 角色菜单关联表 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
/**
* <p>
* 角色菜单关联表 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleWechatMenuMapper extends BaseMapper<SysRoleWechatMenu> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysUser;
/**
* <p>
* 用户 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysUserMapper extends BaseMapper<SysUser> {
}
package com.makeit.module.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.module.admin.entity.SysUserRole;
/**
* <p>
* 用户角色关联表 Mapper 接口
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
}
package com.makeit.module.admin.plat;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.FieldNameConstants;
import java.io.Serializable;
@FieldNameConstants
@Data
@ApiModel("部门BASE")
public class BaseOrgDTO extends BaseTenantDTO implements Serializable {
@ApiModelProperty(value = "部门树 id",required=true)
private String deptId;
@ApiModelProperty(value = "部门树冗余 id")
private String path;
}
package com.makeit.module.admin.plat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "修改密码")
@Data
public class ChangePasswordDTO {
@ApiModelProperty("新密码")
private String newPassword;
}
package com.makeit.module.admin.plat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
@ApiModel("租户端资源(菜单)详情")
@Data
public class PlatButtonVO {
// @NotBlank(message = "名称不能为空")
// @ApiModelProperty(value = "名称")
// private String name;
@ApiModelProperty(value = "模块+类名+方法")
private String code;
@NotBlank(message = "类型不能为空")
@Pattern(regexp = "1|2|3", message = "类型可选值 1目录 2菜单 3按钮")
@ApiModelProperty(value = "类型 1目录 2菜单 3按钮")
private String category;
}
package com.makeit.module.admin.entity; package com.makeit.module.admin.plat;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.entity.BaseEntity; import com.makeit.common.dto.BaseIdDTO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Objects; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.time.LocalDateTime;
import java.util.List;
/** @ApiModel("租户端资源(菜单) 新增 编辑 详情")
* <p>
* 菜单
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Data @Data
@EqualsAndHashCode(callSuper = true) public class PlatMenuDTOVO extends BaseIdDTO {
@ApiModel(value="SysMenu对象", description="菜单")
@TableName("sys_auth_menu")
public class SysMenu extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotBlank(message = "上级菜单不能为空")
@ApiModelProperty(value = "父级id") @ApiModelProperty(value = "父级id")
private String parentId; private String parentId;
@NotBlank(message = "名称不能为空")
@ApiModelProperty(value = "名称") @ApiModelProperty(value = "名称")
private String name; private String name;
@ApiModelProperty(value = "名称-英文")
private String nameEng;
@ApiModelProperty(value = "模块+类名+方法") @ApiModelProperty(value = "模块+类名+方法")
private String code; private String code;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "图标") @ApiModelProperty(value = "图标")
private String icon; private String icon;
@ApiModelProperty(value = "排序") @ApiModelProperty(value = "排序")
private Integer sort; private Integer sort;
@NotBlank(message = "状态不能为空")
@Pattern(regexp = "0|1", message = "状态可选值 0禁用 1启用")
@ApiModelProperty(value = "状态 0禁用 1启用") @ApiModelProperty(value = "状态 0禁用 1启用")
private String status; private String status;
@ApiModelProperty(value = "1目录 2菜单 4按钮") @NotBlank(message = "类型不能为空")
@Pattern(regexp = "1|2|3", message = "类型可选值 1目录 2菜单 3按钮")
@ApiModelProperty(value = "类型 1目录 2菜单 3按钮")
private String category; private String category;
@ApiModelProperty(value = "前端路径") @ApiModelProperty(value = "前端路径")
...@@ -61,33 +52,23 @@ public class SysMenu extends BaseEntity { ...@@ -61,33 +52,23 @@ public class SysMenu extends BaseEntity {
@ApiModelProperty(value = "组件名称") @ApiModelProperty(value = "组件名称")
private String componentName; private String componentName;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "备注") @ApiModelProperty(value = "备注")
private String remark; private String remark;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
@TableField(exist = false)
@ApiModelProperty(value = "子集")
private List<PlatMenuDTOVO> children;
@ApiModelProperty(value = "隐藏状态 0不隐藏 1隐藏") @ApiModelProperty(value = "隐藏状态 0不隐藏 1隐藏")
private String hiddenStatus; private String hiddenStatus;
@ApiModelProperty(value = "缓存状态 0不缓存 1缓存") @ApiModelProperty(value = "缓存状态 0不缓存 1缓存")
private String cacheStatus; private String cacheStatus;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof SysMenu)) {
return false;
}
SysMenu that = (SysMenu) o;
return getId().equals(that.getId());
}
@Override
public int hashCode() {
return Objects.hash(getId());
}
} }
package com.makeit.module.admin.plat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("租户端资源(菜单) 查询")
@Data
public class PlatMenuQueryDTO {
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
@ApiModelProperty(value = "租户id")
private String tenantId;
}
package com.makeit.module.admin.plat;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseIdDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
@ApiModel("租户 新增 编辑 详情")
@Data
public class PlatTenantDTOVO extends BaseIdDTO {
@Size(max = 64, message = "名称最长为64字符")
@NotBlank(message = "名称不能为空")
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "状态 0停用 1启用")
private String status;
// @NotNull(message = "开始时间不能为空")
// @ApiModelProperty(value = "开始时间")
// private LocalDateTime startTime;
//
// @NotNull(message = "结束时间不能为空")
// @ApiModelProperty(value = "结束时间")
// private LocalDateTime endTime;
@JsonFormat(pattern="yyyy-MM-dd")
@NotNull(message = "开始时间不能为空")
@ApiModelProperty(value = "开始时间")
private LocalDate startTime;
@JsonFormat(pattern="yyyy-MM-dd")
@NotNull(message = "结束时间不能为空")
@ApiModelProperty(value = "结束时间")
private LocalDate endTime;
@NotBlank(message = "租户管理员不能为空")
@ApiModelProperty(value = "租户管理员id")
private String tntUserId;
//todo dto
// @ApiModelProperty(value = "租户账号 详情用")
// private PlatUser tntUser;
// @ApiModelProperty(value = "菜单id列表 以逗号分隔")
// private String menuList;
// @TableField(exist = false)
// @ApiModelProperty(value = "菜单")
// private List<TntMenu> tntMenuList;
@ApiModelProperty(value = "租户管理员用户名")
private String userName;
}
package com.makeit.module.admin.plat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("租户端租户分配菜单")
@Data
public class PlatTenantMenuDTO {
// @ApiModelProperty(value = "菜单id")
// private String menuId;
@ApiModelProperty(value = "租户id")
private String tenantId;
@ApiModelProperty(value = "菜单id集合")
private List<String> menuIdList;
}
package com.makeit.module.admin.plat;
import com.makeit.common.dto.BaseIdDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("改变状态")
@Data
public class PlatTenantStatusDTO extends BaseIdDTO {
// @ApiModelProperty(value = "开始时间")
// private LocalDateTime startTime;
//
// @ApiModelProperty(value = "结束时间")
// private LocalDateTime endTime;
// @ApiModelProperty(value = "开始时间")
// private LocalDate startTime;
//
// @ApiModelProperty(value = "结束时间")
// private LocalDate endTime;
@ApiModelProperty("状态 0禁用 1启用")
private String status;
}
package com.makeit.module.admin.plat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.module.admin.vo.plat.PlatRoleDTOVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel("租户账号 新增 编辑 详情")
@Data
public class PlatUserDTOVO extends BaseIdDTO {
// @NotBlank(message = "用户名不能为空")
// @Size(max = 64, message = "用户名最长为64字符")
// @ApiModelProperty(value = "用户名")
// private String username;
@NotBlank(message = "名称不能为空")
@Size(max = 64, message = "名称最长为64字符")
@Pattern(regexp = "[a-zA-Z0-9]{0,64}", message = "账户只能为大小写英文字符和数字")
@ApiModelProperty(value = "账户")
private String account;
//@NotBlank(message = "密码不能为空")
@Size(max = 32, message = "密码最长为64字符")
@ApiModelProperty(value = "密码")
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
// @ApiModelProperty(value = "姓名")
// private String name;
@NotBlank(message = "姓名不能为空")
@Size(max = 64, message = "用户名最长为64字符")
@ApiModelProperty(value = "姓名")
private String name;
@NotBlank(message = "手机号不能为空")
@Pattern(regexp = "1[0-9]{10}", message = "手机号格式不对")
//@Size(max = 11, message = "手机号最长为64字符")
@ApiModelProperty(value = "手机号")
private String mobile;
@NotBlank(message = "状态不能为空")
@Pattern(regexp = "0|1", message = "状态可选值为 0禁用 1启用")
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
@Size(max = 512, message = "备注最长512字符")
@ApiModelProperty(value = "备注")
private String remark;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
@TableField(exist = false)
@ApiModelProperty(value = "角色集合")
private List<PlatRoleDTOVO> roleList;
@ApiModelProperty(value = "租户名称集合")
private String tenantNameList;
}
package com.makeit.module.admin.plat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel("租户账号 查询")
@Data
public class PlatUserQueryDTO extends BaseOrgDTO {
// @ApiModelProperty("部门树id")
// private String deptId;
@ApiModelProperty(value = "账户")
private String account;
@ApiModelProperty(value = "姓名")
private String name;
// @ApiModelProperty(value = "姓名")
// private String username;
@ApiModelProperty(value = "手机号")
private String mobile;
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
@ApiModelProperty(value = "角色id roleId和notRoleId只能用一个")
private String roleId;
@ApiModelProperty(value = "要排除的角色id roleId和notRoleId只能用一个")
private String notRoleId;
@ApiModelProperty(value = "关键词 用来搜姓名或者工号")
private String keyword;
@ApiModelProperty(value = "职级")
private Integer postLevel;
@ApiModelProperty(value = "是否从酒店开始 0否 1是")
private String fromHotel;
@ApiModelProperty(value = "是否常用人员 0否 1是")
private String isFrequent;
@ApiModelProperty(value = "标签id")
private String labelId;
@ApiModelProperty(value = "用户工号集合")
private List<String> accountList;
@ApiModelProperty(value = "用户姓名集合")
private List<String> nameList;
@ApiModelProperty(value = "用户id集合")
private List<String> userIdList;
@ApiModelProperty(value = "角色id集合")
private List<String> roleIdList;
@ApiModelProperty(value = "部门id集合")
private List<String> deptIdList;
@ApiModelProperty("分管部门树id")
private String chargeDeptId;
}
package com.makeit.utils.user.tenant; package com.makeit.module.admin.plat;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -9,23 +7,18 @@ import java.io.Serializable; ...@@ -9,23 +7,18 @@ import java.io.Serializable;
import java.util.List; import java.util.List;
@Data @Data
public class SysUserRoleMenuRedisVO implements Serializable { public class PlatUserRoleMenuRedisVO implements Serializable {
@ApiModelProperty("id") @ApiModelProperty("id")
private String id; private String id;
@ApiModelProperty("是否厂别账号") @ApiModelProperty("是否租户账号")
private String isFactory; private String isTenant;
// @ApiModelProperty("角色列表")
// private List<String> roleCodeList;
@ApiModelProperty("角色列表") @ApiModelProperty("角色列表")
private List<SysRoleDTOVO> roleList; private List<String> roleCodeList;
@ApiModelProperty("按钮列表") @ApiModelProperty("按钮列表")
private List<String> buttonCodeList; private List<String> buttonCodeList;
@ApiModelProperty("工厂列表")
private List<SysFactoryDTOVO> factoryList;
} }
...@@ -15,7 +15,7 @@ import java.util.List; ...@@ -15,7 +15,7 @@ import java.util.List;
@ApiModel("平台端菜单 新增 编辑 详情") @ApiModel("平台端菜单 新增 编辑 详情")
@Data @Data
public class PlatMenuDTOVO extends BaseIdDTO implements Serializable { public class SaasMenuDTOVO extends BaseIdDTO implements Serializable {
@NotBlank(message = "上级菜单不能为空") @NotBlank(message = "上级菜单不能为空")
@ApiModelProperty(value = "父级id") @ApiModelProperty(value = "父级id")
...@@ -71,5 +71,5 @@ public class PlatMenuDTOVO extends BaseIdDTO implements Serializable { ...@@ -71,5 +71,5 @@ public class PlatMenuDTOVO extends BaseIdDTO implements Serializable {
@TableField(exist = false) @TableField(exist = false)
@ApiModelProperty(value = "子集") @ApiModelProperty(value = "子集")
private List<PlatMenuDTOVO> children; private List<SaasMenuDTOVO> children;
} }
...@@ -8,7 +8,7 @@ import java.io.Serializable; ...@@ -8,7 +8,7 @@ import java.io.Serializable;
@ApiModel("平台端菜单查询") @ApiModel("平台端菜单查询")
@Data @Data
public class PlatMenuQueryDTO implements Serializable { public class SaasMenuQueryDTO implements Serializable {
@ApiModelProperty(value = "名称") @ApiModelProperty(value = "名称")
......
...@@ -9,7 +9,7 @@ import java.util.List; ...@@ -9,7 +9,7 @@ import java.util.List;
@ApiModel("平台端角色分配菜单") @ApiModel("平台端角色分配菜单")
@Data @Data
public class PlatRoleMenuDTO implements Serializable { public class SaasRoleMenuDTO implements Serializable {
@ApiModelProperty(value = "角色id") @ApiModelProperty(value = "角色id")
private String roleId; private String roleId;
......
...@@ -8,7 +8,7 @@ import java.io.Serializable; ...@@ -8,7 +8,7 @@ import java.io.Serializable;
@ApiModel("平台端用户 查询") @ApiModel("平台端用户 查询")
@Data @Data
public class PlatUserQueryDTO implements Serializable { public class SaasUserQueryDTO implements Serializable {
@ApiModelProperty(value = "账户") @ApiModelProperty(value = "账户")
......
...@@ -8,7 +8,7 @@ import java.io.Serializable; ...@@ -8,7 +8,7 @@ import java.io.Serializable;
@ApiModel("平台端角色分配用户") @ApiModel("平台端角色分配用户")
@Data @Data
public class PlatUserRoleDTO implements Serializable { public class SaasUserRoleDTO implements Serializable {
@ApiModelProperty(value = "用户id") @ApiModelProperty(value = "用户id")
private String userId; private String userId;
......
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO;
import com.makeit.module.admin.dto.SysDeptQueryDTO;
import com.makeit.module.admin.entity.SysDept;
import java.util.List;
/**
* <p>
* 部门 服务类
* </p>
*
* @author eugene young
* @since 2022-05-17
*/
public interface SysDeptService extends IService<SysDept> {
void changeStatus(StatusDTO dto);
List<SysDept> list(SysDeptQueryDTO dto);
List<SysDept> tree(SysDeptQueryDTO dto);
List<SysDept> listNotFactory(SysDeptQueryDTO dto);
List<SysDept> treeNotFactory(SysDeptQueryDTO dto);
List<SysDept> selfAndChildren(String deptId);
List<String> selfAndChildrenIdList(String deptId);
List<SysDept> selfAndChildren(List<String> deptIdList);
List<String> selfAndChildrenIdList(List<String> deptIdList);
void add(SysDept dto);
void edit(SysDept dto);
SysDept view(String id);
void del(String id);
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.entity.SysFactory;
import java.util.List;
/**
* <p>
* 厂别 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysFactoryService extends IService<SysFactory> {
PageVO<SysFactoryDTOVO> page(PageReqDTO<SysFactoryDTOVO> page);
List<SysFactoryDTOVO> list(SysFactoryDTOVO dto);
String add(SysFactoryDTOVO dto);
void edit(SysFactoryDTOVO dto);
SysFactoryDTOVO view(String id);
void del(String id);
List<SysFactory> userFactoryListList();
List<SysFactory> userFactoryListRefresh();
List<SysFactoryDTOVO> enableList();
List<SysFactoryDTOVO> listByUserIdList(List<String> userIdList);
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.dto.SysMenuDTOVO;
import com.makeit.module.admin.dto.SysMenuQueryDTO;
import com.makeit.module.admin.entity.SysMenu;
import java.util.List;
/**
* <p>
* 菜单 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysMenuService extends IService<SysMenu> {
List<SysMenuDTOVO> list(SysMenuQueryDTO dto);
List<SysMenuDTOVO> tree(List<SysMenuDTOVO> tntMenuList);
List<SysMenuDTOVO> tree(SysMenuQueryDTO dto);
void add(SysMenuDTOVO dto);
void edit(SysMenuDTOVO dto);
SysMenuDTOVO view(String id);
void del(String id);
void sync();
List<SysMenu> loadMenuCodeList();
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysRoleFactory;
/**
* <p>
* 角色菜单关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleFactoryService extends IService<SysRoleFactory> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysRoleMenu;
/**
* <p>
* 角色菜单关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleMenuService extends IService<SysRoleMenu> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import com.makeit.module.admin.dto.SysRoleFactoryDTO;
import com.makeit.module.admin.dto.SysRoleMenuDTO;
import com.makeit.module.admin.dto.SysUserRoleDTO;
import com.makeit.module.admin.entity.SysRole;
import com.makeit.module.admin.entity.SysRoleFactory;
import com.makeit.module.admin.entity.SysRoleMenu;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
import java.util.List;
/**
* <p>
* 角色 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleService extends IService<SysRole> {
List<SysRoleDTOVO> list(SysRoleDTOVO dto);
PageVO<SysRoleDTOVO> page(PageReqDTO<SysRoleDTOVO> page);
void add(SysRoleDTOVO dto);
void edit(SysRoleDTOVO dto);
SysRoleDTOVO view(String id);
void del(String id);
void changeStatus(StatusDTO dto);
void assignUserList(List<SysUserRoleDTO> userRoleDTOList);
void removeAssignUserList(List<SysUserRoleDTO> userRoleDTOList);
void assignMenuList(SysRoleMenuDTO roleMenuDTO);
List<SysRoleMenu> getAssignMenuList(String id);
void assignWechatMenuList(SysRoleMenuDTO roleMenuDTO);
List<SysRoleWechatMenu> getWechatMenuList(String roleId);
void assignFactoryList(SysRoleFactoryDTO roleFactoryDTO);
List<SysRoleFactory> getFactoryList(String roleId);
String factoryInit(String factoryId);
void copyRole(String roleId);
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
/**
* <p>
* 角色菜单关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleWechatMenuService extends IService<SysRoleWechatMenu> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysUserRole;
/**
* <p>
* 用户角色关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysUserRoleService extends IService<SysUserRole> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.LoginDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.dto.*;
import com.makeit.module.admin.entity.SysMenu;
import com.makeit.module.admin.entity.SysRole;
import com.makeit.module.admin.entity.SysUser;
import com.makeit.module.admin.vo.SysPersonSimpleVO;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.tenant.SysUserVO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* <p>
* 用户 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysUserService extends IService<SysUser> {
void setDefaultPassword(SysUser user);
void setPassword(SysUser user);
void changePassword(SysUserDTOVO dto);
SysUserDTOVO view(String id);
void del(String id);
void changeStatus(StatusDTO dto);
SysUserLoginVO login(LoginDTO loginDTO);
void logout();
List<SysMenu> getMenuListByFactoryId();
SysUserLoginVO getRoleAndMenuList();
SysUserLoginVO getWechatMenuList();
SysUserLoginVO getUserVO();
SysPersonDTOVO getUserDetail();
List<SysRole> getRoleList(String userId);
void editSelf(SysPersonSimpleDTO dto);
/*人员*/
PageVO<SysPersonDTOVO> page(PageReqDTO<SysUserQueryDTO> page);
List<SysPersonDTOVO> list(SysUserQueryDTO dto);
void exportExcel(HttpServletResponse response, SysUserQueryDTO dto);
List<SysPersonSimpleVO> listSimple(SysUserQueryDTO dto);
SysUser checkUserSuperException(String id);
List<SysUser> checkUserSuperException(List<String> idList);
boolean checkUserSuper(SysUser user);
void addPerson(SysPersonDTOVO dto);
void editPerson(SysPersonDTOVO dto);
SysPersonDTOVO viewPerson(String id);
void delPerson(String id);
void factoryInit(String factoryId);
/*feign*/
List<SysUserVO> listByIdList(List<String> idList);
List<SysUserVO> listByRoleAndMenuCode(SysRoleAndMenuCodeDTO codeDTO);
List<String> listIdByName(String name);
/*feign*/
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.dto.StatusDTO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.biz.auth.DeptEnum;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.dto.SysDeptQueryDTO;
import com.makeit.module.admin.entity.SysDept;
import com.makeit.module.admin.entity.SysUser;
import com.makeit.module.admin.mapper.SysDeptMapper;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.module.admin.service.SysUserService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.user.tenant.SysUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* <p>
* 部门 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-17
*/
@Service
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
@Autowired
private SysUserService sysUserService;
//TODO ywc 路径枚举 要不要把自己也记录下来
private void orFindInSet(List<String> deptIdList, LambdaQueryWrapper<SysDept> lambdaQueryWrapper) {
lambdaQueryWrapper.and(qw -> {
for (int i = 0; i < deptIdList.size(); i++) {
String e = deptIdList.get(i);
qw.apply("find_in_set('" + e + "',parent_path)")
.or()
.eq(SysDept::getId, e);
if (i < deptIdList.size() - 1) {
qw.or();
}
}
});
}
private LambdaQueryWrapper<SysDept> lambdaQueryWrapper(SysDeptQueryDTO dto) {
LambdaQueryWrapper<SysDept> lambdaQueryWrapper = new QueryWrapper<SysDept>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SysDept::getName, dto.getName())
.eq(StringUtils.isNotBlank(dto.getStatus()), SysDept::getStatus, dto.getStatus())
.eq(StringUtils.isNotBlank(dto.getTag()), SysDept::getTag, dto.getTag())
.orderByAsc(SysDept::getTag)
.orderByAsc(SysDept::getCreateDate);
return lambdaQueryWrapper;
}
private LambdaQueryWrapper<SysDept> lambdaQueryWrapperFactory(SysDeptQueryDTO dto) {
List<String> deptIdList = SysUserUtil.deptIdList();
boolean flag = SysUserUtil.isSuper() && deptIdList.isEmpty();
LambdaQueryWrapper<SysDept> lambdaQueryWrapper = lambdaQueryWrapper(dto);
//TODO ywc 要不要改成全查出来 内存过滤
if (!flag) {
orFindInSet(deptIdList, lambdaQueryWrapper);
}
return lambdaQueryWrapper;
}
@Transactional
@Override
public void changeStatus(StatusDTO dto) {
if (Arrays.stream(CommonEnum.values()).noneMatch(e -> e.getValue().equals(dto.getStatus()))) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
SysDept dept = getById(dto.getId());
if (dept.getStatus().equals(dto.getStatus())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
dept.setStatus(dto.getStatus());
updateById(dept);
}
@Override
public List<SysDept> list(SysDeptQueryDTO dto) {//parent_path find_in_set ?
List<SysDept> sysDeptList = list(lambdaQueryWrapperFactory(dto));
return sysDeptList;
}
@Override
public List<SysDept> tree(SysDeptQueryDTO dto) {
List<SysDept> list = list(dto);
return tree(list);
}
@Override
public List<SysDept> listNotFactory(SysDeptQueryDTO dto) {
List<SysDept> sysDeptList = list(lambdaQueryWrapper(dto));
return sysDeptList;
}
@Override
public List<SysDept> treeNotFactory(SysDeptQueryDTO dto) {
List<SysDept> list = listNotFactory(dto);
return tree(list);
}
@Override
public List<SysDept> selfAndChildren(String deptId) {
List<SysDept> deptList = list(new QueryWrapper<SysDept>().lambda().apply("find_in_set('" + deptId + "',parent_path)"));
return deptList;
}
@Override
public List<String> selfAndChildrenIdList(String deptId) {
return StreamUtil.map(selfAndChildren(deptId), SysDept::getId);
}
@Override
public List<SysDept> selfAndChildren(List<String> deptIdList) {
LambdaQueryWrapper<SysDept> lambdaQueryWrapper = new QueryWrapper<SysDept>().lambda();
orFindInSet(deptIdList, lambdaQueryWrapper);
return list(lambdaQueryWrapper);
}
@Override
public List<String> selfAndChildrenIdList(List<String> deptIdList) {
return StreamUtil.map(selfAndChildren(deptIdList), SysDept::getId);
}
private List<SysDept> tree(List<SysDept> sysDeptList) {
Map<String, SysDept> map = StreamUtil.toMap(sysDeptList, SysDept::getId);
//List<TntDept> topList = StreamUtil.filter(tntDeptList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId()));
List<SysDept> topList = new ArrayList<>(10);
sysDeptList.forEach(e -> {
SysDept parent = map.get(e.getParentId());
if (parent != null) {
List<SysDept> children = parent.getChildren();
if (children == null) {
children = new ArrayList<>(10);
parent.setChildren(children);
}
children.add(e);
} else {
topList.add(e);
}
});
return topList;
}
@Transactional
@Override
public void add(SysDept dto) {
dto.setTag(DeptEnum.DeptTagEnum.DEPT.getValue());
//dto.setFactoryId(FactoryIdUtil.getFactoryId());
save(dto);
}
@Transactional
@Override
public void edit(SysDept dto) {
dto.setTag(DeptEnum.DeptTagEnum.DEPT.getValue());
//dto.setFactoryId(FactoryIdUtil.getFactoryId());
updateById(dto);
}
@Override
public SysDept view(String id) {
SysDept sysDept = getById(id);
return sysDept;
}
@Transactional
@Override
public void del(String id) {
List<SysDept> list = new ArrayList<>(10);
List<SysDept> children = list(new QueryWrapper<SysDept>().lambda()
.eq(SysDept::getParentId, id));
if (!children.isEmpty()) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_DEPT_DELETE);
}
long count = sysUserService.count(new QueryWrapper<SysUser>().lambda()
.eq(SysUser::getDeptId, id));
if (count > 0) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_DEPT_DELETE);
}
// while (!children.isEmpty()) {
// list.addAll(children);
//
// List<String> idList = StreamUtil.map(children, TntDept::getId);
// idList.add(-1 + "");
//
// children = list(new QueryWrapper<TntDept>().lambda()
// .in(TntDept::getParentId, idList));
// }
//
List<String> idList = StreamUtil.map(list, SysDept::getId);
idList.add(id);
remove(new QueryWrapper<SysDept>().lambda()
.in(SysDept::getId, idList));
}
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import com.makeit.module.admin.entity.SysDept;
import com.makeit.module.admin.entity.SysFactory;
import com.makeit.module.admin.entity.SysRoleFactory;
import com.makeit.module.admin.mapper.SysFactoryMapper;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.module.admin.service.SysFactoryService;
import com.makeit.module.admin.service.SysRoleFactoryService;
import com.makeit.module.admin.service.SysUserService;
import com.makeit.module.system.service.SysConfigService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.utils.user.tenant.SysUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 厂别 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysFactoryServiceImpl extends ServiceImpl<SysFactoryMapper, SysFactory> implements SysFactoryService {
@Autowired
private SysConfigService sysConfigService;
@Autowired
private SysDeptService sysDeptService;
@Autowired
private SysUserService sysUserService;
@Autowired
private SysRoleFactoryService sysRoleFactoryService;
private void fill(List<SysFactoryDTOVO> voList) {
JoinUtil.joinSplit(voList, sysDeptService, SysFactoryDTOVO::getDeptIdList, SysDept::getId, (f, d) -> {
f.setDeptOriIdList(StreamUtil.join(d, SysDept::getOriId));
f.setDeptNameList(StreamUtil.join(d, SysDept::getName));
});
}
private LambdaQueryWrapper<SysFactory> listLambdaQueryWrapper(SysFactoryDTOVO dto) {
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = new QueryWrapper<SysFactory>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SysFactory::getName, dto.getName());
lambdaQueryWrapper.orderByDesc(SysFactory::getCreateDate);
return lambdaQueryWrapper;
}
@Override
public List<SysFactoryDTOVO> list(SysFactoryDTOVO dto) {
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = listLambdaQueryWrapper(dto);
List<SysFactory> sysFactoryList = list(lambdaQueryWrapper);
List<SysFactoryDTOVO> voList = BeanDtoVoUtils.listVo(sysFactoryList, SysFactoryDTOVO.class);
fill(voList);
return voList;
}
@Override
public PageVO<SysFactoryDTOVO> page(PageReqDTO<SysFactoryDTOVO> page) {
SysFactoryDTOVO dto = page.getData();
Page<SysFactory> p = PageUtil.toMpPage(page);
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = listLambdaQueryWrapper(dto);
Page<SysFactory> pageList = page(p, lambdaQueryWrapper);
List<SysFactoryDTOVO> voList = BeanDtoVoUtils.listVo(pageList.getRecords(), SysFactoryDTOVO.class);
fill(voList);
return PageUtil.toPageVO(voList, pageList);
}
private void checkName(SysFactoryDTOVO dto) {
SysFactory sysFactory = getOne(
new QueryWrapper<SysFactory>().lambda()
.eq(SysFactory::getName, dto.getName())
);
if (sysFactory != null && !sysFactory.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_NAME_DUPLICATE);
}
}
@Transactional
@Override
public String add(SysFactoryDTOVO dto) {
checkName(dto);
SysFactory sysFactory = BeanDtoVoUtils.convert(dto, SysFactory.class);
save(sysFactory);
dto.setId(sysFactory.getId());
sysConfigService.copyForFactory(BeanDtoVoUtils.convert(sysFactory, SysFactoryDTOVO.class));
sysUserService.factoryInit(sysFactory.getId());
return sysFactory.getId();
}
@Transactional
@Override
public void edit(SysFactoryDTOVO dto) {
checkName(dto);
SysFactory sysFactory = BeanDtoVoUtils.convert(dto, SysFactory.class);
updateById(sysFactory);
}
@Override
public SysFactoryDTOVO view(String id) {
SysFactoryDTOVO userVO = BeanDtoVoUtils.convert(getById(id), SysFactoryDTOVO.class);
return userVO;
}
@Transactional
@Override
public void del(String id) {
removeById(id);
}
@Override
public List<SysFactory> userFactoryListList() {
if (SysUserUtil.isSuper()) {
List<SysFactory> factoryList = list(new QueryWrapper<SysFactory>().lambda()
.orderByAsc(SysFactory::getCreateDate)
);
return factoryList;
}
SysUserRoleMenuRedisVO sysUserRoleMenuRedisVO = TokenUtil.getTntUserRoleMenu();
List<String> roleIdList = StreamUtil.mapId(sysUserRoleMenuRedisVO.getRoleList(), SysRoleDTOVO::getId);
List<SysRoleFactory> sysRoleFactoryList = sysRoleFactoryService.list(new QueryWrapper<SysRoleFactory>().lambda().in(SysRoleFactory::getRoleId, roleIdList));
List<String> factoryIdList = StreamUtil.mapId(sysRoleFactoryList, SysRoleFactory::getFactoryId);
List<SysFactory> factoryList = list(new QueryWrapper<SysFactory>().lambda()
.in(SysFactory::getId, factoryIdList)
.orderByAsc(SysFactory::getCreateDate)
);
return factoryList;
}
@Override
public List<SysFactory> userFactoryListRefresh() {
List<SysFactory> companyList = userFactoryListList();
// if (companyList == null || companyList.isEmpty()) {
// throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_COMPANY_NOT_EXIST);
// }
//sysUserService.refreshFactoryList(companyList);
return companyList;
}
@Override
public List<SysFactoryDTOVO> enableList() {
List<SysFactory> sysFactoryList = list(new QueryWrapper<SysFactory>().lambda());
return BeanDtoVoUtils.listVo(sysFactoryList, SysFactoryDTOVO.class);
}
@Override
public List<SysFactoryDTOVO> listByUserIdList(List<String> userIdList) {
userIdList = new ArrayList<>(userIdList);
userIdList.add(-1 + "");
List<SysFactory> tenantList = list(new QueryWrapper<SysFactory>().lambda()
.orderByAsc(SysFactory::getCreateDate)
);
return BeanDtoVoUtils.listVo(tenantList, SysFactoryDTOVO.class);
}
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysRoleFactory;
import com.makeit.module.admin.mapper.SysRoleFactoryMapper;
import com.makeit.module.admin.service.SysRoleFactoryService;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysRoleFactoryServiceImpl extends ServiceImpl<SysRoleFactoryMapper, SysRoleFactory> implements SysRoleFactoryService {
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysRoleMenu;
import com.makeit.module.admin.mapper.SysRoleMenuMapper;
import com.makeit.module.admin.service.SysRoleMenuService;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
import com.makeit.module.admin.mapper.SysRoleWechatMenuMapper;
import com.makeit.module.admin.service.SysRoleWechatMenuService;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysRoleWechatMenuServiceImpl extends ServiceImpl<SysRoleWechatMenuMapper, SysRoleWechatMenu> implements SysRoleWechatMenuService {
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysUserRole;
import com.makeit.module.admin.mapper.SysUserRoleMapper;
import com.makeit.module.admin.service.SysUserRoleService;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户角色关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
}
package com.makeit.module.admin.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseIdDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@ApiModel("用户简易 详情")
@Data
public class SysPersonSimpleVO extends BaseIdDTO {
@ApiModelProperty(value = "账户")
private String account;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "性別 数据字典 1男 2女")
private String sex;
@ApiModelProperty(value = "手机号")
private String mobile;
@ApiModelProperty(value = "邮箱")
private String mail;
@ApiModelProperty(value = "状态 1启用 0禁用")
private String status;
@ApiModelProperty(value = "在职状态 1在职 0离职")
private String empStatus;
@ApiModelProperty(value = "部门id")
private String deptId;
@ApiModelProperty(value = "主管")
private String superior;
@ApiModelProperty(value = "AD账号")
private String empNo;
@ApiModelProperty(value = "是否系统账号 0否 1是")
private String systemStatus;
@ApiModelProperty(value = "是否公共账号 0否 1是")
private String publicStatus;
@ApiModelProperty(value = "是否主账号 0否 1是")
private String masterStatus;
@ApiModelProperty(value = "备注")
private String remark;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatedAt;
}
package com.makeit.module.admin.vo.plat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.module.admin.plat.BaseOrgDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel("租户端角色 列表 新增 编辑 详情")
@Data
public class PlatRoleDTOVO extends BaseOrgDTO implements Serializable {
@NotBlank(message = "名称不能为空")
@Size(max = 64, message = "名称最长为64字符")
@ApiModelProperty(value = "名称")
private String name;
@NotBlank(message = "编码不能为空")
@Size(max = 64, message = "编码最长为64字符")
@Pattern(regexp = "[a-zA-Z0-9]{0,64}", message = "编码只能为大小写英文字符和数字")
@ApiModelProperty(value = "编码")
private String code;
@NotBlank(message = "状态不能为空")
@Pattern(regexp = "0|1", message = "状态可选值为 0禁用 1启用")
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
@Size(max = 512, message = "备注最长512字符")
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "是否管理员角色 0否 1是")
private String isAdmin;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
@ApiModelProperty(value = "关键词 查询用")
private String keyword;
@TableField(exist = false)
@ApiModelProperty(value = "部门名称")
private String deptName;
@TableField(exist = false)
@ApiModelProperty(value = "角色名称集合")
private List<String> nameList;
}
package com.makeit.utils.user.tenant; package com.makeit.module.admin.vo.plat;
import com.makeit.module.admin.dto.SysButtonVO; import com.makeit.module.admin.plat.PlatButtonVO;
import com.makeit.module.admin.dto.SysFactoryDTOVO; import com.makeit.module.admin.saas.SaasMenuDTOVO;
import com.makeit.module.admin.dto.SysMenuDTOVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -11,7 +9,7 @@ import java.io.Serializable; ...@@ -11,7 +9,7 @@ import java.io.Serializable;
import java.util.List; import java.util.List;
@Data @Data
public class SysUserLoginVO implements Serializable { public class PlatUserLoginVO implements Serializable {
@ApiModelProperty("id") @ApiModelProperty("id")
private String id; private String id;
...@@ -22,34 +20,37 @@ public class SysUserLoginVO implements Serializable { ...@@ -22,34 +20,37 @@ public class SysUserLoginVO implements Serializable {
@ApiModelProperty("姓名") @ApiModelProperty("姓名")
private String name; private String name;
@ApiModelProperty(value = "厂别id 给非管理员用") // @ApiModelProperty("用户名")
private String factoryId; // private String username;
@ApiModelProperty(value = "租户id 给非管理员用")
private String tenantId;
@ApiModelProperty(value = "是否厂别账户 0否 1是") @ApiModelProperty(value = "是否租户账户 0否 1是")
private String isFactory; private String isTenant;
@ApiModelProperty(value = "部门树id")
@ApiModelProperty(value = "部门id")
private String deptId; private String deptId;
@ApiModelProperty("token") @ApiModelProperty("token")
private String token; private String token;
//todo dto
// @ApiModelProperty("租户列表")
// private List<PlatTenant> tenantList;
@ApiModelProperty("角色列表") @ApiModelProperty("角色列表")
private List<SysRoleDTOVO> roleList; private List<PlatRoleDTOVO> roleList;
@ApiModelProperty("菜单树形列表") @ApiModelProperty("菜单树形列表")
private List<SysMenuDTOVO> menuList; private List<SaasMenuDTOVO> menuList;
// @ApiModelProperty("按钮列表")
// private List<TntMenuDTOVO> buttonList;
@ApiModelProperty("按钮列表") @ApiModelProperty("按钮列表")
private List<SysButtonVO> buttonList; private List<PlatButtonVO> buttonList;
@ApiModelProperty("企微菜单列表") @ApiModelProperty("企微菜单列表")
private List<String> wechatMenuCodeList; private List<String> wechatMenuCodeList;
@ApiModelProperty("工厂列表")
private List<SysFactoryDTOVO> factoryList;
} }
package com.makeit.utils; package com.makeit.utils;
import com.makeit.global.aspect.tenant.TenantIdUtil;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.utils.user.tenant.SysUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
@Component @Component
public class DeptIdUtil { public class DeptIdUtil {
private static SysDeptService sysDeptService; // private static SysDeptService sysDeptService;
//
public static List<String> deptIdListFromHeader() { // public static List<String> deptIdListFromHeader() {
return TenantIdUtil.deptIdList(); // return TenantIdUtil.deptIdList();
} // }
//
public static List<String> deptIdListFromUser() { // public static List<String> deptIdListFromUser() {
return SysUserUtil.deptIdList(); // return SysUserUtil.deptIdList();
} // }
//
public static List<String> deptIdAndChildrenListFromHeader() { // public static List<String> deptIdAndChildrenListFromHeader() {
return sysDeptService.selfAndChildrenIdList(deptIdListFromHeader()); // return sysDeptService.selfAndChildrenIdList(deptIdListFromHeader());
} // }
//
public static List<String> deptIdAndChildrenListFromUser() { // public static List<String> deptIdAndChildrenListFromUser() {
return sysDeptService.selfAndChildrenIdList(deptIdListFromUser()); // return sysDeptService.selfAndChildrenIdList(deptIdListFromUser());
} // }
//
//
@Autowired // @Autowired
public void setSysDeptService(SysDeptService sysDeptService) { // public void setSysDeptService(SysDeptService sysDeptService) {
DeptIdUtil.sysDeptService = sysDeptService; // DeptIdUtil.sysDeptService = sysDeptService;
} // }
} }
package com.makeit.utils.sql.join;
import com.makeit.module.admin.service.SysUserService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.user.tenant.SysUserVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.stream.Collectors;
@Component
public class SysUserJoinUtil {
private static SysUserService sysUserService;
public static List<String> userIdListByName(String name) {
return sysUserService.listIdByName(name);
}
public static SysUserVO getUserByUserId(String userId) {
return getUserByUserIdList(Arrays.asList(userId)).get(0);
}
public static List<SysUserVO> getUserByUserIdList(Collection<String> userIdList) {
List<String> userIdListNew = new ArrayList<>(userIdList);
userIdListNew.add(-1 + "");
return sysUserService.listByIdList(userIdListNew);
//return BeanDtoVoUtils.listVo(tntUserService.listByIds(userIdListNew), TntUserVO.class);
}
private static <T> JoinVo<SysUserVO> joinInternal(List<T> list, List<Function<T, String>> getNidList) {
Set<String> idList = new HashSet<>(16);
list.forEach(e -> {
getNidList.forEach(f -> {
idList.add(f.apply(e));
});
});
idList.add(-1 + "");
List<SysUserVO> mList = getUserByUserIdList(idList);
Map<String, SysUserVO> map = StreamUtil.toMap(mList, SysUserVO::getId);
return new JoinVo<>(mList, map);
}
public static <T> void join(List<T> list, List<Function<T, String>> getNidList, List<BiConsumer<T, SysUserVO>> consumerList) {
if (list.isEmpty()) {
return;
}
JoinVo<SysUserVO> vo = joinInternal(list, getNidList);
List<SysUserVO> mList = vo.getList();
Map<String, SysUserVO> map = vo.getMap();
list.forEach(e -> {
for (int i = 0; i < getNidList.size(); i++) {
SysUserVO m = map.get(getNidList.get(i).apply(e));
if (m != null) {
consumerList.get(i).accept(e, m);
}
}
});
}
public static <T> void join(List<T> list, Function<T, String> getNid, BiConsumer<T, SysUserVO> consumer) {
join(list, Arrays.asList(getNid), Arrays.asList(consumer));
}
public static <T> JoinVo<SysUserVO> join(List<T> list, Function<T, String> getNid) {
return join(list, Arrays.asList(getNid));
}
public static <T> JoinVo<SysUserVO> join(List<T> list, List<Function<T, String>> getNidList) {
if (list.isEmpty()) {
return new JoinVo<>(new ArrayList<>(10), new HashMap<>(16));
}
return joinInternal(list, getNidList);
}
public static <T> void joinSplit(List<T> list, Function<T, String> getNid, BiConsumer<T, List<SysUserVO>> consumer) {
if (list.isEmpty()) {
return;
}
Set<String> idList = list.stream().map(getNid).filter(StringUtils::isNotBlank).map(e -> new ArrayList<>(Arrays.asList(e.split(","))))
.flatMap(Collection::stream).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
if (idList.isEmpty()) {
return;
}
List<SysUserVO> mList = getUserByUserIdList(idList);
Map<String, SysUserVO> map = StreamUtil.toMap(mList, SysUserVO::getId);
list.forEach(e -> {
String ids = getNid.apply(e);
if (StringUtils.isBlank(ids)) {
return;
}
List<SysUserVO> list1 = Arrays.stream(ids.split(",")).map(ee -> {
if (StringUtils.isNotBlank(ee)) {
SysUserVO m = map.get(ee);
return m;
}
return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
consumer.accept(e, list1);
});
}
@Autowired
public void setTntUserService(SysUserService sysUserService) {
SysUserJoinUtil.sysUserService = sysUserService;
}
}
package com.makeit.utils.user; package com.makeit.utils.user;
import com.makeit.config.global.thread.BizThreadLocal; import com.makeit.config.global.thread.BizThreadLocal;
import com.makeit.utils.user.tenant.SysUserLoginVO; import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO; import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.module.admin.vo.plat.PlatUserLoginVO;
import com.makeit.utils.user.saas.SaasUserLoginVO;
import com.makeit.utils.user.wechat.WechatUserInfo; import com.makeit.utils.user.wechat.WechatUserInfo;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -16,7 +18,8 @@ public class ThreadLocalUserUtil { ...@@ -16,7 +18,8 @@ public class ThreadLocalUserUtil {
private static final ThreadLocal<SaasUserLoginVO> THREAD_LOCAL_TNT_USER = new BizThreadLocal<>(); private static final ThreadLocal<SaasUserLoginVO> THREAD_LOCAL_TNT_USER = new BizThreadLocal<>();
private static final ThreadLocal<WechatUserInfo> THREAD_LOCAL_WECHAT_USER = new BizThreadLocal<>(); private static final ThreadLocal<WechatUserInfo> THREAD_LOCAL_WECHAT_USER = new BizThreadLocal<>();
private static final ThreadLocal<SysUserRoleMenuRedisVO> THREAD_LOCAL_TNT_USER_ROLE_MENU = new BizThreadLocal<>(); private static final ThreadLocal<PlatUserRoleMenuRedisVO> THREAD_LOCAL_TNT_USER_ROLE_MENU = new BizThreadLocal<>();
private static final ThreadLocal<SaasUserRoleMenuRedisVO> THREAD_LOCAL_SAAS_USER_ROLE_MENU = new BizThreadLocal<>();
private static final ThreadLocal<WechatUserInfo> THREAD_LOCAL_WECHAT_USER_ROLE_MENU = new BizThreadLocal<>(); private static final ThreadLocal<WechatUserInfo> THREAD_LOCAL_WECHAT_USER_ROLE_MENU = new BizThreadLocal<>();
...@@ -45,7 +48,7 @@ public class ThreadLocalUserUtil { ...@@ -45,7 +48,7 @@ public class ThreadLocalUserUtil {
} }
public static SysUserLoginVO getTntUser() { public static PlatUserLoginVO getTntUser() {
// SysUserLoginVO sysUserLoginVO = THREAD_LOCAL_TNT_USER.get(); // SysUserLoginVO sysUserLoginVO = THREAD_LOCAL_TNT_USER.get();
...@@ -63,7 +66,7 @@ public class ThreadLocalUserUtil { ...@@ -63,7 +66,7 @@ public class ThreadLocalUserUtil {
//TODO ywc 上面好像有threadlocal 泄露问题 //TODO ywc 上面好像有threadlocal 泄露问题
SysUserLoginVO sysUserLoginVO = TokenUtil.getTntUserDetail(); PlatUserLoginVO sysUserLoginVO = TokenUtil.getTntUserDetail();
return sysUserLoginVO; return sysUserLoginVO;
} }
...@@ -82,8 +85,8 @@ public class ThreadLocalUserUtil { ...@@ -82,8 +85,8 @@ public class ThreadLocalUserUtil {
return wechatUserInfo; return wechatUserInfo;
} }
public static SysUserRoleMenuRedisVO getTntUserRoleAndMenu() { public static PlatUserRoleMenuRedisVO getTntUserRoleAndMenu() {
SysUserRoleMenuRedisVO sysUserRoleMenuRedisVO = THREAD_LOCAL_TNT_USER_ROLE_MENU.get(); PlatUserRoleMenuRedisVO sysUserRoleMenuRedisVO = THREAD_LOCAL_TNT_USER_ROLE_MENU.get();
if (sysUserRoleMenuRedisVO == null) { if (sysUserRoleMenuRedisVO == null) {
sysUserRoleMenuRedisVO = TokenUtil.getTntUserRoleMenu(); sysUserRoleMenuRedisVO = TokenUtil.getTntUserRoleMenu();
THREAD_LOCAL_TNT_USER_ROLE_MENU.set(sysUserRoleMenuRedisVO); THREAD_LOCAL_TNT_USER_ROLE_MENU.set(sysUserRoleMenuRedisVO);
......
...@@ -5,12 +5,13 @@ import com.makeit.enums.CodeMessageEnum; ...@@ -5,12 +5,13 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.HeaderConst; import com.makeit.enums.HeaderConst;
import com.makeit.enums.redis.RedisConst; import com.makeit.enums.redis.RedisConst;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO; import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.module.admin.vo.plat.PlatUserLoginVO;
import com.makeit.utils.redis.RedisTemplateUtil; import com.makeit.utils.redis.RedisTemplateUtil;
import com.makeit.utils.redis.RedisUtil; import com.makeit.utils.redis.RedisUtil;
import com.makeit.utils.request.RequestUtil; import com.makeit.utils.request.RequestUtil;
import com.makeit.utils.user.tenant.SysUserLoginVO; import com.makeit.utils.user.saas.SaasUserLoginVO;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.utils.user.wechat.WechatUserInfo; import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -74,18 +75,18 @@ public class TokenUtil { ...@@ -74,18 +75,18 @@ public class TokenUtil {
return null; return null;
} }
public static SysUserRoleMenuRedisVO getTntUserRoleMenu(String token) { public static PlatUserRoleMenuRedisVO getTntUserRoleMenu(String token) {
if (StringUtils.isNotBlank(token)) { if (StringUtils.isNotBlank(token)) {
SysUserRoleMenuRedisVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_ROLE_MENU_PREFIX + token, SysUserRoleMenuRedisVO.class); PlatUserRoleMenuRedisVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_ROLE_MENU_PREFIX + token, PlatUserRoleMenuRedisVO.class);
return userLoginVO; return userLoginVO;
} }
return null; return null;
} }
public static SysUserRoleMenuRedisVO getTntUserRoleMenu() { public static PlatUserRoleMenuRedisVO getTntUserRoleMenu() {
String token = RequestUtil.getHeader(HeaderConst.TOKEN); String token = RequestUtil.getHeader(HeaderConst.TOKEN);
if (StringUtils.isNotBlank(token)) { if (StringUtils.isNotBlank(token)) {
SysUserRoleMenuRedisVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_ROLE_MENU_PREFIX + token, SysUserRoleMenuRedisVO.class); PlatUserRoleMenuRedisVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_ROLE_MENU_PREFIX + token, PlatUserRoleMenuRedisVO.class);
return userLoginVO; return userLoginVO;
} }
return null; return null;
...@@ -199,10 +200,10 @@ public class TokenUtil { ...@@ -199,10 +200,10 @@ public class TokenUtil {
} }
public static SysUserLoginVO getTntUserDetail() { public static PlatUserLoginVO getTntUserDetail() {
String token = RequestUtil.getHeader(HeaderConst.TOKEN); String token = RequestUtil.getHeader(HeaderConst.TOKEN);
if (StringUtils.isNotBlank(token)) { if (StringUtils.isNotBlank(token)) {
SysUserLoginVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_PREFIX + token, SysUserLoginVO.class); PlatUserLoginVO userLoginVO = RedisTemplateUtil.get(RedisConst.TOKEN_PREFIX + token, PlatUserLoginVO.class);
return userLoginVO; return userLoginVO;
} }
return null; return null;
......
package com.makeit.utils.user.common; package com.makeit.utils.user.common;
import com.makeit.enums.HeaderConst; import com.makeit.enums.HeaderConst;
import com.makeit.module.admin.vo.plat.PlatUserLoginVO;
import com.makeit.utils.user.saas.SaasUserLoginVO;
import com.makeit.utils.user.ThreadLocalUserUtil; import com.makeit.utils.user.ThreadLocalUserUtil;
import com.makeit.utils.user.TokenUtil; import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.SaasUserLoginVO;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.wechat.WechatUserInfo; import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
...@@ -14,7 +14,7 @@ public class CommonUserUtil { ...@@ -14,7 +14,7 @@ public class CommonUserUtil {
public static CommonUserVO getUser() { public static CommonUserVO getUser() {
SysUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser(); PlatUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser();
if (sysUserLoginVO != null) { if (sysUserLoginVO != null) {
return new CommonUserVO(sysUserLoginVO.getId(), sysUserLoginVO.getName()); return new CommonUserVO(sysUserLoginVO.getId(), sysUserLoginVO.getName());
} }
......
package com.makeit.utils.user.plat;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.biz.auth.IsFactoryAccountEnum;
import com.makeit.enums.id.IdConst;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
import com.makeit.module.admin.vo.plat.PlatUserLoginVO;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.utils.user.wechat.WechatUserUtil;
public class PlatUserUtil {
private static final ThreadLocal<PlatUserVO> THREAD_LOCAL_USER = new ThreadLocal<>();
public static boolean isSuper() {
PlatUserVO userVO = PlatUserUtil.getUserVO();
return IsFactoryAccountEnum.YES.getValue().equals(userVO.getTenantId())
|| IdConst.SUPER_ADMIN_ID.equals(userVO.getId());
}
public static void execute(PlatUserVO userVO, Runnable runnable) {
THREAD_LOCAL_USER.set(userVO);
try {
runnable.run();
} finally {
THREAD_LOCAL_USER.remove();
}
}
public static PlatUserVO getUserVO() {
PlatUserVO userVO = THREAD_LOCAL_USER.get();
if (userVO != null) {
return userVO;
}
//或者这里用策略模式
WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
if (wechatUserInfo != null) {
return BeanDtoVoUtils.convert(wechatUserInfo, PlatUserVO.class);
}
PlatUserLoginVO tntUserLoginVO = TokenUtil.getTntUserDetail();
if (tntUserLoginVO != null) {
return BeanDtoVoUtils.convert(tntUserLoginVO, PlatUserVO.class);
}
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_TOKEN_BLANK_OR_NOT_EXIST);
}
public static PlatUserVO getUserVOCanNull() {
//或者这里用策略模式
WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
if (wechatUserInfo != null) {
return BeanDtoVoUtils.convert(wechatUserInfo, PlatUserVO.class);
}
PlatUserLoginVO tntUserLoginVO = TokenUtil.getTntUserDetail();
if (tntUserLoginVO != null) {
return BeanDtoVoUtils.convert(tntUserLoginVO, PlatUserVO.class);
}
return null;
}
public static PlatUserVO getSystemUser() {
PlatUserVO platUserVO = new PlatUserVO();
platUserVO.setId("1");
platUserVO.setName("system");
//tntUserVO.setTenantId();
platUserVO.setIsTenant(CommonEnum.NO.getValue());
return platUserVO;
}
public static PlatUserVO getUserVOCanSystem() {//TODO 这里可能有问题
try {
PlatUserVO platUserVO = getUserVOCanNull();
if (platUserVO == null) {
return getSystemUser();
}
return platUserVO;
} catch (RuntimeException e) {
return getSystemUser();
}
}
public static PlatUserLoginVO getUserVODetail() {
TokenUtil.tntGetToken();
return TokenUtil.getTntUserDetail();
}
public static PlatUserRoleMenuRedisVO getTntUserRoleMenu() {
return TokenUtil.getTntUserRoleMenu();
}
public static String getUserId() {
return getUserVO().getId();
}
}
package com.makeit.utils.user; package com.makeit.utils.user.plat;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
public class TntUserVO implements Serializable { public class PlatUserVO implements Serializable {
private String id; private String id;
private String name; private String name;
// private String username; // private String username;
...@@ -16,16 +16,16 @@ public class TntUserVO implements Serializable { ...@@ -16,16 +16,16 @@ public class TntUserVO implements Serializable {
private String deptId; private String deptId;
public TntUserVO() { public PlatUserVO() {
} }
public TntUserVO(String id, String name, String tenantId) { public PlatUserVO(String id, String name, String tenantId) {
this.id = id; this.id = id;
this.tenantId = tenantId; this.tenantId = tenantId;
this.name = name; this.name = name;
} }
public TntUserVO(String id, String name) { public PlatUserVO(String id, String name) {
this.id = id; this.id = id;
this.name = name; this.name = name;
} }
......
package com.makeit.utils.user; package com.makeit.utils.user.saas;
import com.makeit.module.admin.saas.PlatMenuDTOVO; import com.makeit.module.admin.saas.SaasMenuDTOVO;
import com.makeit.module.admin.saas.SaasRoleDTOVO; import com.makeit.module.admin.saas.SaasRoleDTOVO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -31,9 +31,9 @@ public class SaasUserLoginVO implements Serializable { ...@@ -31,9 +31,9 @@ public class SaasUserLoginVO implements Serializable {
private List<SaasRoleDTOVO> roleList; private List<SaasRoleDTOVO> roleList;
@ApiModelProperty("菜单树形列表") @ApiModelProperty("菜单树形列表")
private List<PlatMenuDTOVO> menuList; private List<SaasMenuDTOVO> menuList;
@ApiModelProperty("按钮列表") @ApiModelProperty("按钮列表")
private List<PlatMenuDTOVO> buttonList; private List<SaasMenuDTOVO> buttonList;
} }
package com.makeit.utils.user; package com.makeit.utils.user.saas;
import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO; import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.user.TokenUtil;
public class PlatUserUtil { public class SaasUserUtil {
public static PlatUserVO getUserVO() { public static SaasUserVO getUserVO() {
TokenUtil.platGetToken(); TokenUtil.platGetToken();
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), PlatUserVO.class); return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), SaasUserVO.class);
} }
public static PlatUserVO getUserVOCanNull() { public static SaasUserVO getUserVOCanNull() {
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), PlatUserVO.class); return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), SaasUserVO.class);
} }
public static SaasUserLoginVO getUserVODetail() { public static SaasUserLoginVO getUserVODetail() {
......
package com.makeit.utils.user; package com.makeit.utils.user.saas;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@Data @Data
public class PlatUserVO implements Serializable { public class SaasUserVO implements Serializable {
private String id; private String id;
private String name; private String name;
} }
package com.makeit.utils.user.tenant;
import com.makeit.config.global.thread.BizThreadLocal;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.biz.auth.IsFactoryAccountEnum;
import com.makeit.enums.id.IdConst;
import com.makeit.enums.redis.RedisConst;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.entity.SysDept;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.user.ThreadLocalUserUtil;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.wechat.WechatUserInfo;
import com.makeit.utils.user.wechat.WechatUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Component
public class SysUserUtil {
private static SysDeptService sysDeptService;
private static final BizThreadLocal<SysUserVO> THREAD_LOCAL_USER = new BizThreadLocal<>();
public static void execute(SysUserVO userVO, Runnable runnable) {
THREAD_LOCAL_USER.execute(userVO, runnable);
}
public static boolean isSuper() {
SysUserVO userVO = SysUserUtil.getUserVO();
return IsFactoryAccountEnum.YES.getValue().equals(userVO.getIsFactory())
|| IdConst.SUPER_ADMIN_ID.equals(userVO.getId());
}
public static List<String> factoryIdList() {
return StreamUtil.map(Optional.ofNullable(TokenUtil.getTntUserRoleMenu().getFactoryList()).orElse(new ArrayList<>()), SysFactoryDTOVO::getId);
}
public static List<String> deptIdList() {
List<String> deptIdList = Optional.ofNullable(TokenUtil.getTntUserRoleMenu().getFactoryList()).orElse(new ArrayList<>()).stream().flatMap(e -> Arrays.stream(e.getDeptIdList().split(","))).filter(StringUtils::isNotBlank)
.collect(Collectors.toList());
deptIdList.add(-1 + "");
return StreamUtil.map(sysDeptService.listByIds(deptIdList), SysDept::getId);
}
public static SysUserVO getUserVO() {
SysUserVO userVO = THREAD_LOCAL_USER.get();
if (userVO != null) {
return userVO;
}
//或者这里用策略模式
WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
if (wechatUserInfo != null) {
return BeanDtoVoUtils.convert(wechatUserInfo, SysUserVO.class);
}
SysUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser();
if (sysUserLoginVO != null) {
return BeanDtoVoUtils.convert(sysUserLoginVO, SysUserVO.class);
}
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_TOKEN_BLANK_OR_NOT_EXIST);
}
public static SysUserVO getUserVOCanNull() {
//或者这里用策略模式
WechatUserInfo wechatUserInfo = WechatUserUtil.getUserVOCanNull();
if (wechatUserInfo != null) {
return BeanDtoVoUtils.convert(wechatUserInfo, SysUserVO.class);
}
SysUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser();
if (sysUserLoginVO != null) {
return BeanDtoVoUtils.convert(sysUserLoginVO, SysUserVO.class);
}
return null;
}
public static String getUserIdCanNull() {
SysUserVO userVO = getUserVOCanNull();
if (userVO == null) {
return null;
}
return userVO.getId();
}
public static SysUserVO getSystemUser() {
SysUserVO sysUserVO = new SysUserVO();
sysUserVO.setId("1");
sysUserVO.setName("系统");
sysUserVO.setNameEng("System");
//tntUserVO.setTenantId();
sysUserVO.setIsFactory(CommonEnum.NO.getValue());
return sysUserVO;
}
public static SysUserVO getUserVOCanSystem() {//TODO ywc 这里可能有问题
try {
SysUserVO sysUserVO = getUserVOCanNull();
if (sysUserVO == null) {
return getSystemUser();
}
return sysUserVO;
} catch (RuntimeException e) {
return getSystemUser();
}
}
public static SysUserLoginVO getUserVODetail() {
TokenUtil.getToken(RedisConst.TOKEN_PREFIX, ThreadLocalUserUtil.getTntToken());
return ThreadLocalUserUtil.getTntUser();
}
public static SysUserRoleMenuRedisVO getTntUserRoleMenu() {
return ThreadLocalUserUtil.getTntUserRoleAndMenu();
}
public static String getUserId() {
return getUserVO().getId();
}
@Autowired
public void setSysDeptService(SysDeptService sysDeptService) {
SysUserUtil.sysDeptService = sysDeptService;
}
}
package com.makeit.utils.user.tenant;
import com.makeit.common.dto.BaseTenantDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel("厂别用户vo")
@Data
public class SysUserVO extends BaseTenantDTO {
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "姓名-目前给系统用户用")
private String nameEng;
@ApiModelProperty("账号")
private String account;
@ApiModelProperty("是否厂别超级管理员 0否 1是")
private String isFactory;
@ApiModelProperty(value = "部门id")
private String deptId;
}
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
/**
* 租户端部门
* @TableName plat_org
*/
@TableName(value ="plat_org")
@Data
public class PlatOrg extends BaseBusEntity {
/**
* 租户id
*/
private String tenantId;
/**
* 父级id
*/
private String parentId;
/**
* 组织名称
*/
private String name;
/**
* 排序
*/
private Integer sort;
/**
* 状态 0禁用 1启用
*/
private String status;
/**
* 类型 1-居家 2-机构
*/
private String type;
/**
* 管辖区域id
*/
private String region;
}
\ No newline at end of file
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
/**
* 租户端角色
* @TableName plat_role
*/
@TableName(value ="plat_role")
@Data
public class PlatRole extends BaseBusEntity {
/**
* 租户id
*/
private String tenantId;
/**
* 名称
*/
private String roleName;
/**
* 备注
*/
private String remark;
/**
* 数据权限 子公司id 上级可看到下级
*/
private String dataScope;
}
\ No newline at end of file
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
/**
* 租户端角色菜单关联表
* @TableName plat_role_menu
*/
@TableName(value ="plat_role_menu")
@Data
public class PlatRoleMenu extends BaseBusEntity {
/**
* id
*/
@TableId
private String id;
/**
* 租户id
*/
private String tenantId;
/**
* 角色id
*/
private String roleId;
/**
* 菜单id
*/
private String menuId;
}
\ No newline at end of file
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
/**
* 租户端角色部门关联表
* @TableName plat_role_org
*/
@TableName(value ="plat_role_org")
@Data
public class PlatRoleOrg extends BaseBusEntity {
/**
* 租户id
*/
private String tenantId;
/**
* 角色id
*/
private String roleId;
/**
* 部门树id
*/
private String orgId;
}
\ No newline at end of file
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
/**
* 租户账号管理
* @TableName plat_user
*/
@TableName(value ="plat_user")
@Data
public class PlatUser extends BaseBusEntity {
/**
* 租户id
*/
private String tenantId;
/**
* 用户名
*/
private String username;
/**
* 账户
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 手机号
*/
private String mobile;
/**
* 邮箱
*/
private String email;
/**
* 状态 0禁用 1启用
*/
private String status;
/**
* 头像
*/
private String avatar;
/**
* 是否租户账户/租户管理员 0否 1是
*/
private String isTenant;
/**
* 部门树id
*/
private String orgId;
/**
* 部门树冗余id
*/
private String orgPath;
/**
* 备注
*/
private String remark;
}
\ No newline at end of file
package com.makeit.entity.platform.auth;
import com.baomidou.mybatisplus.annotation.TableName;
import com.makeit.common.entity.BaseBusEntity;
import lombok.Data;
/**
* 租户端用户角色关联表
* @TableName plat_user_role
*/
@TableName(value ="plat_user_role")
@Data
public class PlatUserRole extends BaseBusEntity {
/**
* 租户id
*/
private String tenantId;
/**
* 用户id
*/
private String userId;
/**
* 角色id
*/
private String roleId;
}
\ No newline at end of file
...@@ -8,9 +8,9 @@ import lombok.Data; ...@@ -8,9 +8,9 @@ import lombok.Data;
* 租户端资源管理 * 租户端资源管理
* @TableName tnt_auth_menu * @TableName tnt_auth_menu
*/ */
@TableName(value ="tnt_auth_menu") @TableName(value ="plat_menu")
@Data @Data
public class PlatAuthMenu extends BaseEntity { public class PlatMenu extends BaseEntity {
/** /**
* 父级id * 父级id
......
...@@ -10,7 +10,7 @@ import java.util.Date; ...@@ -10,7 +10,7 @@ import java.util.Date;
* 租户管理 * 租户管理
* @TableName tnt_tenant * @TableName tnt_tenant
*/ */
@TableName(value ="tnt_tenant") @TableName(value ="plat_tenant")
@Data @Data
public class PlatTenant extends BaseEntity { public class PlatTenant extends BaseEntity {
......
package com.makeit.mapper.platform.auth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.auth.PlatOrg;
/**
* @author lixl
* @description 针对表【plat_org(租户端部门)】的数据库操作Mapper
* @createDate 2023-08-30 20:10:25
* @Entity generator.entity.PlatOrg
*/
public interface PlatOrgMapper extends BaseMapper<PlatOrg> {
}
package com.makeit.mapper.platform.auth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.auth.PlatRole;
/**
* @author lixl
* @description 针对表【plat_role(租户端角色)】的数据库操作Mapper
* @createDate 2023-08-30 20:10:25
* @Entity generator.entity.PlatRole
*/
public interface PlatRoleMapper extends BaseMapper<PlatRole> {
}
package com.makeit.mapper.platform.auth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.auth.PlatRoleMenu;
/**
* @author lixl
* @description 针对表【plat_role_menu(租户端角色菜单关联表)】的数据库操作Mapper
* @createDate 2023-08-30 20:10:25
* @Entity generator.entity.PlatRoleMenu
*/
public interface PlatRoleMenuMapper extends BaseMapper<PlatRoleMenu> {
}
package com.makeit.mapper.platform.auth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.auth.PlatRoleOrg;
/**
* @author lixl
* @description 针对表【plat_role_org(租户端角色部门关联表)】的数据库操作Mapper
* @createDate 2023-08-30 20:10:25
* @Entity generator.entity.PlatRoleOrg
*/
public interface PlatRoleOrgMapper extends BaseMapper<PlatRoleOrg> {
}
package com.makeit.mapper.platform.auth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.auth.PlatUser;
/**
* @author lixl
* @description 针对表【plat_user(租户账号管理)】的数据库操作Mapper
* @createDate 2023-08-30 20:10:25
* @Entity generator.entity.PlatUser
*/
public interface PlatUserMapper extends BaseMapper<PlatUser> {
}
package com.makeit.mapper.platform.auth;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.platform.auth.PlatUserRole;
/**
* @author lixl
* @description 针对表【plat_user_role(租户端用户角色关联表)】的数据库操作Mapper
* @createDate 2023-08-30 20:10:25
* @Entity generator.entity.PlatUserRole
*/
public interface PlatUserRoleMapper extends BaseMapper<PlatUserRole> {
}
package com.makeit.mapper.saas; package com.makeit.mapper.saas;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.makeit.entity.saas.PlatAuthMenu; import com.makeit.entity.saas.PlatMenu;
/** /**
* @author lixl * @author lixl
...@@ -9,7 +9,7 @@ import com.makeit.entity.saas.PlatAuthMenu; ...@@ -9,7 +9,7 @@ import com.makeit.entity.saas.PlatAuthMenu;
* @createDate 2023-08-29 14:29:10 * @createDate 2023-08-29 14:29:10
* @Entity com.makeit.entity.saas.TntAuthMenu * @Entity com.makeit.entity.saas.TntAuthMenu
*/ */
public interface PlatAuthMenuMapper extends BaseMapper<PlatAuthMenu> { public interface PlatMenuMapper extends BaseMapper<PlatMenu> {
} }
package com.makeit.server.platform.auth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.auth.PlatOrg;
/**
* @author lixl
* @description 针对表【plat_org(租户端部门)】的数据库操作Service
* @createDate 2023-08-30 20:10:25
*/
public interface PlatOrgService extends IService<PlatOrg> {
}
package com.makeit.server.platform.auth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.auth.PlatRoleMenu;
/**
* @author lixl
* @description 针对表【plat_role_menu(租户端角色菜单关联表)】的数据库操作Service
* @createDate 2023-08-30 20:10:25
*/
public interface PlatRoleMenuService extends IService<PlatRoleMenu> {
}
package com.makeit.server.platform.auth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.auth.PlatRoleOrg;
/**
* @author lixl
* @description 针对表【plat_role_org(租户端角色部门关联表)】的数据库操作Service
* @createDate 2023-08-30 20:10:25
*/
public interface PlatRoleOrgService extends IService<PlatRoleOrg> {
}
package com.makeit.server.platform.auth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.auth.PlatRole;
/**
* @author lixl
* @description 针对表【plat_role(租户端角色)】的数据库操作Service
* @createDate 2023-08-30 20:10:25
*/
public interface PlatRoleService extends IService<PlatRole> {
}
package com.makeit.server.platform.auth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.auth.PlatUserRole;
/**
* @author lixl
* @description 针对表【plat_user_role(租户端用户角色关联表)】的数据库操作Service
* @createDate 2023-08-30 20:10:25
*/
public interface PlatUserRoleService extends IService<PlatUserRole> {
}
package com.makeit.server.platform.auth;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.platform.auth.PlatUser;
/**
* @author lixl
* @description 针对表【plat_user(租户账号管理)】的数据库操作Service
* @createDate 2023-08-30 20:10:25
*/
public interface PlatUserService extends IService<PlatUser> {
}
package com.makeit.server.platform.auth.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.auth.PlatOrg;
import com.makeit.mapper.platform.auth.PlatOrgMapper;
import com.makeit.server.platform.auth.PlatOrgService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_org(租户端部门)】的数据库操作Service实现
* @createDate 2023-08-30 20:10:25
*/
@Service
public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
implements PlatOrgService{
}
package com.makeit.server.platform.auth.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.auth.PlatRoleMenu;
import com.makeit.mapper.platform.auth.PlatRoleMenuMapper;
import com.makeit.server.platform.auth.PlatRoleMenuService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_role_menu(租户端角色菜单关联表)】的数据库操作Service实现
* @createDate 2023-08-30 20:10:25
*/
@Service
public class PlatRoleMenuServiceImpl extends ServiceImpl<PlatRoleMenuMapper, PlatRoleMenu>
implements PlatRoleMenuService{
}
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 sign in to comment