Commit 5c43ec9b by 李小龙

整理代码

parent ebd03123
Showing with 1357 additions and 3844 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.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.biz.auth.SysEnum;
import com.makeit.enums.id.TreeConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.dto.SysMenuDTOVO;
import com.makeit.module.admin.dto.SysMenuQueryDTO;
import com.makeit.module.admin.entity.SysMenu;
import com.makeit.module.admin.entity.SysRoleMenu;
import com.makeit.module.admin.mapper.SysMenuMapper;
import com.makeit.module.admin.service.SysMenuService;
import com.makeit.module.admin.service.SysRoleMenuService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import io.swagger.annotations.Api;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
import org.springframework.core.type.filter.RegexPatternTypeFilter;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Method;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/**
* <p>
* 菜单 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
@Autowired
private SysRoleMenuService sysRoleMenuService;
private static final Logger logger = LoggerFactory.getLogger(SysMenuServiceImpl.class);
@Override
public List<SysMenuDTOVO> list(SysMenuQueryDTO dto) {
List<String> menuIdList = new ArrayList<>(10);
menuIdList.add(-1 + "");
if (StringUtils.isNotBlank(dto.getRoleId())) {
List<SysRoleMenu> sysRoleMenuList = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().lambda()
.eq(SysRoleMenu::getRoleId, dto.getRoleId()));
menuIdList.addAll(StreamUtil.map(sysRoleMenuList, SysRoleMenu::getMenuId));
}
List<SysMenu> sysMenuList = list(new QueryWrapper<SysMenu>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SysMenu::getName, dto.getName())
.eq(StringUtils.isNotBlank(dto.getStatus()), SysMenu::getStatus, dto.getStatus())
.in(StringUtils.isNotBlank(dto.getRoleId()), SysMenu::getId, menuIdList)
//.orderByAsc(TntMenu::getParentId)
.orderByAsc(SysMenu::getSort)
.orderByAsc(SysMenu::getCreateBy)
);
return BeanDtoVoUtils.listVo(sysMenuList, SysMenuDTOVO.class);
}
@Override
public List<SysMenuDTOVO> tree(List<SysMenuDTOVO> tntMenuList) {
Map<String, SysMenuDTOVO> map = StreamUtil.toMap(tntMenuList, SysMenuDTOVO::getId);
List<SysMenuDTOVO> topList = StreamUtil.filter(tntMenuList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId()));
tntMenuList.forEach(e -> {
SysMenuDTOVO parent = map.get(e.getParentId());
if (parent != null) {
List<SysMenuDTOVO> children = parent.getChildren();
if (children == null) {
children = new ArrayList<>(10);
parent.setChildren(children);
}
children.add(e);
}
});
return topList;
}
@Override
public List<SysMenuDTOVO> tree(SysMenuQueryDTO dto) {
List<SysMenuDTOVO> tntMenuList = list(dto);
return tree(tntMenuList);
}
private void checkCode(SysMenuDTOVO dto) {
SysMenu old = getOne(new QueryWrapper<SysMenu>().lambda()
.eq(SysMenu::getCode, dto.getCode()));
if (old != null && !old.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_CODE_DUPLICATE);
}
}
@Transactional
@Override
public void add(SysMenuDTOVO dto) {
checkCode(dto);
save(BeanDtoVoUtils.convert(dto, SysMenu.class));
}
@Transactional
@Override
public void edit(SysMenuDTOVO dto) {
checkCode(dto);
updateById(BeanDtoVoUtils.convert(dto, SysMenu.class));
}
@Override
public SysMenuDTOVO view(String id) {
return BeanDtoVoUtils.convert(getById(id), SysMenuDTOVO.class);
}
@Transactional
@Override
public void del(String id) {
List<SysMenu> list = new ArrayList<>(10);
List<SysMenu> children = list(new QueryWrapper<SysMenu>().lambda()
.eq(SysMenu::getParentId, id));
while (!children.isEmpty()) {
list.addAll(children);
List<String> idList = StreamUtil.mapId(children, SysMenu::getId);
children = list(new QueryWrapper<SysMenu>().lambda()
.in(SysMenu::getParentId, idList));
}
List<String> idList = StreamUtil.map(list, SysMenu::getId);
idList.add(id);
remove(new QueryWrapper<SysMenu>().lambda()
.in(SysMenu::getId, idList));
}
@Override
@Transactional
public void sync() {
List<SysMenu> exitList = list(new QueryWrapper<SysMenu>().lambda()
.isNotNull(SysMenu::getCode)
.in(SysMenu::getCategory, SysEnum.MenuTypeEnum.MENU.getValue(), SysEnum.MenuTypeEnum.BUTTON.getValue())
);
Map<String, SysMenu> exitCodeMap = StreamUtil.toMapDep(exitList, SysMenu::getCode);
//查询数据库中已存在的权限
List<SysMenu> exitButtonList = StreamUtil.filter(exitList, e -> SysEnum.MenuTypeEnum.BUTTON.getValue().equals(e.getCategory()));
Map<String, SysMenu> exitButtonCodeMap = StreamUtil.toMap(exitButtonList, SysMenu::getCode);
//加载项目中的权限
List<SysMenu> loadActionList = StreamUtil.filter(this.load(), e -> !TreeConst.TOP_LEVEL.equals(e.getParentId()));
Set<String> loadActionCodeList = loadActionList.stream().map(SysMenu::getCode).collect(Collectors.toSet());
//新增加的权限
List<SysMenu> addActionList = loadActionList.stream().filter(item ->
!exitButtonCodeMap.containsKey(item.getCode())).collect(Collectors.toList());
//删除的权限
List<SysMenu> deleteActionList = exitButtonList.stream().filter(item ->
!loadActionCodeList.contains(item.getCode())).collect(Collectors.toList());
saveBatch(StreamUtil.filter(addActionList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId())));
addActionList.forEach(e -> {
if (TreeConst.TOP_LEVEL.equals(e.getParentId())) {
exitCodeMap.put(e.getCode(), e);
}
});
List<SysMenu> buttonList = new ArrayList<>(10);
addActionList.forEach(e -> {
if (!TreeConst.TOP_LEVEL.equals(e.getParentId())) {
String groupCode = getGroupCode(e.getCode());
SysMenu buttonGroup = exitCodeMap.get(groupCode);
if (buttonGroup != null) {
e.setParentId(buttonGroup.getId());
} else {
e.setParentId(e.getId());
}
buttonList.add(e);
}
if (StringUtils.isBlank(e.getParentId())) {
e.setParentId(TreeConst.TOP_LEVEL);
}
});
saveBatch(buttonList);
List<String> removeIdList = StreamUtil.mapId(deleteActionList, SysMenu::getId);
removeByIds(removeIdList);
}
@Override
public List<SysMenu> loadMenuCodeList() {
List<SysMenu> list = StreamUtil.filter(this.load(), e -> TreeConst.TOP_LEVEL.equals(e.getParentId()));
return list;
}
private List<SysMenu> load() {
Set<String> buttonCodeSet = new HashSet<>(16);
List<SysMenu> buttonList = new ArrayList<>();
// 禁止默认过滤条件设置false
final ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
//插入匹配过滤条件
provider.addIncludeFilter(new RegexPatternTypeFilter(Pattern.compile(".*Controller")));
final Set<BeanDefinition> classes = provider.findCandidateComponents("com.makeit.controller.tenant");
//从bean中加载数据
for (BeanDefinition bean : classes) {
try {
Class<?> clazz = Class.forName(bean.getBeanClassName());
Method[] methods = clazz.getMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(Action.class)) {
Action action = method.getAnnotation(Action.class);
Arrays.asList(action.code()).forEach(e -> {
if (buttonCodeSet.contains(e)) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_CODE_DUPLICATE);
} else {
buttonCodeSet.add(e);
}
String groupName = action.module();
String groupCode = null;
if (StringUtils.isBlank(groupName)) {
Api api = clazz.getAnnotation(Api.class);
if (api != null) {
groupName = api.tags()[0];
}
}
groupCode = getGroupCode(e);
if (StringUtils.isNotBlank(groupCode) && !buttonCodeSet.contains(groupCode)) {
buttonCodeSet.add(groupCode);
buttonList.add(generateButtonGroup(groupName, groupCode));
}
SysMenu button = new SysMenu();
button.setName(action.name());
button.setCode(e);
button.setSort(0);
button.setStatus(CommonEnum.YES.getValue());
button.setCategory(SysEnum.MenuTypeEnum.BUTTON.getValue());
button.setHiddenStatus(CommonEnum.NO.getValue());
button.setCacheStatus(CommonEnum.NO.getValue());
buttonList.add(button);
});
}
}
} catch (ClassNotFoundException e) {
logger.info("ex_" + e.getMessage(), e);
}
}
return buttonList;
}
private String getGroupCode(String code) {
if (code.contains(":")) {
return code.substring(0, code.lastIndexOf(":"));
}
if (code.contains(".")) {
return code.substring(0, code.lastIndexOf("."));
}
return code;
}
private SysMenu generateButtonGroup(String name, String code) {
SysMenu button = new SysMenu();
button.setName(name);
button.setCode(code);
button.setParentId(TreeConst.TOP_LEVEL);
button.setSort(0);
button.setStatus(CommonEnum.YES.getValue());
button.setCategory(SysEnum.MenuTypeEnum.BUTTON.getValue());
button.setHiddenStatus(CommonEnum.NO.getValue());
button.setCacheStatus(CommonEnum.NO.getValue());
return button;
}
}
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.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.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.id.IdConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.aspect.tenant.TenantIdUtil;
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.*;
import com.makeit.module.admin.mapper.SysRoleMapper;
import com.makeit.module.admin.service.*;
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.WrapperUtil;
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-10
*/
@Service
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
@Autowired
private SysUserRoleService sysUserRoleService;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysMenuService sysMenuService;
@Autowired
private SysRoleWechatMenuService sysRoleWechatMenuService;
@Autowired
private SysRoleFactoryService sysRoleFactoryService;
private LambdaQueryWrapper<SysRole> listWrapper(SysRoleDTOVO dto) {
// if (dto.getNameList() != null) {
// dto.getNameList().add(-1 + "");
// }
if (dto.getCodeList() != null) {
dto.getCodeList().add(-1 + "");
}
LambdaQueryWrapper<SysRole> lambdaQueryWrapper = new QueryWrapper<SysRole>().lambda()
.eq(SysRole::getTenantId, TenantIdUtil.getTenantId())
.like(StringUtils.isNotBlank(dto.getName()), SysRole::getName, dto.getName())
.like(StringUtils.isNotBlank(dto.getCode()), SysRole::getCode, dto.getCode())
//.in(dto.getNameList() != null, TntRole::getName, dto.getNameList())
.in(dto.getCodeList() != null, SysRole::getCode, dto.getCodeList())
.and(StringUtils.isNotBlank(dto.getKeyword()), qw -> {
qw.like(StringUtils.isNotBlank(dto.getKeyword()), SysRole::getName, dto.getKeyword())
.or()
.like(StringUtils.isNotBlank(dto.getKeyword()), SysRole::getName, dto.getKeyword());
})
.eq(StringUtils.isNotBlank(dto.getStatus()), SysRole::getStatus, dto.getStatus())
.orderByDesc(SysRole::getCreateDate);
menuFilter(dto, lambdaQueryWrapper);
return lambdaQueryWrapper;
}
private void menuFilter(SysRoleDTOVO dto, LambdaQueryWrapper<SysRole> lambdaQueryWrapper) {
if (dto.getMenuIdList() == null && dto.getMenuCodeList() == null) {
return;
}
// if (dto.getMenuIdList().isEmpty() || dto.getMenuCodeList().isEmpty()) {
// lambdaQueryWrapper.eq(TntRole::getId, -1);
// return;
// }
if (dto.getMenuIdList() != null) {
dto.getMenuIdList().add(-1 + "");
}
if (dto.getMenuCodeList() != null) {
dto.getMenuCodeList().add(-1 + "");
}
List<SysMenu> menuList = sysMenuService.list(new QueryWrapper<SysMenu>().lambda()
.eq(SysMenu::getStatus, CommonEnum.YES.getValue())//ywc 这里只看启用的
.in(dto.getMenuIdList() != null, SysMenu::getId, dto.getMenuIdList())
.in(dto.getMenuCodeList() != null, SysMenu::getCode, dto.getMenuCodeList())
);
List<String> menuIdList = StreamUtil.mapId(menuList, SysMenu::getId);
List<SysRoleMenu> roleMenuList = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().lambda()
.in(SysRoleMenu::getMenuId, menuIdList));
List<String> roleIdList = StreamUtil.mapId(roleMenuList, SysRoleMenu::getRoleId);
lambdaQueryWrapper.in(SysRole::getId, roleIdList);
}
@Override
public List<SysRoleDTOVO> list(SysRoleDTOVO dto) {
List<SysRole> sysRoleList = list(listWrapper(dto));
return BeanDtoVoUtils.listVo(sysRoleList, SysRoleDTOVO.class);
}
@Override
public PageVO<SysRoleDTOVO> page(PageReqDTO<SysRoleDTOVO> page) {
SysRoleDTOVO dto = page.getData();
Page<SysRole> p = PageUtil.toMpPage(page);
Page<SysRole> pageList = page(p, listWrapper(dto));
List<SysRoleDTOVO> tntUserVOList = BeanDtoVoUtils.listVo(pageList.getRecords(), SysRoleDTOVO.class);
return PageUtil.toPageVO(tntUserVOList, pageList);
}
private void check(SysRoleDTOVO dto) {
SysRole old = WrapperUtil.getOne(this, new QueryWrapper<SysRole>().lambda()
.eq(SysRole::getTenantId, TenantIdUtil.getTenantId())
.eq(SysRole::getName, dto.getName()));
if (old != null && !old.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_NAME_DUPLICATE);
}
old = WrapperUtil.getOne(this, new QueryWrapper<SysRole>().lambda()
.eq(SysRole::getTenantId, TenantIdUtil.getTenantId())
.eq(SysRole::getCode, dto.getCode()));
if (old != null && !old.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_CODE_DUPLICATE);
}
}
private void setMenuIdList(SysRoleDTOVO dto) {
SysRoleMenuDTO roleMenuDTO = new SysRoleMenuDTO();
roleMenuDTO.setRoleId(dto.getId());
roleMenuDTO.setMenuIdList(dto.getMenuIdList());
assignMenuList(roleMenuDTO);
}
@Transactional
@Override
public void add(SysRoleDTOVO dto) {
check(dto);
SysRole sysRole = BeanDtoVoUtils.convert(dto, SysRole.class);
sysRole.setTenantId(TenantIdUtil.getTenantId());
save(sysRole);
dto.setId(sysRole.getId());
//setMenuIdList(dto);
}
@Transactional
@Override
public void edit(SysRoleDTOVO dto) {
check(dto);
SysRole old = getById(dto.getId());
SysRole role = BeanDtoVoUtils.convert(dto, SysRole.class);
role.setTenantId(old.getTenantId());
updateById(role);
//setMenuIdList(dto);
}
@Override
public SysRoleDTOVO view(String id) {
SysRoleDTOVO vo = BeanDtoVoUtils.convert(getById(id), SysRoleDTOVO.class);
return vo;
}
@Transactional
@Override
public void del(String id) {
long count = sysUserRoleService.count(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getRoleId, id));
if (count > 0) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_ROLE_CANT_DELETE);
}
removeById(id);
}
@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);
}
SysRole role = getById(dto.getId());
if (role.getStatus().equals(dto.getStatus())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
role.setStatus(dto.getStatus());
updateById(role);
}
@Transactional
@Override
public void assignUserList(List<SysUserRoleDTO> userRoleDTOList) {//目前只给一个角色 分配人人员使用
removeAssignUserList(userRoleDTOList);
List<SysUserRole> userRoleList = BeanDtoVoUtils.listVo(userRoleDTOList, SysUserRole.class);
userRoleDTOList.forEach(e -> {
e.setTenantId(TenantIdUtil.getTenantId());
});
sysUserRoleService.saveBatch(userRoleList);
}
@Transactional
@Override
public void removeAssignUserList(List<SysUserRoleDTO> userRoleDTOList) {
Map<String, List<SysUserRoleDTO>> roleUserMap = StreamUtil.groupBy(userRoleDTOList, SysUserRoleDTO::getRoleId);
roleUserMap.forEach((k, v) -> {
List<String> userIdList = StreamUtil.mapId(v, SysUserRoleDTO::getUserId);
sysUserRoleService.remove(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getRoleId, k)
.in(SysUserRole::getUserId, userIdList));
});
}
@Transactional
@Override
public void assignMenuList(SysRoleMenuDTO roleMenuDTO) {
sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().lambda()
.eq(SysRoleMenu::getRoleId, roleMenuDTO.getRoleId()));
List<SysRoleMenu> roleMenuList = StreamUtil.map(roleMenuDTO.getMenuIdList(), e -> {
SysRoleMenu sysRoleMenu = new SysRoleMenu();
sysRoleMenu.setRoleId(roleMenuDTO.getRoleId());
sysRoleMenu.setMenuId(e);
return sysRoleMenu;
});
sysRoleMenuService.saveBatch(roleMenuList);
}
@Override
public List<SysRoleMenu> getAssignMenuList(String id) {
List<SysRoleMenu> roleMenuList = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().lambda()
.eq(SysRoleMenu::getRoleId, id));
List<String> menuIdList = StreamUtil.mapId(roleMenuList, SysRoleMenu::getMenuId);
List<SysMenu> menuList = sysMenuService.list(new QueryWrapper<SysMenu>().lambda()
.in(SysMenu::getId, menuIdList));
Map<String, SysMenu> menuMap = StreamUtil.toMap(menuList, SysMenu::getId);
List<SysRoleMenu> newList = new ArrayList<>(10);
roleMenuList.forEach(e -> {
SysMenu menu = menuMap.get(e.getMenuId());
if (menu != null) {
e.setMenuName(menu.getName());
newList.add(e);
}
});
return newList;
}
@Transactional
@Override
public void assignWechatMenuList(SysRoleMenuDTO roleMenuDTO) {
sysRoleWechatMenuService.remove(new QueryWrapper<SysRoleWechatMenu>().lambda()
.eq(SysRoleWechatMenu::getRoleId, roleMenuDTO.getRoleId()));
List<SysRoleWechatMenu> roleMenuList = StreamUtil.map(roleMenuDTO.getMenuIdList(), e -> {
SysRoleWechatMenu tntRoleMenu = new SysRoleWechatMenu();
tntRoleMenu.setRoleId(roleMenuDTO.getRoleId());
tntRoleMenu.setMenuId(e);
tntRoleMenu.setTenantId(roleMenuDTO.getTenantId());
return tntRoleMenu;
});
sysRoleWechatMenuService.saveBatch(roleMenuList);
}
@Override
public List<SysRoleWechatMenu> getWechatMenuList(String roleId) {
List<SysRoleWechatMenu> roleWechatMenuList = sysRoleWechatMenuService.list(new QueryWrapper<SysRoleWechatMenu>().lambda()
.eq(SysRoleWechatMenu::getRoleId, roleId));
return roleWechatMenuList;
}
@Override
public void assignFactoryList(SysRoleFactoryDTO roleFactoryDTO) {
sysRoleFactoryService.remove(new QueryWrapper<SysRoleFactory>().lambda()
.eq(SysRoleFactory::getRoleId, roleFactoryDTO.getRoleId()));
List<SysRoleFactory> roleFactoryList = StreamUtil.map(roleFactoryDTO.getFactoryIdList(), e -> {
SysRoleFactory tntRoleMenu = new SysRoleFactory();
tntRoleMenu.setRoleId(roleFactoryDTO.getRoleId());
tntRoleMenu.setFactoryId(e);
return tntRoleMenu;
});
sysRoleFactoryService.saveBatch(roleFactoryList);
}
@Override
public List<SysRoleFactory> getFactoryList(String roleId) {
List<SysRoleFactory> roleFactoryList = sysRoleFactoryService.list(new QueryWrapper<SysRoleFactory>().lambda()
.eq(SysRoleFactory::getRoleId, roleId));
return roleFactoryList;
}
@Transactional
@Override
public String factoryInit(String factoryId) {
SysRole role = new SysRole();
role.setTenantId(factoryId);
role.setName(IdConst.ROLE_COMMON_USER_NAME);
role.setStatus(CommonEnum.YES.getValue());
role.setCode(IdConst.ROLE_COMMON_USER_CODE);
save(role);
SysRoleFactory sysRoleFactory = new SysRoleFactory();
sysRoleFactory.setRoleId(role.getId());
sysRoleFactory.setFactoryId(factoryId);
sysRoleFactoryService.save(sysRoleFactory);
return role.getId();
}
public static String getNewName(String name) {
return name + "_1";
}
@Override
public void copyRole(String roleId) {
SysRole sysRole = getById(roleId);
SysRole newRole = BeanDtoVoUtils.convert(sysRole, SysRole.class);
newRole.setName(getNewName(sysRole.getName()));
newRole.setCode(getNewName(sysRole.getCode()));
newRole.setId(null);
save(newRole);
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getRoleId, roleId));
List<SysUserRole> userRoleListNew = BeanDtoVoUtils.listVo(userRoleList, SysUserRole.class);
userRoleListNew.forEach(e -> {
e.setId(null);
e.setRoleId(newRole.getId());
});
sysUserRoleService.saveBatch(userRoleListNew);
List<SysRoleMenu> roleMenuList = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().lambda()
.eq(SysRoleMenu::getRoleId, roleId));
List<SysRoleMenu> roleMenuListNew = BeanDtoVoUtils.listVo(roleMenuList, SysRoleMenu.class);
roleMenuListNew.forEach(e -> {
e.setId(null);
e.setRoleId(newRole.getId());
});
sysRoleMenuService.saveBatch(roleMenuListNew);
List<SysRoleWechatMenu> wechatMenuList = sysRoleWechatMenuService.list(new QueryWrapper<SysRoleWechatMenu>().lambda()
.eq(SysRoleWechatMenu::getRoleId, roleId));
wechatMenuList.forEach(e -> {
e.setId(null);
e.setRoleId(newRole.getId());
});
sysRoleWechatMenuService.saveBatch(wechatMenuList);
}
}
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.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.dto.LoginDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.entity.BaseEntity;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.FileSuffixEnum;
import com.makeit.enums.biz.auth.IsFactoryAccountEnum;
import com.makeit.enums.biz.auth.SysEnum;
import com.makeit.enums.biz.auth.SysUserEnum;
import com.makeit.enums.biz.sys.SysDictCategoryConst;
import com.makeit.enums.id.IdConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.global.aspect.tenant.TenantIdUtil;
import com.makeit.module.admin.dto.*;
import com.makeit.module.admin.entity.*;
import com.makeit.module.admin.mapper.SysUserMapper;
import com.makeit.module.admin.service.*;
import com.makeit.module.admin.vo.SysPersonSimpleVO;
import com.makeit.module.system.service.SysDictionaryCategoryService;
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.data.excel.ExcelUtil;
import com.makeit.utils.data.id.IdGen;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.user.PasswordUtils;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.common.CommonUserVO;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.utils.user.tenant.SysUserUtil;
import com.makeit.utils.user.tenant.SysUserVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 用户 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
@Autowired
private SysUserRoleService sysUserRoleService;
@Autowired
private SysRoleService sysRoleService;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysMenuService sysMenuService;
@Autowired
private SysRoleWechatMenuService sysRoleWechatMenuService;
@Autowired
private SysDeptService sysDeptService;
@Autowired
private SysDictionaryCategoryService sysDictionaryCategoryService;
private static final Logger logger = LoggerFactory.getLogger(SysUserServiceImpl.class);
public static final String DEFAULT_PASSWORD = "888888";
private void checkPerson(SysUserDTOVO dto) {
List<SysUser> userList = list(
new QueryWrapper<SysUser>().lambda()
.eq(SysUser::getIsFactory, IsFactoryAccountEnum.NO.getValue())
.and(qw -> qw
// .eq(TntUser::getName, dto.getName())
//
// .or()
.eq(SysUser::getAccount, dto.getAccount())
.or()
.eq(SysUser::getMobile, dto.getMobile())
.or()
.eq(SysUser::getMail, dto.getMail())
)
);
userList.forEach(e -> {
// if (StringUtils.isNotBlank(e.getName()) && e.getName().equals(dto.getName()) && !e.getId().equals(dto.getId())) {
// throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_NAME_DUPLICATE);
// }
if (StringUtils.isNotBlank(e.getAccount()) && e.getAccount().equals(dto.getAccount()) && !e.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_JOB_NO_DUPLICATE);
}
if (StringUtils.isNotBlank(e.getMobile()) && e.getMobile().equals(dto.getMobile()) && !e.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_MOBILE_DUPLICATE);
}
// if (StringUtils.isNotBlank(e.getMail()) && e.getMail().equals(dto.getMail()) && !e.getId().equals(dto.getId())) {
// throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_MAIL_DUPLICATE);
// }
});
}
@Override
public void setDefaultPassword(SysUser user) {
if (StringUtils.isBlank(user.getPassword())) {
user.setPassword(DEFAULT_PASSWORD);
} else {
PasswordUtils.validatePasswordFormat(user.getPassword());
}
user.setPassword(PasswordUtils.encryptPassword(user.getPassword()));
}
@Override
public void setPassword(SysUser user) {
if (StringUtils.isNotBlank(user.getPassword())) {
PasswordUtils.validatePasswordFormat(user.getPassword());
user.setPassword(PasswordUtils.encryptPassword(user.getPassword()));
}
}
@Transactional
@Override
public void changePassword(SysUserDTOVO dto) {
SysUser user = getById(dto.getId());
user.setPassword(dto.getPassword());
setPassword(user);
updateById(user);
}
@Override
public SysUserDTOVO view(String id) {
SysUserDTOVO userVO = BeanDtoVoUtils.convert(getById(id), SysUserDTOVO.class);
return userVO;
}
@Transactional
@Override
public void del(String id) {
removeById(id);
}
@Transactional
@Override
public void changeStatus(StatusDTO dto) {
checkUserSuperException(dto.getId());
if (Arrays.stream(SysUserEnum.StatusEnum.values()).noneMatch(e -> e.getValue().equals(dto.getStatus()))) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
SysUser user = getById(dto.getId());
if (user.getStatus().equals(dto.getStatus())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
user.setStatus(dto.getStatus());
updateById(user);
}
@Override
public SysUserLoginVO login(LoginDTO loginDTO) {
if (StringUtils.isBlank(loginDTO.getAccount())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
if (StringUtils.isBlank(loginDTO.getPassword())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
SysUser sysUser = getOne(new QueryWrapper<SysUser>().lambda()
.eq(SysUser::getAccount, loginDTO.getAccount())
.or()
.eq(SysUser::getMobile, loginDTO.getAccount())
.or()
.eq(SysUser::getMail, loginDTO.getAccount())
);
//这样在所有厂别内账户不能重复
if (sysUser == null) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_AUTH_USER_ACCOUNT_PASSWORD);
}
if (!SysUserEnum.StatusEnum.EFFECTIVE.getValue().equals(sysUser.getStatus())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_AUTH_USER_HAS_DISABLED);
}
if (!PasswordUtils.validatePassword(loginDTO.getPassword(), sysUser.getPassword())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_AUTH_USER_ACCOUNT_PASSWORD);
}
updateById(sysUser);
SysUserLoginVO userLoginVO = BeanDtoVoUtils.convert(sysUser, SysUserLoginVO.class);
String token = IdGen.getUUID();
userLoginVO.setToken(token);
TokenUtil.tntLogin(token, userLoginVO);
CommonUserVO commonUserVO = new CommonUserVO();
commonUserVO.setId(userLoginVO.getId());
commonUserVO.setName(userLoginVO.getName());
return userLoginVO;
}
private void fillMenuList(List<SysMenu> menuList, SysUserLoginVO userLoginVO) {
List<SysMenu> buttonList = new ArrayList<>(10);
List<SysMenu> nonButtonList = new ArrayList<>(10);
String catalogue = SysEnum.MenuTypeEnum.CATALOGUE.getValue();
String menu = SysEnum.MenuTypeEnum.MENU.getValue();
String button = SysEnum.MenuTypeEnum.BUTTON.getValue();
menuList.forEach(e -> {
if (menu.equals(e.getCategory()) || button.equals(e.getCategory())) {
buttonList.add(e);
}
if (catalogue.equals(e.getCategory()) || menu.equals(e.getCategory())) {
nonButtonList.add(e);
}
});
List<SysMenuDTOVO> menuVOList = sysMenuService.tree(BeanDtoVoUtils.listVo(nonButtonList, SysMenuDTOVO.class));
userLoginVO.setButtonList(BeanDtoVoUtils.listVo(buttonList, SysButtonVO.class));
userLoginVO.setMenuList(menuVOList);
}
@Override
public List<SysMenu> getMenuListByFactoryId() {
List<SysMenu> menuList = sysMenuService.list(new QueryWrapper<SysMenu>().lambda()
.eq(SysMenu::getStatus, CommonEnum.YES.getValue())
.orderByAsc(SysMenu::getSort)
.orderByAsc(SysMenu::getCreateDate)
);
return menuList;
}
private void supperRoleMenuList(SysUserLoginVO userLoginVO) {
fillMenuList(getMenuListByFactoryId(), userLoginVO);
}
private void setRoleMenuToRedis(SysUserLoginVO userLoginVO) {
SysUserRoleMenuRedisVO sysUserRoleMenuRedisVO = new SysUserRoleMenuRedisVO();
sysUserRoleMenuRedisVO.setId(userLoginVO.getId());
sysUserRoleMenuRedisVO.setIsFactory(sysUserRoleMenuRedisVO.getIsFactory());
if (userLoginVO.getRoleList() != null) {
sysUserRoleMenuRedisVO.setRoleList(userLoginVO.getRoleList());
}
if (userLoginVO.getButtonList() != null) {
sysUserRoleMenuRedisVO.setButtonCodeList(StreamUtil.map(userLoginVO.getButtonList(), SysButtonVO::getCode));
}
if (userLoginVO.getFactoryList() != null) {
sysUserRoleMenuRedisVO.setFactoryList(userLoginVO.getFactoryList());
}
TokenUtil.tntLoginRoleMenu(sysUserRoleMenuRedisVO);
}
@Override
public SysUserLoginVO getUserVO() {
return SysUserUtil.getUserVODetail();
}
@Override
public SysPersonDTOVO getUserDetail() {
SysPersonDTOVO sysPersonDTOVO = BeanDtoVoUtils.convert(getById(SysUserUtil.getUserId()), SysPersonDTOVO.class);
List<SysRole> roleList = getRoleList(SysUserUtil.getUserId());
sysPersonDTOVO.setRoleList(BeanDtoVoUtils.listVo(roleList, SysRoleDTOVO.class));
JoinUtil.join(Arrays.asList(sysPersonDTOVO), sysDeptService, Arrays.asList(SysPersonDTOVO::getDeptId), SysDept::getId,
Arrays.asList(
(p, d) -> p.setDeptName(d.getName())
)
);
sysPersonDTOVO.setPassword(null);
return sysPersonDTOVO;
}
@Override
public List<SysRole> getRoleList(String userId) {
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getUserId, userId));
List<String> roleIdList = StreamUtil.mapId(userRoleList, SysUserRole::getRoleId);
List<SysRole> roleList = sysRoleService.list(new QueryWrapper<SysRole>().lambda()
.in(SysRole::getId, roleIdList)
.eq(SysRole::getStatus, CommonEnum.YES.getValue())
);
return roleList;
}
@Transactional
@Override
public void editSelf(SysPersonSimpleDTO dto) {
checkUserSuperException(SysUserUtil.getUserId());
SysUser old = getById(SysUserUtil.getUserId());
if (StringUtils.isNotBlank(dto.getMobile())) {
old.setMobile(dto.getMobile());
}
if (StringUtils.isNotBlank(dto.getMail())) {
old.setMail(dto.getMail());
}
if (StringUtils.isNotBlank(dto.getPassword())) {
old.setPassword(dto.getPassword());
setDefaultPassword(old);
}
checkUserSuperException(old.getId());
//dto.setAccount(null);
checkPerson(BeanDtoVoUtils.convert(old, SysUserDTOVO.class));
old.setIsFactory(CommonEnum.NO.getValue());
updateById(old);
}
//短信验证码频率 校验
//不用云服务厂商的校验
//或者 redisson 限流
//就要一个消息发送表
private List<SysMenu> getMenuListByUserId(SysUserLoginVO userLoginVO) {
List<SysRole> roleList = getRoleList(userLoginVO.getId());
List<String> roleIdList = StreamUtil.mapId(roleList, SysRole::getId);
List<SysRoleMenu> roleMenuList = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().lambda()
.in(SysRoleMenu::getRoleId, roleIdList));
List<String> menuIdList = StreamUtil.mapId(roleMenuList, SysRoleMenu::getMenuId);
List<SysMenu> menuList = sysMenuService.list(new QueryWrapper<SysMenu>().lambda()
.in(SysMenu::getId, menuIdList)
.eq(SysMenu::getStatus, CommonEnum.YES.getValue())
.orderByAsc(SysMenu::getSort)
.orderByAsc(SysMenu::getCreateDate)
);
userLoginVO.setRoleList(BeanDtoVoUtils.listVo(roleList, SysRoleDTOVO.class));
if (StringUtils.isNotBlank(userLoginVO.getFactoryId())) {
Set<String> menuIdSet = StreamUtil.mapToSet(getMenuListByFactoryId(), SysMenu::getId);
menuList = StreamUtil.filter(menuList, e -> menuIdSet.contains(e.getId()));
}
return menuList;
}
private void setFactoryList(SysUserLoginVO userLoginVO) {
}
@Override
public SysUserLoginVO getRoleAndMenuList() {
//TODO ywc 用join做
//TODO ywc 只返回必要字段 菜单和角色
SysUserVO sysUserVO = SysUserUtil.getUserVO();
SysUserLoginVO userLoginVO = BeanDtoVoUtils.convert(sysUserVO, SysUserLoginVO.class);
if (checkUserSuper(BeanDtoVoUtils.convert(userLoginVO, SysUser.class))) {
TokenUtil.tntLogin(TokenUtil.tntGetToken(), userLoginVO);
supperRoleMenuList(userLoginVO);
setRoleMenuToRedis(userLoginVO);
setFactoryList(userLoginVO);
setRoleMenuToRedis(userLoginVO);
return userLoginVO;
}
List<SysMenu> menuList = getMenuListByUserId(userLoginVO);//要不要在这里 是超级管理员时权限部公司树返回全部
fillMenuList(menuList, userLoginVO);
setRoleMenuToRedis(userLoginVO);
setFactoryList(userLoginVO);
setRoleMenuToRedis(userLoginVO);
return userLoginVO;
}
private void supperWechatMenuList(SysUserLoginVO userLoginVO) {
userLoginVO.setWechatMenuCodeList(sysDictionaryCategoryService.getCodeListByPrefix(SysDictCategoryConst.WECHAT_MENU_PREFIX));
}
@Override
public SysUserLoginVO getWechatMenuList() {
//TODO ywc 用join做
//TODO ywc 只返回必要字段 菜单和角色
SysUserVO sysUserVO = SysUserUtil.getUserVO();
SysUserLoginVO userLoginVO = BeanDtoVoUtils.convert(sysUserVO, SysUserLoginVO.class);
if (checkUserSuper(BeanDtoVoUtils.convert(userLoginVO, SysUser.class))) {
supperWechatMenuList(userLoginVO);
return userLoginVO;
}
List<SysRole> roleList = getRoleList(userLoginVO.getId());
List<String> roleIdList = StreamUtil.mapId(roleList, SysRole::getId);
List<SysRoleWechatMenu> roleWechatMenuList = sysRoleWechatMenuService.list(new QueryWrapper<SysRoleWechatMenu>().lambda()
.in(SysRoleWechatMenu::getRoleId, roleIdList));
userLoginVO.setWechatMenuCodeList(StreamUtil.map(roleWechatMenuList, SysRoleWechatMenu::getMenuId));
return userLoginVO;
}
@Override
public void logout() {
TokenUtil.tntLogout();
}
public List<String> userIdListByRoleId(SysUserQueryDTO dto) {
List<String> userIdList = new ArrayList<>(10);
userIdList.add(-1 + "");
if (StringUtils.isNotBlank(dto.getRoleId())) {
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getRoleId, dto.getRoleId()));
userIdList.addAll(StreamUtil.map(userRoleList, SysUserRole::getUserId));
}
if (StringUtils.isNotBlank(dto.getNotRoleId())) {
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getRoleId, dto.getNotRoleId()));
userIdList.addAll(StreamUtil.map(userRoleList, SysUserRole::getUserId));
}
return userIdList;
}
private void roleIdFilter(LambdaQueryWrapper<SysUser> lambdaQueryWrapper, SysUserQueryDTO dto) {
if (StringUtils.isBlank(dto.getRoleId()) && StringUtils.isBlank(dto.getNotRoleId())) {
return;
}
//TODO ywc join
List<String> userIdList = userIdListByRoleId(dto);
lambdaQueryWrapper.in(StringUtils.isNotBlank(dto.getRoleId()), SysUser::getId, userIdList)
.notIn(StringUtils.isNotBlank(dto.getNotRoleId()), SysUser::getId, userIdList);
}
private LambdaQueryWrapper<SysUser> defaultUserWrapper() {
LambdaQueryWrapper<SysUser> lambdaQueryWrapper = new QueryWrapper<SysUser>().lambda()
.eq(SysUser::getIsFactory, IsFactoryAccountEnum.NO.getValue())
.ne(SysUser::getId, IdConst.SUPER_ADMIN_ID);
return lambdaQueryWrapper;
}
private LambdaQueryWrapper<SysUser> listLambdaQueryWrapper(SysUserQueryDTO dto) {
List<String> deptIdList = SysUserUtil.deptIdList();
boolean flag = SysUserUtil.isSuper() && deptIdList.isEmpty();
if (dto.getUserIdList() != null) {
List<String> userIdList = new ArrayList<>(dto.getUserIdList());
userIdList.add(-1 + "");
dto.setUserIdList(userIdList);
}
LambdaQueryWrapper<SysUser> lambdaQueryWrapper = defaultUserWrapper()
//.eq(SysUser::getFactoryId, FactoryIdUtil.getFactoryId())
.in(dto.getUserIdList() != null, SysUser::getId, dto.getUserIdList())
//.eq(StringUtils.isNotBlank(dto.getDeptId()), SysUser::getDeptId, dto.getDeptId())
//.in(StringUtils.isNotBlank(dto.getDeptId()), SysUser::getDeptId, sysDeptService.selfAndChildrenIdList(dto.getDeptId()))
.apply(StringUtils.isNotBlank(dto.getDeptId()), "find_in_set('" + dto.getDeptId() + "',dept_id_path)")
.in(dto.getDeptIdList() != null, SysUser::getDeptId, dto.getDeptIdList())
.like(StringUtils.isNotBlank(dto.getAccount()), SysUser::getAccount, dto.getAccount())
.in(dto.getAccountList() != null, SysUser::getAccount, dto.getAccountList())
.like(StringUtils.isNotBlank(dto.getName()), SysUser::getName, dto.getName())
.in(dto.getNameList() != null, SysUser::getName, dto.getName())
.like(StringUtils.isNotBlank(dto.getMobile()), SysUser::getMobile, dto.getMobile())
.like(StringUtils.isNotBlank(dto.getMail()), SysUser::getMail, dto.getMail())
.eq(StringUtils.isNotBlank(dto.getStatus()), SysUser::getStatus, dto.getStatus())
.and(StringUtils.isNotBlank(dto.getKeyword()), qw -> {
qw.like(StringUtils.isNotBlank(dto.getKeyword()), SysUser::getName, dto.getKeyword())
.or()
//.like(StringUtils.isNotBlank(dto.getKeyword()), TntUser::getAccount, dto.getKeyword());
.like(StringUtils.isNotBlank(dto.getKeyword()), SysUser::getMobile, dto.getKeyword());
});
roleIdFilter(lambdaQueryWrapper, dto);
roleIdList(lambdaQueryWrapper, dto);
lambdaQueryWrapper.orderByDesc(SysUser::getCreateDate);
lambdaQueryWrapper.orderByDesc(SysUser::getId);
//TODO ywc 要不要改成全查出来 内存过滤
if (!flag) {
findInSet(lambdaQueryWrapper, deptIdList);
}
return lambdaQueryWrapper;
}
private void findInSet(LambdaQueryWrapper<SysUser> lambdaQueryWrapper, List<String> deptIdList) {
lambdaQueryWrapper.and(qw -> {
for (int i = 0; i < deptIdList.size(); i++) {
String e = deptIdList.get(i);
qw.apply("find_in_set('" + e + "',dept_id_path)");
if (i < deptIdList.size() - 1) {
qw.or();
}
}
});
}
@Override
public PageVO<SysPersonDTOVO> page(PageReqDTO<SysUserQueryDTO> page) {
SysUserQueryDTO dto = page.getData();
Page<SysUser> p = PageUtil.toMpPage(page);
Page<SysUser> pageList = page(p, listLambdaQueryWrapper(dto));
List<SysPersonDTOVO> tntUserDTOVOList = BeanDtoVoUtils.listVo(pageList.getRecords(), SysPersonDTOVO.class);
fillPerson(tntUserDTOVOList);
getRoleList(tntUserDTOVOList);
return PageUtil.toPageVO(tntUserDTOVOList, pageList);
}
private void fillPerson(List<SysPersonDTOVO> list) {
JoinUtil.join(list, sysDeptService, SysPersonDTOVO::getDeptId, SysDept::getId, (u, d) -> {
u.setDeptName(d.getName());
});
JoinUtil.joinSplit(list, sysDeptService, SysPersonDTOVO::getDeptIdPath, SysDept::getId,
(u, l) -> u.setDeptIdPathName(StreamUtil.join(l, SysDept::getName)));
}
@Override
public List<SysPersonDTOVO> list(SysUserQueryDTO dto) {
List<SysPersonDTOVO> tntUserList = BeanDtoVoUtils.listVo(list(listLambdaQueryWrapper(dto)), SysPersonDTOVO.class);
fillPerson(tntUserList);
getRoleList(tntUserList);
return tntUserList;
}
@Override
public void exportExcel(HttpServletResponse response, SysUserQueryDTO dto) {
List<SysPersonExcelDTOVO> list = BeanDtoVoUtils.listVo(list(dto), SysPersonExcelDTOVO.class);
ExcelUtil.export(response, "用户信息" + FileSuffixEnum.EXCEL.getSuffix(), SysPersonExcelDTOVO.class, list);
}
@Override
public List<SysPersonSimpleVO> listSimple(SysUserQueryDTO dto) {
List<SysPersonSimpleVO> tntUserList = BeanDtoVoUtils.listVo(list(listLambdaQueryWrapper(dto)), SysPersonSimpleVO.class);
return tntUserList;
}
private void roleIdList(LambdaQueryWrapper<SysUser> lambdaQueryWrapper, SysUserQueryDTO dto) {
if (dto.getRoleIdList() != null) {
dto.getRoleIdList().add(-1 + "");
List<String> idList = new ArrayList<>();
idList.add(-1 + "");
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
.in(SysUserRole::getRoleId, dto.getRoleIdList()));
idList.addAll(StreamUtil.map(userRoleList, SysUserRole::getUserId));
lambdaQueryWrapper.in(SysUser::getId, idList);
}
}
private void setRoleList(SysPersonDTOVO dto) {
sysUserRoleService.remove(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getUserId, dto.getId()));
// if (dto.getRoleList() != null) {
// List<TntUserRole> userRoleList = StreamUtil.map(dto.getRoleList(), e -> {
// TntUserRole tntUserRole = new TntUserRole();
// tntUserRole.setUserId(dto.getId());
// tntUserRole.setRoleId(e.getId());
//
// return tntUserRole;
// });
// tntUserRoleService.saveBatch(userRoleList);
//
// }
if (dto.getRoleIdList() != null) {
List<SysUserRole> userRoleList = StreamUtil.map(dto.getRoleIdList(), e -> {
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setUserId(dto.getId());
sysUserRole.setRoleId(e);
return sysUserRole;
});
sysUserRoleService.saveBatch(userRoleList);
}
}
@Override
public SysUser checkUserSuperException(String id) {
SysUser user = getById(id);
if (checkUserSuper(user)) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_SUPER_ADMIN_CANT_EDIT);
}
return user;
}
@Override
public List<SysUser> checkUserSuperException(List<String> idList) {
List<SysUser> userList = listByIds(idList);
userList.forEach(e -> {
if (checkUserSuper(e)) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_SUPER_ADMIN_CANT_EDIT);
}
});
return userList;
}
@Override
public boolean checkUserSuper(SysUser user) {
return IsFactoryAccountEnum.YES.getValue().equals(user.getIsFactory()) || IdConst.SUPER_ADMIN_ID.equals(user.getId());
}
private void fillDeptIdPath(SysUser user) {
if (StringUtils.isNotBlank(user.getDeptId())) {
SysDept dept = sysDeptService.getById(user.getDeptId());
user.setDeptIdPath(dept.getParentPath() + "," + dept.getId());
}
}
@Transactional
@Override
public void addPerson(SysPersonDTOVO dto) {
checkPerson(BeanDtoVoUtils.convert(dto, SysUserDTOVO.class));
SysUser user = BeanDtoVoUtils.convert(dto, SysUser.class);
user.setIsFactory(CommonEnum.NO.getValue());
//user.setFactoryId(FactoryIdUtil.getFactoryId());
// if (StringUtils.isBlank(user.getPassword())) {
// throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_USER_PASSWORD_NOT_BLANK);
// }
// setPassword(user);
setDefaultPassword(user);
user.setStatus(CommonEnum.YES.getValue());
fillDeptIdPath(user);
user.setSyncTime(LocalDateTime.now());
user.setSelfStatus(CommonEnum.YES.getValue());
save(user);
dto.setId(user.getId());
setRoleList(dto);
}
@Transactional
@Override
public void editPerson(SysPersonDTOVO dto) {
SysUser old = checkUserSuperException(dto.getId());
checkPerson(BeanDtoVoUtils.convert(dto, SysUserDTOVO.class));
SysUser user = BeanDtoVoUtils.convert(dto, SysUser.class);
user.setIsFactory(CommonEnum.NO.getValue());
//setDefaultPassword(user);
fillDeptIdPath(user);
if (CommonEnum.YES.getValue().equals(old.getSelfStatus())) {
user.setSyncTime(LocalDateTime.now());
}
updateById(user);
setRoleList(dto);
}
private void getRoleList(List<SysPersonDTOVO> userVOList) {
List<String> userIdList = StreamUtil.mapId(userVOList, SysPersonDTOVO::getId);
List<SysUserRole> userRoleList = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda()
.in(SysUserRole::getUserId, userIdList)
.orderByAsc(SysUserRole::getId)
);
List<String> roleIdList = StreamUtil.mapId(userRoleList, SysUserRole::getRoleId);
List<SysRole> roleList = sysRoleService.list(new QueryWrapper<SysRole>().lambda()
.in(SysRole::getId, roleIdList));
Map<String, SysRole> roleMap = StreamUtil.toMap(roleList, SysRole::getId);
Map<String, List<SysUserRole>> userIdRoleIdListMap = StreamUtil.groupBy(userRoleList, SysUserRole::getUserId);
userVOList.forEach(e -> {
List<SysUserRole> urList = userIdRoleIdListMap.get(e.getId());
if (urList == null || urList.isEmpty()) {
return;
}
List<SysRole> rList = urList.stream().map(ee -> roleMap.get(ee.getRoleId())).filter(Objects::nonNull)
.sorted(Comparator.comparing(BaseEntity::getId)).collect(Collectors.toList());
e.setRoleList(BeanDtoVoUtils.listVo(rList, SysRoleDTOVO.class));
e.setRoleIdList(StreamUtil.map(rList, SysRole::getId));
});
}
@Override
public SysPersonDTOVO viewPerson(String id) {
SysUser user = getById(id);
SysPersonDTOVO userVO = BeanDtoVoUtils.convert(user, SysPersonDTOVO.class);
getRoleList(Arrays.asList(userVO));
fillPerson(Arrays.asList(userVO));
return userVO;
}
@Transactional
@Override
public void delPerson(String id) {
checkUserSuperException(id);
removeById(id);
sysUserRoleService.remove(new QueryWrapper<SysUserRole>().lambda()
.eq(SysUserRole::getUserId, id));
}
@Transactional
@Override
public void factoryInit(String factoryId) {
String roleId = sysRoleService.factoryInit(factoryId);
LambdaQueryWrapper<SysUser> lambdaQueryWrapper = defaultUserWrapper();
List<String> deptIdList = TenantIdUtil.deptIdList(factoryId);
findInSet(lambdaQueryWrapper, deptIdList);
List<SysUser> userList = list(lambdaQueryWrapper);
List<SysUserRole> userRoleList = StreamUtil.map(userList, e -> {
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setUserId(e.getId());
sysUserRole.setRoleId(roleId);
sysUserRole.setTenantId(factoryId);
return sysUserRole;
});
sysUserRoleService.saveBatch(userRoleList);
}
/*feign*/
@Override
public List<SysUserVO> listByIdList(List<String> idList) {
if (idList.isEmpty()) {
return new ArrayList<>(10);
}
List<SysUser> dbList = list(new QueryWrapper<SysUser>().lambda()
.in(SysUser::getId, idList));
Map<String, SysUser> userEntityMap = StreamUtil.toMap(dbList, SysUser::getId);
Set<SysUser> userSet = new LinkedHashSet<>(10);
idList.forEach(e -> {
SysUser o = userEntityMap.get(e);
if (o != null) {
userSet.add(o);
}
});
return BeanDtoVoUtils.listVo(new ArrayList<>(userSet), SysUserVO.class);
}
@TenantIdIgnore
@Override
public List<SysUserVO> listByRoleAndMenuCode(SysRoleAndMenuCodeDTO codeDTO) {
if (codeDTO.getMenuCodeList() != null) {
codeDTO.getMenuCodeList().add(-1 + "");
}
if (codeDTO.getRoleCodeList() != null) {
codeDTO.getRoleCodeList().add(-1 + "");
}
SysRoleDTOVO dto = new SysRoleDTOVO();
dto.setStatus(CommonEnum.YES.getValue());
dto.setMenuCodeList(codeDTO.getMenuCodeList());
dto.setCodeList(codeDTO.getRoleCodeList());
List<SysRoleDTOVO> roleList = sysRoleService.list(dto);
List<String> roleIdList = StreamUtil.map(roleList, SysRoleDTOVO::getId);
SysUserQueryDTO queryDTO = new SysUserQueryDTO();
queryDTO.setStatus(CommonEnum.YES.getValue());
queryDTO.setRoleIdList(roleIdList);
List<SysPersonDTOVO> personList = list(queryDTO);
return BeanDtoVoUtils.listVo(personList, SysUserVO.class);
}
@Override
public List<String> listIdByName(String name) {
SysUserQueryDTO dto = new SysUserQueryDTO();
dto.setName(name);
List<SysPersonSimpleVO> userList = listSimple(dto);
return StreamUtil.mapId(userList, SysPersonSimpleVO::getId);
}
/*feign*/
}
\ No newline at end of file
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{
}
package com.makeit.server.platform.auth.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.auth.PlatRoleOrg;
import com.makeit.mapper.platform.auth.PlatRoleOrgMapper;
import com.makeit.server.platform.auth.PlatRoleOrgService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_role_org(租户端角色部门关联表)】的数据库操作Service实现
* @createDate 2023-08-30 20:10:25
*/
@Service
public class PlatRoleOrgServiceImpl extends ServiceImpl<PlatRoleOrgMapper, PlatRoleOrg>
implements PlatRoleOrgService{
}
package com.makeit.server.platform.auth.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.auth.PlatRole;
import com.makeit.mapper.platform.auth.PlatRoleMapper;
import com.makeit.server.platform.auth.PlatRoleService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_role(租户端角色)】的数据库操作Service实现
* @createDate 2023-08-30 20:10:25
*/
@Service
public class PlatRoleServiceImpl extends ServiceImpl<PlatRoleMapper, PlatRole>
implements PlatRoleService{
}
package com.makeit.server.platform.auth.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.auth.PlatUserRole;
import com.makeit.mapper.platform.auth.PlatUserRoleMapper;
import com.makeit.server.platform.auth.PlatUserRoleService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_user_role(租户端用户角色关联表)】的数据库操作Service实现
* @createDate 2023-08-30 20:10:25
*/
@Service
public class PlatUserRoleServiceImpl extends ServiceImpl<PlatUserRoleMapper, PlatUserRole>
implements PlatUserRoleService{
}
package com.makeit.server.platform.auth.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.platform.auth.PlatUser;
import com.makeit.mapper.platform.auth.PlatUserMapper;
import com.makeit.server.platform.auth.PlatUserService;
import org.springframework.stereotype.Service;
/**
* @author lixl
* @description 针对表【plat_user(租户账号管理)】的数据库操作Service实现
* @createDate 2023-08-30 20:10:25
*/
@Service
public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
implements PlatUserService{
}
package com.makeit.service.saas; package com.makeit.service.saas;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.saas.PlatAuthMenu; import com.makeit.entity.saas.PlatMenu;
/** /**
* @author lixl * @author lixl
* @description 针对表【tnt_auth_menu(租户端资源管理)】的数据库操作Service * @description 针对表【tnt_auth_menu(租户端资源管理)】的数据库操作Service
* @createDate 2023-08-29 14:29:10 * @createDate 2023-08-29 14:29:10
*/ */
public interface PlatAuthMenuService extends IService<PlatAuthMenu> { public interface PlatMenuService extends IService<PlatMenu> {
} }
...@@ -2,8 +2,8 @@ package com.makeit.service.saas; ...@@ -2,8 +2,8 @@ package com.makeit.service.saas;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.entity.saas.SaasMenu; import com.makeit.entity.saas.SaasMenu;
import com.makeit.module.admin.saas.PlatMenuDTOVO; import com.makeit.module.admin.saas.SaasMenuDTOVO;
import com.makeit.module.admin.saas.PlatMenuQueryDTO; import com.makeit.module.admin.saas.SaasMenuQueryDTO;
import java.util.List; import java.util.List;
...@@ -14,17 +14,17 @@ import java.util.List; ...@@ -14,17 +14,17 @@ import java.util.List;
*/ */
public interface SaasMenuService extends IService<SaasMenu> { public interface SaasMenuService extends IService<SaasMenu> {
List<PlatMenuDTOVO> list(PlatMenuQueryDTO dto); List<SaasMenuDTOVO> list(SaasMenuQueryDTO dto);
List<PlatMenuDTOVO> tree(List<PlatMenuDTOVO> platMenuList); List<SaasMenuDTOVO> tree(List<SaasMenuDTOVO> platMenuList);
List<PlatMenuDTOVO> tree(PlatMenuQueryDTO dto); List<SaasMenuDTOVO> tree(SaasMenuQueryDTO dto);
void add(PlatMenuDTOVO dto); void add(SaasMenuDTOVO dto);
void edit(PlatMenuDTOVO dto); void edit(SaasMenuDTOVO dto);
PlatMenuDTOVO view(String id); SaasMenuDTOVO view(String id);
void del(String id); void del(String id);
......
...@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO; import com.makeit.common.dto.StatusDTO;
import com.makeit.entity.saas.SaasRole; import com.makeit.entity.saas.SaasRole;
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 java.util.List; import java.util.List;
...@@ -28,10 +28,10 @@ public interface SaasRoleService extends IService<SaasRole> { ...@@ -28,10 +28,10 @@ public interface SaasRoleService extends IService<SaasRole> {
void changeStatus(StatusDTO dto); void changeStatus(StatusDTO dto);
void assignUserList(List<PlatUserRoleDTO> userRoleDTOList); void assignUserList(List<SaasUserRoleDTO> userRoleDTOList);
void removeAssignUserList(List<PlatUserRoleDTO> userRoleDTOList); void removeAssignUserList(List<SaasUserRoleDTO> userRoleDTOList);
void assignMenuList(PlatRoleMenuDTO roleMenuDTO); void assignMenuList(SaasRoleMenuDTO roleMenuDTO);
} }
...@@ -6,9 +6,9 @@ import com.makeit.common.dto.StatusDTO; ...@@ -6,9 +6,9 @@ import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO; import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO; import com.makeit.common.page.PageVO;
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.entity.saas.SaasUser; import com.makeit.entity.saas.SaasUser;
import com.makeit.utils.user.SaasUserLoginVO; import com.makeit.utils.user.saas.SaasUserLoginVO;
import java.util.List; import java.util.List;
...@@ -18,13 +18,13 @@ import java.util.List; ...@@ -18,13 +18,13 @@ import java.util.List;
* @createDate 2023-08-29 11:14:07 * @createDate 2023-08-29 11:14:07
*/ */
public interface SaasUserService extends IService<SaasUser> { public interface SaasUserService extends IService<SaasUser> {
PageVO<SaasUserDTOVO> page(PageReqDTO<PlatUserQueryDTO> page); PageVO<SaasUserDTOVO> page(PageReqDTO<SaasUserQueryDTO> page);
PageVO<SaasUserDTOVO> pageNoSuperAdmin(PageReqDTO<PlatUserQueryDTO> page); PageVO<SaasUserDTOVO> pageNoSuperAdmin(PageReqDTO<SaasUserQueryDTO> page);
List<SaasUserDTOVO> list(PlatUserQueryDTO dto); List<SaasUserDTOVO> list(SaasUserQueryDTO dto);
List<SaasUserDTOVO> listNoSuperAdmin(PlatUserQueryDTO dto); List<SaasUserDTOVO> listNoSuperAdmin(SaasUserQueryDTO dto);
void add(SaasUserDTOVO dto); void add(SaasUserDTOVO dto);
......
package com.makeit.service.saas.impl; package com.makeit.service.saas.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.entity.saas.PlatAuthMenu; import com.makeit.entity.saas.PlatMenu;
import com.makeit.mapper.saas.PlatAuthMenuMapper; import com.makeit.mapper.saas.PlatMenuMapper;
import com.makeit.service.saas.PlatAuthMenuService; import com.makeit.service.saas.PlatMenuService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service; ...@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
* @createDate 2023-08-29 14:29:10 * @createDate 2023-08-29 14:29:10
*/ */
@Service @Service
public class PlatAuthMenuServiceImpl extends ServiceImpl<PlatAuthMenuMapper, PlatAuthMenu> public class PlatMenuServiceImpl extends ServiceImpl<PlatMenuMapper, PlatMenu>
implements PlatAuthMenuService { implements PlatMenuService {
} }
...@@ -11,8 +11,8 @@ import com.makeit.enums.id.TreeConst; ...@@ -11,8 +11,8 @@ import com.makeit.enums.id.TreeConst;
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.mapper.saas.SaasMenuMapper; import com.makeit.mapper.saas.SaasMenuMapper;
import com.makeit.module.admin.saas.PlatMenuDTOVO; import com.makeit.module.admin.saas.SaasMenuDTOVO;
import com.makeit.module.admin.saas.PlatMenuQueryDTO; import com.makeit.module.admin.saas.SaasMenuQueryDTO;
import com.makeit.service.saas.SaasMenuService; import com.makeit.service.saas.SaasMenuService;
import com.makeit.service.saas.SaasRoleMenuService; import com.makeit.service.saas.SaasRoleMenuService;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
...@@ -65,7 +65,7 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i ...@@ -65,7 +65,7 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
//这里排除当前角色没有绑定的菜单 不该做 菜单树形 //这里排除当前角色没有绑定的菜单 不该做 菜单树形
@Override @Override
public List<PlatMenuDTOVO> list(PlatMenuQueryDTO dto) { public List<SaasMenuDTOVO> list(SaasMenuQueryDTO dto) {
//查找角色绑的菜单 是否一定要返回树形 能不能直接返回中间表数据 //查找角色绑的菜单 是否一定要返回树形 能不能直接返回中间表数据
// 直接返回中间表数据的话 代码可以放role那边 // 直接返回中间表数据的话 代码可以放role那边
...@@ -87,18 +87,18 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i ...@@ -87,18 +87,18 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
.orderByAsc(SaasMenu::getCreateDate) .orderByAsc(SaasMenu::getCreateDate)
); );
return BeanDtoVoUtils.listVo(platMenuList, PlatMenuDTOVO.class); return BeanDtoVoUtils.listVo(platMenuList, SaasMenuDTOVO.class);
} }
@Override @Override
public List<PlatMenuDTOVO> tree(List<PlatMenuDTOVO> platMenuList) { public List<SaasMenuDTOVO> tree(List<SaasMenuDTOVO> platMenuList) {
Map<String, PlatMenuDTOVO> map = StreamUtil.toMap(platMenuList, PlatMenuDTOVO::getId); Map<String, SaasMenuDTOVO> map = StreamUtil.toMap(platMenuList, SaasMenuDTOVO::getId);
List<PlatMenuDTOVO> topList = StreamUtil.filter(platMenuList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId())); List<SaasMenuDTOVO> topList = StreamUtil.filter(platMenuList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId()));
platMenuList.forEach(e -> { platMenuList.forEach(e -> {
PlatMenuDTOVO parent = map.get(e.getParentId()); SaasMenuDTOVO parent = map.get(e.getParentId());
if (parent != null) { if (parent != null) {
List<PlatMenuDTOVO> children = parent.getChildren(); List<SaasMenuDTOVO> children = parent.getChildren();
if (children == null) { if (children == null) {
children = new ArrayList<>(10); children = new ArrayList<>(10);
parent.setChildren(children); parent.setChildren(children);
...@@ -112,12 +112,12 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i ...@@ -112,12 +112,12 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
} }
@Override @Override
public List<PlatMenuDTOVO> tree(PlatMenuQueryDTO dto) { public List<SaasMenuDTOVO> tree(SaasMenuQueryDTO dto) {
List<PlatMenuDTOVO> platMenuList = list(dto); List<SaasMenuDTOVO> platMenuList = list(dto);
return tree(platMenuList); return tree(platMenuList);
} }
private void checkCode(PlatMenuDTOVO dto) { private void checkCode(SaasMenuDTOVO dto) {
SaasMenu old = getOne(new QueryWrapper<SaasMenu>().lambda() SaasMenu old = getOne(new QueryWrapper<SaasMenu>().lambda()
.eq(SaasMenu::getCode, dto.getCode())); .eq(SaasMenu::getCode, dto.getCode()));
if (old != null && !old.getId().equals(dto.getId())) { if (old != null && !old.getId().equals(dto.getId())) {
...@@ -127,21 +127,21 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i ...@@ -127,21 +127,21 @@ public class SaasMenuServiceImpl extends ServiceImpl<SaasMenuMapper, SaasMenu> i
@Transactional @Transactional
@Override @Override
public void add(PlatMenuDTOVO dto) { public void add(SaasMenuDTOVO dto) {
checkCode(dto); checkCode(dto);
save(BeanDtoVoUtils.convert(dto, SaasMenu.class)); save(BeanDtoVoUtils.convert(dto, SaasMenu.class));
} }
@Transactional @Transactional
@Override @Override
public void edit(PlatMenuDTOVO dto) { public void edit(SaasMenuDTOVO dto) {
checkCode(dto); checkCode(dto);
updateById(BeanDtoVoUtils.convert(dto, SaasMenu.class)); updateById(BeanDtoVoUtils.convert(dto, SaasMenu.class));
} }
@Override @Override
public PlatMenuDTOVO view(String id) { public SaasMenuDTOVO view(String id) {
return BeanDtoVoUtils.convert(getById(id), PlatMenuDTOVO.class); return BeanDtoVoUtils.convert(getById(id), SaasMenuDTOVO.class);
} }
@Transactional @Transactional
......
...@@ -11,8 +11,8 @@ import com.makeit.enums.CommonEnum; ...@@ -11,8 +11,8 @@ import com.makeit.enums.CommonEnum;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.mapper.saas.SaasRoleMapper; import com.makeit.mapper.saas.SaasRoleMapper;
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.SaasRoleMenuService; import com.makeit.service.saas.SaasRoleMenuService;
import com.makeit.service.saas.SaasRoleService; import com.makeit.service.saas.SaasRoleService;
import com.makeit.service.saas.SaasUserRoleService; import com.makeit.service.saas.SaasUserRoleService;
...@@ -116,7 +116,7 @@ implements SaasRoleService{ ...@@ -116,7 +116,7 @@ implements SaasRoleService{
@Transactional @Transactional
@Override @Override
public void assignUserList(List<PlatUserRoleDTO> userRoleDTOList) { public void assignUserList(List<SaasUserRoleDTO> userRoleDTOList) {
removeAssignUserList(userRoleDTOList); removeAssignUserList(userRoleDTOList);
...@@ -126,10 +126,10 @@ implements SaasRoleService{ ...@@ -126,10 +126,10 @@ implements SaasRoleService{
@Transactional @Transactional
@Override @Override
public void removeAssignUserList(List<PlatUserRoleDTO> userRoleDTOList) { public void removeAssignUserList(List<SaasUserRoleDTO> userRoleDTOList) {
Map<String, List<PlatUserRoleDTO>> roleUserMap = StreamUtil.groupBy(userRoleDTOList, PlatUserRoleDTO::getRoleId); Map<String, List<SaasUserRoleDTO>> roleUserMap = StreamUtil.groupBy(userRoleDTOList, SaasUserRoleDTO::getRoleId);
roleUserMap.forEach((k, v) -> { roleUserMap.forEach((k, v) -> {
List<String> userIdList = StreamUtil.map(v, PlatUserRoleDTO::getUserId); List<String> userIdList = StreamUtil.map(v, SaasUserRoleDTO::getUserId);
userIdList.add(-1 + ""); userIdList.add(-1 + "");
saasUserRoleService.remove(new QueryWrapper<SaasUserRole>().lambda() saasUserRoleService.remove(new QueryWrapper<SaasUserRole>().lambda()
.eq(SaasUserRole::getRoleId, k) .eq(SaasUserRole::getRoleId, k)
...@@ -139,7 +139,7 @@ implements SaasRoleService{ ...@@ -139,7 +139,7 @@ implements SaasRoleService{
@Transactional @Transactional
@Override @Override
public void assignMenuList(PlatRoleMenuDTO roleMenuDTO) { public void assignMenuList(SaasRoleMenuDTO roleMenuDTO) {
//removeAssignMenuList(roleMenuDTOList); //removeAssignMenuList(roleMenuDTOList);
saasRoleMenuService.remove(new QueryWrapper<SaasRoleMenu>().lambda().eq(SaasRoleMenu::getRoleId, roleMenuDTO.getRoleId())); saasRoleMenuService.remove(new QueryWrapper<SaasRoleMenu>().lambda().eq(SaasRoleMenu::getRoleId, roleMenuDTO.getRoleId()));
......
...@@ -21,10 +21,10 @@ import com.makeit.enums.biz.auth.TenantEnum; ...@@ -21,10 +21,10 @@ import com.makeit.enums.biz.auth.TenantEnum;
import com.makeit.enums.id.IdConst; import com.makeit.enums.id.IdConst;
import com.makeit.exception.BusinessException; import com.makeit.exception.BusinessException;
import com.makeit.mapper.saas.SaasUserMapper; import com.makeit.mapper.saas.SaasUserMapper;
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 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.module.admin.saas.SaasUserRoleMenuRedisVO; import com.makeit.module.admin.saas.SaasUserRoleMenuRedisVO;
import com.makeit.service.saas.SaasMenuService; import com.makeit.service.saas.SaasMenuService;
import com.makeit.service.saas.SaasRoleMenuService; import com.makeit.service.saas.SaasRoleMenuService;
...@@ -37,9 +37,9 @@ import com.makeit.utils.data.convert.PageUtil; ...@@ -37,9 +37,9 @@ import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil; import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.id.IdGen; import com.makeit.utils.data.id.IdGen;
import com.makeit.utils.user.PasswordUtils; import com.makeit.utils.user.PasswordUtils;
import com.makeit.utils.user.SaasUserLoginVO; import com.makeit.utils.user.saas.SaasUserLoginVO;
import com.makeit.utils.user.PlatUserUtil; import com.makeit.utils.user.saas.SaasUserUtil;
import com.makeit.utils.user.PlatUserVO; import com.makeit.utils.user.saas.SaasUserVO;
import com.makeit.utils.user.TokenUtil; import com.makeit.utils.user.TokenUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -85,9 +85,9 @@ implements SaasUserService{ ...@@ -85,9 +85,9 @@ implements SaasUserService{
//还是mybatis plus notin 查询 //还是mybatis plus notin 查询
//现在是重复添加中间表 没有效果 //现在是重复添加中间表 没有效果
public PageVO<SaasUserDTOVO> pageInternal(PageReqDTO<PlatUserQueryDTO> page, Consumer<LambdaQueryWrapper<SaasUser>> consumer) { public PageVO<SaasUserDTOVO> pageInternal(PageReqDTO<SaasUserQueryDTO> page, Consumer<LambdaQueryWrapper<SaasUser>> consumer) {
PlatUserQueryDTO dto = page.getData(); SaasUserQueryDTO dto = page.getData();
Page<SaasUser> p = PageUtil.toMpPage(page); Page<SaasUser> p = PageUtil.toMpPage(page);
...@@ -130,18 +130,18 @@ implements SaasUserService{ ...@@ -130,18 +130,18 @@ implements SaasUserService{
} }
@Override @Override
public PageVO<SaasUserDTOVO> page(PageReqDTO<PlatUserQueryDTO> page) { public PageVO<SaasUserDTOVO> page(PageReqDTO<SaasUserQueryDTO> page) {
return pageInternal(page, null); return pageInternal(page, null);
} }
@Override @Override
public PageVO<SaasUserDTOVO> pageNoSuperAdmin(PageReqDTO<PlatUserQueryDTO> page) { public PageVO<SaasUserDTOVO> pageNoSuperAdmin(PageReqDTO<SaasUserQueryDTO> page) {
return pageInternal(page, qw -> qw.ne(SaasUser::getId, IdConst.SUPER_ADMIN_ID)); return pageInternal(page, qw -> qw.ne(SaasUser::getId, IdConst.SUPER_ADMIN_ID));
} }
@Override @Override
public List<SaasUserDTOVO> list(PlatUserQueryDTO dto) { public List<SaasUserDTOVO> list(SaasUserQueryDTO dto) {
PageReqDTO<PlatUserQueryDTO> page = new PageReqDTO<>(); PageReqDTO<SaasUserQueryDTO> page = new PageReqDTO<>();
page.setPage(1); page.setPage(1);
page.setLimit(-1); page.setLimit(-1);
page.setData(dto); page.setData(dto);
...@@ -149,8 +149,8 @@ implements SaasUserService{ ...@@ -149,8 +149,8 @@ implements SaasUserService{
} }
@Override @Override
public List<SaasUserDTOVO> listNoSuperAdmin(PlatUserQueryDTO dto) { public List<SaasUserDTOVO> listNoSuperAdmin(SaasUserQueryDTO dto) {
PageReqDTO<PlatUserQueryDTO> page = new PageReqDTO<>(); PageReqDTO<SaasUserQueryDTO> page = new PageReqDTO<>();
page.setPage(1); page.setPage(1);
page.setLimit(-1); page.setLimit(-1);
page.setData(dto); page.setData(dto);
...@@ -328,9 +328,9 @@ implements SaasUserService{ ...@@ -328,9 +328,9 @@ implements SaasUserService{
private void fillMenuList(List<SaasMenu> menuList, SaasUserLoginVO userLoginVO) { private void fillMenuList(List<SaasMenu> menuList, SaasUserLoginVO userLoginVO) {
List<SaasMenu> buttonList = StreamUtil.filter(menuList, e -> SysEnum.MenuTypeEnum.MENU.getValue().equals(e.getCategory()) || SysEnum.MenuTypeEnum.BUTTON.getValue().equals(e.getCategory())); List<SaasMenu> buttonList = StreamUtil.filter(menuList, e -> SysEnum.MenuTypeEnum.MENU.getValue().equals(e.getCategory()) || SysEnum.MenuTypeEnum.BUTTON.getValue().equals(e.getCategory()));
List<SaasMenu> nonButtonList = StreamUtil.filter(menuList, e -> SysEnum.MenuTypeEnum.CATALOGUE.getValue().equals(e.getCategory()) || SysEnum.MenuTypeEnum.MENU.getValue().equals(e.getCategory())); List<SaasMenu> nonButtonList = StreamUtil.filter(menuList, e -> SysEnum.MenuTypeEnum.CATALOGUE.getValue().equals(e.getCategory()) || SysEnum.MenuTypeEnum.MENU.getValue().equals(e.getCategory()));
List<PlatMenuDTOVO> menuVOList = saasMenuService.tree(BeanDtoVoUtils.listVo(nonButtonList, PlatMenuDTOVO.class)); List<SaasMenuDTOVO> menuVOList = saasMenuService.tree(BeanDtoVoUtils.listVo(nonButtonList, SaasMenuDTOVO.class));
userLoginVO.setButtonList(BeanDtoVoUtils.listVo(buttonList, PlatMenuDTOVO.class)); userLoginVO.setButtonList(BeanDtoVoUtils.listVo(buttonList, SaasMenuDTOVO.class));
userLoginVO.setMenuList(menuVOList); userLoginVO.setMenuList(menuVOList);
} }
...@@ -350,7 +350,7 @@ implements SaasUserService{ ...@@ -350,7 +350,7 @@ implements SaasUserService{
platUserRoleMenuRedisVO.setRoleCodeList(StreamUtil.map(userLoginVO.getRoleList(), SaasRoleDTOVO::getCode)); platUserRoleMenuRedisVO.setRoleCodeList(StreamUtil.map(userLoginVO.getRoleList(), SaasRoleDTOVO::getCode));
} }
if (userLoginVO.getButtonList() != null) { if (userLoginVO.getButtonList() != null) {
platUserRoleMenuRedisVO.setButtonCodeList(StreamUtil.map(userLoginVO.getButtonList(), PlatMenuDTOVO::getCode)); platUserRoleMenuRedisVO.setButtonCodeList(StreamUtil.map(userLoginVO.getButtonList(), SaasMenuDTOVO::getCode));
} }
TokenUtil.platLoginRoleMenu(platUserRoleMenuRedisVO); TokenUtil.platLoginRoleMenu(platUserRoleMenuRedisVO);
} }
...@@ -401,7 +401,7 @@ implements SaasUserService{ ...@@ -401,7 +401,7 @@ implements SaasUserService{
@Override @Override
public SaasUserLoginVO getRoleAndMenuList() { public SaasUserLoginVO getRoleAndMenuList() {
PlatUserVO platUser = PlatUserUtil.getUserVO(); SaasUserVO platUser = SaasUserUtil.getUserVO();
SaasUserLoginVO platUserLoginVO = new SaasUserLoginVO(); SaasUserLoginVO platUserLoginVO = new SaasUserLoginVO();
platUserLoginVO.setId(platUser.getId()); platUserLoginVO.setId(platUser.getId());
getRoleAndMenuList(platUserLoginVO); getRoleAndMenuList(platUserLoginVO);
...@@ -411,7 +411,7 @@ implements SaasUserService{ ...@@ -411,7 +411,7 @@ implements SaasUserService{
@Override @Override
public SaasUserLoginVO getUserVO() { public SaasUserLoginVO getUserVO() {
return PlatUserUtil.getUserVODetail(); return SaasUserUtil.getUserVODetail();
} }
@Override @Override
...@@ -461,7 +461,7 @@ implements SaasUserService{ ...@@ -461,7 +461,7 @@ implements SaasUserService{
@Override @Override
public List<String> getDataScopeByUserId() {//要不要缓存 public List<String> getDataScopeByUserId() {//要不要缓存
PlatUserVO userVO = PlatUserUtil.getUserVO(); SaasUserVO userVO = SaasUserUtil.getUserVO();
if (IdConst.SUPER_ADMIN_ID.equals(userVO.getId())) { if (IdConst.SUPER_ADMIN_ID.equals(userVO.getId())) {
List<String> tenantIdList = StreamUtil.map(platTenantService.list(), PlatTenant::getId);//还是要直接返回null 那边直接不过滤 List<String> tenantIdList = StreamUtil.map(platTenantService.list(), PlatTenant::getId);//还是要直接返回null 那边直接不过滤
......
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