From 8a02401a24b546f2a6aab04cf05371ecb4236ca0 Mon Sep 17 00:00:00 2001
From: Charles7c <charles7c@126.com>
Date: Sun, 17 Sep 2023 23:53:25 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20:boom:=20=E4=BC=98=E5=8C=96?=
 =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E5=86=85=E7=BD=AE=E7=B1=BB=E5=9E=8B=E6=95=B0?=
 =?UTF-8?q?=E6=8D=AE=E6=A0=87=E8=AF=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

1.系统内置类型数据标识由 type 调整为 is_system
2.优化部分表的非空字段
---
 .../cnadmin/common/enums/DataTypeEnum.java    | 44 -------------------
 .../cnadmin/system/model/entity/DeptDO.java   |  5 +--
 .../cnadmin/system/model/entity/DictDO.java   |  5 +++
 .../cnadmin/system/model/entity/RoleDO.java   |  5 +--
 .../cnadmin/system/model/entity/UserDO.java   |  5 +--
 .../cnadmin/system/model/vo/DeptDetailVO.java | 11 +++--
 .../cnadmin/system/model/vo/DeptVO.java       |  9 ++--
 .../cnadmin/system/model/vo/DictDetailVO.java |  6 +++
 .../cnadmin/system/model/vo/DictVO.java       |  6 +++
 .../cnadmin/system/model/vo/RoleDetailVO.java | 11 +++--
 .../cnadmin/system/model/vo/RoleVO.java       |  9 ++--
 .../cnadmin/system/model/vo/UserDetailVO.java | 11 +++--
 .../cnadmin/system/model/vo/UserVO.java       |  9 ++--
 .../system/service/impl/DeptServiceImpl.java  |  7 ++-
 .../system/service/impl/DictServiceImpl.java  | 11 +++++
 .../system/service/impl/RoleServiceImpl.java  |  7 ++-
 .../system/service/impl/UserServiceImpl.java  |  7 ++-
 continew-admin-ui/src/api/system/dept.ts      |  2 +-
 continew-admin-ui/src/api/system/dict.ts      |  1 +
 continew-admin-ui/src/api/system/role.ts      |  2 +-
 continew-admin-ui/src/api/system/user.ts      |  2 +-
 .../src/views/system/dept/index.vue           |  8 ++--
 .../src/views/system/dict/index.vue           |  7 +--
 .../src/views/system/role/index.vue           |  8 ++--
 .../src/views/system/user/index.vue           |  8 ++--
 .../changelog/v1.0.0/continew-admin_data.sql  | 30 ++++++-------
 .../changelog/v1.0.0/continew-admin_table.sql | 40 ++++++++---------
 .../changelog/v1.1.0/continew-admin_table.sql | 12 ++---
 .../changelog/v1.2.0/continew-admin_data.sql  |  4 +-
 .../changelog/v1.2.0/continew-admin_table.sql |  3 +-
 30 files changed, 135 insertions(+), 160 deletions(-)
 delete mode 100644 continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/DataTypeEnum.java

diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/DataTypeEnum.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/DataTypeEnum.java
deleted file mode 100644
index 591e277e..00000000
--- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/DataTypeEnum.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package top.charles7c.cnadmin.common.enums;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-import top.charles7c.cnadmin.common.base.BaseEnum;
-import top.charles7c.cnadmin.common.constant.UIConsts;
-
-/**
- * 数据类型枚举
- *
- * @author Charles7c
- * @since 2023/3/19 12:17
- */
-@Getter
-@RequiredArgsConstructor
-public enum DataTypeEnum implements BaseEnum<Integer> {
-
-    /** 系统内置 */
-    SYSTEM(1, "系统内置", UIConsts.COLOR_ERROR),
-
-    /** 自定义 */
-    CUSTOM(2, "自定义", UIConsts.COLOR_PRIMARY),;
-
-    private final Integer value;
-    private final String description;
-    private final String color;
-}
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DeptDO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DeptDO.java
index 7cbb2e5f..3cbff126 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DeptDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DeptDO.java
@@ -21,7 +21,6 @@ import lombok.Data;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import top.charles7c.cnadmin.common.base.BaseDO;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 
 /**
@@ -67,7 +66,7 @@ public class DeptDO extends BaseDO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    private DataTypeEnum type;
+    private Boolean isSystem;
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DictDO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DictDO.java
index d1b5da9e..ded98c7c 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DictDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/DictDO.java
@@ -48,4 +48,9 @@ public class DictDO extends BaseDO {
      * 描述
      */
     private String description;
+
+    /**
+     * 是否为系统内置数据
+     */
+    private Boolean isSystem;
 }
