Commit 11bc26d3 by 杨伟程

老人模块更新

parents 7253b0f5 5c43ec9b
Showing with 1916 additions and 2129 deletions
CREATE TABLE `sys_file` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' id ',
`file_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 文件名称 ',
`url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 文件地址 ',
`mime` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 文件格式 ',
`create_date` datetime NOT NULL COMMENT ' 创建时间 ',
`update_date` datetime NOT NULL COMMENT ' 更新时间 ',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`pdf_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'pdf格式地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=' 系统文件表 ';
CREATE TABLE `sys_config` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' id ',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
`code` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 编码 例如 user.type.personal 类名.字段.业务 ',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 名称 例如 冻结 ',
`value` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 值 例如 1 2 3',
`sort` int DEFAULT '0' COMMENT '排序 ',
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT ' 描述 ',
`category_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 分类FK ',
`create_date` datetime NOT NULL COMMENT ' 创建时间 ',
`update_date` datetime NOT NULL COMMENT ' 更新时间 ',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '英文名称',
PRIMARY KEY (`id`),
KEY `sys_config_category_id_index` (`category_id`),
KEY `sys_config_code_index` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=' 配置 ';
CREATE TABLE `sys_config_category` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' PK ',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
`code` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 编码 例如 user.type,类名.字段名 ',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 类型名称 ',
`create_date` datetime NOT NULL COMMENT ' 创建时间 ',
`update_date` datetime NOT NULL COMMENT ' 更新时间 ',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '类型英文名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT=' 配置类型 ';
CREATE TABLE `sys_dictionary` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'id',
`code` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典编码 例如 user.type.personal 类名.字段.业务',
`name` varchar(200) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典名称 例如 冻结',
`value` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典值 例如 1 2 3',
`sort` int NOT NULL DEFAULT '0' COMMENT '排序',
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '数据字典值描述',
`category_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据字典分类FK',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据字典英文名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据字典';
CREATE TABLE `sys_dictionary_category` (
`id` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'PK',
`code` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典编码 例如 user.type,类名.字段名',
`name` varchar(50) COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据字典类型名称',
`create_date` datetime NOT NULL COMMENT '创建时间',
`update_date` datetime NOT NULL COMMENT '更新时间',
`del_flag` char(1) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' 删除标志 0否 1是 ',
`create_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人名称',
`update_by` varchar(128) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`eng_name` varchar(200) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '数据字典类型名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='数据字典类型';
......@@ -57,7 +57,7 @@ CREATE TABLE `plat_elder`
DEFAULT CHARSET = utf8mb4 COMMENT ='长者基本信息';
CREATE TABLE `elder_social_relation`
CREATE TABLE `plat_elder_social_relation`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`elder_id` varchar(64) NOT NULL COMMENT '长者id',
......@@ -78,7 +78,7 @@ CREATE TABLE `elder_social_relation`
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='长者社会关系';
CREATE TABLE `elder_health_info`
CREATE TABLE `plat_elder_health_info`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`elder_id` VARCHAR(64) NOT NULL COMMENT '长者id',
......@@ -104,7 +104,7 @@ CREATE TABLE `elder_health_info`
DEFAULT CHARSET = utf8mb4 COMMENT = '长者健康状态';
CREATE TABLE `elder_other_info`
CREATE TABLE `plat_elder_other_info`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`elder_id` VARCHAR(64) NOT NULL COMMENT '长者id',
......@@ -130,7 +130,7 @@ CREATE TABLE `elder_other_info`
DEFAULT CHARSET = utf8mb4 COMMENT = '长者其他信息';
CREATE TABLE `elder_medical_examination_info`
CREATE TABLE `plat_elder_medical_examination_info`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`elder_id` varchar(64) NOT NULL COMMENT '长者id',
......@@ -147,7 +147,7 @@ CREATE TABLE `elder_medical_examination_info`
DEFAULT CHARSET = utf8mb4 COMMENT ='长者体检报告信息';
CREATE TABLE `elder_children_info`
CREATE TABLE `plat_elder_children_info`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`elder_id` varchar(64) NOT NULL COMMENT '长者id',
......@@ -168,7 +168,7 @@ CREATE TABLE `elder_children_info`
CREATE TABLE `dict_type`
CREATE TABLE `plat_dict_type`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`code` varchar(64) DEFAULT NULL '类型编码',
......@@ -183,7 +183,7 @@ CREATE TABLE `dict_type`
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='字典类型';
CREATE TABLE `dict_info`
CREATE TABLE `plat_dict_info`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`dict_type_id` varchar(64) NOT NULL COMMENT '字典类型id',
......@@ -220,7 +220,7 @@ CREATE TABLE `sys_file`
ROW_FORMAT = DYNAMIC COMMENT ='文件管理';
CREATE TABLE `sys_user`
CREATE TABLE `plat_user`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) NOT NULL COMMENT '姓名',
......@@ -240,7 +240,7 @@ CREATE TABLE `sys_user`
CREATE TABLE `sys_role`
CREATE TABLE `plat_role`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(128) NOT NULL COMMENT '名称',
......@@ -255,7 +255,7 @@ CREATE TABLE `sys_role`
) ENGINE = INNODB
DEFAULT CHARSET = utf8mb4 COMMENT = '角色管理';
CREATE TABLE `sys_user_role`
CREATE TABLE `plat_user_role`
(
`id` char(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT ' id ',
`tenant_id` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT ' 租户id ',
......@@ -275,7 +275,7 @@ CREATE TABLE `sys_user_role`
COLLATE = utf8mb4_general_ci COMMENT =' 用户角色关联表 ';
CREATE TABLE `sys_org`
CREATE TABLE `plat_org`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(128) NOT NULL COMMENT '名称',
......@@ -294,7 +294,7 @@ CREATE TABLE `sys_org`
DEFAULT CHARSET = utf8mb4 COMMENT = '组织管理';
CREATE TABLE `sys_role_org`
CREATE TABLE `plat_role_org`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`role_id` VARCHAR(64) NOT NULL COMMENT '角色id',
......@@ -312,7 +312,7 @@ CREATE TABLE `sys_role_org`
CREATE TABLE `sys_menu`
CREATE TABLE `plat_menu`
(
`id` varchar(64) NOT NULL COMMENT '编号',
`parent_id` varchar(64) DEFAULT NULL COMMENT '父级编号',
......@@ -338,7 +338,7 @@ CREATE TABLE `sys_menu`
DEFAULT CHARSET = utf8
ROW_FORMAT = DYNAMIC COMMENT ='菜单表';
CREATE TABLE `sys_role_menus`
CREATE TABLE `plat_role_menus`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`role_id` varchar(64) NOT NULL COMMENT '角色id',
......@@ -357,7 +357,7 @@ CREATE TABLE `sys_role_menus`
CREATE TABLE `space`
CREATE TABLE `plat_space`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(128) NOT NULL COMMENT '名称',
......@@ -374,7 +374,7 @@ CREATE TABLE `space`
) ENGINE = INNODB
DEFAULT CHARSET = utf8mb4 COMMENT = '空间管理';
CREATE TABLE `room`
CREATE TABLE `plat_room`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(128) NOT NULL COMMENT '名称',
......@@ -392,7 +392,7 @@ CREATE TABLE `room`
DEFAULT CHARSET = utf8mb4 COMMENT = '房间管理';
-- 待完善 区域设置表
CREATE TABLE `region_setting`
CREATE TABLE `plat_region_setting`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`room_id` VARCHAR(64) NOT NULL COMMENT '房间id',
......@@ -408,7 +408,7 @@ CREATE TABLE `region_setting`
DEFAULT CHARSET = utf8mb4 COMMENT = '区域管理';
CREATE TABLE `bed`
CREATE TABLE `plat_bed`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) NOT NULL COMMENT '床位名称 床位1,床位2',
......@@ -425,7 +425,7 @@ CREATE TABLE `bed`
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4 COMMENT ='床位管理';
CREATE TABLE `region_setting`
CREATE TABLE `plat_region_setting`
(
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) NOT NULL COMMENT '床位名称 床位1,床位2',
......@@ -441,7 +441,7 @@ CREATE TABLE `region_setting`
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='区域设置';
CREATE TABLE `equipment`
CREATE TABLE `plat_equipment`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`equipment_id` VARCHAR(64) NOT NULL COMMENT '设备id',
......@@ -465,7 +465,7 @@ CREATE TABLE `equipment`
DEFAULT CHARSET = utf8mb4 COMMENT = '设备管理';
CREATE TABLE `alarm_config`
CREATE TABLE `plat_alarm_config`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`alarm_type` VARCHAR(4) DEFAULT NULL COMMENT '告警类型 1 长者跌倒 2 呼吸异常 3 心率异常 4 行为异常',
......@@ -489,7 +489,7 @@ CREATE TABLE `alarm_config`
DEFAULT CHARSET = utf8mb4 COMMENT = '告警配置';
CREATE TABLE `alarm_record`
CREATE TABLE `plat_alarm_record`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`alarm_id` VARCHAR(64) DEFAULT NULL COMMENT '关联告警配置',
......@@ -508,7 +508,7 @@ CREATE TABLE `alarm_record`
DEFAULT CHARSET = utf8mb4 COMMENT = '告警配置';
CREATE TABLE `plafform_setting`
CREATE TABLE `plat_plafform_setting`
(
`id` VARCHAR(64) NOT NULL COMMENT 'id',
`name` VARCHAR(64) NOT NULL COMMENT '名称',
......
-- 长者管理
CREATE TABLE `platElder` (
CREATE TABLE `elder` (
`id` varchar(64) NOT NULL COMMENT 'id',
`name` varchar(128) NOT NULL COMMENT '姓名',
`age` int(4) DEFAULT NULL COMMENT '年龄',
......
-- 租户端表
CREATE TABLE `plat_user` (
`id` varchar(64) NOT NULL COMMENT 'id',
`tenant_id` varchar(64) DEFAULT NULL COMMENT '租户id',
`username` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名',
`account` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账户',
`password` varchar(64) NOT NULL COMMENT '密码',
`mobile` varchar(11) NOT NULL COMMENT '手机号',
`email` varchar(64) NOT NULL COMMENT '邮箱',
`status` char(1) NOT NULL COMMENT '状态 0禁用 1启用',
`avatar` varchar(256) DEFAULT NULL COMMENT '头像',
`is_tenant` char(1) DEFAULT NULL COMMENT '是否租户账户/租户管理员 0否 1是',
`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 '更新人',
`org_id` varchar(64) DEFAULT NULL COMMENT '部门树id',
`org_path` varchar(512) DEFAULT NULL COMMENT '部门树冗余id',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`),
KEY `plat_user_account_index` (`account`),
KEY `plat_user_org_id_index` (`org_id`),
KEY `plat_user_mobile_index` (`mobile`)
) 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
......@@ -84,7 +84,7 @@ CREATE TABLE `saas_menu` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='saas端菜单';
CREATE TABLE `tnt_auth_menu` (
CREATE TABLE `plat_auth_menu` (
`id` varchar(64) NOT NULL COLLATE utf8mb4_general_ci COMMENT '主键id',
`parent_id` varchar(64) NOT NULL COMMENT '父级id',
`name` varchar(100) NOT NULL COMMENT '资源名称',
......@@ -132,7 +132,7 @@ CREATE TABLE `saas_operation_log` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='saas端操作日志';
CREATE TABLE `tnt_tenant` (
CREATE TABLE `plat_tenant` (
`id` varchar(64) NOT NULL COLLATE utf8mb4_general_ci COMMENT 'id',
`name` varchar(128) DEFAULT NULL COMMENT '名称',
`status` varchar(10) NOT NULL COMMENT '状态 0停用 1启用',
......@@ -150,3 +150,5 @@ CREATE TABLE `tnt_tenant` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 STATS_AUTO_RECALC=0 ROW_FORMAT=COMPACT COMMENT='租户管理';
......@@ -22,10 +22,10 @@ import java.util.Arrays;
*/
@Configuration
@Conditional(BizCondition.class)
public class SwaggerFixtureConfig {
public class SwaggerSaasConfig {
@Bean
public SwaggerModuleConfig fixtureModule() {
public SwaggerModuleConfig saasModule() {
SwaggerModuleConfig config = new SwaggerModuleConfig();
config.setPackageList(Arrays.asList("com.makeit.controller"));
config.setModuleName("saas管理");
......@@ -34,7 +34,7 @@ public class SwaggerFixtureConfig {
@Bean
public Docket fixtureApi() {
public Docket saasApi() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
......
......@@ -4,7 +4,7 @@ import com.makeit.common.dto.LoginDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
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.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......
......@@ -7,8 +7,8 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action;
import com.makeit.module.admin.saas.SaasRoleDTOVO;
import com.makeit.module.admin.saas.PlatRoleMenuDTO;
import com.makeit.module.admin.saas.PlatUserRoleDTO;
import com.makeit.module.admin.saas.SaasRoleMenuDTO;
import com.makeit.module.admin.saas.SaasUserRoleDTO;
import com.makeit.service.saas.SaasRoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -93,7 +93,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "分配用户", code = "saas:role:assignUserList")
@ApiOperation("分配用户")
@PostMapping("assignUserList")
public ApiResponseEntity<?> assignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList){//参数要不要是一个对象里 有一个数组
public ApiResponseEntity<?> assignUserList(@RequestBody List<SaasUserRoleDTO> userRoleDTOList){//参数要不要是一个对象里 有一个数组
saasRoleService.assignUserList(userRoleDTOList);
return ApiResponseUtils.success();
}
......@@ -101,7 +101,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "删除分配用户", code = "saas:role:removeAssignUserList")
@ApiOperation("删除分配用户")
@PostMapping("removeAssignUserList")
public ApiResponseEntity<?> removeAssignUserList(@RequestBody List<PlatUserRoleDTO> userRoleDTOList){
public ApiResponseEntity<?> removeAssignUserList(@RequestBody List<SaasUserRoleDTO> userRoleDTOList){
saasRoleService.removeAssignUserList(userRoleDTOList);
return ApiResponseUtils.success();
}
......@@ -109,7 +109,7 @@ public class SaasRoleController {
@Action(module = "saas端-角色", name = "分配菜单", code = "saas:role:assignMenuList")
@ApiOperation("分配菜单")
@PostMapping("assignMenuList")
public ApiResponseEntity<?> assignMenuList(@RequestBody PlatRoleMenuDTO roleMenuDTO){
public ApiResponseEntity<?> assignMenuList(@RequestBody SaasRoleMenuDTO roleMenuDTO){
saasRoleService.assignMenuList(roleMenuDTO);
return ApiResponseUtils.success();
}
......
......@@ -9,9 +9,9 @@ import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.global.annotation.Action;
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.utils.user.SaasUserLoginVO;
import com.makeit.utils.user.saas.SaasUserLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -42,32 +42,33 @@ public class SaasUserController {
@Action(module = "SAAS端-用户", name = "分页列表", code = "saas:user:page")
@ApiOperation("分页列表")
@PostMapping("page")
public ApiResponseEntity<PageVO<SaasUserDTOVO>> page(@RequestBody PageReqDTO<PlatUserQueryDTO> page){
return ApiResponseUtils.success(saasUserService.page(page));
public ApiResponseEntity<PageVO<SaasUserDTOVO>> page(@RequestBody PageReqDTO<SaasUserQueryDTO> page){
//return ApiResponseUtils.success(saasUserService.page(page));
return ApiResponseUtils.success(null);
}
@ApiOperation("分页列表")
@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));
}
//@Action(module = "SAAS端-用户", name = "分页列表-排除超级管理员", code = "plat:user:pageNotSuperAdmin")
@ApiOperation("分页列表-排除超级管理员")
@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));
}
@ApiOperation("分页列表(AuthIgnore)")
@PostMapping("listAuthIgnore")
public ApiResponseEntity<List<SaasUserDTOVO>> listAuthIgnore(@RequestBody PlatUserQueryDTO dto){
public ApiResponseEntity<List<SaasUserDTOVO>> listAuthIgnore(@RequestBody SaasUserQueryDTO dto){
return ApiResponseUtils.success(saasUserService.list(dto));
}
@ApiOperation("分页列表-排除超级管理员(AuthIgnore)")
@PostMapping("listNotSuperAdminAuthIgnore")
public ApiResponseEntity<List<SaasUserDTOVO>> listNotSuperAdminAuthIgnore(@RequestBody PlatUserQueryDTO dto){
public ApiResponseEntity<List<SaasUserDTOVO>> listNotSuperAdminAuthIgnore(@RequestBody SaasUserQueryDTO dto){
return ApiResponseUtils.success(saasUserService.listNoSuperAdmin(dto));
}
......
package com.makeit.controller.sys;
import com.makeit.utils.old.DateUtils;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.storage.AccessoryRepository;
import com.makeit.utils.storage.LocalRepository;
import com.makeit.utils.storage.StorageProperty;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* @author liuhb
* @date 2021/12/14
*/
@SuppressWarnings("ALL")
public abstract class BaseController {
private static String HOST = null;
public static final String OSS = "1";
@Autowired
StorageProperty storageProperty;
@Autowired
protected HttpServletRequest req;
@Autowired
public AccessoryRepository accessoryRepository;
// @Autowired
public LocalRepository localRepository;
public static final String FILE_PATH = "${basePath}/${yyyyMM}/${day}/${fileName}.${type}";
/**
* 获取存储类型
*
* @param type 0 本地 1 oss
* @return
*/
public AccessoryRepository storageRepository(String type) {
// if (StringUtils.equals(OSS, type) && accessoryRepository.isValid()) {
// return accessoryRepository;
// }
// return localRepository;
if (StringUtils.equals(OSS, type)) {
return accessoryRepository;
}
return localRepository;
}
/**
* 获取实际ip地址
*
* @param req
* @return
*/
public String getIp(HttpServletRequest req) {
try {
String ip = req.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
//多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = req.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return req.getRemoteAddr();
} catch (Exception e) {
}
return null;
}
/**
* 获取全路径
*
* @param url
* @return
*/
public String getUri(String url) {
// if (url == null) {
// return null;
// }
// if (url.toLowerCase().contains("http")) {
// return url;
// }
// if (StringUtils.isEmpty(HOST)) {
// HOST = getHost();
// }
// return HOST + url;
return url;
}
/**
* 获取主机地址
*
* @return
*/
private String getHost() {
String host = req.getHeader("x-forwarded-host");
String prefix = StringUtils.defaultString(req.getHeader("x-forwarded-prefix"), "");
String proto = StringUtils.defaultString(req.getHeader("x-forwarded-proto"), "");
String origin = req.getHeader("origin");
if (StringUtils.isEmpty(host) && StringUtils.isNotEmpty(req.getHeader("host"))) {
host = req.getHeader("host");
} else if (StringUtils.isNotEmpty(origin)) {
host = StringUtils.substringAfter(origin, "://");
}
if (StringUtils.isEmpty(proto)) {
proto = StringUtils.defaultString(StringUtils.substringBefore(origin, ":"), "http");
}
if (StringUtils.isEmpty(host)) {
return "";
}
Map<String, String> param = new HashMap<>(0);
param.put("proto", proto);
param.put("host", host);
param.put("prefix", prefix);
//return StringUtils.fillTemplateByEl("${proto}://${host}${prefix}/", param);
return StringUtils.fillTemplateByEl("${proto}://${host}${prefix}", param);
}
protected String getFullPath(String basePath, String originalFilename) {
basePath = StringUtils.defaultString(basePath, "");
String[] type = originalFilename.split("\\.");
Map<String, String> param = new HashMap<>();
param.put("basePath", basePath);
param.put("yyyyMM", DateUtils.formatDate(new Date(), "yyyyMM"));
param.put("day", DateUtils.formatDate(new Date(), "dd"));
param.put("fileName", UUID.randomUUID().toString().replaceAll("-", ""));
param.put("type", type[type.length - 1]);
return StringUtils.fillTemplateByEl(FILE_PATH, param);
}
}
package com.makeit.controller.sys;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.dto.SysConfigCategoryDTOVO;
import com.makeit.module.system.service.SysConfigCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "配置分类")
@RestController
@RequestMapping("/sys/configCategory")
public class SysConfigCategoryController {
@Autowired
private SysConfigCategoryService sysConfigCategoryService;
@ApiOperation(value = "列表", notes = "")
@PostMapping("/list")
public ApiResponseEntity<List<SysConfigCategoryDTOVO>> list(@RequestBody SysConfigCategoryDTOVO sysConfigCategory) {
return ApiResponseUtils.success(sysConfigCategoryService.list(sysConfigCategory));
}
@ApiOperation(value = "列表(AuthIgnore)", notes = "")
@PostMapping("/listAuthIgnore")
public ApiResponseEntity<List<SysConfigCategoryDTOVO>> listAuthIgnore(@RequestBody SysConfigCategoryDTOVO sysConfigCategory) {
return ApiResponseUtils.success(sysConfigCategoryService.list(sysConfigCategory));
}
@ApiOperation(value = "新增", notes = "")
@PostMapping("/add")
public ApiResponseEntity<?> add(@Validated @RequestBody SysConfigCategoryDTOVO sysConfigCategory) {
sysConfigCategoryService.add(sysConfigCategory);
return ApiResponseUtils.success();
}
@ApiOperation(value = "编辑", notes = "")
@PostMapping("/edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SysConfigCategoryDTOVO sysConfigCategory) {
sysConfigCategoryService.edit(sysConfigCategory);
return ApiResponseUtils.success();
}
@ApiOperation(value = "详情", notes = "")
@PostMapping("/view")
public ApiResponseEntity<SysConfigCategoryDTOVO> view(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(sysConfigCategoryService.view(baseIdDTO.getId()));
}
@ApiOperation(value = "删除", notes = "")
@PostMapping("/del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO baseIdDTO) {
sysConfigCategoryService.del(baseIdDTO.getId());
return ApiResponseUtils.success();
}
}
package com.makeit.controller.sys;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.entity.SysConfig;
import com.makeit.module.system.entity.SysConfigCategory;
import com.makeit.module.system.service.SysConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "配置")
@RestController
@RequestMapping("/sys/config")
public class SysConfigController {
@Autowired
private SysConfigService sysConfigService;
@ApiOperation(value = "列表", notes = "")
@PostMapping("/list")
public ApiResponseEntity<List<SysConfig>> list(@RequestBody SysConfig sysConfig) {
return ApiResponseUtils.success(sysConfigService.list(sysConfig));
}
@ApiOperation(value = "分页列表", notes = "")
@PostMapping("/page")
public ApiResponseEntity<PageVO<SysConfig>> page(@RequestBody PageReqDTO<SysConfig> page) {
return ApiResponseUtils.success(sysConfigService.page(page));
}
@ApiOperation(value = "列表(AuthIgnore)", notes = "")
@PostMapping("/listAuthIgnore")
public ApiResponseEntity<List<SysConfig>> listAuthIgnore(@RequestBody SysConfig sysConfig) {
return ApiResponseUtils.success(sysConfigService.list(sysConfig));
}
@ApiOperation(value = "分页列表(AuthIgnore)", notes = "")
@PostMapping("/pageAuthIgnore")
public ApiResponseEntity<PageVO<SysConfig>> pageAuthIgnore(@RequestBody PageReqDTO<SysConfig> page) {
return ApiResponseUtils.success(sysConfigService.page(page));
}
@ApiOperation(value = "新增", notes = "")
@PostMapping("/add")
public ApiResponseEntity<?> add(@Validated @RequestBody SysConfig sysConfig) {
sysConfigService.add(sysConfig);
return ApiResponseUtils.success();
}
@ApiOperation(value = "编辑", notes = "")
@PostMapping("/edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SysConfig sysConfig) {
sysConfigService.edit(sysConfig);
return ApiResponseUtils.success();
}
@ApiOperation(value = "详情", notes = "")
@PostMapping("/view")
public ApiResponseEntity<SysConfig> view(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(sysConfigService.view(baseIdDTO.getId()));
}
@ApiOperation(value = "根据分类code获取详情", notes = "")
@PostMapping("/viewByCategoryCode")
public ApiResponseEntity<SysConfigCategory> viewByCategoryCode(@RequestBody SysConfigCategory sysConfigCategory) {
return ApiResponseUtils.success(sysConfigService.viewByCategoryCode(sysConfigCategory.getCode()));
}
@ApiOperation(value = "删除", notes = "")
@PostMapping("/del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO baseIdDTO) {
sysConfigService.del(baseIdDTO.getId());
return ApiResponseUtils.success();
}
}
package com.makeit.controller.sys;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.entity.SysDictionaryCategory;
import com.makeit.module.system.service.SysDictionaryCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 数据字典类型
*
*/
@Api(tags = "数据字典分类(用户不可见)")
@RestController
@RequestMapping("/sys/dictionaryCategory")
public class SysDictionaryCategoryController {
@Autowired
private SysDictionaryCategoryService dictionaryCategoryService;
@ApiOperation(value = "列表-带字典", notes = "")
@PostMapping("/getDictionaryCategoryByList")
public ApiResponseEntity<List<SysDictionaryCategory>> getDictionaryCategoryByList() {
List<SysDictionaryCategory> dictionaryCategoryList = dictionaryCategoryService.getEpDictionaryCategoryByList();
return ApiResponseUtils.success(dictionaryCategoryList);
}
@ApiOperation(value = "列表", notes = "")
@PostMapping("/list")
public ApiResponseEntity<List<SysDictionaryCategory>> list(@RequestBody SysDictionaryCategory platConfigCategory) {
return ApiResponseUtils.success(dictionaryCategoryService.list(platConfigCategory));
}
@ApiOperation(value = "新增", notes = "")
@PostMapping("/add")
public ApiResponseEntity<?> add(@Validated @RequestBody SysDictionaryCategory sysDictionaryCategory) {
return ApiResponseUtils.success(dictionaryCategoryService.add(sysDictionaryCategory));
}
@ApiOperation(value = "编辑", notes = "")
@PostMapping("/edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SysDictionaryCategory sysDictionaryCategory) {
dictionaryCategoryService.edit(sysDictionaryCategory);
return ApiResponseUtils.success();
}
@ApiOperation(value = "删除", notes = "")
@PostMapping("/del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO baseIdDTO) {
dictionaryCategoryService.del(baseIdDTO.getId());
return ApiResponseUtils.success();
}
}
package com.makeit.controller.sys;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.entity.SysDictionary;
import com.makeit.module.system.service.SysDictionaryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "数据字典(用户不可见)")
@RestController
@RequestMapping("/sys/dictionary")
public class SysDictionaryController {
@Autowired
private SysDictionaryService sysDictionaryService;
@ApiOperation(value = "重新加载", notes = "")
@PostMapping("/reload")
public ApiResponseEntity<?> reload() {
sysDictionaryService.load();
return ApiResponseUtils.success();
}
@ApiOperation(value = "列表", notes = "")
@PostMapping("/list")
public ApiResponseEntity<List<SysDictionary>> list(@RequestBody SysDictionary sysDictionary) {
return ApiResponseUtils.success(sysDictionaryService.list(sysDictionary));
}
@ApiOperation(value = "新增", notes = "")
@PostMapping("/add")
public ApiResponseEntity<?> add(@Validated @RequestBody SysDictionary sysDictionary) {
sysDictionaryService.add(sysDictionary);
return ApiResponseUtils.success();
}
@ApiOperation(value = "编辑", notes = "")
@PostMapping("/edit")
public ApiResponseEntity<?> edit(@Validated @RequestBody SysDictionary sysDictionary) {
sysDictionaryService.edit(sysDictionary);
return ApiResponseUtils.success();
}
@ApiOperation(value = "删除", notes = "")
@PostMapping("/del")
public ApiResponseEntity<?> del(@RequestBody BaseIdDTO baseIdDTO) {
sysDictionaryService.del(baseIdDTO.getId());
return ApiResponseUtils.success();
}
}
package com.makeit.controller.sys;
import com.makeit.common.dto.BaseIdDTO;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.dto.SysFileDTOVO;
import com.makeit.module.system.entity.SysFile;
import com.makeit.module.system.service.SysFileService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.storage.AccessoryRepository;
import com.makeit.utils.storage.DataWithMeta;
import com.makeit.utils.sys.FileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.util.UriUtils;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.List;
@Api(tags = "前台-系统-文件路径")
@RestController
@RequestMapping("sys/file")
public class SysFileController {
@Autowired
public AccessoryRepository accessoryRepository;
@Autowired
private SysFileService sysFileService;
@ApiOperation("获取文件临时路径路径")
@PostMapping("getFileTmp")
public ApiResponseEntity<SysFileDTOVO> getFileTmp(@RequestBody BaseIdDTO baseIdDTO) {
SysFileDTOVO sysFileDTOVO = BeanDtoVoUtils.convert(sysFileService.getById(baseIdDTO.getId()), SysFileDTOVO.class);
sysFileDTOVO.setFullUrl(accessoryRepository.getTmpURL(sysFileDTOVO.getUrl()));
return ApiResponseUtils.success(sysFileDTOVO);
}
@ApiOperation("获取文件路径")
@PostMapping("getFile")
public ApiResponseEntity<List<SysFileDTOVO>> getFile(@RequestBody BaseIdDTO baseIdDTO) {
return ApiResponseUtils.success(FileUtil.convertMultiply(Arrays.asList(baseIdDTO.getId())).get(0));
}
@ApiOperation("获取文件路径集合")
@PostMapping("getFileList")
public ApiResponseEntity<List<List<SysFileDTOVO>>> getFile(@RequestBody List<String> list) {
return ApiResponseUtils.success(FileUtil.convertMultiply(list));
}
//这种方式可以 只是不能设置下载文件名
// @ApiOperation("下载文件")
// @PostMapping("downloadFile")
// public byte[] downloadFile(@RequestBody BaseIdDTO baseIdDTO) {
// return aliyunOSSRepository.getBytes(UriUtils.decode(StringUtils.substringAfter(sysFileService.getById(baseIdDTO.getId()).getUrl(), "oss/"), "UTF-8"));
// }
void downloadFile(HttpServletResponse response, String id) throws IOException {
SysFile sysFile = sysFileService.getById(id);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");
// 设置文件头:最后一个参数是设置下载文件名
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(sysFile.getFileName(), "UTF-8"));
OutputStream outputStream = response.getOutputStream();
outputStream.write(accessoryRepository.getBytes(UriUtils.decode(StringUtils.substringAfter(sysFile.getUrl(), "oss/"), "UTF-8")));
}
//这样是可以
// private void previewFile(HttpServletResponse response, String id) throws IOException {
//
// SysFile sysFile = sysFileService.getById(id);
//
// response.setCharacterEncoding("UTF-8");
// response.setContentType("application/octet-stream");
// // 设置文件头:最后一个参数是设置下载文件名
// response.setHeader("Content-disposition", "inline;filename=" + URLEncoder.encode(sysFile.getFileName(), "UTF-8"));
//
// String suffix = sysFile.getUrl().substring(sysFile.getUrl().lastIndexOf("."));
//
// Map<String, String> map = new HashMap<>(16);
// map.put(".pdf", "application/pdf");
// map.put(".png", "image/png");
// map.put(".jpg", "image/jpg");
// map.put(".jpeg", "image/jpeg");
//
// String contentType = map.get(suffix);
// if (StringUtils.isNotBlank(contentType)) {
// response.setContentType(contentType);
// }
//
// OutputStream outputStream = response.getOutputStream();
// outputStream.write(aliyunOSSRepository.getBytes(UriUtils.decode(StringUtils.substringAfter(sysFile.getUrl(), "oss/"), "UTF-8")));
// outputStream.close();
// }
private void previewFile(HttpServletResponse response, String id) throws IOException {
SysFile sysFile = sysFileService.getById(id);
response.setCharacterEncoding("UTF-8");
// 设置文件头:最后一个参数是设置下载文件名
response.setHeader("Content-disposition", "inline;filename=" + URLEncoder.encode(sysFile.getFileName(), "UTF-8"));
DataWithMeta dataWithMeta = accessoryRepository.getDataWithMeta(UriUtils.decode(StringUtils.substringAfter(sysFile.getUrl(), "oss/"), "UTF-8"));
response.setContentType(dataWithMeta.getContentType());
OutputStream outputStream = response.getOutputStream();
outputStream.write(dataWithMeta.getBytes());
outputStream.close();
}
@ApiOperation("下载文件(json id)")
@RequestMapping(value = "downloadFile", method = {RequestMethod.GET, RequestMethod.POST})
public void downloadFile(HttpServletResponse response, @RequestBody BaseIdDTO baseIdDTO) throws IOException {
downloadFile(response, baseIdDTO.getId());
}
@ApiOperation("预览文件(json id)")
@RequestMapping(value = "previewFile", method = {RequestMethod.GET, RequestMethod.POST})
public void previewFile(HttpServletResponse response, @RequestBody BaseIdDTO baseIdDTO) throws IOException {
previewFile(response, baseIdDTO.getId());
}
@ApiOperation("下载文件")
@RequestMapping(value = "downloadFileParam", method = {RequestMethod.GET, RequestMethod.POST})
public void downloadFileParam(HttpServletResponse response, String id) throws IOException {
downloadFile(response, id);
}
@ApiOperation("预览文件")
@RequestMapping(value = "previewFileParam", method = {RequestMethod.GET, RequestMethod.POST})
public void previewFileParam(HttpServletResponse response, String id) throws IOException {
previewFile(response, id);
}
@ApiOperation("批量保存")
@PostMapping("addList")
public ApiResponseEntity<?> addList(@RequestBody List<SysFileDTOVO> list) {
List<SysFile> fileList = BeanDtoVoUtils.listVo(list, SysFile.class);
sysFileService.saveBatch(fileList);
return ApiResponseUtils.success(StreamUtil.map(fileList, SysFile::getId));
}
}
package com.makeit.controller.sys;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.module.system.dto.SysFileDTOVO;
import com.makeit.module.system.dto.UploadKeyDTO;
import com.makeit.module.system.entity.SysFile;
import com.makeit.module.system.service.SysFileService;
import com.makeit.utils.contract.word.WordConverterUtil;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.storage.HwObsRepository;
import com.makeit.utils.storage.PostSignature;
import com.makeit.utils.sys.FileUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StopWatch;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
* @author liuhb
* @date 2021/12/14
*/
@Api(tags = "系统-文件上传")
@RestController
@RequestMapping("storage")
public class UploadController extends BaseController {
@Autowired
private SysFileService sysFileService;
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);
// @ApiOperation(value = "获取key")
// @PostMapping("getKey")
// public String getKey(@ApiParam(value = "originalFilename") String originalFilename) {
// String fullPath = getFullPath(null, originalFilename);
// return getUri(accessoryRepository.getKey(fullPath));
// }
@ApiOperation(value = "获取key")
@PostMapping("getKey")
public SysFileDTOVO getKey(@RequestBody UploadKeyDTO dto) {
SysFileDTOVO sysFile = new SysFileDTOVO();
sysFile.setFileName(dto.getOriginalFilename());
String fullPath = getFullPath(null, dto.getOriginalFilename());
sysFile.setUrl(getUri(HwObsRepository.APIURI + accessoryRepository.getKey(fullPath)));
sysFile.setKey(accessoryRepository.getKey(fullPath));
return sysFile;
}
@ApiOperation(value = "获取签名")
@PostMapping("getSignature")
public PostSignature getPostSignature() {
return accessoryRepository.getPostSignature();
}
private String replaceSuffix(String name) {
int index = name.lastIndexOf(".");
return name.substring(0, index) + ".pdf";
}
private List<SysFile> uploadInternal(List<MultipartFile> files, String convertToPdf) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
List<SysFile> sysFileList = StreamUtil.map(files, e -> {
try {
SysFile sysFile = new SysFile();
sysFile.setFileName(e.getOriginalFilename());
String fullPath = getFullPath(null, e.getOriginalFilename());
sysFile.setUrl(getUri(storageRepository("1").save(e.getBytes(), fullPath)));
if ("1".equals(convertToPdf)) {
fullPath = getFullPath(null, replaceSuffix(e.getOriginalFilename()));
sysFile.setPdfUrl(getUri(storageRepository("1").save(WordConverterUtil.convert(e.getInputStream()), fullPath)));
}
sysFile.setMime(e.getContentType());
return sysFile;
} catch (IOException ex) {
throw new RuntimeException(ex);
}
});
sysFileService.saveBatch(sysFileList);
stopWatch.stop();
logger.info("文件上传耗时:{} ms", stopWatch.getLastTaskTimeMillis());
return sysFileList;
}
private List<SysFile> convertAndUploadInternal(List<MultipartFile> files) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
List<SysFile> sysFileList = StreamUtil.map(files, e -> {
try {
SysFile sysFile = new SysFile();
sysFile.setFileName(replaceSuffix(e.getOriginalFilename()));
String fullPath = getFullPath(null, replaceSuffix(e.getOriginalFilename()));
sysFile.setUrl(getUri(storageRepository("1").save(WordConverterUtil.convert(e.getInputStream()), fullPath)));
sysFile.setMime(e.getContentType());
return sysFile;
} catch (IOException ex) {
throw new RuntimeException(ex);
}
});
sysFileService.saveBatch(sysFileList);
stopWatch.stop();
logger.info("文件上传耗时:{} ms", stopWatch.getLastTaskTimeMillis());
return sysFileList;
}
@ApiOperation(value = "统一文件上传")
@PostMapping("uploadFile")
public ApiResponseEntity<List<String>> uploadFile(
@ApiParam(value = "convertToPdf") @RequestParam(defaultValue = "0") String convertToPdf,
@ApiParam(value = "files") List<MultipartFile> files) {
List<SysFile> sysFileList = uploadInternal(files, convertToPdf);
return ApiResponseUtils.success(StreamUtil.map(sysFileList, SysFile::getId));
}
@ApiOperation(value = "统一文件上传返回路径")
@PostMapping("uploadFileUrl")
public ApiResponseEntity<List<SysFileDTOVO>> uploadFileUrl(
@ApiParam(value = "convertToPdf") @RequestParam(defaultValue = "0") String convertToPdf,
@ApiParam(value = "files") List<MultipartFile> files) {
List<SysFile> sysFileList = uploadInternal(files, convertToPdf);
List<SysFileDTOVO> voList = BeanDtoVoUtils.listVo(sysFileList, SysFileDTOVO.class);
FileUtil.fillFullUrl(voList);
FileUtil.fillPdfFullUrl(voList);
return ApiResponseUtils.success(voList);
}
@ApiOperation(value = "统一转换为pdf后上传")
@PostMapping("convertAndUploadFile")
public ApiResponseEntity<List<String>> convertAndUploadFile(
@ApiParam(value = "files") List<MultipartFile> files) {
List<SysFile> sysFileList = convertAndUploadInternal(files);
return ApiResponseUtils.success(StreamUtil.map(sysFileList, SysFile::getId));
}
@ApiOperation(value = "统一转换为pdf后上传返回路径")
@PostMapping("convertAndUploadFileUrl")
public ApiResponseEntity<List<SysFileDTOVO>> convertAndUploadFileUrl(
@ApiParam(value = "files") List<MultipartFile> files) {
List<SysFile> sysFileList = convertAndUploadInternal(files);
List<SysFileDTOVO> voList = BeanDtoVoUtils.listVo(sysFileList, SysFileDTOVO.class);
FileUtil.fillFullUrl(voList);
//FileUtil.fillPdfFullUrl(voList);
return ApiResponseUtils.success(voList);
}
//下面两个的作用
//返回给前端的路径 要基于下面两个转发
@ApiOperation("获取oss文件")
@RequestMapping(value = "oss/**", method = RequestMethod.GET)
public void getOssFile(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// String filepath = req.getRequestURI();
// filepath = UriUtils.decode(StringUtils.substringAfter(filepath, "oss"), "UTF-8");
// //.toString().split("\\?")[0];
// resp.sendRedirect(accessoryRepository.getPermanentURL(filepath));
resp.sendRedirect(accessoryRepository.getPermanentURL(req.getRequestURI()));
}
@ApiOperation("获取oss文件(临时路径)")
@RequestMapping(value = "tmp/oss/**", method = RequestMethod.GET)
public void getOssFileTmpPath(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// String filepath = req.getRequestURI();
// filepath = UriUtils.decode(StringUtils.substringAfter(filepath, "tmp/oss"), "UTF-8");
// //.toString().split("\\?")[0];
// resp.sendRedirect(accessoryRepository.getTmpURL(filepath));
resp.sendRedirect(accessoryRepository.getTmpURL(req.getRequestURI()));
}
//private String name;
// private String nameOrigin;
// private String extName;
// private Long fileSize;
// private String storeType;//video audio img pdf等
// private String relativePath;
}
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;
import com.makeit.global.inteceptor.RequestIdInterceptor;
import com.makeit.global.inteceptor.SaasAuthenticationInterceptor;
import com.makeit.global.inteceptor.SaasAuthorizationInterceptor;
import com.makeit.global.inteceptor.TntAuthenticationInterceptor;
import com.makeit.global.inteceptor.TntAuthorizationInterceptor;
import com.makeit.global.inteceptor.PlatAuthenticationInterceptor;
import com.makeit.global.inteceptor.PlatAuthorizationInterceptor;
import com.makeit.utils.old.StringUtils;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -25,9 +25,9 @@ public class WebInterceptorConfig implements WebMvcConfigurer {
private RequestIdInterceptor requestIdInterceptor;
@Autowired
private TntAuthenticationInterceptor tntAuthenticationInterceptor;
private PlatAuthenticationInterceptor tntAuthenticationInterceptor;
@Autowired
private TntAuthorizationInterceptor tntAuthorizationInterceptor;
private PlatAuthorizationInterceptor tntAuthorizationInterceptor;
@Autowired
private SaasAuthenticationInterceptor saasAuthenticationInterceptor;
......
package com.makeit.config.global.thread.wrapper;
import com.makeit.utils.user.tenant.SysUserUtil;
import com.makeit.utils.user.tenant.SysUserVO;
import com.makeit.utils.user.plat.PlatUserUtil;
import com.makeit.utils.user.plat.PlatUserVO;
//TODO ywc 要不要用阿里的 TransmittableThreadLocal(TTL)
public class UserRunnerWrapper implements BizRunnable {
private Runnable task;
private SysUserVO userVO;
private PlatUserVO userVO;
public UserRunnerWrapper(Runnable task) {
super();
this.task = task;
userVO = SysUserUtil.getUserVOCanNull();
userVO = PlatUserUtil.getUserVOCanNull();
}
@Override
public void run() {
SysUserUtil.execute(userVO, task);
PlatUserUtil.execute(userVO, task);
}
......
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.old.StringUtils;
import com.makeit.utils.request.RequestUtil;
import com.makeit.utils.request.Scope;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@Component
public class TenantIdUtil {
private static SysFactoryService sysFactoryService;
private static SysDeptService sysDeptService;
private static final Scope<String> THREAD_LOCAL_FACTORY_ID = new Scope<>();
public static String getFromThreadLocal() {
......@@ -59,18 +48,6 @@ public class TenantIdUtil {
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) {
THREAD_LOCAL_FACTORY_ID.execute(tenantId, runnable);
......@@ -84,20 +61,4 @@ public class TenantIdUtil {
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;
@Order(InterceptorOrderConst.TNT_AUTHENTICATION_INTERCEPTOR)
@Component
public class TntAuthenticationInterceptor implements HandlerInterceptor {
public class PlatAuthenticationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
......
......@@ -5,8 +5,8 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.utils.user.tenant.SysUserUtil;
import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
import com.makeit.utils.user.plat.PlatUserUtil;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
......@@ -20,7 +20,7 @@ import java.util.Set;
@Order(InterceptorOrderConst.TNT_AUTHORIZATION_INTERCEPTOR)
@Component
public class TntAuthorizationInterceptor implements HandlerInterceptor {
public class PlatAuthorizationInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
......@@ -37,13 +37,13 @@ public class TntAuthorizationInterceptor implements HandlerInterceptor {
return true;
}
SysUserRoleMenuRedisVO userLoginVO = SysUserUtil.getTntUserRoleMenu();
PlatUserRoleMenuRedisVO userLoginVO = PlatUserUtil.getTntUserRoleMenu();
// if (IsFactoryAccountEnum.YES.getValue().equals(userLoginVO.getIsFactory())) {
// return true;
// }
if (SysUserUtil.isSuper()) {
if (PlatUserUtil.isSuper()) {
return true;
}
......
......@@ -6,7 +6,7 @@ import com.makeit.enums.order.InterceptorOrderConst;
import com.makeit.exception.BusinessException;
import com.makeit.global.annotation.Action;
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.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
......@@ -35,7 +35,7 @@ public class SaasAuthorizationInterceptor implements HandlerInterceptor {
return true;
}
SaasUserRoleMenuRedisVO userLoginVO = PlatUserUtil.getPlatUserRoleMenu();
SaasUserRoleMenuRedisVO userLoginVO = SaasUserUtil.getPlatUserRoleMenu();
if (userLoginVO == null) {
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.TableName;
import com.makeit.common.entity.BaseEntity;
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 lombok.EqualsAndHashCode;
import java.util.Objects;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 菜单
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@ApiModel("租户端资源(菜单) 新增 编辑 详情")
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="SysMenu对象", description="菜单")
@TableName("sys_auth_menu")
public class SysMenu extends BaseEntity {
private static final long serialVersionUID = 1L;
public class PlatMenuDTOVO extends BaseIdDTO {
@NotBlank(message = "上级菜单不能为空")
@ApiModelProperty(value = "父级id")
private String parentId;
@NotBlank(message = "名称不能为空")
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "名称-英文")
private String nameEng;
@ApiModelProperty(value = "模块+类名+方法")
private String code;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@ApiModelProperty(value = "图标")
private String icon;
@ApiModelProperty(value = "排序")
private Integer sort;
@NotBlank(message = "状态不能为空")
@Pattern(regexp = "0|1", message = "状态可选值 0禁用 1启用")
@ApiModelProperty(value = "状态 0禁用 1启用")
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;
@ApiModelProperty(value = "前端路径")
......@@ -61,33 +52,23 @@ public class SysMenu extends BaseEntity {
@ApiModelProperty(value = "组件名称")
private String componentName;
@TableField(updateStrategy = FieldStrategy.IGNORED)
@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<PlatMenuDTOVO> children;
@ApiModelProperty(value = "隐藏状态 0不隐藏 1隐藏")
private String hiddenStatus;
@ApiModelProperty(value = "缓存状态 0不缓存 1缓存")
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 lombok.Data;
......@@ -9,23 +7,18 @@ import java.io.Serializable;
import java.util.List;
@Data
public class SysUserRoleMenuRedisVO implements Serializable {
public class PlatUserRoleMenuRedisVO implements Serializable {
@ApiModelProperty("id")
private String id;
@ApiModelProperty("是否厂别账号")
private String isFactory;
// @ApiModelProperty("角色列表")
// private List<String> roleCodeList;
@ApiModelProperty("是否租户账号")
private String isTenant;
@ApiModelProperty("角色列表")
private List<SysRoleDTOVO> roleList;
private List<String> roleCodeList;
@ApiModelProperty("按钮列表")
private List<String> buttonCodeList;
@ApiModelProperty("工厂列表")
private List<SysFactoryDTOVO> factoryList;
}
......@@ -15,7 +15,7 @@ import java.util.List;
@ApiModel("平台端菜单 新增 编辑 详情")
@Data
public class PlatMenuDTOVO extends BaseIdDTO implements Serializable {
public class SaasMenuDTOVO extends BaseIdDTO implements Serializable {
@NotBlank(message = "上级菜单不能为空")
@ApiModelProperty(value = "父级id")
......@@ -71,5 +71,5 @@ public class PlatMenuDTOVO extends BaseIdDTO implements Serializable {
@TableField(exist = false)
@ApiModelProperty(value = "子集")
private List<PlatMenuDTOVO> children;
private List<SaasMenuDTOVO> children;
}
......@@ -8,7 +8,7 @@ import java.io.Serializable;
@ApiModel("平台端菜单查询")
@Data
public class PlatMenuQueryDTO implements Serializable {
public class SaasMenuQueryDTO implements Serializable {
@ApiModelProperty(value = "名称")
......
......@@ -9,7 +9,7 @@ import java.util.List;
@ApiModel("平台端角色分配菜单")
@Data
public class PlatRoleMenuDTO implements Serializable {
public class SaasRoleMenuDTO implements Serializable {
@ApiModelProperty(value = "角色id")
private String roleId;
......
......@@ -8,7 +8,7 @@ import java.io.Serializable;
@ApiModel("平台端用户 查询")
@Data
public class PlatUserQueryDTO implements Serializable {
public class SaasUserQueryDTO implements Serializable {
@ApiModelProperty(value = "账户")
......
......@@ -8,7 +8,7 @@ import java.io.Serializable;
@ApiModel("平台端角色分配用户")
@Data
public class PlatUserRoleDTO implements Serializable {
public class SaasUserRoleDTO implements Serializable {
@ApiModelProperty(value = "用户id")
private String userId;
......
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO;
import com.makeit.module.admin.dto.SysDeptQueryDTO;
import com.makeit.module.admin.entity.SysDept;
import java.util.List;
/**
* <p>
* 部门 服务类
* </p>
*
* @author eugene young
* @since 2022-05-17
*/
public interface SysDeptService extends IService<SysDept> {
void changeStatus(StatusDTO dto);
List<SysDept> list(SysDeptQueryDTO dto);
List<SysDept> tree(SysDeptQueryDTO dto);
List<SysDept> listNotFactory(SysDeptQueryDTO dto);
List<SysDept> treeNotFactory(SysDeptQueryDTO dto);
List<SysDept> selfAndChildren(String deptId);
List<String> selfAndChildrenIdList(String deptId);
List<SysDept> selfAndChildren(List<String> deptIdList);
List<String> selfAndChildrenIdList(List<String> deptIdList);
void add(SysDept dto);
void edit(SysDept dto);
SysDept view(String id);
void del(String id);
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.entity.SysFactory;
import java.util.List;
/**
* <p>
* 厂别 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysFactoryService extends IService<SysFactory> {
PageVO<SysFactoryDTOVO> page(PageReqDTO<SysFactoryDTOVO> page);
List<SysFactoryDTOVO> list(SysFactoryDTOVO dto);
String add(SysFactoryDTOVO dto);
void edit(SysFactoryDTOVO dto);
SysFactoryDTOVO view(String id);
void del(String id);
List<SysFactory> userFactoryListList();
List<SysFactory> userFactoryListRefresh();
List<SysFactoryDTOVO> enableList();
List<SysFactoryDTOVO> listByUserIdList(List<String> userIdList);
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.dto.SysMenuDTOVO;
import com.makeit.module.admin.dto.SysMenuQueryDTO;
import com.makeit.module.admin.entity.SysMenu;
import java.util.List;
/**
* <p>
* 菜单 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysMenuService extends IService<SysMenu> {
List<SysMenuDTOVO> list(SysMenuQueryDTO dto);
List<SysMenuDTOVO> tree(List<SysMenuDTOVO> tntMenuList);
List<SysMenuDTOVO> tree(SysMenuQueryDTO dto);
void add(SysMenuDTOVO dto);
void edit(SysMenuDTOVO dto);
SysMenuDTOVO view(String id);
void del(String id);
void sync();
List<SysMenu> loadMenuCodeList();
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysRoleFactory;
/**
* <p>
* 角色菜单关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleFactoryService extends IService<SysRoleFactory> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysRoleMenu;
/**
* <p>
* 角色菜单关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleMenuService extends IService<SysRoleMenu> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import com.makeit.module.admin.dto.SysRoleFactoryDTO;
import com.makeit.module.admin.dto.SysRoleMenuDTO;
import com.makeit.module.admin.dto.SysUserRoleDTO;
import com.makeit.module.admin.entity.SysRole;
import com.makeit.module.admin.entity.SysRoleFactory;
import com.makeit.module.admin.entity.SysRoleMenu;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
import java.util.List;
/**
* <p>
* 角色 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleService extends IService<SysRole> {
List<SysRoleDTOVO> list(SysRoleDTOVO dto);
PageVO<SysRoleDTOVO> page(PageReqDTO<SysRoleDTOVO> page);
void add(SysRoleDTOVO dto);
void edit(SysRoleDTOVO dto);
SysRoleDTOVO view(String id);
void del(String id);
void changeStatus(StatusDTO dto);
void assignUserList(List<SysUserRoleDTO> userRoleDTOList);
void removeAssignUserList(List<SysUserRoleDTO> userRoleDTOList);
void assignMenuList(SysRoleMenuDTO roleMenuDTO);
List<SysRoleMenu> getAssignMenuList(String id);
void assignWechatMenuList(SysRoleMenuDTO roleMenuDTO);
List<SysRoleWechatMenu> getWechatMenuList(String roleId);
void assignFactoryList(SysRoleFactoryDTO roleFactoryDTO);
List<SysRoleFactory> getFactoryList(String roleId);
String factoryInit(String factoryId);
void copyRole(String roleId);
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
/**
* <p>
* 角色菜单关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysRoleWechatMenuService extends IService<SysRoleWechatMenu> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.module.admin.entity.SysUserRole;
/**
* <p>
* 用户角色关联表 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysUserRoleService extends IService<SysUserRole> {
}
package com.makeit.module.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.common.dto.LoginDTO;
import com.makeit.common.dto.StatusDTO;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.module.admin.dto.*;
import com.makeit.module.admin.entity.SysMenu;
import com.makeit.module.admin.entity.SysRole;
import com.makeit.module.admin.entity.SysUser;
import com.makeit.module.admin.vo.SysPersonSimpleVO;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.tenant.SysUserVO;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* <p>
* 用户 服务类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
public interface SysUserService extends IService<SysUser> {
void setDefaultPassword(SysUser user);
void setPassword(SysUser user);
void changePassword(SysUserDTOVO dto);
SysUserDTOVO view(String id);
void del(String id);
void changeStatus(StatusDTO dto);
SysUserLoginVO login(LoginDTO loginDTO);
void logout();
List<SysMenu> getMenuListByFactoryId();
SysUserLoginVO getRoleAndMenuList();
SysUserLoginVO getWechatMenuList();
SysUserLoginVO getUserVO();
SysPersonDTOVO getUserDetail();
List<SysRole> getRoleList(String userId);
void editSelf(SysPersonSimpleDTO dto);
/*人员*/
PageVO<SysPersonDTOVO> page(PageReqDTO<SysUserQueryDTO> page);
List<SysPersonDTOVO> list(SysUserQueryDTO dto);
void exportExcel(HttpServletResponse response, SysUserQueryDTO dto);
List<SysPersonSimpleVO> listSimple(SysUserQueryDTO dto);
SysUser checkUserSuperException(String id);
List<SysUser> checkUserSuperException(List<String> idList);
boolean checkUserSuper(SysUser user);
void addPerson(SysPersonDTOVO dto);
void editPerson(SysPersonDTOVO dto);
SysPersonDTOVO viewPerson(String id);
void delPerson(String id);
void factoryInit(String factoryId);
/*feign*/
List<SysUserVO> listByIdList(List<String> idList);
List<SysUserVO> listByRoleAndMenuCode(SysRoleAndMenuCodeDTO codeDTO);
List<String> listIdByName(String name);
/*feign*/
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.dto.StatusDTO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.biz.auth.DeptEnum;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.dto.SysDeptQueryDTO;
import com.makeit.module.admin.entity.SysDept;
import com.makeit.module.admin.entity.SysUser;
import com.makeit.module.admin.mapper.SysDeptMapper;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.module.admin.service.SysUserService;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.user.tenant.SysUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* <p>
* 部门 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-17
*/
@Service
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
@Autowired
private SysUserService sysUserService;
//TODO ywc 路径枚举 要不要把自己也记录下来
private void orFindInSet(List<String> deptIdList, LambdaQueryWrapper<SysDept> lambdaQueryWrapper) {
lambdaQueryWrapper.and(qw -> {
for (int i = 0; i < deptIdList.size(); i++) {
String e = deptIdList.get(i);
qw.apply("find_in_set('" + e + "',parent_path)")
.or()
.eq(SysDept::getId, e);
if (i < deptIdList.size() - 1) {
qw.or();
}
}
});
}
private LambdaQueryWrapper<SysDept> lambdaQueryWrapper(SysDeptQueryDTO dto) {
LambdaQueryWrapper<SysDept> lambdaQueryWrapper = new QueryWrapper<SysDept>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SysDept::getName, dto.getName())
.eq(StringUtils.isNotBlank(dto.getStatus()), SysDept::getStatus, dto.getStatus())
.eq(StringUtils.isNotBlank(dto.getTag()), SysDept::getTag, dto.getTag())
.orderByAsc(SysDept::getTag)
.orderByAsc(SysDept::getCreateDate);
return lambdaQueryWrapper;
}
private LambdaQueryWrapper<SysDept> lambdaQueryWrapperFactory(SysDeptQueryDTO dto) {
List<String> deptIdList = SysUserUtil.deptIdList();
boolean flag = SysUserUtil.isSuper() && deptIdList.isEmpty();
LambdaQueryWrapper<SysDept> lambdaQueryWrapper = lambdaQueryWrapper(dto);
//TODO ywc 要不要改成全查出来 内存过滤
if (!flag) {
orFindInSet(deptIdList, lambdaQueryWrapper);
}
return lambdaQueryWrapper;
}
@Transactional
@Override
public void changeStatus(StatusDTO dto) {
if (Arrays.stream(CommonEnum.values()).noneMatch(e -> e.getValue().equals(dto.getStatus()))) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
SysDept dept = getById(dto.getId());
if (dept.getStatus().equals(dto.getStatus())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR);
}
dept.setStatus(dto.getStatus());
updateById(dept);
}
@Override
public List<SysDept> list(SysDeptQueryDTO dto) {//parent_path find_in_set ?
List<SysDept> sysDeptList = list(lambdaQueryWrapperFactory(dto));
return sysDeptList;
}
@Override
public List<SysDept> tree(SysDeptQueryDTO dto) {
List<SysDept> list = list(dto);
return tree(list);
}
@Override
public List<SysDept> listNotFactory(SysDeptQueryDTO dto) {
List<SysDept> sysDeptList = list(lambdaQueryWrapper(dto));
return sysDeptList;
}
@Override
public List<SysDept> treeNotFactory(SysDeptQueryDTO dto) {
List<SysDept> list = listNotFactory(dto);
return tree(list);
}
@Override
public List<SysDept> selfAndChildren(String deptId) {
List<SysDept> deptList = list(new QueryWrapper<SysDept>().lambda().apply("find_in_set('" + deptId + "',parent_path)"));
return deptList;
}
@Override
public List<String> selfAndChildrenIdList(String deptId) {
return StreamUtil.map(selfAndChildren(deptId), SysDept::getId);
}
@Override
public List<SysDept> selfAndChildren(List<String> deptIdList) {
LambdaQueryWrapper<SysDept> lambdaQueryWrapper = new QueryWrapper<SysDept>().lambda();
orFindInSet(deptIdList, lambdaQueryWrapper);
return list(lambdaQueryWrapper);
}
@Override
public List<String> selfAndChildrenIdList(List<String> deptIdList) {
return StreamUtil.map(selfAndChildren(deptIdList), SysDept::getId);
}
private List<SysDept> tree(List<SysDept> sysDeptList) {
Map<String, SysDept> map = StreamUtil.toMap(sysDeptList, SysDept::getId);
//List<TntDept> topList = StreamUtil.filter(tntDeptList, e -> TreeConst.TOP_LEVEL.equals(e.getParentId()));
List<SysDept> topList = new ArrayList<>(10);
sysDeptList.forEach(e -> {
SysDept parent = map.get(e.getParentId());
if (parent != null) {
List<SysDept> children = parent.getChildren();
if (children == null) {
children = new ArrayList<>(10);
parent.setChildren(children);
}
children.add(e);
} else {
topList.add(e);
}
});
return topList;
}
@Transactional
@Override
public void add(SysDept dto) {
dto.setTag(DeptEnum.DeptTagEnum.DEPT.getValue());
//dto.setFactoryId(FactoryIdUtil.getFactoryId());
save(dto);
}
@Transactional
@Override
public void edit(SysDept dto) {
dto.setTag(DeptEnum.DeptTagEnum.DEPT.getValue());
//dto.setFactoryId(FactoryIdUtil.getFactoryId());
updateById(dto);
}
@Override
public SysDept view(String id) {
SysDept sysDept = getById(id);
return sysDept;
}
@Transactional
@Override
public void del(String id) {
List<SysDept> list = new ArrayList<>(10);
List<SysDept> children = list(new QueryWrapper<SysDept>().lambda()
.eq(SysDept::getParentId, id));
if (!children.isEmpty()) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_DEPT_DELETE);
}
long count = sysUserService.count(new QueryWrapper<SysUser>().lambda()
.eq(SysUser::getDeptId, id));
if (count > 0) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_DEPT_DELETE);
}
// while (!children.isEmpty()) {
// list.addAll(children);
//
// List<String> idList = StreamUtil.map(children, TntDept::getId);
// idList.add(-1 + "");
//
// children = list(new QueryWrapper<TntDept>().lambda()
// .in(TntDept::getParentId, idList));
// }
//
List<String> idList = StreamUtil.map(list, SysDept::getId);
idList.add(id);
remove(new QueryWrapper<SysDept>().lambda()
.in(SysDept::getId, idList));
}
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO;
import com.makeit.enums.CodeMessageEnum;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import com.makeit.module.admin.entity.SysDept;
import com.makeit.module.admin.entity.SysFactory;
import com.makeit.module.admin.entity.SysRoleFactory;
import com.makeit.module.admin.mapper.SysFactoryMapper;
import com.makeit.module.admin.service.SysDeptService;
import com.makeit.module.admin.service.SysFactoryService;
import com.makeit.module.admin.service.SysRoleFactoryService;
import com.makeit.module.admin.service.SysUserService;
import com.makeit.module.system.service.SysConfigService;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.old.StringUtils;
import com.makeit.utils.sql.join.JoinUtil;
import com.makeit.utils.user.TokenUtil;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.utils.user.tenant.SysUserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 厂别 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysFactoryServiceImpl extends ServiceImpl<SysFactoryMapper, SysFactory> implements SysFactoryService {
@Autowired
private SysConfigService sysConfigService;
@Autowired
private SysDeptService sysDeptService;
@Autowired
private SysUserService sysUserService;
@Autowired
private SysRoleFactoryService sysRoleFactoryService;
private void fill(List<SysFactoryDTOVO> voList) {
JoinUtil.joinSplit(voList, sysDeptService, SysFactoryDTOVO::getDeptIdList, SysDept::getId, (f, d) -> {
f.setDeptOriIdList(StreamUtil.join(d, SysDept::getOriId));
f.setDeptNameList(StreamUtil.join(d, SysDept::getName));
});
}
private LambdaQueryWrapper<SysFactory> listLambdaQueryWrapper(SysFactoryDTOVO dto) {
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = new QueryWrapper<SysFactory>().lambda()
.like(StringUtils.isNotBlank(dto.getName()), SysFactory::getName, dto.getName());
lambdaQueryWrapper.orderByDesc(SysFactory::getCreateDate);
return lambdaQueryWrapper;
}
@Override
public List<SysFactoryDTOVO> list(SysFactoryDTOVO dto) {
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = listLambdaQueryWrapper(dto);
List<SysFactory> sysFactoryList = list(lambdaQueryWrapper);
List<SysFactoryDTOVO> voList = BeanDtoVoUtils.listVo(sysFactoryList, SysFactoryDTOVO.class);
fill(voList);
return voList;
}
@Override
public PageVO<SysFactoryDTOVO> page(PageReqDTO<SysFactoryDTOVO> page) {
SysFactoryDTOVO dto = page.getData();
Page<SysFactory> p = PageUtil.toMpPage(page);
LambdaQueryWrapper<SysFactory> lambdaQueryWrapper = listLambdaQueryWrapper(dto);
Page<SysFactory> pageList = page(p, lambdaQueryWrapper);
List<SysFactoryDTOVO> voList = BeanDtoVoUtils.listVo(pageList.getRecords(), SysFactoryDTOVO.class);
fill(voList);
return PageUtil.toPageVO(voList, pageList);
}
private void checkName(SysFactoryDTOVO dto) {
SysFactory sysFactory = getOne(
new QueryWrapper<SysFactory>().lambda()
.eq(SysFactory::getName, dto.getName())
);
if (sysFactory != null && !sysFactory.getId().equals(dto.getId())) {
throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_NAME_DUPLICATE);
}
}
@Transactional
@Override
public String add(SysFactoryDTOVO dto) {
checkName(dto);
SysFactory sysFactory = BeanDtoVoUtils.convert(dto, SysFactory.class);
save(sysFactory);
dto.setId(sysFactory.getId());
sysConfigService.copyForFactory(BeanDtoVoUtils.convert(sysFactory, SysFactoryDTOVO.class));
sysUserService.factoryInit(sysFactory.getId());
return sysFactory.getId();
}
@Transactional
@Override
public void edit(SysFactoryDTOVO dto) {
checkName(dto);
SysFactory sysFactory = BeanDtoVoUtils.convert(dto, SysFactory.class);
updateById(sysFactory);
}
@Override
public SysFactoryDTOVO view(String id) {
SysFactoryDTOVO userVO = BeanDtoVoUtils.convert(getById(id), SysFactoryDTOVO.class);
return userVO;
}
@Transactional
@Override
public void del(String id) {
removeById(id);
}
@Override
public List<SysFactory> userFactoryListList() {
if (SysUserUtil.isSuper()) {
List<SysFactory> factoryList = list(new QueryWrapper<SysFactory>().lambda()
.orderByAsc(SysFactory::getCreateDate)
);
return factoryList;
}
SysUserRoleMenuRedisVO sysUserRoleMenuRedisVO = TokenUtil.getTntUserRoleMenu();
List<String> roleIdList = StreamUtil.mapId(sysUserRoleMenuRedisVO.getRoleList(), SysRoleDTOVO::getId);
List<SysRoleFactory> sysRoleFactoryList = sysRoleFactoryService.list(new QueryWrapper<SysRoleFactory>().lambda().in(SysRoleFactory::getRoleId, roleIdList));
List<String> factoryIdList = StreamUtil.mapId(sysRoleFactoryList, SysRoleFactory::getFactoryId);
List<SysFactory> factoryList = list(new QueryWrapper<SysFactory>().lambda()
.in(SysFactory::getId, factoryIdList)
.orderByAsc(SysFactory::getCreateDate)
);
return factoryList;
}
@Override
public List<SysFactory> userFactoryListRefresh() {
List<SysFactory> companyList = userFactoryListList();
// if (companyList == null || companyList.isEmpty()) {
// throw new BusinessException(CodeMessageEnum.SYSTEM_ERROR_COMPANY_NOT_EXIST);
// }
//sysUserService.refreshFactoryList(companyList);
return companyList;
}
@Override
public List<SysFactoryDTOVO> enableList() {
List<SysFactory> sysFactoryList = list(new QueryWrapper<SysFactory>().lambda());
return BeanDtoVoUtils.listVo(sysFactoryList, SysFactoryDTOVO.class);
}
@Override
public List<SysFactoryDTOVO> listByUserIdList(List<String> userIdList) {
userIdList = new ArrayList<>(userIdList);
userIdList.add(-1 + "");
List<SysFactory> tenantList = list(new QueryWrapper<SysFactory>().lambda()
.orderByAsc(SysFactory::getCreateDate)
);
return BeanDtoVoUtils.listVo(tenantList, SysFactoryDTOVO.class);
}
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysRoleFactory;
import com.makeit.module.admin.mapper.SysRoleFactoryMapper;
import com.makeit.module.admin.service.SysRoleFactoryService;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysRoleFactoryServiceImpl extends ServiceImpl<SysRoleFactoryMapper, SysRoleFactory> implements SysRoleFactoryService {
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysRoleMenu;
import com.makeit.module.admin.mapper.SysRoleMenuMapper;
import com.makeit.module.admin.service.SysRoleMenuService;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysRoleWechatMenu;
import com.makeit.module.admin.mapper.SysRoleWechatMenuMapper;
import com.makeit.module.admin.service.SysRoleWechatMenuService;
import org.springframework.stereotype.Service;
/**
* <p>
* 角色菜单关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysRoleWechatMenuServiceImpl extends ServiceImpl<SysRoleWechatMenuMapper, SysRoleWechatMenu> implements SysRoleWechatMenuService {
}
package com.makeit.module.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.module.admin.entity.SysUserRole;
import com.makeit.module.admin.mapper.SysUserRoleMapper;
import com.makeit.module.admin.service.SysUserRoleService;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户角色关联表 服务实现类
* </p>
*
* @author eugene young
* @since 2022-05-10
*/
@Service
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
}
package com.makeit.module.admin.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.common.dto.BaseIdDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@ApiModel("用户简易 详情")
@Data
public class SysPersonSimpleVO extends BaseIdDTO {
@ApiModelProperty(value = "账户")
private String account;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "性別 数据字典 1男 2女")
private String sex;
@ApiModelProperty(value = "手机号")
private String mobile;
@ApiModelProperty(value = "邮箱")
private String mail;
@ApiModelProperty(value = "状态 1启用 0禁用")
private String status;
@ApiModelProperty(value = "在职状态 1在职 0离职")
private String empStatus;
@ApiModelProperty(value = "部门id")
private String deptId;
@ApiModelProperty(value = "主管")
private String superior;
@ApiModelProperty(value = "AD账号")
private String empNo;
@ApiModelProperty(value = "是否系统账号 0否 1是")
private String systemStatus;
@ApiModelProperty(value = "是否公共账号 0否 1是")
private String publicStatus;
@ApiModelProperty(value = "是否主账号 0否 1是")
private String masterStatus;
@ApiModelProperty(value = "备注")
private String remark;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updatedAt;
}
package com.makeit.module.admin.vo.plat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.makeit.module.admin.plat.BaseOrgDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@ApiModel("租户端角色 列表 新增 编辑 详情")
@Data
public class PlatRoleDTOVO extends BaseOrgDTO implements Serializable {
@NotBlank(message = "名称不能为空")
@Size(max = 64, message = "名称最长为64字符")
@ApiModelProperty(value = "名称")
private String name;
@NotBlank(message = "编码不能为空")
@Size(max = 64, message = "编码最长为64字符")
@Pattern(regexp = "[a-zA-Z0-9]{0,64}", message = "编码只能为大小写英文字符和数字")
@ApiModelProperty(value = "编码")
private String code;
@NotBlank(message = "状态不能为空")
@Pattern(regexp = "0|1", message = "状态可选值为 0禁用 1启用")
@ApiModelProperty(value = "状态 0禁用 1启用")
private String status;
@Size(max = 512, message = "备注最长512字符")
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "是否管理员角色 0否 1是")
private String isAdmin;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间", required = false)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createdAt;
@ApiModelProperty(value = "关键词 查询用")
private String keyword;
@TableField(exist = false)
@ApiModelProperty(value = "部门名称")
private String deptName;
@TableField(exist = false)
@ApiModelProperty(value = "角色名称集合")
private List<String> nameList;
}
package com.makeit.utils.user.tenant;
package com.makeit.module.admin.vo.plat;
import com.makeit.module.admin.dto.SysButtonVO;
import com.makeit.module.admin.dto.SysFactoryDTOVO;
import com.makeit.module.admin.dto.SysMenuDTOVO;
import com.makeit.module.admin.dto.SysRoleDTOVO;
import com.makeit.module.admin.plat.PlatButtonVO;
import com.makeit.module.admin.saas.SaasMenuDTOVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -11,7 +9,7 @@ import java.io.Serializable;
import java.util.List;
@Data
public class SysUserLoginVO implements Serializable {
public class PlatUserLoginVO implements Serializable {
@ApiModelProperty("id")
private String id;
......@@ -22,34 +20,37 @@ public class SysUserLoginVO implements Serializable {
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty(value = "厂别id 给非管理员用")
private String factoryId;
// @ApiModelProperty("用户名")
// private String username;
@ApiModelProperty(value = "租户id 给非管理员用")
private String tenantId;
@ApiModelProperty(value = "是否厂别账户 0否 1是")
private String isFactory;
@ApiModelProperty(value = "是否租户账户 0否 1是")
private String isTenant;
@ApiModelProperty(value = "部门id")
@ApiModelProperty(value = "部门树id")
private String deptId;
@ApiModelProperty("token")
private String token;
//todo dto
// @ApiModelProperty("租户列表")
// private List<PlatTenant> tenantList;
@ApiModelProperty("角色列表")
private List<SysRoleDTOVO> roleList;
private List<PlatRoleDTOVO> roleList;
@ApiModelProperty("菜单树形列表")
private List<SysMenuDTOVO> menuList;
private List<SaasMenuDTOVO> menuList;
// @ApiModelProperty("按钮列表")
// private List<TntMenuDTOVO> buttonList;
@ApiModelProperty("按钮列表")
private List<SysButtonVO> buttonList;
private List<PlatButtonVO> buttonList;
@ApiModelProperty("企微菜单列表")
private List<String> wechatMenuCodeList;
@ApiModelProperty("工厂列表")
private List<SysFactoryDTOVO> factoryList;
}
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 java.util.List;
@Component
public class DeptIdUtil {
private static SysDeptService sysDeptService;
public static List<String> deptIdListFromHeader() {
return TenantIdUtil.deptIdList();
}
public static List<String> deptIdListFromUser() {
return SysUserUtil.deptIdList();
}
public static List<String> deptIdAndChildrenListFromHeader() {
return sysDeptService.selfAndChildrenIdList(deptIdListFromHeader());
}
public static List<String> deptIdAndChildrenListFromUser() {
return sysDeptService.selfAndChildrenIdList(deptIdListFromUser());
}
@Autowired
public void setSysDeptService(SysDeptService sysDeptService) {
DeptIdUtil.sysDeptService = sysDeptService;
}
// private static SysDeptService sysDeptService;
//
// public static List<String> deptIdListFromHeader() {
// return TenantIdUtil.deptIdList();
// }
//
// public static List<String> deptIdListFromUser() {
// return SysUserUtil.deptIdList();
// }
//
// public static List<String> deptIdAndChildrenListFromHeader() {
// return sysDeptService.selfAndChildrenIdList(deptIdListFromHeader());
// }
//
// public static List<String> deptIdAndChildrenListFromUser() {
// return sysDeptService.selfAndChildrenIdList(deptIdListFromUser());
// }
//
//
// @Autowired
// public void setSysDeptService(SysDeptService sysDeptService) {
// DeptIdUtil.sysDeptService = sysDeptService;
// }
}
package com.makeit.utils.contract.word;
import com.makeit.utils.ThreadUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;
@Component
public class WordConverterUtil {
private static final Logger logger = LoggerFactory.getLogger(WordConverterUtil.class);
private static String libreOffice;
public static byte[] convert(byte[] bytes) {
return convert(new ByteArrayInputStream(bytes));
}
public static byte[] convert(InputStream inputStream) {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
try {
File projectPath = PathUtil.userDirPath();
String tmpName = UUID.randomUUID().toString().replaceAll("-", "");
File wordFile = new File(projectPath, tmpName + ".docx");
File pdfFile = new File(projectPath, tmpName + ".pdf");
try (FileOutputStream fileOutputStream = new FileOutputStream(wordFile)) {
byte[] b = new byte[1024];
int i = inputStream.read(b);
while (i != -1) {
fileOutputStream.write(b, 0, i);
i = inputStream.read(b);
}
}
convert(wordFile.getAbsolutePath(), projectPath.getAbsolutePath());
byte[] bytes;
try (FileInputStream fileInputStream = new FileInputStream(pdfFile);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
byte[] b = new byte[1024];
int i = fileInputStream.read(b);
while (i != -1) {
byteArrayOutputStream.write(b, 0, i);
i = fileInputStream.read(b);
}
bytes = byteArrayOutputStream.toByteArray();
}
// wordFile.delete();
// pdfFile.delete();
ThreadUtil.run(wordFile::delete);
ThreadUtil.run(pdfFile::delete);
return bytes;
} catch (Exception ex) {
throw new RuntimeException(ex);
}finally {
stopWatch.stop();
logger.info("word转换成pdf 耗时:{} ms", stopWatch.getLastTaskTimeMillis());
}
}
public static void convert(String libreOffice, String inputFile, String outDir) {
long start = System.currentTimeMillis();
String command = "";
String osName = System.getProperty("os.name");
command = libreOffice + " --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + outDir;
exec(command);
long end = System.currentTimeMillis();
logger.info("用时:{} ms", end - start);
}
public static void convert(String inputFile, String outDir) {
//convert("C:\\Program Files\\LibreOffice\\program\\soffice",inputFile,outDir);
convert(libreOffice, inputFile, outDir);
}
private static boolean exec(String command) {
Process process;// Process可以控制该子进程的执行或获取该子进程的信息
try {
logger.info("exec cmd : {}", command);
process = Runtime.getRuntime().exec(command);// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
} catch (IOException e) {
logger.error(" exec {} error", command, e);
return false;
}
int exitStatus = 0;
try {
exitStatus = process.waitFor();// 等待子进程完成再往下执行,返回值是子线程执行完毕的返回值,返回0表示正常结束
// 第二种接受返回值的方法
int i = process.exitValue(); // 接收执行完毕的返回值
logger.info("i----" + i);
} catch (InterruptedException e) {
logger.error("InterruptedException exec {}", command, e);
return false;
}
if (exitStatus != 0) {
logger.error("exec cmd exitStatus {}", exitStatus);
} else {
logger.info("exec cmd exitStatus {}", exitStatus);
}
process.destroy(); // 销毁子进程
process = null;
return true;
}
@Value("${libreOffice}")
public void setLibreOffice(String libreOffice) {
WordConverterUtil.libreOffice = libreOffice;
}
}
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;
import com.makeit.config.global.thread.BizThreadLocal;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -16,7 +18,8 @@ public class ThreadLocalUserUtil {
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<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<>();
......@@ -45,7 +48,7 @@ public class ThreadLocalUserUtil {
}
public static SysUserLoginVO getTntUser() {
public static PlatUserLoginVO getTntUser() {
// SysUserLoginVO sysUserLoginVO = THREAD_LOCAL_TNT_USER.get();
......@@ -63,7 +66,7 @@ public class ThreadLocalUserUtil {
//TODO ywc 上面好像有threadlocal 泄露问题
SysUserLoginVO sysUserLoginVO = TokenUtil.getTntUserDetail();
PlatUserLoginVO sysUserLoginVO = TokenUtil.getTntUserDetail();
return sysUserLoginVO;
}
......@@ -82,8 +85,8 @@ public class ThreadLocalUserUtil {
return wechatUserInfo;
}
public static SysUserRoleMenuRedisVO getTntUserRoleAndMenu() {
SysUserRoleMenuRedisVO sysUserRoleMenuRedisVO = THREAD_LOCAL_TNT_USER_ROLE_MENU.get();
public static PlatUserRoleMenuRedisVO getTntUserRoleAndMenu() {
PlatUserRoleMenuRedisVO sysUserRoleMenuRedisVO = THREAD_LOCAL_TNT_USER_ROLE_MENU.get();
if (sysUserRoleMenuRedisVO == null) {
sysUserRoleMenuRedisVO = TokenUtil.getTntUserRoleMenu();
THREAD_LOCAL_TNT_USER_ROLE_MENU.set(sysUserRoleMenuRedisVO);
......
......@@ -5,12 +5,13 @@ import com.makeit.enums.CodeMessageEnum;
import com.makeit.enums.HeaderConst;
import com.makeit.enums.redis.RedisConst;
import com.makeit.exception.BusinessException;
import com.makeit.module.admin.plat.PlatUserRoleMenuRedisVO;
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.RedisUtil;
import com.makeit.utils.request.RequestUtil;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.tenant.SysUserRoleMenuRedisVO;
import com.makeit.utils.user.saas.SaasUserLoginVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.lang3.StringUtils;
......@@ -74,18 +75,18 @@ public class TokenUtil {
return null;
}
public static SysUserRoleMenuRedisVO getTntUserRoleMenu(String token) {
public static PlatUserRoleMenuRedisVO getTntUserRoleMenu(String 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 null;
}
public static SysUserRoleMenuRedisVO getTntUserRoleMenu() {
public static PlatUserRoleMenuRedisVO getTntUserRoleMenu() {
String token = RequestUtil.getHeader(HeaderConst.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 null;
......@@ -199,10 +200,10 @@ public class TokenUtil {
}
public static SysUserLoginVO getTntUserDetail() {
public static PlatUserLoginVO getTntUserDetail() {
String token = RequestUtil.getHeader(HeaderConst.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 null;
......
package com.makeit.utils.user.common;
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.TokenUtil;
import com.makeit.utils.user.SaasUserLoginVO;
import com.makeit.utils.user.tenant.SysUserLoginVO;
import com.makeit.utils.user.wechat.WechatUserInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpHeaders;
......@@ -14,7 +14,7 @@ public class CommonUserUtil {
public static CommonUserVO getUser() {
SysUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser();
PlatUserLoginVO sysUserLoginVO = ThreadLocalUserUtil.getTntUser();
if (sysUserLoginVO != null) {
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 java.io.Serializable;
@Data
public class TntUserVO implements Serializable {
public class PlatUserVO implements Serializable {
private String id;
private String name;
// private String username;
......@@ -16,16 +16,16 @@ public class TntUserVO implements Serializable {
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.tenantId = tenantId;
this.name = name;
}
public TntUserVO(String id, String name) {
public PlatUserVO(String id, String name) {
this.id = id;
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 io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -31,9 +31,9 @@ public class SaasUserLoginVO implements Serializable {
private List<SaasRoleDTOVO> roleList;
@ApiModelProperty("菜单树形列表")
private List<PlatMenuDTOVO> menuList;
private List<SaasMenuDTOVO> menuList;
@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.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();
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), PlatUserVO.class);
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), SaasUserVO.class);
}
public static PlatUserVO getUserVOCanNull() {
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), PlatUserVO.class);
public static SaasUserVO getUserVOCanNull() {
return BeanDtoVoUtils.convert(TokenUtil.getPlatUserDetail(), SaasUserVO.class);
}
public static SaasUserLoginVO getUserVODetail() {
......
package com.makeit.utils.user;
package com.makeit.utils.user.saas;
import lombok.Data;
import java.io.Serializable;
@Data
public class PlatUserVO implements Serializable {
public class SaasUserVO implements Serializable {
private String id;
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;
}
......@@ -16,7 +16,7 @@
<dependency>
<groupId>com.makeit</groupId>
<artifactId>server-common</artifactId>
<version>1.0.1</version>
<version>1.0.0</version>
</dependency>
<dependency>
......@@ -54,5 +54,9 @@
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -32,7 +32,7 @@ public class PlatElderAddDTO extends BaseTenantDTO {
@ApiModelProperty(value = "年龄")
private Integer age;
@DictEnum(em = PlatElderEnum.SexEnum.class,message = "性别可选值为{m}")
@DictEnum(em = PlatElderEnum.SexEnum.class, message = "性别可选值为{m}")
@ApiModelProperty(value = "性别 数据字典 1 男 2 女")
private String sex;
......
......@@ -29,7 +29,7 @@ public class PlatElderDTOVO extends BaseTenantDTO {
@ApiModelProperty(value = "年龄")
private Integer age;
@DictEnum(em = PlatElderEnum.SexEnum.class,message = "性别可选值为{m}")
@DictEnum(em = PlatElderEnum.SexEnum.class, message = "性别可选值为{m}")
@ApiModelProperty(value = "性别 数据字典 1 男 2 女")
private String sex;
......
......@@ -16,11 +16,9 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="ElderHealthInfo对象", description="长者健康状态")
@ApiModel(value = "ElderHealthInfo对象", description = "长者健康状态")
public class PlatElderHealthInfoDTOVO extends BaseTenantDTO {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "长者id")
private String elderId;
......
......@@ -16,9 +16,10 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="ElderSocialRelation对象", description="长者社会关系")
@ApiModel(value = "ElderSocialRelation对象", description = "长者社会关系")
public class PlatElderSocialRelationDTOVO extends BaseTenantDTO {
@ApiModelProperty(value = "长者id")
private String elderId;
......
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
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