大写
This commit is contained in:
@@ -180,7 +180,7 @@ ORDER BY create_time;
|
|||||||
|
|
||||||
### 配置类型
|
### 配置类型
|
||||||
|
|
||||||
- `config_type`: String / Integer / Boolean / Float / Double
|
- `config_type`: String / INTEGER / BOOLEAN / Float / Double
|
||||||
- `render_type`: select / input / textarea / checkbox / radio / switch
|
- `render_type`: select / input / textarea / checkbox / radio / switch
|
||||||
|
|
||||||
### 常用查询
|
### 常用查询
|
||||||
@@ -481,14 +481,14 @@ GROUP BY a.agent_id, a.agent_name;
|
|||||||
| `dept_path` | VARCHAR(255) | 部门全路径(多租户隔离) |
|
| `dept_path` | VARCHAR(255) | 部门全路径(多租户隔离) |
|
||||||
| `creator` | VARCHAR(50) | 创建者ID |
|
| `creator` | VARCHAR(50) | 创建者ID |
|
||||||
| `updater` | VARCHAR(50) | 更新者ID |
|
| `updater` | VARCHAR(50) | 更新者ID |
|
||||||
| `create_time` | timestamptz | 创建时间(带时区) |
|
| `create_time` | TIMESTAMPTZ | 创建时间(带时区) |
|
||||||
| `update_time` | timestamptz | 更新时间(触发器自动更新) |
|
| `update_time` | TIMESTAMPTZ | 更新时间(触发器自动更新) |
|
||||||
| `delete_time` | timestamptz | 删除时间 |
|
| `delete_time` | TIMESTAMPTZ | 删除时间 |
|
||||||
| `deleted` | BOOLEAN | 软删除标记 |
|
| `deleted` | BOOLEAN | 软删除标记 |
|
||||||
|
|
||||||
### 时间戳说明
|
### 时间戳说明
|
||||||
|
|
||||||
- 使用 `timestamptz` 类型(带时区的时间戳)
|
- 使用 `TIMESTAMPTZ` 类型(带时区的时间戳)
|
||||||
- 自动记录创建时间
|
- 自动记录创建时间
|
||||||
- 更新时间由触发器自动维护
|
- 更新时间由触发器自动维护
|
||||||
- 支持软删除(保留 delete_time)
|
- 支持软删除(保留 delete_time)
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ agent ← 智能体管理和平台基础设施
|
|||||||
|
|
||||||
### 1. 数据类型使用
|
### 1. 数据类型使用
|
||||||
|
|
||||||
- **timestamptz**:全部时间字段(带时区支持)
|
- **TIMESTAMPTZ**:全部时间字段(带时区支持)
|
||||||
- **JSONB**:配置、元数据、扩展字段
|
- **JSONB**:配置、元数据、扩展字段
|
||||||
- **数组(TEXT[])**:标签、关键词、ID列表
|
- **数组(TEXT[])**:标签、关键词、ID列表
|
||||||
- **DECIMAL**:金额、评分(精确计算)
|
- **DECIMAL**:金额、评分(精确计算)
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ tb_sys_user:
|
|||||||
- 支持多种登录方式(email、phone、wechat_id)
|
- 支持多种登录方式(email、phone、wechat_id)
|
||||||
- 密码加密存储(建议bcrypt/argon2)
|
- 密码加密存储(建议bcrypt/argon2)
|
||||||
- 软删除机制(deleted + delete_time)
|
- 软删除机制(deleted + delete_time)
|
||||||
- 时区感知时间戳(timestamptz)
|
- 时区感知时间戳(TIMESTAMPTZ)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3.2 知识库管理模块 (knowledge)
|
### 3.2 知识库管理模块 (knowledge)
|
||||||
@@ -419,8 +419,8 @@ CREATE TABLE sys.tb_sys_user_dept (
|
|||||||
is_primary BOOLEAN DEFAULT false, -- 是否主部门
|
is_primary BOOLEAN DEFAULT false, -- 是否主部门
|
||||||
position VARCHAR(100), -- 职位
|
position VARCHAR(100), -- 职位
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (user_id, dept_id),
|
PRIMARY KEY (user_id, dept_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
@@ -475,7 +475,7 @@ CREATE TABLE file.tb_file_relation (
|
|||||||
relation_type VARCHAR(30) DEFAULT 'attachment', -- 关联类型:attachment-附件/avatar-头像/banner-横幅
|
relation_type VARCHAR(30) DEFAULT 'attachment', -- 关联类型:attachment-附件/avatar-头像/banner-横幅
|
||||||
order_num INTEGER DEFAULT 0,
|
order_num INTEGER DEFAULT 0,
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (relation_id),
|
PRIMARY KEY (relation_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -504,8 +504,8 @@ CREATE TABLE message.tb_message_template (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL,
|
dept_path VARCHAR(255) DEFAULT NULL,
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
updater VARCHAR(50) DEFAULT NULL,
|
updater VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (template_id),
|
PRIMARY KEY (template_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -688,7 +688,7 @@ pg_restore -d urbanlifeline -c backup_20240101.dump
|
|||||||
- **Schema数**:9 个业务Schema
|
- **Schema数**:9 个业务Schema
|
||||||
- **索引类型**:B-Tree、GIN、部分索引、表达式索引
|
- **索引类型**:B-Tree、GIN、部分索引、表达式索引
|
||||||
- **数据类型**:标准类型 + JSONB + 数组 + 向量(可选)
|
- **数据类型**:标准类型 + JSONB + 数组 + 向量(可选)
|
||||||
- **时区支持**:全部使用timestamptz
|
- **时区支持**:全部使用TIMESTAMPTZ
|
||||||
- **软删除**:全表支持deleted标记
|
- **软删除**:全表支持deleted标记
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ CREATE TABLE agent.tb_agent (
|
|||||||
status VARCHAR(20) DEFAULT 'active', -- 状态:active-激活/inactive-停用/under_maintenance-维护中
|
status VARCHAR(20) DEFAULT 'active', -- 状态:active-激活/inactive-停用/under_maintenance-维护中
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (agent_id),
|
PRIMARY KEY (agent_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -64,15 +64,15 @@ CREATE TABLE agent.tb_agent_session (
|
|||||||
session_name VARCHAR(255), -- 会话名称
|
session_name VARCHAR(255), -- 会话名称
|
||||||
context JSONB, -- 会话上下文
|
context JSONB, -- 会话上下文
|
||||||
session_status VARCHAR(20) DEFAULT 'active', -- 会话状态:active-活跃/paused-暂停/ended-结束
|
session_status VARCHAR(20) DEFAULT 'active', -- 会话状态:active-活跃/paused-暂停/ended-结束
|
||||||
start_time timestamptz DEFAULT now(), -- 开始时间
|
start_time TIMESTAMPTZ DEFAULT now(), -- 开始时间
|
||||||
end_time timestamptz, -- 结束时间
|
end_time TIMESTAMPTZ, -- 结束时间
|
||||||
message_count INTEGER DEFAULT 0, -- 消息数量
|
message_count INTEGER DEFAULT 0, -- 消息数量
|
||||||
token_usage INTEGER DEFAULT 0, -- Token使用量
|
token_usage INTEGER DEFAULT 0, -- Token使用量
|
||||||
cost DECIMAL(10,4) DEFAULT 0, -- 成本
|
cost DECIMAL(10,4) DEFAULT 0, -- 成本
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (session_id),
|
PRIMARY KEY (session_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -101,7 +101,7 @@ CREATE TABLE agent.tb_agent_message (
|
|||||||
kb_references JSONB, -- 知识库引用(JSON数组)
|
kb_references JSONB, -- 知识库引用(JSON数组)
|
||||||
metadata JSONB, -- 消息元数据
|
metadata JSONB, -- 消息元数据
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (message_id),
|
PRIMARY KEY (message_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -138,9 +138,9 @@ CREATE TABLE agent.tb_agent_tool (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (tool_id),
|
PRIMARY KEY (tool_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -169,15 +169,15 @@ CREATE TABLE agent.tb_api_integration (
|
|||||||
retry_config JSONB, -- 重试配置
|
retry_config JSONB, -- 重试配置
|
||||||
health_check_url VARCHAR(500), -- 健康检查URL
|
health_check_url VARCHAR(500), -- 健康检查URL
|
||||||
health_status VARCHAR(20) DEFAULT 'unknown', -- 健康状态:healthy-健康/unhealthy-不健康/unknown-未知
|
health_status VARCHAR(20) DEFAULT 'unknown', -- 健康状态:healthy-健康/unhealthy-不健康/unknown-未知
|
||||||
last_health_check timestamptz, -- 最后健康检查时间
|
last_health_check TIMESTAMPTZ, -- 最后健康检查时间
|
||||||
documentation_url VARCHAR(500), -- 文档URL
|
documentation_url VARCHAR(500), -- 文档URL
|
||||||
is_enabled BOOLEAN DEFAULT true, -- 是否启用
|
is_enabled BOOLEAN DEFAULT true, -- 是否启用
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (integration_id),
|
PRIMARY KEY (integration_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
@@ -211,7 +211,7 @@ CREATE TABLE agent.tb_api_call_log (
|
|||||||
retry_count INTEGER DEFAULT 0, -- 重试次数
|
retry_count INTEGER DEFAULT 0, -- 重试次数
|
||||||
ip_address VARCHAR(45), -- IP地址
|
ip_address VARCHAR(45), -- IP地址
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
PRIMARY KEY (log_id),
|
PRIMARY KEY (log_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -242,8 +242,8 @@ CREATE TABLE agent.tb_agent_metrics (
|
|||||||
avg_rating DECIMAL(3,2), -- 平均评分
|
avg_rating DECIMAL(3,2), -- 平均评分
|
||||||
rating_count INTEGER DEFAULT 0, -- 评分数量
|
rating_count INTEGER DEFAULT 0, -- 评分数量
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
PRIMARY KEY (metric_id),
|
PRIMARY KEY (metric_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
UNIQUE (agent_id, metric_date, metric_hour),
|
UNIQUE (agent_id, metric_date, metric_hour),
|
||||||
@@ -270,8 +270,8 @@ CREATE TABLE agent.tb_agent_error_log (
|
|||||||
is_resolved BOOLEAN DEFAULT false, -- 是否已解决
|
is_resolved BOOLEAN DEFAULT false, -- 是否已解决
|
||||||
resolution_notes TEXT, -- 解决方案备注
|
resolution_notes TEXT, -- 解决方案备注
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
resolve_time timestamptz, -- 解决时间
|
resolve_time TIMESTAMPTZ, -- 解决时间
|
||||||
PRIMARY KEY (log_id),
|
PRIMARY KEY (log_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
|
FOREIGN KEY (agent_id) REFERENCES agent.tb_agent(agent_id)
|
||||||
@@ -296,7 +296,7 @@ CREATE TABLE agent.tb_agent_rating (
|
|||||||
tags TEXT[], -- 标签
|
tags TEXT[], -- 标签
|
||||||
is_anonymous BOOLEAN DEFAULT false, -- 是否匿名
|
is_anonymous BOOLEAN DEFAULT false, -- 是否匿名
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (rating_id),
|
PRIMARY KEY (rating_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ CREATE TABLE bidding.tb_bidding_project (
|
|||||||
industry VARCHAR(100), -- 所属行业
|
industry VARCHAR(100), -- 所属行业
|
||||||
source_platform VARCHAR(100), -- 来源平台(如:政府采购网、企业官网等)
|
source_platform VARCHAR(100), -- 来源平台(如:政府采购网、企业官网等)
|
||||||
source_url VARCHAR(500), -- 来源URL
|
source_url VARCHAR(500), -- 来源URL
|
||||||
publish_date timestamptz, -- 发布日期
|
publish_date TIMESTAMPTZ, -- 发布日期
|
||||||
deadline timestamptz, -- 投标截止日期
|
deadline TIMESTAMPTZ, -- 投标截止日期
|
||||||
opening_date timestamptz, -- 开标日期
|
opening_date TIMESTAMPTZ, -- 开标日期
|
||||||
budget_amount DECIMAL(18,2), -- 预算金额
|
budget_amount DECIMAL(18,2), -- 预算金额
|
||||||
currency VARCHAR(10) DEFAULT 'CNY', -- 货币单位
|
currency VARCHAR(10) DEFAULT 'CNY', -- 货币单位
|
||||||
project_status VARCHAR(30) NOT NULL DEFAULT 'collecting', -- 项目状态:collecting-收集中/analyzing-分析中/preparing-准备投标/submitted-已提交/opened-已开标/won-中标/lost-未中标/abandoned-放弃
|
project_status VARCHAR(30) NOT NULL DEFAULT 'collecting', -- 项目状态:collecting-收集中/analyzing-分析中/preparing-准备投标/submitted-已提交/opened-已开标/won-中标/lost-未中标/abandoned-放弃
|
||||||
@@ -35,9 +35,9 @@ CREATE TABLE bidding.tb_bidding_project (
|
|||||||
team_members VARCHAR(50)[], -- 团队成员数组
|
team_members VARCHAR(50)[], -- 团队成员数组
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (project_id),
|
PRIMARY KEY (project_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -71,13 +71,13 @@ CREATE TABLE bidding.tb_bidding_document (
|
|||||||
parse_result JSONB, -- 解析结果(JSON格式:提取的要素、表格、图纸等)
|
parse_result JSONB, -- 解析结果(JSON格式:提取的要素、表格、图纸等)
|
||||||
extraction_data JSONB, -- 提取的结构化数据
|
extraction_data JSONB, -- 提取的结构化数据
|
||||||
ai_analysis TEXT, -- AI分析结果
|
ai_analysis TEXT, -- AI分析结果
|
||||||
upload_date timestamptz DEFAULT now(), -- 上传日期
|
upload_date TIMESTAMPTZ DEFAULT now(), -- 上传日期
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (doc_id),
|
PRIMARY KEY (doc_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -113,9 +113,9 @@ CREATE TABLE bidding.tb_bidding_requirement (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (req_id),
|
PRIMARY KEY (req_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -151,9 +151,9 @@ CREATE TABLE bidding.tb_bid_response (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (response_id),
|
PRIMARY KEY (response_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -186,9 +186,9 @@ CREATE TABLE bidding.tb_bidding_scoring_rule (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (rule_id),
|
PRIMARY KEY (rule_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -209,10 +209,10 @@ CREATE TABLE bidding.tb_bidding_process (
|
|||||||
node_type VARCHAR(50) NOT NULL, -- 节点类型:collection-文件收集/analysis-需求分析/preparation-文件准备/review-内部审核/submission-投标提交/opening-开标/result-结果通知
|
node_type VARCHAR(50) NOT NULL, -- 节点类型:collection-文件收集/analysis-需求分析/preparation-文件准备/review-内部审核/submission-投标提交/opening-开标/result-结果通知
|
||||||
node_order INTEGER NOT NULL, -- 节点顺序
|
node_order INTEGER NOT NULL, -- 节点顺序
|
||||||
node_status VARCHAR(30) DEFAULT 'pending', -- 节点状态:pending-待处理/in_progress-进行中/completed-已完成/skipped-已跳过
|
node_status VARCHAR(30) DEFAULT 'pending', -- 节点状态:pending-待处理/in_progress-进行中/completed-已完成/skipped-已跳过
|
||||||
planned_start_time timestamptz, -- 计划开始时间
|
planned_start_time TIMESTAMPTZ, -- 计划开始时间
|
||||||
planned_end_time timestamptz, -- 计划结束时间
|
planned_end_time TIMESTAMPTZ, -- 计划结束时间
|
||||||
actual_start_time timestamptz, -- 实际开始时间
|
actual_start_time TIMESTAMPTZ, -- 实际开始时间
|
||||||
actual_end_time timestamptz, -- 实际结束时间
|
actual_end_time TIMESTAMPTZ, -- 实际结束时间
|
||||||
responsible_user VARCHAR(50), -- 负责人
|
responsible_user VARCHAR(50), -- 负责人
|
||||||
participants VARCHAR(50)[], -- 参与人员数组
|
participants VARCHAR(50)[], -- 参与人员数组
|
||||||
notes TEXT, -- 节点备注
|
notes TEXT, -- 节点备注
|
||||||
@@ -220,9 +220,9 @@ CREATE TABLE bidding.tb_bidding_process (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (process_id),
|
PRIMARY KEY (process_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -251,9 +251,9 @@ CREATE TABLE bidding.tb_bid_template (
|
|||||||
status VARCHAR(20) DEFAULT 'active', -- 状态:active-激活/inactive-停用
|
status VARCHAR(20) DEFAULT 'active', -- 状态:active-激活/inactive-停用
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (template_id),
|
PRIMARY KEY (template_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ CREATE TABLE config.tb_sys_config (
|
|||||||
key VARCHAR(255) NOT NULL, -- 配置键
|
key VARCHAR(255) NOT NULL, -- 配置键
|
||||||
name VARCHAR(255) NOT NULL, -- 配置名称
|
name VARCHAR(255) NOT NULL, -- 配置名称
|
||||||
value VARCHAR(255) NOT NULL, -- 配置值
|
value VARCHAR(255) NOT NULL, -- 配置值
|
||||||
config_type VARCHAR(50) NOT NULL, -- 数据类型(String, Integer, Boolean, Float, Double)
|
config_type VARCHAR(50) NOT NULL, -- 数据类型(String, INTEGER, BOOLEAN, Float, Double)
|
||||||
render_type VARCHAR(50) NOT NULL, -- 配置渲染类型(select, input, textarea, checkbox, radio, switch)
|
render_type VARCHAR(50) NOT NULL, -- 配置渲染类型(select, input, textarea, checkbox, radio, switch)
|
||||||
description VARCHAR(255) NOT NULL, -- 配置描述
|
description VARCHAR(255) NOT NULL, -- 配置描述
|
||||||
re JSON DEFAULT NULL, -- 正则表达式校验规则
|
re JSON DEFAULT NULL, -- 正则表达式校验规则
|
||||||
@@ -19,9 +19,9 @@ CREATE TABLE config.tb_sys_config (
|
|||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径,支持like递归(如/1/2/3/)
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径,支持like递归(如/1/2/3/)
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 配置创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 配置创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 配置更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 配置更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 配置删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 配置删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (config_id),
|
PRIMARY KEY (config_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ CREATE TABLE customer_service.tb_customer (
|
|||||||
tags TEXT[], -- 客户标签数组
|
tags TEXT[], -- 客户标签数组
|
||||||
notes TEXT, -- 备注
|
notes TEXT, -- 备注
|
||||||
crm_customer_id VARCHAR(50), -- CRM系统客户ID(外部系统)
|
crm_customer_id VARCHAR(50), -- CRM系统客户ID(外部系统)
|
||||||
last_contact_time timestamptz, -- 最后联系时间
|
last_contact_time TIMESTAMPTZ, -- 最后联系时间
|
||||||
total_consultations INTEGER DEFAULT 0, -- 咨询总次数
|
total_consultations INTEGER DEFAULT 0, -- 咨询总次数
|
||||||
total_orders INTEGER DEFAULT 0, -- 订单总数
|
total_orders INTEGER DEFAULT 0, -- 订单总数
|
||||||
total_amount DECIMAL(18,2) DEFAULT 0, -- 总消费金额
|
total_amount DECIMAL(18,2) DEFAULT 0, -- 总消费金额
|
||||||
@@ -34,9 +34,9 @@ CREATE TABLE customer_service.tb_customer (
|
|||||||
status VARCHAR(20) DEFAULT 'active', -- 状态:active-活跃/inactive-非活跃/blacklist-黑名单
|
status VARCHAR(20) DEFAULT 'active', -- 状态:active-活跃/inactive-非活跃/blacklist-黑名单
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (customer_id),
|
PRIMARY KEY (customer_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -62,8 +62,8 @@ CREATE TABLE customer_service.tb_conversation (
|
|||||||
channel VARCHAR(20) DEFAULT 'wechat', -- 渠道:wechat-微信/web-网页/app-应用/phone-电话
|
channel VARCHAR(20) DEFAULT 'wechat', -- 渠道:wechat-微信/web-网页/app-应用/phone-电话
|
||||||
agent_id VARCHAR(50), -- 智能体ID或客服人员ID
|
agent_id VARCHAR(50), -- 智能体ID或客服人员ID
|
||||||
agent_type VARCHAR(20) DEFAULT 'ai', -- 座席类型:ai-AI/human-人工
|
agent_type VARCHAR(20) DEFAULT 'ai', -- 座席类型:ai-AI/human-人工
|
||||||
session_start_time timestamptz DEFAULT now(), -- 会话开始时间
|
session_start_time TIMESTAMPTZ DEFAULT now(), -- 会话开始时间
|
||||||
session_end_time timestamptz, -- 会话结束时间
|
session_end_time TIMESTAMPTZ, -- 会话结束时间
|
||||||
duration_seconds INTEGER, -- 会话时长(秒)
|
duration_seconds INTEGER, -- 会话时长(秒)
|
||||||
message_count INTEGER DEFAULT 0, -- 消息数量
|
message_count INTEGER DEFAULT 0, -- 消息数量
|
||||||
conversation_status VARCHAR(20) DEFAULT 'active', -- 会话状态:active-进行中/closed-已结束/transferred-已转接/timeout-超时
|
conversation_status VARCHAR(20) DEFAULT 'active', -- 会话状态:active-进行中/closed-已结束/transferred-已转接/timeout-超时
|
||||||
@@ -75,9 +75,9 @@ CREATE TABLE customer_service.tb_conversation (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (conversation_id),
|
PRIMARY KEY (conversation_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -110,10 +110,10 @@ CREATE TABLE customer_service.tb_conversation_message (
|
|||||||
intent VARCHAR(100), -- 意图识别结果
|
intent VARCHAR(100), -- 意图识别结果
|
||||||
is_sensitive BOOLEAN DEFAULT false, -- 是否敏感信息
|
is_sensitive BOOLEAN DEFAULT false, -- 是否敏感信息
|
||||||
read_status BOOLEAN DEFAULT false, -- 已读状态
|
read_status BOOLEAN DEFAULT false, -- 已读状态
|
||||||
read_time timestamptz, -- 阅读时间
|
read_time TIMESTAMPTZ, -- 阅读时间
|
||||||
metadata JSONB, -- 消息元数据
|
metadata JSONB, -- 消息元数据
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间(发送时间)
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间(发送时间)
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (message_id),
|
PRIMARY KEY (message_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -145,10 +145,10 @@ CREATE TABLE customer_service.tb_ticket (
|
|||||||
assigned_dept VARCHAR(50), -- 分配部门
|
assigned_dept VARCHAR(50), -- 分配部门
|
||||||
ticket_status VARCHAR(30) DEFAULT 'pending', -- 工单状态:pending-待处理/processing-处理中/resolved-已解决/closed-已关闭/cancelled-已取消
|
ticket_status VARCHAR(30) DEFAULT 'pending', -- 工单状态:pending-待处理/processing-处理中/resolved-已解决/closed-已关闭/cancelled-已取消
|
||||||
resolution TEXT, -- 解决方案
|
resolution TEXT, -- 解决方案
|
||||||
resolution_time timestamptz, -- 解决时间
|
resolution_time TIMESTAMPTZ, -- 解决时间
|
||||||
close_time timestamptz, -- 关闭时间
|
close_time TIMESTAMPTZ, -- 关闭时间
|
||||||
response_time timestamptz, -- 首次响应时间
|
response_time TIMESTAMPTZ, -- 首次响应时间
|
||||||
sla_deadline timestamptz, -- SLA截止时间
|
sla_deadline TIMESTAMPTZ, -- SLA截止时间
|
||||||
is_overdue BOOLEAN DEFAULT false, -- 是否逾期
|
is_overdue BOOLEAN DEFAULT false, -- 是否逾期
|
||||||
customer_rating INTEGER, -- 客户评分(1-5星)
|
customer_rating INTEGER, -- 客户评分(1-5星)
|
||||||
customer_feedback TEXT, -- 客户反馈
|
customer_feedback TEXT, -- 客户反馈
|
||||||
@@ -159,9 +159,9 @@ CREATE TABLE customer_service.tb_ticket (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (ticket_id),
|
PRIMARY KEY (ticket_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -192,7 +192,7 @@ CREATE TABLE customer_service.tb_ticket_log (
|
|||||||
operator_name VARCHAR(100), -- 操作人姓名
|
operator_name VARCHAR(100), -- 操作人姓名
|
||||||
attachments VARCHAR(50)[], -- 附件ID数组
|
attachments VARCHAR(50)[], -- 附件ID数组
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
PRIMARY KEY (log_id),
|
PRIMARY KEY (log_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
FOREIGN KEY (ticket_id) REFERENCES customer_service.tb_ticket(ticket_id)
|
FOREIGN KEY (ticket_id) REFERENCES customer_service.tb_ticket(ticket_id)
|
||||||
@@ -221,9 +221,9 @@ CREATE TABLE customer_service.tb_faq (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (faq_id),
|
PRIMARY KEY (faq_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
@@ -249,7 +249,7 @@ CREATE TABLE customer_service.tb_service_evaluation (
|
|||||||
tags TEXT[], -- 评价标签
|
tags TEXT[], -- 评价标签
|
||||||
is_anonymous BOOLEAN DEFAULT false, -- 是否匿名
|
is_anonymous BOOLEAN DEFAULT false, -- 是否匿名
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (evaluation_id),
|
PRIMARY KEY (evaluation_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -274,13 +274,13 @@ CREATE TABLE customer_service.tb_crm_config (
|
|||||||
sync_direction VARCHAR(30) DEFAULT 'bidirectional',-- 同步方向:to_crm-单向到CRM/from_crm-单向从CRM/bidirectional-双向
|
sync_direction VARCHAR(30) DEFAULT 'bidirectional',-- 同步方向:to_crm-单向到CRM/from_crm-单向从CRM/bidirectional-双向
|
||||||
field_mapping JSONB, -- 字段映射配置
|
field_mapping JSONB, -- 字段映射配置
|
||||||
sync_enabled BOOLEAN DEFAULT false, -- 是否启用同步
|
sync_enabled BOOLEAN DEFAULT false, -- 是否启用同步
|
||||||
last_sync_time timestamptz, -- 最后同步时间
|
last_sync_time TIMESTAMPTZ, -- 最后同步时间
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (config_id),
|
PRIMARY KEY (config_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ CREATE TABLE file.tb_sys_file (
|
|||||||
dept_path VARCHAR(255) NOT NULL, -- 当前部门路径
|
dept_path VARCHAR(255) NOT NULL, -- 当前部门路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (file_id),
|
PRIMARY KEY (file_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ CREATE TABLE knowledge.tb_knowledge_base (
|
|||||||
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态:active-激活/inactive-停用/archived-归档
|
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态:active-激活/inactive-停用/archived-归档
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (kb_id),
|
PRIMARY KEY (kb_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
@@ -63,9 +63,9 @@ CREATE TABLE knowledge.tb_knowledge_document (
|
|||||||
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态:active-激活/inactive-停用/archived-归档
|
status VARCHAR(20) NOT NULL DEFAULT 'active', -- 状态:active-激活/inactive-停用/archived-归档
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (doc_id),
|
PRIMARY KEY (doc_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -96,8 +96,8 @@ CREATE TABLE knowledge.tb_knowledge_chunk (
|
|||||||
metadata JSONB, -- 片段元数据
|
metadata JSONB, -- 片段元数据
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (chunk_id),
|
PRIMARY KEY (chunk_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -127,7 +127,7 @@ CREATE TABLE knowledge.tb_knowledge_access_log (
|
|||||||
ip_address VARCHAR(45), -- IP地址
|
ip_address VARCHAR(45), -- IP地址
|
||||||
user_agent TEXT, -- 用户代理
|
user_agent TEXT, -- 用户代理
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
PRIMARY KEY (log_id),
|
PRIMARY KEY (log_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -6,18 +6,18 @@ CREATE TABLE log.tb_sys_log (
|
|||||||
type VARCHAR(50) NOT NULL, -- 日志类型
|
type VARCHAR(50) NOT NULL, -- 日志类型
|
||||||
level VARCHAR(50) NOT NULL, -- 日志级别
|
level VARCHAR(50) NOT NULL, -- 日志级别
|
||||||
module VARCHAR(50) NOT NULL, -- 日志模块
|
module VARCHAR(50) NOT NULL, -- 日志模块
|
||||||
ip_address varchar(45), -- IP地址
|
ip_address VARCHAR(45), -- IP地址
|
||||||
ip_source varchar(100), -- IP来源
|
ip_source VARCHAR(100), -- IP来源
|
||||||
browser varchar(100), -- 浏览器
|
browser VARCHAR(100), -- 浏览器
|
||||||
os varchar(100), -- 操作系统
|
os VARCHAR(100), -- 操作系统
|
||||||
message VARCHAR(255) NOT NULL, -- 日志消息
|
message VARCHAR(255) NOT NULL, -- 日志消息
|
||||||
data JSONB DEFAULT NULL, -- 日志数据
|
data JSONB DEFAULT NULL, -- 日志数据
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 日志创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 日志创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 日志更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 日志更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 日志删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 日志删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (log_id),
|
PRIMARY KEY (log_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ CREATE TABLE message.tb_message (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(隔离)
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(隔离)
|
||||||
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
delete_time timestamptz DEFAULT NULL,
|
delete_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (message_id),
|
PRIMARY KEY (message_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
@@ -42,13 +42,13 @@ CREATE TABLE message.tb_message_range (
|
|||||||
message_id VARCHAR(50) NOT NULL, -- 消息ID
|
message_id VARCHAR(50) NOT NULL, -- 消息ID
|
||||||
target_type VARCHAR(20) NOT NULL, -- 目标类型:user/dept/role/all
|
target_type VARCHAR(20) NOT NULL, -- 目标类型:user/dept/role/all
|
||||||
target_id VARCHAR(50) DEFAULT NULL, -- 目标ID(用户、部门、角色ID等,all类型时为空)
|
target_id VARCHAR(50) DEFAULT NULL, -- 目标ID(用户、部门、角色ID等,all类型时为空)
|
||||||
channel VARCHAR(20) NOT NULL DEFAULT 'app', -- 发送渠道:app/sms/email/wechat等
|
channel VARCHAR(20) NOT NULL DEFAULT 'app', -- 发送渠道:app/sms/email/wechat_official_account/wechat_applet等
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径,支持like递归(如/1/2/3/)
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径,支持like递归(如/1/2/3/)
|
||||||
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (optsn),
|
PRIMARY KEY (optsn),
|
||||||
UNIQUE (message_id, target_type, target_id, channel)
|
UNIQUE (message_id, target_type, target_id, channel)
|
||||||
@@ -59,7 +59,7 @@ COMMENT ON COLUMN message.tb_message_range.optsn IS '流水号';
|
|||||||
COMMENT ON COLUMN message.tb_message_range.message_id IS '消息ID';
|
COMMENT ON COLUMN message.tb_message_range.message_id IS '消息ID';
|
||||||
COMMENT ON COLUMN message.tb_message_range.target_type IS '目标类型:user-指定用户/dept-部门/role-角色/all-全员';
|
COMMENT ON COLUMN message.tb_message_range.target_type IS '目标类型:user-指定用户/dept-部门/role-角色/all-全员';
|
||||||
COMMENT ON COLUMN message.tb_message_range.target_id IS '目标ID(用户、部门、角色ID等,all类型时为空)';
|
COMMENT ON COLUMN message.tb_message_range.target_id IS '目标ID(用户、部门、角色ID等,all类型时为空)';
|
||||||
COMMENT ON COLUMN message.tb_message_range.channel IS '发送渠道:app/sms/email/wechat等';
|
COMMENT ON COLUMN message.tb_message_range.channel IS '发送渠道:app/sms/email/wechat_official_account/wechat_applet等';
|
||||||
COMMENT ON COLUMN message.tb_message_range.dept_path IS '部门全路径';
|
COMMENT ON COLUMN message.tb_message_range.dept_path IS '部门全路径';
|
||||||
COMMENT ON COLUMN message.tb_message_range.creator IS '创建者';
|
COMMENT ON COLUMN message.tb_message_range.creator IS '创建者';
|
||||||
COMMENT ON COLUMN message.tb_message_range.updater IS '更新者';
|
COMMENT ON COLUMN message.tb_message_range.updater IS '更新者';
|
||||||
@@ -77,14 +77,14 @@ CREATE TABLE message.tb_message_receiver (
|
|||||||
user_id VARCHAR(50) NOT NULL, -- 用户ID
|
user_id VARCHAR(50) NOT NULL, -- 用户ID
|
||||||
channel VARCHAR(20) DEFAULT 'app', -- 接收渠道:app/sms/email/wechat等
|
channel VARCHAR(20) DEFAULT 'app', -- 接收渠道:app/sms/email/wechat等
|
||||||
status VARCHAR(20) NOT NULL DEFAULT 'unread', -- 消息状态:unread-未读/read-已读/handled-已处理/deleted-已删除
|
status VARCHAR(20) NOT NULL DEFAULT 'unread', -- 消息状态:unread-未读/read-已读/handled-已处理/deleted-已删除
|
||||||
read_time timestamptz DEFAULT NULL, -- 阅读时间
|
read_time TIMESTAMPTZ DEFAULT NULL, -- 阅读时间
|
||||||
handle_time timestamptz DEFAULT NULL, -- 处理时间
|
handle_time TIMESTAMPTZ DEFAULT NULL, -- 处理时间
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离)
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离)
|
||||||
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间(接收时间)
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间(接收时间)
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (optsn),
|
PRIMARY KEY (optsn),
|
||||||
UNIQUE (message_id, user_id, channel)
|
UNIQUE (message_id, user_id, channel)
|
||||||
@@ -119,15 +119,15 @@ CREATE TABLE message.tb_message_channel (
|
|||||||
channel_code VARCHAR(20) NOT NULL, -- 渠道编码:app/sms/email/wechat/dingtalk等
|
channel_code VARCHAR(20) NOT NULL, -- 渠道编码:app/sms/email/wechat/dingtalk等
|
||||||
channel_name VARCHAR(100) NOT NULL, -- 渠道名称
|
channel_name VARCHAR(100) NOT NULL, -- 渠道名称
|
||||||
channel_desc VARCHAR(255) DEFAULT NULL, -- 渠道描述
|
channel_desc VARCHAR(255) DEFAULT NULL, -- 渠道描述
|
||||||
config TEXT DEFAULT NULL, -- 渠道配置(JSON格式,如API密钥、服务器地址等)
|
config JSON DEFAULT NULL, -- 渠道配置(如API密钥、服务器地址等)
|
||||||
status VARCHAR(20) NOT NULL DEFAULT 'enabled', -- 渠道状态:enabled-启用/disabled-禁用/maintenance-维护中
|
status VARCHAR(20) NOT NULL DEFAULT 'enabled', -- 渠道状态:enabled-启用/disabled-禁用/maintenance-维护中
|
||||||
priority INTEGER DEFAULT 0, -- 优先级(数字越大优先级越高)
|
priority INTEGER DEFAULT 0, -- 优先级(数字越大优先级越高)
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离)
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离)
|
||||||
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
creator VARCHAR(50) NOT NULL DEFAULT 'system',-- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (channel_id),
|
PRIMARY KEY (channel_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -150,12 +150,3 @@ COMMENT ON COLUMN message.tb_message_channel.create_time IS '创建时间';
|
|||||||
COMMENT ON COLUMN message.tb_message_channel.update_time IS '更新时间';
|
COMMENT ON COLUMN message.tb_message_channel.update_time IS '更新时间';
|
||||||
COMMENT ON COLUMN message.tb_message_channel.delete_time IS '删除时间';
|
COMMENT ON COLUMN message.tb_message_channel.delete_time IS '删除时间';
|
||||||
COMMENT ON COLUMN message.tb_message_channel.deleted IS '是否删除';
|
COMMENT ON COLUMN message.tb_message_channel.deleted IS '是否删除';
|
||||||
|
|
||||||
-- 插入默认渠道配置
|
|
||||||
INSERT INTO message.tb_message_channel (optsn, channel_id, channel_code, channel_name, channel_desc, status, priority)
|
|
||||||
VALUES
|
|
||||||
('CHANNEL_APP_001', 'CH_APP', 'app', '应用内消息', '系统内部消息推送', 'enabled', 100),
|
|
||||||
('CHANNEL_SMS_001', 'CH_SMS', 'sms', '短信通知', '手机短信推送', 'disabled', 80),
|
|
||||||
('CHANNEL_EMAIL_001', 'CH_EMAIL', 'email', '邮件通知', '电子邮件推送', 'disabled', 60),
|
|
||||||
('CHANNEL_WECHAT_001', 'CH_WECHAT', 'wechat', '微信通知', '微信公众号/企业微信推送', 'disabled', 70),
|
|
||||||
('CHANNEL_DINGTALK_001', 'CH_DINGTALK', 'dingtalk', '钉钉通知', '钉钉工作通知推送', 'disabled', 70);
|
|
||||||
@@ -20,10 +20,10 @@ CREATE TABLE sys.tb_sys_dept (
|
|||||||
description VARCHAR(255) DEFAULT NULL, -- 部门描述
|
description VARCHAR(255) DEFAULT NULL, -- 部门描述
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (dept_id),
|
PRIMARY KEY (dept_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -54,12 +54,12 @@ CREATE TABLE sys.tb_sys_role (
|
|||||||
owner_dept_id VARCHAR(50) DEFAULT NULL, -- 当scope=dept时,所属部门ID
|
owner_dept_id VARCHAR(50) DEFAULT NULL, -- 当scope=dept时,所属部门ID
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL,
|
dept_path VARCHAR(255) DEFAULT NULL,
|
||||||
status boolean NOT NULL DEFAULT false, -- 部门全路径
|
status BOOLEAN NOT NULL DEFAULT false, -- 部门全路径
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (role_id),
|
PRIMARY KEY (role_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -99,10 +99,10 @@ CREATE TABLE sys.tb_sys_dept_role (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (dept_id, role_id),
|
PRIMARY KEY (dept_id, role_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -127,10 +127,10 @@ CREATE TABLE sys.tb_sys_user_role (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (user_id, role_id),
|
PRIMARY KEY (user_id, role_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -156,17 +156,17 @@ CREATE TABLE sys.tb_sys_view (
|
|||||||
url VARCHAR(255) DEFAULT NULL, -- 视图URL
|
url VARCHAR(255) DEFAULT NULL, -- 视图URL
|
||||||
component VARCHAR(255) DEFAULT NULL, -- 视图组件
|
component VARCHAR(255) DEFAULT NULL, -- 视图组件
|
||||||
icon VARCHAR(100) DEFAULT NULL, -- 视图图标
|
icon VARCHAR(100) DEFAULT NULL, -- 视图图标
|
||||||
type integer DEFAULT 0, -- 视图类型
|
type INTEGER DEFAULT 0, -- 视图类型
|
||||||
layout VARCHAR(100) DEFAULT NULL, -- 布局组件路径名称
|
layout VARCHAR(100) DEFAULT NULL, -- 布局组件路径名称
|
||||||
order_num integer DEFAULT 0, -- 视图排序号
|
order_num INTEGER DEFAULT 0, -- 视图排序号
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
description VARCHAR(255) DEFAULT NULL, -- 视图描述
|
description VARCHAR(255) DEFAULT NULL, -- 视图描述
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (view_id),
|
PRIMARY KEY (view_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -201,10 +201,10 @@ CREATE TABLE sys.tb_sys_module (
|
|||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (module_id),
|
PRIMARY KEY (module_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -232,12 +232,12 @@ CREATE TABLE sys.tb_sys_permission (
|
|||||||
module_id VARCHAR(50) DEFAULT NULL, -- 所属模块ID
|
module_id VARCHAR(50) DEFAULT NULL, -- 所属模块ID
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL,
|
dept_path VARCHAR(255) DEFAULT NULL,
|
||||||
status boolean NOT NULL DEFAULT false, -- 部门全路径
|
status BOOLEAN NOT NULL DEFAULT false, -- 部门全路径
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (permission_id),
|
PRIMARY KEY (permission_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -266,10 +266,10 @@ CREATE TABLE sys.tb_sys_role_permission (
|
|||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (role_id, permission_id),
|
PRIMARY KEY (role_id, permission_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -294,10 +294,10 @@ CREATE TABLE sys.tb_sys_view_permission (
|
|||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (view_id, permission_id),
|
PRIMARY KEY (view_id, permission_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -393,10 +393,10 @@ CREATE TABLE sys.tb_sys_acl (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离)
|
dept_path VARCHAR(255) DEFAULT NULL, -- 部门全路径(数据隔离)
|
||||||
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
creator VARCHAR(50) DEFAULT NULL, -- 创建者
|
||||||
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
updater VARCHAR(50) DEFAULT NULL, -- 更新者
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
PRIMARY KEY (acl_id),
|
PRIMARY KEY (acl_id),
|
||||||
UNIQUE (object_type, object_id, principal_type, principal_id, principal_dept_id, deleted),
|
UNIQUE (object_type, object_id, principal_type, principal_id, principal_dept_id, deleted),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
@@ -442,10 +442,10 @@ CREATE TABLE sys.tb_sys_acl_policy (
|
|||||||
apply_to_children BOOLEAN DEFAULT true, -- 是否默认应用到子级
|
apply_to_children BOOLEAN DEFAULT true, -- 是否默认应用到子级
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
updater VARCHAR(50) DEFAULT NULL,
|
updater VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
delete_time timestamptz DEFAULT NULL,
|
delete_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted boolean NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (policy_id),
|
PRIMARY KEY (policy_id),
|
||||||
UNIQUE (object_type, deleted),
|
UNIQUE (object_type, deleted),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
|
|||||||
@@ -5,22 +5,24 @@ CREATE SCHEMA IF NOT EXISTS sys;
|
|||||||
-- 用户表
|
-- 用户表
|
||||||
DROP TABLE IF EXISTS sys.tb_sys_user CASCADE;
|
DROP TABLE IF EXISTS sys.tb_sys_user CASCADE;
|
||||||
CREATE TABLE sys.tb_sys_user (
|
CREATE TABLE sys.tb_sys_user (
|
||||||
optsn varchar(50) NOT NULL, -- 流水号
|
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||||||
user_id varchar(50) NOT NULL, -- 用户ID
|
user_id VARCHAR(50) NOT NULL, -- 用户ID
|
||||||
password varchar(128) NOT NULL, -- 密码(建议存储 bcrypt/argon2 哈希)
|
usercode VARCHAR(100) DEFAULT NULL, -- 用户code。sso同步数据获取
|
||||||
email varchar(100), -- 电子邮件
|
password VARCHAR(128) NOT NULL, -- 密码(建议存储 bcrypt/argon2 哈希)
|
||||||
phone varchar(20), -- 电话号码
|
email VARCHAR(100), -- 电子邮件
|
||||||
wechat_id varchar(50), -- 微信ID
|
phone VARCHAR(20), -- 电话号码
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间(使用带时区时间)
|
wechat_id VARCHAR(50), -- 微信ID
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(由触发器维护)
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间(使用带时区时间)
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(由触发器维护)
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除(使用 boolean)
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
status integer NOT NULL DEFAULT 1, -- 状态
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除(使用 BOOLEAN)
|
||||||
|
status INTEGER NOT NULL DEFAULT 1, -- 状态
|
||||||
PRIMARY KEY (user_id),
|
PRIMARY KEY (user_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
UNIQUE (email),
|
UNIQUE (email),
|
||||||
UNIQUE (phone),
|
UNIQUE (phone),
|
||||||
UNIQUE (wechat_id)
|
UNIQUE (wechat_id),
|
||||||
|
UNIQUE (usercode)
|
||||||
);
|
);
|
||||||
CREATE INDEX idx_tb_sys_user_phone ON sys.tb_sys_user USING btree (phone);
|
CREATE INDEX idx_tb_sys_user_phone ON sys.tb_sys_user USING btree (phone);
|
||||||
|
|
||||||
@@ -48,20 +50,19 @@ COMMENT ON COLUMN sys.tb_sys_user.status IS '状态';
|
|||||||
-- 用户信息表
|
-- 用户信息表
|
||||||
DROP TABLE IF EXISTS sys.tb_sys_user_info CASCADE;
|
DROP TABLE IF EXISTS sys.tb_sys_user_info CASCADE;
|
||||||
CREATE TABLE sys.tb_sys_user_info (
|
CREATE TABLE sys.tb_sys_user_info (
|
||||||
optsn varchar(50) NOT NULL, -- 流水号
|
optsn VARCHAR(50) NOT NULL, -- 流水号
|
||||||
user_id varchar(50) NOT NULL, -- 用户ID
|
user_id VARCHAR(50) NOT NULL, -- 用户ID
|
||||||
avatar varchar(255), -- 头像
|
avatar VARCHAR(255), -- 头像
|
||||||
gender integer DEFAULT 0, -- 性别
|
gender INTEGER DEFAULT 0, -- 性别
|
||||||
family_name varchar(50), -- 姓
|
username VARCHAR(100) NOT NULL -- 用户名
|
||||||
given_name varchar(50), -- 名
|
level INTEGER DEFAULT 1, -- 等级
|
||||||
full_name varchar(100), -- 全名
|
id_card VARCHAR(50), -- 身份证号
|
||||||
level integer DEFAULT 1, -- 等级
|
address VARCHAR(255), -- 地址
|
||||||
id_card varchar(50), -- 身份证号
|
remark VARCHAR(500) DEFAULT NULL -- 备注
|
||||||
address varchar(255), -- 地址
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
update_time TIMESTAMPTZ DEFAULT NULL, -- 更新时间(触发器维护)
|
||||||
update_time timestamptz DEFAULT NULL, -- 更新时间(触发器维护)
|
delete_time TIMESTAMPTZ DEFAULT NULL, -- 删除时间
|
||||||
delete_time timestamptz DEFAULT NULL, -- 删除时间
|
deleted BOOLEAN NOT NULL DEFAULT false, -- 是否删除
|
||||||
deleted boolean NOT NULL DEFAULT false, -- 是否删除
|
|
||||||
PRIMARY KEY (user_id),
|
PRIMARY KEY (user_id),
|
||||||
UNIQUE (optsn)
|
UNIQUE (optsn)
|
||||||
);
|
);
|
||||||
@@ -70,12 +71,11 @@ COMMENT ON COLUMN sys.tb_sys_user_info.optsn IS '流水号';
|
|||||||
COMMENT ON COLUMN sys.tb_sys_user_info.user_id IS '用户ID';
|
COMMENT ON COLUMN sys.tb_sys_user_info.user_id IS '用户ID';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.avatar IS '头像';
|
COMMENT ON COLUMN sys.tb_sys_user_info.avatar IS '头像';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.gender IS '性别';
|
COMMENT ON COLUMN sys.tb_sys_user_info.gender IS '性别';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.family_name IS '姓';
|
COMMENT ON COLUMN sys.tb_sys_user_info.username IS '用户名';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.given_name IS '名';
|
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.full_name IS '全名';
|
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.level IS '等级';
|
COMMENT ON COLUMN sys.tb_sys_user_info.level IS '等级';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.id_card IS '身份证号';
|
COMMENT ON COLUMN sys.tb_sys_user_info.id_card IS '身份证号';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.address IS '地址';
|
COMMENT ON COLUMN sys.tb_sys_user_info.address IS '地址';
|
||||||
|
COMMENT ON COLUMN sys.tb_sys_user_info.remark IS '备注';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.create_time IS '创建时间';
|
COMMENT ON COLUMN sys.tb_sys_user_info.create_time IS '创建时间';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.update_time IS '更新时间';
|
COMMENT ON COLUMN sys.tb_sys_user_info.update_time IS '更新时间';
|
||||||
COMMENT ON COLUMN sys.tb_sys_user_info.delete_time IS '删除时间';
|
COMMENT ON COLUMN sys.tb_sys_user_info.delete_time IS '删除时间';
|
||||||
@@ -84,19 +84,19 @@ COMMENT ON COLUMN sys.tb_sys_user_info.deleted IS '是否删除';
|
|||||||
-- 登录日志表
|
-- 登录日志表
|
||||||
DROP TABLE IF EXISTS sys.tb_sys_login_log CASCADE;
|
DROP TABLE IF EXISTS sys.tb_sys_login_log CASCADE;
|
||||||
CREATE TABLE sys.tb_sys_login_log (
|
CREATE TABLE sys.tb_sys_login_log (
|
||||||
optsn varchar(50) NOT NULL, -- 流水号(作为主键)
|
optsn VARCHAR(50) NOT NULL, -- 流水号(作为主键)
|
||||||
user_id varchar(50) NOT NULL, -- 用户ID
|
user_id VARCHAR(50) NOT NULL, -- 用户ID
|
||||||
username varchar(50) NOT NULL, -- 用户名
|
username VARCHAR(50) NOT NULL, -- 用户名
|
||||||
ip_address varchar(45), -- IP地址
|
ip_address VARCHAR(45), -- IP地址
|
||||||
ip_source varchar(100), -- IP来源
|
ip_source VARCHAR(100), -- IP来源
|
||||||
browser varchar(100), -- 浏览器
|
browser VARCHAR(100), -- 浏览器
|
||||||
os varchar(100), -- 操作系统
|
os VARCHAR(100), -- 操作系统
|
||||||
password varchar(128), -- 密码(建议存储 bcrypt/argon2 哈希)
|
password VARCHAR(128), -- 密码(建议存储 bcrypt/argon2 哈希)
|
||||||
login_time timestamptz DEFAULT now(), -- 登录时间
|
login_time TIMESTAMPTZ DEFAULT now(), -- 登录时间
|
||||||
status integer DEFAULT 1, -- 登录状态(0失败 1成功)
|
status INTEGER DEFAULT 1, -- 登录状态(0失败 1成功)
|
||||||
error_count integer DEFAULT 0, -- 错误次数
|
error_count INTEGER DEFAULT 0, -- 错误次数
|
||||||
message varchar(255), -- 登录消息
|
message VARCHAR(255), -- 登录消息
|
||||||
create_time timestamptz NOT NULL DEFAULT now(), -- 创建时间
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(), -- 创建时间
|
||||||
PRIMARY KEY (optsn)
|
PRIMARY KEY (optsn)
|
||||||
);
|
);
|
||||||
-- B-tree 索引(显式指定 USING btree,Postgres 默认即为 btree)
|
-- B-tree 索引(显式指定 USING btree,Postgres 默认即为 btree)
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ CREATE TABLE IF NOT EXISTS sys.tb_sys_user_dept (
|
|||||||
position VARCHAR(100),
|
position VARCHAR(100),
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
updater VARCHAR(50) DEFAULT NULL,
|
updater VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
delete_time timestamptz DEFAULT NULL,
|
delete_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (user_id, dept_id),
|
PRIMARY KEY (user_id, dept_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -148,9 +148,9 @@ CREATE TABLE IF NOT EXISTS file.tb_file_relation (
|
|||||||
order_num INTEGER DEFAULT 0,
|
order_num INTEGER DEFAULT 0,
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
updater VARCHAR(50) DEFAULT NULL,
|
updater VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
delete_time timestamptz DEFAULT NULL,
|
delete_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (relation_id),
|
PRIMARY KEY (relation_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
@@ -184,9 +184,9 @@ CREATE TABLE IF NOT EXISTS message.tb_message_template (
|
|||||||
dept_path VARCHAR(255) DEFAULT NULL,
|
dept_path VARCHAR(255) DEFAULT NULL,
|
||||||
creator VARCHAR(50) DEFAULT NULL,
|
creator VARCHAR(50) DEFAULT NULL,
|
||||||
updater VARCHAR(50) DEFAULT NULL,
|
updater VARCHAR(50) DEFAULT NULL,
|
||||||
create_time timestamptz NOT NULL DEFAULT now(),
|
create_time TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||||
update_time timestamptz DEFAULT NULL,
|
update_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
delete_time timestamptz DEFAULT NULL,
|
delete_time TIMESTAMPTZ DEFAULT NULL,
|
||||||
deleted BOOLEAN NOT NULL DEFAULT false,
|
deleted BOOLEAN NOT NULL DEFAULT false,
|
||||||
PRIMARY KEY (template_id),
|
PRIMARY KEY (template_id),
|
||||||
UNIQUE (optsn),
|
UNIQUE (optsn),
|
||||||
|
|||||||
@@ -22,22 +22,22 @@ USE `nacos_config`;
|
|||||||
/******************************************/
|
/******************************************/
|
||||||
CREATE TABLE `config_info` (
|
CREATE TABLE `config_info` (
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||||
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
|
`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
|
||||||
`group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
|
`group_id` VARCHAR(128) DEFAULT NULL COMMENT 'group_id',
|
||||||
`content` longtext NOT NULL COMMENT 'content',
|
`content` longtext NOT NULL COMMENT 'content',
|
||||||
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
|
`md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',
|
||||||
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
|
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||||
`src_user` text COMMENT 'source user',
|
`src_user` text COMMENT 'source user',
|
||||||
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
|
`src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',
|
||||||
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
|
`app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',
|
||||||
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
|
`tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',
|
||||||
`c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',
|
`c_desc` VARCHAR(256) DEFAULT NULL COMMENT 'configuration description',
|
||||||
`c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',
|
`c_use` VARCHAR(64) DEFAULT NULL COMMENT 'configuration usage',
|
||||||
`effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述',
|
`effect` VARCHAR(64) DEFAULT NULL COMMENT '配置生效的描述',
|
||||||
`type` varchar(64) DEFAULT NULL COMMENT '配置的类型',
|
`type` VARCHAR(64) DEFAULT NULL COMMENT '配置的类型',
|
||||||
`c_schema` text COMMENT '配置的模式',
|
`c_schema` text COMMENT '配置的模式',
|
||||||
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
|
`encrypted_data_key` VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '密钥',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
|
UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
|
||||||
@@ -47,19 +47,19 @@ CREATE TABLE `config_info` (
|
|||||||
/******************************************/
|
/******************************************/
|
||||||
CREATE TABLE `config_info_gray` (
|
CREATE TABLE `config_info_gray` (
|
||||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
|
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||||
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
|
`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
|
||||||
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
|
`group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',
|
||||||
`content` longtext NOT NULL COMMENT 'content',
|
`content` longtext NOT NULL COMMENT 'content',
|
||||||
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
|
`md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',
|
||||||
`src_user` text COMMENT 'src_user',
|
`src_user` text COMMENT 'src_user',
|
||||||
`src_ip` varchar(100) DEFAULT NULL COMMENT 'src_ip',
|
`src_ip` VARCHAR(100) DEFAULT NULL COMMENT 'src_ip',
|
||||||
`gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
|
`gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
|
||||||
`gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
|
`gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
|
||||||
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
|
`app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',
|
||||||
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
|
`tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',
|
||||||
`gray_name` varchar(128) NOT NULL COMMENT 'gray_name',
|
`gray_name` VARCHAR(128) NOT NULL COMMENT 'gray_name',
|
||||||
`gray_rule` text NOT NULL COMMENT 'gray_rule',
|
`gray_rule` text NOT NULL COMMENT 'gray_rule',
|
||||||
`encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
|
`encrypted_data_key` VARCHAR(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`,`group_id`,`tenant_id`,`gray_name`),
|
UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`,`group_id`,`tenant_id`,`gray_name`),
|
||||||
KEY `idx_dataid_gmt_modified` (`data_id`,`gmt_modified`),
|
KEY `idx_dataid_gmt_modified` (`data_id`,`gmt_modified`),
|
||||||
@@ -71,11 +71,11 @@ CREATE TABLE `config_info_gray` (
|
|||||||
/******************************************/
|
/******************************************/
|
||||||
CREATE TABLE `config_tags_relation` (
|
CREATE TABLE `config_tags_relation` (
|
||||||
`id` bigint(20) NOT NULL COMMENT 'id',
|
`id` bigint(20) NOT NULL COMMENT 'id',
|
||||||
`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
|
`tag_name` VARCHAR(128) NOT NULL COMMENT 'tag_name',
|
||||||
`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
|
`tag_type` VARCHAR(64) DEFAULT NULL COMMENT 'tag_type',
|
||||||
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
|
`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
|
||||||
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
|
`group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',
|
||||||
`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
|
`tenant_id` VARCHAR(128) DEFAULT '' COMMENT 'tenant_id',
|
||||||
`nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
|
`nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
|
||||||
PRIMARY KEY (`nid`),
|
PRIMARY KEY (`nid`),
|
||||||
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
|
UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
|
||||||
@@ -87,7 +87,7 @@ CREATE TABLE `config_tags_relation` (
|
|||||||
/******************************************/
|
/******************************************/
|
||||||
CREATE TABLE `group_capacity` (
|
CREATE TABLE `group_capacity` (
|
||||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||||
`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
|
`group_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
|
||||||
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
|
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
|
||||||
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
|
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
|
||||||
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
|
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
|
||||||
@@ -106,20 +106,20 @@ CREATE TABLE `group_capacity` (
|
|||||||
CREATE TABLE `his_config_info` (
|
CREATE TABLE `his_config_info` (
|
||||||
`id` bigint(20) unsigned NOT NULL COMMENT 'id',
|
`id` bigint(20) unsigned NOT NULL COMMENT 'id',
|
||||||
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
|
`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
|
||||||
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
|
`data_id` VARCHAR(255) NOT NULL COMMENT 'data_id',
|
||||||
`group_id` varchar(128) NOT NULL COMMENT 'group_id',
|
`group_id` VARCHAR(128) NOT NULL COMMENT 'group_id',
|
||||||
`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
|
`app_name` VARCHAR(128) DEFAULT NULL COMMENT 'app_name',
|
||||||
`content` longtext NOT NULL COMMENT 'content',
|
`content` longtext NOT NULL COMMENT 'content',
|
||||||
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
|
`md5` VARCHAR(32) DEFAULT NULL COMMENT 'md5',
|
||||||
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
|
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
|
||||||
`src_user` text COMMENT 'source user',
|
`src_user` text COMMENT 'source user',
|
||||||
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
|
`src_ip` VARCHAR(50) DEFAULT NULL COMMENT 'source ip',
|
||||||
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
|
`op_type` char(10) DEFAULT NULL COMMENT 'operation type',
|
||||||
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
|
`tenant_id` VARCHAR(128) DEFAULT '' COMMENT '租户字段',
|
||||||
`encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
|
`encrypted_data_key` VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '密钥',
|
||||||
`publish_type` varchar(50) DEFAULT 'formal' COMMENT 'publish type gray or formal',
|
`publish_type` VARCHAR(50) DEFAULT 'formal' COMMENT 'publish type gray or formal',
|
||||||
`gray_name` varchar(50) DEFAULT NULL COMMENT 'gray name',
|
`gray_name` VARCHAR(50) DEFAULT NULL COMMENT 'gray name',
|
||||||
`ext_info` longtext DEFAULT NULL COMMENT 'ext info',
|
`ext_info` longtext DEFAULT NULL COMMENT 'ext info',
|
||||||
PRIMARY KEY (`nid`),
|
PRIMARY KEY (`nid`),
|
||||||
KEY `idx_gmt_create` (`gmt_create`),
|
KEY `idx_gmt_create` (`gmt_create`),
|
||||||
@@ -133,7 +133,7 @@ CREATE TABLE `his_config_info` (
|
|||||||
/******************************************/
|
/******************************************/
|
||||||
CREATE TABLE `tenant_capacity` (
|
CREATE TABLE `tenant_capacity` (
|
||||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
|
||||||
`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
|
`tenant_id` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
|
||||||
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
|
`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
|
||||||
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
|
`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
|
||||||
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
|
`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
|
||||||
@@ -149,11 +149,11 @@ CREATE TABLE `tenant_capacity` (
|
|||||||
|
|
||||||
CREATE TABLE `tenant_info` (
|
CREATE TABLE `tenant_info` (
|
||||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||||||
`kp` varchar(128) NOT NULL COMMENT 'kp',
|
`kp` VARCHAR(128) NOT NULL COMMENT 'kp',
|
||||||
`tenant_id` varchar(128) default '' COMMENT 'tenant_id',
|
`tenant_id` VARCHAR(128) default '' COMMENT 'tenant_id',
|
||||||
`tenant_name` varchar(128) default '' COMMENT 'tenant_name',
|
`tenant_name` VARCHAR(128) default '' COMMENT 'tenant_name',
|
||||||
`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
|
`tenant_desc` VARCHAR(256) DEFAULT NULL COMMENT 'tenant_desc',
|
||||||
`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
|
`create_source` VARCHAR(32) DEFAULT NULL COMMENT 'create_source',
|
||||||
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
|
`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
|
||||||
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
|
`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
@@ -162,21 +162,21 @@ CREATE TABLE `tenant_info` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
|
||||||
|
|
||||||
CREATE TABLE `users` (
|
CREATE TABLE `users` (
|
||||||
`username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username',
|
`username` VARCHAR(50) NOT NULL PRIMARY KEY COMMENT 'username',
|
||||||
`password` varchar(500) NOT NULL COMMENT 'password',
|
`password` VARCHAR(500) NOT NULL COMMENT 'password',
|
||||||
`enabled` boolean NOT NULL COMMENT 'enabled'
|
`enabled` BOOLEAN NOT NULL COMMENT 'enabled'
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE `roles` (
|
CREATE TABLE `roles` (
|
||||||
`username` varchar(50) NOT NULL COMMENT 'username',
|
`username` VARCHAR(50) NOT NULL COMMENT 'username',
|
||||||
`role` varchar(50) NOT NULL COMMENT 'role',
|
`role` VARCHAR(50) NOT NULL COMMENT 'role',
|
||||||
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
|
UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE `permissions` (
|
CREATE TABLE `permissions` (
|
||||||
`role` varchar(50) NOT NULL COMMENT 'role',
|
`role` VARCHAR(50) NOT NULL COMMENT 'role',
|
||||||
`resource` varchar(128) NOT NULL COMMENT 'resource',
|
`resource` VARCHAR(128) NOT NULL COMMENT 'resource',
|
||||||
`action` varchar(8) NOT NULL COMMENT 'action',
|
`action` VARCHAR(8) NOT NULL COMMENT 'action',
|
||||||
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
|
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@
|
|||||||
" </select>",
|
" </select>",
|
||||||
"",
|
"",
|
||||||
" <!-- 根据条件查询${9:实体名称}数量 -->",
|
" <!-- 根据条件查询${9:实体名称}数量 -->",
|
||||||
" <select id=\"get${3:EntityName}CountByFilter\" resultType=\"java.lang.Integer\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
|
" <select id=\"get${3:EntityName}CountByFilter\" resultType=\"java.lang.INTEGER\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
|
||||||
" SELECT COUNT(1)",
|
" SELECT COUNT(1)",
|
||||||
" FROM ${10:tb_entity_name}",
|
" FROM ${10:tb_entity_name}",
|
||||||
" <where>",
|
" <where>",
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
"prefix": "mybatis-select-count",
|
"prefix": "mybatis-select-count",
|
||||||
"body": [
|
"body": [
|
||||||
" <!-- 根据条件查询${1:实体名称}数量 -->",
|
" <!-- 根据条件查询${1:实体名称}数量 -->",
|
||||||
" <select id=\"get${2:EntityName}CountByFilter\" resultType=\"java.lang.Integer\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
|
" <select id=\"get${2:EntityName}CountByFilter\" resultType=\"java.lang.INTEGER\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
|
||||||
" SELECT COUNT(1)",
|
" SELECT COUNT(1)",
|
||||||
" FROM ${4:tb_entity_name}",
|
" FROM ${4:tb_entity_name}",
|
||||||
" <where>",
|
" <where>",
|
||||||
|
|||||||
@@ -64,11 +64,11 @@ public interface AuthService {
|
|||||||
/**
|
/**
|
||||||
* @description 简单校验 token 是否有效(用于快速判断是否已登录)
|
* @description 简单校验 token 是否有效(用于快速判断是否已登录)
|
||||||
* @param token 鉴权 token
|
* @param token 鉴权 token
|
||||||
* @return ResultDomain<Boolean> true 表示有效/已登录,false 表示无效/未登录
|
* @return ResultDomain<BOOLEAN> true 表示有效/已登录,false 表示无效/未登录
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-03
|
* @since 2025-11-03
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> isTokenValid(String token);
|
ResultDomain<BOOLEAN> isTokenValid(String token);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public interface FileService {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-03
|
* @since 2025-11-03
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteFile(String fileId);
|
ResultDomain<BOOLEAN> deleteFile(String fileId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 批量删除文件(逻辑删除)
|
* @description 批量删除文件(逻辑删除)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class TbSysLogDTO extends BaseDTO {
|
|||||||
private String logId;
|
private String logId;
|
||||||
|
|
||||||
@Schema(description = "日志类型")
|
@Schema(description = "日志类型")
|
||||||
private Integer type;
|
private INTEGER type;
|
||||||
|
|
||||||
@Schema(description = "日志级别")
|
@Schema(description = "日志级别")
|
||||||
private String level;
|
private String level;
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ public class TbSysLoginLogDTO extends BaseDTO {
|
|||||||
private Date loginTime;
|
private Date loginTime;
|
||||||
|
|
||||||
@Schema(description = "状态")
|
@Schema(description = "状态")
|
||||||
private Integer status;
|
private INTEGER status;
|
||||||
|
|
||||||
@Schema(description = "错误次数")
|
@Schema(description = "错误次数")
|
||||||
private Integer errorCount;
|
private INTEGER errorCount;
|
||||||
|
|
||||||
@Schema(description = "消息")
|
@Schema(description = "消息")
|
||||||
private String message;
|
private String message;
|
||||||
|
|||||||
@@ -38,6 +38,6 @@ public class TbMessageChannelDTO extends BaseDTO {
|
|||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
@Schema(description = "优先级(数字越大优先级越高)")
|
@Schema(description = "优先级(数字越大优先级越高)")
|
||||||
private Integer priority;
|
private INTEGER priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ public interface MessageService {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteMessage(String messageId);
|
ResultDomain<BOOLEAN> deleteMessage(String messageId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 发送消息
|
* @description 发送消息
|
||||||
|
|||||||
@@ -44,5 +44,5 @@ public class MessageRangeChannelVO extends BaseVO {
|
|||||||
private String channelStatus;
|
private String channelStatus;
|
||||||
|
|
||||||
@Schema(description = "渠道优先级(数字越大优先级越高)")
|
@Schema(description = "渠道优先级(数字越大优先级越高)")
|
||||||
private Integer channelPriority;
|
private INTEGER channelPriority;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,11 +39,11 @@ public interface DeptRoleService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除部门
|
* @description 根据ID删除部门
|
||||||
* @param deptDTO 部门DTO
|
* @param deptDTO 部门DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteDept(TbSysDeptDTO deptDTO);
|
ResultDomain<BOOLEAN> deleteDept(TbSysDeptDTO deptDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据ID查询部门
|
* @description 根据ID查询部门
|
||||||
@@ -103,11 +103,11 @@ public interface DeptRoleService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除角色
|
* @description 根据ID删除角色
|
||||||
* @param roleDTO 角色DTO
|
* @param roleDTO 角色DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteRole(TbSysRoleDTO roleDTO);
|
ResultDomain<BOOLEAN> deleteRole(TbSysRoleDTO roleDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据ID查询角色
|
* @description 根据ID查询角色
|
||||||
@@ -176,11 +176,11 @@ public interface DeptRoleService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除部门角色关联
|
* @description 根据ID删除部门角色关联
|
||||||
* @param deptRoleDTO 部门角色DTO
|
* @param deptRoleDTO 部门角色DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteDeptRole(TbSysDeptRoleDTO deptRoleDTO);
|
ResultDomain<BOOLEAN> deleteDeptRole(TbSysDeptRoleDTO deptRoleDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据ID查询部门角色关联
|
* @description 根据ID查询部门角色关联
|
||||||
|
|||||||
@@ -38,11 +38,11 @@ public interface ModulePermissionService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除模块
|
* @description 根据ID删除模块
|
||||||
* @param moduleDTO 模块DTO
|
* @param moduleDTO 模块DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteModule(TbSysModuleDTO moduleDTO);
|
ResultDomain<BOOLEAN> deleteModule(TbSysModuleDTO moduleDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 获取模块分页数据
|
* @description 获取模块分页数据
|
||||||
@@ -84,11 +84,11 @@ public interface ModulePermissionService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除权限
|
* @description 根据ID删除权限
|
||||||
* @param permissionDTO 权限DTO
|
* @param permissionDTO 权限DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deletePermission(TbSysPermissionDTO permissionDTO);
|
ResultDomain<BOOLEAN> deletePermission(TbSysPermissionDTO permissionDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据模块ID获取权限列表
|
* @description 根据模块ID获取权限列表
|
||||||
|
|||||||
@@ -35,11 +35,11 @@ public interface SysConfigService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除系统配置
|
* @description 根据ID删除系统配置
|
||||||
* @param configDTO 系统配置DTO
|
* @param configDTO 系统配置DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteConfig(TbSysConfigDTO configDTO);
|
ResultDomain<BOOLEAN> deleteConfig(TbSysConfigDTO configDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据ID查询系统配置
|
* @description 根据ID查询系统配置
|
||||||
|
|||||||
@@ -39,11 +39,11 @@ public interface SysUserService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除用户
|
* @description 根据ID删除用户
|
||||||
* @param TbSysUserDTO userDTO 用户DTO
|
* @param TbSysUserDTO userDTO 用户DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteUser(TbSysUserDTO userDTO);
|
ResultDomain<BOOLEAN> deleteUser(TbSysUserDTO userDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据ID查询用户
|
* @description 根据ID查询用户
|
||||||
@@ -95,11 +95,11 @@ public interface SysUserService {
|
|||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @param oldPassword 旧密码
|
* @param oldPassword 旧密码
|
||||||
* @param newPassword 新密码
|
* @param newPassword 新密码
|
||||||
* @return ResultDomain<Boolean> 更新结果
|
* @return ResultDomain<BOOLEAN> 更新结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> updateUserPassword(String userId, String oldPassword, String newPassword);
|
ResultDomain<BOOLEAN> updateUserPassword(String userId, String oldPassword, String newPassword);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 重置用户密码
|
* @description 重置用户密码
|
||||||
@@ -114,11 +114,11 @@ public interface SysUserService {
|
|||||||
* @description 更新用户状态
|
* @description 更新用户状态
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @param status 状态
|
* @param status 状态
|
||||||
* @return ResultDomain<Boolean> 更新结果
|
* @return ResultDomain<BOOLEAN> 更新结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> updateUserStatus(String userId, String status);
|
ResultDomain<BOOLEAN> updateUserStatus(String userId, String status);
|
||||||
|
|
||||||
// ================= 用户详细信息管理 =================
|
// ================= 用户详细信息管理 =================
|
||||||
/**
|
/**
|
||||||
@@ -152,21 +152,21 @@ public interface SysUserService {
|
|||||||
/**
|
/**
|
||||||
* @description 删除用户角色关联
|
* @description 删除用户角色关联
|
||||||
* @param userRoleDTO 用户角色DTO
|
* @param userRoleDTO 用户角色DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> removeUserRole(TbSysUserRoleDTO userRoleDTO);
|
ResultDomain<BOOLEAN> removeUserRole(TbSysUserRoleDTO userRoleDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 批量设置用户角色
|
* @description 批量设置用户角色
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @param[] roleIds 角色ID数组
|
* @param[] roleIds 角色ID数组
|
||||||
* @return ResultDomain<Boolean> 设置结果
|
* @return ResultDomain<BOOLEAN> 设置结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> setUserRoles(String userId, String[] roleIds);
|
ResultDomain<BOOLEAN> setUserRoles(String userId, String[] roleIds);
|
||||||
|
|
||||||
// ================= 用户完整信息查询 =================
|
// ================= 用户完整信息查询 =================
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -36,11 +36,11 @@ public interface ViewService {
|
|||||||
/**
|
/**
|
||||||
* @description 根据ID删除视图
|
* @description 根据ID删除视图
|
||||||
* @param viewDTO 视图DTO
|
* @param viewDTO 视图DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-05
|
* @since 2025-11-05
|
||||||
*/
|
*/
|
||||||
ResultDomain<Boolean> deleteView(TbSysViewDTO viewDTO);
|
ResultDomain<BOOLEAN> deleteView(TbSysViewDTO viewDTO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 根据ID查询视图
|
* @description 根据ID查询视图
|
||||||
|
|||||||
@@ -36,13 +36,13 @@ public class AclVO extends BaseVO {
|
|||||||
private String principalDeptId;
|
private String principalDeptId;
|
||||||
|
|
||||||
@Schema(description = "权限位:1读 2写 4执行")
|
@Schema(description = "权限位:1读 2写 4执行")
|
||||||
private Integer permission;
|
private INTEGER permission;
|
||||||
|
|
||||||
@Schema(description = "允许或显式拒绝", defaultValue = "true")
|
@Schema(description = "允许或显式拒绝", defaultValue = "true")
|
||||||
private Boolean allow = true;
|
private BOOLEAN allow = true;
|
||||||
|
|
||||||
@Schema(description = "是否包含子级(对dept/role生效)", defaultValue = "false")
|
@Schema(description = "是否包含子级(对dept/role生效)", defaultValue = "false")
|
||||||
private Boolean includeDescendants = false;
|
private BOOLEAN includeDescendants = false;
|
||||||
|
|
||||||
// TbSysAclPolicyDTO对应字段
|
// TbSysAclPolicyDTO对应字段
|
||||||
@Schema(description = "策略ID")
|
@Schema(description = "策略ID")
|
||||||
@@ -61,11 +61,11 @@ public class AclVO extends BaseVO {
|
|||||||
private String viewHierarchyRule;
|
private String viewHierarchyRule;
|
||||||
|
|
||||||
@Schema(description = "默认权限(无显式ACL时应用)", defaultValue = "0")
|
@Schema(description = "默认权限(无显式ACL时应用)", defaultValue = "0")
|
||||||
private Integer defaultPermission = 0;
|
private INTEGER defaultPermission = 0;
|
||||||
|
|
||||||
@Schema(description = "默认是否允许", defaultValue = "true")
|
@Schema(description = "默认是否允许", defaultValue = "true")
|
||||||
private boolean defaultAllow = true;
|
private BOOLEAN defaultAllow = true;
|
||||||
|
|
||||||
@Schema(description = "是否默认应用到子级", defaultValue = "true")
|
@Schema(description = "是否默认应用到子级", defaultValue = "true")
|
||||||
private boolean applyToChildren = true;
|
private BOOLEAN applyToChildren = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class PermissionVO extends BaseVO {
|
|||||||
private String roleOwnerDeptId;
|
private String roleOwnerDeptId;
|
||||||
|
|
||||||
@Schema(description = "角色状态")
|
@Schema(description = "角色状态")
|
||||||
private boolean roleStatus;
|
private BOOLEAN roleStatus;
|
||||||
|
|
||||||
// TbSysModuleDTO对应字段
|
// TbSysModuleDTO对应字段
|
||||||
@Schema(description = "模块ID")
|
@Schema(description = "模块ID")
|
||||||
@@ -99,13 +99,13 @@ public class PermissionVO extends BaseVO {
|
|||||||
private String viewIcon;
|
private String viewIcon;
|
||||||
|
|
||||||
@Schema(description = "类型")
|
@Schema(description = "类型")
|
||||||
private Integer viewType;
|
private INTEGER viewType;
|
||||||
|
|
||||||
@Schema(description = "布局")
|
@Schema(description = "布局")
|
||||||
private String viewLayout;
|
private String viewLayout;
|
||||||
|
|
||||||
@Schema(description = "排序")
|
@Schema(description = "排序")
|
||||||
private Integer viewOrderNum;
|
private INTEGER viewOrderNum;
|
||||||
|
|
||||||
@Schema(description = "视图描述")
|
@Schema(description = "视图描述")
|
||||||
private String viewDescription;
|
private String viewDescription;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ public class SysConfigVO extends BaseVO {
|
|||||||
@Schema(description = "配置值")
|
@Schema(description = "配置值")
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
@Schema(description = "数据类型(String, Integer, Boolean, Float, Double)")
|
@Schema(description = "数据类型(String, INTEGER, BOOLEAN, Float, Double)")
|
||||||
private String configType;
|
private String configType;
|
||||||
|
|
||||||
@Schema(description = "配置渲染类型(select, input, textarea, checkbox, radio, switch)")
|
@Schema(description = "配置渲染类型(select, input, textarea, checkbox, radio, switch)")
|
||||||
@@ -60,10 +60,10 @@ public class SysConfigVO extends BaseVO {
|
|||||||
private String moduleDescription;
|
private String moduleDescription;
|
||||||
|
|
||||||
@Schema(description = "配置顺序")
|
@Schema(description = "配置顺序")
|
||||||
private Integer orderNum;
|
private INTEGER orderNum;
|
||||||
|
|
||||||
@Schema(description = "状态")
|
@Schema(description = "状态")
|
||||||
private Integer status;
|
private INTEGER status;
|
||||||
|
|
||||||
public static TbSysConfigDTO toDTO(SysConfigVO vo) {
|
public static TbSysConfigDTO toDTO(SysConfigVO vo) {
|
||||||
if (vo == null) {
|
if (vo == null) {
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class SysUserVO extends BaseVO {
|
|||||||
private String avatar;
|
private String avatar;
|
||||||
|
|
||||||
@Schema(description = "性别")
|
@Schema(description = "性别")
|
||||||
private Integer gender;
|
private INTEGER gender;
|
||||||
|
|
||||||
@Schema(description = "姓")
|
@Schema(description = "姓")
|
||||||
private String familyName;
|
private String familyName;
|
||||||
@@ -63,7 +63,7 @@ public class SysUserVO extends BaseVO {
|
|||||||
private String fullName;
|
private String fullName;
|
||||||
|
|
||||||
@Schema(description = "等级")
|
@Schema(description = "等级")
|
||||||
private Integer level;
|
private INTEGER level;
|
||||||
|
|
||||||
@Schema(description = "身份证号")
|
@Schema(description = "身份证号")
|
||||||
private String idCard;
|
private String idCard;
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class UserDeptRoleVO extends BaseVO {
|
|||||||
private String avatar;
|
private String avatar;
|
||||||
|
|
||||||
@Schema(description = "性别")
|
@Schema(description = "性别")
|
||||||
private Integer gender;
|
private INTEGER gender;
|
||||||
|
|
||||||
@Schema(description = "姓")
|
@Schema(description = "姓")
|
||||||
private String familyName;
|
private String familyName;
|
||||||
@@ -62,7 +62,7 @@ public class UserDeptRoleVO extends BaseVO {
|
|||||||
private String fullName;
|
private String fullName;
|
||||||
|
|
||||||
@Schema(description = "等级")
|
@Schema(description = "等级")
|
||||||
private Integer level;
|
private INTEGER level;
|
||||||
|
|
||||||
@Schema(description = "身份证号")
|
@Schema(description = "身份证号")
|
||||||
private String idCard;
|
private String idCard;
|
||||||
@@ -100,7 +100,7 @@ public class UserDeptRoleVO extends BaseVO {
|
|||||||
private String ownerDeptId;
|
private String ownerDeptId;
|
||||||
|
|
||||||
@Schema(description = "角色状态")
|
@Schema(description = "角色状态")
|
||||||
private boolean roleStatus;
|
private BOOLEAN roleStatus;
|
||||||
|
|
||||||
|
|
||||||
public static TbSysDeptDTO toDeptDTO(UserDeptRoleVO vo) {
|
public static TbSysDeptDTO toDeptDTO(UserDeptRoleVO vo) {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class AuthServiceImpl implements AuthService{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> isTokenValid(String arg0) {
|
public ResultDomain<BOOLEAN> isTokenValid(String arg0) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ public @interface HttpLogin {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 是否必需,默认为true
|
* @description 是否必需,默认为true
|
||||||
* @return boolean
|
* @return BOOLEAN
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
boolean required() default true;
|
BOOLEAN required() default true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 当token无效时的错误消息
|
* @description 当token无效时的错误消息
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public class HttpLoginArgumentResolver implements HandlerMethodArgumentResolver
|
|||||||
private static final String REDIS_LOGIN_PREFIX = "login:token:";
|
private static final String REDIS_LOGIN_PREFIX = "login:token:";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsParameter(MethodParameter parameter) {
|
public BOOLEAN supportsParameter(MethodParameter parameter) {
|
||||||
return parameter.hasParameterAnnotation(HttpLogin.class)
|
return parameter.hasParameterAnnotation(HttpLogin.class)
|
||||||
&& LoginDomain.class.isAssignableFrom(parameter.getParameterType());
|
&& LoginDomain.class.isAssignableFrom(parameter.getParameterType());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class AuthProperties {
|
|||||||
* 是否启用认证过滤器
|
* 是否启用认证过滤器
|
||||||
* 默认启用
|
* 默认启用
|
||||||
*/
|
*/
|
||||||
private boolean enabled = true;
|
private BOOLEAN enabled = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 登录接口路径
|
* 登录接口路径
|
||||||
@@ -72,11 +72,11 @@ public class AuthProperties {
|
|||||||
whitelist.add("/error");
|
whitelist.add("/error");
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEnabled() {
|
public BOOLEAN isEnabled() {
|
||||||
return enabled;
|
return enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
public void setEnabled(BOOLEAN enabled) {
|
||||||
this.enabled = enabled;
|
this.enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
|||||||
/**
|
/**
|
||||||
* 检查路径是否在白名单中
|
* 检查路径是否在白名单中
|
||||||
*/
|
*/
|
||||||
private boolean isWhitelisted(@NonNull String path) {
|
private BOOLEAN isWhitelisted(@NonNull String path) {
|
||||||
// 1. 先检查认证相关接口(login / logout / captcha / refresh)
|
// 1. 先检查认证相关接口(login / logout / captcha / refresh)
|
||||||
if (authProperties.getAuthPaths() != null) {
|
if (authProperties.getAuthPaths() != null) {
|
||||||
for (String pattern : authProperties.getAuthPaths()) {
|
for (String pattern : authProperties.getAuthPaths()) {
|
||||||
|
|||||||
@@ -34,12 +34,12 @@ public class JwtTokenParser implements TokenParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validateToken(String token, String userId) {
|
public BOOLEAN validateToken(String token, String userId) {
|
||||||
return jwtTokenUtil.validateToken(token, userId);
|
return jwtTokenUtil.validateToken(token, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTokenExpired(String token) {
|
public BOOLEAN isTokenExpired(String token) {
|
||||||
return jwtTokenUtil.isTokenExpired(token);
|
return jwtTokenUtil.isTokenExpired(token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,19 +33,19 @@ public interface TokenParser {
|
|||||||
* @description 验证令牌
|
* @description 验证令牌
|
||||||
* @param token 令牌
|
* @param token 令牌
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return boolean 是否有效
|
* @return BOOLEAN 是否有效
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
boolean validateToken(String token, String userId);
|
BOOLEAN validateToken(String token, String userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 检查令牌是否过期
|
* @description 检查令牌是否过期
|
||||||
* @param token 令牌
|
* @param token 令牌
|
||||||
* @return boolean 是否过期
|
* @return BOOLEAN 是否过期
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
boolean isTokenExpired(String token);
|
BOOLEAN isTokenExpired(String token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -114,11 +114,11 @@ public class JwtTokenUtil {
|
|||||||
* @description 验证令牌
|
* @description 验证令牌
|
||||||
* @param token JWT令牌
|
* @param token JWT令牌
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
* @return boolean 是否有效
|
* @return BOOLEAN 是否有效
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-07
|
* @since 2025-11-07
|
||||||
*/
|
*/
|
||||||
public boolean validateToken(String token, String userId) {
|
public BOOLEAN validateToken(String token, String userId) {
|
||||||
try {
|
try {
|
||||||
final String tokenUserId = getUserIdFromToken(token);
|
final String tokenUserId = getUserIdFromToken(token);
|
||||||
return (userId.equals(tokenUserId) && !isTokenExpired(token));
|
return (userId.equals(tokenUserId) && !isTokenExpired(token));
|
||||||
@@ -130,11 +130,11 @@ public class JwtTokenUtil {
|
|||||||
/**
|
/**
|
||||||
* @description 检查令牌是否过期
|
* @description 检查令牌是否过期
|
||||||
* @param token JWT令牌
|
* @param token JWT令牌
|
||||||
* @return boolean 是否过期
|
* @return BOOLEAN 是否过期
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-07
|
* @since 2025-11-07
|
||||||
*/
|
*/
|
||||||
public boolean isTokenExpired(String token) {
|
public BOOLEAN isTokenExpired(String token) {
|
||||||
final Date expiration = getExpirationDateFromToken(token);
|
final Date expiration = getExpirationDateFromToken(token);
|
||||||
return expiration.before(new Date());
|
return expiration.before(new Date());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class LoginParam implements Serializable {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
private Boolean rememberMe;
|
private BOOLEAN rememberMe;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ import lombok.Data;
|
|||||||
public class ResultDomain<T> implements Serializable {
|
public class ResultDomain<T> implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private Integer code;
|
private INTEGER code;
|
||||||
private boolean success;
|
private BOOLEAN success;
|
||||||
private String message;
|
private String message;
|
||||||
private T data;
|
private T data;
|
||||||
private List<T> dataList;
|
private List<T> dataList;
|
||||||
|
|||||||
@@ -40,5 +40,5 @@ public class BaseDTO implements Serializable {
|
|||||||
private Date deleteTime;
|
private Date deleteTime;
|
||||||
|
|
||||||
@Schema(description = "是否已删除", defaultValue = "false")
|
@Schema(description = "是否已删除", defaultValue = "false")
|
||||||
private Boolean deleted = false;
|
private BOOLEAN deleted = false;
|
||||||
}
|
}
|
||||||
@@ -35,11 +35,11 @@ public class TbSysAclDTO extends BaseDTO {
|
|||||||
private String principalDeptId;
|
private String principalDeptId;
|
||||||
|
|
||||||
@Schema(description = "权限位:1读 2写 4执行")
|
@Schema(description = "权限位:1读 2写 4执行")
|
||||||
private Integer permission;
|
private INTEGER permission;
|
||||||
|
|
||||||
@Schema(description = "允许或显式拒绝", defaultValue = "true")
|
@Schema(description = "允许或显式拒绝", defaultValue = "true")
|
||||||
private Boolean allow = true;
|
private BOOLEAN allow = true;
|
||||||
|
|
||||||
@Schema(description = "是否包含子级(对dept/role生效)", defaultValue = "false")
|
@Schema(description = "是否包含子级(对dept/role生效)", defaultValue = "false")
|
||||||
private Boolean includeDescendants = false;
|
private BOOLEAN includeDescendants = false;
|
||||||
}
|
}
|
||||||
@@ -33,11 +33,11 @@ public class TbSysAclPolicyDTO extends BaseDTO {
|
|||||||
private String viewHierarchyRule;
|
private String viewHierarchyRule;
|
||||||
|
|
||||||
@Schema(description = "默认权限(无显式ACL时应用)", defaultValue = "0")
|
@Schema(description = "默认权限(无显式ACL时应用)", defaultValue = "0")
|
||||||
private Integer defaultPermission=0;
|
private INTEGER defaultPermission=0;
|
||||||
|
|
||||||
@Schema(description = "默认是否允许", defaultValue = "true")
|
@Schema(description = "默认是否允许", defaultValue = "true")
|
||||||
private boolean defaultAllow=true;
|
private BOOLEAN defaultAllow=true;
|
||||||
|
|
||||||
@Schema(description = "是否默认应用到子级", defaultValue = "true")
|
@Schema(description = "是否默认应用到子级", defaultValue = "true")
|
||||||
private boolean applyToChildren=true;
|
private BOOLEAN applyToChildren=true;
|
||||||
}
|
}
|
||||||
@@ -31,7 +31,7 @@ public class TbSysConfigDTO extends BaseDTO {
|
|||||||
@Schema(description = "配置值")
|
@Schema(description = "配置值")
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
@Schema(description = "数据类型(String, Integer, Boolean, Float, Double)")
|
@Schema(description = "数据类型(String, INTEGER, BOOLEAN, Float, Double)")
|
||||||
private String configType;
|
private String configType;
|
||||||
|
|
||||||
@Schema(description = "配置渲染类型(select, input, textarea, checkbox, radio, switch)")
|
@Schema(description = "配置渲染类型(select, input, textarea, checkbox, radio, switch)")
|
||||||
@@ -53,9 +53,9 @@ public class TbSysConfigDTO extends BaseDTO {
|
|||||||
private String moduleId;
|
private String moduleId;
|
||||||
|
|
||||||
@Schema(description = "配置顺序")
|
@Schema(description = "配置顺序")
|
||||||
private Integer orderNum;
|
private INTEGER orderNum;
|
||||||
|
|
||||||
@Schema(description = "配置状态 0:启用 1:禁用", defaultValue = "0")
|
@Schema(description = "配置状态 0:启用 1:禁用", defaultValue = "0")
|
||||||
private Integer status = 0;
|
private INTEGER status = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -33,5 +33,5 @@ public class TbSysRoleDTO extends BaseDTO {
|
|||||||
private String ownerDeptId;
|
private String ownerDeptId;
|
||||||
|
|
||||||
@Schema(description = "角色状态 true 有效, false 无效")
|
@Schema(description = "角色状态 true 有效, false 无效")
|
||||||
private boolean status;
|
private BOOLEAN status;
|
||||||
}
|
}
|
||||||
@@ -24,7 +24,7 @@ public class TbSysUserInfoDTO extends BaseDTO {
|
|||||||
private String avatar;
|
private String avatar;
|
||||||
|
|
||||||
@Schema(description = "性别")
|
@Schema(description = "性别")
|
||||||
private Integer gender;
|
private INTEGER gender;
|
||||||
|
|
||||||
@Schema(description = "姓")
|
@Schema(description = "姓")
|
||||||
private String familyName;
|
private String familyName;
|
||||||
@@ -36,7 +36,7 @@ public class TbSysUserInfoDTO extends BaseDTO {
|
|||||||
private String fullName;
|
private String fullName;
|
||||||
|
|
||||||
@Schema(description = "等级")
|
@Schema(description = "等级")
|
||||||
private Integer level;
|
private INTEGER level;
|
||||||
|
|
||||||
@Schema(description = "身份证号")
|
@Schema(description = "身份证号")
|
||||||
private String idCard;
|
private String idCard;
|
||||||
|
|||||||
@@ -37,13 +37,13 @@ public class TbSysViewDTO extends BaseDTO {
|
|||||||
private String icon;
|
private String icon;
|
||||||
|
|
||||||
@Schema(description = "类型")
|
@Schema(description = "类型")
|
||||||
private Integer type;
|
private INTEGER type;
|
||||||
|
|
||||||
@Schema(description = "布局")
|
@Schema(description = "布局")
|
||||||
private String layout;
|
private String layout;
|
||||||
|
|
||||||
@Schema(description = "排序")
|
@Schema(description = "排序")
|
||||||
private Integer orderNum;
|
private INTEGER orderNum;
|
||||||
|
|
||||||
@Schema(description = "描述")
|
@Schema(description = "描述")
|
||||||
private String description;
|
private String description;
|
||||||
|
|||||||
@@ -47,6 +47,6 @@ public class BaseVO implements Serializable {
|
|||||||
private Date deleteTime;
|
private Date deleteTime;
|
||||||
|
|
||||||
@Schema(description = "是否已删除", defaultValue = "false")
|
@Schema(description = "是否已删除", defaultValue = "false")
|
||||||
private Boolean deleted = false;
|
private BOOLEAN deleted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,11 +79,11 @@ public class RedisService {
|
|||||||
/**
|
/**
|
||||||
* @description 判断key是否存在
|
* @description 判断key是否存在
|
||||||
* @param key String 键
|
* @param key String 键
|
||||||
* @return boolean 是否存在
|
* @return BOOLEAN 是否存在
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public boolean hasKey(String key) {
|
public BOOLEAN hasKey(String key) {
|
||||||
return redisTemplate.hasKey(key);
|
return redisTemplate.hasKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class NonUtils {
|
|||||||
* @param obj 待判断的对象
|
* @param obj 待判断的对象
|
||||||
* @return true-对象为null,false-对象不为null
|
* @return true-对象为null,false-对象不为null
|
||||||
*/
|
*/
|
||||||
public static boolean isNull(Object obj) {
|
public static BOOLEAN isNull(Object obj) {
|
||||||
return obj == null;
|
return obj == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ public class NonUtils {
|
|||||||
* @param obj 待判断的对象
|
* @param obj 待判断的对象
|
||||||
* @return true-对象不为null,false-对象为null
|
* @return true-对象不为null,false-对象为null
|
||||||
*/
|
*/
|
||||||
public static boolean isNotNull(Object obj) {
|
public static BOOLEAN isNotNull(Object obj) {
|
||||||
return obj != null;
|
return obj != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ public class NonUtils {
|
|||||||
* @param objects 待判断的对象数组
|
* @param objects 待判断的对象数组
|
||||||
* @return true-所有对象都为null,false-至少有一个对象不为null
|
* @return true-所有对象都为null,false-至少有一个对象不为null
|
||||||
*/
|
*/
|
||||||
public static boolean isAllNull(Object... objects) {
|
public static BOOLEAN isAllNull(Object... objects) {
|
||||||
if (objects == null || objects.length == 0) {
|
if (objects == null || objects.length == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -63,7 +63,7 @@ public class NonUtils {
|
|||||||
* @param objects 待判断的对象数组
|
* @param objects 待判断的对象数组
|
||||||
* @return true-所有对象都不为null,false-至少有一个对象为null
|
* @return true-所有对象都不为null,false-至少有一个对象为null
|
||||||
*/
|
*/
|
||||||
public static boolean isAllNotNull(Object... objects) {
|
public static BOOLEAN isAllNotNull(Object... objects) {
|
||||||
if (objects == null || objects.length == 0) {
|
if (objects == null || objects.length == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ public class NonUtils {
|
|||||||
* @param objects 待判断的对象数组
|
* @param objects 待判断的对象数组
|
||||||
* @return true-存在null对象,false-不存在null对象
|
* @return true-存在null对象,false-不存在null对象
|
||||||
*/
|
*/
|
||||||
public static boolean hasNull(Object... objects) {
|
public static BOOLEAN hasNull(Object... objects) {
|
||||||
if (objects == null || objects.length == 0) {
|
if (objects == null || objects.length == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -106,7 +106,7 @@ public class NonUtils {
|
|||||||
* @param obj 待判断的对象
|
* @param obj 待判断的对象
|
||||||
* @return true-对象为空,false-对象不为空
|
* @return true-对象为空,false-对象不为空
|
||||||
*/
|
*/
|
||||||
public static boolean isEmpty(Object obj) {
|
public static BOOLEAN isEmpty(Object obj) {
|
||||||
if (isNull(obj)) {
|
if (isNull(obj)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ public class NonUtils {
|
|||||||
* @param obj 待判断的对象
|
* @param obj 待判断的对象
|
||||||
* @return true-对象不为空,false-对象为空
|
* @return true-对象不为空,false-对象为空
|
||||||
*/
|
*/
|
||||||
public static boolean isNotEmpty(Object obj) {
|
public static BOOLEAN isNotEmpty(Object obj) {
|
||||||
return !isEmpty(obj);
|
return !isEmpty(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +155,7 @@ public class NonUtils {
|
|||||||
* @param objects 待判断的对象数组
|
* @param objects 待判断的对象数组
|
||||||
* @return true-所有对象都为空,false-至少有一个对象不为空
|
* @return true-所有对象都为空,false-至少有一个对象不为空
|
||||||
*/
|
*/
|
||||||
public static boolean isAllEmpty(Object... objects) {
|
public static BOOLEAN isAllEmpty(Object... objects) {
|
||||||
if (objects == null || objects.length == 0) {
|
if (objects == null || objects.length == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -173,7 +173,7 @@ public class NonUtils {
|
|||||||
* @param objects 待判断的对象数组
|
* @param objects 待判断的对象数组
|
||||||
* @return true-所有对象都不为空,false-至少有一个对象为空
|
* @return true-所有对象都不为空,false-至少有一个对象为空
|
||||||
*/
|
*/
|
||||||
public static boolean isAllNotEmpty(Object... objects) {
|
public static BOOLEAN isAllNotEmpty(Object... objects) {
|
||||||
if (objects == null || objects.length == 0) {
|
if (objects == null || objects.length == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ public class NonUtils {
|
|||||||
* @param objects 待判断的对象数组
|
* @param objects 待判断的对象数组
|
||||||
* @return true-存在空值,false-不存在空值
|
* @return true-存在空值,false-不存在空值
|
||||||
*/
|
*/
|
||||||
public static boolean hasEmpty(Object... objects) {
|
public static BOOLEAN hasEmpty(Object... objects) {
|
||||||
if (objects == null || objects.length == 0) {
|
if (objects == null || objects.length == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -212,7 +212,7 @@ public class NonUtils {
|
|||||||
* @param obj 待判断的对象
|
* @param obj 待判断的对象
|
||||||
* @return true-对象为空(包括递归检查),false-对象不为空
|
* @return true-对象为空(包括递归检查),false-对象不为空
|
||||||
*/
|
*/
|
||||||
public static boolean isDeepEmpty(Object obj) {
|
public static BOOLEAN isDeepEmpty(Object obj) {
|
||||||
return isDeepEmpty(obj, new HashSet<>());
|
return isDeepEmpty(obj, new HashSet<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@ public class NonUtils {
|
|||||||
* @param visited 已访问对象集合,用于防止循环引用
|
* @param visited 已访问对象集合,用于防止循环引用
|
||||||
* @return true-对象为空(包括递归检查),false-对象不为空
|
* @return true-对象为空(包括递归检查),false-对象不为空
|
||||||
*/
|
*/
|
||||||
private static boolean isDeepEmpty(Object obj, Set<Object> visited) {
|
private static BOOLEAN isDeepEmpty(Object obj, Set<Object> visited) {
|
||||||
if (isEmpty(obj)) {
|
if (isEmpty(obj)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -288,7 +288,7 @@ public class NonUtils {
|
|||||||
* @param obj 待判断的对象
|
* @param obj 待判断的对象
|
||||||
* @return true-对象不为空(包括递归检查),false-对象为空
|
* @return true-对象不为空(包括递归检查),false-对象为空
|
||||||
*/
|
*/
|
||||||
public static boolean isDeepNotEmpty(Object obj) {
|
public static BOOLEAN isDeepNotEmpty(Object obj) {
|
||||||
return !isDeepEmpty(obj);
|
return !isDeepEmpty(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,7 +300,7 @@ public class NonUtils {
|
|||||||
* @param collection 待判断的集合
|
* @param collection 待判断的集合
|
||||||
* @return true-集合为null或空,false-集合不为空
|
* @return true-集合为null或空,false-集合不为空
|
||||||
*/
|
*/
|
||||||
public static boolean isEmptyCollection(Collection<?> collection) {
|
public static BOOLEAN isEmptyCollection(Collection<?> collection) {
|
||||||
return collection == null || collection.isEmpty();
|
return collection == null || collection.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -310,7 +310,7 @@ public class NonUtils {
|
|||||||
* @param collection 待判断的集合
|
* @param collection 待判断的集合
|
||||||
* @return true-集合不为null且不为空,false-集合为null或空
|
* @return true-集合不为null且不为空,false-集合为null或空
|
||||||
*/
|
*/
|
||||||
public static boolean isNotEmptyCollection(Collection<?> collection) {
|
public static BOOLEAN isNotEmptyCollection(Collection<?> collection) {
|
||||||
return collection != null && !collection.isEmpty();
|
return collection != null && !collection.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ public class NonUtils {
|
|||||||
* @param collection 待判断的集合
|
* @param collection 待判断的集合
|
||||||
* @return true-集合包含有效元素,false-集合为空或只包含null/空元素
|
* @return true-集合包含有效元素,false-集合为空或只包含null/空元素
|
||||||
*/
|
*/
|
||||||
public static boolean hasValidElements(Collection<?> collection) {
|
public static BOOLEAN hasValidElements(Collection<?> collection) {
|
||||||
if (isEmptyCollection(collection)) {
|
if (isEmptyCollection(collection)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -338,7 +338,7 @@ public class NonUtils {
|
|||||||
* @param collection 待判断的集合
|
* @param collection 待判断的集合
|
||||||
* @return true-集合所有元素都有效,false-集合为空或包含null/空元素
|
* @return true-集合所有元素都有效,false-集合为空或包含null/空元素
|
||||||
*/
|
*/
|
||||||
public static boolean allValidElements(Collection<?> collection) {
|
public static BOOLEAN allValidElements(Collection<?> collection) {
|
||||||
if (isEmptyCollection(collection)) {
|
if (isEmptyCollection(collection)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -378,7 +378,7 @@ public class NonUtils {
|
|||||||
* @param map 待判断的Map
|
* @param map 待判断的Map
|
||||||
* @return true-Map为null或空,false-Map不为空
|
* @return true-Map为null或空,false-Map不为空
|
||||||
*/
|
*/
|
||||||
public static boolean isEmptyMap(Map<?, ?> map) {
|
public static BOOLEAN isEmptyMap(Map<?, ?> map) {
|
||||||
return map == null || map.isEmpty();
|
return map == null || map.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -388,7 +388,7 @@ public class NonUtils {
|
|||||||
* @param map 待判断的Map
|
* @param map 待判断的Map
|
||||||
* @return true-Map不为null且不为空,false-Map为null或空
|
* @return true-Map不为null且不为空,false-Map为null或空
|
||||||
*/
|
*/
|
||||||
public static boolean isNotEmptyMap(Map<?, ?> map) {
|
public static BOOLEAN isNotEmptyMap(Map<?, ?> map) {
|
||||||
return map != null && !map.isEmpty();
|
return map != null && !map.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@ public class NonUtils {
|
|||||||
* @param array 待判断的数组
|
* @param array 待判断的数组
|
||||||
* @return true-数组为null或空,false-数组不为空
|
* @return true-数组为null或空,false-数组不为空
|
||||||
*/
|
*/
|
||||||
public static boolean isEmptyArray(Object array) {
|
public static BOOLEAN isEmptyArray(Object array) {
|
||||||
return array == null || !array.getClass().isArray() || Array.getLength(array) == 0;
|
return array == null || !array.getClass().isArray() || Array.getLength(array) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ public class NonUtils {
|
|||||||
* @param array 待判断的数组
|
* @param array 待判断的数组
|
||||||
* @return true-数组不为null且不为空,false-数组为null或空
|
* @return true-数组不为null且不为空,false-数组为null或空
|
||||||
*/
|
*/
|
||||||
public static boolean isNotEmptyArray(Object array) {
|
public static BOOLEAN isNotEmptyArray(Object array) {
|
||||||
return array != null && array.getClass().isArray() && Array.getLength(array) > 0;
|
return array != null && array.getClass().isArray() && Array.getLength(array) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -422,7 +422,7 @@ public class NonUtils {
|
|||||||
* @param str 待判断的字符串
|
* @param str 待判断的字符串
|
||||||
* @return true-字符串为null、空或只包含空白字符,false-字符串有有效内容
|
* @return true-字符串为null、空或只包含空白字符,false-字符串有有效内容
|
||||||
*/
|
*/
|
||||||
public static boolean isEmptyString(String str) {
|
public static BOOLEAN isEmptyString(String str) {
|
||||||
return str == null || str.trim().isEmpty();
|
return str == null || str.trim().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,7 +432,7 @@ public class NonUtils {
|
|||||||
* @param str 待判断的字符串
|
* @param str 待判断的字符串
|
||||||
* @return true-字符串不为null且有有效内容,false-字符串为null、空或只包含空白字符
|
* @return true-字符串不为null且有有效内容,false-字符串为null、空或只包含空白字符
|
||||||
*/
|
*/
|
||||||
public static boolean isNotEmptyString(String str) {
|
public static BOOLEAN isNotEmptyString(String str) {
|
||||||
return str != null && !str.trim().isEmpty();
|
return str != null && !str.trim().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,7 +581,7 @@ public class NonUtils {
|
|||||||
* @param <T> 目标类型
|
* @param <T> 目标类型
|
||||||
* @return true-对象不为null且为指定类型,false-否则
|
* @return true-对象不为null且为指定类型,false-否则
|
||||||
*/
|
*/
|
||||||
public static <T> boolean isInstanceAndNotNull(Object obj, Class<T> clazz) {
|
public static <T> BOOLEAN isInstanceAndNotNull(Object obj, Class<T> clazz) {
|
||||||
return isNotNull(obj) && clazz.isInstance(obj);
|
return isNotNull(obj) && clazz.isInstance(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isAjaxRequest(HttpServletRequest request) {
|
public static BOOLEAN isAjaxRequest(HttpServletRequest request) {
|
||||||
String header = request.getHeader("X-Requested-With");
|
String header = request.getHeader("X-Requested-With");
|
||||||
return "XMLHttpRequest".equalsIgnoreCase(header);
|
return "XMLHttpRequest".equalsIgnoreCase(header);
|
||||||
}
|
}
|
||||||
@@ -153,7 +153,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isGet(HttpServletRequest request) {
|
public static BOOLEAN isGet(HttpServletRequest request) {
|
||||||
return "GET".equalsIgnoreCase(request.getMethod());
|
return "GET".equalsIgnoreCase(request.getMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isPost(HttpServletRequest request) {
|
public static BOOLEAN isPost(HttpServletRequest request) {
|
||||||
return "POST".equalsIgnoreCase(request.getMethod());
|
return "POST".equalsIgnoreCase(request.getMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isPut(HttpServletRequest request) {
|
public static BOOLEAN isPut(HttpServletRequest request) {
|
||||||
return "PUT".equalsIgnoreCase(request.getMethod());
|
return "PUT".equalsIgnoreCase(request.getMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,7 +186,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isDelete(HttpServletRequest request) {
|
public static BOOLEAN isDelete(HttpServletRequest request) {
|
||||||
return "DELETE".equalsIgnoreCase(request.getMethod());
|
return "DELETE".equalsIgnoreCase(request.getMethod());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isHttps(HttpServletRequest request) {
|
public static BOOLEAN isHttps(HttpServletRequest request) {
|
||||||
return "https".equals(request.getScheme()) || request.isSecure() ||
|
return "https".equals(request.getScheme()) || request.isSecure() ||
|
||||||
"443".equals(request.getHeader("X-Forwarded-Port")) ||
|
"443".equals(request.getHeader("X-Forwarded-Port")) ||
|
||||||
"https".equals(request.getHeader("X-Forwarded-Proto"));
|
"https".equals(request.getHeader("X-Forwarded-Proto"));
|
||||||
@@ -311,7 +311,7 @@ public class ServletUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean hasParameter(HttpServletRequest request, String paramName) {
|
public static BOOLEAN hasParameter(HttpServletRequest request, String paramName) {
|
||||||
return request.getParameter(paramName) != null;
|
return request.getParameter(paramName) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isEmpty(String str) {
|
public static BOOLEAN isEmpty(String str) {
|
||||||
return str == null || str.isEmpty();
|
return str == null || str.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isNotEmpty(String str) {
|
public static BOOLEAN isNotEmpty(String str) {
|
||||||
return !isEmpty(str);
|
return !isEmpty(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +54,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean equals(String a, String b) {
|
public static BOOLEAN equals(String a, String b) {
|
||||||
return a == null ? b == null : a.equals(b);
|
return a == null ? b == null : a.equals(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean contains(String str, String sub) {
|
public static BOOLEAN contains(String str, String sub) {
|
||||||
return str != null && sub != null && str.contains(sub);
|
return str != null && sub != null && str.contains(sub);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean startsWith(String str, String prefix) {
|
public static BOOLEAN startsWith(String str, String prefix) {
|
||||||
return str != null && prefix != null && str.startsWith(prefix);
|
return str != null && prefix != null && str.startsWith(prefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean endsWith(String str, String suffix) {
|
public static BOOLEAN endsWith(String str, String suffix) {
|
||||||
return str != null && suffix != null && str.endsWith(suffix);
|
return str != null && suffix != null && str.endsWith(suffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,7 +203,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isNumeric(String str) {
|
public static BOOLEAN isNumeric(String str) {
|
||||||
if (isEmpty(str)) return false;
|
if (isEmpty(str)) return false;
|
||||||
for (int i = 0; i < str.length(); i++) {
|
for (int i = 0; i < str.length(); i++) {
|
||||||
if (!Character.isDigit(str.charAt(i))) return false;
|
if (!Character.isDigit(str.charAt(i))) return false;
|
||||||
@@ -218,7 +218,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isBlank(String str) {
|
public static BOOLEAN isBlank(String str) {
|
||||||
return str == null || str.isBlank();
|
return str == null || str.isBlank();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -228,7 +228,7 @@ public class StringUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isNotBlank(String str) {
|
public static BOOLEAN isNotBlank(String str) {
|
||||||
return !isBlank(str);
|
return !isBlank(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ public class TimeUtils {
|
|||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-02
|
* @since 2025-11-02
|
||||||
*/
|
*/
|
||||||
public static boolean isNowBetween(String startTime, String endTime) {
|
public static BOOLEAN isNowBetween(String startTime, String endTime) {
|
||||||
LocalTime now = LocalTime.now();
|
LocalTime now = LocalTime.now();
|
||||||
LocalTime start = LocalTime.parse(startTime, DateTimeFormatter.ofPattern("HH:mm:ss"));
|
LocalTime start = LocalTime.parse(startTime, DateTimeFormatter.ofPattern("HH:mm:ss"));
|
||||||
LocalTime end = LocalTime.parse(endTime, DateTimeFormatter.ofPattern("HH:mm:ss"));
|
LocalTime end = LocalTime.parse(endTime, DateTimeFormatter.ofPattern("HH:mm:ss"));
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public class ExcelColumnMapping {
|
|||||||
/**
|
/**
|
||||||
* @description Excel列索引(从0开始,优先级高于列名)
|
* @description Excel列索引(从0开始,优先级高于列名)
|
||||||
*/
|
*/
|
||||||
private Integer columnIndex;
|
private INTEGER columnIndex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 对象字段名
|
* @description 对象字段名
|
||||||
@@ -37,7 +37,7 @@ public class ExcelColumnMapping {
|
|||||||
/**
|
/**
|
||||||
* @description 是否必填
|
* @description 是否必填
|
||||||
*/
|
*/
|
||||||
private boolean required = false;
|
private BOOLEAN required = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 默认值
|
* @description 默认值
|
||||||
@@ -62,7 +62,7 @@ public class ExcelColumnMapping {
|
|||||||
return columnName;
|
return columnName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getColumnIndex() {
|
public INTEGER getColumnIndex() {
|
||||||
return columnIndex;
|
return columnIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ public class ExcelColumnMapping {
|
|||||||
return fieldType;
|
return fieldType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRequired() {
|
public BOOLEAN isRequired() {
|
||||||
return required;
|
return required;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ public class ExcelColumnMapping {
|
|||||||
/**
|
/**
|
||||||
* 设置是否必填
|
* 设置是否必填
|
||||||
*/
|
*/
|
||||||
public Builder required(boolean required) {
|
public Builder required(BOOLEAN required) {
|
||||||
mapping.required = required;
|
mapping.required = required;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public class ExcelReadResult<T> {
|
|||||||
/**
|
/**
|
||||||
* @description 是否成功
|
* @description 是否成功
|
||||||
*/
|
*/
|
||||||
private boolean success;
|
private BOOLEAN success;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 成功读取的数据列表
|
* @description 成功读取的数据列表
|
||||||
@@ -27,7 +27,7 @@ public class ExcelReadResult<T> {
|
|||||||
/**
|
/**
|
||||||
* @description 失败的行数据(行号 -> 错误信息)
|
* @description 失败的行数据(行号 -> 错误信息)
|
||||||
*/
|
*/
|
||||||
private Map<Integer, String> errorRowsMap;
|
private Map<INTEGER, String> errorRowsMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 总行数(不包括表头)
|
* @description 总行数(不包括表头)
|
||||||
@@ -58,11 +58,11 @@ public class ExcelReadResult<T> {
|
|||||||
this.errorRowsCount = 0;
|
this.errorRowsCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSuccess() {
|
public BOOLEAN isSuccess() {
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSuccess(boolean success) {
|
public void setSuccess(BOOLEAN success) {
|
||||||
this.success = success;
|
this.success = success;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,11 +74,11 @@ public class ExcelReadResult<T> {
|
|||||||
this.dataList = dataList;
|
this.dataList = dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Integer, String> getErrorRows() {
|
public Map<INTEGER, String> getErrorRows() {
|
||||||
return errorRowsMap;
|
return errorRowsMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setErrorRows(Map<Integer, String> errorRowsMap) {
|
public void setErrorRows(Map<INTEGER, String> errorRowsMap) {
|
||||||
this.errorRowsMap = errorRowsMap;
|
this.errorRowsMap = errorRowsMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,7 +124,7 @@ public class ExcelReadResult<T> {
|
|||||||
this.errorRowsCount++;
|
this.errorRowsCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasErrors() {
|
public BOOLEAN hasErrors() {
|
||||||
return this.errorRowsCount > 0;
|
return this.errorRowsCount > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -97,9 +97,9 @@ public class ExcelReaderUtils {
|
|||||||
int dataStartRowIndex = (int) options.getOrDefault("dataStartRowIndex", 1);
|
int dataStartRowIndex = (int) options.getOrDefault("dataStartRowIndex", 1);
|
||||||
int sheetIndex = (int) options.getOrDefault("sheetIndex", 0);
|
int sheetIndex = (int) options.getOrDefault("sheetIndex", 0);
|
||||||
String sheetName = (String) options.get("sheetName");
|
String sheetName = (String) options.get("sheetName");
|
||||||
boolean skipEmptyRow = (boolean) options.getOrDefault("skipEmptyRow", true);
|
BOOLEAN skipEmptyRow = (BOOLEAN) options.getOrDefault("skipEmptyRow", true);
|
||||||
int maxRows = (int) options.getOrDefault("maxRows", 0);
|
int maxRows = (int) options.getOrDefault("maxRows", 0);
|
||||||
boolean continueOnError = (boolean) options.getOrDefault("continueOnError", true);
|
BOOLEAN continueOnError = (BOOLEAN) options.getOrDefault("continueOnError", true);
|
||||||
|
|
||||||
// 创建Workbook
|
// 创建Workbook
|
||||||
Workbook workbook = createWorkbook(inputStream, fileName);
|
Workbook workbook = createWorkbook(inputStream, fileName);
|
||||||
@@ -113,7 +113,7 @@ public class ExcelReaderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 解析表头
|
// 解析表头
|
||||||
Map<String, Integer> headerMap = parseHeader(sheet, headerRowIndex);
|
Map<String, INTEGER> headerMap = parseHeader(sheet, headerRowIndex);
|
||||||
|
|
||||||
// 读取数据
|
// 读取数据
|
||||||
readData(sheet, headerMap, targetClass, columnMappings, dataStartRowIndex,
|
readData(sheet, headerMap, targetClass, columnMappings, dataStartRowIndex,
|
||||||
@@ -156,8 +156,8 @@ public class ExcelReaderUtils {
|
|||||||
/**
|
/**
|
||||||
* @description 解析表头
|
* @description 解析表头
|
||||||
*/
|
*/
|
||||||
private static Map<String, Integer> parseHeader(Sheet sheet, int headerRowIndex) {
|
private static Map<String, INTEGER> parseHeader(Sheet sheet, int headerRowIndex) {
|
||||||
Map<String, Integer> headerMap = new HashMap<>();
|
Map<String, INTEGER> headerMap = new HashMap<>();
|
||||||
Row headerRow = sheet.getRow(headerRowIndex);
|
Row headerRow = sheet.getRow(headerRowIndex);
|
||||||
|
|
||||||
if (headerRow != null) {
|
if (headerRow != null) {
|
||||||
@@ -175,10 +175,10 @@ public class ExcelReaderUtils {
|
|||||||
/**
|
/**
|
||||||
* @description 读取数据
|
* @description 读取数据
|
||||||
*/
|
*/
|
||||||
private static void readData(Sheet sheet, Map<String, Integer> headerMap,
|
private static void readData(Sheet sheet, Map<String, INTEGER> headerMap,
|
||||||
Class<?> targetClass, List<ExcelColumnMapping> columnMappings,
|
Class<?> targetClass, List<ExcelColumnMapping> columnMappings,
|
||||||
int startRow, boolean skipEmptyRow, int maxRows,
|
int startRow, BOOLEAN skipEmptyRow, int maxRows,
|
||||||
boolean continueOnError, ExcelReadResult<Object> result) {
|
BOOLEAN continueOnError, ExcelReadResult<Object> result) {
|
||||||
int lastRowNum = sheet.getLastRowNum();
|
int lastRowNum = sheet.getLastRowNum();
|
||||||
int endRow = maxRows > 0 ? Math.min(startRow + maxRows, lastRowNum + 1) : lastRowNum + 1;
|
int endRow = maxRows > 0 ? Math.min(startRow + maxRows, lastRowNum + 1) : lastRowNum + 1;
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ public class ExcelReaderUtils {
|
|||||||
/**
|
/**
|
||||||
* @description 判断是否为空行
|
* @description 判断是否为空行
|
||||||
*/
|
*/
|
||||||
private static boolean isEmptyRow(Row row) {
|
private static BOOLEAN isEmptyRow(Row row) {
|
||||||
if (row == null) {
|
if (row == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -249,7 +249,7 @@ public class ExcelReaderUtils {
|
|||||||
/**
|
/**
|
||||||
* @description 将行数据转换为对象
|
* @description 将行数据转换为对象
|
||||||
*/
|
*/
|
||||||
private static Object convertRowToObject(Row row, Map<String, Integer> headerMap,
|
private static Object convertRowToObject(Row row, Map<String, INTEGER> headerMap,
|
||||||
Class<?> targetClass, List<ExcelColumnMapping> columnMappings,
|
Class<?> targetClass, List<ExcelColumnMapping> columnMappings,
|
||||||
int rowNum) throws Exception {
|
int rowNum) throws Exception {
|
||||||
Object obj = targetClass.getDeclaredConstructor().newInstance();
|
Object obj = targetClass.getDeclaredConstructor().newInstance();
|
||||||
@@ -307,7 +307,7 @@ public class ExcelReaderUtils {
|
|||||||
/**
|
/**
|
||||||
* @description 获取单元格
|
* @description 获取单元格
|
||||||
*/
|
*/
|
||||||
private static Cell getCell(Row row, ExcelColumnMapping mapping, Map<String, Integer> headerMap) {
|
private static Cell getCell(Row row, ExcelColumnMapping mapping, Map<String, INTEGER> headerMap) {
|
||||||
if (row == null) {
|
if (row == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -318,7 +318,7 @@ public class ExcelReaderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 使用列名
|
// 使用列名
|
||||||
Integer columnIndex = headerMap.get(mapping.getColumnName());
|
INTEGER columnIndex = headerMap.get(mapping.getColumnName());
|
||||||
if (columnIndex != null) {
|
if (columnIndex != null) {
|
||||||
return row.getCell(columnIndex);
|
return row.getCell(columnIndex);
|
||||||
}
|
}
|
||||||
@@ -344,7 +344,7 @@ public class ExcelReaderUtils {
|
|||||||
return cell.getNumericCellValue();
|
return cell.getNumericCellValue();
|
||||||
}
|
}
|
||||||
case BOOLEAN:
|
case BOOLEAN:
|
||||||
return cell.getBooleanCellValue();
|
return cell.getBOOLEANCellValue();
|
||||||
case FORMULA:
|
case FORMULA:
|
||||||
return cell.getCellFormula();
|
return cell.getCellFormula();
|
||||||
case BLANK:
|
case BLANK:
|
||||||
@@ -369,12 +369,12 @@ public class ExcelReaderUtils {
|
|||||||
return strValue;
|
return strValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Integer类型
|
// INTEGER类型
|
||||||
if (targetType == Integer.class || targetType == int.class) {
|
if (targetType == INTEGER.class || targetType == int.class) {
|
||||||
if (value instanceof Number) {
|
if (value instanceof Number) {
|
||||||
return ((Number) value).intValue();
|
return ((Number) value).intValue();
|
||||||
}
|
}
|
||||||
return Integer.parseInt(strValue);
|
return INTEGER.parseInt(strValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Long类型
|
// Long类型
|
||||||
@@ -401,12 +401,12 @@ public class ExcelReaderUtils {
|
|||||||
return Float.parseFloat(strValue);
|
return Float.parseFloat(strValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Boolean类型
|
// BOOLEAN类型
|
||||||
if (targetType == Boolean.class || targetType == boolean.class) {
|
if (targetType == BOOLEAN.class || targetType == BOOLEAN.class) {
|
||||||
if (value instanceof Boolean) {
|
if (value instanceof BOOLEAN) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
return Boolean.parseBoolean(strValue) || "1".equals(strValue) ||
|
return BOOLEAN.parseBOOLEAN(strValue) || "1".equals(strValue) ||
|
||||||
"是".equals(strValue) || "true".equalsIgnoreCase(strValue);
|
"是".equals(strValue) || "true".equalsIgnoreCase(strValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,19 +20,19 @@ public class ExcelUtilsExample {
|
|||||||
*/
|
*/
|
||||||
public static class UserInfo {
|
public static class UserInfo {
|
||||||
private String name;
|
private String name;
|
||||||
private Integer age;
|
private INTEGER age;
|
||||||
private String phone;
|
private String phone;
|
||||||
private String email;
|
private String email;
|
||||||
private String idCard;
|
private String idCard;
|
||||||
private Date joinDate;
|
private Date joinDate;
|
||||||
private Boolean active;
|
private BOOLEAN active;
|
||||||
|
|
||||||
// Getters and Setters
|
// Getters and Setters
|
||||||
public String getName() { return name; }
|
public String getName() { return name; }
|
||||||
public void setName(String name) { this.name = name; }
|
public void setName(String name) { this.name = name; }
|
||||||
|
|
||||||
public Integer getAge() { return age; }
|
public INTEGER getAge() { return age; }
|
||||||
public void setAge(Integer age) { this.age = age; }
|
public void setAge(INTEGER age) { this.age = age; }
|
||||||
|
|
||||||
public String getPhone() { return phone; }
|
public String getPhone() { return phone; }
|
||||||
public void setPhone(String phone) { this.phone = phone; }
|
public void setPhone(String phone) { this.phone = phone; }
|
||||||
@@ -46,8 +46,8 @@ public class ExcelUtilsExample {
|
|||||||
public Date getJoinDate() { return joinDate; }
|
public Date getJoinDate() { return joinDate; }
|
||||||
public void setJoinDate(Date joinDate) { this.joinDate = joinDate; }
|
public void setJoinDate(Date joinDate) { this.joinDate = joinDate; }
|
||||||
|
|
||||||
public Boolean getActive() { return active; }
|
public BOOLEAN getActive() { return active; }
|
||||||
public void setActive(Boolean active) { this.active = active; }
|
public void setActive(BOOLEAN active) { this.active = active; }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
@@ -81,7 +81,7 @@ public class ExcelUtilsExample {
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("年龄")
|
.columnName("年龄")
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.build(),
|
.build(),
|
||||||
|
|
||||||
@@ -116,7 +116,7 @@ public class ExcelUtilsExample {
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("是否在职")
|
.columnName("是否在职")
|
||||||
.fieldName("active")
|
.fieldName("active")
|
||||||
.fieldType(Boolean.class)
|
.fieldType(BOOLEAN.class)
|
||||||
.defaultValue("true")
|
.defaultValue("true")
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
@@ -172,7 +172,7 @@ public class ExcelUtilsExample {
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("年龄")
|
.columnName("年龄")
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.addValidation(
|
.addValidation(
|
||||||
ValidationParam.builder()
|
ValidationParam.builder()
|
||||||
@@ -180,7 +180,7 @@ public class ExcelUtilsExample {
|
|||||||
.fieldLabel("年龄")
|
.fieldLabel("年龄")
|
||||||
.required()
|
.required()
|
||||||
.customValidator(value -> {
|
.customValidator(value -> {
|
||||||
Integer age = (Integer) value;
|
INTEGER age = (INTEGER) value;
|
||||||
return age >= 18 && age <= 65;
|
return age >= 18 && age <= 65;
|
||||||
})
|
})
|
||||||
.customErrorMessage("年龄必须在18-65岁之间")
|
.customErrorMessage("年龄必须在18-65岁之间")
|
||||||
@@ -277,7 +277,7 @@ public class ExcelUtilsExample {
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnIndex(1) // 第2列
|
.columnIndex(1) // 第2列
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.build(),
|
.build(),
|
||||||
|
|
||||||
@@ -316,7 +316,7 @@ public class ExcelUtilsExample {
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("年龄")
|
.columnName("年龄")
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -37,11 +37,11 @@
|
|||||||
```java
|
```java
|
||||||
public class UserInfo {
|
public class UserInfo {
|
||||||
private String name;
|
private String name;
|
||||||
private Integer age;
|
private INTEGER age;
|
||||||
private String phone;
|
private String phone;
|
||||||
private String email;
|
private String email;
|
||||||
private Date joinDate;
|
private Date joinDate;
|
||||||
private Boolean active;
|
private BOOLEAN active;
|
||||||
|
|
||||||
// Getters and Setters...
|
// Getters and Setters...
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@ List<ExcelColumnMapping> columnMappings = Arrays.asList(
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("年龄")
|
.columnName("年龄")
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.build(),
|
.build(),
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ List<ExcelColumnMapping> columnMappings = Arrays.asList(
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("是否在职")
|
.columnName("是否在职")
|
||||||
.fieldName("active")
|
.fieldName("active")
|
||||||
.fieldType(Boolean.class)
|
.fieldType(BOOLEAN.class)
|
||||||
.defaultValue("true")
|
.defaultValue("true")
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
@@ -140,7 +140,7 @@ List<ExcelColumnMapping> columnMappings = Arrays.asList(
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnName("年龄")
|
.columnName("年龄")
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.addValidation(
|
.addValidation(
|
||||||
ValidationParam.builder()
|
ValidationParam.builder()
|
||||||
@@ -148,7 +148,7 @@ List<ExcelColumnMapping> columnMappings = Arrays.asList(
|
|||||||
.fieldLabel("年龄")
|
.fieldLabel("年龄")
|
||||||
.required()
|
.required()
|
||||||
.customValidator(value -> {
|
.customValidator(value -> {
|
||||||
Integer age = (Integer) value;
|
INTEGER age = (INTEGER) value;
|
||||||
return age >= 18 && age <= 65;
|
return age >= 18 && age <= 65;
|
||||||
})
|
})
|
||||||
.customErrorMessage("年龄必须在18-65岁之间")
|
.customErrorMessage("年龄必须在18-65岁之间")
|
||||||
@@ -227,7 +227,7 @@ List<ExcelColumnMapping> columnMappings = Arrays.asList(
|
|||||||
ExcelColumnMapping.builder()
|
ExcelColumnMapping.builder()
|
||||||
.columnIndex(1) // 第2列
|
.columnIndex(1) // 第2列
|
||||||
.fieldName("age")
|
.fieldName("age")
|
||||||
.fieldType(Integer.class)
|
.fieldType(INTEGER.class)
|
||||||
.required()
|
.required()
|
||||||
.build(),
|
.build(),
|
||||||
|
|
||||||
@@ -282,7 +282,7 @@ List<ValidationParam> validationParams = Arrays.asList(
|
|||||||
.fieldLabel("年龄")
|
.fieldLabel("年龄")
|
||||||
.required()
|
.required()
|
||||||
.customValidator(value -> {
|
.customValidator(value -> {
|
||||||
Integer age = (Integer) value;
|
INTEGER age = (INTEGER) value;
|
||||||
return age >= 18 && age <= 65;
|
return age >= 18 && age <= 65;
|
||||||
})
|
})
|
||||||
.customErrorMessage("年龄必须在18-65岁之间")
|
.customErrorMessage("年龄必须在18-65岁之间")
|
||||||
@@ -422,11 +422,11 @@ public ResultDomain<String> importUsers(@RequestParam("file") MultipartFile file
|
|||||||
## 支持的数据类型
|
## 支持的数据类型
|
||||||
|
|
||||||
- **String** - 字符串
|
- **String** - 字符串
|
||||||
- **Integer/int** - 整数
|
- **INTEGER/int** - 整数
|
||||||
- **Long/long** - 长整数
|
- **Long/long** - 长整数
|
||||||
- **Double/double** - 双精度浮点数
|
- **Double/double** - 双精度浮点数
|
||||||
- **Float/float** - 单精度浮点数
|
- **Float/float** - 单精度浮点数
|
||||||
- **Boolean/boolean** - 布尔值(支持:true/false、1/0、是/否)
|
- **BOOLEAN/BOOLEAN** - 布尔值(支持:true/false、1/0、是/否)
|
||||||
- **Date** - 日期(需指定dateFormat)
|
- **Date** - 日期(需指定dateFormat)
|
||||||
|
|
||||||
## 配置选项
|
## 配置选项
|
||||||
@@ -439,7 +439,7 @@ public ResultDomain<String> importUsers(@RequestParam("file") MultipartFile file
|
|||||||
| columnIndex(int) | 设置Excel列索引(从0开始,优先级高于columnName) | columnName和columnIndex至少一个 |
|
| columnIndex(int) | 设置Excel列索引(从0开始,优先级高于columnName) | columnName和columnIndex至少一个 |
|
||||||
| fieldName(String) | 设置对象字段名 | 是 |
|
| fieldName(String) | 设置对象字段名 | 是 |
|
||||||
| fieldType(Class<?>) | 设置字段类型 | 否(默认String.class) |
|
| fieldType(Class<?>) | 设置字段类型 | 否(默认String.class) |
|
||||||
| required() / required(boolean) | 设置是否必填 | 否(默认false) |
|
| required() / required(BOOLEAN) | 设置是否必填 | 否(默认false) |
|
||||||
| defaultValue(String) | 设置默认值 | 否 |
|
| defaultValue(String) | 设置默认值 | 否 |
|
||||||
| dateFormat(String) | 设置日期格式 | 否(默认"yyyy-MM-dd") |
|
| dateFormat(String) | 设置日期格式 | 否(默认"yyyy-MM-dd") |
|
||||||
| addValidation(ValidationParam) | 添加校验参数 | 否 |
|
| addValidation(ValidationParam) | 添加校验参数 | 否 |
|
||||||
@@ -455,9 +455,9 @@ public ResultDomain<String> importUsers(@RequestParam("file") MultipartFile file
|
|||||||
| dataStartRowIndex | int | 数据起始行(从0开始) | 1 |
|
| dataStartRowIndex | int | 数据起始行(从0开始) | 1 |
|
||||||
| sheetIndex | int | Sheet索引(从0开始) | 0 |
|
| sheetIndex | int | Sheet索引(从0开始) | 0 |
|
||||||
| sheetName | String | Sheet名称(优先级高于sheetIndex) | null |
|
| sheetName | String | Sheet名称(优先级高于sheetIndex) | null |
|
||||||
| skipEmptyRow | boolean | 跳过空行 | true |
|
| skipEmptyRow | BOOLEAN | 跳过空行 | true |
|
||||||
| maxRows | int | 最大读取行数(0=不限制) | 0 |
|
| maxRows | int | 最大读取行数(0=不限制) | 0 |
|
||||||
| continueOnError | boolean | 遇到错误继续读取 | true |
|
| continueOnError | BOOLEAN | 遇到错误继续读取 | true |
|
||||||
|
|
||||||
## 核心特性
|
## 核心特性
|
||||||
|
|
||||||
@@ -480,7 +480,7 @@ public ResultDomain<String> importUsers(@RequestParam("file") MultipartFile file
|
|||||||
5. **布尔类型**:支持多种格式(true/false、1/0、是/否)
|
5. **布尔类型**:支持多种格式(true/false、1/0、是/否)
|
||||||
6. **错误处理**:根据continueOnError选项决定遇到错误时是否继续
|
6. **错误处理**:根据continueOnError选项决定遇到错误时是否继续
|
||||||
7. **文件格式**:支持.xls和.xlsx两种格式
|
7. **文件格式**:支持.xls和.xlsx两种格式
|
||||||
8. **类型转换**:自动转换支持String、Integer、Long、Double、Float、Boolean、Date
|
8. **类型转换**:自动转换支持String、INTEGER、Long、Double、Float、BOOLEAN、Date
|
||||||
|
|
||||||
## 依赖
|
## 依赖
|
||||||
|
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ ValidationParam param = ValidationParam.builder()
|
|||||||
.fieldLabel("年龄")
|
.fieldLabel("年龄")
|
||||||
.required()
|
.required()
|
||||||
.customValidator(value -> {
|
.customValidator(value -> {
|
||||||
Integer age = (Integer) value;
|
INTEGER age = (INTEGER) value;
|
||||||
return age >= 18 && age <= 60;
|
return age >= 18 && age <= 60;
|
||||||
})
|
})
|
||||||
.customErrorMessage("年龄必须在18-60岁之间")
|
.customErrorMessage("年龄必须在18-60岁之间")
|
||||||
@@ -342,7 +342,7 @@ public ResultDomain<User> register(@RequestBody Map<String, Object> params) {
|
|||||||
public class CustomValidateMethod implements ValidateMethod {
|
public class CustomValidateMethod implements ValidateMethod {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
// 实现校验逻辑
|
// 实现校验逻辑
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ public class ValidationParam {
|
|||||||
/**
|
/**
|
||||||
* @description 是否必传
|
* @description 是否必传
|
||||||
*/
|
*/
|
||||||
private boolean required;
|
private BOOLEAN required;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 字段类型
|
* @description 字段类型
|
||||||
@@ -37,12 +37,12 @@ public class ValidationParam {
|
|||||||
/**
|
/**
|
||||||
* @description 最小长度(字符串)
|
* @description 最小长度(字符串)
|
||||||
*/
|
*/
|
||||||
private Integer minLength;
|
private INTEGER minLength;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 最大长度(字符串)
|
* @description 最大长度(字符串)
|
||||||
*/
|
*/
|
||||||
private Integer maxLength;
|
private INTEGER maxLength;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 最小值(数字)
|
* @description 最小值(数字)
|
||||||
@@ -77,7 +77,7 @@ public class ValidationParam {
|
|||||||
/**
|
/**
|
||||||
* @description 是否允许为空字符串(默认不允许)
|
* @description 是否允许为空字符串(默认不允许)
|
||||||
*/
|
*/
|
||||||
private boolean allowEmpty = false;
|
private BOOLEAN allowEmpty = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 校验方法(使用预定义的校验方法)
|
* @description 校验方法(使用预定义的校验方法)
|
||||||
@@ -106,7 +106,7 @@ public class ValidationParam {
|
|||||||
return fieldLabel;
|
return fieldLabel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRequired() {
|
public BOOLEAN isRequired() {
|
||||||
return required;
|
return required;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,11 +114,11 @@ public class ValidationParam {
|
|||||||
return fieldType;
|
return fieldType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getMinLength() {
|
public INTEGER getMinLength() {
|
||||||
return minLength;
|
return minLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getMaxLength() {
|
public INTEGER getMaxLength() {
|
||||||
return maxLength;
|
return maxLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,7 +146,7 @@ public class ValidationParam {
|
|||||||
return customErrorMessage;
|
return customErrorMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAllowEmpty() {
|
public BOOLEAN isAllowEmpty() {
|
||||||
return allowEmpty;
|
return allowEmpty;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ public class ValidationParam {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder required(boolean required) {
|
public Builder required(BOOLEAN required) {
|
||||||
param.required = required;
|
param.required = required;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -193,12 +193,12 @@ public class ValidationParam {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder minLength(Integer minLength) {
|
public Builder minLength(INTEGER minLength) {
|
||||||
param.minLength = minLength;
|
param.minLength = minLength;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder maxLength(Integer maxLength) {
|
public Builder maxLength(INTEGER maxLength) {
|
||||||
param.maxLength = maxLength;
|
param.maxLength = maxLength;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -233,7 +233,7 @@ public class ValidationParam {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder allowEmpty(boolean allowEmpty) {
|
public Builder allowEmpty(BOOLEAN allowEmpty) {
|
||||||
param.allowEmpty = allowEmpty;
|
param.allowEmpty = allowEmpty;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class ValidationResult {
|
|||||||
/**
|
/**
|
||||||
* @description 是否校验通过
|
* @description 是否校验通过
|
||||||
*/
|
*/
|
||||||
private boolean valid;
|
private BOOLEAN valid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 错误信息列表
|
* @description 错误信息列表
|
||||||
@@ -32,11 +32,11 @@ public class ValidationResult {
|
|||||||
this.errors = new ArrayList<>();
|
this.errors = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isValid() {
|
public BOOLEAN isValid() {
|
||||||
return valid;
|
return valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setValid(boolean valid) {
|
public void setValid(BOOLEAN valid) {
|
||||||
this.valid = valid;
|
this.valid = valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,9 +70,9 @@ public class ValidationResult {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 是否有错误
|
* @description 是否有错误
|
||||||
* @return boolean
|
* @return BOOLEAN
|
||||||
*/
|
*/
|
||||||
public boolean hasErrors() {
|
public BOOLEAN hasErrors() {
|
||||||
return !valid;
|
return !valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ public class ValidationUtils {
|
|||||||
* @param required 是否必填
|
* @param required 是否必填
|
||||||
* @return ValidationParam
|
* @return ValidationParam
|
||||||
*/
|
*/
|
||||||
public static ValidationParam email(String fieldName, String fieldLabel, boolean required) {
|
public static ValidationParam email(String fieldName, String fieldLabel, BOOLEAN required) {
|
||||||
return ValidationParam.builder()
|
return ValidationParam.builder()
|
||||||
.fieldName(fieldName)
|
.fieldName(fieldName)
|
||||||
.fieldLabel(fieldLabel)
|
.fieldLabel(fieldLabel)
|
||||||
@@ -307,7 +307,7 @@ public class ValidationUtils {
|
|||||||
* @param required 是否必填
|
* @param required 是否必填
|
||||||
* @return ValidationParam
|
* @return ValidationParam
|
||||||
*/
|
*/
|
||||||
public static ValidationParam phone(String fieldName, String fieldLabel, boolean required) {
|
public static ValidationParam phone(String fieldName, String fieldLabel, BOOLEAN required) {
|
||||||
return ValidationParam.builder()
|
return ValidationParam.builder()
|
||||||
.fieldName(fieldName)
|
.fieldName(fieldName)
|
||||||
.fieldLabel(fieldLabel)
|
.fieldLabel(fieldLabel)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ package org.xyzh.common.utils.validation.method;
|
|||||||
public class BankCardValidateMethod implements ValidateMethod {
|
public class BankCardValidateMethod implements ValidateMethod {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -34,11 +34,11 @@ public class BankCardValidateMethod implements ValidateMethod {
|
|||||||
/**
|
/**
|
||||||
* @description Luhn算法校验(银行卡校验算法)
|
* @description Luhn算法校验(银行卡校验算法)
|
||||||
* @param cardNumber 银行卡号
|
* @param cardNumber 银行卡号
|
||||||
* @return boolean 是否通过校验
|
* @return BOOLEAN 是否通过校验
|
||||||
*/
|
*/
|
||||||
private boolean luhnCheck(String cardNumber) {
|
private BOOLEAN luhnCheck(String cardNumber) {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
boolean alternate = false;
|
BOOLEAN alternate = false;
|
||||||
|
|
||||||
// 从右向左遍历
|
// 从右向左遍历
|
||||||
for (int i = cardNumber.length() - 1; i >= 0; i--) {
|
for (int i = cardNumber.length() - 1; i >= 0; i--) {
|
||||||
|
|||||||
@@ -14,18 +14,18 @@ public class ChineseValidateMethod implements ValidateMethod {
|
|||||||
// 中文字符正则(包括中文标点符号)
|
// 中文字符正则(包括中文标点符号)
|
||||||
private static final Pattern CHINESE_PATTERN = Pattern.compile("^[\u4e00-\u9fa5]+$");
|
private static final Pattern CHINESE_PATTERN = Pattern.compile("^[\u4e00-\u9fa5]+$");
|
||||||
|
|
||||||
private final boolean allowPunctuation; // 是否允许中文标点符号
|
private final BOOLEAN allowPunctuation; // 是否允许中文标点符号
|
||||||
|
|
||||||
public ChineseValidateMethod() {
|
public ChineseValidateMethod() {
|
||||||
this.allowPunctuation = false;
|
this.allowPunctuation = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChineseValidateMethod(boolean allowPunctuation) {
|
public ChineseValidateMethod(BOOLEAN allowPunctuation) {
|
||||||
this.allowPunctuation = allowPunctuation;
|
this.allowPunctuation = allowPunctuation;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class EmailValidateMethod implements ValidateMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,7 @@ public class EmailValidateMethod implements ValidateMethod {
|
|||||||
|
|
||||||
// 域名限制校验
|
// 域名限制校验
|
||||||
if (allowedDomains != null && allowedDomains.length > 0) {
|
if (allowedDomains != null && allowedDomains.length > 0) {
|
||||||
boolean domainMatched = false;
|
BOOLEAN domainMatched = false;
|
||||||
for (String domain : allowedDomains) {
|
for (String domain : allowedDomains) {
|
||||||
if (email.endsWith("@" + domain.toLowerCase())) {
|
if (email.endsWith("@" + domain.toLowerCase())) {
|
||||||
domainMatched = true;
|
domainMatched = true;
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ public class IdCardValidateMethod implements ValidateMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -83,7 +83,7 @@ public class IdCardValidateMethod implements ValidateMethod {
|
|||||||
/**
|
/**
|
||||||
* @description 校验15位身份证
|
* @description 校验15位身份证
|
||||||
*/
|
*/
|
||||||
private boolean validate15IdCard(String idCard) {
|
private BOOLEAN validate15IdCard(String idCard) {
|
||||||
// 15位身份证格式:省(2位)市(2位)县(2位)年(2位)月(2位)日(2位)顺序号(3位)
|
// 15位身份证格式:省(2位)市(2位)县(2位)年(2位)月(2位)日(2位)顺序号(3位)
|
||||||
if (!Pattern.matches("^\\d{15}$", idCard)) {
|
if (!Pattern.matches("^\\d{15}$", idCard)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -106,7 +106,7 @@ public class IdCardValidateMethod implements ValidateMethod {
|
|||||||
/**
|
/**
|
||||||
* @description 校验18位身份证
|
* @description 校验18位身份证
|
||||||
*/
|
*/
|
||||||
private boolean validate18IdCard(String idCard) {
|
private BOOLEAN validate18IdCard(String idCard) {
|
||||||
// 18位身份证格式:省(2位)市(2位)县(2位)年(4位)月(2位)日(2位)顺序号(3位)校验码(1位)
|
// 18位身份证格式:省(2位)市(2位)县(2位)年(4位)月(2位)日(2位)顺序号(3位)校验码(1位)
|
||||||
if (!Pattern.matches("^\\d{17}[0-9Xx]$", idCard)) {
|
if (!Pattern.matches("^\\d{17}[0-9Xx]$", idCard)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -134,11 +134,11 @@ public class IdCardValidateMethod implements ValidateMethod {
|
|||||||
/**
|
/**
|
||||||
* @description 校验日期是否合法
|
* @description 校验日期是否合法
|
||||||
*/
|
*/
|
||||||
private boolean validateDate(String year, String month, String day) {
|
private BOOLEAN validateDate(String year, String month, String day) {
|
||||||
try {
|
try {
|
||||||
int y = Integer.parseInt(year);
|
int y = INTEGER.parseInt(year);
|
||||||
int m = Integer.parseInt(month);
|
int m = INTEGER.parseInt(month);
|
||||||
int d = Integer.parseInt(day);
|
int d = INTEGER.parseInt(day);
|
||||||
|
|
||||||
// 年份范围:1900-当前年份
|
// 年份范围:1900-当前年份
|
||||||
int currentYear = java.time.Year.now().getValue();
|
int currentYear = java.time.Year.now().getValue();
|
||||||
@@ -168,14 +168,14 @@ public class IdCardValidateMethod implements ValidateMethod {
|
|||||||
/**
|
/**
|
||||||
* @description 判断是否为闰年
|
* @description 判断是否为闰年
|
||||||
*/
|
*/
|
||||||
private boolean isLeapYear(int year) {
|
private BOOLEAN isLeapYear(int year) {
|
||||||
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
|
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 校验18位身份证的校验码
|
* @description 校验18位身份证的校验码
|
||||||
*/
|
*/
|
||||||
private boolean validateCheckCode(String idCard) {
|
private BOOLEAN validateCheckCode(String idCard) {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
for (int i = 0; i < 17; i++) {
|
for (int i = 0; i < 17; i++) {
|
||||||
sum += (idCard.charAt(i) - '0') * WEIGHT[i];
|
sum += (idCard.charAt(i) - '0') * WEIGHT[i];
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ public class PasswordValidateMethod implements ValidateMethod {
|
|||||||
|
|
||||||
private final int minLength;
|
private final int minLength;
|
||||||
private final int maxLength;
|
private final int maxLength;
|
||||||
private final boolean requireUpperCase;
|
private final BOOLEAN requireUpperCase;
|
||||||
private final boolean requireLowerCase;
|
private final BOOLEAN requireLowerCase;
|
||||||
private final boolean requireDigit;
|
private final BOOLEAN requireDigit;
|
||||||
private final boolean requireSpecialChar;
|
private final BOOLEAN requireSpecialChar;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 默认密码规则:6-20位,必须包含字母和数字
|
* @description 默认密码规则:6-20位,必须包含字母和数字
|
||||||
@@ -35,8 +35,8 @@ public class PasswordValidateMethod implements ValidateMethod {
|
|||||||
* @param requireSpecialChar 是否需要特殊字符
|
* @param requireSpecialChar 是否需要特殊字符
|
||||||
*/
|
*/
|
||||||
public PasswordValidateMethod(int minLength, int maxLength,
|
public PasswordValidateMethod(int minLength, int maxLength,
|
||||||
boolean requireUpperCase, boolean requireLowerCase,
|
BOOLEAN requireUpperCase, BOOLEAN requireLowerCase,
|
||||||
boolean requireDigit, boolean requireSpecialChar) {
|
BOOLEAN requireDigit, BOOLEAN requireSpecialChar) {
|
||||||
this.minLength = minLength;
|
this.minLength = minLength;
|
||||||
this.maxLength = maxLength;
|
this.maxLength = maxLength;
|
||||||
this.requireUpperCase = requireUpperCase;
|
this.requireUpperCase = requireUpperCase;
|
||||||
@@ -46,7 +46,7 @@ public class PasswordValidateMethod implements ValidateMethod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ public class PasswordValidateMethod implements ValidateMethod {
|
|||||||
|
|
||||||
if (requireUpperCase || requireLowerCase || requireDigit || requireSpecialChar) {
|
if (requireUpperCase || requireLowerCase || requireDigit || requireSpecialChar) {
|
||||||
msg.append(",且包含");
|
msg.append(",且包含");
|
||||||
boolean first = true;
|
BOOLEAN first = true;
|
||||||
|
|
||||||
if (requireUpperCase) {
|
if (requireUpperCase) {
|
||||||
msg.append("大写字母");
|
msg.append("大写字母");
|
||||||
|
|||||||
@@ -20,18 +20,18 @@ public class PhoneValidateMethod implements ValidateMethod {
|
|||||||
// 台湾手机号正则
|
// 台湾手机号正则
|
||||||
private static final Pattern TW_PHONE_PATTERN = Pattern.compile("^09\\d{8}$");
|
private static final Pattern TW_PHONE_PATTERN = Pattern.compile("^09\\d{8}$");
|
||||||
|
|
||||||
private final boolean strictMode; // 严格模式,只验证中国大陆手机号
|
private final BOOLEAN strictMode; // 严格模式,只验证中国大陆手机号
|
||||||
|
|
||||||
public PhoneValidateMethod() {
|
public PhoneValidateMethod() {
|
||||||
this.strictMode = true;
|
this.strictMode = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PhoneValidateMethod(boolean strictMode) {
|
public PhoneValidateMethod(BOOLEAN strictMode) {
|
||||||
this.strictMode = strictMode;
|
this.strictMode = strictMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,18 +16,18 @@ public class UrlValidateMethod implements ValidateMethod {
|
|||||||
"^(https?|ftp)://[a-zA-Z0-9+&@#/%?=~_|!:,.;-]*[a-zA-Z0-9+&@#/%=~_|-]$"
|
"^(https?|ftp)://[a-zA-Z0-9+&@#/%?=~_|!:,.;-]*[a-zA-Z0-9+&@#/%=~_|-]$"
|
||||||
);
|
);
|
||||||
|
|
||||||
private final boolean requireHttps; // 是否要求HTTPS
|
private final BOOLEAN requireHttps; // 是否要求HTTPS
|
||||||
|
|
||||||
public UrlValidateMethod() {
|
public UrlValidateMethod() {
|
||||||
this.requireHttps = false;
|
this.requireHttps = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UrlValidateMethod(boolean requireHttps) {
|
public UrlValidateMethod(BOOLEAN requireHttps) {
|
||||||
this.requireHttps = requireHttps;
|
this.requireHttps = requireHttps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validate(Object value) {
|
public BOOLEAN validate(Object value) {
|
||||||
if (value == null || !(value instanceof String)) {
|
if (value == null || !(value instanceof String)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ public interface ValidateMethod {
|
|||||||
/**
|
/**
|
||||||
* @description 校验方法
|
* @description 校验方法
|
||||||
* @param value 待校验的值
|
* @param value 待校验的值
|
||||||
* @return boolean 是否校验通过
|
* @return BOOLEAN 是否校验通过
|
||||||
*/
|
*/
|
||||||
boolean validate(Object value);
|
BOOLEAN validate(Object value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description 获取校验失败的错误提示信息
|
* @description 获取校验失败的错误提示信息
|
||||||
|
|||||||
@@ -56,12 +56,12 @@ public class DeptRoleController {
|
|||||||
/**
|
/**
|
||||||
* @description 删除部门
|
* @description 删除部门
|
||||||
* @param deptDTO 部门DTO
|
* @param deptDTO 部门DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-10
|
* @since 2025-11-10
|
||||||
*/
|
*/
|
||||||
@DeleteMapping("/dept")
|
@DeleteMapping("/dept")
|
||||||
public ResultDomain<Boolean> deleteDept(@RequestBody TbSysDeptDTO deptDTO) {
|
public ResultDomain<BOOLEAN> deleteDept(@RequestBody TbSysDeptDTO deptDTO) {
|
||||||
return deptRoleService.deleteDept(deptDTO);
|
return deptRoleService.deleteDept(deptDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,12 +117,12 @@ public class DeptRoleController {
|
|||||||
/**
|
/**
|
||||||
* @description 删除角色
|
* @description 删除角色
|
||||||
* @param roleDTO 角色DTO
|
* @param roleDTO 角色DTO
|
||||||
* @return ResultDomain<Boolean> 删除结果
|
* @return ResultDomain<BOOLEAN> 删除结果
|
||||||
* @author yslg
|
* @author yslg
|
||||||
* @since 2025-11-10
|
* @since 2025-11-10
|
||||||
*/
|
*/
|
||||||
@DeleteMapping("/role")
|
@DeleteMapping("/role")
|
||||||
public ResultDomain<Boolean> deleteRole(@RequestBody TbSysRoleDTO roleDTO) {
|
public ResultDomain<BOOLEAN> deleteRole(@RequestBody TbSysRoleDTO roleDTO) {
|
||||||
return deptRoleService.deleteRole(roleDTO);
|
return deptRoleService.deleteRole(roleDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class PermissionController {
|
|||||||
* @since 2025-11-10
|
* @since 2025-11-10
|
||||||
*/
|
*/
|
||||||
@DeleteMapping("/module")
|
@DeleteMapping("/module")
|
||||||
public ResultDomain<Boolean> deleteModule(@RequestBody TbSysModuleDTO moduleDTO) {
|
public ResultDomain<BOOLEAN> deleteModule(@RequestBody TbSysModuleDTO moduleDTO) {
|
||||||
return modulePermissionService.deleteModule(moduleDTO);
|
return modulePermissionService.deleteModule(moduleDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ public class PermissionController {
|
|||||||
* @since 2025-11-10
|
* @since 2025-11-10
|
||||||
*/
|
*/
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
public ResultDomain<Boolean> deletePermission(@RequestBody TbSysPermissionDTO permissionDTO) {
|
public ResultDomain<BOOLEAN> deletePermission(@RequestBody TbSysPermissionDTO permissionDTO) {
|
||||||
return modulePermissionService.deletePermission(permissionDTO);
|
return modulePermissionService.deletePermission(permissionDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class SysConfigController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
public ResultDomain<Boolean> deleteConfig(@RequestBody TbSysConfigDTO configDTO) {
|
public ResultDomain<BOOLEAN> deleteConfig(@RequestBody TbSysConfigDTO configDTO) {
|
||||||
return sysConfigService.deleteConfig(configDTO);
|
return sysConfigService.deleteConfig(configDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class UserController {
|
|||||||
|
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
@PreAuthorize("hasAuthority('system:user:delete')")
|
@PreAuthorize("hasAuthority('system:user:delete')")
|
||||||
public ResultDomain<Boolean> deleteUser(@RequestBody TbSysUserDTO userDTO) {
|
public ResultDomain<BOOLEAN> deleteUser(@RequestBody TbSysUserDTO userDTO) {
|
||||||
return sysUserService.deleteUser(userDTO);
|
return sysUserService.deleteUser(userDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public class ViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping
|
@DeleteMapping
|
||||||
public ResultDomain<Boolean> deleteView(@RequestBody TbSysViewDTO viewDTO) {
|
public ResultDomain<BOOLEAN> deleteView(@RequestBody TbSysViewDTO viewDTO) {
|
||||||
return viewService.deleteView(viewDTO);
|
return viewService.deleteView(viewDTO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,14 +104,14 @@ public class DeptRoleServiceImpl implements DeptRoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteDept(TbSysDeptDTO deptDTO) {
|
public ResultDomain<BOOLEAN> deleteDept(TbSysDeptDTO deptDTO) {
|
||||||
if (deptDTO == null || StringUtils.isBlank(deptDTO.getDeptId())) {
|
if (deptDTO == null || StringUtils.isBlank(deptDTO.getDeptId())) {
|
||||||
return ResultDomain.failure(MSG_DEPT_ID_REQUIRED);
|
return ResultDomain.failure(MSG_DEPT_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = deptMapper.deleteDept(deptDTO);
|
int rows = deptMapper.deleteDept(deptDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除部门成功, deptId={}", deptDTO.getDeptId());
|
logger.info("删除部门成功, deptId={}", deptDTO.getDeptId());
|
||||||
return ResultDomain.success("删除部门成功", Boolean.TRUE);
|
return ResultDomain.success("删除部门成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除部门失败, deptId={}", deptDTO.getDeptId());
|
logger.warn("删除部门失败, deptId={}", deptDTO.getDeptId());
|
||||||
return ResultDomain.failure("删除部门失败");
|
return ResultDomain.failure("删除部门失败");
|
||||||
@@ -203,14 +203,14 @@ public class DeptRoleServiceImpl implements DeptRoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteRole(TbSysRoleDTO roleDTO) {
|
public ResultDomain<BOOLEAN> deleteRole(TbSysRoleDTO roleDTO) {
|
||||||
if (roleDTO == null || StringUtils.isBlank(roleDTO.getRoleId())) {
|
if (roleDTO == null || StringUtils.isBlank(roleDTO.getRoleId())) {
|
||||||
return ResultDomain.failure(MSG_ROLE_ID_REQUIRED);
|
return ResultDomain.failure(MSG_ROLE_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = roleMapper.deleteRole(roleDTO);
|
int rows = roleMapper.deleteRole(roleDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除角色成功, roleId={}", roleDTO.getRoleId());
|
logger.info("删除角色成功, roleId={}", roleDTO.getRoleId());
|
||||||
return ResultDomain.success("删除角色成功", Boolean.TRUE);
|
return ResultDomain.success("删除角色成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除角色失败, roleId={}", roleDTO.getRoleId());
|
logger.warn("删除角色失败, roleId={}", roleDTO.getRoleId());
|
||||||
return ResultDomain.failure("删除角色失败");
|
return ResultDomain.failure("删除角色失败");
|
||||||
@@ -322,14 +322,14 @@ public class DeptRoleServiceImpl implements DeptRoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteDeptRole(TbSysDeptRoleDTO deptRoleDTO) {
|
public ResultDomain<BOOLEAN> deleteDeptRole(TbSysDeptRoleDTO deptRoleDTO) {
|
||||||
if (deptRoleDTO == null || StringUtils.isBlank(deptRoleDTO.getDeptId()) || StringUtils.isBlank(deptRoleDTO.getRoleId())) {
|
if (deptRoleDTO == null || StringUtils.isBlank(deptRoleDTO.getDeptId()) || StringUtils.isBlank(deptRoleDTO.getRoleId())) {
|
||||||
return ResultDomain.failure(MSG_DEPT_ROLE_ID_REQUIRED);
|
return ResultDomain.failure(MSG_DEPT_ROLE_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = deptRoleMapper.deleteDeptRole(deptRoleDTO);
|
int rows = deptRoleMapper.deleteDeptRole(deptRoleDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除部门角色关联成功, deptId={}, roleId={}", deptRoleDTO.getDeptId(), deptRoleDTO.getRoleId());
|
logger.info("删除部门角色关联成功, deptId={}, roleId={}", deptRoleDTO.getDeptId(), deptRoleDTO.getRoleId());
|
||||||
return ResultDomain.success("删除部门角色关联成功", Boolean.TRUE);
|
return ResultDomain.success("删除部门角色关联成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除部门角色关联失败, deptId={}, roleId={}", deptRoleDTO.getDeptId(), deptRoleDTO.getRoleId());
|
logger.warn("删除部门角色关联失败, deptId={}, roleId={}", deptRoleDTO.getDeptId(), deptRoleDTO.getRoleId());
|
||||||
return ResultDomain.failure("删除部门角色关联失败");
|
return ResultDomain.failure("删除部门角色关联失败");
|
||||||
|
|||||||
@@ -94,14 +94,14 @@ public class ModulePermissionServiceImpl implements ModulePermissionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteModule(TbSysModuleDTO moduleDTO) {
|
public ResultDomain<BOOLEAN> deleteModule(TbSysModuleDTO moduleDTO) {
|
||||||
if (moduleDTO == null || StringUtils.isBlank(moduleDTO.getModuleId())) {
|
if (moduleDTO == null || StringUtils.isBlank(moduleDTO.getModuleId())) {
|
||||||
return ResultDomain.failure(MSG_MODULE_ID_REQUIRED);
|
return ResultDomain.failure(MSG_MODULE_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = moduleMapper.deleteModule(moduleDTO);
|
int rows = moduleMapper.deleteModule(moduleDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除模块成功, moduleId={}", moduleDTO.getModuleId());
|
logger.info("删除模块成功, moduleId={}", moduleDTO.getModuleId());
|
||||||
return ResultDomain.success("删除模块成功", Boolean.TRUE);
|
return ResultDomain.success("删除模块成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除模块失败, moduleId={}", moduleDTO.getModuleId());
|
logger.warn("删除模块失败, moduleId={}", moduleDTO.getModuleId());
|
||||||
return ResultDomain.failure("删除模块失败");
|
return ResultDomain.failure("删除模块失败");
|
||||||
@@ -171,14 +171,14 @@ public class ModulePermissionServiceImpl implements ModulePermissionService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deletePermission(TbSysPermissionDTO permissionDTO) {
|
public ResultDomain<BOOLEAN> deletePermission(TbSysPermissionDTO permissionDTO) {
|
||||||
if (permissionDTO == null || StringUtils.isBlank(permissionDTO.getPermissionId())) {
|
if (permissionDTO == null || StringUtils.isBlank(permissionDTO.getPermissionId())) {
|
||||||
return ResultDomain.failure(MSG_PERMISSION_ID_REQUIRED);
|
return ResultDomain.failure(MSG_PERMISSION_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = permissionMapper.deletePermission(permissionDTO);
|
int rows = permissionMapper.deletePermission(permissionDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除权限成功, permissionId={}", permissionDTO.getPermissionId());
|
logger.info("删除权限成功, permissionId={}", permissionDTO.getPermissionId());
|
||||||
return ResultDomain.success("删除权限成功", Boolean.TRUE);
|
return ResultDomain.success("删除权限成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除权限失败, permissionId={}", permissionDTO.getPermissionId());
|
logger.warn("删除权限失败, permissionId={}", permissionDTO.getPermissionId());
|
||||||
return ResultDomain.failure("删除权限失败");
|
return ResultDomain.failure("删除权限失败");
|
||||||
|
|||||||
@@ -80,14 +80,14 @@ public class SysConfigServiceImpl implements SysConfigService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteConfig(TbSysConfigDTO configDTO) {
|
public ResultDomain<BOOLEAN> deleteConfig(TbSysConfigDTO configDTO) {
|
||||||
if (configDTO == null || StringUtils.isBlank(configDTO.getConfigId())) {
|
if (configDTO == null || StringUtils.isBlank(configDTO.getConfigId())) {
|
||||||
return ResultDomain.failure(MSG_CONFIG_ID_REQUIRED);
|
return ResultDomain.failure(MSG_CONFIG_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = configMapper.deleteConfig(configDTO);
|
int rows = configMapper.deleteConfig(configDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除配置成功, configId={}", configDTO.getConfigId());
|
logger.info("删除配置成功, configId={}", configDTO.getConfigId());
|
||||||
return ResultDomain.success("删除配置成功", Boolean.TRUE);
|
return ResultDomain.success("删除配置成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除配置失败, configId={}", configDTO.getConfigId());
|
logger.warn("删除配置失败, configId={}", configDTO.getConfigId());
|
||||||
return ResultDomain.failure("删除配置失败");
|
return ResultDomain.failure("删除配置失败");
|
||||||
|
|||||||
@@ -93,14 +93,14 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteUser(TbSysUserDTO userDTO) {
|
public ResultDomain<BOOLEAN> deleteUser(TbSysUserDTO userDTO) {
|
||||||
if (userDTO == null || StringUtils.isBlank(userDTO.getUserId())) {
|
if (userDTO == null || StringUtils.isBlank(userDTO.getUserId())) {
|
||||||
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = userMapper.deleteUser(userDTO);
|
int rows = userMapper.deleteUser(userDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除用户成功, userId={}", userDTO.getUserId());
|
logger.info("删除用户成功, userId={}", userDTO.getUserId());
|
||||||
return ResultDomain.success("删除用户成功", Boolean.TRUE);
|
return ResultDomain.success("删除用户成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除用户失败, userId={}", userDTO.getUserId());
|
logger.warn("删除用户失败, userId={}", userDTO.getUserId());
|
||||||
return ResultDomain.failure("删除用户失败");
|
return ResultDomain.failure("删除用户失败");
|
||||||
@@ -168,7 +168,7 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> updateUserPassword(String userId, String oldPassword, String newPassword) {
|
public ResultDomain<BOOLEAN> updateUserPassword(String userId, String oldPassword, String newPassword) {
|
||||||
if (StringUtils.isBlank(userId)) {
|
if (StringUtils.isBlank(userId)) {
|
||||||
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
int rows = userMapper.updateUser(dto);
|
int rows = userMapper.updateUser(dto);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("更新用户密码成功, userId={}", userId);
|
logger.info("更新用户密码成功, userId={}", userId);
|
||||||
return ResultDomain.success("更新用户密码成功", Boolean.TRUE);
|
return ResultDomain.success("更新用户密码成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("更新用户密码失败, userId={}", userId);
|
logger.warn("更新用户密码失败, userId={}", userId);
|
||||||
return ResultDomain.failure("更新用户密码失败");
|
return ResultDomain.failure("更新用户密码失败");
|
||||||
@@ -211,7 +211,7 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> updateUserStatus(String userId, String status) {
|
public ResultDomain<BOOLEAN> updateUserStatus(String userId, String status) {
|
||||||
if (StringUtils.isBlank(userId)) {
|
if (StringUtils.isBlank(userId)) {
|
||||||
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
@@ -222,7 +222,7 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
int rows = userMapper.updateUser(dto);
|
int rows = userMapper.updateUser(dto);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("更新用户状态成功, userId={}", userId);
|
logger.info("更新用户状态成功, userId={}", userId);
|
||||||
return ResultDomain.success("更新用户状态成功", Boolean.TRUE);
|
return ResultDomain.success("更新用户状态成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("更新用户状态失败, userId={}", userId);
|
logger.warn("更新用户状态失败, userId={}", userId);
|
||||||
return ResultDomain.failure("更新用户状态失败");
|
return ResultDomain.failure("更新用户状态失败");
|
||||||
@@ -290,21 +290,21 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> removeUserRole(TbSysUserRoleDTO userRoleDTO) {
|
public ResultDomain<BOOLEAN> removeUserRole(TbSysUserRoleDTO userRoleDTO) {
|
||||||
if (userRoleDTO == null || StringUtils.isBlank(userRoleDTO.getUserId()) || StringUtils.isBlank(userRoleDTO.getRoleId())) {
|
if (userRoleDTO == null || StringUtils.isBlank(userRoleDTO.getUserId()) || StringUtils.isBlank(userRoleDTO.getRoleId())) {
|
||||||
return ResultDomain.failure("用户ID和角色ID不能为空");
|
return ResultDomain.failure("用户ID和角色ID不能为空");
|
||||||
}
|
}
|
||||||
int rows = userRoleMapper.deleteUserRole(userRoleDTO);
|
int rows = userRoleMapper.deleteUserRole(userRoleDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除用户角色关联成功, userId={}, roleId={}", userRoleDTO.getUserId(), userRoleDTO.getRoleId());
|
logger.info("删除用户角色关联成功, userId={}, roleId={}", userRoleDTO.getUserId(), userRoleDTO.getRoleId());
|
||||||
return ResultDomain.success("删除用户角色关联成功", Boolean.TRUE);
|
return ResultDomain.success("删除用户角色关联成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除用户角色关联失败, userId={}, roleId={}", userRoleDTO.getUserId(), userRoleDTO.getRoleId());
|
logger.warn("删除用户角色关联失败, userId={}, roleId={}", userRoleDTO.getUserId(), userRoleDTO.getRoleId());
|
||||||
return ResultDomain.failure("删除用户角色关联失败");
|
return ResultDomain.failure("删除用户角色关联失败");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> setUserRoles(String userId, String[] roleIds) {
|
public ResultDomain<BOOLEAN> setUserRoles(String userId, String[] roleIds) {
|
||||||
if (StringUtils.isBlank(userId)) {
|
if (StringUtils.isBlank(userId)) {
|
||||||
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
return ResultDomain.failure(MSG_USER_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
@@ -337,7 +337,7 @@ public class SysUserServiceImpl implements SysUserService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.info("设置用户角色成功, userId={}, count={}", userId, roleIds == null ? 0 : roleIds.length);
|
logger.info("设置用户角色成功, userId={}, count={}", userId, roleIds == null ? 0 : roleIds.length);
|
||||||
return ResultDomain.success("设置用户角色成功", Boolean.TRUE);
|
return ResultDomain.success("设置用户角色成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -83,14 +83,14 @@ public class ViewServiceImpl implements ViewService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResultDomain<Boolean> deleteView(TbSysViewDTO viewDTO) {
|
public ResultDomain<BOOLEAN> deleteView(TbSysViewDTO viewDTO) {
|
||||||
if (viewDTO == null || StringUtils.isBlank(viewDTO.getViewId())) {
|
if (viewDTO == null || StringUtils.isBlank(viewDTO.getViewId())) {
|
||||||
return ResultDomain.failure(MSG_VIEW_ID_REQUIRED);
|
return ResultDomain.failure(MSG_VIEW_ID_REQUIRED);
|
||||||
}
|
}
|
||||||
int rows = viewMapper.deleteView(viewDTO);
|
int rows = viewMapper.deleteView(viewDTO);
|
||||||
if (rows > 0) {
|
if (rows > 0) {
|
||||||
logger.info("删除视图成功, viewId={}", viewDTO.getViewId());
|
logger.info("删除视图成功, viewId={}", viewDTO.getViewId());
|
||||||
return ResultDomain.success("删除视图成功", Boolean.TRUE);
|
return ResultDomain.success("删除视图成功", BOOLEAN.TRUE);
|
||||||
}
|
}
|
||||||
logger.warn("删除视图失败, viewId={}", viewDTO.getViewId());
|
logger.warn("删除视图失败, viewId={}", viewDTO.getViewId());
|
||||||
return ResultDomain.failure("删除视图失败");
|
return ResultDomain.failure("删除视图失败");
|
||||||
|
|||||||
@@ -247,7 +247,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统访问控制列表数量 -->
|
<!-- 根据条件查询系统访问控制列表数量 -->
|
||||||
<select id="getAclCountByFilter" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysAclDTO">
|
<select id="getAclCountByFilter" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysAclDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_acl
|
FROM sys.tb_sys_acl
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -213,7 +213,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统访问控制策略数量 -->
|
<!-- 根据条件查询系统访问控制策略数量 -->
|
||||||
<select id="getAclPolicyCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysAclPolicyDTO">
|
<select id="getAclPolicyCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysAclPolicyDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_acl_policy
|
FROM sys.tb_sys_acl_policy
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -228,7 +228,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统配置数量 -->
|
<!-- 根据条件查询系统配置数量 -->
|
||||||
<select id="getConfigCount" resultType="java.lang.Integer" parameterType="TbSysConfigDTO">
|
<select id="getConfigCount" resultType="java.lang.INTEGER" parameterType="TbSysConfigDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM config.tb_sys_config
|
FROM config.tb_sys_config
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -172,7 +172,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统部门数量 -->
|
<!-- 根据条件查询系统部门数量 -->
|
||||||
<select id="getDeptCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysDeptDTO">
|
<select id="getDeptCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysDeptDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_dept
|
FROM sys.tb_sys_dept
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -182,7 +182,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统部门角色关系数量 -->
|
<!-- 根据条件查询系统部门角色关系数量 -->
|
||||||
<select id="getDeptRoleCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysDeptRoleDTO">
|
<select id="getDeptRoleCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysDeptRoleDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_dept_role
|
FROM sys.tb_sys_dept_role
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -168,7 +168,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统模块数量 -->
|
<!-- 根据条件查询系统模块数量 -->
|
||||||
<select id="getModuleCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysModuleDTO">
|
<select id="getModuleCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysModuleDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_module
|
FROM sys.tb_sys_module
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -219,7 +219,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统权限数量 -->
|
<!-- 根据条件查询系统权限数量 -->
|
||||||
<select id="getPermissionCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysPermissionDTO">
|
<select id="getPermissionCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysPermissionDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_permission
|
FROM sys.tb_sys_permission
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -200,7 +200,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统视图权限关系数量 -->
|
<!-- 根据条件查询系统视图权限关系数量 -->
|
||||||
<select id="getViewPermissionCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysViewPermissionDTO">
|
<select id="getViewPermissionCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysViewPermissionDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_view_permission
|
FROM sys.tb_sys_view_permission
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -198,7 +198,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统角色数量 -->
|
<!-- 根据条件查询系统角色数量 -->
|
||||||
<select id="getRoleCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysRoleDTO">
|
<select id="getRoleCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysRoleDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_role
|
FROM sys.tb_sys_role
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -207,7 +207,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统角色权限关系数量 -->
|
<!-- 根据条件查询系统角色权限关系数量 -->
|
||||||
<select id="getRolePermissionCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysRolePermissionDTO">
|
<select id="getRolePermissionCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysRolePermissionDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_role_permission
|
FROM sys.tb_sys_role_permission
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -204,7 +204,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统用户信息数量 -->
|
<!-- 根据条件查询系统用户信息数量 -->
|
||||||
<select id="getUserInfoCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysUserInfoDTO">
|
<select id="getUserInfoCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysUserInfoDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_user_info
|
FROM sys.tb_sys_user_info
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -216,7 +216,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询用户数量 -->
|
<!-- 根据条件查询用户数量 -->
|
||||||
<select id="getUserCountByFilter" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysUserDTO">
|
<select id="getUserCountByFilter" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysUserDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_user
|
FROM sys.tb_sys_user
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -226,7 +226,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统用户角色关系数量 -->
|
<!-- 根据条件查询系统用户角色关系数量 -->
|
||||||
<select id="getUserRoleCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysUserRoleDTO">
|
<select id="getUserRoleCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysUserRoleDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_user_role
|
FROM sys.tb_sys_user_role
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
@@ -204,7 +204,7 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 根据条件查询系统视图数量 -->
|
<!-- 根据条件查询系统视图数量 -->
|
||||||
<select id="getViewCount" resultType="java.lang.Integer" parameterType="org.xyzh.common.dto.sys.TbSysViewDTO">
|
<select id="getViewCount" resultType="java.lang.INTEGER" parameterType="org.xyzh.common.dto.sys.TbSysViewDTO">
|
||||||
SELECT COUNT(1)
|
SELECT COUNT(1)
|
||||||
FROM sys.tb_sys_view
|
FROM sys.tb_sys_view
|
||||||
<where>
|
<where>
|
||||||
|
|||||||
Reference in New Issue
Block a user