diff --git a/README.md b/README.md
index b94be45304d9c6abcccdb73da8c18da016d6c080..385621bbd78e5ecdaee594ef11e8f90581933c8d 100644
--- a/README.md
+++ b/README.md
@@ -1,213 +1,1538 @@
-
-
-
-
-
-
-
+# qData 平台文档
-
-
-
+## 🌈 平台简介
+qData 是一个数据处理与调度平台,提供 ETL(抽取、转换、加载)任务的创建、执行、调度与监控功能。它支持多种数据源(如 Kafka、MySQL、Hive 等),并集成了 Quartz 定时任务调度框架,实现灵活的任务管理。
-
- 📖简体中文 | 📖English
-
+平台基于 Spring Boot、MyBatis Plus、Redis、RabbitMQ、Quartz 等主流技术栈构建,具备良好的可扩展性与稳定性,适用于企业级数据集成与治理场景。
+## 🍱 使用场景
+- 数据集成:从不同数据源抽取数据并加载到目标数据库。
+- 数据清洗与转换:通过内置规则对数据进行标准化、脱敏、字段映射等操作。
+- 任务调度管理:定时执行 ETL 任务,支持任务启停、状态监控、日志记录。
+- 多租户与权限控制:支持基于角色的数据权限与操作权限管理。
+- 数据可视化:提供任务执行状态与日志的可视化展示。
-## 🌈平台简介
-**千数平台(qData)** 是一款一**站式开源数据中台**,覆盖**中台基础建设、数据治理、数据开发、监控告警、数据服务**与**数据可视化**等核心能力,致力于高效赋能数据前台,为各类业务系统提供**统一、高效、安全**的数据支撑服务。
+## 💡 优势
+- **多数据源支持**:支持 Kafka、MySQL、Oracle、Hive、DM ://qiantong/qdata/spark/etl/utils/IDGeneratorUtils.java
+ - public static long getLongId()
+ - public static String getStringId()
+ - public static void main(String[] args)
-✨✨✨**演示地址**✨✨✨ 点击跳转 ,账号:qData 密码:qData123
+### qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/utils/LogUtils.java
+public class LogUtils
+ - public static String createLogPath(String resourceUrl, JSONObject nodeJson)
+ - public static void writeLog(String logPath, String meesage)
-✨✨✨**演示视频**✨✨✨ https://www.bilibili.com/video/BV1d6TxziEdX
+### qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/utils/RabbitmqUtils.java
+public class RabbitmqUtils
+ - public static Boolean convertAndSend(JSONObject config, String exchange, String routingKey, Object object)
+ - public static void main(String[] args)
-## 🍱 使用场景
+### qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/utils/SnowflakeIdHelper.java
+public class SnowflakeIdHelper
+ - private final long twepoch
+ - private final long workerIdBits
+ - private final long datacenterIdBits
+ - private final long maxWorkerId
+ - private final long maxDatacenterId
+ - private final long sequenceBits
+ - private final long workerIdShift
+ - private final long datacenterIdShift
+ - private final long timestampLeftShift
+ - private final long sequenceMask
+ - private long workerId
+ - private long datacenterId
+ - private long sequence
+ - private long lastTimestamp
+ - private static SnowflakeIdHelper instance
+ - public static SnowflakeIdHelper getInstance(long workerId, long datacenterId)
+ - public SnowflakeIdHelper(long workerId, long datacenterId)
+ - public synchronized long nextId()
+ - protected long tilNextMillis(long lastTimestamp)
+ - protected long timeGen()
-| 场景 | 描述 |
-|----------------------|----------------------------------------------------------------------|
-| 🔗 **多源数据整合** | 整合业务系统、IoT、第三方等数据,实现统一采集、清洗与治理,构建标准数据资产。 |
-| 🌐 **统一数据服务** | 将治理数据通过 API 或数据集方式提供,支撑系统共享调用,提升复用效率。 |
-| 📈 **决策分析支撑** | 提供统一数据视图和分析能力,助力业务分析、报表生成及科学决策。 |
+### qdata-etl/src/main/java/tech/qiantong/qdata/spark/etl/utils/db/DBUtils.java
+public class DBUtils
+ - public static DbQueryProperty buildJobDatasource(Map datasource)
+ - public static Map getDbOptions(JSONObject parameter)
+ - public static void init()
-## 💡 优势
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/controller/BaseController.java
+public class BaseController
+ - protected final Logger logger
+ - @InitBinder
+ public void initBinder(WebDataBinder binder)
+ - protected void startPage()
+ - protected void startOrderBy()
+ - protected void clearPage()
+ - @SuppressWarnings({ "rawtypes", "unchecked" })
+ protected TableDataInfo getDataTable(List> list)
+ - public AjaxResult success()
+ - public AjaxResult error()
+ - public AjaxResult success(String message)
+ - public AjaxResult success(Object data)
+ - public AjaxResult error(String message)
+ - public AjaxResult warn(String message)
+ - protected AjaxResult toAjax(int rows)
+ - protected AjaxResult toAjax(boolean result)
+ - public String redirect(String url)
+ - public LoginUser getLoginUser()
+ - public Long getUserId()
+ - public Long getDeptId()
+ - public String getUsername()
+ - public String getNickName()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/AjaxResult.java
+public class AjaxResult extends HashMap
+ - private static final long serialVersionUID
+ - public static final String CODE_TAG
+ - public static final String MSG_TAG
+ - public static final String DATA_TAG
+ - public AjaxResult()
+ - public AjaxResult(int code, String msg)
+ - public AjaxResult(int code, String msg, Object data)
+ - public static AjaxResult success()
+ - public static AjaxResult success(Object data)
+ - public static AjaxResult success(String msg)
+ - public static AjaxResult success(String msg, Object data)
+ - public static AjaxResult warn(String msg)
+ - public static AjaxResult warn(String msg, Object data)
+ - public static AjaxResult error()
+ - public static AjaxResult error(String msg)
+ - public static AjaxResult error(String msg, Object data)
+ - public static AjaxResult error(int code, String msg)
+ - public boolean isSuccess()
+ - public boolean isWarn()
+ - public boolean isError()
+ - @Override
+ public AjaxResult put(String key, Object value)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/BaseEntity.java
+public class BaseEntity implements Serializable
+ - private static final long serialVersionUID
+ - @JsonIgnore
+ @TableField(exist
+ - @Schema(description
+ - @Schema(description
+ - @TableField(fill
+ - @Schema(description
+ - @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ @TableField(exist
+ - public String getSearchValue()
+ - public void setSearchValue(String searchValue)
+ - public String getCreateBy()
+ - public void setCreateBy(String createBy)
+ - public Date getCreateTime()
+ - public void setCreateTime(Date createTime)
+ - public String getUpdateBy()
+ - public void setUpdateBy(String updateBy)
+ - public Date getUpdateTime()
+ - public void setUpdateTime(Date updateTime)
+ - public Long getCreatorId()
+ - public void setCreatorId(Long creatorId)
+ - public Long getUpdatorId()
+ - public void setUpdatorId(Long updaterId)
+ - public String getRemark()
+ - public void setRemark(String remark)
+ - public Map getParams()
+ - public Object getParamByKey(String key)
+ - public void setParams(Map params)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/CommonResult.java
+@Schema(description = "通用返回")
+@Data
+public class CommonResult implements Serializable
+ - private static final long serialVersionUID
+ - @Schema(description
+ - @Schema(description
+ - @Schema(description
+ - public static CommonResult error(CommonResult> result)
+ - public static CommonResult error(Integer code, String message)
+ - public static CommonResult error(ErrorCode errorCode)
+ - public static CommonResult success(T data)
+ - public static CommonResult toAjax(T data)
+ - public static boolean isSuccess(Integer code)
+ - @JsonIgnore // 避免 jackson 序列化
+ public boolean isSuccess()
+ - @JsonIgnore // 避免 jackson 序列化
+ public boolean isError()
+ - public void checkError() throws ServiceException
+ - @JsonIgnore // 避免 jackson 序列化
+ public T getCheckedData()
+ - public static CommonResult error(ServiceException serviceException)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/R.java
+public class R implements Serializable
+ - private static final long serialVersionUID
+ - public static final int SUCCESS
+ - public static final int FAIL
+ - private int code
+ - private String msg
+ - private T data
+ - public static R ok()
+ - public static R ok(T data)
+ - public static R ok(T data, String msg)
+ - public static R fail()
+ - public static R fail(String msg)
+ - public static R fail(T data)
+ - public static R fail(T data, String msg)
+ - public static R fail(int code, String msg)
+ - private static R restResult(T data, int code, String msg)
+ - public int getCode()
+ - public void setCode(int code)
+ - public String getMsg()
+ - public void setMsg(String msg)
+ - public T getData()
+ - public void setData(T data)
+ - public static Boolean isError(R ret)
+ - public static Boolean isSuccess(R ret)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/ReturnT.java
+public class ReturnT implements Serializable
+ - public static final long serialVersionUID
+ - public static final int SUCCESS_CODE
+ - public static final int FAIL_CODE
+ - public static final ReturnT SUCCESS
+ - public static final ReturnT FAIL
+ - private int code
+ - private String msg
+ - private T content
+ - public ReturnT()
+ - public ReturnT(int code, String msg)
+ - public ReturnT(T content)
+ - public int getCode()
+ - public void setCode(int code)
+ - public String getMsg()
+ - public void setMsg(String msg)
+ - public T getContent()
+ - public void setContent(T content)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/TreeEntity.java
+public class TreeEntity extends BaseEntity
+ - private static final long serialVersionUID
+ - private String parentName
+ - private Long parentId
+ - private Integer orderNum
+ - private String ancestors
+ - private List> children
+ - public String getParentName()
+ - public void setParentName(String parentName)
+ - public Long getParentId()
+ - public void setParentId(Long parentId)
+ - public Integer getOrderNum()
+ - public void setOrderNum(Integer orderNum)
+ - public String getAncestors()
+ - public void setAncestors(String ancestors)
+ - public List> getChildren()
+ - public void setChildren(List> children)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/TreeSelect.java
+public class TreeSelect implements Serializable
+ - private static final long serialVersionUID
+ - private Long id
+ - private String label
+ - @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ private List children
+ - public TreeSelect()
+ - public TreeSelect(SysDept dept)
+ - public TreeSelect(SysMenu menu)
+ - public TreeSelect(RpDept rpDeptDO)
+ - public TreeSelect(RpAreaDict rpDeptDO)
+ - public Long getId()
+ - public void setId(Long id)
+ - public String getLabel()
+ - public void setLabel(String label)
+ - public List getChildren()
+ - public void setChildren(List children)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/RpAreaDict.java
+@Data
+public class RpAreaDict extends BaseEntity
+ - private static final long serialVersionUID
+ - private Long id
+ - private String name
+ - private String code
+ - private Long parentId
+ - private Long sortOrder
+ - private String type
+ - private Boolean validFlag
+ - @TableLogic
+ private Boolean delFlag
+ - private List children
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/RpDept.java
+@Data
+public class RpDept extends BaseEntity
+ - private static final long serialVersionUID
+ - private Long deptId
+ - private Long parentId
+ - private String ancestors
+ - private String deptName
+ - private String deptCode
+ - private String deptType
+ - private String orderNum
+ - private String leader
+ - private String phone
+ - private String email
+ - private String status
+ - private Boolean validFlag
+ - @TableLogic
+ private Boolean delFlag
+ - private List children
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/SysDept.java
+public class SysDept extends BaseEntity
+ - private static final long serialVersionUID
+ - private Long deptId
+ - private Long parentId
+ - private String ancestors
+ - private String deptName
+ - private Integer orderNum
+ - private String leader
+ - private String phone
+ - private String email
+ - private String status
+ - private String delFlag
+ - private String parentName
+ - private List children
+ - public Long getDeptId()
+ - public void setDeptId(Long deptId)
+ - public Long getParentId()
+ - public void setParentId(Long parentId)
+ - public String getAncestors()
+ - public void setAncestors(String ancestors)
+ - @NotBlank(message = "部门名称不能为空")
+ @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
+ public String getDeptName()
+ - public void setDeptName(String deptName)
+ - @NotNull(message = "显示顺序不能为空")
+ public Integer getOrderNum()
+ - public void setOrderNum(Integer orderNum)
+ - public String getLeader()
+ - public void setLeader(String leader)
+ - @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
+ public String getPhone()
+ - public void setPhone(String phone)
+ - @Email(message = "邮箱格式不正确")
+ @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+ public String getEmail()
+ - public void setEmail(String email)
+ - public String getStatus()
+ - public void setStatus(String status)
+ - public String getDelFlag()
+ - public void setDelFlag(String delFlag)
+ - public String getParentName()
+ - public void getParentName(String parentName)
+ - public List getChildren()
+ - public void setChildren(List children)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/SysDictData.java
+public class SysDictData extends BaseEntity
+ - private static final long serialVersionUID
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - private String cssClass
+ - private String listClass
+ - @Excel(name
+ - @Excel(name
+ - public Long getDictCode()
+ - public void setDictCode(Long dictCode)
+ - public Long getDictSort()
+ - public void setDictSort(Long dictSort)
+ - @NotBlank(message = "字典标签不能为空")
+ @Size(min = 0, max = 100, message = "字典标签长度不能超过100个字符")
+ public String getDictLabel()
+ - public void setDictLabel(String dictLabel)
+ - @NotBlank(message = "字典键值不能为空")
+ @Size(min = 0, max = 100, message = "字典键值长度不能超过100个字符")
+ public String getDictValue()
+ - public void setDictValue(String dictValue)
+ - @NotBlank(message = "字典类型不能为空")
+ @Size(min = 0, max = 100, message = "字典类型长度不能超过100个字符")
+ public String getDictType()
+ - public void setDictType(String dictType)
+ - @Size(min = 0, max = 100, message = "样式属性长度不能超过100个字符")
+ public String getCssClass()
+ - public void setCssClass(String cssClass)
+ - public String getListClass()
+ - public void setListClass(String listClass)
+ - public boolean getDefault()
+ - public String getIsDefault()
+ - public void setIsDefault(String isDefault)
+ - public String getStatus()
+ - public void setStatus(String status)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/SysDictType.java
+public class SysDictType extends BaseEntity
+ - private static final long serialVersionUID
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - private List sysDictData
+ - public List getSysDictData()
+ - public void setSysDictData(List sysDictData)
+ - public Long getDictId()
+ - public void setDictId(Long dictId)
+ - @NotBlank(message = "字典名称不能为空")
+ @Size(min = 0, max = 100, message = "字典类型名称长度不能超过100个字符")
+ public String getDictName()
+ - public void setDictName(String dictName)
+ - @NotBlank(message = "字典类型不能为空")
+ @Size(min = 0, max = 100, message = "字典类型类型长度不能超过100个字符")
+ @Pattern(regexp = "^[a-z][a-z0-9_]*$", message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)")
+ public String getDictType()
+ - public void setDictType(String dictType)
+ - public String getStatus()
+ - public void setStatus(String status)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/SysMenu.java
+public class SysMenu extends BaseEntity
+ - private static final long serialVersionUID
+ - private Long menuId
+ - private String menuName
+ - private String parentName
+ - private Long parentId
+ - private Integer orderNum
+ - private String path
+ - private String component
+ - private String query
+ - private String routeName
+ - private String isFrame
+ - private String isCache
+ - private String menuType
+ - private String visible
+ - private String status
+ - private String perms
+ - private String icon
+ - private Long projectId
+ - private List children
+ - public Long getMenuId()
+ - public void setMenuId(Long menuId)
+ - @NotBlank(message = "菜单名称不能为空")
+ @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
+ public String getMenuName()
+ - public void setMenuName(String menuName)
+ - public String getParentName()
+ - public void setParentName(String parentName)
+ - public Long getParentId()
+ - public void setParentId(Long parentId)
+ - @NotNull(message = "显示顺序不能为空")
+ public Integer getOrderNum()
+ - public void setOrderNum(Integer orderNum)
+ - @Size(min = 0, max = 200, message = "路由地址不能超过200个字符")
+ public String getPath()
+ - public void setPath(String path)
+ - @Size(min = 0, max = 200, message = "组件路径不能超过255个字符")
+ public String getComponent()
+ - public void setComponent(String component)
+ - public String getQuery()
+ - public void setQuery(String query)
+ - public String getRouteName()
+ - public void setRouteName(String routeName)
+ - public String getIsFrame()
+ - public void setIsFrame(String isFrame)
+ - public String getIsCache()
+ - public void setIsCache(String isCache)
+ - @NotBlank(message = "菜单类型不能为空")
+ public String getMenuType()
+ - public void setMenuType(String menuType)
+ - public String getVisible()
+ - public void setVisible(String visible)
+ - public String getStatus()
+ - public void setStatus(String status)
+ - @Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符")
+ public String getPerms()
+ - public void setPerms(String perms)
+ - public String getIcon()
+ - public void setIcon(String icon)
+ - public List getChildren()
+ - public void setChildren(List children)
+ - public Long getProjectId()
+ - public void setProjectId(Long projectId)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/SysRole.java
+public class SysRole extends BaseEntity
+ - private static final long serialVersionUID
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - private boolean menuCheckStrictly
+ - private boolean deptCheckStrictly
+ - @Excel(name
+ - private String delFlag
+ - private boolean flag
+ - private Long[] menuIds
+ - private Long[] deptIds
+ - private Set permissions
+ - private Long oldRoleId
+ - public Long getOldRoleId()
+ - public void setOldRoleId(Long oldRoleId)
+ - private Long projectId
+ - public Long getProjectId()
+ - public void setProjectId(Long projectId)
+ - public SysRole()
+ - public SysRole(Long roleId)
+ - public Long getRoleId()
+ - public void setRoleId(Long roleId)
+ - public boolean isAdmin()
+ - public static boolean isAdmin(Long roleId)
+ - @NotBlank(message = "角色名称不能为空")
+ @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
+ public String getRoleName()
+ - public void setRoleName(String roleName)
+ - @NotBlank(message = "权限字符不能为空")
+ @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
+ public String getRoleKey()
+ - public void setRoleKey(String roleKey)
+ - @NotNull(message = "显示顺序不能为空")
+ public Integer getRoleSort()
+ - public void setRoleSort(Integer roleSort)
+ - public String getDataScope()
+ - public void setDataScope(String dataScope)
+ - public boolean isMenuCheckStrictly()
+ - public void setMenuCheckStrictly(boolean menuCheckStrictly)
+ - public boolean isDeptCheckStrictly()
+ - public void setDeptCheckStrictly(boolean deptCheckStrictly)
+ - public String getStatus()
+ - public void setStatus(String status)
+ - public String getDelFlag()
+ - public void setDelFlag(String delFlag)
+ - public boolean isFlag()
+ - public void setFlag(boolean flag)
+ - public Long[] getMenuIds()
+ - public void setMenuIds(Long[] menuIds)
+ - public Long[] getDeptIds()
+ - public void setDeptIds(Long[] deptIds)
+ - public Set getPermissions()
+ - public void setPermissions(Set permissions)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/entity/SysUser.java
+public class SysUser extends BaseEntity
+ - private static final long serialVersionUID
+ - @Excel(name
+ - private String authId
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - @Excel(name
+ - private String avatar
+ - private String password
+ - @Excel(name
+ - private String delFlag
+ - @Excel(name
+ - @Excel(name
+ - @Excels({
+ @Excel(name
+ - private List roles
+ - private Long[] roleIds
+ - private Long[] postIds
+ - private List userIdList
+ - private Long roleId
+ - public SysUser()
+ - public SysUser(Long userId)
+ - public Long getUserId()
+ - public void setUserId(Long userId)
+ - public String getAuthId()
+ - public void setAuthId(String authId)
+ - public boolean isAdmin()
+ - public static boolean isAdmin(Long userId)
+ - public Long getDeptId()
+ - public void setDeptId(Long deptId)
+ - public List getUserIdList()
+ - public void setUserIdList(List userIdList)
+ - @Xss(message = "用户昵称不能包含脚本字符")
+ @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
+ public String getNickName()
+ - public void setNickName(String nickName)
+ - @Xss(message = "用户账号不能包含脚本字符")
+ @NotBlank(message = "用户账号不能为空")
+ @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
+ public String getUserName()
+ - public void setUserName(String userName)
+ - @Email(message = "邮箱格式不正确")
+ @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
+ public String getEmail()
+ - public void setEmail(String email)
+ - @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
+ public String getPhonenumber()
+ - public void setPhonenumber(String phonenumber)
+ - public String getSex()
+ - public void setSex(String sex)
+ - public String getAvatar()
+ - public void setAvatar(String avatar)
+ - public String getPassword()
+ - public void setPassword(String password)
+ - public String getStatus()
+ - public void setStatus(String status)
+ - public String getDelFlag()
+ - public void setDelFlag(String delFlag)
+ - public String getLoginIp()
+ - public void setLoginIp(String loginIp)
+ - public Date getLoginDate()
+ - public void setLoginDate(Date loginDate)
+ - public SysDept getDept()
+ - public void setDept(SysDept dept)
+ - public List getRoles()
+ - public void setRoles(List roles)
+ - public Long[] getRoleIds()
+ - public void setRoleIds(Long[] roleIds)
+ - public Long[] getPostIds()
+ - public void setPostIds(Long[] postIds)
+ - public Long getRoleId()
+ - public void setRoleId(Long roleId)
+ - public Boolean comparePwd(String pwd)
+ - @Override
+ public String toString()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/model/LoginBody.java
+public class LoginBody
+ - private String username
+ - private String password
+ - private String code
+ - private String uuid
+ - public String getUsername()
+ - public void setUsername(String username)
+ - public String getPassword()
+ - public void setPassword(String password)
+ - public String getCode()
+ - public void setCode(String code)
+ - public String getUuid()
+ - public void setUuid(String uuid)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/model/LoginUser.java
+public class LoginUser implements UserDetails
+ - private static final long serialVersionUID
+ - private Long userId
+ - private Long deptId
+ - private String token
+ - private Long loginTime
+ - private Long expireTime
+ - private String ipaddr
+ - private String loginLocation
+ - private String browser
+ - private String os
+ - private Set permissions
+ - private SysUser user
+ - public LoginUser()
+ - public LoginUser(SysUser user, Set permissions)
+ - public LoginUser(Long userId, Long deptId, SysUser user, Set permissions)
+ - public Long getUserId()
+ - public void setUserId(Long userId)
+ - public Long getDeptId()
+ - public void setDeptId(Long deptId)
+ - public String getToken()
+ - public void setToken(String token)
+ - @JSONField(serialize = false)
+ @Override
+ public String getPassword()
+ - @Override
+ public String getUsername()
+ - @JSONField(serialize = false)
+ @Override
+ public boolean isAccountNonExpired()
+ - @JSONField(serialize = false)
+ @Override
+ public boolean isAccountNonLocked()
+ - @JSONField(serialize = false)
+ @Override
+ public boolean isCredentialsNonExpired()
+ - @JSONField(serialize = false)
+ @Override
+ public boolean isEnabled()
+ - public Long getLoginTime()
+ - public void setLoginTime(Long loginTime)
+ - public String getIpaddr()
+ - public void setIpaddr(String ipaddr)
+ - public String getLoginLocation()
+ - public void setLoginLocation(String loginLocation)
+ - public String getBrowser()
+ - public void setBrowser(String browser)
+ - public String getOs()
+ - public void setOs(String os)
+ - public Long getExpireTime()
+ - public void setExpireTime(Long expireTime)
+ - public Set getPermissions()
+ - public void setPermissions(Set permissions)
+ - public SysUser getUser()
+ - public void setUser(SysUser user)
+ - @Override
+ public Collection extends GrantedAuthority> getAuthorities()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/domain/model/RegisterBody.java
+public class RegisterBody extends LoginBody
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/PageDomain.java
+public class PageDomain
+ - private Integer pageNum
+ - private Integer pageSize
+ - private String orderByColumn
+ - private String isAsc
+ - private Boolean reasonable
+ - public String getOrderBy()
+ - public Integer getPageNum()
+ - public void setPageNum(Integer pageNum)
+ - public Integer getPageSize()
+ - public void setPageSize(Integer pageSize)
+ - public String getOrderByColumn()
+ - public void setOrderByColumn(String orderByColumn)
+ - public String getIsAsc()
+ - public void setIsAsc(String isAsc)
+ - public Boolean getReasonable()
+ - public void setReasonable(Boolean reasonable)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/PageParam.java
+@Schema(description="分页参数")
+@Data
+public class PageParam extends BaseEntity implements Serializable
+ - private static final Integer PAGE_NO
+ - private static final Integer PAGE_SIZE
+ - public static final Integer PAGE_SIZE_NONE
+ - @Schema(description
+ - @Schema(description
+ - private String orderByColumn
+ - private String isAsc
+ - private String isDesc
+ - public String getOrderBy()
+ - public void setIsAsc(String isAsc)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/PageResult.java
+@Schema(description = "分页结果")
+@Data
+public final class PageResult implements Serializable
+ - @Schema(description
+ - @Schema(description
+ - public PageResult()
+ - public PageResult(List list, Long total)
+ - public PageResult(Long total)
+ - public static PageResult empty()
+ - public static PageResult empty(Long total)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/SortablePageParam.java
+@Schema(description = "可排序的分页参数")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class SortablePageParam extends PageParam
+ - @Schema(description
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/SortingField.java
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class SortingField implements Serializable
+ - public static final String ORDER_ASC
+ - public static final String ORDER_DESC
+ - private String field
+ - private String order
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/TableDataInfo.java
+public class TableDataInfo implements Serializable
+ - private static final long serialVersionUID
+ - private long total
+ - private List> rows
+ - private int code
+ - private String msg
+ - public TableDataInfo()
+ - public TableDataInfo(List> list, int total)
+ - public long getTotal()
+ - public void setTotal(long total)
+ - public List> getRows()
+ - public void setRows(List> rows)
+ - public int getCode()
+ - public void setCode(int code)
+ - public String getMsg()
+ - public void setMsg(String msg)
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/page/TableSupport.java
+public class TableSupport
+ - public static final String PAGE_NUM
+ - public static final String PAGE_SIZE
+ - public static final String ORDER_BY_COLUMN
+ - public static final String IS_ASC
+ - public static final String REASONABLE
+ - public static PageDomain getPageDomain()
+ - public static PageDomain buildPageRequest()
+
+### qdata-framework/qdata-common/src/main/java/tech/qiantong/qdata/common/core/redis/RedisCache.java
+@SuppressWarnings(value = { "unchecked", "rawtypes" })
+@Component
+public class RedisCache
+ - @Autowired
+ public RedisTemplate redisTemplate
+ - public void setCacheObject(final String key, final T value)
+ - public void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit)
+ - public boolean expire(final String key, final long timeout)
+ - public boolean expire(final String key, final long timeout, final TimeUnit unit)
+ - public long getExpire(final String key)
+ - public Boolean hasKey(String key)
+ - public T getCacheObject(final String key)
+ - public boolean deleteObject(final String key)
+ - public boolean deleteObject(final Collection collection)
+ - public long setCacheList(final String key, final List dataList)
+ - public List getCacheList(final String key)
+ - public BoundSetOperations setCacheSet(final String key, final Set dataSet)
+ - public Set getCacheSet(final String key)
+ - public void setCacheMap(final String key, final Map dataMap)
+ - public Map getCacheMap(final String key)
+ - public void setCacheMapValue(final String key, final String hKey, final T value)
+ - public T getCacheMapValue(final String key, final String hKey)
+ - public List getMultiCacheMapValue(final String key, final Collection