\ No newline at end of file
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/RoleDO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/RoleDO.java
index b08c7977..e914c263 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/RoleDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/RoleDO.java
@@ -22,7 +22,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 
 import top.charles7c.cnadmin.common.base.BaseDO;
 import top.charles7c.cnadmin.common.enums.DataScopeEnum;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 
 /**
@@ -68,7 +67,7 @@ public class RoleDO extends BaseDO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    private DataTypeEnum type;
+    private Boolean isSystem;
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/UserDO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/UserDO.java
index 086afbe8..919bb206 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/UserDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/entity/UserDO.java
@@ -23,7 +23,6 @@ import lombok.Data;
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import top.charles7c.cnadmin.common.base.BaseDO;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 import top.charles7c.cnadmin.common.enums.GenderEnum;
 
@@ -85,9 +84,9 @@ public class UserDO extends BaseDO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    private DataTypeEnum type;
+    private Boolean isSystem;
 
     /**
      * 最后一次修改密码时间
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptDetailVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptDetailVO.java
index 7e0790cf..b95a35e7 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptDetailVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptDetailVO.java
@@ -26,7 +26,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
 
 import top.charles7c.cnadmin.common.base.BaseDetailVO;
 import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 
 /**
@@ -77,11 +76,11 @@ public class DeptDetailVO extends BaseDetailVO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    @Schema(description = "类型(1:系统内置,2:自定义)", type = "Integer", allowableValues = {"1", "2"}, example = "2")
-    @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class)
-    private DataTypeEnum type;
+    @Schema(description = "是否为系统内置数据", example = "false")
+    @ExcelProperty(value = "系统内置")
+    private Boolean isSystem;
 
     /**
      * 描述
@@ -92,6 +91,6 @@ public class DeptDetailVO extends BaseDetailVO {
 
     @Override
     public Boolean getDisabled() {
-        return DataTypeEnum.SYSTEM.equals(type);
+        return this.getIsSystem();
     }
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptVO.java
index fa983d1f..7c36ea24 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DeptVO.java
@@ -22,7 +22,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
 
 import top.charles7c.cnadmin.common.annotation.TreeField;
 import top.charles7c.cnadmin.common.base.BaseVO;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 
 /**
@@ -63,10 +62,10 @@ public class DeptVO extends BaseVO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    @Schema(description = "类型(1:系统内置,2:自定义)", type = "Integer", allowableValues = {"1", "2"}, example = "2")
-    private DataTypeEnum type;
+    @Schema(description = "是否为系统内置数据", example = "false")
+    private Boolean isSystem;
 
     /**
      * 描述
@@ -76,6 +75,6 @@ public class DeptVO extends BaseVO {
 
     @Override
     public Boolean getDisabled() {
-        return DataTypeEnum.SYSTEM.equals(type);
+        return this.getIsSystem();
     }
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictDetailVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictDetailVO.java
index 15ec3930..a5cb4b10 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictDetailVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictDetailVO.java
@@ -51,4 +51,10 @@ public class DictDetailVO extends BaseDetailVO {
      */
     @Schema(description = "描述", example = "公告类型描述信息")
     private String description;
+
+    /**
+     * 是否为系统内置数据
+     */
+    @Schema(description = "是否为系统内置数据", example = "true")
+    private Boolean isSystem;
 }
\ No newline at end of file
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictVO.java
index 121c13f2..1c9688fc 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/DictVO.java
@@ -51,4 +51,10 @@ public class DictVO extends BaseVO {
      */
     @Schema(description = "描述", example = "公告类型描述信息")
     private String description;
+
+    /**
+     * 是否为系统内置数据
+     */
+    @Schema(description = "是否为系统内置数据", example = "true")
+    private Boolean isSystem;
 }
\ No newline at end of file
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleDetailVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleDetailVO.java
index ae49cb47..9884fab3 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleDetailVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleDetailVO.java
@@ -28,7 +28,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import top.charles7c.cnadmin.common.base.BaseDetailVO;
 import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter;
 import top.charles7c.cnadmin.common.enums.DataScopeEnum;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 
 /**
@@ -81,11 +80,11 @@ public class RoleDetailVO extends BaseDetailVO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    @Schema(description = "类型(1:系统内置,2:自定义)", example = "2")
-    @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class)
-    private DataTypeEnum type;
+    @Schema(description = "是否为系统内置数据", example = "false")
+    @ExcelProperty(value = "系统内置")
+    private Boolean isSystem;
 
     /**
      * 描述
@@ -108,6 +107,6 @@ public class RoleDetailVO extends BaseDetailVO {
 
     @Override
     public Boolean getDisabled() {
-        return DataTypeEnum.SYSTEM.equals(type);
+        return this.getIsSystem();
     }
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleVO.java
index cf2659f2..8d8f495f 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/RoleVO.java
@@ -22,7 +22,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
 
 import top.charles7c.cnadmin.common.base.BaseVO;
 import top.charles7c.cnadmin.common.enums.DataScopeEnum;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 
 /**
@@ -69,10 +68,10 @@ public class RoleVO extends BaseVO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    @Schema(description = "类型(1:系统内置,2:自定义)", type = "Integer", allowableValues = {"1", "2"}, example = "2")
-    private DataTypeEnum type;
+    @Schema(description = "是否为系统内置数据", example = "false")
+    private Boolean isSystem;
 
     /**
      * 描述
@@ -82,6 +81,6 @@ public class RoleVO extends BaseVO {
 
     @Override
     public Boolean getDisabled() {
-        return DataTypeEnum.SYSTEM.equals(type);
+        return this.getIsSystem();
     }
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserDetailVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserDetailVO.java
index bb60905a..4f01b1a0 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserDetailVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserDetailVO.java
@@ -29,7 +29,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
 
 import top.charles7c.cnadmin.common.base.BaseDetailVO;
 import top.charles7c.cnadmin.common.config.easyexcel.ExcelBaseEnumConverter;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 import top.charles7c.cnadmin.common.enums.GenderEnum;
 import top.charles7c.cnadmin.common.util.helper.LoginHelper;
@@ -98,11 +97,11 @@ public class UserDetailVO extends BaseDetailVO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    @Schema(description = "类型(1:系统内置,2:自定义)", type = "Integer", allowableValues = {"1", "2"}, example = "2")
-    @ExcelProperty(value = "类型", converter = ExcelBaseEnumConverter.class)
-    private DataTypeEnum type;
+    @Schema(description = "系统内置", example = "false")
+    @ExcelProperty(value = "系统内置")
+    private Boolean isSystem;
 
     /**
      * 描述
@@ -145,6 +144,6 @@ public class UserDetailVO extends BaseDetailVO {
 
     @Override
     public Boolean getDisabled() {
-        return DataTypeEnum.SYSTEM.equals(type) || Objects.equals(this.getId(), LoginHelper.getUserId());
+        return this.getIsSystem() || Objects.equals(this.getId(), LoginHelper.getUserId());
     }
 }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserVO.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserVO.java
index 4e5d06a1..ab701582 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserVO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/vo/UserVO.java
@@ -25,7 +25,6 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import cn.hutool.core.util.DesensitizedUtil;
 
 import top.charles7c.cnadmin.common.base.BaseVO;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 import top.charles7c.cnadmin.common.enums.GenderEnum;
 import top.charles7c.cnadmin.common.util.helper.LoginHelper;
@@ -86,10 +85,10 @@ public class UserVO extends BaseVO {
     private DisEnableStatusEnum status;
 
     /**
-     * 类型(1:系统内置,2:自定义)
+     * 是否为系统内置数据
      */
