getInfo(String id);
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/pom.xml b/yunzhupaas-boot-common/yunzhupaas-common-core/pom.xml
new file mode 100644
index 0000000..8be986c
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/pom.xml
@@ -0,0 +1,315 @@
+
+
+
+ yunzhupaas-boot-common
+ com.yunzhupaas
+ 5.2.0-RELEASE
+ ../pom.xml
+
+ 4.0.0
+
+ yunzhupaas-common-core
+
+
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+ cn.afterturn
+ easypoi-annotation
+
+
+ com.baomidou
+ mybatis-plus-annotation
+
+
+
+
+ com.nimbusds
+ nimbus-jose-jwt
+
+
+
+
+ com.alibaba
+ fastjson
+
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+
+
+
+
+
+ org.quartz-scheduler
+ quartz
+
+
+ HikariCP-java7
+ com.zaxxer
+
+
+
+
+
+
+ com.google.zxing
+ core
+
+
+
+
+ com.belerweb
+ pinyin4j
+
+
+
+
+
+
+
+ org.apache.commons
+ commons-pool2
+
+
+
+ org.apache.httpcomponents
+ httpmime
+
+
+
+
+
+ org.hibernate.validator
+ hibernate-validator
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
+ commons-io
+ commons-io
+
+
+
+ org.owasp.antisamy
+ antisamy
+
+
+ commons-io
+ commons-io
+
+
+
+
+
+ org.apache.commons
+ commons-text
+
+
+
+
+ org.apache.commons
+ commons-collections4
+
+
+ com.google.guava
+ guava
+
+
+
+ cn.hutool
+ hutool-all
+
+
+
+ net.lingala.zip4j
+ zip4j
+
+
+ com.github.yitter
+ yitter-idgenerator
+
+
+ org.apache.poi
+ poi
+
+
+ com.baomidou
+ mybatis-plus-core
+ ${mybatis-plus.vesion}
+
+
+
+ org.springframework.boot
+ spring-boot-properties-migrator
+ runtime
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ net.logstash.logback
+ logstash-logback-encoder
+
+
+ jackson-databind
+ com.fasterxml.jackson.core
+
+
+
+
+
+ org.apache.skywalking
+ apm-toolkit-logback-1.x
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+
+ boot3
+
+ [17,)
+
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
+
+ io.swagger.core.v3
+ swagger-annotations-jakarta
+
+
+ io.swagger.core.v3
+ swagger-models-jakarta
+
+
+ jakarta.annotation
+ jakarta.annotation-api
+
+
+ jakarta.validation
+ jakarta.validation-api
+
+
+ org.openjdk.nashorn
+ nashorn-core
+
+
+
+
+ boot2
+
+ (,17)
+
+
+
+
+ javax.servlet
+ javax.servlet-api
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
+
+ io.swagger.core.v3
+ swagger-annotations
+
+
+ io.swagger.core.v3
+ swagger-models
+
+
+ javax.annotation
+ javax.annotation-api
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+
+
+
+
+
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/EncryptApi.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/EncryptApi.java
new file mode 100644
index 0000000..4f7b5e1
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/EncryptApi.java
@@ -0,0 +1,28 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 接口传输加密
+ * 加密请求和返回结果: @EncryptApi
+ * 只加密请求: @EncryptApi(encryptRequest = false)
+ * 只加密返回结果: @EncryptApi(encryptResponse = false)
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD,ElementType.PARAMETER})
+public @interface EncryptApi {
+
+ /**
+ * 加密请求内容
+ */
+ boolean encryptRequest() default true;
+
+ /**
+ * 加密返回结果
+ */
+ boolean encryptResponse() default true;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/HandleLog.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/HandleLog.java
new file mode 100644
index 0000000..914c1d3
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/HandleLog.java
@@ -0,0 +1,33 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 请求日志注解
+ *
+ * @author :云筑产品开发平台组
+ * @version: V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date :2022/3/15 11:19
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface HandleLog {
+
+ /**
+ * 操作模块
+ *
+ * @return
+ */
+ String moduleName() default "";
+
+ /**
+ * 操作方式
+ *
+ * @return
+ */
+ String requestMethod() default "";
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/OrganizeAdminIsTrator.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/OrganizeAdminIsTrator.java
new file mode 100644
index 0000000..d95a9e8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/OrganizeAdminIsTrator.java
@@ -0,0 +1,19 @@
+package com.yunzhupaas.annotation;
+
+
+import java.lang.annotation.*;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 8:53
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface OrganizeAdminIsTrator {
+ String value() default "";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/OrganizePermission.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/OrganizePermission.java
new file mode 100644
index 0000000..154f640
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/OrganizePermission.java
@@ -0,0 +1,18 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 组织权限验证
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-10-30
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface OrganizePermission {
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/PositionPermission.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/PositionPermission.java
new file mode 100644
index 0000000..f7a1394
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/PositionPermission.java
@@ -0,0 +1,18 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 组织权限验证
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-10-30
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface PositionPermission {
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/RolePermission.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/RolePermission.java
new file mode 100644
index 0000000..123c55a
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/RolePermission.java
@@ -0,0 +1,19 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 角色权限验证
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-10-30
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RolePermission {
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/SaCheckSame.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/SaCheckSame.java
new file mode 100644
index 0000000..6f4ad43
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/SaCheckSame.java
@@ -0,0 +1,24 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 内部请求校验:校验是否来自内部请求
+ *
+ * 可标注在方法、类上(效果等同于标注在此类的所有方法上)
+ *
+ * @author 云筑产品开发平台组
+ * @version V5.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-12-31
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ ElementType.METHOD, ElementType.TYPE })
+public @interface SaCheckSame {
+
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/UserPermission.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/UserPermission.java
new file mode 100644
index 0000000..46a9fb4
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/UserPermission.java
@@ -0,0 +1,18 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 组织权限验证
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-10-30
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface UserPermission {
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/YunzhupaasField.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/YunzhupaasField.java
new file mode 100644
index 0000000..66c5eb2
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/annotation/YunzhupaasField.java
@@ -0,0 +1,117 @@
+package com.yunzhupaas.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 控件属性
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.4.3
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2022/9/19
+ */
+@Documented
+@Target({ ElementType.FIELD })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface YunzhupaasField {
+
+ String vModel() default "";
+
+ String label() default "";
+
+ /**
+ * 是否多选
+ */
+ boolean multiple() default false;
+
+ String yunzhupaasKey() default "";
+
+ /**
+ * 显示层级
+ */
+ String showLevel() default "";
+
+ /**
+ * 省市区显示层级
+ */
+ String level() default "0";
+
+ /**
+ * 单据规则
+ */
+ String rule() default "";
+
+ String activeTxt() default "开";
+
+ String inactiveTxt() default "关";
+
+ int min() default -1;
+
+ int max() default -1;
+
+ /**
+ *
+ * 是否唯一
+ */
+ boolean unique() default false;
+
+ boolean isUpdate() default false;
+
+ /**
+ * 单行输入正则
+ */
+ String regex() default "";
+
+ /**
+ * 表名
+ */
+ String relationTable() default "";
+
+ String tableName() default "";
+
+ /**
+ * 时间
+ */
+ String format() default "";
+
+ /**
+ * 数据接口
+ */
+ String dataType() default "";
+
+ String dataLabel() default "fullName";
+
+ String dataValue() default "id";
+
+ String dataChildren() default "children";
+
+ String propsUrl() default "";
+
+ String dictionaryType() default "";
+
+ String options() default "";
+
+ String ableDepIds() default "[]";
+
+ String ablePosIds() default "[]";
+
+ String ableUserIds() default "[]";
+
+ String ableRoleIds() default "[]";
+
+ String ableGroupIds() default "[]";
+
+ String ableIds() default "[]";
+
+ String selectType() default "";
+
+ /**
+ * 开始时间
+ */
+ String startTime() default "";
+
+ /**
+ * 结束时间
+ */
+ String endTime() default "";
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/ActionResult.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/ActionResult.java
new file mode 100644
index 0000000..a4166e7
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/ActionResult.java
@@ -0,0 +1,114 @@
+package com.yunzhupaas.base;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+import com.yunzhupaas.base.vo.PageListVO;
+import com.yunzhupaas.base.vo.PaginationVO;
+import com.yunzhupaas.constant.MsgCode;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:45
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ActionResult {
+
+ @Schema(description = "状态码")
+ private Integer code;
+
+ @Schema(description = "返回信息")
+ private String msg;
+
+ @Schema(description = "返回数据")
+ private T data;
+
+ /* ============== success ============ */
+
+ public static ActionResult success() {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setCode(200);
+ jsonData.setMsg(MsgCode.SU000.get());
+ return jsonData;
+ }
+
+ public static ActionResult success(String msg) {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setCode(200);
+ jsonData.setMsg(msg);
+ return jsonData;
+ }
+
+ public static ActionResult success(T object) {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setData(object);
+ jsonData.setCode(200);
+ jsonData.setMsg(MsgCode.SU000.get());
+ return jsonData;
+ }
+
+ public static ActionResult success(String msg, T object) {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setData(object);
+ jsonData.setCode(200);
+ jsonData.setMsg(msg);
+ return jsonData;
+ }
+
+ /* ============== fail ============ */
+
+ public static ActionResult fail(Integer code, String message) {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setCode(code);
+ jsonData.setMsg(message);
+ return jsonData;
+ }
+
+ public static ActionResult fail(String msg, String data) {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setMsg(msg);
+ jsonData.setData(data);
+ return jsonData;
+ }
+
+ public static ActionResult fail(String msg) {
+ ActionResult jsonData = new ActionResult<>();
+ jsonData.setMsg(msg);
+ jsonData.setCode(400);
+ return jsonData;
+ }
+
+ /* ============== page ============ */
+
+ public static ActionResult> page(List list, PaginationVO pagination) {
+ ActionResult> jsonData = new ActionResult<>();
+ PageListVO vo = new PageListVO<>();
+ vo.setList(list);
+ vo.setPagination(pagination);
+ jsonData.setData(vo);
+ jsonData.setCode(200);
+ jsonData.setMsg(MsgCode.SU000.get());
+ return jsonData;
+ }
+
+ public static ActionResult> page(List list, PaginationVO pagination, String dataProcessing) {
+ ActionResult> jsonData = new ActionResult<>();
+ DataInterfacePageListVO vo = new DataInterfacePageListVO<>();
+ vo.setList(list);
+ vo.setPagination(pagination);
+ vo.setDataProcessing(dataProcessing);
+ jsonData.setCode(200);
+ jsonData.setData(vo);
+ jsonData.setMsg(MsgCode.SU000.get());
+ return jsonData;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/ActionResultCode.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/ActionResultCode.java
new file mode 100644
index 0000000..9926fd5
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/ActionResultCode.java
@@ -0,0 +1,69 @@
+package com.yunzhupaas.base;
+
+import com.yunzhupaas.constant.MsgCode;
+import com.yunzhupaas.constant.model.MCode;
+
+/**
+ * 错误提示枚举类
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-09-26 上午9:18
+ */
+public enum ActionResultCode {
+
+ /**
+ * 成功
+ */
+ Success(200, MsgCode.GT101),
+ /**
+ * 失败
+ */
+ Fail(400, MsgCode.GT102),
+ /**
+ * 验证错误
+ */
+ ValidateError(401, MsgCode.GT103),
+ /**
+ * 异常
+ */
+ Exception(500, MsgCode.GT104),
+ /**
+ * 登录过期提示
+ */
+ SessionOverdue(600, MsgCode.GT105),
+ /**
+ * 踢出提示
+ */
+ SessionOffLine(601, MsgCode.GT106),
+ /**
+ * token失效
+ */
+ SessionError(602, MsgCode.GT107);
+
+ private int code;
+ private MCode message;
+
+ ActionResultCode(int code, MCode message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message.get();
+ }
+
+ public void setMessage(MCode message) {
+ this.message = message;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/DataInterfacePageListVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/DataInterfacePageListVO.java
new file mode 100644
index 0000000..e0227e5
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/DataInterfacePageListVO.java
@@ -0,0 +1,19 @@
+package com.yunzhupaas.base;
+
+import com.yunzhupaas.base.vo.PageListVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 数据接口弹窗选择
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-12-31
+ */
+@Data
+public class DataInterfacePageListVO extends PageListVO {
+ private String dataProcessing;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/DataSourceInfo.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/DataSourceInfo.java
new file mode 100644
index 0000000..835fcef
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/DataSourceInfo.java
@@ -0,0 +1,43 @@
+package com.yunzhupaas.base;
+
+/**
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-04-07
+ */
+public class DataSourceInfo {
+ public static final String mysqlUrl="jdbc:mysql://{host}:{port}/{dbName}?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC";
+
+ public static final String mysqlDriver="com.mysql.cj.jdbc.Driver";
+
+
+
+ public static final String oracleUrl="jdbc:oracle:thin:@{host}:{port}:{dbName}";
+
+ public static final String oracleDriver="oracle.jdbc.OracleDriver";
+
+
+
+ public static final String sqlserverUrl="jdbc:sqlserver://{host}:{port};Databasename={dbName}";
+
+ public static final String sqlserverDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
+
+ public static final String dmUrl="jdbc:dm://{host}:{port}/{dbName}?yunzhupaasDateTimeBehavior=convertToNull&useUnicode" +
+ "=true&characterEncoding=utf-8";
+
+
+ public static final String dmDriver="dm.jdbc.driver.DmDriver";
+
+
+ public static final String kingBaseUrl = "jdbc:kingbase8://{host}:{port}/{dbName}";
+
+ public static final String kingBaseDriver = "com.kingbase8.Driver";
+
+
+ public static final String postgreUrl = "jdbc:postgresql://{host}:{port}/{dbName}" ;
+
+ public static final String postgreDriver = "org.postgresql.Driver";
+}
+
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/LogSortEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/LogSortEnum.java
new file mode 100644
index 0000000..b67927f
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/LogSortEnum.java
@@ -0,0 +1,86 @@
+package com.yunzhupaas.base;
+
+/**
+ * 日志分类
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-09-26 上午9:18
+ */
+public enum LogSortEnum {
+
+ /**
+ * 登录
+ */
+ Login(1, "登录"),
+ /**
+ * 访问
+ */
+ Visit(2, "访问"),
+ /**
+ * 操作
+ */
+ Operate(3, "操作"),
+ /**
+ * 异常
+ */
+ Exception(4, "异常"),
+ /**
+ * 请求
+ */
+ Request(5, "请求");
+
+ private int code;
+ private String message;
+
+ LogSortEnum(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ /**
+ * 根据状态code获取枚举名称
+ *
+ * @return
+ */
+ public static String getMessageByCode(Integer code) {
+ for (LogSortEnum status : LogSortEnum.values()) {
+ if (status.getCode().equals(code)) {
+ return status.message;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 根据状态code获取枚举值
+ *
+ * @return
+ */
+ public static LogSortEnum getByCode(Integer code) {
+ for (LogSortEnum status : LogSortEnum.values()) {
+ if (status.getCode().equals(code)) {
+ return status;
+ }
+ }
+ return null;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/MyBatisPrimaryBase.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/MyBatisPrimaryBase.java
new file mode 100644
index 0000000..144191e
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/MyBatisPrimaryBase.java
@@ -0,0 +1,90 @@
+package com.yunzhupaas.base;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.yunzhupaas.constant.MsgCode;
+import com.yunzhupaas.exception.DataException;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+
+/**
+ * 联合主键
+ *
+ * 门户管理单条数据,可以由平台、门户ID、系统ID 三种数据定位
+ * 它们组合成门户管理的联合主键,此类将其看成一个主键来配合QueryWrapper使用
+ *
+ * @author 云筑产品开发平台组
+ * @version v3.4.8
+ * @copyrignt 深圳市乐程软件有限公司
+ * @date 2023-04-20
+ */
+public abstract class MyBatisPrimaryBase {
+
+ {
+ ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();
+ Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
+ Class clz = (Class)actualTypeArguments[0];
+ try {
+ entity = clz.getDeclaredConstructor().newInstance();
+ } catch (Exception ignore) {}
+ }
+
+ @Schema(description = "查询器")
+ protected QueryWrapper queryWrapper = new QueryWrapper<>();
+
+ private T entity;
+
+ @Schema(description = "获取处理后的查询器")
+ public QueryWrapper getQuery(){
+ try{
+ for (Field field : this.getClass().getDeclaredFields()) {
+ try{
+ TableField annotation = entity.getClass().getDeclaredField(field.getName()).getAnnotation(TableField.class);
+ String columnName;
+ if(annotation != null) {
+ columnName = annotation.value();
+ }else if(field.getName().equalsIgnoreCase("id")) {
+ columnName = "F_Id";
+ }else if(field.getName().equalsIgnoreCase("creatorId")){
+ columnName = "F_Creator_Id";
+ }else {
+ columnName = field.getName();
+ }
+ field.setAccessible(true);
+ Object value = field.get(this);
+ if(value != null) queryWrapper.eq(columnName, value);
+ }catch (Exception ignore){}
+ }
+ }catch (Exception ignore){}
+ return queryWrapper;
+ }
+
+ @Schema(description = "获取实例")
+ public T getEntity() throws Exception {
+ checkEntity();
+ for (Field field : this.getClass().getDeclaredFields()) {
+ for (Field entityField : entity.getClass().getDeclaredFields()) {
+ if(entityField.getName().equals(field.getName())){
+ entityField.setAccessible(true);
+ field.setAccessible(true);
+ entityField.set(entity, field.get(this));
+ }
+ }
+ }
+ return entity;
+ }
+
+ private void checkEntity() throws Exception{
+ for (Field field : this.getClass().getFields()) {
+ Object o = field.get(this);
+ if(o == null){
+ throw new DataException(MsgCode.DB011.get(field.getName()));
+ }
+ }
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/Page.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/Page.java
new file mode 100644
index 0000000..6f45dd7
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/Page.java
@@ -0,0 +1,16 @@
+package com.yunzhupaas.base;
+
+import lombok.Data;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+public class Page {
+ private String keyword="";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/PageModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/PageModel.java
new file mode 100644
index 0000000..3926a25
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/PageModel.java
@@ -0,0 +1,59 @@
+package com.yunzhupaas.base;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+public class PageModel {
+ /**
+ * 每页行数
+ */
+ private int rows;
+ /**
+ * 当前页
+ */
+ private int page;
+ /**
+ * 总页数
+ */
+ private long total;
+ /**
+ * 总记录数
+ */
+ private long records;
+ /**
+ * 排序列
+ */
+ private String sidx;
+ /**
+ * 排序类型
+ */
+ private String sord;
+ /**
+ * 查询条件
+ */
+ private String queryJson;
+ /**
+ * 查询关键字
+ */
+ private String keyword;
+
+ public List setData(List data, long records) {
+ this.records = records;
+ if(this.records>0){
+ this.total = this.records % this.rows == 0 ? this.records / this.rows : this.records/this.rows+1;
+ }else {
+ this.total = 0;
+ }
+ return data;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/Pagination.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/Pagination.java
new file mode 100644
index 0000000..4b1327f
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/Pagination.java
@@ -0,0 +1,34 @@
+package com.yunzhupaas.base;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+public class Pagination extends Page{
+ private long pageSize=20;
+ private String sort="DESC";
+ private String sidx="";
+ private long currentPage=1;
+
+ @JsonIgnore
+ private long total;
+ @JsonIgnore
+ private long records;
+
+ public List setData(List data, long records) {
+ this.total = records;
+ return data;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/PaginationTime.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/PaginationTime.java
new file mode 100644
index 0000000..30fc130
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/PaginationTime.java
@@ -0,0 +1,18 @@
+package com.yunzhupaas.base;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+public class PaginationTime extends Pagination {
+ private Long startTime;
+ private Long endTime;
+// private String type;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/SmsModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/SmsModel.java
new file mode 100644
index 0000000..16cd1ac
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/SmsModel.java
@@ -0,0 +1,30 @@
+package com.yunzhupaas.base;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 发送短信配置模型
+ *
+ * @版本: V3.1.0
+ * @版权: 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @作者: 云筑产品开发平台组
+ * @日期: 2021/4/20 14:22
+ */
+@Data
+public class SmsModel {
+ /**
+ * 阿里
+ */
+ private String aliAccessKey;
+ private String aliSecret;
+
+ /**
+ * 腾讯
+ */
+ private String tencentSecretId;
+ private String tencentSecretKey;
+ private String tencentAppId;
+ private String tencentAppKey;
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/UserInfo.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/UserInfo.java
new file mode 100644
index 0000000..70b6ef8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/UserInfo.java
@@ -0,0 +1,215 @@
+package com.yunzhupaas.base;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 登录者信息
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024-09-26 上午9:18
+ */
+@Data
+public class UserInfo implements Serializable {
+
+ /**
+ * 唯一Id
+ */
+ private String id;
+ /**
+ * 用户主键
+ */
+ private String userId;
+ /**
+ * 用户账户
+ */
+ private String userAccount;
+ /**
+ * 用户姓名
+ */
+ private String userName;
+ /**
+ * 用户头像
+ */
+ private String userIcon;
+ /**
+ * 用户性别
+ */
+ private String userGender;
+ /**
+ * 主题
+ */
+ private String theme;
+ /**
+ * 机构主键
+ */
+ private String organizeId;
+ /**
+ * 机构主键
+ */
+ private String departmentId;
+ /**
+ * 我的主管
+ */
+ private String managerId;
+ /**
+ * 下属机构
+ */
+ private String[] subOrganizeIds;
+ /**
+ * 我的下属
+ */
+ private List subordinateIds;
+ /**
+ * 岗位主键
+ */
+ private String[] positionIds;
+ /**
+ * 角色主键
+ */
+ private List roleIds;
+ /**
+ * 登录时间
+ */
+ private String loginTime;
+ /**
+ * 登录IP地址
+ */
+ private String loginIpAddress;
+ /**
+ * 登录IP地址所在城市
+ */
+ private String loginIpAddressName;
+ /**
+ * 登录MAC地址
+ */
+ private String macAddress;
+ /**
+ * 登录平台设备(UA)
+ */
+ private String loginPlatForm;
+ /**
+ * 登录平台名称
+ */
+ private String loginDevice;
+ /**
+ * 上次登录时间
+ */
+ private Date prevLoginTime;
+ /**
+ * 上次登录IP地址
+ */
+ private String prevLoginIpAddress;
+ /**
+ * 上次登录IP地址所在城市
+ */
+ private String prevLoginIpAddressName;
+ /**
+ * 是否超级管理员
+ */
+ private Boolean isAdministrator = true;
+ /**
+ * 过期时间
+ */
+ private Date overdueTime;
+ /**
+ * 系统配置超时时间
+ */
+ private Integer tokenTimeout;
+ /**
+ * 租户编码
+ */
+ private String tenantId;
+ public String getTenantId() {
+ return tenantId = tenantId == null ? "" : tenantId;
+ }
+ /**
+ * 租户数据库连接串(注意:主要解决多租户系统用的。每个租户连接数据库都是唯一的)
+ */
+ /**
+ * 目前就支持一个数据库。如果业务需要多个数据库,手动去添加 ConnectionString1、ConnectionString2 等等
+ */
+ @Deprecated
+ private String tenantDbConnectionString;
+ /**
+ * 租户数据源类型
+ * @see com.yunzhupaas.model.tenant.TenantVO
+ */
+ private int tenantDbType;
+
+ private String portalId;
+
+ /**
+ * 系统id
+ */
+ private String systemId;
+
+ /**
+ * 系统id
+ */
+ private List systemIds;
+
+ /**
+ * APP系统id
+ */
+ private String appSystemId;
+ /**
+ * 登录类型
+ */
+ private String grantType;
+ /**
+ * 单点登录用户票据, 用于单点注销
+ */
+ private String onlineTicket;
+ /**
+ * Token
+ */
+ private String token;
+ /**
+ * 用户信息实现接口
+ */
+ private String userDetailKey;
+
+ private List groupIds;
+
+ private List groupNames;
+ /**
+ * 浏览器
+ */
+ private String browser;
+ /**
+ * 所属组织
+ */
+ private String organize;
+
+ /**
+ * 独立URL Code
+ */
+ private String systemCode;
+
+ /**
+ * 手机号
+ */
+ private String mobilePhone;
+
+ /**
+ * 邮箱
+ */
+ private String email;
+
+ /**
+ * 启用状态
+ */
+ private Integer enabledMark;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperBaseEntity.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperBaseEntity.java
new file mode 100644
index 0000000..d4a9f0b
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperBaseEntity.java
@@ -0,0 +1,133 @@
+package com.yunzhupaas.base.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.yunzhupaas.constant.TableFieldsNameConst;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = false)
+public abstract class SuperBaseEntity implements Serializable {
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = false)
+ public static abstract class SuperIBaseEntity extends SuperBaseEntity {
+
+ /**
+ * 主键
+ */
+ @TableId(TableFieldsNameConst.F_ID)
+ public T id;
+
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = false)
+ public static abstract class SuperTBaseEntity extends SuperIBaseEntity {
+
+ /**
+ * 租户id
+ */
+ @TableField(value = TableFieldsNameConst.F_TENANT_ID, fill = FieldFill.INSERT_UPDATE)
+ private String tenantId;
+
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = false)
+ public static abstract class SuperCBaseEntity extends SuperTBaseEntity {
+
+ /**
+ * 创建时间
+ */
+ @TableField(value = TableFieldsNameConst.F_CREATOR_TIME, fill = FieldFill.INSERT)
+ private Date creatorTime;
+
+ /**
+ * 创建用户
+ */
+ @TableField(value = TableFieldsNameConst.F_CREATOR_USER_ID, fill = FieldFill.INSERT)
+ private String creatorUserId;
+
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = false)
+ public static abstract class SuperCUBaseEntity extends SuperCBaseEntity {
+
+ /**
+ * 修改时间
+ */
+ @TableField(value = TableFieldsNameConst.F_LAST_MODIFY_TIME, fill = FieldFill.UPDATE)
+ private Date lastModifyTime;
+
+ /**
+ * 修改用户
+ */
+ @TableField(value = TableFieldsNameConst.F_LAST_MODIFY_USER_ID, fill = FieldFill.UPDATE)
+ private String lastModifyUserId;
+
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = false)
+ public static abstract class SuperCUDBaseEntity extends SuperCUBaseEntity {
+
+ /**
+ * 删除标志
+ */
+ @TableField(value = TableFieldsNameConst.F_DELETE_MARK, updateStrategy = FieldStrategy.IGNORED)
+ private Integer deleteMark;
+
+ /**
+ * 删除时间
+ */
+ @TableField(value = TableFieldsNameConst.F_DELETE_TIME, fill = FieldFill.UPDATE)
+ private Date deleteTime;
+
+ /**
+ * 删除用户
+ */
+ @TableField(value = TableFieldsNameConst.F_DELETE_USER_ID, fill = FieldFill.UPDATE)
+ private String deleteUserId;
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = false)
+ public static abstract class SuperCDBaseEntity extends SuperCBaseEntity {
+
+ /**
+ * 删除标志
+ */
+ @TableField(value = TableFieldsNameConst.F_DELETE_MARK, updateStrategy = FieldStrategy.IGNORED)
+ private Integer deleteMark;
+
+ /**
+ * 删除时间
+ */
+ @TableField(value = TableFieldsNameConst.F_DELETE_TIME, fill = FieldFill.UPDATE)
+ private Date deleteTime;
+
+ /**
+ * 删除用户
+ */
+ @TableField(value = TableFieldsNameConst.F_DELETE_USER_ID, fill = FieldFill.UPDATE)
+ private String deleteUserId;
+ }
+
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperEntity.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperEntity.java
new file mode 100644
index 0000000..ec14bdc
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperEntity.java
@@ -0,0 +1,12 @@
+package com.yunzhupaas.base.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+public abstract class SuperEntity extends SuperBaseEntity.SuperCUDBaseEntity {
+
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperExtendEntity.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperExtendEntity.java
new file mode 100644
index 0000000..f4ebcb5
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/entity/SuperExtendEntity.java
@@ -0,0 +1,67 @@
+package com.yunzhupaas.base.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.yunzhupaas.constant.TableFieldsNameConst;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+public abstract class SuperExtendEntity extends SuperEntity {
+
+ /**
+ * 排序码
+ */
+ @TableField(TableFieldsNameConst.F_SORT_CODE)
+ private Long sortCode;
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = true)
+ public static abstract class SuperExtendDescriptionEntity extends SuperExtendEntity {
+
+ /**
+ * 描述
+ */
+ @TableField(TableFieldsNameConst.F_DESCRIPTION)
+ private String description;
+
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = true)
+ public static abstract class SuperExtendEnabledEntity extends SuperExtendEntity {
+
+ /**
+ * 有效标志 (0-默认,禁用,1-启用)
+ */
+ @TableField(value = TableFieldsNameConst.F_ENABLED_MARK, fill = FieldFill.INSERT)
+ private Integer enabledMark;
+
+ }
+
+ @Data
+ @ToString(callSuper = true)
+ @EqualsAndHashCode(callSuper = true)
+ public static abstract class SuperExtendDEEntity extends SuperExtendEntity {
+
+ /**
+ * 描述
+ */
+ @TableField(TableFieldsNameConst.F_DESCRIPTION)
+ private String description;
+
+ /**
+ * 有效标志 (0-默认,禁用,1-启用)
+ */
+ @TableField(value = TableFieldsNameConst.F_ENABLED_MARK, fill = FieldFill.INSERT)
+ private Integer enabledMark;
+
+ }
+
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/user/UserTenantModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/user/UserTenantModel.java
new file mode 100644
index 0000000..b341cb8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/user/UserTenantModel.java
@@ -0,0 +1,29 @@
+package com.yunzhupaas.base.user;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 用户租户信息
+ *
+ * @author :云筑产品开发平台组
+ * @version: V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date :2022/5/10 16:13
+ */
+@Data
+public class UserTenantModel implements Serializable {
+ /**
+ * 租户手机号
+ */
+ private String tenantId;
+
+ public UserTenantModel() {
+ }
+
+ public UserTenantModel(String tenantId) {
+ this.tenantId = tenantId;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/DownloadVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/DownloadVO.java
new file mode 100644
index 0000000..3442353
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/DownloadVO.java
@@ -0,0 +1,27 @@
+package com.yunzhupaas.base.vo;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DownloadVO {
+ @Schema(description = "名称")
+ private String name;
+ @Schema(description = "请求接口")
+ private String url;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/ListVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/ListVO.java
new file mode 100644
index 0000000..4f6ba23
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/ListVO.java
@@ -0,0 +1,25 @@
+package com.yunzhupaas.base.vo;
+
+import lombok.AllArgsConstructor;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ListVO {
+
+ private List list;
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/PageListVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/PageListVO.java
new file mode 100644
index 0000000..19f766d
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/PageListVO.java
@@ -0,0 +1,20 @@
+package com.yunzhupaas.base.vo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+@Data
+public class PageListVO {
+ private List list;
+ PaginationVO pagination;
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/PaginationVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/PaginationVO.java
new file mode 100644
index 0000000..1b1dc36
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/base/vo/PaginationVO.java
@@ -0,0 +1,19 @@
+package com.yunzhupaas.base.vo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 需要分页的模型
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-03-15 09:50
+ */
+@Data
+public class PaginationVO {
+ private Long currentPage;
+ private Long pageSize;
+ private Integer total;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/ApplicationStartErrorCheck.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/ApplicationStartErrorCheck.java
new file mode 100644
index 0000000..53b2812
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/ApplicationStartErrorCheck.java
@@ -0,0 +1,63 @@
+package com.yunzhupaas.config;
+
+import lombok.Getter;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.SmartInitializingSingleton;
+
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 程序启动线程初始化类
+ */
+@Slf4j
+public class ApplicationStartErrorCheck implements SmartInitializingSingleton {
+
+ private static boolean startError = false;
+
+ @Getter
+ private static final ThreadPoolExecutor applicationInitThreadPool = new ThreadPoolExecutor(10, Integer.MAX_VALUE,
+ 0L, TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue());
+
+ public static void setStartError() {
+ ApplicationStartErrorCheck.startError = true;
+ }
+
+ @SneakyThrows
+ @Override
+ public void afterSingletonsInstantiated() {
+ long count = 0;
+ long sleep = 100L;
+ //最多等待程序启动5分钟
+ long maxCount = 5 * 60000 / sleep;
+ boolean isComplete = true;
+ // 等待异步初始化全部完成
+ while(!applicationInitThreadPool.getQueue().isEmpty() || applicationInitThreadPool.getActiveCount() > 0){
+ if(log.isDebugEnabled()) {
+ log.error("等待初始化线程全部结束");
+ }
+ Thread.sleep(sleep);
+ if(++count > maxCount){
+ isComplete = false;
+ break;
+ }
+ }
+ if(!isComplete){
+ log.error("容器初始化时间过长 请检查是否存在问题");
+ System.exit(0);
+ }
+ if(startError){
+ log.error("Bean初始化发生错误, 请检查启动日志");
+ System.exit(0);
+ }
+// System.out.println("延迟五秒");
+// Thread.sleep(5000L);
+ if(log.isDebugEnabled()) {
+ log.debug("容器初始化结束");
+ }
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/Conf2SystemConfiguration.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/Conf2SystemConfiguration.java
new file mode 100644
index 0000000..7c397b8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/Conf2SystemConfiguration.java
@@ -0,0 +1,53 @@
+package com.yunzhupaas.config;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.ApplicationContextInitializer;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.Ordered;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.EnumerablePropertySource;
+import org.springframework.core.env.PropertySource;
+
+/**
+ * 将Spring中的配置设置到系统属性中
+ * conf2system:
+ * csp.sentinel.log.dir: log/${spring.application.name}/sentinel
+ * rocketmq.log.level: "OFF"
+ * demo.enabled: false
+ *
+ * @author 云筑产品开发平台组
+ * @version V5.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-12-17
+ */
+@Slf4j
+public class Conf2SystemConfiguration implements ApplicationContextInitializer, Ordered {
+
+ private static final String PREFIX = "conf2system.";
+
+ @Override
+ public void initialize(ConfigurableApplicationContext applicationContext) {
+ ConfigurableEnvironment environment = applicationContext.getEnvironment();
+ for (PropertySource> source : applicationContext.getEnvironment().getPropertySources()) {
+ if(source instanceof EnumerablePropertySource){
+ for (String propertyName : ((EnumerablePropertySource>) source).getPropertyNames()) {
+ if(propertyName.startsWith(PREFIX)){
+ Object value = environment.getProperty(propertyName);
+ if(value != null){
+ System.setProperty(propertyName.substring(PREFIX.length()), String.valueOf(value));
+ if(log.isDebugEnabled()){
+ log.debug("Setting system property [{}] to [{}]", propertyName.substring(PREFIX.length()), value);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE+1000;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/ConfigValueUtil.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/ConfigValueUtil.java
new file mode 100644
index 0000000..b96b1bc
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/ConfigValueUtil.java
@@ -0,0 +1,379 @@
+package com.yunzhupaas.config;
+
+import cn.hutool.core.net.url.UrlBuilder;
+import com.yunzhupaas.constant.ConfigConst;
+import com.yunzhupaas.constant.TableFieldsNameConst;
+import com.yunzhupaas.util.StringUtil;
+import com.yunzhupaas.util.XSSEscape;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 8:47
+ */
+@Data
+public class ConfigValueUtil {
+
+ public static final String PREFIX = "config";
+
+ @Value("spring.application.name:YUNZHUPAAS")
+ private String applicationName;
+
+ // /**
+ // * 环境路径
+ // */
+ // @Value("${config.Path:}")
+ // private String path;
+ /**
+ * 数据库备份文件路径
+ */
+ private String dataBackupFilePath;
+ /**
+ * 临时文件存储路径
+ */
+ private String temporaryFilePath;
+ /**
+ * 系统文件存储路径
+ */
+ private String systemFilePath;
+ /**
+ * 文件模板存储路径
+ */
+ private String templateFilePath;
+ /**
+ * 代码模板存储路径
+ */
+ private String templateCodePath;
+ /**
+ * vue3代码模板存储路径
+ */
+ private String templateCodePathVue3;
+ /**
+ * 邮件文件存储路径
+ */
+ private String emailFilePath;
+ /**
+ * 大屏图片存储目录
+ */
+ private String biVisualPath;
+ /**
+ * 文档管理存储路径
+ */
+ private String documentFilePath;
+ /**
+ * 文件在线预览存储pdf
+ */
+ private String documentPreviewPath;
+ /**
+ * 用户头像存储路径
+ */
+ private String userAvatarFilePath;
+ /**
+ * IM聊天图片+语音存储路径
+ */
+ private String imContentFilePath;
+ /**
+ * 允许上传文件类型
+ */
+ private String allowUploadFileType;
+ /**
+ * 允许图片类型
+ */
+ private String allowUploadImageType;
+
+ /**
+ * 允许预览类型
+ */
+ private String allowPreviewFileType;
+
+ /**
+ * 预览方式
+ */
+ private String previewType;
+
+ /**
+ * 预览方式
+ */
+ private String kkFileUrl;
+
+ /**
+ * 多语言json路径
+ */
+ private String baseLanguagePath;
+
+ /**
+ * 前端文件目录
+ */
+ private String serviceDirectoryPath = ConfigConst.CODE_TEMP_FOLDER;
+ /**
+ * 代码生成器命名空间
+ */
+ private String codeAreasName;
+
+ /**
+ * 前端附件文件目录
+ */
+ private String webAnnexFilePath;
+
+ /**
+ * ApacheShardingSphere 配置开关
+ */
+ private boolean shardingSphereEnabled;
+
+ /**
+ * 软件的错误报告
+ */
+ private String errorReport;
+ /**
+ * 软件的错误报告发给谁
+ */
+ private String errorReportTo;
+ /**
+ * 系统日志启用:true、false
+ */
+ private String recordLog;
+ /**
+ * 多租户启用:true、false
+ */
+ private boolean multiTenancy;
+ /**
+ * 多租户接口
+ */
+ private String multiTenancyUrl;
+ /**
+ * 多租户字段
+ */
+ private String multiTenantColumn = TableFieldsNameConst.F_TENANT_ID;
+ /**
+ * 字段多租户忽略表
+ */
+ private List multiTenantIgnoreTable = initMultiTenantIgnoreTable();
+ /**
+ * 多租户登录短信验证接口
+ */
+ private String multiTenancyOfficialLoginCodeUrl = null;
+ /**
+ * 多租户重置密码短信验证接口
+ */
+ private String multiTenancyOfficialResetCodeUrl = null;
+ /**
+ * 开启逻辑删除功能
+ */
+ private boolean enableLogicDelete = false;
+ /**
+ * 扫码登录过期时间
+ */
+ private Long codeCertificateTimeout = 180L;
+ /**
+ * 逻辑删除字段
+ */
+ private String logicDeleteColumn = TableFieldsNameConst.F_DELETE_MARK;
+ /**
+ * 版本
+ */
+ private String softVersion;
+ /**
+ * 推送是否启动:false、true
+ */
+ private String igexinEnabled;
+ /**
+ * APPID
+ */
+ private String igexinAppid;
+ /**
+ * APPKEY
+ */
+ private String igexinAppkey;
+ /**
+ * MASTERSECRET
+ */
+ private String igexinMastersecret;
+
+ private String appUpdateContent;
+ private String appVersion;
+
+ /**
+ * pc端服务器域名
+ */
+ private String frontDomain;
+
+ /**
+ * app端服务器域名
+ */
+ private String appDomain;
+
+ /**
+ * 服务器域名
+ */
+ private String apiDomain;
+
+ /**
+ * 工作流域名
+ */
+ private String flowDomain;
+
+ /**
+ * 检查PDF文件安全
+ */
+ private boolean checkFilePdf;
+
+ /**
+ * -------------跨域配置-----------
+ */
+ // @Value("${config.Origins}")
+ // private String origins;
+ // @Value("${config.Methods}")
+ // private String methods;
+
+ /**
+ * -------------是否开启测试环境,admin账户可以无限登陆,并且无法修改密码-----------
+ */
+ private String testVersion;
+
+ /**
+ * -------------uniPush在线-----------
+ */
+ private String appPushUrl;
+
+ public String getMultiTenancyOfficialLoginCodeUrl() {
+ if (multiTenancyOfficialLoginCodeUrl == null) {
+ if (StringUtil.isNotEmpty(multiTenancyUrl)) {
+ UrlBuilder urlBuilder1 = UrlBuilder.of(multiTenancyUrl);
+ multiTenancyOfficialLoginCodeUrl = String.format("%s://%s:%s/api/Saas/Tenant/LoginSmsCodeCheck/",
+ urlBuilder1.getSchemeWithDefault(), urlBuilder1.getHost(), urlBuilder1.getPortWithDefault());
+ } else {
+ multiTenancyOfficialLoginCodeUrl = "";
+ }
+ }
+ return multiTenancyOfficialLoginCodeUrl;
+ }
+
+ public String getMultiTenancyOfficialResetCodeUrl() {
+ if (multiTenancyOfficialResetCodeUrl == null) {
+ if (StringUtil.isNotEmpty(multiTenancyUrl)) {
+ UrlBuilder urlBuilder1 = UrlBuilder.of(multiTenancyUrl);
+ multiTenancyOfficialResetCodeUrl = String.format(
+ "%s://%s:%s/api/Saas/Tenant/ResetPasswordSmsCodeCheck/", urlBuilder1.getSchemeWithDefault(),
+ urlBuilder1.getHost(), urlBuilder1.getPortWithDefault());
+ } else {
+ multiTenancyOfficialResetCodeUrl = "";
+ }
+ }
+ return multiTenancyOfficialResetCodeUrl;
+ }
+
+ public String getServiceDirectoryPath() {
+ String folder = StringUtil.isNotEmpty(serviceDirectoryPath) ? serviceDirectoryPath
+ : ConfigConst.CODE_TEMP_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getDataBackupFilePath() {
+ String folder = StringUtil.isNotEmpty(dataBackupFilePath) ? dataBackupFilePath : ConfigConst.DATA_BACKUP_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getTemporaryFilePath() {
+ String folder = StringUtil.isNotEmpty(temporaryFilePath) ? temporaryFilePath : ConfigConst.TEMPORARY_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getSystemFilePath() {
+ String folder = StringUtil.isNotEmpty(systemFilePath) ? systemFilePath : ConfigConst.SYSTEM_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getTemplateFilePath() {
+ String folder = StringUtil.isNotEmpty(templateFilePath) ? templateFilePath : ConfigConst.TEMPLATE_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getTemplateCodePath() {
+ String folder = StringUtil.isNotEmpty(templateCodePath) ? templateCodePath : ConfigConst.TEMPLATE_CODE_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getTemplateCodePathVue3() {
+ String folder = StringUtil.isNotEmpty(templateCodePathVue3) ? templateCodePathVue3
+ : ConfigConst.TEMPLATEVUE3_CODE_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getEmailFilePath() {
+ String folder = StringUtil.isNotEmpty(emailFilePath) ? emailFilePath : ConfigConst.EMAIL_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getDocumentPreviewPath() {
+ String folder = StringUtil.isNotEmpty(documentPreviewPath) ? documentPreviewPath
+ : ConfigConst.DOCUMENT_PREVIEW_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getUserAvatarFilePath() {
+ String folder = StringUtil.isNotEmpty(userAvatarFilePath) ? userAvatarFilePath : ConfigConst.USER_AVATAR_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getImContentFilePath() {
+ String folder = StringUtil.isNotEmpty(imContentFilePath) ? imContentFilePath : ConfigConst.IM_CONTENT_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getDocumentFilePath() {
+ String folder = StringUtil.isNotEmpty(documentFilePath) ? documentFilePath : ConfigConst.DOCUMENT_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getWebAnnexFilePath() {
+ String folder = StringUtil.isNotEmpty(webAnnexFilePath) ? webAnnexFilePath : ConfigConst.WEB_ANNEX_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getBiVisualPath() {
+ String folder = StringUtil.isNotEmpty(biVisualPath) ? biVisualPath : ConfigConst.BI_VISUAL_FOLDER;
+ return getXssPath(folder + "/");
+ }
+
+ public String getBaseLanguagePath() {
+ String folder = StringUtil.isNotEmpty(baseLanguagePath) ? baseLanguagePath : ConfigConst.BASE_LANGUAGE;
+ return getXssPath(folder + "/");
+ }
+
+ private String getXssPath(String path) {
+ String xssPath = XSSEscape.escapePath(path);
+ return xssPath;
+ }
+
+ public void setMultiTenantIgnoreTable(List multiTenantIgnoreTable) {
+ initMultiTenantIgnoreTable();
+ this.multiTenantIgnoreTable.addAll(multiTenantIgnoreTable);
+ // 全部转小写, 对比时也转小写
+ this.multiTenantIgnoreTable = this.multiTenantIgnoreTable.stream().map(String::toLowerCase)
+ .collect(Collectors.toList());
+ }
+
+ public List getMultiTenantIgnoreTable() {
+ return new ArrayList<>(this.multiTenantIgnoreTable);
+ }
+
+ private List initMultiTenantIgnoreTable() {
+ List multiTenantIgnoreTable = this.multiTenantIgnoreTable;
+ if (multiTenantIgnoreTable == null) {
+ multiTenantIgnoreTable = new ArrayList<>();
+ } else {
+ multiTenantIgnoreTable.clear();
+ }
+ multiTenantIgnoreTable.add("dual");
+ return multiTenantIgnoreTable;
+ }
+
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/CoreAutoConfiguration.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/CoreAutoConfiguration.java
new file mode 100644
index 0000000..642f48c
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/config/CoreAutoConfiguration.java
@@ -0,0 +1,75 @@
+package com.yunzhupaas.config;
+
+import cn.hutool.http.useragent.*;
+import com.yunzhupaas.i18n.config.I18nProperties;
+import com.yunzhupaas.properties.GatewayWhite;
+import com.yunzhupaas.properties.MvcSecurityProperties;
+import com.yunzhupaas.properties.SecurityProperties;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+@Configuration(proxyBeanMethods = false)
+public class CoreAutoConfiguration implements InitializingBean {
+
+
+ @Bean
+ @ConditionalOnMissingBean
+ @ConfigurationProperties(prefix = GatewayWhite.PREFIX)
+ public GatewayWhite getGateWhite(){
+ return new GatewayWhite();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @ConfigurationProperties(prefix = SecurityProperties.PREFIX)
+ public SecurityProperties getSecurityProperties(){
+ return new SecurityProperties();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @ConfigurationProperties(prefix = ConfigValueUtil.PREFIX)
+ public ConfigValueUtil getConfigValueUtil(){
+ return new ConfigValueUtil();
+ }
+
+ @Bean
+ @Primary
+ @ConfigurationProperties(prefix = "spring.messages")
+ public I18nProperties getI18nProperties(){
+ return new I18nProperties();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ @ConfigurationProperties(prefix = MvcSecurityProperties.PREFIX)
+ public MvcSecurityProperties getCorsProperties(){
+ return new MvcSecurityProperties();
+ }
+
+ @Bean
+ public ApplicationStartErrorCheck getApplicationStartupErrorCheck(){
+ return new ApplicationStartErrorCheck();
+ }
+
+ @Override
+ public void afterPropertiesSet() {
+ // UserAgent
+ initUserAgent();
+ }
+
+ private void initUserAgent(){
+ // Harmony 鸿蒙OS
+ OS.addCustomOs("OpenHarmony", "OpenHarmony", "OpenHarmony\\s+(\\d+([._]\\d+)*)");
+ // 鸿蒙OS移动端
+ Platform platform = new Platform("OpenHarmony", "Phone;\\s*OpenHarmony\\s*");
+ Platform.mobilePlatforms.add(platform);
+ Platform.platforms.add(platform);
+ Browser.browers.add(0, new Browser("OpenHarmony", "Phone;\\s*OpenHarmony.*ArkWeb", "ArkWeb\\/([\\d\\w\\.\\-]+)"));
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/ConfigConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/ConfigConst.java
new file mode 100644
index 0000000..fcaf9bb
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/ConfigConst.java
@@ -0,0 +1,87 @@
+package com.yunzhupaas.constant;
+
+/**
+ * 配置静态参数
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.2.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/12/15
+ */
+public class ConfigConst {
+
+ /**
+ * 前端附件文件夹
+ */
+ public final static String WEB_ANNEX_FOLDER = "WebAnnexFile";
+
+ /**
+ * 临时文件夹
+ */
+ public final static String TEMPORARY_FOLDER = "TemporaryFile";
+
+ /**
+ * 系统文件夹
+ */
+ public final static String SYSTEM_FOLDER = "SystemFile";
+
+ /**
+ * 文件模板文件夹
+ */
+ public final static String TEMPLATE_FOLDER = "TemplateFile";
+
+ /**
+ * 邮件文件夹
+ */
+ public final static String EMAIL_FOLDER = "EmailFile";
+
+ /**
+ * 文档管理文件夹
+ */
+ public final static String DOCUMENT_FOLDER = "DocumentFile";
+
+ /**
+ * 文档预览文件夹
+ */
+ public final static String DOCUMENT_PREVIEW_FOLDER = "DocumentPreview";
+
+ /**
+ * 用户头像文件夹
+ */
+ public final static String USER_AVATAR_FOLDER = "UserAvatar";
+
+ /**
+ * IM聊天图片+语音存储文件夹
+ */
+ public final static String IM_CONTENT_FOLDER = "IMContentFile";
+
+ /**
+ * 代码模板文件夹
+ */
+ public final static String TEMPLATE_CODE_FOLDER = "TemplateCode";
+ /**
+ * vue3代码模板文件夹
+ */
+ public final static String TEMPLATEVUE3_CODE_FOLDER = "TemplateCodeVue3";
+
+ /**
+ * 大屏图片文件夹
+ */
+ public final static String BI_VISUAL_FOLDER = "BiVisualPath";
+
+ /**
+ * 数据库备份文件夹
+ */
+ public final static String DATA_BACKUP_FOLDER = "DataBackupFile";
+
+ /**
+ * 前端模板文件夹
+ */
+ public final static String CODE_TEMP_FOLDER = "CodeTemp";
+
+ /**
+ * 多语言文件夹
+ */
+ public final static String BASE_LANGUAGE = "Language";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DataInterfaceVarConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DataInterfaceVarConst.java
new file mode 100644
index 0000000..082717c
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DataInterfaceVarConst.java
@@ -0,0 +1,88 @@
+package com.yunzhupaas.constant;
+
+/**
+ * 接口数据配置系统变量
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.4.2
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024/6、29
+ */
+public class DataInterfaceVarConst {
+
+ /**
+ * 当前用户
+ */
+ public static final String USER = "@userId";
+ /**
+ * 当前用户及下属
+ */
+ public static final String USERANDSUB = "@userAndSubordinates";
+ /**
+ * 当前组织
+ */
+ public static final String ORG = "@organizeId";
+ /**
+ * 当前组织及子组织
+ */
+ public static final String ORGANDSUB = "@organizationAndSuborganization";
+ /**
+ * 当前分管组织
+ */
+ public static final String CHARORG = "@branchManageOrganize";
+
+ /**
+ * 页行数
+ */
+ public static final String PAGESIZE = "@pageSize";
+ /**
+ * 关键字
+ */
+ public static final String KEYWORD = "@keyword";
+ /**
+ * 当前页
+ */
+ public static final String CURRENTPAGE = "@currentPage";
+ /**
+ * 条数
+ */
+ public static final String OFFSETSIZE = "@offsetSize";
+ /**
+ * 当前分管组织及子组织
+ */
+ public static final String SHOWKEY = "@showKey";
+ /**
+ * 当前分管组织及子组织
+ */
+ public static final String SHOWVALUE = "@showValue";
+ /**
+ * 生成雪花id
+ */
+ public static final String ID = "@snowFlakeID";
+ /**
+ * 每次生成新的雪花id
+ */
+ public static final String ID_LOT = "@lotSnowID";
+ /**
+ * 表单id
+ */
+ public static final String FORM_ID = "@formId";
+ /**
+ * 当前岗位
+ */
+ public static final String POSITIONID = "@positionId";
+ /**
+ * 当前部门
+ */
+ public static final String DEPID = "@depId";
+
+ /**
+ * 当前部门及下级部门
+ */
+ public static final String DEPANDSUBORDINATES = "@depAndSubordinates";
+ /**
+ * 当前时间
+ */
+ public static final String CURRENTTIME = "@currentTime";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DbSensitiveConstant.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DbSensitiveConstant.java
new file mode 100644
index 0000000..0924938
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DbSensitiveConstant.java
@@ -0,0 +1,33 @@
+package com.yunzhupaas.constant;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 数据库敏感词
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-01-12
+ */
+@Data
+public class DbSensitiveConstant {
+
+ /**
+ * 数据库敏感词
+ * INSERT,DELETE,UPDATE 不为敏感字
+ */
+ public static final String SENSITIVE = "CREATE,UNIQUE,CHECK,DEFAULT,DROP,INDEX,ALTER,TABLE,VIEW";
+
+ /**
+ * 数据库敏感词
+ * INSERT,DELETE,UPDATE 不为敏感字
+ */
+ public static final String PRINT_SENSITIVE = SENSITIVE + ",INSERT,DELETE,UPDATE";
+
+ /**
+ * 文件路径敏感词
+ */
+ public static final String FILE_SENSITIVE = "<,>,/,\\\\,:,|";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DsKeyConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DsKeyConst.java
new file mode 100644
index 0000000..57db4f0
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/DsKeyConst.java
@@ -0,0 +1,36 @@
+package com.yunzhupaas.constant;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 数据集参数类型常量
+ *
+ * @author 云筑产品开发平台组
+ * @version v5.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/9/13 16:15:14
+ */
+public class DsKeyConst {
+ public static final String TEXT = "text";
+ public static final String DOUBLE = "double";
+ public static final String BIGINT = "bigint";
+ public static final String DATE = "date";
+ public static final String TIME = "time";
+
+ public static final List DateSelect = new ArrayList() {
+ {
+ add(DATE);
+ add(TIME);
+ }
+ };
+
+ public static final List BetweenSelect = new ArrayList() {
+ {
+ add(DATE);
+ add(TIME);
+ add(BIGINT);
+ add(DOUBLE);
+ }
+ };
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/EventConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/EventConst.java
new file mode 100644
index 0000000..fa4accf
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/EventConst.java
@@ -0,0 +1,11 @@
+package com.yunzhupaas.constant;
+
+/**
+ * 事件常量
+ */
+public class EventConst {
+
+ public static final String EVENT_USER_LOGIN = "user_login";
+ public static final String EVENT_INIT_LOGIN_PERMISSION = "init_login_permission";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/FileTypeConstant.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/FileTypeConstant.java
new file mode 100644
index 0000000..6f2c7f6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/FileTypeConstant.java
@@ -0,0 +1,96 @@
+package com.yunzhupaas.constant;
+
+/**
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:51
+ */
+public class FileTypeConstant {
+ /**
+ * 用户头像存储路径
+ */
+ public static final String USERAVATAR = "useravatar";
+ /**
+ * 邮件文件存储路径
+ */
+ public static final String MAIL = "mail";
+ /**
+ * IM聊天图片+语音存储路径
+ */
+ public static final String IM = "im";
+ /**
+ *临时文件存储路径
+ */
+ public static final String WORKFLOW="workflow";
+ /**
+ *前端附件文件目录
+ */
+ public static final String ANNEX="annex";
+ public static final String ANNEXPIC="annexpic";
+ /**
+ *数据库备份文件路径
+ */
+ public static final String DATABACKUP="dataBackup";
+ /**
+ *文档管理存储路径
+ */
+ public static final String DOCUMENT="document";
+ /**
+ *临时文件存储路径
+ */
+ public static final String TEMPORARY="temporary";
+ /**
+ *允许上传文件类型
+ */
+ public static final String ALLOWUPLOADFILETYPE="allowuploadfiletype";
+ /**
+ *文件在线预览存储pdf
+ */
+ public static final String DOCUMENTPREVIEWPATH="preview";
+ /**
+ *文件模板存储路径
+ */
+ public static final String TEMPLATEFILE="templatefile";
+ /**
+ *前端文件目录
+ */
+ public static final String SERVICEDIRECTORY="servicedirectory";
+ /**
+ *后端文件目录
+ */
+ public static final String WEBDIRECTORY="webdirectory";
+ /**
+ * 代码生成器生成位置
+ */
+ public static final String CODETEMP = "codetemp";
+ /**
+ * 导出
+ */
+ public static final String EXPORT = "export";
+ /**
+ * 文件预览
+ */
+ public static final String DOCUMENTPREVIEW = "documentpreview";
+ /**
+ * 大屏路径
+ */
+ public static final String BIVISUALPATH = "bivisualpath";
+
+ /**
+ * 初始化模板
+ */
+ public static final String TEMPLATECODEPATH = "templatecodepath";
+
+ /**
+ * 报表路径
+ */
+ public static final String REPORTPATH = "reportfile";
+
+ /**
+ * 文件zip打包下载临时文件路径
+ */
+ public static final String FILEZIPDOWNTEMPPATH = "filezipdownloadtemppath";
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/GenerateConstant.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/GenerateConstant.java
new file mode 100644
index 0000000..5bbd277
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/GenerateConstant.java
@@ -0,0 +1,380 @@
+package com.yunzhupaas.constant;
+
+import com.yunzhupaas.util.StringUtil;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author 云筑产品开发平台组
+ * @version V3.5.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024/5/31
+ */
+public class GenerateConstant {
+
+ /**
+ * 作者
+ */
+ public static final String AUTHOR = "云筑产品开发平台组";
+
+ /**
+ * 版本
+ */
+ public static final String VERSION = "V5.2.0";
+
+ /**
+ * 版权
+ */
+ public static final String COPYRIGHT = "深圳市乐程软件有限公司(http://www.szlecheng.cn)";
+
+ /**
+ * 描述
+ */
+ public static final String DESCRIPTION = "";
+
+ /**
+ * 文件本地服务器标识
+ */
+ public static final String LOCAL = "local";
+ /**
+ * 系统配置信息key
+ */
+ public static final String SYSCONFIG = "SysConfig";
+ // 文件名前缀
+ /**
+ * 实体后缀
+ */
+ public static final String ENTITY = "Entity";
+
+ /**
+ * Mapper XML后缀
+ */
+ public static final String MAPPER_XML = "Mapper";
+
+ /**
+ * Mapper后缀
+ */
+ public static final String MAPPER = "Mapper";
+
+ /**
+ * Service后缀
+ */
+ public static final String SERVICE = "Service";
+
+ /**
+ * SERVICEIMPL后缀
+ */
+ public static final String SERVICEIMPL = "ServiceImpl";
+
+ /**
+ * controller后缀
+ */
+ public static final String CONTROLLER = "Controller";
+
+ /**
+ * 包名
+ */
+ public static final String PACKAGE_NAME = "com.yunzhupaas";
+
+ /**
+ * 系统关键字
+ */
+ public static final List SYS_KEYWORD = Arrays.asList("tenantid", "id", "foreignid", "flowid", "flowtaskid",
+ "deleteuserid", "deletetime", "deletemark",
+ "version", "tenant_id", "foreign_id", "flow_id", "flow_task_id", "delete_user_id", "delete_time",
+ "delete_mark", "f_tenant_id", "f_id", "f_foreign_id",
+ "f_flow_id", "f_flow_task_id", "f_delete_user_id", "f_delete_time", "f_delete_mark", "f_version");
+ /**
+ * JAVA关键字
+ */
+ public static final List JAVA_KEYWORD = Arrays.asList("abstract", "boolean", "break", "byte", "catch",
+ "char", "class", "continue", "default", "do", "double",
+ "else", "extends", "final", "finally", "float", "for", "if", "implements", "import", "instanceof", "int",
+ "interface", "long", "native", "new", "null",
+ "package", "private", "protected", "public", "short", "static", "super", "switch", "synchronized", "this",
+ "throw", "throws", "transient", "try", "void",
+ "volatile", "while");
+ /**
+ * 数据库关键字
+ */
+ public static final List SQL_KEYWORD = Arrays.asList("abort", "abs", "absent", "absolute", "abstract",
+ "access", "accessed", "accessible", "according", "account", "across", "action", "activate", "ada", "add",
+ "admin", "administer", "administrator", "advanced", "advise", "advisor", "after", "against", "aggregate",
+ "algorithm", "alias", "all", "all_rows", "allocate", "allow", "allow_datetime", "allow_ip", "also", "alter",
+ "always", "analyse", "analyze", "ancillary", "and", "and_equal", "antijoin", "any", "append", "apply",
+ "apr", "archive", "archivedir", "archivelog", "archivestyle", "are", "array", "array_agg",
+ "array_max_cardinality", "arraylen", "as", "asc", "ascii", "asensitive", "asin", "assertion", "assign",
+ "assignment", "associate", "asymmetric", "asynchronous", "at", "atach", "atan", "atomic", "attach",
+ "attribute", "attributes", "audit", "aug", "authenticated", "authentication", "authid", "authorization",
+ "auto", "auto_increment", "autoallocate", "autoextend", "autoextend_size", "automatic",
+ "autonomous_transaction", "availability", "avg", "avg_row_length", "backed", "backup", "backupdir",
+ "backupinfo", "backupset", "backward", "badfile", "bakfile", "base", "base64", "batch", "become", "before",
+ "begin", "begin_frame", "begin_partition", "behalf", "bernoulli", "between", "bfile", "bigdatediff",
+ "bigfile", "bigint", "binary", "binary_double", "binary_double_infinity", "binary_double_nan",
+ "binary_float", "binary_float_infinity", "binary_float_nan", "binding", "binlog", "bit", "bit_length",
+ "bitmap", "bits", "bitvar", "blob", "block", "block_range", "blocked", "blocks", "blocksize", "body", "bom",
+ "bool", "boolean", "both", "bound", "branch", "breadth", "break", "broadcast", "browse", "bstring", "btree",
+ "buffer", "buffer_cache", "buffer_pool", "build", "bulk", "by", "byday", "byhour", "byminute", "bymonth",
+ "bymonthday", "bypass_recursive_check", "bypass_ujvc", "bysecond", "byte", "byweekno", "byyearday", "cache",
+ "cache_cb", "cache_instances", "cache_temp_table", "calculate", "call", "called", "cancel", "cardinality",
+ "cascade", "cascaded", "case", "cast", "catalog", "catalog_name", "catch", "category", "ceil", "ceiling",
+ "certificate", "cfile", "chain", "chained", "chaining", "change", "changed", "channel", "char", "char_cs",
+ "char_length", "character", "character_length", "character_set_catalog", "character_set_name",
+ "character_set_schema", "characteristics", "characters", "charset", "check", "checked", "checkpoint",
+ "checksum", "child", "choose", "chunk", "cipher", "civ_gb", "class", "class_origin", "classifies", "clear",
+ "client", "clob", "clone", "close", "close_cached_open_cursors", "cluster", "clusterbtr", "clustered",
+ "clustering_factor", "coalesce", "coarse", "cobol", "code", "collate", "collation", "collation_catalog",
+ "collation_name", "collation_schema", "collect", "collections_get_refs", "column", "column_format",
+ "column_name", "column_stats", "column_value", "columns", "command_function", "command_function_code",
+ "comment", "comments", "commit", "committed", "commitwork", "compact", "compatibility", "compile",
+ "complete", "completion", "composite_limit", "compress", "compressed", "compression", "compute", "concat",
+ "concurrent", "concurrently", "condition", "condition_number", "conditional", "configuration", "conflict",
+ "conforming", "connect", "connect_by_iscycle", "connect_by_isleaf", "connect_by_root", "connect_idle_time",
+ "connect_time", "connection", "connection_name", "consider", "consistent", "const", "constant",
+ "constraint", "constraint_catalog", "constraint_name", "constraint_schema", "constraints", "constructor",
+ "container", "contains", "containstable", "content", "contents", "context", "continue", "control",
+ "controlfile", "conversion", "convert", "copy", "corr", "corresponding", "corrupt", "corruption", "cos",
+ "cosh", "cost", "count", "counter", "covar_pop", "covar_samp", "cpu", "cpu_costing", "cpu_per_call",
+ "cpu_per_session", "create", "create_stored_outlines", "createdb", "createuser", "cross", "crypto", "csv",
+ "ctlfile", "cube", "cube_gb", "cume_dist", "cumulative", "current", "current_catalog", "current_date",
+ "current_default_transform_group", "current_path", "current_role", "current_row", "current_schema",
+ "current_time", "current_timestamp", "current_transform_group_for_type", "current_user", "cursor",
+ "cursor_name", "cursor_sharing_exact", "cursor_specific_segment", "cycle", "daily", "dangling", "data",
+ "database", "databases", "datafile", "datafiles", "datalink", "dataobjno", "date", "date_mode", "dateadd",
+ "datediff", "datepart", "datetime", "datetime_interval_code", "datetime_interval_precision", "day",
+ "day_hour", "day_microsecond", "day_minute", "day_second", "db", "dba", "dba_recyclebin", "dbcc", "dbfile",
+ "dbtimezone", "ddl", "ddl_clone", "deallocate", "debug", "dec", "decfloat", "decimal", "declare", "decode",
+ "decrement", "default", "default_auth", "defaults", "deferrable", "deferred", "define", "defined",
+ "definer", "degree", "delay", "delay_key_write", "delayed", "delete", "deleting", "delimited", "delimiter",
+ "delimiters", "delta", "demand", "dense_rank", "deny", "depends", "depth", "deref", "deref_no_rewrite",
+ "derived", "des_key_file", "desc", "describe", "descriptor", "destroy", "destructor", "detach", "detached",
+ "determines", "deterministic", "device", "diagnostics", "dictionary", "dimension", "directory", "disable",
+ "disassociate", "discard", "disconnect", "disk", "diskgroup", "disks", "diskspace", "dismount", "dispatch",
+ "distinct", "distinctrow", "distinguished", "distributed", "div", "dlnewcopy", "dlpreviouscopy",
+ "dlurlcomplete", "dlurlcompleteonly", "dlurlcompletewrite", "dlurlpath", "dlurlpathonly", "dlurlpathwrite",
+ "dlurlscheme", "dlurlserver", "dlvalue", "dml", "dml_update", "do", "document", "domain",
+ "domain_index_no_sort", "domain_index_sort", "double", "down", "downgrade", "driving_site", "drop", "dual",
+ "dump", "dumpfile", "duplicate", "dynamic", "dynamic_function", "dynamic_function_code", "dynamic_sampling",
+ "dynamic_sampling_est_cdn", "each", "editionable", "element", "else", "elseif", "elsif", "empty", "enable",
+ "enclosed", "encoding", "encrypt", "encrypted", "encryption", "end", "end_frame", "end_partition",
+ "end-exec", "ends", "enforce", "enforced", "engine", "engines", "entry", "enum", "equ", "equals", "errlvl",
+ "error", "error_on_overlap_time", "errors", "escape", "escaped", "estimate", "event", "eventinfo", "events",
+ "every", "except", "exception", "exception_init", "exceptions", "exchange", "exclude", "excluding",
+ "exclusive", "exec", "execute", "exempt", "existing", "exists", "exit", "exp", "expand_gset_to_union",
+ "expansion", "expire", "explain", "explosion", "export", "expr_corr_check", "expression", "extend",
+ "extended", "extends", "extension", "extent", "extent_size", "extents", "extern", "external", "externally",
+ "extract", "fact", "failed", "failed_login_attemps", "failed_login_attempts", "failgroup", "family", "fast",
+ "faults", "fbtscan", "feb", "fetch", "fic_civ", "fic_piv", "fields", "file", "file_block_size", "filegroup",
+ "filesize", "fillfactor", "filter", "final", "finally", "fine", "finish", "first", "first_rows",
+ "first_value", "fixed", "flag", "flagger", "flashback", "float", "float4", "float8", "flob", "floor",
+ "flush", "following", "follows", "for", "forall", "force", "force_xml_query_rewrite", "foreign",
+ "foreign key", "format", "fortran", "forward", "found", "frame_row", "free", "freelist", "freelists",
+ "freepools", "freetext", "freetexttable", "freeze", "freq", "frequence", "fresh", "fri", "from", "fs",
+ "fulfill", "full", "full join", "fulltext", "fulltexttable", "fully", "function", "functions", "fusion",
+ "gather_plan_statistics", "gby_conc_rollup", "general", "generated", "geometry", "geometrycollection",
+ "get", "get_format", "gight", "global", "global_name", "global_topic_enabled", "globally", "go", "goto",
+ "grant", "granted", "grants", "great", "greatest", "group", "group by", "group_by", "group_replication",
+ "grouping", "groups", "guarantee", "guaranteed", "guard", "handler", "hash", "hash_aj", "hash_sj",
+ "hashkeys", "hashpartmap", "having", "header", "heap", "help", "hex", "hextoraw", "hierarchy", "high",
+ "high_priority", "hintset_begin", "hintset_end", "hold", "holdlock", "host", "hosts", "hour",
+ "hour_microsecond", "hour_minute", "hour_second", "hourly", "huge", "hwm_brokered", "id", "identified",
+ "identifier", "identity", "identity_insert", "identitycol", "idgenerators", "idle_time", "if", "ifnull",
+ "ignore", "ignore_on_clause", "ignore_optim_embedded_hints", "ignore_row_on_dupkey_index",
+ "ignore_server_ids", "ignore_where_clause", "ilike", "image", "immediate", "immediately", "immutable",
+ "implementation", "implicit", "import", "in", "in_memory_metadata", "include", "include_version",
+ "including", "increase", "increment", "incremental", "indent", "index", "index_asc", "index_combine",
+ "index_desc", "index_ffs", "index_filter", "index_join", "index_rows", "index_rrs", "index_scan",
+ "index_skip_scan", "index_ss", "index_ss_asc", "index_ss_desc", "index_stats", "indexed", "indexes",
+ "indextype", "indextypes", "indicator", "indices", "infile", "infinite", "informational", "inherit",
+ "inherits", "initial", "initial_size", "initialize", "initialized", "initially", "initrans", "inline",
+ "inner", "inner join", "innerid", "inout", "input", "insensitive", "insert", "insert_method", "inserting",
+ "install", "instance", "instances", "instantiable", "instantly", "instead", "int", "int1", "int2", "int3",
+ "int4", "int8", "integer", "integrity", "intent", "intermediate", "internal_convert", "internal_use",
+ "interpreted", "intersect", "intersection", "interval", "into", "invalidate", "invisible", "invoker", "io",
+ "io_after_gtids", "io_before_gtids", "io_thread", "ipc", "is", "isnull", "isolation", "isolation_level",
+ "issuer", "iterate", "iteration_number", "jan", "java", "job", "join", "json", "json_array",
+ "json_arrayagg", "json_exists", "json_object", "json_objectagg", "json_query", "json_table",
+ "json_table_primitive", "json_value", "jul", "jun", "keep", "kerberos", "key", "key_block_size",
+ "key_length", "key_member", "key_type", "keyfile", "keys", "keysize", "kill", "label", "lag", "language",
+ "large", "last", "last_value", "lateral", "lax", "layer", "ldap_reg_sync_interval", "ldap_registration",
+ "ldap_registration_enabled", "lead", "leading", "leakproof", "least", "leave", "leaves", "left",
+ "left join", "length", "less", "level", "levels", "lexer", "library", "like", "like_expand", "like_regex",
+ "like2", "like4", "likec", "limit", "linear", "lineno", "lines", "linestring", "link", "list", "listagg",
+ "listen", "ln", "lnnvl", "load", "lob", "local", "local_indexes", "local_object", "locally", "localtime",
+ "localtimestamp", "location", "locator", "lock", "locked", "locks", "log", "log10", "logfile", "logged",
+ "logging", "logical", "logical_reads_per_call", "logical_reads_per_session", "login", "logoff", "logon",
+ "logout", "logs", "long", "longblob", "longtext", "longvarbinary", "longvarchar", "loop", "low_priority",
+ "lower", "lsn", "main", "manage", "managed", "management", "manual", "map", "mapped", "mapping", "mar",
+ "master", "master_auto_position", "master_bind", "master_connect_retry", "master_delay",
+ "master_heartbeat_period", "master_host", "master_log_file", "master_log_pos", "master_password",
+ "master_port", "master_retry_count", "master_server_id", "master_ssl", "master_ssl_ca", "master_ssl_capath",
+ "master_ssl_cert", "master_ssl_cipher", "master_ssl_crl", "master_ssl_crlpath", "master_ssl_key",
+ "master_ssl_verify_server_cert", "master_tls_version", "master_user", "match", "match_number",
+ "match_recognize", "matched", "matches", "materialize", "materialized", "max", "max_connections_per_hour",
+ "max_queries_per_hour", "max_rows", "max_run_duration", "max_size", "max_statement_time",
+ "max_updates_per_hour", "max_user_connections", "maxarchlogs", "maxdatafiles", "maxextents", "maximize",
+ "maxinstances", "maxlogfiles", "maxloghistory", "maxlogmembers", "maxpiecesize", "maxsize", "maxtrans",
+ "maxvalue", "may", "measures", "medium", "mediumblob", "mediumint", "mediumtext", "mem_space", "member",
+ "memory", "merge", "merge_aj", "merge_const_on", "merge_sj", "message_length", "message_octet_length",
+ "message_text", "method", "micro", "microsecond", "middleint", "migrate", "min", "min_rows", "minextents",
+ "minimize", "minimum", "minus", "minute", "minute_microsecond", "minute_second", "minutely", "minvalue",
+ "mirror", "mlslabel", "mod", "mode", "model", "model_dontverify_uniqueness", "model_min_analysis",
+ "model_no_analysis", "model_pby", "model_push_ref", "modifies", "modify", "module", "mon", "money",
+ "monitoring", "month", "monthly", "more", "mount", "move", "movement", "multilinestring", "multipoint",
+ "multipolygon", "multiset", "mumps", "mutex", "mv_merge", "mysql_errno", "name", "named", "names",
+ "namespace", "nan", "national", "native", "natural", "nav", "nchar", "nchar_cs", "ncharacter", "nclob",
+ "ndb", "ndbcluster", "needed", "nested", "nested_table_fast_insert", "nested_table_get_refs",
+ "nested_table_id", "nested_table_set_refs", "nested_table_set_setid", "nesting", "network", "never", "new",
+ "next", "nfc", "nfd", "nfkc", "nfkd", "nil", "nl_aj", "nl_sj", "nls_calendar", "nls_characterset",
+ "nls_comp", "nls_currency", "nls_date_format", "nls_date_language", "nls_iso_currency", "nls_lang",
+ "nls_language", "nls_length_semantics", "nls_nchar_conv_excp", "nls_numeric_characters", "nls_sort",
+ "nls_special_chars", "nls_territory", "no", "no_access", "no_basetable_multimv_rewrite", "no_buffer",
+ "no_cpu_costing", "no_expand", "no_expand_gset_to_union", "no_fact", "no_filtering", "no_index",
+ "no_index_ffs", "no_index_ss", "no_merge", "no_model_push_ref", "no_monitoring", "no_multimv_rewrite",
+ "no_order_rollups", "no_parallel", "no_parallel_index", "no_partial_commit", "no_prune_gsets",
+ "no_push_pred", "no_push_subq", "no_qkn_buff", "no_query_transformation", "no_ref_cascade", "no_rewrite",
+ "no_semijoin", "no_set_to_join", "no_star_transformation", "no_stats_gsets", "no_swap_join_inputs",
+ "no_trigger", "no_unnest", "no_use_hash", "no_use_merge", "no_use_nl", "no_wait", "no_write_to_binlog",
+ "no_xml_query_rewrite", "noappend", "noarchivelog", "noaudit", "nobranch", "nocache", "nocheck",
+ "nocompress", "nocopy", "nocpu_costing", "nocycle", "node", "nodegroup", "nodelay", "noforce",
+ "noguarantee", "nologging", "nomapping", "nomaxvalue", "nominimize", "nominvalue", "nomonitoring",
+ "nonblocking", "nonclustered", "none", "noneditionable", "noorder", "nooverride", "noparallel",
+ "noparallel_index", "norely", "norepair", "noresetlogs", "noreverse", "norewrite", "normal", "normalize",
+ "normalized", "norowdependencies", "nosegment", "nosort", "nostrict", "noswitch", "not",
+ "not_allow_datetime", "not_allow_ip", "nothing", "notify", "notnull", "nov", "novalidate", "nowait",
+ "nth_value", "ntile", "null", "nullable", "nullif", "nulls", "number", "numeric", "nvarchar", "nvarchar2",
+ "object", "objno", "objno_reuse", "occurrences_regex", "oct", "octet_length", "octets", "of", "off",
+ "offline", "offset", "offsets", "oid", "oidindex", "oids", "old", "old_password", "omit", "on", "once",
+ "one", "online", "only", "opaque", "opaque_transform", "opaque_xcanonical", "opcode", "open",
+ "opendatasource", "openquery", "openrowset", "openxml", "operation", "operator", "opt_estimate", "optimal",
+ "optimize", "optimizer_costs", "optimizer_features_enable", "optimizer_goal", "option", "optionally",
+ "options", "or", "or_expand", "ora_rowscn", "order", "order by", "ordered", "ordered_predicates",
+ "ordering", "ordinality", "organization", "others", "out", "out_of_line", "outer", "outfile", "outline",
+ "output", "over", "overflow", "overflow_nomove", "overlaps", "overlay", "override", "overriding", "own",
+ "owned", "owner", "pack_keys", "package", "packages", "pad", "page", "parallel", "parallel_enable",
+ "parallel_index", "parameter", "parameter_mode", "parameter_name", "parameter_ordinal_position",
+ "parameter_specific_catalog", "parameter_specific_name", "parameter_specific_schema", "parameters",
+ "parent", "parity", "parms", "parse_gcol_expr", "parser", "partial", "partially", "partition",
+ "partition_hash", "partition_list", "partition_range", "partitioning", "partitions", "pascal", "pass",
+ "passing", "passthrough", "password", "password_grace_time", "password_life_time", "password_lock_time",
+ "password_policy", "password_reuse_max", "password_reuse_time", "password_verify_function", "past", "path",
+ "pattern", "pctfree", "pctincrease", "pctthreshold", "pctused", "pctversion", "pendant", "per", "percent",
+ "percent_rank", "percentile_cont", "percentile_disc", "performance", "period", "permanent", "permission",
+ "permute", "pfile", "phase", "physical", "pipe", "pipelined", "piv_gb", "piv_ssf", "pivot", "placing",
+ "plan", "plans", "pli", "pls_integer", "plsql_code_type", "plsql_debug", "plsql_optimize_level",
+ "plsql_warnings", "plugin", "plugin_dir", "plugins", "point", "policy", "polygon", "port", "portion",
+ "position", "position_regex", "post_transaction", "postfix", "power", "pq_distribute", "pq_map", "pq_nomap",
+ "pragma", "prebuilt", "precedes", "preceding", "precision", "prefix", "preorder", "prepare", "prepared",
+ "present", "preserve", "pretty", "primary", "primary key", "print", "prior", "private", "private_sga",
+ "privilege", "privileges", "proc", "procedural", "procedure", "procedures", "processlist", "profile",
+ "profiles", "program", "project", "protected", "protection", "proxy", "prune", "ptf", "public",
+ "publication", "purge", "push_pred", "push_subq", "px_granule", "qb_name", "quarter", "query",
+ "query_block", "query_rewrite_integrity", "queue", "queue_curr", "queue_rowp", "quick", "quiesce", "quota",
+ "quote", "quotes", "raid0", "raise", "raiserror", "random", "randomly", "range", "rank", "rapidly", "raw",
+ "rawtohex", "rba", "read", "read_only", "read_per_call", "read_per_session", "read_write", "readonly",
+ "reads", "readtext", "real", "reassign", "rebalance", "rebuild", "recheck", "reconfigure", "record",
+ "records", "records_per_block", "recover", "recoverable", "recovery", "recursive", "recycle", "recyclebin",
+ "redo_buffer_size", "redofile", "reduced", "redundancy", "redundant", "ref", "ref_cascade_cursor",
+ "reference", "referenced", "references", "referencing", "refresh", "regexp", "regexp_like", "register",
+ "regr_avgx", "regr_avgy", "regr_count", "regr_intercept", "regr_r2", "regr_slope", "regr_sxx", "regr_sxy",
+ "regr_syy", "reindex", "reject", "rekey", "related", "relational", "relative", "relay", "relay_log_file",
+ "relay_log_pos", "relay_thread", "relaylog", "release", "reload", "rely", "remote_mapped", "remove",
+ "rename", "reorganize", "repair", "repeat", "repeatable", "replace", "replay", "replica", "replicate",
+ "replicate_do_db", "replicate_do_table", "replicate_ignore_db", "replicate_ignore_table",
+ "replicate_rewrite_db", "replicate_wild_do_table", "replicate_wild_ignore_table", "replication", "require",
+ "required", "requiring", "reset", "resetlogs", "resignal", "resize", "resolve", "resolver", "resource",
+ "respect", "restart", "restore", "restore_as_intervals", "restrict", "restrict_all_ref_cons",
+ "restrict_references", "restricted", "result", "result_cache", "resumable", "resume", "retention", "return",
+ "returned_cardinality", "returned_length", "returned_octet_length", "returned_sqlstate", "returning",
+ "returns", "reuse", "reverse", "revert", "revoke", "rewrite", "rewrite_or_error", "right", "right join",
+ "rlike", "role", "roles", "rollback", "rollfile", "rollup", "root", "rotate", "round", "routine",
+ "routine_catalog", "routine_name", "routine_schema", "routines", "row", "row_count", "row_format",
+ "row_length", "row_number", "rowcount", "rowdependencies", "rowguidcol", "rowid", "rownum", "rows", "rtree",
+ "rule", "rules", "running", "salt", "sample", "sat", "save", "save_as_intervals", "savepoint", "sb4",
+ "sbyte", "scalar", "scale", "scale_rows", "scan", "scan_instances", "schedule", "scheduler", "schema",
+ "schema_name", "schemas", "scn", "scn_ascending", "scope", "scope_catalog", "scope_name", "scope_schema",
+ "scroll", "sd_all", "sd_inhibit", "sd_show", "sealed", "search", "second", "second_microsecond", "secondly",
+ "section", "security", "securityaudit", "seed", "seg_block", "seg_file", "segment", "select", "selective",
+ "selectivity", "self", "semijoin", "semijoin_driver", "sensitive", "sep", "separator", "sequence",
+ "sequenced", "sequences", "sequential", "sererr", "serial", "serializable", "server", "server_name",
+ "servererror", "session", "session_cached_cursors", "session_per_user", "session_user", "sessions_per_user",
+ "sessiontimezone", "sessiontzname", "set", "set_to_join", "setof", "sets", "settings", "setuser", "severe",
+ "share", "shared", "shared_pool", "short", "show", "shrink", "shutdown", "siblings", "sid", "signal",
+ "signed", "similar", "simple", "sin", "since", "single", "singletask", "sinh", "size", "sizeof", "skip",
+ "skip_ext_optimizer", "skip_unq_unusable_idx", "skip_unusable_indexes", "slave", "slow", "smallfile",
+ "smallint", "snapshot", "socket", "some", "soname", "sort", "sound", "sounds", "source", "space", "span",
+ "spatial", "specific", "specific_name", "specification", "specifictype", "speed", "spfile", "split",
+ "spreadsheet", "sql", "sql_after_gtids", "sql_after_mts_gaps", "sql_before_gtids", "sql_big_result",
+ "sql_buffer_result", "sql_cache", "sql_calc_found_rows", "sql_no_cache", "sql_small_result", "sql_thread",
+ "sql_trace", "sql_tsi_day", "sql_tsi_hour", "sql_tsi_minute", "sql_tsi_month", "sql_tsi_quarter",
+ "sql_tsi_second", "sql_tsi_week", "sql_tsi_year", "sqlca", "sqlcode", "sqlerror", "sqlexception", "sqlldr",
+ "sqlstate", "sqlwarning", "sqrt", "ssl", "stable", "stacked", "standalone", "standby", "star",
+ "star_transformation", "start", "starting", "starts", "startup", "stat", "state", "statement",
+ "statement_id", "static", "statistics", "stats_auto_recalc", "stats_persistent", "stats_sample_pages",
+ "status", "stddev", "stddev_pop", "stddev_samp", "stdin", "stdout", "stop", "storage", "store", "stored",
+ "straight_join", "streams", "strict", "string", "strip", "struct", "structure", "style", "subclass_origin",
+ "subject", "submultiset", "subpartition", "subpartition_rel", "subpartitions", "subscription", "subset",
+ "substitutable", "substring", "substring_regex", "subtype", "succeeds", "successful", "sum", "summary",
+ "sun", "super", "supplemental", "support", "suspend", "swap_join_inputs", "swaps", "switch", "switches",
+ "switchover", "symmetric", "sync", "synchronous", "synonym", "sys_connect_by_path", "sys_dl_cursor",
+ "sys_fbt_insdel", "sys_op_bitvec", "sys_op_cast", "sys_op_col_present", "sys_op_enforce_not_null$",
+ "sys_op_mine_value", "sys_op_noexpand", "sys_op_ntcimg$", "sys_parallel_txn", "sys_rid_order", "sysaux",
+ "sysdate", "sysdba", "sysid", "sysoper", "system", "system_time", "system_user", "systimestamp", "table",
+ "table_checksum", "table_name", "table_stats", "tables", "tablesample", "tablespace", "tablespace_no",
+ "tabno", "tan", "tanh", "task", "temp", "tempfile", "template", "temporary", "temptable", "terminate",
+ "terminated", "test", "text", "textsize", "than", "the", "then", "thread", "through", "throw", "thu",
+ "ties", "time", "time_zone", "timeout", "timer", "times", "timestamp", "timestampadd", "timestampdiff",
+ "timezone_abbr", "timezone_hour", "timezone_minute", "timezone_region", "tinyblob", "tinyint", "tinytext",
+ "tiv_gb", "tiv_ssf", "to", "token", "top", "top_level_count", "toplevel", "trace", "tracing", "tracking",
+ "trailing", "tran", "transaction", "transaction_active", "transactional", "transactions_committed",
+ "transactions_rolled_back", "transform", "transforms", "transitional", "translate", "translate_regex",
+ "translation", "treat", "trigger", "trigger_catalog", "trigger_name", "trigger_schema", "triggers", "trim",
+ "trim_array", "truncate", "truncsize", "trusted", "trxid", "try", "tsequal", "tue", "tuning", "tx", "type",
+ "typedef", "typeof", "types", "tz_offset", "ub2", "uba", "uescape", "uid", "uint", "ulong", "unarchived",
+ "unbound", "unbounded", "uncommitted", "unconditional", "undefined", "under", "undo", "undo_buffer_size",
+ "undofile", "undrop", "unencrypted", "unicode", "uniform", "uninstall", "union", "unique", "unknown",
+ "unlimited", "unlink", "unlisten", "unlock", "unlogged", "unmatched", "unnamed", "unnest", "unpacked",
+ "unpivot", "unprotected", "unquiesce", "unrecoverable", "unsigned", "until", "untyped", "unusable",
+ "unused", "up", "upd_indexes", "upd_joinindex", "updatable", "update", "updated", "updatetext", "updating",
+ "upgrade", "upper", "upsert", "uri", "urowid", "usage", "use", "use_anti", "use_concat", "use_frm",
+ "use_hash", "use_merge", "use_nl", "use_nl_with_index", "use_private_outlines", "use_semi",
+ "use_stored_outlines", "use_ttt_for_gsets", "use_weak_name_resl", "user", "user_defined",
+ "user_defined_type_catalog", "user_defined_type_code", "user_defined_type_name", "user_defined_type_schema",
+ "user_recyclebin", "user_resources", "ushort", "using", "utc_date", "utc_time", "utc_timestamp", "utf16",
+ "utf32", "utf8", "vacuum", "valid", "validate", "validation", "validator", "value", "value_of", "values",
+ "var_pop", "var_samp", "varbinary", "varchar", "varchar2", "varcharacter", "variable", "variables",
+ "variadic", "variance", "varray", "varying", "vector_read", "vector_read_trace", "verbose", "verify",
+ "version", "versioning", "versions", "versions_endtime", "versions_endtrxid", "versions_operation",
+ "versions_starttime", "versions_starttrxid", "vertical", "view", "views", "virtual", "visible", "void",
+ "volatile", "vsize", "wait", "waitfor", "warnings", "wed", "week", "weekly", "weight_string", "wellformed",
+ "when", "whenever", "where", "while", "whitespace", "width_bucket", "window", "with", "within", "without",
+ "work", "wrapped", "wrapper", "write", "writetext", "x_dyn_prune", "x509", "xa", "xid", "xml", "xmlagg",
+ "xmlattributes", "xmlbinary", "xmlcast", "xmlcolattval", "xmlcomment", "xmlconcat", "xmldeclaration",
+ "xmldocument", "xmlelement", "xmlexists", "xmlforest", "xmliterate", "xmlnamespaces", "xmlparse", "xmlpi",
+ "xmlquery", "xmlroot", "xmlschema", "xmlserialize", "xmltable", "xmltext", "xmltype", "xmlvalidate", "xor",
+ "year", "year_month", "yearly", "yes", "yunzhupaasfill", "zone", "false", "true");
+
+ /**
+ * 系统,语言,数据关键字
+ */
+ public static final List getAllKeyWord() {
+ List allKeyWord = new ArrayList<>();
+ allKeyWord.addAll(SYS_KEYWORD);
+ allKeyWord.addAll(JAVA_KEYWORD);
+ allKeyWord.addAll(SQL_KEYWORD);
+ return allKeyWord;
+ }
+
+ /**
+ * 系统,语言,数据关键字是否包含
+ */
+ public static final boolean containKeyword(String keyword) {
+ if (StringUtil.isEmpty(keyword)) {
+ return false;
+ }
+ List allKeyWord = getAllKeyWord();
+ return allKeyWord.contains(keyword.toLowerCase());
+ }
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/GlobalConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/GlobalConst.java
new file mode 100644
index 0000000..dbbd848
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/GlobalConst.java
@@ -0,0 +1,33 @@
+package com.yunzhupaas.constant;
+
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+
+public class GlobalConst {
+
+ /**
+ * 网关、Feign转发后携带原有HOST(网关或者FEIGN转发后HOST不准确)
+ */
+ public static final String HEADER_HOST = "MY_HOST";
+
+
+ /**
+ * 默认租户字段值
+ */
+ public static final String DEFAULT_TENANT_VALUE = "0";
+
+ public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
+ public static final String DEFAULT_CHARSET_STR = DEFAULT_CHARSET.name();
+
+ /**
+ * 默认语种
+ */
+ public static final String DEFAULT_LANGUAGE = "zh-CN";
+
+ /**
+ * 扫包路径 多个使用封号分割
+ */
+ public static final String PROJECT_SCAN_PACKAGES = "com.yunzhupaas";
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/ModuleName.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/ModuleName.java
new file mode 100644
index 0000000..1a1f2d2
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/ModuleName.java
@@ -0,0 +1,32 @@
+package com.yunzhupaas.constant;
+
+/**
+ * 项目模块应用名称
+ */
+public class ModuleName {
+
+ public static final String SYSTEM_SERVER_NAME = "yunzhupaas-system" ;
+
+ public static final String MESSAGE_SERVER_NAME = "yunzhupaas-message" ;
+
+ public static final String VUSUALDEV_SERVER_NAME = "yunzhupaas-visualdev" ;
+
+ public static final String EXAMPLE_SERVER_NAME = "yunzhupaas-example" ;
+
+ public static final String EXTEND_SERVER_NAME = "yunzhupaas-extend" ;
+
+ public static final String APP_SERVER_NAME = "yunzhupaas-app" ;
+
+ public static final String WORKFLOW_SERVER_NAME = "yunzhupaas-workflow" ;
+
+ public static final String FILE_SERVER_NAME = "yunzhupaas-file";
+
+ public static final String PERMISSION_SERVER_NAME = "yunzhupaas-permission";
+
+ public static final String FORM_SERVER_NAME = "yunzhupaas-flowForm";
+
+ public static final String OAUTH_SERVER_NAME = "yunzhupaas-oauth";
+
+ public static final String SCHEDULE_SERVER_NAME = "yunzhupaas-scheduletask" ;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/MsgCode.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/MsgCode.java
new file mode 100644
index 0000000..90af152
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/MsgCode.java
@@ -0,0 +1,740 @@
+package com.yunzhupaas.constant;
+
+import com.yunzhupaas.constant.model.MCode;
+
+/**
+ * 常用提示信息
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.2.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/12/20
+ */
+public interface MsgCode {
+ /**
+ * 编码和提示语正则提取 MCode\s+[\w\d]+\s+=\s+[\w\d]+[(]"([\w\d]+)"\s*,\s*"(.+)"[)];
+ */
+
+ /**
+ * 执行成功:SU(success)
+ */
+ MCode SU000 = MSG("SU000", "Success");
+ MCode SU001 = MSG("SU001", "新建成功");
+ MCode SU002 = MSG("SU002", "保存成功");
+ MCode SU003 = MSG("SU003", "删除成功");
+ MCode SU004 = MSG("SU004", "更新成功");
+ MCode SU005 = MSG("SU005", "操作成功");
+ MCode SU006 = MSG("SU006", "提交成功,请耐心等待");
+ MCode SU007 = MSG("SU007", "复制成功");
+ MCode SU008 = MSG("SU008", "停止成功");
+ MCode SU009 = MSG("SU009", "终止成功");
+ MCode SU010 = MSG("SU010", "还原成功");
+ MCode SU011 = MSG("SU011", "发布成功");
+ MCode SU012 = MSG("SU012", "发送成功");
+ MCode SU013 = MSG("SU013", "接口修改成功");
+ MCode SU014 = MSG("SU014", "更新接口状态成功");
+ MCode SU015 = MSG("SU015", "上传成功");
+ MCode SU016 = MSG("SU016", "设置成功");
+ MCode SU017 = MSG("SU017", "验证成功");
+ MCode SU018 = MSG("SU018", "添加成功");
+ MCode SU019 = MSG("SU019", "获取成功");
+ MCode SU020 = MSG("SU020", "回滚成功");
+ MCode SU021 = MSG("SU021", "移除成功");
+ MCode SU022 = MSG("SU022", "查询成功");
+
+ /**
+ * 执行失败:FA(fail)
+ */
+ MCode FA001 = MSG("FA001", "数据不存在");
+ MCode FA002 = MSG("FA002", "更新失败,数据不存在");
+ MCode FA003 = MSG("FA003", "删除失败,数据不存在");
+ MCode FA004 = MSG("FA004", "复制失败,数据不存在");
+ MCode FA005 = MSG("FA005", "发送失败,数据不存在");
+ MCode FA006 = MSG("FA006", "下载失败,数据不存在");
+ MCode FA007 = MSG("FA007", "操作失败,数据不存在");
+ MCode FA008 = MSG("FA008", "停止失败,数据不存在");
+ MCode FA009 = MSG("FA009", "终止失败,数据不存在");
+ MCode FA010 = MSG("FA010", "还原失败,数据不存在");
+ MCode FA011 = MSG("FA011", "发布失败,数据不存在");
+ MCode FA012 = MSG("FA012", "获取失败,数据不存在");
+ MCode FA013 = MSG("FA013", "接口修改失败,数据不存在");
+ MCode FA014 = MSG("FA014", "更新接口状态失败,数据不存在");
+ MCode FA015 = MSG("FA015", "预览失败,数据不存在");
+ MCode FA016 = MSG("FA016", "删除失败,该文件夹存在数据");
+ MCode FA017 = MSG("FA017", "文件格式不正确");
+ MCode FA018 = MSG("FA018", "文件不存在");
+ MCode FA019 = MSG("FA019", "已失效");
+ MCode FA020 = MSG("FA020", "未查到信息");
+ MCode FA021 = MSG("FA021", "操作失败!您没有权限操作");
+ MCode FA022 = MSG("FA022", "更新失败!您没有权限操作 (角色只有超级管理员才能够操作)");
+ MCode FA023 = MSG("FA023", "更新失败!已绑定用户,无法切换组织");
+ MCode FA024 = MSG("FA024", "删除失败!已绑定用户");
+ MCode FA025 = MSG("FA025", "该组织内权限为空,组织切换失败!");
+ MCode FA031 = MSG("FA031", "该组织无本应用权限,切换失败");
+ MCode FA026 = MSG("FA026", "更新失败,关联组织不存在,请重新登录,或者刷新页面");
+ MCode FA027 = MSG("FA027", "该系统下菜单为空,系统切换失败");
+ MCode FA028 = MSG("FA028", "新增数据失败");
+ MCode FA029 = MSG("FA029", "修改数据失败");
+ MCode FA030 = MSG("FA030", "更新失败!已绑定用户,无法修改状态");
+ MCode FA032 = MSG("FA032", "上传文件不能为空");
+ MCode FA033 = MSG("FA033", "文件上传失败!");
+ MCode FA034 = MSG("FA034", "非法请求, 缺少认证信息");
+ MCode FA035 = MSG("FA035", "未获取到租户指定数据源信息");
+ MCode FA036 = MSG("FA036", "常用数据已存在");
+ MCode FA037 = MSG("FA037", "接口请求失败");
+ MCode FA038 = MSG("FA038", "文件存储路径错误");
+ MCode FA039 = MSG("FA039", "链接已失效");
+ MCode FA040 = MSG("FA040", "预览失败,请检查文件类型是否规范");
+ MCode FA041 = MSG("FA041", "预览失败,请重新上传文件");
+ MCode FA042 = MSG("FA042", "请输入正确的文件格式");
+ MCode FA043 = MSG("FA043", "存在同名文件!");
+ MCode FA044 = MSG("FA044", "不存在该文件");
+ MCode FA045 = MSG("FA045", "删除文件:{0}失败");
+ MCode FA046 = MSG("FA046", "文件读取失败");
+ MCode FA047 = MSG("FA047", "未发现文件");
+ MCode FA048 = MSG("FA048", "微信公众号原始id不能重复");
+ MCode FA049 = MSG("FA049", "此记录与“消息发送配置”关联引用,不允许被禁用");
+ MCode FA050 = MSG("FA050", "此记录与“消息发送配置”关联引用,不允许被删除");
+ MCode FA051 = MSG("FA051", "接口已配置加密, 数据解密失败.");
+ MCode FA052 = MSG("FA052", "该身份未分配权限");
+ MCode FA053 = MSG("FA053", "上传失败, 文件中包含不安全内容");
+
+
+ /*======1 短语======*/
+ MCode FA101 = MSG("FA101", "保存失败");
+ MCode FA102 = MSG("FA102", "更新失败");
+ MCode FA103 = MSG("FA103", "删除失败");
+ MCode FA104 = MSG("FA104", "获取失败");
+ MCode FA105 = MSG("FA105", "预览失败,请先保存在预览数据");
+ MCode FA106 = MSG("FA106", "预览失败,单元格配置出现死循环");
+ MCode FA107 = MSG("FA107", "报表导出报错");
+
+
+
+ /**
+ * 重名判断
+ */
+ MCode EXIST001 = MSG("EXIST001", "名称不能重复");
+ MCode EXIST002 = MSG("EXIST002", "编码不能重复");
+ MCode EXIST003 = MSG("EXIST003", "模板名已存在");
+ MCode EXIST004 = MSG("EXIST004", "文件夹名称不能重复");
+ MCode EXIST005 = MSG("EXIST005", "模板名称超过了限制长度");
+ MCode EXIST101 = MSG("EXIST101", "名称重复,请重新输入");
+ MCode EXIST102 = MSG("EXIST102", "编码重复,请重新输入");
+ MCode EXIST103 = MSG("EXIST103", "不能重复");
+
+
+ /**
+ * 导入导出:IMP(import/export)
+ */
+ MCode IMP001 = MSG("IMP001", "导入成功");
+ MCode IMP002 = MSG("IMP002", "导入失败,文件格式错误");
+ MCode IMP003 = MSG("IMP003", "导入失败,数据已存在");
+ MCode IMP004 = MSG("IMP004", "导入失败,数据有误");
+ MCode IMP005 = MSG("IMP005", "导出失败");
+ MCode IMP006 = MSG("IMP006", "导入数据格式不正确");
+ MCode IMP007 = MSG("IMP007", "重复");
+ MCode IMP008 = MSG("IMP008", "名称");
+ MCode IMP009 = MSG("IMP009", "编码");
+ MCode IMP010 = MSG("IMP010", "导入失败,查询不到上级分类");
+ MCode IMP011 = MSG("IMP011", "请选择导出字段");
+
+ /**
+ * 其他
+ */
+ // 打印模板 (print)
+ MCode PRI001 = MSG("PRI001", "打印模板不存在");
+ MCode PRI002 = MSG("PRI002", "数字字典不存在printDev的字典分类");
+ MCode PRI003 = MSG("PRI003", "第1条SQL语句:查询出多条表头信息");
+ MCode PRI004 = MSG("PRI004", "第1条SQL语句:未查出表头信息");
+ MCode PRI005 = MSG("PRI005", "第{index}条SQL语句:");
+ MCode PRI006 = MSG("PRI006", "已到达该模板复制上限,请复制源模板");
+ MCode COD001 = MSG("COD001", "集合条件过滤获得目标为空");
+ MCode PRI007 = MSG("PRI007", "Sql语法错误");
+ MCode PRI008 = MSG("PRI008", "该报表已删除");
+
+ /**
+ * 复制
+ */
+ MCode COPY001 = MSG("COPY001", "复制名称长度超过了限制长度");
+
+
+ /**
+ * 登录相关
+ */
+ /*=====0-账号相关====*/
+ MCode LOG001 = MSG("LOG001", "账户异常");
+ MCode LOG002 = MSG("LOG002", "注销成功");
+ MCode LOG004 = MSG("LOG004", "账号异常,请联系管理员修改所属组织信息");
+ MCode LOG005 = MSG("LOG005", "账号未被激活");
+ MCode LOG006 = MSG("LOG006", "账号已被禁用");
+ MCode LOG007 = MSG("LOG007", "账号已被删除");
+ MCode LOG010 = MSG("LOG010", "此IP未在白名单中");
+ MCode LOG011 = MSG("LOG011", "登录失败,用户暂未绑定角色");
+ MCode LOG012 = MSG("LOG012", "账号已被锁定,请联系管理员解除锁定");
+
+ /*======1-登录相关======*/
+ MCode LOG101 = LOG("LOG101", "账号或密码错误");
+ MCode LOG102 = LOG("LOG102", "账号有误,请重新输入");
+ MCode LOG103 = LOG("LOG103", "请输入验证码");
+ MCode LOG104 = LOG("LOG104", "验证码错误");
+ MCode LOG107 = LOG("LOG107", "验证码已失效");
+ MCode LOG105 = LOG("LOG105", "连接租户服务失败,请稍后再试");
+ MCode LOG106 = LOG("LOG106", "短信验证码错误");
+ MCode LOG108 = MSG("LOG108", "请等待{0}分钟后再进行登录,或联系管理员解除锁定");
+ MCode LOG109 = LOG("LOG109", "租户登录失败,请用手机验证码登录");
+ MCode LOG110 = LOG("LOG110", "数据库异常,请联系管理员处理");
+ MCode LOG111 = LOG("LOG111", "已开启单点登录, 不支持此登录方式");
+ MCode LOG112 = LOG("LOG112", "不支持此登录方式");
+ MCode LOG113 = LOG("LOG113", "未设置租户信息");
+ MCode LOG114 = LOG("LOG114", "租户编码不允许为空");
+ MCode LOG115 = LOG("LOG115", "租户信息获取失败");
+ MCode LOG116 = LOG("LOG116", "不支持此验证");
+ MCode LOG117 = LOG("LOG117", "短信验证码验证失败:{0}");
+ MCode LOG118 = LOG("LOG118", "租户库名为空");
+
+ /*======2-密码修改========*/
+ MCode LOG201 = LOG("LOG201", "旧密码错误");
+ MCode LOG202 = LOG("LOG202", "修改成功,请牢记新密码");
+ MCode LOG203 = LOG("LOG203", "修改失败,账号不存在");
+ MCode LOG204 = LOG("LOG204", "修改失败,新建密码不能与旧密码一样");
+ MCode LOG205 = LOG("LOG205", "重置密码成功");
+ MCode LOG206 = LOG("LOG206", "重置密码失败");
+
+
+ //oauth
+ MCode OA001 = OA("OA001", "用户登录");
+ MCode OA002 = OA("OA002", "设备");
+ MCode OA003 = OA("OA003", "TOKEN");
+ MCode OA004 = OA("OA004", "用户退出");
+ MCode OA005 = OA("OA005", "用户踢出");
+ MCode OA006 = OA("OA006", "用户顶替");
+ MCode OA007 = OA("OA007", "登录异常");
+ MCode OA008 = OA("OA008", "登录获取系统配置失败");
+ MCode OA009 = OA("OA009", "该用户未分配权限");
+ MCode OA010 = OA("OA010", "仅支持pc端访问,APP端不支持");
+ MCode OA011 = OA("OA011", "应用不存在");
+ MCode OA012 = OA("OA012", "当前应用已被禁用");
+ MCode OA013 = OA("OA013", "登录密码解密失败");
+ MCode OA014 = OA("OA014", "注销成功");
+ MCode OA015 = OA("OA015", "登录成功");
+ MCode OA016 = OA("OA016", "登录票据已失效");
+ MCode OA017 = OA("OA017", "第三方未绑定账号");
+ MCode OA018 = OA("OA018", "不允许访问此登录接口");
+ MCode OA019 = OA("OA019", "账号不存在");
+ MCode OA020 = OA("OA020", "账户或密码错误,请重新输入");
+ MCode OA021 = OA("OA021", "验证成功");
+ MCode OA022 = OA("OA022", "限制会话, 不允许访问系统");
+ MCode OA023 = OA("OA023", "管理员不能注销");
+ MCode OA024 = OA("OA024", "登录失败");
+ MCode OA025 = OA("OA025", "超级管理员");
+ MCode OA026 = OA("OA026", "普通管理员");
+ MCode OA027 = OA("OA027", "普通用户");
+ MCode OA028 = OA("OA028", "未知来源");
+
+ //oauth
+ MCode PS001 = PS("PS001", "此记录与\"{0}\"关联引用,不允许被删除");
+ MCode PS003 = PS("PS003", "组织");
+ MCode PS004 = PS("PS004", "岗位");
+ MCode PS005 = PS("PS005", "用户");
+ MCode PS006 = PS("PS006", "角色");
+ MCode PS007 = PS("PS007", "账号不能为空");
+ MCode PS008 = PS("PS008", "姓名不能为空");
+ MCode PS009 = PS("PS009", "用户额度已达到上限");
+ MCode PS010 = PS("PS010", "权限已变更,请重新登录");
+ MCode PS011 = PS("PS011", "密码已变更,请重新登录");
+ MCode PS012 = PS("PS012", "类型不能为空");
+ MCode PS013 = PS("PS013", "当前机构Id不能与父机构Id相同");
+ MCode PS014 = PS("PS014", "该应用已禁用");
+ MCode PS015 = PS("PS015", "无法设置当前用户为分级管理员");
+ MCode PS016 = PS("PS016", "无法设置超管为分级管理员");
+ MCode PS017 = PS("PS017", "无法设置当前用户操作权限");
+ MCode PS018 = PS("PS018", "解绑失败");
+ MCode PS019 = PS("PS019", "第三方登录未配置");
+ MCode PS020 = PS("PS020", "性别不能为空");
+ MCode PS021 = PS("PS021", "无法禁用管理员用户");
+ MCode PS022 = PS("PS022", "管理员只能修改自己,不能修改其他管理员");
+ MCode PS023 = PS("PS023", "无法修改管理员账户");
+ MCode PS024 = PS("PS024", "直属主管不能是自己");
+ MCode PS025 = PS("PS025", "直属主管不能是我的下属用户");
+ MCode PS026 = PS("PS026", "无法删除管理员账户");
+ MCode PS027 = PS("PS027", "此用户为某部门主管,无法删除");
+ MCode PS028 = PS("PS028", "此用户有下属,无法删除");
+ MCode PS029 = PS("PS029", "无法修改管理员账户状态");
+ MCode PS030 = PS("PS030", "用户信息已变更,请重新登录");
+ MCode PS031 = PS("PS031", "该应用已删除");
+ MCode PS032 = PS("PS032", "该组织无本应用权限,切换失败");
+ MCode PS033 = PS("PS033", "工作交接成功!");
+ MCode PS034 = PS("PS034", "工作交接无法转移给管理员");
+ MCode PS035 = PS("PS035", "工作交接无法转移给本人");
+
+ /**
+ * 数据库
+ */
+ MCode DB001 = DB("DB001", "数据类型编码不符合标准(请注意大小写)。MySQL , SQLServer , Oracle , DM , KingbaseES , PostgreSQL");
+ MCode DB002 = DB("DB002", "请检查 1、连接信息 2、网络通信 3、数据库服务启动状态。 详情:{0}");
+ MCode DB003 = DB("DB003", "通过url找不到对应数据库");
+ MCode DB004 = DB("DB004", "查询结果集为空。");
+ MCode DB005 = DB("DB005", "未找到对应数据库类型:{0}({1})");
+ MCode DB006 = DB("DB006", "未找到对应数据类型转换");
+ MCode DB007 = DB("DB007", "导入表名存在重复");
+ MCode DB008 = DB("DB008", "建表数据与当前操作数据库不匹配: {0} -> {1}");
+ MCode DB009 = DB("DB009", "未找到表信息: {0}");
+ MCode DB010 = DB("DB010", "数据库{0},未找到此表:{1}");
+ MCode DB011 = DB("DB011", "联合主键类缺少“{0}”字段值");
+ MCode DB012 = DB("DB012", "表示对应获取数值失败");
+ MCode DB013 = DB("DB013", "目前还未支持{0}数据类型:{1}");
+ MCode DB014 = DB("DB014", "表 \"{0}\"中字段 \"{1}\" 为主键,不允许数据类型 \"{2}\" ");
+ MCode DB015 = DB("DB015", "未找到字段SQL语句");
+ MCode DB016 = DB("DB016", "没有初始字段");
+ MCode DB017 = DB("DB017", "sql异常:{0}");
+ MCode DB018 = DB("DB018", "请在数据库中添加对应的数据表");
+ MCode DB019 = DB("DB019", "添加失败");
+ /*== 系统自带表 DB1 ==*/
+ MCode DB101 = DB("DB101", "系统自带表,不允许被删除");
+ MCode DB102 = DB("DB102", "系统自带表,不允许被编辑");
+ /*== 表已经被使用 DB2 ==*/
+ MCode DB201 = DB("DB201", "表已经被使用,不允许被删除");
+ MCode DB202 = DB("DB202", "表已经被使用,不允许被编辑");
+ /*== 数据库连接问题 ==*/
+ MCode DB301 = DB("DB301", "数据库连接成功");
+ MCode DB302 = DB("DB302", "数据库连接失败");
+
+
+
+ /**
+ * 工作流相关错误码
+ */
+ MCode WF001 = WF("WF001","审核成功");
+ MCode WF002 = WF("WF002","退回成功");
+ MCode WF003 = WF("WF003","转办成功");
+ MCode WF004 = WF("WF004","加签成功");
+ MCode WF005 = WF("WF005","当前流程被退回,无法撤回流程");
+ MCode WF006 = WF("WF006","流程已撤回,不能重复操作");
+ MCode WF007 = WF("WF007","撤回失败,转向数据无法撤回");
+ MCode WF008 = WF("WF008","撤回成功");
+ MCode WF009 = WF("WF009","功能流程不能终止");
+ MCode WF010 = WF("WF010","指派成功");
+ MCode WF011 = WF("WF011","批量操作完成");
+ MCode WF012 = WF("WF012","该流程不能操作");
+ MCode WF013 = WF("WF013","复活成功");
+ MCode WF014 = WF("WF014","变更成功");
+ MCode WF015 = WF("WF015","挂起成功");
+ MCode WF016 = WF("WF016","恢复成功");
+ MCode WF017 = WF("WF017","委托人和被委托人相同,委托失败");
+ MCode WF018 = WF("WF018","操作失败,同一时间内有相同流程的委托");
+ MCode WF019 = WF("WF019","操作失败,同一时间内有相同流程,不能相互委托");
+ MCode WF020 = WF("WF020","功能流程不能删除");
+ MCode WF021 = WF("WF021","不能删除");
+ MCode WF022 = WF("WF022","催办成功");
+ MCode WF023 = WF("WF023","未找到催办人");
+ MCode WF024 = WF("WF024", "该功能已被流程引用,请重新选择关联功能");
+ MCode WF025 = WF("WF025","启用失败,流程未设计");
+ MCode WF026 = WF("WF026","启用成功");
+ MCode WF027 = WF("WF027","禁用成功");
+ MCode WF028 = WF("WF028","该版本内有工单任务流转,无法删除");
+ MCode WF029 = WF("WF029","您没有发起该流程的权限");
+ MCode WF030 = WF("WF030","表单未找到");
+ MCode WF031 = WF("WF031","已审核完成");
+ MCode WF032 = WF("WF032","冻结不能操作");
+ MCode WF033 = WF("WF033","转向节点不存在或配置错误");
+ MCode WF034 = WF("WF034","转向失败,转向节点未审批");
+ MCode WF035 = WF("WF035","退回至您的审批,不能再发起退回");
+ MCode WF036 = WF("WF036","流程已处理,无法撤回");
+ MCode WF037 = WF("WF037","当前流程包含子流程,无法撤回");
+ MCode WF038 = WF("WF038","子流程无法撤回");
+ MCode WF039 = WF("WF039","下一节点为选择分支无法批量审批");
+ MCode WF040 = WF("WF040","条件流程包含候选人无法批量通过");
+ MCode WF041 = WF("WF041","该流程工单已终止");
+ MCode WF042 = WF("WF042","该流程工单已撤回");
+ MCode WF043 = WF("WF043","该节点没有数据,无法复活");
+ MCode WF044 = WF("WF044","此流程不支持变更");
+ MCode WF045 = WF("WF045","当前节点有子流程无法变更");
+ MCode WF046 = WF("WF046","退回节点包含子流程,退回失败");
+ MCode WF047 = WF("WF047","当前节点未审批,不能退回");
+ MCode WF048 = WF("WF048","流程处于挂起状态,不可操作");
+ MCode WF049 = WF("WF049","当前流程正在运行不能删除");
+ MCode WF050 = WF("WF050","已被挂起不能删除");
+ MCode WF051 = WF("WF051","没有删除权限");
+ MCode WF052 = WF("WF052","主版本没有内容");
+ MCode WF053 = WF("WF053","流程没有启用");
+ MCode WF054 = WF("WF054","流程编码不能重复");
+ MCode WF055 = WF("WF055","流程表单不一致,请重新选择");
+ MCode WF056 = WF("WF056","该流程由在线开发生成的,无法直接删除,请在功能设计中删除相关功能");
+ MCode WF057 = WF("WF057","该流程内工单任务流转未结束,无法删除");
+ MCode WF058 = WF("WF058","当前流程正在运行不能重复提交");
+ MCode WF059 = WF("WF059","流程自动发起审批失败");
+ MCode WF060 = WF("WF060","驳回节点不能是子流程");
+ MCode WF061 = WF("WF061", "下一节点无审批人员请联系管理员");
+ MCode WF062 = WF("WF062", "表单已被引用,请重新选择");
+ MCode WF063 = WF("WF063", "流程已发起,无法删除");
+ MCode WF064 = WF("WF064", "任务不存在,或者已处理");
+ MCode WF065 = WF("WF065", "拒绝成功");
+ MCode WF066 = WF("WF066", "同意成功");
+ MCode WF067 = WF("WF067", "协办成功");
+ MCode WF068 = WF("WF068", "协办保存成功");
+ MCode WF069 = WF("WF069", "减签成功");
+ MCode WF070 = WF("WF070", "撤销成功");
+ MCode WF071 = WF("WF071", "最后一条数据不能删除");
+ MCode WF072 = WF("WF072", "启用版本不能删除");
+ MCode WF073 = WF("WF073", "归档版本不能删除");
+ MCode WF074 = WF("WF074", "暂停成功");
+ MCode WF075 = WF("WF075", "条件不满足无法流转");
+ MCode WF076 = WF("WF076", "节点不存在");
+ MCode WF077 = WF("WF077", "流程无法撤回");
+ MCode WF078 = WF("WF078", "流程未同意,无法撤销");
+ MCode WF079 = WF("WF079", "归档异常");
+ MCode WF080 = WF("WF080", "选择的数据不能退签");
+ MCode WF081 = WF("WF081", "无法加签");
+ MCode WF082 = WF("WF082", "无法减签");
+ MCode WF083 = WF("WF083", "无法退回");
+ MCode WF084 = WF("WF084", "无法转审");
+ MCode WF085 = WF("WF085", "无法协办");
+ MCode WF086 = WF("WF086", "无法批量审批");
+ MCode WF087 = WF("WF087", "经办未签收");
+ MCode WF088 = WF("WF088", "经办未开始办理");
+ MCode WF089 = WF("WF089", "流程发布失败");
+ MCode WF090 = WF("WF090", "流程发布失败");
+ MCode WF091 = WF("WF091", "流程提交失败");
+ MCode WF092 = WF("WF092", "获取引擎当前任务失败");
+ MCode WF093 = WF("WF093", "流程删除失败");
+ MCode WF094 = WF("WF094", "获取出线集合失败");
+ MCode WF095 = WF("WF095", "获取线之后的任务节点失败");
+ MCode WF096 = WF("WF096", "获取下一级任务节点集合失败");
+ MCode WF097 = WF("WF097", "获取上一级任务节点集合失败");
+ MCode WF098 = WF("WF098", "任务完成失败");
+ MCode WF099 = WF("WF099", "获取流程实例失败");
+ MCode WF100 = WF("WF100", "获取未经过的节点失败");
+ MCode WF101 = WF("WF101", "获取节点的后续节点失败");
+ MCode WF102 = WF("WF102", "获取可回退的节点失败");
+ MCode WF103 = WF("WF103", "退回失败");
+ MCode WF104 = WF("WF104", "节点跳转失败");
+ MCode WF105 = WF("WF105", "补偿失败");
+ MCode WF106 = WF("WF106", "不能加签给自己");
+ MCode WF107 = WF("WF107", "不能转审给自己");
+ MCode WF108 = WF("WF108", "不能协办给自己");
+ MCode WF109 = WF("WF109", "必须保留一名加签人员");
+ MCode WF110 = WF("WF110", "审批异常无法撤销");
+ MCode WF111 = WF("WF111", "所选流程包含条件候选人");
+ MCode WF112 = WF("WF112", "选择的数据对应流程已暂停");
+ MCode WF113 = WF("WF113", "已被暂停不能删除");
+ MCode WF114 = WF("WF114","流程处于暂停状态,不可操作");
+ MCode WF115 = WF("WF115", "流程已受理,无法删除");
+ MCode WF116 = WF("WF116", "不能加签给委托人");
+ MCode WF117 = WF("WF117", "不能转审给委托人");
+ MCode WF118 = WF("WF118", "不能协办给委托人");
+ MCode WF119 = WF("WF119", "设置了流转条件,无法批量审批");
+ MCode WF120 = WF("WF120", "下一节点审批异常,无法批量审批");
+ MCode WF121 = WF("WF121", "子流程自动发起审批失败");
+ MCode WF122 = WF("WF122", "流程不存在");
+ MCode WF123 = WF("WF123", "流程处于终止状态,不可操作");
+ MCode WF124 = WF("WF124", "该流程已发起数据,无法删除!");
+ MCode WF125 = WF("WF125", "您没有发起委托流程");
+ MCode WF126 = WF("WF126", "撤销流程不能转审");
+ MCode WF127 = WF("WF127", "撤销流程不能退回");
+ MCode WF128 = WF("WF128", "该用户已审批,请重新打开界面");
+ MCode WF129 = WF("WF129", "委托人已无该流程权限");
+ MCode WF130 = WF("WF130", "管理员不能新建委托/代理");
+ MCode WF131 = WF("WF131", "不能选择admin");
+ MCode WF132 = WF("WF132", "已有人接受,不可编辑");
+ MCode WF133 = WF("WF133", "流转条件不满足,无法发起审批");
+ MCode WF134 = WF("WF134", "第一个审批节点设置候选人,无法发起审批");
+ MCode WF135 = WF("WF135", "第一个审批节点异常,无法发起审批");
+ MCode WF136 = WF("WF136", "找不到发起人,发起失败");
+ MCode WF137 = WF("WF137","代理人和被代理人相同,代理失败");
+ MCode WF138 = WF("WF138","存在未签收的数据,无法关闭");
+ MCode WF139 = WF("WF139","该流程已触发了任务,无法删除");
+ MCode WF140 = WF("WF140","该流程已下架");
+ MCode WF141 = WF("WF141","存在待办理的数据,无法关闭");
+ MCode WF142 = WF("WF142","流程引擎异常");
+ MCode WF143 = WF("WF143","已到达加签限制层级,无法再加签");
+ MCode WF144 = WF("WF144","操作失败,同一时间内有相同流程的代理");
+ MCode WF145 = WF("WF145","操作失败,同一时间内有相同流程,不能相互代理");
+ MCode WF146 = WF("WF146","该任务流程已下架");
+ MCode WF147 = WF("WF147","发起节点设置了选择分支,无法发起审批");
+ MCode WF148 = WF("WF148","办理成功");
+ MCode WF149 = WF("WF149", "不能转办给自己");
+ MCode WF150 = WF("WF150", "不能转办给委托人");
+ MCode WF151 = WF("WF151", "无法转办");
+ MCode WF152 = WF("WF152", "转审成功");
+ /**
+ * 在线开发相关错误码
+ */
+ /*=========1-错误提示=========*/
+ MCode VS401 = VS("VS401", "该模板内表单内容为空,无法");
+ MCode VS402 = VS("VS402", "该模板内列表内容为空,无法");
+ MCode VS403 = VS("VS403", "该功能未配置流程不可用");
+ MCode VS404 = VS("VS404", "单行输入不能重复");
+ MCode VS405 = VS("VS405", "当前表单原数据已被调整,请重新进入该页面编辑并提交数据");
+ MCode VS406 = VS("VS406", "该功能配置的流程处于停用");
+ MCode VS407 = VS("VS407", "表头名称不可更改,表头行不能删除");
+ MCode VS408 = VS("VS408", "请至少选择一个数据表");
+ MCode VS409 = VS("VS409", "未找到主表信息");
+ MCode VS410 = VS("VS410", "请导入对应功能的json文件");
+ MCode VS411 = VS("VS411", "已存在相同功能");
+ MCode VS412 = VS("VS412", "该表单已删除");
+ MCode VS413 = VS("VS413", "应用不能为空");
+ MCode VS414 = VS("VS414", "门户数据信息存在重复");
+ MCode VS415 = VS("VS415", "该门户已删除");
+ //base
+ MCode VS001 = VS("VS001", "同步到流程时,{0}");
+ MCode VS002 = VS("VS002", "发布失败,流程未设计!");
+ MCode VS003 = VS("VS003", "无表生成有表失败");
+ MCode VS004 = VS("VS004", "发布");
+ MCode VS005 = VS("VS005", "预览");
+ MCode VS006 = VS("VS006", "下载");
+ MCode VS007 = VS("VS007", "同步成功");
+ MCode VS008 = VS("VS008", "回滚失败,暂无线上版本");
+ MCode VS009 = VS("VS009", "参数解析错误!");
+ MCode VS010 = VS("VS010", "无效链接");
+ MCode VS011 = VS("VS011", "密码错误");
+ MCode VS012 = VS("VS012", "未找到该功能表单");
+ MCode VS013 = VS("VS013", "未开启表单外链!");
+ MCode VS014 = VS("VS014", "下载链接已失效");
+ MCode VS015 = VS("VS015", "字段不能为空");
+ MCode VS016 = VS("VS016", "路径错误");
+ MCode VS017 = VS("VS017", "集成助手被禁用");
+ MCode VS018 = VS("VS018", "表规范名称不能重复");
+ MCode VS019 = VS("VS019", "规范名称不能使用系统关键字或JAVA关键字");
+ MCode VS020 = VS("VS020", "字段规范名称不能重复");
+ MCode VS021 = VS("VS021", "“{0}”命名不符合规范");
+ MCode VS022 = VS("VS022", "主键策略:[雪花ID],表[ {0} ]主键设置不支持!");
+ MCode VS023 = VS("VS023", "主键策略:[自增ID],表[ {0} ]主键设置不支持!");
+ MCode VS024 = VS("VS024", "表单不存在或者未发布!");
+ MCode VS025 = VS("VS025", "未获取到流程发起人");
+ MCode VS026 = VS("VS026", "规范名称前两字母必须小写");
+ MCode VS027 = VS("VS027", "自动生成的【{0}】超出长度,提交失败!");
+ MCode VS028 = VS("VS028", "视图最多新建5个");
+ MCode VS029 = VS("VS029", "设置视图主键后才能正常使用");
+
+
+
+ /**
+ * 网关
+ */
+ MCode GT101 = GT("GT101", "成功");
+ MCode GT102 = GT("GT102", "失败");
+ MCode GT103 = GT("GT103", "验证错误");
+ MCode GT104 = GT("GT104", "异常");
+ MCode GT105 = GT("GT105", "登录过期,请重新登录");
+ MCode GT106 = GT("GT106", "您的帐号在其他地方已登录,被强制踢出");
+ MCode GT107 = GT("GT107", "Token验证失败");
+ MCode GT108 = GT("GT108", "请求超过最大数");
+
+ /**
+ * 调度
+ */
+ MCode SC001 = SCHEDULE("SC001", "操作失败,任务不存在");
+
+ /**
+ * admin exception
+ */
+ MCode AD101 = MSG("AD101", "接口无法访问");
+ MCode AD102 = MSG("AD102", "系统异常");
+ MCode AD103 = MSG("AD103", "操作过于频繁");
+ MCode AD104 = MSG("AD104", "没有访问权限,请联系管理员授权");
+ MCode AD105 = MSG("AD105", "认证失败,无法访问系统资源");
+ MCode AD106 = MSG("AD106", "无效内部认证,无法访问系统资源");
+
+ /**
+ * extend
+ */
+ MCode ETD101 = MSG("ETD101", "操作失败,原文件不存在");
+ MCode ETD102 = MSG("ETD102", "找不到父级");
+ MCode ETD103 = MSG("ETD103", "不能移动到自己的文件夹");
+ MCode ETD104 = MSG("ETD104", "未能找到此订单");
+ MCode ETD105 = MSG("ETD105", "新建成功10000条数据");
+ MCode ETD106 = MSG("ETD106", "获取失败");
+ MCode ETD107 = MSG("ETD107", "账户认证错误");
+ MCode ETD108 = MSG("ETD108", "你还没有设置邮件的帐户");
+ MCode ETD109 = MSG("ETD109", "文件导出失败");
+ MCode ETD110 = MSG("ETD110", "文件格式不正确");
+ MCode ETD111 = MSG("ETD111", "文件找不到");
+ MCode ETD112 = MSG("ETD112", "此记录被关联引用,不允许被删除");
+ MCode ETD113 = MSG("ETD113", "防止恶意创建过多数据");
+ MCode ETD114 = MSG("ETD114", "保存失败,请重新登陆");
+ MCode ETD115 = MSG("ETD115", "请输入预览的url");
+ MCode ETD116 = MSG("ETD116", "请选择正确的预览方式");
+ MCode ETD117 = MSG("ETD117", "数据超过1000条");
+ /**
+ * form
+ */
+ MCode FM001 = MSG("FM001", "未找到接口");
+ MCode FM002 = MSG("FM002", "表单信息不存在");
+ MCode FM003 = MSG("FM003", "子表重复");
+ MCode FM004 = MSG("FM004", "已到达该模板复制上限,请复制源模板!");
+ MCode FM005 = MSG("FM005", "该表单已被流程引用,无法删除!");
+ MCode FM006 = MSG("FM006", "该表单未发布,无法回滚表单内容");
+ MCode FM007 = MSG("FM007", "该模板内表单内容为空,无法发布");
+ MCode FM008 = MSG("FM008", "该功能未导入流程表单");
+ MCode FM009 = MSG("FM009", "流程未设计,请先设计流程!");
+ MCode FM010 = MSG("FM010", "该功能流程处于停用状态!");
+ MCode FM011 = MSG("FM011", "表[{0}]无主键!");
+ MCode FM012 = MSG("FM012", "主键策略:{0},与表[{1}]主键策略不一致!");
+ MCode FM013 = MSG("FM013", "表新增错误:{0}");
+
+ /**
+ * message的消息提示
+ */
+ MCode MSERR101 = MSG("MSERR101", "发送失败,失败原因:SMTP服务为空");
+ MCode MSERR102 = MSG("MSERR102", "发送失败,失败原因:发件人邮箱为空");
+ MCode MSERR103 = MSG("MSERR103", "发送失败,失败原因:发件人密码为空");
+ MCode MSERR104 = MSG("MSERR104", "发送失败,失败原因:接收人为空");
+ MCode MSERR105 = MSG("MSERR105", "发送失败。失败原因:{0}的邮箱账号格式有误!");
+ MCode MSERR106 = MSG("MSERR106", "发送失败。失败原因:{0}的邮箱账号为空!");
+ MCode MSERR107 = MSG("MSERR107", "发送失败。失败原因:接收人对应的邮箱全部为空");
+ MCode MSERR108 = MSG("MSERR108", "发送失败。失败原因:{0}");
+ MCode MSERR109 = MSG("MSERR109", "连接成功");
+ MCode MSERR110 = MSG("MSERR110", "连接失败。失败原因:{0}");
+ MCode MSERR111 = MSG("MSERR111", "已发送");
+ MCode MSERR112 = MSG("MSERR112", "内容不能包含<符号");
+ MCode MSERR113 = MSG("MSERR113", "暂无未读消息");
+ MCode MSERR114 = MSG("MSERR114", "自定义模板编码不能使用系统模板编码规则");
+ MCode MSERR115 = MSG("MSERR115", "创建失败,存在多个标题参数");
+ MCode MSERR116 = MSG("MSERR116", "创建失败,不存在标题参数");
+ MCode MSERR117 = MSG("MSERR117", "更新失败,存在多个标题参数");
+ MCode MSERR118 = MSG("MSERR118", "更新失败,不存在标题参数");
+ MCode MSERR119 = MSG("MSERR119", "请先前往系统同步设置,配置钉钉账号");
+ MCode MSERR120 = MSG("MSERR120", "请先前往系统同步设置,配置企业微信账号");
+ MCode MSERR121 = MSG("MSERR121", "配置模板无数据,无法测试");
+
+ /********************
+ * system
+ ********************/
+ MCode SYS001 = SYS("SYS001", "区域编码不能重复");
+ MCode SYS002 = SYS("SYS002", "删除失败,当前有子节点数据");
+ MCode SYS003 = SYS("SYS003", "单据已经被使用,不允许被删除");
+ MCode SYS004 = SYS("SYS004", "清理成功");
+ MCode SYS005 = SYS("SYS005", "接口创建成功");
+ MCode SYS006 = SYS("SYS006", "当前SQL含有敏感字:{0}");
+ MCode SYS007 = SYS("SYS007", "接口请求成功");
+ MCode SYS008 = SYS("SYS008", "接口不符合规范");
+ MCode SYS009 = SYS("SYS009", "变量名不能包含敏感字符");
+ MCode SYS010 = SYS("SYS010", "变量名已存在");
+ MCode SYS011 = SYS("SYS011", "数据库连接不能相同");
+ MCode SYS012 = SYS("SYS012", "请检查,同一数据库下无法同步数据");
+ MCode SYS013 = SYS("SYS013", "同步失败:{0}");
+ MCode SYS014 = SYS("SYS014", "字典类型下面有字典值禁止删除");
+ MCode SYS015 = SYS("SYS015", "模板不存在");
+ MCode SYS016 = SYS("SYS016", "当前目录存在数据,不能修改类型");
+ MCode SYS017 = SYS("SYS017", "删除失败,请先删除子菜单");
+ MCode SYS018 = SYS("SYS018", "当前导入菜单为{0}端菜单,请在对应模块下导入!");
+ MCode SYS019 = SYS("SYS019", "请在顶级节点下创建目录后再进行菜单导入");
+ MCode SYS020 = SYS("SYS020", "该字段在方案{0}中已被使用");
+ MCode SYS021 = SYS("SYS021", "修改失败,该方案不允许编辑");
+ MCode SYS022 = SYS("SYS022", "编码错误");
+ MCode SYS023 = SYS("SYS023", "请求发生错误!");
+ MCode SYS024 = SYS("SYS024", "获取不到数据!");
+ MCode SYS025 = SYS("SYS025", "获取企业微信access_token失败");
+ MCode SYS026 = SYS("SYS026", "正在进行同步,请稍后再试");
+ MCode SYS027 = SYS("SYS027", "请先从企业微信同步部门到本地");
+ MCode SYS028 = SYS("SYS028", "请先从钉钉同步部门到本地");
+
+ MCode SYS029 = SYS("SYS029", "验证码位数不能大于6");
+ MCode SYS030 = SYS("SYS030", "验证码位数不能小于3");
+ MCode SYS031 = SYS("SYS031", "测试发送消息的连接失败:{0}");
+ MCode SYS032 = SYS("SYS032", "测试发送消息连接成功");
+ MCode SYS033 = SYS("SYS033", "测试组织同步的连接失败:{0}");
+ MCode SYS034 = SYS("SYS034", "测试组织同步连接成功");
+ MCode SYS035 = SYS("SYS035", "测试连接类型错误");
+ MCode SYS036 = SYS("SYS036", "测试钉钉连接失败:");
+ MCode SYS037 = SYS("SYS037", "测试连接成功");
+ MCode SYS038 = SYS("SYS038", "表信息抽取异常");
+ MCode SYS039 = MSG("SYS039", "删除失败,请先删除该应用下的菜单和门户");
+ MCode SYS040 = MSG("SYS040", "删除失败,请先删除该应用下的菜单");
+ MCode SYS041 = MSG("SYS041", "删除失败,请先删除该应用下的门户");
+ MCode SYS042 = MSG("SYS042", "该日程已被删除");
+ MCode SYS043 = MSG("SYS043", "最后一条数据不能删除");
+ MCode SYS044 = MSG("SYS044", "启用版本不能删除");
+ MCode SYS045 = MSG("SYS045", "归档版本不能删除");
+ MCode SYS046 = MSG("SYS046", "数据集不能重名");
+ MCode SYS047 = MSG("SYS047", "SQL语句仅支持查询语句");
+ MCode SYS048 = MSG("SYS048", "SQL语句需带上@formId条件");
+ MCode SYS049 = MSG("SYS049", "正在进行同步,请稍等");
+ MCode SYS050 = MSG("SYS050", "只能输入字母、数字、点、横线和下划线,且以字母开头");
+ MCode SYS051 = MSG("SYS051", "翻译标记不能重复");
+ MCode SYS052 = MSG("SYS052", "翻译语言至少填写一项");
+ MCode SYS053 = SYS("SYS053", "获取钉钉access_token失败");
+
+ /**
+ * 应用
+ */
+ MCode SYS101 = SYS("SYS101", "更新失败,主系统不允许禁用");
+ MCode SYS102 = SYS("SYS102", "主系统不允许删除");
+ MCode SYS103 = SYS("SYS103", "系统在审批常用语中被使用,不允许删除");
+ MCode SYS104 = SYS("SYS104", "更新失败,主系统不允许修改编码");
+ MCode SYS105 = SYS("SYS105", "常用语已存在");
+
+ /**
+ * 数据接口
+ */
+ MCode SYS121 = SYS("SYS121", "接口暂只支持HTTP和HTTPS方式");
+ MCode SYS122 = SYS("SYS122", "接口请求失败");
+ MCode SYS123 = SYS("SYS123", "接口请求失败, JS调用失败,错误:{0}");
+ MCode SYS124 = SYS("SYS124", "验证请求超时");
+ MCode SYS125 = SYS("SYS125", "appSecret错误");
+ MCode SYS126 = SYS("SYS126", "appId使用期限已到期");
+ MCode SYS127 = SYS("SYS127", "appId参数错误");
+
+ MCode SYS128 = SYS("SYS128", "{0}不能使用系统、开发语言及数据库关键字命名");
+ MCode SYS129 = SYS("SYS129", "当前数据源不支持全连接");
+
+ MCode SYS130 = SYS("SYS130", "标题不能为空");
+ MCode SYS131 = SYS("SYS131", "结束时间必须晚于开始时间");
+ MCode SYS132 = SYS("SYS132", "结束重复必须晚于开始时间");
+
+ MCode SYS133 = SYS("SYS133", "请先设置数据接口的字段列表!");
+
+ /**
+ * AI
+ */
+ MCode SYS180 = SYS("SYS180", "AI功能未配置启用");
+ MCode SYS181 = SYS("SYS181", "AI结果获取失败, 请稍后再尝试");
+ MCode SYS182 = SYS("SYS182", "AI请求频率达到限制, 请稍后再尝试");
+
+ /********************
+ * system
+ ********************/
+
+
+ static MCode MSG(String code, String desc){
+ return new MCode("message", code, desc);
+ }
+
+ static MCode LOG(String code, String desc){
+ return new MCode("login", code, desc);
+ }
+
+ static MCode DB(String code, String desc){
+ return new MCode("database", code, desc);
+ }
+
+ static MCode WF(String code, String desc){
+ return new MCode("workflow", code, desc);
+ }
+
+ static MCode VS(String code, String desc){
+ return new MCode("visual", code, desc);
+ }
+
+ static MCode GT(String code, String desc){
+ return new MCode("gateway", code, desc);
+ }
+
+ static MCode OA(String code, String desc){
+ return new MCode("oauth", code, desc);
+ }
+
+ static MCode PS(String code, String desc){
+ return new MCode("permission", code, desc);
+ }
+
+ static MCode SCHEDULE(String code, String desc){
+ return new MCode("schedule", code, desc);
+ }
+
+ static MCode SYS(String code, String desc){
+ return new MCode("system", code, desc);
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/PermissionConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/PermissionConst.java
new file mode 100644
index 0000000..8cb3825
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/PermissionConst.java
@@ -0,0 +1,62 @@
+package com.yunzhupaas.constant;
+
+public class PermissionConst {
+
+ /**
+ * 组织标识
+ */
+ public static final String ORGANIZE = "Organize";
+ /**
+ * 岗位标识
+ */
+ public static final String POSITION = "Position";
+ /**
+ * 角色标识
+ */
+ public static final String ROLE = "Role";
+
+
+ public static final String COMPANY = "company";
+
+
+ public static final String DEPARTMENT = "department";
+
+ /**
+ * 分组
+ */
+ public static final String GROUP = "Group";
+
+ /**
+ * 应用
+ */
+ public static final String SYSTEM = "System";
+
+ /**
+ * 身份
+ */
+ public static final String STAND = "Standing";
+
+ /**
+ * 菜单
+ */
+ public static final String MODULE = "Module";
+
+ /**
+ * 用户
+ */
+ public static final String USER = "user";
+
+
+ /**
+ * 在线开发常用按钮权限
+ */
+ public static final String BTN_ADD = "btn_add";
+ public static final String BTN_EDIT = "btn_edit";
+ public static final String BTN_REMOVE = "btn_remove";
+ public static final String BTN_DETAIL = "btn_detail";
+ public static final String BTN_UPLOAD = "btn_upload";
+ public static final String BTN_DOWNLOAD = "btn_download";
+ public static final String BTN_BATCHREMOVE = "btn_batchRemove";
+ public static final String BTN_BATCHPRINT = "btn_batchPrint";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/TableFieldsNameConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/TableFieldsNameConst.java
new file mode 100644
index 0000000..949355f
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/TableFieldsNameConst.java
@@ -0,0 +1,23 @@
+package com.yunzhupaas.constant;
+
+public class TableFieldsNameConst {
+
+ public static final String ID = "id";
+ public static final String F_ID = "f_id";
+ public static final String F_TENANT_ID = "f_tenant_id";
+ public static final String F_VERSION = "f_version";
+ public static final String F_FLOW_TASK_ID = "f_flow_task_id";
+ public static final String F_FLOW_ID = "f_flow_id";
+ public static final String F_DELETE_MARK = "f_delete_mark";
+ public static final String F_DELETE_TIME = "f_delete_time";
+ public static final String F_DELETE_USER_ID = "f_delete_user_id";
+ public static final String F_FOREIGN_ID = "f_foreign_id";
+ public static final String F_CREATOR_TIME = "f_creator_time";
+ public static final String F_CREATOR_USER_ID = "f_creator_user_id";
+ public static final String F_LAST_MODIFY_TIME = "f_last_modify_time";
+ public static final String F_LAST_MODIFY_USER_ID = "f_last_modify_user_id";
+ public static final String F_SORT_CODE = "f_sort_code";
+ public static final String F_DESCRIPTION = "f_description";
+ public static final String F_ENABLED_MARK = "f_enabled_mark";
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/YunzhupaasConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/YunzhupaasConst.java
new file mode 100644
index 0000000..1dc6c14
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/YunzhupaasConst.java
@@ -0,0 +1,99 @@
+package com.yunzhupaas.constant;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 功能中所用常量
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.5.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2023/6/6 15:08:10
+ */
+@Data
+public class YunzhupaasConst {
+
+ /**
+ * 被过滤的系统菜单常量
+ */
+ public static final String MAIN_SYSTEM_CODE = "mainSystem";
+
+ /**
+ * 业务平台编码
+ */
+ public static final String WORK_SYSTEM_CODE = "workSystem";
+
+ /**
+ * 被过滤的系统菜单常量
+ */
+ public static final List MODULE_CODE = new ArrayList() {
+ {
+ add("workFlow.addFlow");
+ add("workFlow.flowLaunch");
+ add("workFlow.entrust");
+ add("workFlow");
+ add("workFlow.flowTodo");
+ add("workFlow.flowDone");
+ add("workFlow.flowCirculate");
+ add("workFlow.document");
+ add("workFlow.schedule");
+ add("workFlow.flowToSign");
+ add("workFlow.flowDoing");
+ add("workFlow.printTemplate");
+ }
+ };
+
+ /**
+ * 当前组织
+ */
+ public static final String CURRENT_ORG = "@currentOrg";
+ public static final String CURRENT_ORG_TYPE = "@currentOrg--system";
+
+ /**
+ * 当前组织及子组织
+ */
+ public static final String CURRENT_ORG_SUB = "@currentOrgAndSubOrg";
+ public static final String CURRENT_ORG_SUB_TYPE = "@currentOrgAndSubOrg--system";
+
+ /**
+ * 当前分管组织
+ */
+ public static final String CURRENT_GRADE = "@currentGradeOrg";
+ public static final String CURRENT_GRADE_TYPE = "@currentGradeOrg--system";
+
+ /**
+ * 高级控件系统参数
+ */
+ public static final Map SYSTEM_PARAM = new HashMap() {
+ {
+ put(CURRENT_ORG, "当前组织");
+ put(CURRENT_ORG_SUB, "当前组织及子组织");
+ put(CURRENT_GRADE, "当前分管组织");
+ put(CURRENT_ORG_TYPE, "当前组织");
+ put(CURRENT_ORG_SUB_TYPE, "当前组织及子组织");
+ put(CURRENT_GRADE_TYPE, "当前分管组织");
+ }
+ };
+
+ /**
+ * 在线开发数据日志事件key
+ */
+ public static final String VSLOG_EVENT_KEY = "vslogEventKey";
+
+ /**
+ * 流程签收菜单
+ */
+ public static final String WORK_FLOWSIGN = "workFlow.flowToSign";
+
+ /**
+ * 流程办理菜单
+ */
+ public static final String WORK_FLOWTODO = "workFlow.flowTodo";
+
+ public static String FIELD_SUFFIX_YUNZHUPAASID = "_yunzhupaasId";
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/model/MCode.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/model/MCode.java
new file mode 100644
index 0000000..37c66c1
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/constant/model/MCode.java
@@ -0,0 +1,48 @@
+package com.yunzhupaas.constant.model;
+
+import com.yunzhupaas.i18n.util.I18nUtil;
+import lombok.Data;
+
+/**
+ * 类功能
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.2.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/12/20
+ */
+@Data
+public class MCode {
+
+ /**
+ * 提示信息类型
+ */
+ private final String type;
+
+ /**
+ * 错误编码
+ */
+ private final String code;
+
+ /**
+ * description 描述
+ */
+ private final String desc;
+
+
+ public MCode(String type, String code, String desc){
+ this.type = type;
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public String get(Object... args){
+ return I18nUtil.getMessageStr(this, args);
+ }
+
+ public String getMsg(){
+ return type + ":" + code + " " + desc;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DataFieldType.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DataFieldType.java
new file mode 100644
index 0000000..8d577b5
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DataFieldType.java
@@ -0,0 +1,39 @@
+package com.yunzhupaas.emnus;
+/**
+ * 数据权限字段类型
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.2
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2021/10/8
+ */
+public enum DataFieldType {
+ /**
+ * 浮点型
+ */
+ Double("Double"),
+ /**
+ * 字符型
+ */
+ Varchar("String"),
+
+ /**
+ * 数值型
+ */
+ Number("Int32");
+
+ private String message;
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ DataFieldType(String message) {
+ this.message = message;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DataSetTypeEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DataSetTypeEnum.java
new file mode 100644
index 0000000..cf3c648
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DataSetTypeEnum.java
@@ -0,0 +1,33 @@
+package com.yunzhupaas.emnus;
+
+/**
+ * 数据及关联数据类型枚举
+ *
+ * @author 云筑产品开发平台组
+ * @version v5.0.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/5/7 10:56:58
+ */
+public enum DataSetTypeEnum {
+
+ PRINT_VER("printVersion", "打印版本"),
+ REPORT_VER("reportVersion", "报表版本");
+
+ private final String code;
+
+ private final String msg;
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ DataSetTypeEnum(String code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DbDriverEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DbDriverEnum.java
new file mode 100644
index 0000000..2cd8253
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DbDriverEnum.java
@@ -0,0 +1,39 @@
+package com.yunzhupaas.emnus;
+
+/**
+ * 数据库驱动枚举类
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-03-23
+ */
+public enum DbDriverEnum {
+ /**
+ * mysql
+ */
+ MYSQL("com.mysql.cj.jdbc.Driver"),
+ /**
+ * oracle
+ */
+ ORACLE("oracle.jdbc.OracleDriver"),
+ /**
+ * sqlserver
+ */
+ SQLSERVER("com.microsoft.sqlserver.jdbc.SQLServerDriver");
+
+ private String dbDriver;
+
+ DbDriverEnum(String dbDriver) {
+ this.dbDriver = dbDriver;
+ }
+
+ public String getDbDriver() {
+ return dbDriver;
+ }
+
+ public void setDbDriver(String dbDriver) {
+ this.dbDriver = dbDriver;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DsJoinTypeEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DsJoinTypeEnum.java
new file mode 100644
index 0000000..a8541e6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/DsJoinTypeEnum.java
@@ -0,0 +1,64 @@
+package com.yunzhupaas.emnus;
+
+/**
+ * 连接关系枚举
+ *
+ * @author 云筑产品开发平台组
+ * @version v5.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/9/12 9:36:05
+ */
+public enum DsJoinTypeEnum {
+ LEFT_JOIN(1, "LEFT JOIN", "左连接"),
+
+ RIGHT_JOIN(2, "LEFT JOIN", "右连接"),
+
+ INNER_JOIN(3, "INNER JOIN", "内连接"),
+
+ FULL_JOIN(4, "FULL JOIN", "全连接");
+
+ private Integer type;
+ private String code;
+ private String fullName;
+
+ DsJoinTypeEnum(Integer type, String code, String fullName) {
+ this.type = type;
+ this.code = code;
+ this.fullName = fullName;
+ }
+
+ public Integer getType() {
+ return type;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public static String getCodeByType(Integer type) {
+ String code = null;
+ switch (type) {
+ case 1:
+ code = LEFT_JOIN.getCode();
+ break;
+ case 2:
+ code = RIGHT_JOIN.getCode();
+ break;
+ case 3:
+ code = INNER_JOIN.getCode();
+ break;
+ case 4:
+ code = FULL_JOIN.getCode();
+ break;
+ default:
+ code = LEFT_JOIN.getCode();
+ break;
+ }
+ return code;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/ExportModelTypeEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/ExportModelTypeEnum.java
new file mode 100644
index 0000000..7e5ca64
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/ExportModelTypeEnum.java
@@ -0,0 +1,43 @@
+package com.yunzhupaas.emnus;
+
+/**
+ * 导入导出模板类型
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2021/7/15
+ */
+
+public enum ExportModelTypeEnum {
+ /**
+ * 功能设计
+ */
+ Design(1,"design"),
+
+ /**
+ * APP
+ */
+ App(2,"app"),
+
+ /**
+ *门户
+ */
+ Portal(5,"portal");
+ private final int code;
+ private final String message;
+
+ public int getCode() {
+ return code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ ExportModelTypeEnum(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/FilePreviewTypeEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/FilePreviewTypeEnum.java
new file mode 100644
index 0000000..4a6698f
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/FilePreviewTypeEnum.java
@@ -0,0 +1,25 @@
+package com.yunzhupaas.emnus;
+/**
+ * 文件预览方式
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2021/5/6
+ */
+public enum FilePreviewTypeEnum {
+ /**
+ * yozo:永中预览; doc:kk文档预览;
+ */
+ YOZO_ONLINE_PREVIEW("yozoOnlinePreview"),
+ LOCAL_PREVIEW("localPreview");
+ FilePreviewTypeEnum(String type) {
+ this.type = type;
+ }
+ private String type;
+
+ public String getType() {
+ return type;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/ModuleTypeEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/ModuleTypeEnum.java
new file mode 100644
index 0000000..9d1c561
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/ModuleTypeEnum.java
@@ -0,0 +1,104 @@
+package com.yunzhupaas.emnus;
+
+/**
+ * 功能分类枚举
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-10-27
+ */
+public enum ModuleTypeEnum {
+ /**
+ * 数据接口类型
+ */
+ SYSTEM_DATAINTEFASE("bd"),
+ /**
+ * 数据接口类型
+ */
+ SYSTEM_DATAINTEFASE_VARIATE("ffa"),
+ /**
+ * 单据规则
+ */
+ SYSTEM_BILLRULE("bb"),
+ /**
+ * 菜单
+ */
+ SYSTEM_MODULE("bm"),
+ /**
+ * 数据建模
+ */
+ SYSTEM_DBTABLE("bdb"),
+ /**
+ * 数据字典
+ */
+ SYSTEM_DICTIONARYDATA("bdd"),
+ /**
+ * 打印模板
+ */
+ SYSTEM_PRINT("bp"),
+ /**
+ * 表单套件
+ */
+ SYSTEM_KIT("bvk"),
+ /**
+ * 大屏导出
+ */
+ VISUAL_DATA("vd"),
+ /**
+ * 在线开发
+ */
+ VISUAL_DEV("vdd"),
+ /**
+ * APP导出
+ */
+ VISUAL_APP("va"),
+ /**
+ * 门户导出
+ */
+ VISUAL_PORTAL("vp"),
+ /**
+ * 流程设计
+ */
+ FLOW_FLOWENGINE("ffe"),
+ /**
+ * 账号配置
+ */
+ ACCOUNT_CONFIG("mac"),
+ /**
+ * 消息模板
+ */
+ MESSAGE_TEMPLATE("mes"),
+ /**
+ * 消息模板
+ */
+ MESSAGE_SEND_CONFIG("msc"),
+ /**
+ * 流程表单
+ */
+ FLOW_FLOWDFORM("fff"),
+ /**
+ * 流程表单
+ */
+ BASE_INTEGRATE("bi"),
+ /**
+ * 报表
+ */
+ REPORT_TEMPLATE("rp"),
+ ;
+
+ ModuleTypeEnum(String moduleName) {
+ this.tableName = moduleName;
+ }
+
+ private String tableName;
+
+ public String getTableName() {
+ return tableName;
+ }
+
+ public void setTableName(String tableName) {
+ this.tableName = tableName;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/SearchMethodEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/SearchMethodEnum.java
new file mode 100644
index 0000000..7f4e64c
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/SearchMethodEnum.java
@@ -0,0 +1,109 @@
+package com.yunzhupaas.emnus;
+
+
+/**
+ * 查询功能
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024-09-26 上午9:18
+ */
+public enum SearchMethodEnum {
+ /**
+ * 等于
+ */
+ Equal("==", "等于"),
+ /**
+ * 介于
+ */
+ Between("between", "介于"),
+ /**
+ * 不等于
+ */
+ NotEqual("<>", "不等于"),
+ /**
+ * 大于
+ */
+ GreaterThan(">", "大于"),
+ /**
+ * 大于等于
+ */
+ GreaterThanOrEqual(">=", "大于等于"),
+ /**
+ * 小于
+ */
+ LessThan("<", "小于"),
+ /**
+ * 小于等于
+ */
+ LessThanOrEqual("<=", "小于等于"),
+ /**
+ * 包含任意一个
+ */
+ Included("in", "包含任意一个"),
+ /**
+ * 不包含任意一个
+ */
+ NotIncluded("notIn", "不包含任意一个"),
+ /**
+ * 为空
+ */
+ IsNull("null", "为空"),
+ /**
+ * 不为空
+ */
+ IsNotNull("notNull", "不为空"),
+ /**
+ * 包含
+ */
+ Like("like", "包含"),
+ /**
+ * 不包含
+ */
+ NotLike("notLike", "不包含"),
+ /**
+ * 并且
+ */
+ And("and", "并且"),
+ /**
+ * 或者
+ */
+ Or("or", "或者");
+
+
+ SearchMethodEnum(String symbol, String message) {
+ this.symbol = symbol;
+ this.message = message;
+ }
+
+ private String symbol;
+ private String message;
+
+ public String getSymbol() {
+ return symbol;
+ }
+
+ public void setSymbol(String symbol) {
+ this.symbol = symbol;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public static SearchMethodEnum getSearchMethod(String symbol) {
+ for (SearchMethodEnum status : SearchMethodEnum.values()) {
+ if (status.getSymbol().equals(symbol)) {
+ return status;
+ }
+ }
+ return Equal;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/TemplateEnum.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/TemplateEnum.java
new file mode 100644
index 0000000..0c60cc2
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/TemplateEnum.java
@@ -0,0 +1,76 @@
+package com.yunzhupaas.emnus;
+
+
+import cn.hutool.core.util.ObjectUtil;
+
+/**
+ * 接口类型
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024-09-26 上午9:18
+ */
+public enum TemplateEnum {
+ //字段
+ Field(1, "字段"),
+ //自定义
+ Custom(2, "自定义"),
+ //为空
+ Empty(3, "为空"),
+ //系统
+ System(4, "系统");
+
+ private Integer code;
+ private String message;
+
+ TemplateEnum(Integer code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ /**
+ * 根据状态code获取枚举名称
+ *
+ * @return
+ */
+ public static String getMessageByCode(Integer code) {
+ for (TemplateEnum status : TemplateEnum.values()) {
+ if (ObjectUtil.equal(status.getCode(), code)) {
+ return status.message;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 根据状态code获取枚举值
+ *
+ * @return
+ */
+ public static TemplateEnum getByCode(Integer code) {
+ for (TemplateEnum status : TemplateEnum.values()) {
+ if (ObjectUtil.equal(status.getCode(), code)) {
+ return status;
+ }
+ }
+ return null;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/TimetaskTypes.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/TimetaskTypes.java
new file mode 100644
index 0000000..059dc05
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/emnus/TimetaskTypes.java
@@ -0,0 +1,54 @@
+package com.yunzhupaas.emnus;
+
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:56
+ */
+public enum TimetaskTypes {
+
+ /**
+ * 执行一次
+ */
+ One(1, "执行一次"),
+ /**
+ * 重复执行
+ */
+ Two(2, "重复执行"),
+ /**
+ * 调度明细
+ */
+ Three(3, "调度明细"),
+ /**
+ * 调度任务
+ */
+ Four(4, "调度任务");
+
+ private int code;
+ private String message;
+
+ TimetaskTypes(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public void setCode(Integer code) {
+ this.code = code;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/ConnectDatabaseException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/ConnectDatabaseException.java
new file mode 100644
index 0000000..33da390
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/ConnectDatabaseException.java
@@ -0,0 +1,9 @@
+package com.yunzhupaas.exception;
+
+public class ConnectDatabaseException extends RuntimeException {
+
+ public ConnectDatabaseException(String reason, Throwable cause) {
+ super(reason, cause);
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/DataException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/DataException.java
new file mode 100644
index 0000000..8e59372
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/DataException.java
@@ -0,0 +1,45 @@
+package com.yunzhupaas.exception;
+
+import com.yunzhupaas.constant.MsgCode;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * 数据库异常类
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:10
+ */
+public class DataException extends RuntimeException {
+
+ public DataException(){
+ super();
+ }
+
+ public DataException(String message) {
+ super(message);
+ }
+
+ public static DataException errorLink(String warning) {
+ return new DataException(MsgCode.DB002.get(warning));
+ }
+
+
+ public static SQLException rollbackDataException(SQLException e, Connection rollbackConn) {
+ executeRollback(rollbackConn);
+ return e;
+ }
+
+ private static void executeRollback(Connection conn){
+ try {
+ conn.rollback();
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/DataTypeException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/DataTypeException.java
new file mode 100644
index 0000000..4e9ba61
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/DataTypeException.java
@@ -0,0 +1,10 @@
+package com.yunzhupaas.exception;
+
+public class DataTypeException extends Exception {
+
+ public DataTypeException(String message) {
+ super(message);
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/EncryptFailException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/EncryptFailException.java
new file mode 100644
index 0000000..23b67cd
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/EncryptFailException.java
@@ -0,0 +1,16 @@
+package com.yunzhupaas.exception;
+
+/**
+ * 数据加密异常
+ */
+public class EncryptFailException extends RuntimeException{
+
+ public EncryptFailException(String message) {
+ super(message);
+ }
+
+ public EncryptFailException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/ImportException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/ImportException.java
new file mode 100644
index 0000000..d44dbd6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/ImportException.java
@@ -0,0 +1,8 @@
+package com.yunzhupaas.exception;
+
+public class ImportException extends Exception {
+ public ImportException(String message) {
+ super(message);
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/LoginException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/LoginException.java
new file mode 100644
index 0000000..3e8ed99
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/LoginException.java
@@ -0,0 +1,28 @@
+package com.yunzhupaas.exception;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 登录异常
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:53
+ */
+public class LoginException extends RuntimeException {
+
+ @Getter
+ @Setter
+ private Object data;
+ public LoginException(String message) {
+ super(message);
+ }
+
+ public LoginException(String message, Object data) {
+ super(message);
+ this.data = data;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/TenantDatabaseException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/TenantDatabaseException.java
new file mode 100644
index 0000000..67214b2
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/TenantDatabaseException.java
@@ -0,0 +1,23 @@
+package com.yunzhupaas.exception;
+
+import lombok.experimental.Accessors;
+
+/**
+ * 租户数据库相关异常
+ */
+@Accessors(chain = true)
+public class TenantDatabaseException extends TenantInvalidException {
+
+ public TenantDatabaseException() {
+ super();
+ }
+
+ public TenantDatabaseException(String message) {
+ super(message);
+ }
+
+ public TenantDatabaseException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/TenantInvalidException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/TenantInvalidException.java
new file mode 100644
index 0000000..a9ab995
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/TenantInvalidException.java
@@ -0,0 +1,32 @@
+package com.yunzhupaas.exception;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+/**
+ * 租户无效异常
+ */
+@Accessors(chain = true)
+public class TenantInvalidException extends RuntimeException{
+
+ @Getter
+ @Setter
+ private String logMsg;
+ @Getter
+ @Setter
+ private Object data;
+
+ public TenantInvalidException() {
+ super();
+ }
+
+ public TenantInvalidException(String message) {
+ super(message);
+ }
+
+ public TenantInvalidException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WorkFlowException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WorkFlowException.java
new file mode 100644
index 0000000..fbef472
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WorkFlowException.java
@@ -0,0 +1,32 @@
+package com.yunzhupaas.exception;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:57
+ */
+public class WorkFlowException extends Exception {
+
+ private Integer code = 400;
+
+ public WorkFlowException(Integer code,String message) {
+ super(message);
+ this.code = code;
+ }
+
+ public WorkFlowException(String message,Throwable e) {
+ super(message,e);
+ this.code = code;
+ }
+
+ public WorkFlowException(String message) {
+ super(message);
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WxError.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WxError.java
new file mode 100644
index 0000000..26d8c22
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WxError.java
@@ -0,0 +1,96 @@
+package com.yunzhupaas.exception;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.annotation.JSONField;
+
+import java.io.Serializable;
+
+/**
+ * 微信错误码说明,请阅读: 全局返回码说明
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:57
+ */
+public class WxError implements Serializable {
+
+ private static final long serialVersionUID = 7869786563361406291L;
+
+ @JSONField(name = "errcode")
+ private int errorCode;
+
+ @JSONField(name = "errmsg")
+ private String errorMsg;
+
+ private String json;
+
+ public static WxError fromJson(String json) {
+ WxError error = JSONObject.parseObject(json, WxError.class);
+ error.setJson(json);
+ return error;
+ }
+
+ public static WxError fromJson(JSONObject jsonObject) {
+ WxError error = WxError.newBuilder().setErrorCode(jsonObject.getInteger("errcode")).setErrorMsg(jsonObject.getString("errmsg")).build();
+
+ return error;
+ }
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ public int getErrorCode() {
+ return this.errorCode;
+ }
+
+ public void setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getErrorMsg() {
+ return this.errorMsg;
+ }
+
+ public void setErrorMsg(String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+
+ public String getJson() {
+ return this.json;
+ }
+
+ public void setJson(String json) {
+ this.json = json;
+ }
+
+ @Override
+ public String toString() {
+ if (this.json != null) {
+ return this.json;
+ }
+ return "错误: Code=" + this.errorCode + ", Msg=" + this.errorMsg;
+ }
+
+ public static class Builder {
+ private int errorCode;
+ private String errorMsg;
+
+ public Builder setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ return this;
+ }
+
+ public Builder setErrorMsg(String errorMsg) {
+ this.errorMsg = errorMsg;
+ return this;
+ }
+
+ public WxError build() {
+ WxError wxError = new WxError();
+ wxError.setErrorCode(this.errorCode);
+ wxError.setErrorMsg(this.errorMsg);
+ return wxError;
+ }
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WxErrorException.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WxErrorException.java
new file mode 100644
index 0000000..f344949
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/exception/WxErrorException.java
@@ -0,0 +1,31 @@
+package com.yunzhupaas.exception;
+
+/**
+ * 微信异常封装
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 10:57
+ */
+public class WxErrorException extends Exception {
+
+ private static final long serialVersionUID = -6357149550353160810L;
+
+ private WxError error;
+
+ public WxErrorException(WxError error) {
+ super(error.toString());
+ this.error = error;
+ }
+
+ public WxErrorException(WxError error, Throwable cause) {
+ super(error.toString(), cause);
+ this.error = error;
+ }
+
+ public WxError getError() {
+ return this.error;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/config/I18nProperties.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/config/I18nProperties.java
new file mode 100644
index 0000000..dc213d9
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/config/I18nProperties.java
@@ -0,0 +1,28 @@
+package com.yunzhupaas.i18n.config;
+
+import com.yunzhupaas.constant.GlobalConst;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.boot.autoconfigure.context.MessageSourceProperties;
+
+/**
+ * 国际化配置类
+ *
+ * @author 云筑产品开发平台组
+ * @user N
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/21 14:00
+ */
+@Data
+@ToString(callSuper = true)
+@EqualsAndHashCode(callSuper = true)
+public class I18nProperties extends MessageSourceProperties {
+
+ /**
+ * 未获取到语言设置时默认语言
+ */
+ private String defaultLanguage = GlobalConst.DEFAULT_LANGUAGE;
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/constant/I18nApiConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/constant/I18nApiConst.java
new file mode 100644
index 0000000..1230363
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/constant/I18nApiConst.java
@@ -0,0 +1,16 @@
+package com.yunzhupaas.i18n.constant;
+
+
+/**
+ * 国际接口
+ */
+public class I18nApiConst {
+
+ public I18nApiConst(String baseUrl) {
+ I18nApiConst.i18nListUrl = baseUrl + "/api/system/BaseLang/ServerLang";
+ }
+
+ public static String i18nListUrl;
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/constant/I18nConst.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/constant/I18nConst.java
new file mode 100644
index 0000000..c02d555
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/constant/I18nConst.java
@@ -0,0 +1,12 @@
+package com.yunzhupaas.i18n.constant;
+
+/**
+ * 国际化常量
+ */
+public class I18nConst {
+
+ public static final String CACHE_KEY_SERVER = "i18n:server:";
+ public static final String CACHE_KEY_FRONT = "i18n:front:";
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/core/DynamicMessageSource.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/core/DynamicMessageSource.java
new file mode 100644
index 0000000..84658f8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/core/DynamicMessageSource.java
@@ -0,0 +1,31 @@
+package com.yunzhupaas.i18n.core;
+
+import com.yunzhupaas.constant.model.MCode;
+import com.yunzhupaas.i18n.provider.I18nMessageProvider;
+import org.springframework.context.support.AbstractMessageSource;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+
+/**
+ * 自定义消息来源
+ */
+public class DynamicMessageSource extends AbstractMessageSource {
+
+
+ private I18nMessageProvider i18nMessageProvider;
+
+ public DynamicMessageSource(I18nMessageProvider i18nMessageProvider) {
+ this.i18nMessageProvider = i18nMessageProvider;
+ }
+
+ @Override
+ protected MessageFormat resolveCode(String code, Locale locale) {
+ MCode i18nMessage = i18nMessageProvider.getI18nMessage(code, locale);
+ if(i18nMessage != null){
+ return createMessageFormat(i18nMessage.getDesc(), locale);
+ }
+ return null;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/core/MyReloadableResourceBundleMessageSource.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/core/MyReloadableResourceBundleMessageSource.java
new file mode 100644
index 0000000..f78040c
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/core/MyReloadableResourceBundleMessageSource.java
@@ -0,0 +1,97 @@
+package com.yunzhupaas.i18n.core;
+
+import cn.hutool.core.util.ReflectUtil;
+import com.yunzhupaas.i18n.provider.MessageSourceProvider;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.support.ReloadableResourceBundleMessageSource;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.List;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * 本地动态消息来源
+ *
+ * @author 云筑产品开发平台组
+ * @user N
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/21 14:00
+ */
+@Slf4j
+public class MyReloadableResourceBundleMessageSource extends ReloadableResourceBundleMessageSource {
+
+
+
+ @Getter
+ private final ConcurrentMap cachedPropertiesCopy;
+
+ @Getter
+ private final ConcurrentMap cachedMergedPropertiesCopy;
+
+ private List messageSourceProviders;
+
+ public MyReloadableResourceBundleMessageSource(List messageSourceProviders) {
+ this.messageSourceProviders = messageSourceProviders;
+ cachedPropertiesCopy = (ConcurrentMap) ReflectUtil.getFieldValue(this, "cachedProperties");
+ cachedMergedPropertiesCopy = (ConcurrentMap) ReflectUtil.getFieldValue(this, "cachedMergedProperties");
+ }
+
+
+ @Override
+ protected PropertiesHolder refreshProperties(String filename, PropertiesHolder propHolder) {
+ propHolder = super.refreshProperties(filename, propHolder);
+ // 本地未获取到语言翻译文件, 从自定义来源获取
+ if (propHolder.getProperties() == null && messageSourceProviders != null) {
+ for (MessageSourceProvider messageSourceProvider : messageSourceProviders) {
+ try {
+ String config = messageSourceProvider.loadMessageResource(filename, this);
+ if (config != null) {
+ propHolder = refreshConfig(filename, config);
+ break;
+ }
+ } catch (Exception e) {
+ log.error("加载语言配置失败:{}, {}", filename, e.getMessage(), e);
+ }
+ }
+ }
+ return propHolder;
+ }
+
+ /**
+ * 刷新语言配置文件
+ * @param filename 语言文件
+ * @param config properties内容
+ * @throws IOException
+ */
+ public PropertiesHolder refreshConfig(String filename, String config) throws IOException {
+ long refreshTimestamp = (getCacheMillis() < 0 ? -1 : System.currentTimeMillis());
+ Properties properties = new Properties();
+ properties.load(new StringReader(config));
+ PropertiesHolder propertiesHolder = new PropertiesHolder(properties, refreshTimestamp);
+ propertiesHolder.setRefreshTimestamp(refreshTimestamp);
+ this.cachedPropertiesCopy.put(filename, propertiesHolder);
+ this.cachedMergedPropertiesCopy.clear();
+ return propertiesHolder;
+ }
+
+ /**
+ * 更新某个语言中的配置
+ *
+ * @param filename 语言文件
+ * @param property 语言标识符
+ * @param value 语言内容
+ */
+ public void refreshConfig(String filename, String property, String value) {
+ PropertiesHolder propertiesHolder = cachedPropertiesCopy.get(filename);
+ Properties properties = propertiesHolder.getProperties();
+ if (properties != null) {
+ properties.setProperty(property, value);
+ this.cachedMergedPropertiesCopy.clear();
+ }
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/DynamicMessageProvider.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/DynamicMessageProvider.java
new file mode 100644
index 0000000..29865fa
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/DynamicMessageProvider.java
@@ -0,0 +1,44 @@
+package com.yunzhupaas.i18n.provider;
+
+import com.yunzhupaas.util.StringUtil;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Locale;
+import java.util.Properties;
+
+/**
+ * 动态翻译文件获取
+ */
+public interface DynamicMessageProvider {
+
+
+ /**
+ * 返回语言配置Properties文件字符串
+ * @param locale
+ * @return
+ */
+ String getI18nList(Locale locale);
+
+ /**
+ * 返回语言配置Properties
+ * @param locale
+ * @return
+ */
+ default Properties getI18nListProperties(Locale locale){
+ String i18nList = getI18nList(locale);
+ if(i18nList != null){
+ Properties properties = new Properties();
+ try {
+ properties.load(new StringReader(i18nList));
+ return properties;
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/I18nMessageProvider.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/I18nMessageProvider.java
new file mode 100644
index 0000000..39d171d
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/I18nMessageProvider.java
@@ -0,0 +1,14 @@
+package com.yunzhupaas.i18n.provider;
+
+import com.yunzhupaas.constant.model.MCode;
+
+import java.util.Locale;
+
+/**
+ * 动态翻译内容获取
+ */
+public interface I18nMessageProvider {
+
+ MCode getI18nMessage(String code, Locale locale);
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/MessageSourceProvider.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/MessageSourceProvider.java
new file mode 100644
index 0000000..9b694a2
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/provider/MessageSourceProvider.java
@@ -0,0 +1,22 @@
+package com.yunzhupaas.i18n.provider;
+
+
+import com.yunzhupaas.i18n.core.MyReloadableResourceBundleMessageSource;
+
+import java.io.IOException;
+
+/**
+ * 自定义消息来源提供者
+ *
+ * @author 云筑产品开发平台组
+ * @user N
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/21 14:00
+ */
+public interface MessageSourceProvider {
+
+ String PROPERTIES_SUFFIX = ".properties";
+
+ String loadMessageResource(String filename, MyReloadableResourceBundleMessageSource messageSource) throws IOException;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/util/I18nUtil.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/util/I18nUtil.java
new file mode 100644
index 0000000..4138fd1
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/i18n/util/I18nUtil.java
@@ -0,0 +1,68 @@
+package com.yunzhupaas.i18n.util;
+
+import com.yunzhupaas.constant.model.MCode;
+import com.yunzhupaas.i18n.config.I18nProperties;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
+import org.springframework.stereotype.Component;
+
+import java.util.Locale;
+
+/**
+ * 国际化工具类
+ *
+ * @author 云筑产品开发平台组
+ * @user N
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/21 14:00
+ */
+@Component
+public class I18nUtil {
+
+ private static MessageSource messageSource;
+
+ private static I18nProperties i18nProperties;
+
+ @Autowired(required = false)
+ public void setMessageSource(MessageSource messageSource) {
+ I18nUtil.messageSource = messageSource;
+ }
+
+ @Autowired(required = false)
+ public void setI18nProperties(I18nProperties i18nProperties) {
+ I18nUtil.i18nProperties = i18nProperties;
+ }
+
+ public static String getMessageStr(String code, String message, Locale locale, Object... args) {
+ if (messageSource == null) {
+ return message == null ? code : message;
+ }
+ if (message != null) {
+ return messageSource.getMessage(code, args, message, locale);
+ }
+ return messageSource.getMessage(code, args, locale);
+ }
+
+ public static String getMessageStr(String code, String message, Object... args) {
+ Locale locale;
+ try {
+ locale = LocaleContextHolder.getLocale();
+ } catch (Exception e) {
+ locale = Locale.forLanguageTag(i18nProperties.getDefaultLanguage());
+ }
+ return getMessageStr(code, message, locale, args);
+ }
+
+
+ public static String getMessageStr(MCode mCode, Locale locale, Object... args) {
+ return getMessageStr(mCode.getCode(), mCode.getDesc(), locale, args);
+ }
+
+ public static String getMessageStr(MCode mCode, Object... args) {
+ return getMessageStr(mCode.getCode(), mCode.getDesc(), args);
+ }
+
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/BaseSystemInfo.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/BaseSystemInfo.java
new file mode 100644
index 0000000..985ea63
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/BaseSystemInfo.java
@@ -0,0 +1,253 @@
+package com.yunzhupaas.model;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 系统的核心基础信息
+ *
+ * @author 云筑产品开发平台组
+ * @version v5.2.7
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024-09-26 上午9:18
+ */
+@Data
+public class BaseSystemInfo implements Serializable {
+ /**
+ * 单一登录:1-后登录踢出先登录、2-同时登陆
+ */
+ private Integer singleLogin;
+ /**
+ * 密码错误次数
+ */
+ private Integer passwordErrorsNumber;
+ /**
+ * 错误策略 1--账号锁定 2--延时登录
+ */
+ private Integer lockType;
+ /**
+ * 延时登录时间
+ */
+ private Integer lockTime;
+ /**
+ * 是否开启验证码
+ */
+ private Integer enableVerificationCode;
+ /**
+ * 验证码位数
+ */
+ private Integer verificationCodeNumber;
+
+
+
+ /**
+ * 超时登出时间小时
+ */
+ private String tokenTimeout;
+ /**
+ * 上次登录时间提示开关
+ */
+ private Integer lastLoginTimeSwitch=0;
+ /**
+ * 公司电话
+ */
+ private String companyTelePhone;
+ /**
+ * appid
+ */
+ private String wxGzhAppId;
+ /**
+ * 公司地址
+ */
+ private String companyAddress;
+
+ private String wxGzhAppSecret;
+
+ private String qyhCorpSecret;
+
+ private String isLog;
+
+ private String emailSmtpPort;
+
+ private String emailPop3Host;
+
+ private String emailSenderName;
+ /**
+ * 公司邮箱
+ */
+ private String companyEmail;
+
+ private String sysName;
+ /**
+ * 版权信息
+ */
+ private String copyright;
+
+ private String qyhAgentId;
+
+ private String lastLoginTime;
+
+ private String emailAccount;
+
+ private String qyhJoinUrl;
+
+ private String whitelistSwitch;
+
+ private String pageSize;
+ /**
+ * 系统描述
+ */
+ private String sysDescription;
+
+ private String emailPassword;
+ /**
+ * 公司法人
+ */
+ private String companyContacts;
+ /**
+ * 系统主题
+ */
+ private String sysTheme;
+
+ private String qyhAgentSecret;
+
+ private String whitelistIp;
+ /**
+ * 公司简称
+ */
+ private String companyCode;
+
+ private String emailSsl;
+
+ private String emailSmtpHost;
+
+ private String registerKey;
+
+ private String wxGzhToken;
+
+ private String qyhJoinTitle;
+
+ private String qyhCorpId;
+ /**
+ * 系统版本
+ */
+ private String sysVersion;
+
+ private String emailPop3Port;
+ /**
+ * 公司名称
+ */
+ private String companyName;
+
+ private String wxGzhUrl;
+
+ /**
+ * 企业微信-是否同步组织(包含:公司、部门)
+ */
+ private Integer qyhIsSynOrg;
+
+ /**
+ * 企业微信-是否同步用户
+ */
+ private Integer qyhIsSynUser;
+
+
+ /**
+ * 钉钉同步公司-部门-用户的应用AppKey
+ */
+ private String dingSynAppKey;
+
+ /**
+ * 钉钉同步公司-部门-用户的应用AppSecret
+ */
+ private String dingSynAppSecret;
+
+ /**
+ * 钉钉-是否同步组织(包含:公司、部门)
+ */
+ private Integer dingSynIsSynOrg;
+
+ /**
+ * 钉钉-是否同步用户
+ */
+ private Integer dingSynIsSynUser;
+
+ // 图标----
+ private String loginIcon;
+
+ private String logoIcon;
+
+ private String appIcon;
+
+ private String navigationIcon;
+
+ private String dingDepartment;
+
+ /**
+ * 审批链接时效性
+ */
+ private String linkTime;
+
+ /**
+ * 链接点击次数
+ */
+ private Integer isClick;
+
+ /**
+ * 链接失效次数
+ */
+ private Integer unClickNum;
+
+ /** 密码策略 */
+ /**
+ * 密码定期更新开关
+ */
+ private Integer passwordIsUpdatedRegularly;
+
+ /**
+ * 更新周期
+ */
+ private Integer updateCycle;
+
+ /**
+ * 提前N天提醒更新
+ */
+ private Integer updateInAdvance;
+
+ @Schema(description = "窗口标题")
+ private String title;
+
+ @Schema(description = "用户密码")
+ private String newUserDefaultPassword;
+
+ /*以下日程相关属性添加*/
+ @Schema(description = "默认视图")
+ private String defaultView;
+ @Schema(description = "显示农历")
+ private Boolean showLunarCalendar;
+ @Schema(description = "周第一天")
+ private Integer firstDay;
+ @Schema(description = "默认时长")
+ private Integer duration;
+ @Schema(description = "流程签收")
+ private Integer flowSign = 0;
+ @Schema(description = "流程办理")
+ private Integer flowTodo = 0;
+ /**
+ * 1:无范围限制 2:同一部门 3:同一岗位 6:同一公司
+ */
+ @Schema(description = "委托范围")
+ private Integer delegateScope = 1;
+ @Schema(description = "委托确认")
+ private Integer delegateAck = 0;
+ @Schema(description = "代理范围")
+ private Integer proxyScope = 1;
+ @Schema(description = "代理确认")
+ private Integer proxyAck = 0;
+ @Schema(description = "加签层级")
+ private Integer addSignLevel = 1;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/DbTableConModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/DbTableConModel.java
new file mode 100644
index 0000000..052c8af
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/DbTableConModel.java
@@ -0,0 +1,52 @@
+package com.yunzhupaas.model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 数据建模DTO
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-09-26 上午9:18
+ */
+@Data
+public class DbTableConModel {
+ /**
+ * 标识
+ */
+ private String id;
+ /**
+ * 表名
+ */
+ private String table;
+ /**
+ * 新表名
+ */
+ private String newTable;
+ /**
+ * 表说明
+ */
+ private String tableName;
+ /**
+ * 大小
+ */
+ private String size;
+ /**
+ * 总数
+ */
+ private Integer sum;
+ /**
+ * 说明
+ */
+ private String description;
+ /**
+ * 主键
+ */
+ private String primaryKey;
+ /**
+ * 数据源主键
+ */
+ private String dataSourceId;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FileListVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FileListVO.java
new file mode 100644
index 0000000..0ea734b
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FileListVO.java
@@ -0,0 +1,22 @@
+package com.yunzhupaas.model;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class FileListVO implements Serializable {
+ @Schema(description = "主键id")
+ private String fileId;
+ @Schema(description = "文件名称")
+ private String fileName;
+ @Schema(description = "文件大小")
+ private String fileSize;
+ @Schema(description = "修改时间")
+ private String fileTime;
+ @Schema(description = "文件类型")
+ private String fileType;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FileModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FileModel.java
new file mode 100644
index 0000000..b9dbfeb
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FileModel.java
@@ -0,0 +1,22 @@
+package com.yunzhupaas.model;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 附件模型
+ *
+ * @author 云筑产品开发平台组
+ * @version v5.2.7
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024-09-26 上午9:18
+ */
+@Data
+public class FileModel {
+ private String fileId;
+ private String fileName;
+ private String fileSize;
+ private String fileTime;
+ private String fileState;
+ private String fileType;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FlowWorkListVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FlowWorkListVO.java
new file mode 100644
index 0000000..97f90a6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FlowWorkListVO.java
@@ -0,0 +1,25 @@
+package com.yunzhupaas.model;
+
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/15 9:18
+ */
+@Data
+public class FlowWorkListVO {
+ private List wait = new ArrayList<>();
+ private List flowTask = new ArrayList<>();
+ private List flow = new ArrayList<>();
+ private List charge = new ArrayList<>();
+ private List circulate = new ArrayList<>();
+ private List permission = new ArrayList<>();
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FlowWorkModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FlowWorkModel.java
new file mode 100644
index 0000000..561f644
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/FlowWorkModel.java
@@ -0,0 +1,22 @@
+package com.yunzhupaas.model;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ */
+@Data
+public class FlowWorkModel {
+ private String id;
+ private String fullName;
+ private String icon;
+ private String enCode;
+ private List children;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/MultiTenantType1.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/MultiTenantType1.java
new file mode 100644
index 0000000..c3e3c8b
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/MultiTenantType1.java
@@ -0,0 +1,44 @@
+package com.yunzhupaas.model;
+
+import lombok.Getter;
+
+/**
+ * @author 云筑产品开发平台组
+ * @user N
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/9/26 20:32
+ */
+@Getter
+public enum MultiTenantType1 {
+
+ /**
+ * 表中字段过滤租户数据
+ */
+ COLUMN("字段模式"),
+
+ /**
+ * 动态替换SQL
+ * {租户ID}.表名
+ */
+ SCHEMA("SCHEMA模式");
+
+
+ private String directions;
+
+ MultiTenantType1(String directions) {
+ this.directions = directions;
+ }
+
+
+ public boolean eq(String val) {
+ return this.name().equalsIgnoreCase(val);
+ }
+
+ public boolean eq(MultiTenantType1 val) {
+ if (val == null) {
+ return false;
+ }
+ return eq(val.name());
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/OnlineDevData.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/OnlineDevData.java
new file mode 100644
index 0000000..5a17aec
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/OnlineDevData.java
@@ -0,0 +1,66 @@
+package com.yunzhupaas.model;
+
+import lombok.Data;
+
+/**
+ * 在线开发常用常量
+ */
+@Data
+public class OnlineDevData {
+ /**
+ * 用于判断是否是有表数据
+ */
+ public static final String TABLE_CONST = "[]";
+
+ /**
+ * 详情id副本
+ */
+ public static final String INFO_ID = "_id";
+ //以下列表类型
+ /**
+ * 列表类型:1-普通列表
+ */
+ public static final Integer COLUMNTYPE_ONE = 1;
+ /**
+ * 列表类型:2-左侧树
+ */
+ public static final Integer COLUMNTYPE_TOW = 2;
+ /**
+ * 列表类型:3-分组
+ */
+ public static final Integer COLUMNTYPE_THREE = 3;
+ /**
+ * 列表类型:4-行内编辑
+ */
+ public static final Integer COLUMNTYPE_FOUR = 4;
+ /**
+ * 列表类型:5-树形列表
+ */
+ public static final Integer COLUMNTYPE_FIVE = 5;
+ //状态启用禁用
+ /**
+ * 禁用
+ */
+ public static final Integer STATE_DISABLE = 0;
+ /**
+ * 启用
+ */
+ public static final Integer STATE_ENABLE = 1;
+ //表单类型
+ /**
+ * 自定义表单
+ */
+ public static final Integer FORM_TYPE_DEV = 1;
+ /**
+ * 系统表单
+ */
+ public static final Integer FORM_TYPE_SYS = 2;
+
+ /**
+ * 默认分类编码encode
+ */
+ public static final String DEFAULT_CATEGATY_ENCODE = "default";
+
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/TransferModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/TransferModel.java
new file mode 100644
index 0000000..27ea2a8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/TransferModel.java
@@ -0,0 +1,19 @@
+package com.yunzhupaas.model;
+
+import lombok.Data;
+
+/**
+ * 版本: V3.0.0
+ * 版权: 深圳市乐程软件有限公司
+ * 作者: 管理员/admin
+ * 日期: 2020-10-21 14:23:30
+ */
+@Data
+public class TransferModel {
+ private String targetField;
+ private String targetFieldLabel;
+ private Integer sourceType;
+ private String sourceValue;
+ private Boolean required = false;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/UserMenuModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/UserMenuModel.java
new file mode 100644
index 0000000..621e65f
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/UserMenuModel.java
@@ -0,0 +1,42 @@
+package com.yunzhupaas.model;
+
+import com.yunzhupaas.util.treeutil.SumTree;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 用户DTO
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @date 2024-09-26 上午9:18
+ */
+@Data
+public class UserMenuModel extends SumTree {
+ private String id;
+ private String fullName;
+ private Integer isButtonAuthorize;
+ private Integer isColumnAuthorize;
+ private Integer isDataAuthorize;
+ private Integer isFormAuthorize;
+ private String enCode;
+ private String parentId;
+ private String icon;
+ private String urlAddress;
+ private String linkTarget;
+ private Integer type;
+ private Boolean isData;
+ private Integer enabledMark;
+ private Long sortCode;
+ private String category;
+ private String description;
+ private String propertyJson;
+
+ private String systemId;
+ private Boolean hasModule;
+ private Long creatorTime;
+
+ private Boolean disabled =false;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormFieldModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormFieldModel.java
new file mode 100644
index 0000000..4950ca0
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormFieldModel.java
@@ -0,0 +1,47 @@
+package com.yunzhupaas.model.ai;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * AI生成表单字段模型
+ * @author 云筑产品开发平台组
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/10/17 15:08
+ */
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class AiFormFieldModel {
+
+ /**
+ * 字段注释
+ */
+ private String fieldTitle;
+
+ /**
+ * 字段名
+ */
+ private String fieldName;
+
+ /**
+ * 数据库类型
+ */
+ private String fieldDbType;
+
+ /**
+ * 前端组件
+ */
+ private String fieldComponent;
+
+ /**
+ * 字典选项
+ */
+ private List fieldOptions;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormFieldOptionModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormFieldOptionModel.java
new file mode 100644
index 0000000..66acd70
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormFieldOptionModel.java
@@ -0,0 +1,30 @@
+package com.yunzhupaas.model.ai;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * AI生成表单字段可选字典模型
+ * @author 云筑产品开发平台组
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/10/17 15:08
+ */
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class AiFormFieldOptionModel {
+
+ /**
+ * 字典注释
+ */
+ private String fullName;
+
+ /**
+ * 字典值
+ */
+ private String id;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormModel.java
new file mode 100644
index 0000000..f461d8f
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/ai/AiFormModel.java
@@ -0,0 +1,43 @@
+package com.yunzhupaas.model.ai;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * AI生成表单模型
+ * @author 云筑产品开发平台组
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/10/17 15:07
+ */
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class AiFormModel {
+
+ /**
+ * 表注释
+ */
+ private String tableTitle;
+
+ /**
+ * 表名
+ */
+ private String tableName;
+
+ /**
+ * 是否主表
+ */
+ private Boolean isMain;
+
+ /**
+ * 表字段
+ */
+ private List fields;
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/AllMenuSelectVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/AllMenuSelectVO.java
new file mode 100644
index 0000000..8baeecc
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/AllMenuSelectVO.java
@@ -0,0 +1,37 @@
+package com.yunzhupaas.model.login;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AllMenuSelectVO {
+ @Schema(description = "主键")
+ private String id;
+ @Schema(description = "名称")
+ private String fullName;
+ @Schema(description = "菜单编码")
+ private String enCode;
+ @Schema(description = "父主键")
+ private String parentId;
+ @Schema(description = "图标")
+ private String icon;
+ @Schema(description = "是否有下级菜单")
+ private Boolean hasChildren;
+ @Schema(description = "菜单地址")
+ private String urlAddress;
+ @Schema(description = "链接目标")
+ private String linkTarget;
+ @Schema(description = "下级菜单列表")
+ private List children;
+ @Schema(description = "菜单分类【1-类别、2-页面】")
+ private Integer type;
+ private String propertyJson;
+ private Long sortCode;
+
+ private String systemId;
+ private Boolean isData;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/AllUserMenuModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/AllUserMenuModel.java
new file mode 100644
index 0000000..0ea757e
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/AllUserMenuModel.java
@@ -0,0 +1,27 @@
+package com.yunzhupaas.model.login;
+
+
+import com.yunzhupaas.util.treeutil.SumTree;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class AllUserMenuModel extends SumTree {
+ @Schema(description = "名称")
+ private String fullName;
+ @Schema(description = "菜单编码")
+ private String enCode;
+ @Schema(description = "图标")
+ private String icon;
+ @Schema(description = "菜单地址")
+ private String urlAddress;
+ @Schema(description = "链接目标")
+ private String linkTarget;
+ @Schema(description = "菜单分类【1-类别、2-页面】")
+ private Integer type;
+ private String propertyJson;
+ private Long sortCode;
+
+ private String systemId;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/MeInfoVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/MeInfoVO.java
new file mode 100644
index 0000000..f7ff4eb
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/MeInfoVO.java
@@ -0,0 +1,20 @@
+package com.yunzhupaas.model.login;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class MeInfoVO {
+
+ @Schema(description = "用户id")
+ private String userId;
+ @Schema(description = "用户账号")
+ private String userAccount;
+ @Schema(description = "用户姓名")
+ private String userName;
+ @Schema(description = "租户编码")
+ private String tenantId;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/MenuTreeVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/MenuTreeVO.java
new file mode 100644
index 0000000..7c1dbdd
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/MenuTreeVO.java
@@ -0,0 +1,37 @@
+package com.yunzhupaas.model.login;
+
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class MenuTreeVO implements Serializable {
+ @Schema(description = "主键")
+ private String id;
+ @Schema(description = "名称")
+ private String fullName;
+ @Schema(description = "菜单编码")
+ private String enCode;
+ @Schema(description = "父主键")
+ private String parentId;
+ @Schema(description = "图标")
+ private String icon;
+ @Schema(description = "是否有下级菜单")
+ private Boolean hasChildren = true;
+ @Schema(description = "菜单地址")
+ private String urlAddress;
+ @Schema(description = "链接目标")
+ private String linkTarget;
+ @Schema(description = "下级菜单列表")
+ private List children = new ArrayList<>();
+ @Schema(description = "菜单分类【1-类别、2-页面】")
+ private Integer type;
+ private String propertyJson;
+ private Long sortCode;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PcUserVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PcUserVO.java
new file mode 100644
index 0000000..12978db
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PcUserVO.java
@@ -0,0 +1,41 @@
+package com.yunzhupaas.model.login;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 8:54
+ */
+@Data
+public class PcUserVO {
+ @Schema(description = "菜单集合")
+ private List menuList;
+ @Schema(description = "权限集合")
+ private List permissionList;
+ @Schema(description = "用户信息")
+ private UserCommonInfoVO userInfo;
+
+ /**
+ * 系统配置
+ */
+ @Schema(description = "系统配置")
+ private SystemInfo sysConfigInfo;
+
+ public PcUserVO() {
+ }
+
+ public PcUserVO(List menuList, List permissionList, UserCommonInfoVO userInfo, SystemInfo sysConfigInfo) {
+ this.menuList = menuList;
+ this.permissionList = permissionList;
+ this.userInfo = userInfo;
+ this.sysConfigInfo = sysConfigInfo;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PermissionModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PermissionModel.java
new file mode 100644
index 0000000..b3b58d4
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PermissionModel.java
@@ -0,0 +1,16 @@
+package com.yunzhupaas.model.login;
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.Data;
+
+@Data
+public class PermissionModel implements Serializable {
+ private String modelId;
+ private String moduleName;
+ private List button;
+ private List column;
+ private List resource;
+ private List form;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PermissionVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PermissionVO.java
new file mode 100644
index 0000000..bd5f431
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/PermissionVO.java
@@ -0,0 +1,11 @@
+package com.yunzhupaas.model.login;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class PermissionVO {
+ private String id;
+ private String fullName;
+ private String enCode;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/SystemInfo.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/SystemInfo.java
new file mode 100644
index 0000000..0d9eb4c
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/SystemInfo.java
@@ -0,0 +1,102 @@
+package com.yunzhupaas.model.login;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 登陆时返回系统配置信息
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024年3月7日08:58:52
+ */
+@Data
+public class SystemInfo {
+ /**
+ * 系统名称
+ */
+ public String sysName;
+
+ /**
+ * 系统版本
+ */
+ public String sysVersion;
+
+ /**
+ * 登录图标
+ */
+ public String loginIcon;
+
+ /**
+ * 版权信息
+ */
+ public String copyright;
+
+ /**
+ * 公司名称
+ */
+ public String companyName;
+
+ /**
+ * 导航图标
+ */
+ public String navigationIcon;
+
+ /**
+ * Logo图片
+ */
+ public String workLogoIcon;
+
+ /**
+ * logo图标
+ */
+ public String logoIcon;
+
+ /**
+ * App图标
+ */
+ public String appIcon;
+
+ @Schema(description = "窗口标题")
+ private String title;
+
+ /**
+ * 后端服务器域名
+ */
+ private String yunzhupaasDomain;
+
+ @Schema(description = "用户密码")
+ private String newUserDefaultPassword;
+
+ /*以下日程相关属性添加*/
+ @Schema(description = "默认视图")
+ private String defaultView;
+ @Schema(description = "显示农历")
+ private Boolean showLunarCalendar;
+ @Schema(description = "周第一天")
+ private Integer firstDay;
+ @Schema(description = "默认时长")
+ private Integer duration;
+
+ @Schema(description = "流程签收")
+ private Integer flowSign = 0;
+ @Schema(description = "流程待办")
+ private Integer flowTodo = 0;
+ /**
+ * 1:无范围限制 2:同一部门 3:同一岗位 6:同一公司
+ */
+ @Schema(description = "委托范围")
+ private Integer delegateScope = 1;
+ @Schema(description = "委托确认")
+ private Integer delegateAck = 0;
+ @Schema(description = "代理范围")
+ private Integer proxyScope = 1;
+ @Schema(description = "代理确认")
+ private Integer proxyAck = 0;
+ @Schema(description = "加签层级")
+ private Integer addSignLevel = 1;
+}
+
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserCommonInfoVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserCommonInfoVO.java
new file mode 100644
index 0000000..0f93dd6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserCommonInfoVO.java
@@ -0,0 +1,104 @@
+package com.yunzhupaas.model.login;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class UserCommonInfoVO implements Serializable {
+ @Schema(description = "用户id")
+ private String userId;
+ @Schema(description = "用户账号")
+ private String userAccount;
+ @Schema(description = "用户姓名")
+ private String userName;
+ @Schema(description = "用户头像")
+ private String headIcon;
+ @Schema(description = "组织主键")
+ private String organizeId;
+ @Schema(description = "组织主键集合")
+ private List organizeIdList;
+ @Schema(description = "组织名称")
+ private String organizeName;
+ @Schema(description = "岗位")
+ private List positionIds;
+ @Schema(description = "系统集合")
+ private List systemIds;
+
+ private String positionId;
+
+ private String positionName;
+
+ @Schema(description = "上次登录")
+ private Integer prevLogin;
+ @Schema(description = "上次登录时间", example = "1")
+ private Long prevLoginTime;
+ @Schema(description = "上次登录IP")
+ private String prevLoginIPAddress;
+ @Schema(description = "上次登录地址")
+ private String prevLoginIPAddressName;
+ @Schema(description = "门户id")
+ private String portalId;
+ @Schema(description = "app门户id")
+ private String appPortalId;
+
+ /**
+ * 当前组织角色+全局角色 Id数组
+ */
+ private List roleIds;
+
+ /**
+ * 当前组织角色+全局角色 名称集合用 , 号隔开
+ */
+ private String roleName;
+
+ /**
+ * 直属主管 (u.RealName + "/" + u.Account)
+ */
+ private String manager;
+ /**
+ * 手机
+ */
+ private String mobilePhone;
+
+ /**
+ * 邮箱
+ */
+ private String email;
+
+ /**
+ * 生日
+ */
+ private Long birthday;
+
+ /**
+ * 部门id
+ */
+ private String departmentId;
+
+ /**
+ * 部门名称 结构树
+ */
+ private String departmentName;
+
+ private Boolean isAdministrator;
+ private String signImg;
+ private String signId;
+
+ private Date changePasswordDate;
+
+ private String systemId;
+
+ private String appSystemId;
+
+ private List groupIds;
+
+ private List groupNames;
+ private int workflowEnabled;
+ private List standingList;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserPositionVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserPositionVO.java
new file mode 100644
index 0000000..90a8202
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserPositionVO.java
@@ -0,0 +1,14 @@
+package com.yunzhupaas.model.login;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class UserPositionVO {
+ @Schema(description = "岗位id")
+ private String id;
+ @Schema(description = "岗位名称")
+ private String name;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserSystemVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserSystemVO.java
new file mode 100644
index 0000000..f05cebb
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/login/UserSystemVO.java
@@ -0,0 +1,29 @@
+package com.yunzhupaas.model.login;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 8:59
+ */
+@Data
+public class UserSystemVO {
+ @Schema(description = "系统id")
+ private String id;
+ @Schema(description = "系统名称")
+ private String name;
+ @Schema(description = "系统图标")
+ private String icon;
+ @Schema(description = "系统编码")
+ private String enCode;
+ @Schema(description = "是否当前系统")
+ private boolean currentSystem;
+ @Schema(description = "是否当前身份")
+ private boolean currentStanding;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/logout/LogoutResultModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/logout/LogoutResultModel.java
new file mode 100644
index 0000000..73101a3
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/logout/LogoutResultModel.java
@@ -0,0 +1,19 @@
+package com.yunzhupaas.model.logout;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 退出接口返回结果
+ * @author 云筑产品开发平台组
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/11/11 14:19
+ */
+@Data
+@Accessors(chain = true)
+public class LogoutResultModel {
+
+ //单点注销后端接口地址
+ private String ssoLogoutApiUrl;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/AdminInfoVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/AdminInfoVO.java
new file mode 100644
index 0000000..86a966e
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/AdminInfoVO.java
@@ -0,0 +1,27 @@
+package com.yunzhupaas.model.tenant;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+public class AdminInfoVO implements Serializable {
+ @Schema(description ="主键")
+ private String id;
+ @Schema(description ="账号")
+ private String account;
+ @NotNull(message = "姓名不能为空")
+ @Schema(description ="姓名")
+ private String realName;
+ @NotNull(message = "手机号码不能为空")
+ @Schema(description ="手机号码")
+ private String mobilePhone;
+ @NotNull(message = "电子邮箱不能为空")
+ @Schema(description ="电子邮箱")
+ private String email;
+ @Schema(description ="租户id")
+ private String tenantId;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantAuthorizeModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantAuthorizeModel.java
new file mode 100644
index 0000000..cbcc6ed
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantAuthorizeModel.java
@@ -0,0 +1,26 @@
+package com.yunzhupaas.model.tenant;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TenantAuthorizeModel implements Serializable {
+ /**
+ * 菜单id
+ */
+ private List moduleIdList = new ArrayList<>();
+
+ /**
+ * 菜单地址
+ */
+ private List urlAddressList = new ArrayList<>();
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantLinkModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantLinkModel.java
new file mode 100644
index 0000000..0e8c4e6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantLinkModel.java
@@ -0,0 +1,167 @@
+package com.yunzhupaas.model.tenant;
+
+
+import cn.hutool.core.annotation.Alias;
+import cn.hutool.core.bean.BeanUtil;
+
+import java.io.Serializable;
+
+/**
+ * @author :云筑产品开发平台组
+ * @version: V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date :2022/3/31 17:41
+ */
+public class TenantLinkModel implements Serializable {
+ /**
+ * id
+ */
+ public String id;
+
+ /**
+ * 数据库名
+ */
+ @Alias("dbName")
+ public String serviceName;
+
+ /**
+ * 用户名
+ */
+ public String userName;
+
+ /**
+ * 端口
+ */
+ public String port;
+
+ /**
+ * 连接名称
+ */
+ public String fullName;
+
+ /**
+ * 主机地址
+ */
+ public String host;
+
+ /**
+ * 密码
+ */
+ public String password;
+
+ /**
+ * 模式
+ */
+ public String dbSchema;
+
+ /**
+ * 连接配置(0:主,1:从)
+ */
+ public Integer configType;
+
+ /**
+ * 数据库类型
+ */
+ public String dbType;
+
+ /**
+ * 自定义连接语句
+ */
+ @Alias("prepareUrl")
+ public String connectionStr;
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ public void setServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getPort() {
+ return port;
+ }
+
+ public void setPort(String port) {
+ this.port = port;
+ }
+
+ public String getFullName() {
+ return fullName;
+ }
+
+ public void setFullName(String fullName) {
+ this.fullName = fullName;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getDbSchema() {
+ return dbSchema;
+ }
+
+ public void setDbSchema(String dbSchema) {
+ this.dbSchema = dbSchema;
+ }
+
+ public Integer getConfigType() {
+ return configType;
+ }
+
+ public void setConfigType(Integer configType) {
+ this.configType = configType;
+ }
+
+ public String getDbType() {
+ return dbType;
+ }
+
+ public void setDbType(String dbType) {
+ this.dbType = dbType;
+ }
+
+ public String getConnectionStr() {
+ return connectionStr;
+ }
+
+ public void setConnectionStr(String connectionStr) {
+ this.connectionStr = connectionStr;
+ }
+
+ public T toDbLink(T obj){
+ BeanUtil.copyProperties(this, obj);
+ return obj;
+ }
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuModel.java
new file mode 100644
index 0000000..d1fa3b8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuModel.java
@@ -0,0 +1,18 @@
+package com.yunzhupaas.model.tenant;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class TenantMenuModel implements Serializable {
+ private String tenantId;
+ private List ids;
+ private List urlAddressList;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuTreeModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuTreeModel.java
new file mode 100644
index 0000000..25c9409
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuTreeModel.java
@@ -0,0 +1,27 @@
+package com.yunzhupaas.model.tenant;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.yunzhupaas.util.treeutil.SumTree;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/12 15:26
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class TenantMenuTreeModel extends SumTree {
+ private String fullName;
+ private String icon;
+ private Integer type;
+ private Long sortCode;
+ private String category;
+ private boolean disabled;
+ private String urlAddress;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuTreeReturnModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuTreeReturnModel.java
new file mode 100644
index 0000000..16e1fe8
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuTreeReturnModel.java
@@ -0,0 +1,28 @@
+package com.yunzhupaas.model.tenant;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/12 15:26
+ */
+@Data
+public class TenantMenuTreeReturnModel {
+ private String fullName;
+ private String icon;
+ private Integer type;
+ private Long sortCode;
+ private String category;
+ private boolean disabled;
+ private String id;
+ private String parentId;
+ private Boolean hasChildren;
+ private String urlAddress;
+ private List children;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuVO.java
new file mode 100644
index 0000000..fa02f75
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantMenuVO.java
@@ -0,0 +1,26 @@
+package com.yunzhupaas.model.tenant;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/12 15:27
+ */
+@Data
+public class TenantMenuVO {
+ @Schema(description = "权限模型集合")
+ List list = new ArrayList<>();
+ @Schema(description = "id集合")
+ List ids = new ArrayList<>();
+ //all字段里面不包括菜单id
+ @Schema(description = "所有的id")
+ List all = new ArrayList<>();
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantReSetPasswordForm.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantReSetPasswordForm.java
new file mode 100644
index 0000000..9c99bd6
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantReSetPasswordForm.java
@@ -0,0 +1,30 @@
+package com.yunzhupaas.model.tenant;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.NotNull;
+
+
+/**
+ *
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/12 15:31
+ */
+@Data
+public class TenantReSetPasswordForm {
+ @NotNull(message = "主键不能为空")
+ @Schema(description ="主键")
+ private String id;
+ @NotNull(message = "新密码不能为空")
+ @Schema(description ="新密码")
+ private String userPassword;
+ @NotNull(message = "确认新密码不能为空")
+ @Schema(description ="确认新密码")
+ private String validatePassword;
+ @Schema(description ="tenantId")
+ private String tenantId;
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantVO.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantVO.java
new file mode 100644
index 0000000..3d5244e
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/tenant/TenantVO.java
@@ -0,0 +1,92 @@
+package com.yunzhupaas.model.tenant;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *
+ * BaseTenant模型
+ * @版本: V3.1.0
+ * @版权: 深圳市乐程软件有限公司(http://www.szlecheng.cn)
+ * @作者: 云筑产品开发平台组
+ * @日期: 2020-12-17 16:09:07
+ */
+@Data
+@Accessors(chain = true)
+@NoArgsConstructor
+@AllArgsConstructor
+public class TenantVO implements Serializable {
+
+
+ /**
+ * 无多租户
+ */
+ public static final int NONE = -1;
+ /**
+ * 库隔离
+ */
+ public static final int SCHEMA = 0;
+ /**
+ * 字段隔离
+ */
+ public static final int COLUMN = 1;
+ /**
+ * 指定数据源
+ */
+ public static final int REMOTE = 2;
+
+
+ /**
+ * 数据库名称
+ */
+ private String dbName;
+
+ /**
+ * 租户编码
+ */
+ private String enCode;
+
+ /**
+ * 账号限额
+ */
+ private long accountNum;
+
+ /**
+ * 数据源模式
+ */
+ private int type;
+
+ /**
+ * 配置连接
+ */
+ private List linkList;
+
+ /**
+ * 卫翎信息 官网专用
+ */
+ private Map wl_qrcode;
+
+ @JsonIgnore
+ public boolean isSchema(){
+ return type == SCHEMA;
+ }
+
+ @JsonIgnore
+ public boolean isColumn(){
+ return type == COLUMN;
+ }
+
+ @JsonIgnore
+ public boolean isRemote(){
+ return type == REMOTE;
+ }
+
+}
+
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/visualJson/AbleUtil.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/visualJson/AbleUtil.java
new file mode 100644
index 0000000..589c315
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/visualJson/AbleUtil.java
@@ -0,0 +1,96 @@
+package com.yunzhupaas.model.visualJson;
+
+import com.yunzhupaas.constant.YunzhupaasConst;
+import com.yunzhupaas.constant.PermissionConst;
+import com.yunzhupaas.model.visualJson.OnlineCusCheckModel;
+import com.yunzhupaas.util.JsonUtil;
+import com.yunzhupaas.util.visiual.YunzhupaasKeyConsts;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public class AbleUtil {
+
+ public static OnlineCusCheckModel ableModel(String ableIdsAll, String yunzhupaasKey) {
+ List ableIdList = new ArrayList<>();
+ List ableComIds = new ArrayList<>();
+ List ableComIdsStr = new ArrayList<>();
+ List ableDepIds = new ArrayList<>();
+ List ableGroupIds = new ArrayList<>();
+ List ableRoleIds = new ArrayList<>();
+ List ablePosIds = new ArrayList<>();
+ List ableUserIds = new ArrayList<>();
+ List ableSystemIds = new ArrayList<>();
+ List ableIds = new ArrayList<>();
+
+ try {
+ List> list = JsonUtil.getJsonToBean(ableIdsAll, List.class);
+ for (List ableId : list) {
+ ableIdList.addAll(ableId);
+ ableComIdsStr.add(JsonUtil.getListToJsonArray(ableId).toJSONString());
+ }
+ } catch (Exception e) {
+ List list = JsonUtil.getJsonToBean(ableIdsAll, List.class);
+ for (String ableId : list) {
+ ableIdList.add(ableId);
+ }
+ }
+ for (String id : ableIdList) {
+ String[] split = id.split("--");
+ if (split.length > 1) {
+ if (PermissionConst.COMPANY.equalsIgnoreCase(split[1])) {
+ ableComIds.add(split[0]);
+ }
+ if (PermissionConst.DEPARTMENT.equalsIgnoreCase(split[1])) {
+ ableDepIds.add(split[0]);
+ }
+ if (PermissionConst.USER.equalsIgnoreCase(split[1])) {
+ ableUserIds.add(split[0]);
+ }
+ if (PermissionConst.ROLE.equalsIgnoreCase(split[1])) {
+ ableRoleIds.add(split[0]);
+ }
+ if (PermissionConst.GROUP.equalsIgnoreCase(split[1])) {
+ ableGroupIds.add(split[0]);
+ }
+ if (PermissionConst.POSITION.equalsIgnoreCase(split[1])) {
+ ablePosIds.add(split[0]);
+ }
+ if (PermissionConst.SYSTEM.equalsIgnoreCase(split[1])) {
+ ableSystemIds.add(split[0]);
+ }
+ ableIds.add(id);
+ } else {
+ Map param = YunzhupaasConst.SYSTEM_PARAM;
+ if (param.get(id) != null) {
+ ableSystemIds.add(id);
+ } else {
+ if (YunzhupaasKeyConsts.COMSELECT.equalsIgnoreCase(yunzhupaasKey)) {
+ ableComIds.add(id);
+ }
+ if (YunzhupaasKeyConsts.DEPSELECT.equalsIgnoreCase(yunzhupaasKey)) {
+ ableDepIds.add(id);
+ }
+ if (YunzhupaasKeyConsts.ROLESELECT.equalsIgnoreCase(yunzhupaasKey)) {
+ ableRoleIds.add(id);
+ }
+ if (YunzhupaasKeyConsts.GROUPSELECT.equalsIgnoreCase(yunzhupaasKey)) {
+ ableGroupIds.add(id);
+ }
+ if (YunzhupaasKeyConsts.USERSELECT.equalsIgnoreCase(yunzhupaasKey)
+ || YunzhupaasKeyConsts.CUSTOMUSERSELECT.equalsIgnoreCase(yunzhupaasKey)) {
+ ableUserIds.add(id);
+ }
+
+ }
+ }
+ }
+ OnlineCusCheckModel ableModel = OnlineCusCheckModel.builder().ableComIdsStr(ableComIdsStr)
+ .ableComIds(ableComIds).ableDepIds(ableDepIds)
+ .ableGroupIds(ableGroupIds).ablePosIds(ablePosIds).ableRoleIds(ableRoleIds)
+ .ableSystemIds(ableSystemIds).ableUserIds(ableUserIds).ableIds(ableIds).build();
+ return ableModel;
+ }
+
+}
diff --git a/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/visualJson/FieLdsModel.java b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/visualJson/FieLdsModel.java
new file mode 100644
index 0000000..52483c7
--- /dev/null
+++ b/yunzhupaas-boot-common/yunzhupaas-common-core/src/main/java/com/yunzhupaas/model/visualJson/FieLdsModel.java
@@ -0,0 +1,432 @@
+package com.yunzhupaas.model.visualJson;
+
+import com.yunzhupaas.model.visualJson.config.ConfigModel;
+import com.yunzhupaas.model.visualJson.options.ColumnOptionModel;
+import com.yunzhupaas.model.visualJson.props.PropsModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 云筑产品开发平台组
+ * @version V3.1.0
+ * @copyright 深圳市乐程软件有限公司
+ * @date 2024/3/16 8:49
+ */
+@Data
+public class FieLdsModel {
+ private ConfigModel config;
+ private String placeholder;
+ private Object style;
+ private Boolean clearable;
+ private String prefixIcon;
+ private Integer precision;
+ private String suffixIcon;
+ private String maxlength;
+ private Boolean showWordLimit;
+ private Boolean readonly;
+ private Boolean disabled;
+ /**
+ * 设置默认值为空字符串
+ */
+ private String vModel = "";
+ private String label;
+ /**
+ * 列表拼接字段接收
+ */
+ private String id = "";
+ private String field;
+ /**
+ * 是否启用调用签名
+ */
+ private Boolean isInvoke;
+ /**
+ * 关联表单id
+ */
+ private String modelId = "";
+
+ /**
+ * 子表表单
+ */
+ private List footerBtnsList = new ArrayList<>();
+ private List columnBtnsList = new ArrayList<>();
+
+ /**
+ * 关联表单 二维码 条形码 字段
+ */
+ private String relationField;
+ private String relationFieldSource;
+ private Boolean relationChild = false;
+ private String relationModel;
+ private Boolean hasPage;
+ private String pageSize;
+ private String type;
+ private Object autoSize;
+ private Integer step;
+ private Boolean stepstrictly;
+ private Object textStyle;
+ private Integer lineHeight;
+ private Integer fontSize;
+ private Boolean showChinese;
+ private Boolean showPassword;
+ private String tipLabel;
+
+ /**
+ * 链接
+ */
+ private String target;
+ private String href;
+
+ /**
+ * 大小
+ */
+ private String size;
+ private Boolean filterable;
+ /**
+ * 关联表单属性
+ */
+ private String showField;
+ /**
+ * 多选
+ */
+ private Boolean multiple = false;
+
+ private Boolean searchMultiple = false;
+ private Object value;
+
+ /**
+ * 待定
+ */
+ private PropsModel props;
+ /**
+ * 待定
+ */
+ private Boolean showAllLevels;
+ private String separator;
+ private Boolean isrange;
+ private String rangeseparator;
+ private String startplaceholder;
+ private String endplaceholder;
+ private String format;
+ private String valueformat;
+ private Object pickeroptions;
+ /** v2评分-最大值*/
+ private Integer max;
+ /** 评分-允许半选*/
+ private Boolean allowhalf;
+ /** v3评分-最大值*/
+ private Integer count;
+ private Boolean showText;
+ private Boolean showScore;
+ private Boolean showAlpha;
+ private String colorformat;
+ private String activecolor;
+ private String inactivecolor;
+ private String activeValue;
+ private String inactiveValue;
+ private Integer min;
+ private Boolean showStops;
+ private Boolean range;
+ private String content;
+ private String header;
+ private Boolean accordion;
+ private String tabPosition;
+ /**
+ * 未找到
+ */
+ private String accept;
+ private Boolean showTip;
+ private Integer fileSize;
+ private String sizeUnit;
+ private Integer limit;
+ private String contentPosition;
+ /**
+ * 标题提示
+ */
+ private String helpMessage;
+ private String buttonText;
+ private Integer level;
+ private String options;
+ private String shadow;
+ private String name;
+ private String title;
+
+ /**
+ * 文件路径类型 默认路径:defaultPath 自定义路径:selfPath
+ */
+ private String pathType;
+ /**
+ * 时间格式
+ */
+ private String timeFormat;
+ /**
+ * 路径生成规则
+ */
+ private List sortRule;
+ /**
+ * 文件夹名,子级文件用“/”隔开,如:文件1/文件1-1
+ */
+ private String folder;
+
+ /**
+ * 查询方式 1.eq 2.like 3.between
+ */
+ private Integer searchType;
+ private String interfaceId;
+ private List columnOptions;
+ private List extraOptions;
+ /**
+ * 存储字段(弹窗和关联表单)
+ */
+ private String propsValue;
+
+ /**
+ * 开关 值
+ */
+ private String activeTxt;
+ private String inactiveTxt;
+
+ /**
+ * 条形码 条码颜色
+ */
+ private String lineColor;
+ /**
+ * 条形码 背景色
+ */
+ private String background;
+ /**
+ * 条形码 宽高
+ */
+ private Integer width;
+ private Integer height;
+ /**
+ * 条形码 二维码 固定值
+ */
+ private String staticText;
+
+ private String templateJson = "[]";
+
+ /**
+ * 条形码 二维码 类型 (静态,或者组件,当前表单路径) static relation form
+ */
+ private String dataType = "";
+
+ /**
+ * 二维码 条码颜色
+ */
+ private String colorDark;
+
+ /**
+ * 二维码 背景色
+ */
+ private String colorLight;
+
+ /**
+ * 按钮(居中,右,左)
+ */
+ private String align;
+
+ /**
+ * 子表是否合计
+ */
+ private Boolean showSummary;
+
+ /**
+ * 子表合计字段
+ */
+ private String summaryField;
+
+ /**
+ * 所属部门展示内容
+ */
+ private String showLevel;
+
+ /**
+ * 弹窗 样式属性
+ */
+ private String popupType;
+ private String popupTitle;
+ private String popupWidth;
+
+
+ private boolean closable;
+
+ private boolean showIcon;
+
+ private String selectType;
+
+ //自定义
+ private String ableDepIds;
+ private String ableOrgIds;
+ private String ablePosIds;
+ private String ableUserIds;
+ private String ableRoleIds;
+ private String ableGroupIds;
+ private String ableIds;
+ /**
+ * 导入子表字段数量
+ */
+ private Integer childrenSize;
+ /**
+ * 是否是需要导入的字段
+ */
+ private boolean needImport;
+
+ private String relationTableForeign;
+ private String mainTableId;
+ private String childMainKey;
+ /**
+ * 0主表 1 副表 2子表
+ */
+ private Integer tableType;
+ private String beforeVmodel;
+
+ private String description;
+ private String closeText;
+
+ private String tipText;
+ private String direction;
+ private String addonAfter;
+ private String addonBefore;
+ private Boolean isAmountChinese;
+ /**
+ * 数字输入-是否有加减按键
+ */
+ private String controls;
+ private String startTime;
+ private String endTime;
+
+ private String optionType;
+ /**
+ * 下拉补全展示条数
+ */
+ private Integer total;
+
+ /**
+ * 单选框按键风格
+ */
+ private String buttonStyle;
+
+ /**
+ * 千分位开关
+ */
+ private boolean thousands = false;
+
+ /**
+ * 千分位字段列表
+ */
+ private List thousandsField = new ArrayList<>();
+
+ /**
+ * 展示 存储数据 0-不存储,1-存储
+ */
+ private Integer isStorage;
+
+ //高级搜索
+ private String fieldValue;
+ private Object fieldValueOne;
+ private Object fieldValueTwo;
+ private List dataList = new ArrayList<>();
+ private String fieldValueType;
+ private String symbol;
+
+ /**
+ * 地图属性
+ */
+ private boolean autoLocation = false;
+ private boolean enableLocationScope = false;
+ private int adjustmentScope;
+ private boolean enableDesktopLocation = false;
+ private List