-    @Schema(description = "类型(1:系统内置,2:自定义)", type = "Integer", allowableValues = {"1", "2"}, example = "2")
-    private DataTypeEnum type;
+    @Schema(description = "是否为系统内置数据", example = "false")
+    private Boolean isSystem;
 
     /**
      * 描述
@@ -99,7 +98,7 @@ public class UserVO extends BaseVO {
 
     @Override
     public Boolean getDisabled() {
-        return Objects.equals(this.getId(), LoginHelper.getUserId());
+        return this.getIsSystem() || Objects.equals(this.getId(), LoginHelper.getUserId());
     }
 
     public String getPhone() {
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java
index fec0ac6c..e65abda1 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DeptServiceImpl.java
@@ -33,7 +33,6 @@ import cn.hutool.core.util.ObjectUtil;
 
 import top.charles7c.cnadmin.common.base.BaseServiceImpl;
 import top.charles7c.cnadmin.common.constant.SysConsts;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 import top.charles7c.cnadmin.common.util.ExceptionUtils;
 import top.charles7c.cnadmin.common.util.validate.CheckUtils;
@@ -83,7 +82,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
         String oldName = oldDept.getName();
         DisEnableStatusEnum newStatus = request.getStatus();
         Long oldParentId = oldDept.getParentId();
-        if (DataTypeEnum.SYSTEM.equals(oldDept.getType())) {
+        if (oldDept.getIsSystem()) {
             CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, newStatus, "[{}] 是系统内置部门,不允许禁用", oldName);
             CheckUtils.throwIfNotEqual(request.getParentId(), oldParentId, "[{}] 是系统内置部门,不允许变更上级部门", oldName);
         }
@@ -113,8 +112,8 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
     @Transactional(rollbackFor = Exception.class)
     public void delete(List<Long> ids) {
         List<DeptDO> list =
-            baseMapper.lambdaQuery().select(DeptDO::getName, DeptDO::getType).in(DeptDO::getId, ids).list();
-        Optional<DeptDO> isSystemData = list.stream().filter(d -> DataTypeEnum.SYSTEM.equals(d.getType())).findFirst();
+            baseMapper.lambdaQuery().select(DeptDO::getName, DeptDO::getIsSystem).in(DeptDO::getId, ids).list();
+        Optional<DeptDO> isSystemData = list.stream().filter(DeptDO::getIsSystem).findFirst();
         CheckUtils.throwIf(isSystemData::isPresent, "所选部门 [{}] 是系统内置部门,不允许删除",
             isSystemData.orElseGet(DeptDO::new).getName());
         CheckUtils.throwIf(this.countChildren(ids) > 0, "所选部门存在下级部门,不允许删除");
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictServiceImpl.java
index 7b4f1f51..f878c5ec 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/DictServiceImpl.java
@@ -18,6 +18,7 @@ package top.charles7c.cnadmin.system.service.impl;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 import javax.servlet.http.HttpServletResponse;
 
@@ -68,12 +69,22 @@ public class DictServiceImpl extends BaseServiceImpl<DictMapper, DictDO, DictVO,
         CheckUtils.throwIf(this.checkNameExists(name, id), "修改失败,[{}] 已存在", name);
         String code = request.getCode();
         CheckUtils.throwIf(this.checkCodeExists(code, id), "修改失败,[{}] 已存在", code);
+        DictDO oldDict = super.getById(id);
+        if (oldDict.getIsSystem()) {
+            CheckUtils.throwIfNotEqual(request.getCode(), oldDict.getCode(), "[{}] 是系统内置字典,不允许修改字典编码",
+                oldDict.getName());
+        }
         super.update(request, id);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void delete(List<Long> ids) {
+        List<DictDO> list =
+            baseMapper.lambdaQuery().select(DictDO::getName, DictDO::getIsSystem).in(DictDO::getId, ids).list();
+        Optional<DictDO> isSystemData = list.stream().filter(DictDO::getIsSystem).findFirst();
+        CheckUtils.throwIf(isSystemData::isPresent, "所选字典 [{}] 是系统内置字典,不允许删除",
+            isSystemData.orElseGet(DictDO::new).getName());
         dictItemService.deleteByDictIds(ids);
         super.delete(ids);
     }
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java
index e5b5b5fb..d6a9010d 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/RoleServiceImpl.java
@@ -34,7 +34,6 @@ import top.charles7c.cnadmin.common.base.BaseServiceImpl;
 import top.charles7c.cnadmin.common.constant.CacheConsts;
 import top.charles7c.cnadmin.common.constant.SysConsts;
 import top.charles7c.cnadmin.common.enums.DataScopeEnum;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 import top.charles7c.cnadmin.common.model.dto.RoleDTO;
 import top.charles7c.cnadmin.common.model.vo.LabelValueVO;
@@ -93,7 +92,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO,
         RoleDO oldRole = super.getById(id);
         DataScopeEnum oldDataScope = oldRole.getDataScope();
         String oldCode = oldRole.getCode();
-        if (DataTypeEnum.SYSTEM.equals(oldRole.getType())) {
+        if (oldRole.getIsSystem()) {
             CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, request.getStatus(), "[{}] 是系统内置角色,不允许禁用",
                 oldRole.getName());
             CheckUtils.throwIfNotEqual(request.getCode(), oldCode, "[{}] 是系统内置角色,不允许修改角色编码", oldRole.getName());
@@ -121,8 +120,8 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO,
     @Transactional(rollbackFor = Exception.class)
     public void delete(List<Long> ids) {
         List<RoleDO> list =
-            baseMapper.lambdaQuery().select(RoleDO::getName, RoleDO::getType).in(RoleDO::getId, ids).list();
-        Optional<RoleDO> isSystemData = list.stream().filter(r -> DataTypeEnum.SYSTEM.equals(r.getType())).findFirst();
+            baseMapper.lambdaQuery().select(RoleDO::getName, RoleDO::getIsSystem).in(RoleDO::getId, ids).list();
+        Optional<RoleDO> isSystemData = list.stream().filter(RoleDO::getIsSystem).findFirst();
         CheckUtils.throwIf(isSystemData::isPresent, "所选角色 [{}] 是系统内置角色,不允许删除",
             isSystemData.orElseGet(RoleDO::new).getName());
         CheckUtils.throwIf(userRoleService.countByRoleIds(ids) > 0, "所选角色存在用户关联,请解除关联后重试");
diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java
index 876e0ebf..c3cd8142 100644
--- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java
@@ -44,7 +44,6 @@ import top.charles7c.cnadmin.common.constant.CacheConsts;
 import top.charles7c.cnadmin.common.constant.FileConsts;
 import top.charles7c.cnadmin.common.constant.StringConsts;
 import top.charles7c.cnadmin.common.constant.SysConsts;
-import top.charles7c.cnadmin.common.enums.DataTypeEnum;
 import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
 import top.charles7c.cnadmin.common.service.CommonUserService;
 import top.charles7c.cnadmin.common.util.ExceptionUtils;
@@ -117,7 +116,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO,
             DisEnableStatusEnum.DISABLE.equals(newStatus) && ObjectUtil.equal(id, LoginHelper.getUserId()),
             "不允许禁用当前用户");
         UserDO oldUser = super.getById(id);
-        if (DataTypeEnum.SYSTEM.equals(oldUser.getType())) {
+        if (oldUser.getIsSystem()) {
             CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, newStatus, "[{}] 是系统内置用户,不允许禁用",
                 oldUser.getNickname());
             Collection<Long> disjunctionRoleIds =
@@ -135,8 +134,8 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO,
     public void delete(List<Long> ids) {
         CheckUtils.throwIf(CollUtil.contains(ids, LoginHelper.getUserId()), "不允许删除当前用户");
         List<UserDO> list =
-            baseMapper.lambdaQuery().select(UserDO::getNickname, UserDO::getType).in(UserDO::getId, ids).list();
-        Optional<UserDO> isSystemData = list.stream().filter(u -> DataTypeEnum.SYSTEM.equals(u.getType())).findFirst();
+            baseMapper.lambdaQuery().select(UserDO::getNickname, UserDO::getIsSystem).in(UserDO::getId, ids).list();
+        Optional<UserDO> isSystemData = list.stream().filter(UserDO::getIsSystem).findFirst();
         CheckUtils.throwIf(isSystemData::isPresent, "所选用户 [{}] 是系统内置用户,不允许删除",
             isSystemData.orElseGet(UserDO::new).getNickname());
         // 删除用户和角色关联
diff --git a/continew-admin-ui/src/api/system/dept.ts b/continew-admin-ui/src/api/system/dept.ts
index 53ddc774..06846e32 100644
--- a/continew-admin-ui/src/api/system/dept.ts
+++ b/continew-admin-ui/src/api/system/dept.ts
@@ -10,7 +10,7 @@ export interface DataRecord {
   description?: string;
   sort: number;
   status?: number;
-  type?: number;
+  isSystem?: boolean;
   createUserString?: string;
   createTime?: string;
   updateUserString?: string;
diff --git a/continew-admin-ui/src/api/system/dict.ts b/continew-admin-ui/src/api/system/dict.ts
index ee11112f..b6268bb0 100644
--- a/continew-admin-ui/src/api/system/dict.ts
+++ b/continew-admin-ui/src/api/system/dict.ts
@@ -8,6 +8,7 @@ export interface DataRecord {
   name: string;
   code: string;
   description?: string;
+  isSystem: boolean;
   createUser?: string;
   createTime?: string;
   updateUser?: string;
diff --git a/continew-admin-ui/src/api/system/role.ts b/continew-admin-ui/src/api/system/role.ts
index 7d5ae62f..4aeccd99 100644
--- a/continew-admin-ui/src/api/system/role.ts
+++ b/continew-admin-ui/src/api/system/role.ts
@@ -13,7 +13,7 @@ export interface DataRecord {
   dataScope: number;
   deptIds?: Array<number>;
   status?: number;
-  type?: number;
+  isSystem?: boolean;
   createUserString?: string;
   createTime?: string;
   updateUserString?: string;
diff --git a/continew-admin-ui/src/api/system/user.ts b/continew-admin-ui/src/api/system/user.ts
index 4f89f12a..3f01dca3 100644
--- a/continew-admin-ui/src/api/system/user.ts
+++ b/continew-admin-ui/src/api/system/user.ts
@@ -12,7 +12,7 @@ export interface DataRecord {
   phone?: string;
   description?: string;
   status?: number;
-  type?: number;
+  isSystem?: boolean;
   pwdResetTime?: string;
   createUserString?: string;
   createTime?: string;
diff --git a/continew-admin-ui/src/views/system/dept/index.vue b/continew-admin-ui/src/views/system/dept/index.vue
index bcd856d3..9698fac1 100644
--- a/continew-admin-ui/src/views/system/dept/index.vue
+++ b/continew-admin-ui/src/views/system/dept/index.vue
@@ -131,10 +131,10 @@
               />
             </template>
           </a-table-column>
-          <a-table-column title="类型" align="center">
+          <a-table-column title="系统内置" align="center">
             <template #cell="{ record }">
-              <a-tag v-if="record.type === 1" color="red">系统内置</a-tag>
-              <a-tag v-else color="arcoblue">自定义</a-tag>
+              <a-tag v-if="record.isSystem" color="red">是</a-tag>
+              <a-tag v-else color="arcoblue">否</a-tag>
             </template>
           </a-table-column>
           <a-table-column title="描述" data-index="description" />
@@ -163,7 +163,7 @@
                   v-permission="['system:dept:delete']"
                   type="text"
                   size="small"
-                  title="删除"
+                  :title="record.isSystem ? '系统内置数据不能删除' : '删除'"
                   :disabled="record.disabled"
                 >
                   <template #icon><icon-delete /></template>删除
diff --git a/continew-admin-ui/src/views/system/dict/index.vue b/continew-admin-ui/src/views/system/dict/index.vue
index d57d29ac..08767067 100644
--- a/continew-admin-ui/src/views/system/dict/index.vue
+++ b/continew-admin-ui/src/views/system/dict/index.vue
@@ -156,8 +156,8 @@
                       v-permission="['system:dict:delete']"
                       type="text"
                       size="small"
-                      title="删除"
-                      :disabled="record.disabled"
+                      :title="record.isSystem ? '系统内置数据不能删除' : '删除'"
+                      :disabled="record.isSystem"
                     >
                       <template #icon><icon-delete /></template>删除
                     </a-button>
@@ -188,7 +188,7 @@
             <a-input v-model="form.name" placeholder="请输入字典名称" />
           </a-form-item>
           <a-form-item label="字典编码" field="code">
-            <a-input v-model="form.code" placeholder="请输入字典编码" />
+            <a-input v-model="form.code" placeholder="请输入字典编码" :disabled="form.isSystem" />
           </a-form-item>
           <a-form-item label="描述" field="description">
             <a-textarea
@@ -317,6 +317,7 @@
       name: '',
       code: '',
       description: '',
+      isSystem: false,
     };
     proxy.$refs.formRef?.resetFields();
   };
diff --git a/continew-admin-ui/src/views/system/role/index.vue b/continew-admin-ui/src/views/system/role/index.vue
index 8e4189e4..9e7a08b9 100644
--- a/continew-admin-ui/src/views/system/role/index.vue
+++ b/continew-admin-ui/src/views/system/role/index.vue
@@ -142,10 +142,10 @@
               />
             </template>
           </a-table-column>
-          <a-table-column title="类型" align="center">
+          <a-table-column title="系统内置" align="center">
             <template #cell="{ record }">
-              <a-tag v-if="record.type === 1" color="red">系统内置</a-tag>
-              <a-tag v-else color="arcoblue">自定义</a-tag>
+              <a-tag v-if="record.isSystem" color="red">是</a-tag>
+              <a-tag v-else color="arcoblue">否</a-tag>
             </template>
           </a-table-column>
           <a-table-column title="描述" data-index="description" tooltip />
@@ -174,7 +174,7 @@
                   v-permission="['system:role:delete']"
                   type="text"
                   size="small"
-                  title="删除"
+                  :title="record.isSystem ? '系统内置数据不能删除' : '删除'"
                   :disabled="record.disabled"
                 >
                   <template #icon><icon-delete /></template>删除
diff --git a/continew-admin-ui/src/views/system/user/index.vue b/continew-admin-ui/src/views/system/user/index.vue
index 97484c03..197626c2 100644
--- a/continew-admin-ui/src/views/system/user/index.vue
+++ b/continew-admin-ui/src/views/system/user/index.vue
@@ -192,10 +192,10 @@
                   />
                 </template>
               </a-table-column>
-              <a-table-column title="类型" align="center">
+              <a-table-column title="系统内置" align="center" :width="90">
                 <template #cell="{ record }">
-                  <a-tag v-if="record.type === 1" color="red">系统内置</a-tag>
-                  <a-tag v-else color="arcoblue">自定义</a-tag>
+                  <a-tag v-if="record.isSystem" color="red">是</a-tag>
+                  <a-tag v-else color="arcoblue">否</a-tag>
                 </template>
               </a-table-column>
               <a-table-column title="创建人/创建时间" :width="175">
@@ -237,7 +237,7 @@
                       v-permission="['system:user:delete']"
                       type="text"
                       size="small"
-                      title="删除"
+                      :title="record.isSystem ? '系统内置数据不能删除' : '删除'"
                       :disabled="record.disabled"
                     >
                       <template #icon><icon-delete /></template>
diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_data.sql b/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_data.sql
index 99673529..5ba962e9 100644
--- a/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_data.sql
+++ b/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_data.sql
@@ -39,30 +39,30 @@ VALUES
 
 -- 初始化默认部门
 INSERT IGNORE INTO `sys_dept`
-(`id`, `name`, `parent_id`, `ancestors`, `description`, `sort`, `status`, `type`, `create_user`, `create_time`, `update_user`, `update_time`)
+(`id`, `name`, `parent_id`, `ancestors`, `description`, `sort`, `status`, `is_system`, `create_user`, `create_time`, `update_user`, `update_time`)
 VALUES
-(1, 'Xxx科技有限公司', 0, '0', '系统初始部门', 1, 1, 1, 1, NOW(), NULL, NULL),
-(2, '天津总部', 1, '0,1', NULL, 1, 1, 2, 1, NOW(), NULL, NULL),
-(3, '研发部', 2, '0,1,2', NULL, 1, 1, 2, 1, NOW(), NULL, NULL),
-(4, 'UI部', 2, '0,1,2', NULL, 2, 1, 2, 1, NOW(), NULL, NULL),
-(5, '测试部', 2, '0,1,2', NULL, 3, 1, 2, 1, NOW(), NULL, NULL),
-(6, '运维部', 2, '0,1,2', NULL, 4, 1, 2, 1, NOW(), NULL, NULL),
-(7, '研发一组', 3, '0,1,2,3', NULL, 1, 1, 2, 1, NOW(), NULL, NULL),
-(8, '研发二组', 3, '0,1,2,3', NULL, 2, 2, 2, 1, NOW(), NULL, NULL);
+(1, 'Xxx科技有限公司', 0, '0', '系统初始部门', 1, 1, b'1', 1, NOW(), NULL, NULL),
+(2, '天津总部', 1, '0,1', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
+(3, '研发部', 2, '0,1,2', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
+(4, 'UI部', 2, '0,1,2', NULL, 2, 1, b'0', 1, NOW(), NULL, NULL),
+(5, '测试部', 2, '0,1,2', NULL, 3, 1, b'0', 1, NOW(), NULL, NULL),
+(6, '运维部', 2, '0,1,2', NULL, 4, 1, b'0', 1, NOW(), NULL, NULL),
+(7, '研发一组', 3, '0,1,2,3', NULL, 1, 1, b'0', 1, NOW(), NULL, NULL),
+(8, '研发二组', 3, '0,1,2,3', NULL, 2, 2, b'0', 1, NOW(), NULL, NULL);
 
 -- 初始化默认角色
 INSERT IGNORE INTO `sys_role`
-(`id`, `name`, `code`, `data_scope`, `description`, `sort`, `status`, `type`, `create_user`, `create_time`, `update_user`, `update_time`)
+(`id`, `name`, `code`, `data_scope`, `description`, `sort`, `status`, `is_system`, `create_user`, `create_time`, `update_user`, `update_time`)
 VALUES
-(1, '超级管理员', 'admin', 1, '系统初始角色', 1, 1, 1, 1, NOW(), NULL, NULL),
-(2, '测试人员', 'test', 5, NULL, 2, 1, 2, 1, NOW(), NULL, NULL);
+(1, '超级管理员', 'admin', 1, '系统初始角色', 1, 1, b'1', 1, NOW(), NULL, NULL),
+(2, '测试人员', 'test', 5, NULL, 2, 1, b'0', 1, NOW(), NULL, NULL);
 
 -- 初始化默认用户:admin/admin123;test/123456
 INSERT IGNORE INTO `sys_user`
-(`id`, `username`, `nickname`, `password`, `gender`, `email`, `phone`, `avatar`, `description`, `status`, `type`, `pwd_reset_time`, `dept_id`, `create_user`, `create_time`, `update_user`, `update_time`)
+(`id`, `username`, `nickname`, `password`, `gender`, `email`, `phone`, `avatar`, `description`, `status`, `is_system`, `pwd_reset_time`, `dept_id`, `create_user`, `create_time`, `update_user`, `update_time`)
 VALUES
-(1, 'admin', '超级管理员', '9802815bcc5baae7feb1ae0d0566baf2', 1, 'charles7c@126.com', '18888888888', NULL, '系统初始用户', 1, 1, NOW(), 1, 1, NOW(), NULL, NULL),
-(2, 'test', '测试员', '8e114197e1b33783a00542ad67e80516', 2, NULL, NULL, NULL, NULL, 2, 2, NOW(), 5, 1, NOW(), NULL, NULL);
+(1, 'admin', '超级管理员', '9802815bcc5baae7feb1ae0d0566baf2', 1, 'charles7c@126.com', '18888888888', NULL, '系统初始用户', 1, b'1', NULL, 1, 1, NOW(), NULL, NULL),
+(2, 'test', '测试员', '8e114197e1b33783a00542ad67e80516', 2, NULL, NULL, NULL, NULL, 2, b'0', NULL, 5, 1, NOW(), NULL, NULL);
 
 -- 初始化默认角色和菜单关联数据
 INSERT IGNORE INTO `sys_role_menu`
diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_table.sql
index ccf2ee50..5e2fb3e4 100644
--- a/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_table.sql
+++ b/continew-admin-webapi/src/main/resources/db/changelog/v1.0.0/continew-admin_table.sql
@@ -4,18 +4,18 @@
 CREATE TABLE IF NOT EXISTS `sys_menu` (
     `id` bigint(20) UNSIGNED AUTO_INCREMENT COMMENT 'ID',
     `title` varchar(50) NOT NULL COMMENT '菜单标题',
-    `parent_id` bigint(20) UNSIGNED DEFAULT 0 COMMENT '上级菜单ID',
-    `type` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '菜单类型(1:目录,2:菜单,3:按钮)',
+    `parent_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '上级菜单ID',
+    `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '菜单类型(1:目录,2:菜单,3:按钮)',
     `path` varchar(512) DEFAULT NULL COMMENT '路由地址',
     `name` varchar(50) DEFAULT NULL COMMENT '组件名称',
     `component` varchar(255) DEFAULT NULL COMMENT '组件路径',
     `icon` varchar(255) DEFAULT NULL COMMENT '菜单图标',
-    `is_external` bit(1) DEFAULT b'0' COMMENT '是否外链',
-    `is_cache` bit(1) DEFAULT b'0' COMMENT '是否缓存',
-    `is_hidden` bit(1) DEFAULT b'0' COMMENT '是否隐藏',
+    `is_external` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否外链',
+    `is_cache` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否缓存',
+    `is_hidden` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否隐藏',
     `permission` varchar(255) DEFAULT NULL COMMENT '权限标识',
-    `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '菜单排序',
-    `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
+    `sort` int UNSIGNED NOT NULL DEFAULT 999 COMMENT '菜单排序',
+    `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',
     `create_time` datetime NOT NULL COMMENT '创建时间',
     `update_user` bigint(20) UNSIGNED DEFAULT NULL COMMENT '修改人',
@@ -30,12 +30,12 @@ CREATE TABLE IF NOT EXISTS `sys_menu` (
 CREATE TABLE IF NOT EXISTS `sys_dept` (
     `id` bigint(20) UNSIGNED AUTO_INCREMENT COMMENT 'ID',
     `name` varchar(50) NOT NULL COMMENT '部门名称',
-    `parent_id` bigint(20) UNSIGNED DEFAULT 0 COMMENT '上级部门ID',
+    `parent_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0 COMMENT '上级部门ID',
     `ancestors` varchar(512) DEFAULT '' COMMENT '祖级列表',
     `description` varchar(512) DEFAULT NULL COMMENT '描述',
-    `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '部门排序',
-    `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
-    `type` tinyint(1) UNSIGNED DEFAULT 2 COMMENT '类型(1:系统内置,2:自定义)',
+    `sort` int UNSIGNED NOT NULL DEFAULT 999 COMMENT '部门排序',
+    `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
+    `is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',
     `create_time` datetime NOT NULL COMMENT '创建时间',
     `update_user` bigint(20) UNSIGNED DEFAULT NULL COMMENT '修改人',
@@ -51,11 +51,11 @@ CREATE TABLE IF NOT EXISTS `sys_role` (
     `id` bigint(20) UNSIGNED AUTO_INCREMENT COMMENT 'ID',
     `name` varchar(50) NOT NULL COMMENT '角色名称',
     `code` varchar(50) NOT NULL COMMENT '角色编码',
-    `data_scope` tinyint(1) DEFAULT 4 COMMENT '数据权限(1:全部数据权限,2:本部门及以下数据权限,3:本部门数据权限,4:仅本人数据权限,5:自定义数据权限)',
+    `data_scope` tinyint(1) NOT NULL DEFAULT 4 COMMENT '数据权限(1:全部数据权限,2:本部门及以下数据权限,3:本部门数据权限,4:仅本人数据权限,5:自定义数据权限)',
     `description` varchar(512) DEFAULT NULL COMMENT '描述',
-    `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '角色排序',
-    `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
-    `type` tinyint(1) UNSIGNED DEFAULT 2 COMMENT '类型(1:系统内置,2:自定义)',
+    `sort` int UNSIGNED NOT NULL DEFAULT 999 COMMENT '角色排序',
+    `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
+    `is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',
     `create_time` datetime NOT NULL COMMENT '创建时间',
     `update_user` bigint(20) UNSIGNED DEFAULT NULL COMMENT '修改人',
@@ -84,13 +84,13 @@ CREATE TABLE IF NOT EXISTS `sys_user` (
     `username` varchar(50) NOT NULL COMMENT '用户名',
     `nickname` varchar(50) DEFAULT NULL COMMENT '昵称',
     `password` varchar(255) DEFAULT NULL COMMENT '密码',
-    `gender` tinyint(1) UNSIGNED DEFAULT 0 COMMENT '性别(0:未知,1:男,2:女)',
+    `gender` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '性别(0:未知,1:男,2:女)',
     `email` varchar(100) DEFAULT NULL COMMENT '邮箱',
     `phone` varchar(50) DEFAULT NULL COMMENT '手机号码',
     `avatar` varchar(255) DEFAULT NULL COMMENT '头像地址',
     `description` varchar(512) DEFAULT NULL COMMENT '描述',
-    `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
-    `type` tinyint(1) UNSIGNED DEFAULT 2 COMMENT '类型(1:系统内置,2:自定义)',
+    `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '状态(1:启用,2:禁用)',
+    `is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
     `pwd_reset_time` datetime DEFAULT NULL COMMENT '最后一次修改密码时间',
     `dept_id` bigint(20) UNSIGNED NOT NULL COMMENT '部门ID',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',
@@ -120,11 +120,11 @@ CREATE TABLE IF NOT EXISTS `sys_log` (
     `request_method` varchar(10) NOT NULL COMMENT '请求方式',
     `request_headers` text DEFAULT NULL COMMENT '请求头',
     `request_body` text DEFAULT NULL COMMENT '请求体',
-    `status_code` int(11) UNSIGNED NOT NULL COMMENT '状态码',
+    `status_code` int UNSIGNED NOT NULL COMMENT '状态码',
     `response_headers` text DEFAULT NULL COMMENT '响应头',
     `response_body` mediumtext DEFAULT NULL COMMENT '响应体',
     `elapsed_time` bigint(20) UNSIGNED NOT NULL COMMENT '请求耗时(ms)',
-    `status` tinyint(1) UNSIGNED DEFAULT 1 COMMENT '操作状态(1:成功,2:失败)',
+    `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '操作状态(1:成功,2:失败)',
     `client_ip` varchar(100) DEFAULT NULL COMMENT '客户端IP',
     `location` varchar(255) DEFAULT NULL COMMENT 'IP归属地',
     `browser` varchar(100) DEFAULT NULL COMMENT '浏览器',
diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql
index 5aae6fef..402111fe 100644
--- a/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql
+++ b/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql
@@ -9,7 +9,7 @@ CREATE TABLE IF NOT EXISTS `gen_config` (
     `business_name` varchar(50) NOT NULL COMMENT '业务名称',
     `author` varchar(100) NOT NULL COMMENT '作者',
     `table_prefix` varchar(20) DEFAULT NULL COMMENT '表前缀',
-    `is_override` bit(1) DEFAULT b'0' COMMENT '是否覆盖',
+    `is_override` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否覆盖',
     `create_time` datetime NOT NULL COMMENT '创建时间',
     `update_time` datetime DEFAULT NULL COMMENT '修改时间',
     PRIMARY KEY (`table_name`) USING BTREE
@@ -22,10 +22,10 @@ CREATE TABLE IF NOT EXISTS `gen_field_config` (
     `field_name` varchar(64) NOT NULL COMMENT '字段名称',
     `field_type` varchar(25) NOT NULL COMMENT '字段类型',
     `comment` varchar(512) DEFAULT NULL COMMENT '注释',
-    `is_required` bit(1) DEFAULT b'1' COMMENT '是否必填',
-    `show_in_list` bit(1) DEFAULT b'1' COMMENT '是否在列表中显示',
-    `show_in_form` bit(1) DEFAULT b'1' COMMENT '是否在表单中显示',
-    `show_in_query` bit(1) DEFAULT b'1' COMMENT '是否在查询中显示',
+    `is_required` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否必填',
+    `show_in_list` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否在列表中显示',
+    `show_in_form` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否在表单中显示',
+    `show_in_query` bit(1) NOT NULL DEFAULT b'1' COMMENT '是否在查询中显示',
     `form_type` tinyint(1) UNSIGNED DEFAULT NULL COMMENT '表单类型',
     `query_type` tinyint(1) UNSIGNED DEFAULT NULL COMMENT '查询方式',
     `create_time` datetime NOT NULL COMMENT '创建时间',
@@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS `sys_announcement` (
     `type` varchar(30) NOT NULL COMMENT '类型',
     `effective_time` datetime DEFAULT NULL COMMENT '生效时间',
     `terminate_time` datetime DEFAULT NULL COMMENT '终止时间',
-    `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '排序',
+    `sort` int UNSIGNED NOT NULL DEFAULT 999 COMMENT '排序',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',
     `create_time` datetime NOT NULL COMMENT '创建时间',
     `update_user` bigint(20) UNSIGNED DEFAULT NULL COMMENT '修改人',
diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_data.sql b/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_data.sql
index ded2cb9c..fb289897 100644
--- a/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_data.sql
+++ b/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_data.sql
@@ -13,9 +13,9 @@ VALUES
 
 -- 初始化默认字典
 INSERT IGNORE INTO `sys_dict`
-(`id`, `name`, `code`, `description`, `create_user`, `create_time`, `update_user`, `update_time`)
+(`id`, `name`, `code`, `description`, `is_system`, `create_user`, `create_time`, `update_user`, `update_time`)
 VALUES
-(1, '公告类型', 'announcement_type', NULL, 1, NOW(), NULL, NULL);
+(1, '公告类型', 'announcement_type', NULL, b'1', 1, NOW(), NULL, NULL);
 
 -- 初始化默认字典项
 INSERT IGNORE INTO `sys_dict_item`
diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_table.sql
index 47b9236a..572402d9 100644
--- a/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_table.sql
+++ b/continew-admin-webapi/src/main/resources/db/changelog/v1.2.0/continew-admin_table.sql
@@ -6,6 +6,7 @@ CREATE TABLE IF NOT EXISTS `sys_dict` (
     `name` varchar(50) NOT NULL COMMENT '字典名称',
     `code` varchar(30) NOT NULL COMMENT '字典编码',
     `description` varchar(512) DEFAULT NULL COMMENT '描述',
+    `is_system` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否为系统内置数据',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',
     `create_time` datetime NOT NULL COMMENT '创建时间',
     `update_user` bigint(20) UNSIGNED DEFAULT NULL COMMENT '修改人',
@@ -20,7 +21,7 @@ CREATE TABLE IF NOT EXISTS `sys_dict_item` (
     `label` varchar(50) NOT NULL COMMENT '字典标签',
     `value` varchar(30) NOT NULL COMMENT '字典值',
     `color` varchar(30) DEFAULT NULL COMMENT '背景颜色',
-    `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '字典项排序',
+    `sort` int UNSIGNED NOT NULL DEFAULT 999 COMMENT '字典项排序',
     `description` varchar(512) DEFAULT NULL COMMENT '描述',
     `dict_id` bigint(20) UNSIGNED NOT NULL COMMENT '字典ID',
     `create_user` bigint(20) UNSIGNED NOT NULL COMMENT '创建人',