Compare commits

27 Commits
main ... dev

Author SHA1 Message Date
dianjiu
b147cd9d34 docs:更多文档说明,为V3.2.0上线做准备 2024-09-25 20:55:25 +08:00
njydsz
b8383fe12c docs:更多文档说明,为V3.2.0上线做准备 2024-09-25 20:46:53 +08:00
njydsz
27adac2320 docs:更多文档说明,为V3.2.0上线做准备 2024-09-25 20:45:46 +08:00
njydsz
8d094e48ac feat:修复已知问题,提升系统稳定性 2024-09-25 11:38:06 +08:00
limw
bbed2aadbc fix:V3.1.2 回滚hibernate-validator版本到6.2.5.Final 2024-09-20 20:12:57 +08:00
dianjiu
828decb608 docs:更新文档说明,为V3.2.0做准备 2024-09-19 12:44:22 +08:00
dianjiu
2b070091d8 feat:更新项目基于Docker和K8S的容器部署脚本 2024-09-19 12:43:29 +08:00
dianjiu
c0ce26d228 feat:更新项目基于Docker和K8S的容器部署脚本 2024-09-12 23:49:26 +08:00
dianjiu
a59cd57378 docs:更新说明文档 2024-09-11 22:10:37 +08:00
dianjiu
f8c0354028 docs:更新说明文档 2024-09-11 22:08:36 +08:00
dianjiu
999bfd3f31 docs:更新说明文档 2024-09-11 20:53:54 +08:00
dianjiu
28d62f6cf4 feat:V3.1.1整合remi-comm到remi-cloud中 2024-09-11 17:41:17 +08:00
dianjiu
e111c59a69 feat:修复已知问题,提升系统稳定性 2024-09-09 21:00:16 +08:00
dianjiu
25ed78b287 Merge remote-tracking branch 'origin/dev' into dev 2024-09-09 18:44:45 +08:00
dianjiu
1c561653df feat:修复已知问题,提升系统稳定性 2024-09-09 18:44:35 +08:00
dianjiu
2cfade5515 docs:更新系统说明文档,上线体验地址 2024-09-08 17:25:15 +08:00
dianjiu
fa2c51e476 docs:更新系统说明文档 2024-09-05 19:09:14 +08:00
李孟伟
9154ea3b29 添加 LICENSE 2024-09-05 05:57:17 +00:00
dianjiu
b637a50f20 feat:修复已知问题,提升系统稳定性 2024-09-01 20:08:53 +08:00
dianjiu
27f7a5a15c feat:系统通知公告支持通知标题字段 2024-08-31 21:27:03 +08:00
dianjiu
73ec411229 feat:实现用户密码修改接口 2024-08-31 20:44:37 +08:00
dianjiu
4c6ec40ba9 feat:更新快速开发的demo工程 2024-08-31 20:27:35 +08:00
dianjiu
4c60cfbba6 feat:实现通知公告的基础功能 2024-08-31 20:13:44 +08:00
dianjiu
56af80b94e feat:新增数据库设计以及初始化脚本 2024-08-31 20:13:05 +08:00
dianjiu
153c0fd5e9 feat:基于K8S部署基础依赖 2024-08-31 19:55:31 +08:00
dianjiu
5a30e0f602 docs:更新README 2024-08-30 02:08:02 +08:00
dianjiu
e821ba4858 feat:修复已知问题,提升系统稳定性 2024-08-30 02:04:33 +08:00
837 changed files with 83330 additions and 54 deletions

201
LICENSE Normal file
View File

@@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2024 李孟伟
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

256
README.md
View File

@@ -1,71 +1,219 @@
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">Startdis Cloud</h1>
<p align="center">
<img alt="Remi Cloud" src="./docs/images/logo.png" width="400" height="200" style="margin-bottom: 10px;">
</p>
<div align="center">
## 平台简介
[![GitHub stars](https://img.shields.io/github/stars/remi-top/remi-cloud?logo=github)](https://github.com/remi-top/remi-cloud/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/remi-top/remi-cloud?logo=github)](https://github.com/remi-top/remi-cloud/network)
[![star](https://gitee.com/remi-top/remi-cloud/badge/star.svg?theme=dark)](https://gitee.com/remi-top/remi-cloud/stargazers)
[![fork](https://gitee.com/remi-top/remi-cloud/badge/fork.svg?theme=dark)](https://gitee.com/remi-top/remi-cloud/members)
</div>
Startdis Cloud 即 Startdis Dev Tools 启迪快速开发平台的多模块微服务开发框架。由[江苏点九科技有限公司](https://dianjiu.cc)提供技术支持。
## 瑞米平台
### 分支说明
### 项目概述
- main: 暂不维护
- dev: 2.0 和 3.0 的开发分支 测试稳定后会合并到对应分支
- 2.0.0: java17 + springboot 2.7 + springcloud 2021
- 3.0.0: java21 + springboot 3.3 + springcloud 2023
Remi Cloud (瑞米) 是一款企业级AI+微服务架构的快速开发平台,是采用领域驱动模型(DDD)设计思想的、遵循SpringCloudAlibaba编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、分布式事务、单点登录、统一身份,统一应用、统一权限、AI搜索等功能。基于[Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)协议,毫无保留给个人及企业免费使用,由[江苏点九科技有限公司](https://dianjiu.cc)提供技术支持。
### 文档视频
------
https://www.yuque.com/dianjiuxyz/vpdfr9
<div align="center">
<h3> 您的 ⭐️ Star ⭐️ 是对瑞米开源团队的最大肯定。</h3>
</div>
------
### 设计理念
瑞米平台的设计理念:**所见即所得,极简且易用**。 我相信大家在使用过程中能体验到设计师的用心之处,**颜色的高对比度**、**左侧菜单的设计**、**减少了弹框的嵌套**、**三等分的抽屉使用**等,让用户体验更加友好。
<div align="center">
<h3> 关注微信公众号,了解最新动态:</h3>
</div>
<img src="./docs/images/ai-remi.png"/>
### 项目规划
瑞米平台目前还在公测阶段,可能会些许不足,也请您给些包容并及时反馈给我们,24年年底我们定会按时交出让您满意的瑞米快速开发平台。
<img src="./docs/images/step.png"/>
### 体验地址
https://sdt.startdis.com
[https://remi.run](https://remi.run)
startdis/startdis2022
RemiAdmin/123456
### 其他产品
### 官方文档
请访问[语雀空间公开页](https://remi.yuque.com/r/organizations/homepage)
- [更新日志](https://remi.yuque.com/gvwcfc/dvpw89)
- [使用手册](https://remi.yuque.com/gvwcfc/vwwd5c)
- [操作视频](https://remi.yuque.com/gvwcfc/video) (正在抓紧更新,敬请期待)
- 👉🏻 [自研 IAM 统一身份引擎](https://iam.startdis.com)
## 功能介绍
- 👉🏻 [自研 BPM 统一流程引擎](https://bpm.startdis.com)
### 统一门户(Remi UPM)
瑞米统一门户引擎是一种集成了多种应用和服务的综合性管理平台,旨在为企业和组织提供一个统一的信息管理和访问入口。这种平台通过整合多种系统和服务,实现了信息的集中展示和管理,提高了工作效率和用户体验。
- 待办已办:集成了各种常用功能,如:待办、已办、流程、我的、我的申请、我的审批等。
- 智能搜索:支持全局的功能菜单、业务数据的搜索;支持AI在线问答。
- 快捷导航:用户可以根据自己的需求选择不同的角色视图进行工作。
- 我的应用:在工作台中动态加载当前登录用户可操作的应用.如:HRM、CRM、CMS等。
- 统计页面:可根据具体业务需求开发具体的统计分组。
- 千人千面:支持不同用户展示不同的主题、工作台、列表字段和分页数等。
<table>
<tr>
<td><img src="./docs/images/work.png"/></td>
<td><img src="./docs/images/home.png"/></td>
</tr>
</table>
### 登录引擎(Remi SSO)
瑞米统一登录引擎是一种用于集中管理和简化用户访问多个应用系统时的身份验证流程的技术方案。它为用户提供了一个统一的入口,使得用户只需要一次登录操作即可访问所有已经授权的应用系统,而不需要在每个系统中单独进行身份验证。
- 单点登录:用户只需登录一次即可访问所有相关联的应用程序。
- 身份验证:支持多种身份验证方式,包括但不限于密码、验证码等。
- 身份管理:支持用户注册、修改密码、找回密码、修改个人信息等。
- 系统集成:能够与多种不同的系统和技术栈集成,提供无缝的用户体验。
- 可扩展性:随着业务的发展,平台能够轻松扩展以适应更多的用户和应用。
- 多种协议:支持OAuth2.x、OIDC、SAML2.0、JWT、CAS等SSO标准协议。
- 跨域共享:支持跨域的资源共享和身份验证,不同域名下的资源也能实现无缝访问。
<table>
<tr>
<td><img src="./docs/images/login.png"/></td>
<td><img src="./docs/images/ai.png"/></td>
</tr>
</table>
### 应用引擎(Remi AMS)
瑞米统一应用引擎是是一种高级的企业级解决方案,旨在简化并优化企业内部的IT架构,通过整合多个分散的应用程序和服务,提供一个统一的管理平台。
- 统一界面:提供单一入口点,用户可以通过统一的界面访问和操作所有关联的业务应用,无需切换多个系统,提高用户体验。
- 快速集成:无缝集成现有的各种异构系统和应用程序,无论是内部部署还是云端服务,保证数据的一致性和完整性。
- 应用集成:统一管理各种业务应用系统,如:HRM、CRM、CMS等。
- 应用配置:每个业务系统的全局配置,如:邮件配置、存储配置等。
- 应用安全:配置每个业务系统的授权协议、家解密方式等。
- 应用菜单:配置业务系统的目录菜单,操作按钮的权限标识。
- 应用组织:给每个业务系统分配业务组织,配置业务系统的用户。
- 应用分组:支持会员用户根据实际业务需求,进行应用分组。
<table>
<tr>
<td><img src="./docs/images/app.png"/></td>
<td><img src="./docs/images/app-menu.png"/></td>
</tr>
</table>
### 身份引擎(Remi IDM)
瑞米统一身份引擎是一种集中化管理用户身份、认证、授权和审计信息的平台。它是现代企业IT架构中不可或缺的一部分,尤其是在多系统、多应用的环境下,其作用尤为显著。
- 公司管理:配置基准组织-机构(集团公司、分/子公司、办事处等),以树结构展现。
- 部门管理:配置基准组织-部门(部门、小组、团队等),以树结构展现。
- 用户管理:用户是系统操作者,该功能主要完成基准组织的用户配置。
- 业务组织:配置业务组织,如:部门、项目、团队等。
- 职位职级:配置系统用户所属担任职务。
<table>
<tr>
<td><img src="./docs/images/company.png"/></td>
<td><img src="./docs/images/dept.png"/></td>
</tr>
<tr>
<td><img src="./docs/images/user.png"/></td>
<td><img src="./docs/images/post.png"/></td>
</tr>
</table>
### 权限引擎(Remi PMS)
瑞米统一权限引擎是一种企业级解决方案,旨在通过提供一个集中的解决方案来管理组织内部的用户权限和访问控制,不仅提高了安全性,还简化了管理流程,增强了用户体验,并有助于满足合规要求。对于那些寻求提高数据安全性和管理效率的企业来说,瑞米统一权限管理平台是一个不可或缺的工具。
- 角色管理:定义和管理用户角色,角色代表了一组预定义的权限集合。
- 身份管理:基于瑞米身份引擎实现集中管理用户的身份信息,包括身份验证、身份更新等。
- 权限分配:根据用户的角色和职责,分配相应的权限,确保用户只能访问其被授权的资源。
- 菜单权限:完善的策略管理,如基于属性的ABAC或基于角色的RBAC。
- 数据权限:完善的权限控制,如数据行权限以及数据列权限配置和鉴权。
- 访问控制:实施细粒度的访问控制策略,确保只有经过验证和授权的用户才能访问特定资源。
- 审计监控:记录用户的访问行为,提供详细的审计日志,帮助组织监控权限使用情况并满足合规要求。
<table>
<tr>
<td><img src="./docs/images/role.png"/></td>
<td><img src="./docs/images/role-menu.png"/></td>
</tr>
<tr>
<td><img src="./docs/images/log-login.png"/></td>
<td><img src="./docs/images/log-operation.png"/></td>
</tr>
</table>
### 代码引擎(Remi LCE)
- 多数据库:支持数据库有MySQL,PostgreSQL,SQLServer,Oracle等。
- 数据库表:动态连接数据源、数据库,读取数据表信息。
- 代码生成: 内置Java、Vue、TS等,可自行扩展对其他语言的支持。
- 模板管理:支持基于Velocity的代码生成模板配置,内置Remi模板。
- 数据类型:支持数据类型在不同数据库下表现为不同数据库类型的方言。
- 分组管理:支持对模板、数据源等信息的自定义分组管理。
- 版本管理: 实现数据表的版本管理,可生成增量DDL脚本。
- 数据字典: 代码映射管理,实现数据字典与数据表字段的关联。
- ER关系图: 基于数据表可绘制ER关系图,也支持概念模型等抽像设计。
### 资源中心(Remi FRC)
- 上传下载:支持MinIO、S3、OSS、COS、七牛云等多种存储方式。
- 文件管理:支持类网盘的界面展示,支持文件自定义分组。
- 文件浏览:用户可以浏览存储在云端的文件和文件夹。
- 文件操作:支持文件的重命名、移动、复制、删除等操作。
- 文件分享:用户可以生成文件的分享链接,供他人访问。
- 文件搜索:支持按照文件类型、大小、上传时间等条件进行过滤搜索。
- 文件权限:设置文件的访问权限,如私有、公开、只读等。
- 版本控制:保存文件的不同版本,方便用户回溯历史版本。
- 数据加密:上传和下载过程中对文件进行加密,保护数据安全。
- 使用统计:提供文件使用情况的统计报表。分析用户行为,优化产品体验。
### 审计监控(Remi ALM)
- 在线用户:当前系统中活跃用户状态监控,支持批量强退。
- 审计监控:记录用户的访问行为,监控权限使用情况并满足合规要求。
- 登录日志:系统登录日志记录查询包含登录异常。
- 操作日志:系统正常操作日志记录和查询。
- 异常日志:系统异常信息日志记录和查询。
- 链路日志:基于traceId查询接口调用链路。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 缓存监控:监视Redis服务的运行模式、内存信息、客户端数量。
<table>
<tr>
<td><img src="./docs/images/role.png"/></td>
<td><img src="./docs/images/role-menu.png"/></td>
</tr>
<tr>
<td><img src="./docs/images/log-login.png"/></td>
<td><img src="./docs/images/log-operation.png"/></td>
</tr>
</table>
### 系统管理(Remi SYS)
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 基础表单:用于提交表单时使用,可创建表单和自定义字段。
- 导入导出:可以根据不同的应用场景进行数据迁移、备份、恢复。
- 布局设置:支持导航模式、系统主题、顶栏主题、菜单主题等设置。
- 邮件通知:支持邮件配置、模板分组、模板配置、表单关联等设置。
- 多语言支持:支持中英文界面切换、中英文字段描述、多语言异常提示。
## 反馈建议
如果您对我们的产品或服务有任何疑问或需要帮助,欢迎添加我们的微信客服号。我们会在第一时间为您解答。此外,我们的微信群是一个活跃的社区,您可以在那里与其他用户交流经验,分享心得,获取最新的产品信息和版本通知。
<table>
<tr>
<td><img src="./docs/images/dianjiu.jpg"/></td>
<td><img src="./docs/images/airemi.jpg"/></td>
<td><img src="./docs/images/yunshu.jpg"/></td>
</tr>
</table>
- 👉🏻 [自研 LCE 低代码引擎](https://lce.startdis.com)
## 快速开始
### 模块说明
~~~
startdis-boot
├── docs // 说明文档
└── sdt-comm // 公共模块
├── comm-auth // 权限控制
├── comm-core // 核心模块
├── comm-domain // 领域模型
├── comm-jdbc // 数据配置
├── comm-datascope // 数据权限
├── comm-datasource // 多数据源
├── comm-exception // 异常模块
├── comm-feign // 通信模块
├── comm-job // 任务模块
├── comm-minio // MinIo 文件存储
├── comm-s3 // S3 对象存储
├── comm-fastdfs // FastDFS文件存储
├── comm-activemq // ActiveMQ
├── comm-rabbitmq // RabbitMQ
├── comm-rocketmq // RocketMQ
├── comm-redis // 缓存服务
├── comm-utils // 工具类
├── comm-thread // 线程池
├── comm-safe // 安全控制
├── comm-saprfc // Sap Rfc
├── comm-web // Web
├── comm-webservice // WebService
├── comm-websocket // WebSocket
├── comm-netty // Netty
├── comm-security // 安全模块
├── comm-swagger // 系统接口
├── pom.xml // 公共依赖
└── sdt-iam // 身份引擎(统一身份管理)
└── sdt-bpm // 流程引擎(统一流程管理)
└── sdt-xpe // 插件引擎(插件拓展平台)
└── sdt-lce // 代码引擎(低代码平台)
~~~

View File

@@ -0,0 +1,101 @@
spring:
config:
activate:
on-profile: local
servlet:
multipart:
# 上传文件总的最大值
max-request-size: 100MB
# 单个文件的最大值
max-file-size: 100MB
datasource:
# mysql
url: jdbc:mysql://192.168.31.200:30636/dev-remi-boot?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: Remi@123
type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# mysql
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
redis:
database: 0
host: 192.168.31.200
password: Remi@123
port: 30210
jedis:
pool:
max-active: 8
max-idle: 8
min-idle: 0
timeout: 1000
# 异步线程配置
async:
executor:
thread:
# 核心线程数
corePoolSize: 10
# 最大线程数
maxPoolSize: 30
# 任务队列大小
queueCapacity: 3000
# 缓冲队列中线程的空闲时间
keepAliveSeconds: 300
# MinIO
minio:
#对象存储服务的URL
endpoint: http://192.168.31.200:30090
#账户
username: minioadmin
#密码
password: minioadmin
#存储桶
bucketName: dev-remi
# 拦截器
sql-intercept:
tenant:
deptTenant:
enable: true
companyTenant:
enable: true
anonUrlSet: /sso/login/ticket,/sso/login/other,/sso/login/local,/sso/logout,/sso/oauth2/accessToken,/sso/oauth2/refreshToken,/sso/oauth2/checkToken,/logRecord/add,/logRecord/pageLogin,/logRecord/pageOperate,/logRecord/pageException,/logRecord/get
field-fill:
createdByIntercept:
enable: true
updateByIntercept:
enable: true
createAtIntercept:
enable: true
updateAtIntercept:
enable: true
# 开启系统操作日志
remi-log:
record:
enabled: true
appName: remi-iam-web
pushUrl: http://192.168.31.18:1010/logRecord/add

View File

@@ -0,0 +1,81 @@
# 服务端口号
server:
port: 8080
# tomcat 配置
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数,默认为200
max-threads: 500
# Tomcat启动初始化的线程数,默认值25
min-spare-threads: 30
spring:
application:
name: remi-boot-web
profiles:
active: ${cfg.env}
# 循环依赖的问题
main:
allow-circular-references: true
# MVC默认的路径匹配策略为PATH_PATTERN_PARSER,需要修改为ANT_PATH_MATCHER 解决swagger兼容性问题
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
# mybatis-plus
mybatis-plus:
configuration:
#控制台打印完整带参数SQL语句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#mapper映射文件路径
mapper-locations: classpath*:/*-infra/src/main/resources/mapper/*.xml, classpath*:/mapper/**.xml
#pagehelper
pagehelper:
# helper-dialect: mysql
#分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect 属性来指定分页插件使用哪种方言。
auto-runtime-dialect: true
#分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。
reasonable: true
#支持通过Mapper接口参数传递page参数,默认值为false
support-methods-arguments: true
#默认值为 false ,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit =0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。
page-size-zero: true
#为了支持 startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值
params: count=countSql
# feign
feign:
okhttp:
enabled: true
hystrix:
enabled: true
sentinel:
enabled: true
client:
config:
default:
connectTimeout: 100000
readTimeout: 100000
# springdoc
springdoc:
group-configs:
- group: web
packages-to-scan: ai.remi.boot.web
- group: app
packages-to-scan: ai.remi.boot.app
# 定义日志输出级别
logging:
level:
com.startdis: debug
# spring 包日志输出级别
org.springframework: info
# alibaba 包日志输出级别
com.alibaba.cloud: info
# nacos 心跳 INFO 屏蔽
com.alibaba.nacos: off
# mybatis-plus
com.baomidou.mybatisplus: debug

View File

@@ -0,0 +1,106 @@
spring:
application:
name: remi-boot-web
config:
activate:
on-profile: dev
servlet:
multipart:
# 上传文件总的最大值
max-request-size: 100MB
# 单个文件的最大值
max-file-size: 100MB
datasource:
# mysql
url: jdbc:mysql://192.168.31.200:30336/remi-boot?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: Remi@123
type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# mysql
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
redis:
database: 0
host: 192.168.31.200
password: Remi@123
port: 30120
jedis:
pool:
max-active: 8
max-idle: 8
min-idle: 0
timeout: 1000
# 异步线程配置
async:
executor:
thread:
# 核心线程数
corePoolSize: 10
# 最大线程数
maxPoolSize: 30
# 任务队列大小
queueCapacity: 3000
# 缓冲队列中线程的空闲时间
keepAliveSeconds: 300
minio:
endpoint: http://192.168.31.200:30900
username: minioadmin
password: minioadmin
bucketName: remi
# 拦截器
sql-intercept:
tenant:
deptTenant:
enable: true
companyTenant:
enable: true
anonUrlSet: /sso/login/ticket,/sso/login/other,/sso/login/local,/sso/logout,/sso/oauth2/accessToken,/sso/oauth2/refreshToken,/sso/oauth2/checkToken,/logRecord/add,/logRecord/pageLogin,/logRecord/pageOperate,/logRecord/pageException,/logRecord/get
field-fill:
createdByIntercept:
enable: true
updateByIntercept:
enable: true
createAtIntercept:
enable: true
updateAtIntercept:
enable: true
# springdoc
springdoc:
group-configs:
- group: web
packages-to-scan: ai.remi.boot.web
- group: app
packages-to-scan: ai.remi.boot.app
# 开启系统操作日志
remi-log:
record:
enabled: true
appName: remi-sys-web
pushUrl: http://192.168.31.200:8080/logRecord/add

View File

@@ -0,0 +1,74 @@
# 服务端口号
server:
# tomcat 配置
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数,默认为200
max-threads: 500
# Tomcat启动初始化的线程数,默认值25
min-spare-threads: 30
spring:
# 循环依赖的问题
main:
allow-circular-references: true
# MVC默认的路径匹配策略为PATH_PATTERN_PARSER,需要修改为ANT_PATH_MATCHER 解决swagger兼容性问题
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
# mybatis-plus
mybatis-plus:
configuration:
#控制台打印完整带参数SQL语句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#mapper映射文件路径
mapper-locations: classpath*:/*-infra/src/main/resources/mapper/*.xml, classpath*:/mapper/**.xml
#pagehelper
pagehelper:
# helper-dialect: mysql
#分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。 你可以配置helperDialect 属性来指定分页插件使用哪种方言。
auto-runtime-dialect: true
#分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页。
reasonable: true
#支持通过Mapper接口参数传递page参数,默认值为false
support-methods-arguments: true
#默认值为 false ,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit =0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)。
page-size-zero: true
#为了支持 startPage(Object params) 方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值
params: count=countSql
# feign
feign:
okhttp:
enabled: true
hystrix:
enabled: true
sentinel:
enabled: true
client:
config:
default:
connectTimeout: 100000
readTimeout: 100000
# 定义日志输出级别
logging:
level:
com.startdis: debug
# spring 包日志输出级别
org.springframework: info
# alibaba 包日志输出级别
com.alibaba.cloud: info
# nacos 心跳 INFO 屏蔽
com.alibaba.nacos: off
# undertow
io.undertow: info
# mybatis-plus
com.baomidou.mybatisplus: debug
# 日志输出路径配置
logback:
logDir: D:\Logs\remi\cloud\${spring.application.name}\

View File

@@ -0,0 +1,106 @@
spring:
application:
name: remi-demo-web
config:
activate:
on-profile: dev
servlet:
multipart:
# 上传文件总的最大值
max-request-size: 100MB
# 单个文件的最大值
max-file-size: 100MB
datasource:
# mysql
url: jdbc:mysql://192.168.31.200:30336/remi-boot?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&nullCatalogMeansCurrent=true
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: Remi@123
type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# mysql
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
redis:
database: 0
host: 192.168.31.200
password: Remi@123
port: 30120
jedis:
pool:
max-active: 8
max-idle: 8
min-idle: 0
timeout: 1000
# 异步线程配置
async:
executor:
thread:
# 核心线程数
corePoolSize: 10
# 最大线程数
maxPoolSize: 30
# 任务队列大小
queueCapacity: 3000
# 缓冲队列中线程的空闲时间
keepAliveSeconds: 300
minio:
endpoint: http://192.168.31.200:30900
username: minioadmin
password: minioadmin
bucketName: remi
# 拦截器
sql-intercept:
tenant:
deptTenant:
enable: true
companyTenant:
enable: true
anonUrlSet: /sso/login/ticket,/sso/login/other,/sso/login/local,/sso/logout,/sso/oauth2/accessToken,/sso/oauth2/refreshToken,/sso/oauth2/checkToken,/logRecord/add,/logRecord/pageLogin,/logRecord/pageOperate,/logRecord/pageException,/logRecord/get
field-fill:
createdByIntercept:
enable: true
updateByIntercept:
enable: true
createAtIntercept:
enable: true
updateAtIntercept:
enable: true
# springdoc
springdoc:
group-configs:
- group: web
packages-to-scan: ai.remi.demo.web
- group: app
packages-to-scan: ai.remi.demo.app
# 开启系统操作日志
remi-log:
record:
enabled: true
appName: remi-sys-web
pushUrl: http://192.168.31.200:8080/logRecord/add

BIN
docs/images/ai-remi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

BIN
docs/images/ai.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

BIN
docs/images/airemi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/images/app-menu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

BIN
docs/images/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

BIN
docs/images/company.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

BIN
docs/images/dept.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

BIN
docs/images/dianjiu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
docs/images/home.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

BIN
docs/images/log-login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

BIN
docs/images/login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

BIN
docs/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
docs/images/post.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

BIN
docs/images/role-menu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 KiB

BIN
docs/images/role.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

BIN
docs/images/step.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
docs/images/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

BIN
docs/images/work.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

BIN
docs/images/yunshu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

File diff suppressed because one or more lines are too long

227
pom.xml Normal file
View File

@@ -0,0 +1,227 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ai.remi.top.cloud</groupId>
<artifactId>remi-cloud</artifactId>
<version>3.1.0</version>
<packaging>pom</packaging>
<name>remi-cloud</name>
<description>基于AI的企业级快速开发平台</description>
<developers>
<developer>
<name>dianjiu</name>
<email>dianjiuxyz@gmail.com</email>
</developer>
</developers>
<properties>
<!--remi-->
<remi-cloud.version>3.1.0</remi-cloud.version>
<remi-comm.version>3.1.0</remi-comm.version>
<remi-boot.version>3.1.0</remi-boot.version>
<remi-demo.version>3.1.0</remi-demo.version>
<!--jdk-->
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<!--UFT-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--Spring-->
<spring-boot.version>2.7.18</spring-boot.version>
<spring-cloud.version>2021.0.9</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.6.0</spring-cloud-alibaba.version>
<!--commons-->
<commons-text.version>1.12.0</commons-text.version>
<commons-io.version>2.16.1</commons-io.version>
<commons-lang3.version>3.17.0</commons-lang3.version>
<commons-codec.version>1.17.1</commons-codec.version>
<commons-logging.version>1.3.4</commons-logging.version>
<commons-collections.version>3.2.2</commons-collections.version>
<commons-net.version>3.11.1</commons-net.version>
<commons-fileupload.version>1.5</commons-fileupload.version>
<!--hutool-->
<hutool.version>5.8.4</hutool.version>
<!--storage-->
<tika.version>2.7.0</tika.version>
<qiniu.version>7.13.1</qiniu.version>
<aliyun-sdk-oss.version>3.10.2</aliyun-sdk-oss.version>
<minio.version>8.5.12</minio.version>
<awssdk.version>2.26.3</awssdk.version>
<cos_api.version>5.6.213</cos_api.version>
<!--easyexcel-->
<easyexcel.version>4.0.2</easyexcel.version>
<!--xxl-job-->
<xxl-job.version>2.4.1</xxl-job.version>
<!--user-agent-->
<device.version>1.0.10</device.version>
<bitwalker.version>1.21</bitwalker.version>
<!--xml-dom-->
<dom4j.version>2.1.3</dom4j.version>
<!--validator-->
<commons-validator.version>1.9.0</commons-validator.version>
<hibernate-validator.version>6.2.5.Final</hibernate-validator.version>
<!--ip2region-->
<ip2region.version>2.7.0</ip2region.version>
<!--json-->
<gson.version>2.9.0</gson.version>
<fastjson.version>2.0.6</fastjson.version>
<jackson.version>2.13.3</jackson.version>
<!--java-extend-->
<guava.version>33.3.0-jre</guava.version>
<javax.version>4.0.1</javax.version>
<jaxb-api.version>2.3.1</jaxb-api.version>
<cglib.version>3.3.0</cglib.version>
<!--knife4j-->
<knife4j.version>4.5.0</knife4j.version>
<springdoc.version>2.6.0</springdoc.version>
<!--mapstruct-->
<lombok.version>1.18.34</lombok.version>
<mapstruct.version>1.5.2.Final</mapstruct.version>
<lombok-mapstruct.version>0.2.0</lombok-mapstruct.version>
<!--jdbc-->
<druid.version>1.2.9</druid.version>
<mybatis.version>2.2.2</mybatis.version>
<mybatis-plus.version>3.5.2</mybatis-plus.version>
<!--jdbc rom-->
<mysql.version>8.0.33</mysql.version>
<ojdbc.version>19.7.0.0</ojdbc.version>
<mssql-jdbc.version>7.4.1.jre8</mssql-jdbc.version>
<db2-jdbc.version>11.5.0.0</db2-jdbc.version>
<postgresql.version>42.6.0</postgresql.version>
<h2.db.version>2.2.224</h2.db.version>
<mongodb-driver-sync.version>4.10.2</mongodb-driver-sync.version>
<!--http-->
<httpclient.version>4.5.13</httpclient.version>
<okhttp3.version>4.12.0</okhttp3.version>
<!--velocity-->
<velocity.version>1.7</velocity.version>
<!--logger-->
<trace.version>8.13.0</trace.version>
<slf4j.version>1.7.32</slf4j.version>
<logback.version>1.3.14</logback.version>
</properties>
<modules>
<!--基础服务-->
<module>remi-comm</module>
<module>remi-boot</module>
<module>remi-demo</module>
<module>remi-nacos</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- SpringBoot 依赖配置 -->
<dependency>
<artifactId>spring-boot-dependencies</artifactId>
<groupId>org.springframework.boot</groupId>
<scope>import</scope>
<type>pom</type>
<version>${spring-boot.version}</version>
</dependency>
<!-- SpringCloud 微服务 -->
<dependency>
<artifactId>spring-cloud-dependencies</artifactId>
<groupId>org.springframework.cloud</groupId>
<scope>import</scope>
<type>pom</type>
<version>${spring-cloud.version}</version>
</dependency>
<!-- SpringCloud Alibaba 微服务 -->
<dependency>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<groupId>com.alibaba.cloud</groupId>
<scope>import</scope>
<type>pom</type>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!--lombok-->
<dependency>
<artifactId>lombok</artifactId>
<groupId>org.projectlombok</groupId>
<version>${lombok.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct.version}</version>
</dependency>
<!--mapstruct-->
<dependency>
<artifactId>mapstruct</artifactId>
<groupId>org.mapstruct</groupId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<artifactId>mapstruct-processor</artifactId>
<groupId>org.mapstruct</groupId>
<version>${mapstruct.version}</version>
</dependency>
<!--slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!--其他公共依赖结束-->
</dependencies>
</dependencyManagement>
<!-- 打包上传到私服, 需要和配置文件中的server节点配合使用 -->
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>release</name>
<url>https://remi.njydsz.com/repository/remi-top-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>snapshot</name>
<url>https://remi.njydsz.com/repository/remi-top-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>public</id>
<name>remi nexus</name>
<url>https://remi.njydsz.com/repository/remi-top</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>remi nexus</name>
<url>https://remi.njydsz.com/repository/remi-top</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

229
remi-boot/pom.xml Normal file
View File

@@ -0,0 +1,229 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot</artifactId>
<name>remi-boot</name>
<packaging>pom</packaging>
<description>瑞米平台-单体聚合服务</description>
<parent>
<groupId>ai.remi.top.cloud</groupId>
<artifactId>remi-cloud</artifactId>
<version>3.1.0</version>
</parent>
<properties>
<!--jdk-->
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<!--UFT-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<modules>
<module>remi-boot-domain</module>
<module>remi-boot-infra</module>
<module>remi-boot-server</module>
<module>remi-boot-job</module>
<module>remi-boot-app</module>
<module>remi-boot-api</module>
<module>remi-boot-web</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- SpringBoot 依赖配置 -->
<dependency>
<artifactId>spring-boot-dependencies</artifactId>
<groupId>org.springframework.boot</groupId>
<scope>import</scope>
<type>pom</type>
<version>${spring-boot.version}</version>
</dependency>
<!-- SpringCloud 微服务 -->
<dependency>
<artifactId>spring-cloud-dependencies</artifactId>
<groupId>org.springframework.cloud</groupId>
<scope>import</scope>
<type>pom</type>
<version>${spring-cloud.version}</version>
</dependency>
<!-- SpringCloud Alibaba 微服务 -->
<dependency>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<groupId>com.alibaba.cloud</groupId>
<scope>import</scope>
<type>pom</type>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<!--内部服务依赖开始-->
<!--remi-comm-->
<dependency>
<artifactId>remi-comm</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-core</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-redis</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-jdbc</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-domain</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-exception</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-feign</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-job</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-log</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-swagger</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-thread</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-util</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-auth</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-safe</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<dependency>
<artifactId>remi-comm-web</artifactId>
<groupId>ai.remi.top.comm</groupId>
<version>${remi-comm.version}</version>
</dependency>
<!--remi-boot-->
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-domain</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-infra</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-server</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-job</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-api</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-app</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-web</artifactId>
<version>${remi-boot.version}</version>
</dependency>
<!--内部服务依赖结束-->
</dependencies>
</dependencyManagement>
<!-- 打包上传到私服, 需要和配置文件中的server节点配合使用 -->
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>release</name>
<url>https://remi.njydsz.com/repository/remi-top-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>snapshot</name>
<url>https://remi.njydsz.com/repository/remi-top-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>public</id>
<name>remi nexus</name>
<url>https://remi.njydsz.com/repository/remi-top</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>remi nexus</name>
<url>https://remi.njydsz.com/repository/remi-top</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</project>

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>remi-boot-api</artifactId>
<name>remi-boot-api</name>
<description>remi-boot-api</description>
<parent>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot</artifactId>
<version>3.1.0</version>
</parent>
<dependencies>
<!--remi-comm-feign-->
<dependency>
<groupId>ai.remi.top.comm</groupId>
<artifactId>remi-comm-feign</artifactId>
</dependency>
<!--remi-boot-domain-->
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-domain</artifactId>
</dependency>
<!--servlet-api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,31 @@
package ai.remi.boot.api.client;
import ai.remi.comm.core.result.ResultBean;
import ai.remi.comm.feign.aspect.FeignAutoConfiguration;
import ai.remi.boot.api.factory.IamClientFactory;
import ai.remi.boot.domain.dto.post.LogRecordPostDTO;
import ai.remi.boot.domain.vo.ConfigVO;
import io.swagger.v3.oas.annotations.Operation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(value = "remi-boot-web", configuration = FeignAutoConfiguration.class, fallbackFactory = IamClientFactory.class)
public interface IamClientApi {
@Operation(summary = "保存日志")
@PostMapping("/logRecord/add")
ResultBean<Boolean> addLogRecord(@RequestBody @Validated LogRecordPostDTO logRecordDTO);
@Operation(summary = "查询用户全局配置")
@PostMapping(value = "/config/getUserConfigs")
ResultBean<List<ConfigVO>> getUserConfigs();
@Operation(summary = "查询应用全局配置")
@PostMapping(value = "/config/getAppConfigs")
ResultBean<List<ConfigVO>> getAppConfigs(@RequestParam("appId") String appId, @RequestParam("confType") Integer confType);
}

View File

@@ -0,0 +1,18 @@
package ai.remi.boot.api.factory;
import ai.remi.boot.api.client.IamClientApi;
import ai.remi.boot.api.fallback.IamClientFallback;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
@Component
public class IamClientFactory implements FallbackFactory<IamClientApi> {
@Override
public IamClientApi create(Throwable cause) {
IamClientFallback fallback = new IamClientFallback();
fallback.setCause(cause);
return fallback;
}
}

View File

@@ -0,0 +1,35 @@
package ai.remi.boot.api.fallback;
import ai.remi.comm.core.result.ResultBean;
import ai.remi.boot.api.client.IamClientApi;
import ai.remi.boot.domain.dto.post.LogRecordPostDTO;
import ai.remi.boot.domain.vo.ConfigVO;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
@Slf4j
public class IamClientFallback implements IamClientApi {
@Setter
private Throwable cause;
@Override
public ResultBean<Boolean> addLogRecord(LogRecordPostDTO logRecordDTO) {
log.error("addLogRecord = {}", cause.getMessage());
return null;
}
@Override
public ResultBean<List<ConfigVO>> getUserConfigs() {
log.error("getUserConfigs = {}", cause.getMessage());
return null;
}
@Override
public ResultBean<List<ConfigVO>> getAppConfigs(String appId, Integer confType) {
log.error("getAppConfigs = {}", cause.getMessage());
return null;
}
}

View File

@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>remi-boot-app</artifactId>
<name>remi-boot-app</name>
<description>remi-boot-app</description>
<parent>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot</artifactId>
<version>3.1.0</version>
</parent>
<dependencies>
<!--spring-boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring-cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!--Nacos-注册中心-->
<!--<dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!--</dependency>-->
<!--Nacos-配置中心-->
<!--<dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
<!--</dependency>-->
<!--健康监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--防刷限流-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>-->
<!-- </dependency>-->
<!--remi-comm-feign-->
<dependency>
<groupId>ai.remi.top.comm</groupId>
<artifactId>remi-comm-feign</artifactId>
</dependency>
<!--引入内部模块-->
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-job</artifactId>
</dependency>
<dependency>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot-server</artifactId>
</dependency>
<!--slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!--<resources>-->
<!-- <resource>-->
<!-- <directory>src/main/java</directory>-->
<!-- <includes>-->
<!-- <include>**/*.xml</include>-->
<!-- <include>**/*.properties</include>-->
<!-- <include>**/*.yml</include>-->
<!-- </includes>-->
<!-- </resource>-->
<!-- <resource>-->
<!-- <directory>src/main/resources</directory>-->
<!-- </resource>-->
<!--</resources>-->
</plugins>
</build>
</project>

View File

@@ -0,0 +1,29 @@
package ai.remi.boot.app;
import ai.remi.comm.feign.annotation.EnableRemiFeignClients;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.EnableMBeanExport;
import org.springframework.jmx.support.RegistrationPolicy;
import org.springframework.transaction.annotation.EnableTransactionManagement;
//@Enablestartdistem
//@EnableLogRecord
@EnableDiscoveryClient
@EnableRemiFeignClients
@EnableTransactionManagement
@SpringBootApplication(scanBasePackages = "ai.remi")
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
System.out.println("(♥◠‿◠)ノ゙ Remi IAM App 启动成功 ლ(´ڡ`ლ)゙ ");
}
}

View File

@@ -0,0 +1,45 @@
# 服务端口号
server:
port: 12801
spring:
application:
name: remi-boot-app
profiles:
active: local
cloud:
# nacos
nacos:
# 注册中心
username: nacos
password: nacos
discovery:
# 配置中心的地址
server-addr: ${NACOS_HOST:192.168.1.31}:${NACOS_PORT:8848}
#命名空间
namespace: ${spring.profiles.active:dev}
# 配置文件的环境
group: ${SERVICE_DISCOVERY_GROUP_NAME:dev}
# 配置中心
config:
# 配置中心的地址
server-addr: ${spring.cloud.nacos.discovery.server-addr}
#命名空间
namespace: ${spring.cloud.nacos.discovery.namespace}
# 配置文件prefix
prefix: ${spring.application.name}
# 配置文件的环境
group: ${spring.cloud.nacos.discovery.group}
# 配置文件的格式
file-extension: yaml
# 配置的编码
encode: UTF-8
# 是否开启监听和自动刷新
refresh-enabled: true
# 共享配置
shared-configs:
# Data Id 的默认完整格式为: ${prefix}-${spring.profile.active}.${file-extension}。
- dataId: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
group: ${spring.cloud.nacos.discovery.group}
#是否自动刷新
refresh: true

View File

@@ -0,0 +1,24 @@
# Docker image for springboot application
# VERSION 0.0.1
# Author: DianJiu
# 指定基础镜像,这是分阶段构建的前期阶段
FROM harbor.njydsz.com/library/jdk:17 as builder
# 维护者
MAINTAINER DianJiu <dianjiuxyz@gmail.com>
#VOLUME:挂载目录
VOLUME /temp
#ADD 将app.jar文件将拷贝到容器中,默认拷贝到根路径下
#也可以直接写成ADD app.jar /app.jar 或者 ADD app.jar /
ADD startdistem-web-1.0.0.jar startdistem-web.jar
#修改app.jar这个文件的访问时间和修改时间为当前时间,而不会修改文件的内容。
RUN bash -c "touch /startdistem-web.jar"
#ENTRYPOINT 应用启动命令 参数设定
#由于tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现,导致启动过程很慢
#通过-Djava.security.egd=file:/dev/./urandom参数可以加快随机数产生过程
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/startdistem-web.jar"]
#EXPOSE 容器暴露端口
EXPOSE 18080

View File

@@ -0,0 +1,5 @@
```shell
sh ./docker_deploy.sh
docker logs -f startdistem-web
```

View File

@@ -0,0 +1,7 @@
docker stop startdistem-web
docker rm -f startdistem-web
docker rmi startdistem-web
docker build -t startdistem-web .
docker images
docker run --restart=always -t -dit -p 18080:18080 -e TZ="Asia/Shanghai" --name startdistem-web startdistem-web
docker ps

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--application.yml 传递参数,不能使用logback 自带的<property>标签 -->
<springProperty scope="context" name="appName" source="spring.application.name"/>
<springProperty scope="context" name="logDir" source="logback.logDir"/>
<springProperty scope="context" name="fileType" source="logback.fileType"/>
<!-- 控制台日志输出格式 -->
<!-- 日期 [线程] [class类]-[日志级别] log内容 -->
<property name="LOG_PATTERN_CONSOLE" value="%blue(%d{yyyy-MM-dd HH:mm:ss,SSS}) [%cyan(%t)] [%yellow(%c)]-[%highlight(%p)], %m%n" />
<!-- 文件日志输出格式 -->
<property name="LOG_PATTERN_FILE" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} --> %msg%n" />
<!--- 设置控制台日志 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN_CONSOLE}</pattern>
</encoder>
</appender>
<!-- 设置日志文件 -->
<appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<!-- 总文件日志 -->
<file>${logDir}/${appName}.${fileType}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天的文件日志 -->
<fileNamePattern>${logDir}/${appName}-%d{yyyy-MM-dd}.${fileType}</fileNamePattern>
<!-- 日志文件保存7天,超过7天的自动删除 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 设置日志级别,及需要记录日志的类 -->
<root level="INFO">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileLog" />
</root>
</configuration>

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>remi-boot-domain</artifactId>
<name>remi-boot-domain</name>
<description>remi-boot-domain</description>
<parent>
<groupId>ai.remi.top.boot</groupId>
<artifactId>remi-boot</artifactId>
<version>3.1.0</version>
</parent>
<dependencies>
<!--remi-comm-domain-->
<dependency>
<groupId>ai.remi.top.comm</groupId>
<artifactId>remi-comm-domain</artifactId>
</dependency>
<!--remi-comm-swagger-->
<dependency>
<groupId>ai.remi.top.comm</groupId>
<artifactId>remi-comm-swagger</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Maven 编译插件,提供给 MapStruct 使用 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<!-- MapStruct 注解处理器 -->
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<!-- Lombok 注解处理器 -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<!-- MapStruct 和 Lombok 注解绑定处理器 -->
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>${lombok-mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,8 @@
package ai.remi.boot.domain.constant;
/**
* CAS (Central Authentication Service)
* CAS方式-单点登录常量
*/
public class Cas3Constant {
}

View File

@@ -0,0 +1,8 @@
package ai.remi.boot.domain.constant;
/**
* JWT (Json web token)
* JWT方式-单点登录常量
*/
public class JwtConstant {
}

View File

@@ -0,0 +1,72 @@
package ai.remi.boot.domain.constant;
/**
* Oauth2 单点登录常量
* Oauth2方式-单点登录常量
*/
public class Oauth2Constant {
/**
* 授权方式
*/
public static final String AUTH_TYPE = "authType";
/**
* 应用唯一标识
*/
public static final String APP_KEY = "appKey";
/**
* 应用密钥
*/
public static final String APP_SECRET = "appSecret";
/**
* 刷新token
*/
public static final String REFRESH_TOKEN = "refreshToken";
/**
* 刷新token
*/
public static final String ACCESS_TOKEN = "accessToken";
/**
* 授权码(授权码模式)
*/
public static final String AUTH_CODE = "authCode";
/**
* 登录前的客户端地址
*/
public static final String REDIRECT_URL = "redirectUrl";
/**
* client端的状态值
*/
public static final String CLIENT_STATE = "state";
/**
* client端的状态值
*/
public static final String CLIENT_TICKET = "ticket";
/**
* 获取authCode地址
*/
public static final String AUTH_CODE_PATH = SsoConstant.AUTH_PATH + "/authCode";
/**
* 获取accessToken地址
*/
public static final String ACCESS_TOKEN_PATH = SsoConstant.AUTH_PATH + "/accessToken";
/**
* 刷新refreshToken地址
*/
public static final String REFRESH_TOKEN_PATH = SsoConstant.AUTH_PATH + "/refreshToken";
/**
* 校验accessToken地址
*/
public static final String CHECK_TOKEN_PATH = SsoConstant.AUTH_PATH + "/checkToken";
}

View File

@@ -0,0 +1,4 @@
package ai.remi.boot.domain.constant;
public class OidcConstant {
}

View File

@@ -0,0 +1,8 @@
package ai.remi.boot.domain.constant;
/**
* CAS (Central Authentication Service)
* CAS方式-单点登录常量
*/
public class Saml2Constant {
}

View File

@@ -0,0 +1,31 @@
package ai.remi.boot.domain.constant;
/**
* 单点登录基础常量
*/
public class SsoConstant {
/**
* 服务端登录路径
*/
public static final String LOGIN_PATH = "/sso/login";
/**
* 服务端退出路径
*/
public static final String LOGOUT_PATH = "/sso/logout";
/**
* 认证路径
*/
public static final String AUTH_PATH = "/sso/oauth2";
/**
* 服务端回调客户端地址参数名称
*/
public static final String REDIRECT_URL = "redirectUrl";
/**
* 服务端单点退出回调客户端退出参数名称
*/
public static final String LOGOUT_PARAMETER_NAME = "logoutRequest";
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.AccessTokenPostDTO;
import ai.remi.boot.domain.dto.put.AccessTokenPutDTO;
import ai.remi.boot.domain.entity.AccessToken;
import ai.remi.boot.domain.query.AccessTokenQuery;
import ai.remi.boot.domain.vo.AccessTokenVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 鉴权令牌表 AccessTokenConverter转换接口
*/
@Mapper
public interface AccessTokenConverter {
AccessTokenConverter INSTANT = Mappers.getMapper(AccessTokenConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AccessToken postDtoToEntity(AccessTokenPostDTO accessTokenDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AccessToken putDtoToEntity(AccessTokenPutDTO accessTokenDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AccessToken queryToEntity(AccessTokenQuery accessTokenQuery);
AccessTokenVO entityToVO(AccessToken accessToken);
}

View File

@@ -0,0 +1,55 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.AppPostDTO;
import ai.remi.boot.domain.dto.put.AppPutDTO;
import ai.remi.boot.domain.entity.App;
import ai.remi.boot.domain.query.AppQuery;
import ai.remi.boot.domain.vo.AppVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用表Application AppConverter转换接口
*/
@Mapper
public interface AppConverter {
AppConverter INSTANT = Mappers.getMapper(AppConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
App postDtoToEntity(AppPostDTO appDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
App putDtoToEntity(AppPutDTO appDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
App queryToEntity(AppQuery appQuery);
AppVO entityToVO(App app);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.AppGroupPostDTO;
import ai.remi.boot.domain.dto.put.AppGroupPutDTO;
import ai.remi.boot.domain.entity.AppGroup;
import ai.remi.boot.domain.query.AppGroupQuery;
import ai.remi.boot.domain.vo.AppGroupVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用组织 AppGroupConverter转换接口
*/
@Mapper
public interface AppGroupConverter {
AppGroupConverter INSTANT = Mappers.getMapper(AppGroupConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppGroup postDtoToEntity(AppGroupPostDTO appGroupDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppGroup putDtoToEntity(AppGroupPutDTO appGroupDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppGroup queryToEntity(AppGroupQuery appGroupQuery);
AppGroupVO entityToVO(AppGroup appGroup);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.AppMenuPostDTO;
import ai.remi.boot.domain.dto.put.AppMenuPutDTO;
import ai.remi.boot.domain.entity.AppMenu;
import ai.remi.boot.domain.query.AppMenuQuery;
import ai.remi.boot.domain.vo.AppMenuVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用菜单表 AppMenuConverter转换接口
*/
@Mapper
public interface AppMenuConverter {
AppMenuConverter INSTANT = Mappers.getMapper(AppMenuConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppMenu postDtoToEntity(AppMenuPostDTO appMenuDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppMenu putDtoToEntity(AppMenuPutDTO appMenuDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppMenu queryToEntity(AppMenuQuery appMenuQuery);
AppMenuVO entityToVO(AppMenu appMenu);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.AppPublishPostDTO;
import ai.remi.boot.domain.dto.put.AppPublishPutDTO;
import ai.remi.boot.domain.entity.AppPublish;
import ai.remi.boot.domain.query.AppPublishQuery;
import ai.remi.boot.domain.vo.AppPublishVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用发布表 AppPublishConverter转换接口
*/
@Mapper
public interface AppPublishConverter {
AppPublishConverter INSTANT = Mappers.getMapper(AppPublishConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppPublish postDtoToEntity(AppPublishPostDTO appPublishDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppPublish putDtoToEntity(AppPublishPutDTO appPublishDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
AppPublish queryToEntity(AppPublishQuery appPublishQuery);
AppPublishVO entityToVO(AppPublish appPublish);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.AreaPostDTO;
import ai.remi.boot.domain.dto.put.AreaPutDTO;
import ai.remi.boot.domain.entity.Area;
import ai.remi.boot.domain.query.AreaQuery;
import ai.remi.boot.domain.vo.AreaVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 省市县表 AreaConverter转换接口
*/
@Mapper
public interface AreaConverter {
AreaConverter INSTANT = Mappers.getMapper(AreaConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Area postDtoToEntity(AreaPostDTO areaDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Area putDtoToEntity(AreaPutDTO areaDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Area queryToEntity(AreaQuery areaQuery);
AreaVO entityToVO(Area area);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.BucketPostDTO;
import ai.remi.boot.domain.dto.put.BucketPutDTO;
import ai.remi.boot.domain.entity.Bucket;
import ai.remi.boot.domain.query.BucketQuery;
import ai.remi.boot.domain.vo.BucketVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 存储桶管理 BucketConverter转换接口
*/
@Mapper
public interface BucketConverter {
BucketConverter INSTANT = Mappers.getMapper(BucketConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Bucket postDtoToEntity(BucketPostDTO bucketDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Bucket putDtoToEntity(BucketPutDTO bucketDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Bucket queryToEntity(BucketQuery bucketQuery);
BucketVO entityToVO(Bucket bucket);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.CompanyPostDTO;
import ai.remi.boot.domain.dto.put.CompanyPutDTO;
import ai.remi.boot.domain.entity.Company;
import ai.remi.boot.domain.query.CompanyQuery;
import ai.remi.boot.domain.vo.CompanyVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 公司表 CompanyConverter转换接口
*/
@Mapper
public interface CompanyConverter {
CompanyConverter INSTANT = Mappers.getMapper(CompanyConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Company postDtoToEntity(CompanyPostDTO companyDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Company putDtoToEntity(CompanyPutDTO companyDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Company queryToEntity(CompanyQuery companyQuery);
CompanyVO entityToVO(Company company);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.CompanyDeptPostDTO;
import ai.remi.boot.domain.dto.put.CompanyDeptPutDTO;
import ai.remi.boot.domain.entity.CompanyDept;
import ai.remi.boot.domain.query.CompanyDeptQuery;
import ai.remi.boot.domain.vo.CompanyDeptVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 公司部门表 CompanyDeptConverter转换接口
*/
@Mapper
public interface CompanyDeptConverter {
CompanyDeptConverter INSTANT = Mappers.getMapper(CompanyDeptConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
CompanyDept postDtoToEntity(CompanyDeptPostDTO companyDeptDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
CompanyDept putDtoToEntity(CompanyDeptPutDTO companyDeptDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
CompanyDept queryToEntity(CompanyDeptQuery companyDeptQuery);
CompanyDeptVO entityToVO(CompanyDept companyDept);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.ConfigPostDTO;
import ai.remi.boot.domain.dto.put.ConfigPutDTO;
import ai.remi.boot.domain.entity.Config;
import ai.remi.boot.domain.query.ConfigQuery;
import ai.remi.boot.domain.vo.ConfigVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 全局配置 ConfigConverter转换接口
*/
@Mapper
public interface ConfigConverter {
ConfigConverter INSTANT = Mappers.getMapper(ConfigConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Config postDtoToEntity(ConfigPostDTO configDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Config putDtoToEntity(ConfigPutDTO configDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Config queryToEntity(ConfigQuery configQuery);
ConfigVO entityToVO(Config config);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.CordRolePostDTO;
import ai.remi.boot.domain.dto.put.CordRolePutDTO;
import ai.remi.boot.domain.entity.CordRole;
import ai.remi.boot.domain.query.CordRoleQuery;
import ai.remi.boot.domain.vo.CordRoleVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 组织角色表 CordRoleConverter转换接口
*/
@Mapper
public interface CordRoleConverter {
CordRoleConverter INSTANT = Mappers.getMapper(CordRoleConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
CordRole postDtoToEntity(CordRolePostDTO deptRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
CordRole putDtoToEntity(CordRolePutDTO deptRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
CordRole queryToEntity(CordRoleQuery deptRoleQuery);
CordRoleVO entityToVO(CordRole deptRole);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.DeptPostDTO;
import ai.remi.boot.domain.dto.put.DeptPutDTO;
import ai.remi.boot.domain.entity.Dept;
import ai.remi.boot.domain.query.DeptQuery;
import ai.remi.boot.domain.vo.DeptVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 部门表 DeptConverter转换接口
*/
@Mapper
public interface DeptConverter {
DeptConverter INSTANT = Mappers.getMapper(DeptConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Dept postDtoToEntity(DeptPostDTO deptDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Dept putDtoToEntity(DeptPutDTO deptDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Dept queryToEntity(DeptQuery deptQuery);
DeptVO entityToVO(Dept dept);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.DeptUserPostDTO;
import ai.remi.boot.domain.dto.put.DeptUserPutDTO;
import ai.remi.boot.domain.entity.DeptUser;
import ai.remi.boot.domain.query.DeptUserQuery;
import ai.remi.boot.domain.vo.DeptUserVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 部门用户表 DeptUserConverter转换接口
*/
@Mapper
public interface DeptUserConverter {
DeptUserConverter INSTANT = Mappers.getMapper(DeptUserConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
DeptUser postDtoToEntity(DeptUserPostDTO deptUserDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
DeptUser putDtoToEntity(DeptUserPutDTO deptUserDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
DeptUser queryToEntity(DeptUserQuery deptUserQuery);
DeptUserVO entityToVO(DeptUser deptUser);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.DictPostDTO;
import ai.remi.boot.domain.dto.put.DictPutDTO;
import ai.remi.boot.domain.entity.Dict;
import ai.remi.boot.domain.query.DictQuery;
import ai.remi.boot.domain.vo.DictVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 字典主表 DictConverter转换接口
*/
@Mapper
public interface DictConverter {
DictConverter INSTANT = Mappers.getMapper(DictConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Dict postDtoToEntity(DictPostDTO dictDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Dict putDtoToEntity(DictPutDTO dictDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Dict queryToEntity(DictQuery dictQuery);
DictVO entityToVO(Dict dict);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.DictItemPostDTO;
import ai.remi.boot.domain.dto.put.DictItemPutDTO;
import ai.remi.boot.domain.entity.DictItem;
import ai.remi.boot.domain.query.DictItemQuery;
import ai.remi.boot.domain.vo.DictItemVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 字典项表 DictItemConverter转换接口
*/
@Mapper
public interface DictItemConverter {
DictItemConverter INSTANT = Mappers.getMapper(DictItemConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
DictItem postDtoToEntity(DictItemPostDTO dictItemDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
DictItem putDtoToEntity(DictItemPutDTO dictItemDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
DictItem queryToEntity(DictItemQuery dictItemQuery);
DictItemVO entityToVO(DictItem dictItem);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.FilePostDTO;
import ai.remi.boot.domain.dto.put.FilePutDTO;
import ai.remi.boot.domain.entity.File;
import ai.remi.boot.domain.query.FileQuery;
import ai.remi.boot.domain.vo.FileVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 文件管理 FileConverter转换接口
*/
@Mapper
public interface FileConverter {
FileConverter INSTANT = Mappers.getMapper(FileConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
File postDtoToEntity(FilePostDTO fileDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
File putDtoToEntity(FilePutDTO fileDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
File queryToEntity(FileQuery fileQuery);
FileVO entityToVO(File file);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.GradePostDTO;
import ai.remi.boot.domain.dto.put.GradePutDTO;
import ai.remi.boot.domain.entity.Grade;
import ai.remi.boot.domain.query.GradeQuery;
import ai.remi.boot.domain.vo.GradeVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 职系表 GradeConverter转换接口
*/
@Mapper
public interface GradeConverter {
GradeConverter INSTANT = Mappers.getMapper(GradeConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Grade postDtoToEntity(GradePostDTO gradeDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Grade putDtoToEntity(GradePutDTO gradeDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Grade queryToEntity(GradeQuery gradeQuery);
GradeVO entityToVO(Grade grade);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.GroupPostDTO;
import ai.remi.boot.domain.dto.put.GroupPutDTO;
import ai.remi.boot.domain.entity.Group;
import ai.remi.boot.domain.query.GroupQuery;
import ai.remi.boot.domain.vo.GroupVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 业务组织 GroupConverter转换接口
*/
@Mapper
public interface GroupConverter {
GroupConverter INSTANT = Mappers.getMapper(GroupConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Group postDtoToEntity(GroupPostDTO groupDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Group putDtoToEntity(GroupPutDTO groupDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Group queryToEntity(GroupQuery groupQuery);
GroupVO entityToVO(Group group);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.GroupRolePostDTO;
import ai.remi.boot.domain.dto.put.GroupRolePutDTO;
import ai.remi.boot.domain.entity.GroupRole;
import ai.remi.boot.domain.query.GroupRoleQuery;
import ai.remi.boot.domain.vo.GroupRoleVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 用户组角色表 GroupRoleConverter转换接口
*/
@Mapper
public interface GroupRoleConverter {
GroupRoleConverter INSTANT = Mappers.getMapper(GroupRoleConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
GroupRole postDtoToEntity(GroupRolePostDTO groupRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
GroupRole putDtoToEntity(GroupRolePutDTO groupRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
GroupRole queryToEntity(GroupRoleQuery groupRoleQuery);
GroupRoleVO entityToVO(GroupRole groupRole);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.GroupUserPostDTO;
import ai.remi.boot.domain.dto.put.GroupUserPutDTO;
import ai.remi.boot.domain.entity.GroupUser;
import ai.remi.boot.domain.query.GroupUserQuery;
import ai.remi.boot.domain.vo.GroupUserVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 组织用户 GroupUserConverter转换接口
*/
@Mapper
public interface GroupUserConverter {
GroupUserConverter INSTANT = Mappers.getMapper(GroupUserConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
GroupUser postDtoToEntity(GroupUserPostDTO groupUserDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
GroupUser putDtoToEntity(GroupUserPutDTO groupUserDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
GroupUser queryToEntity(GroupUserQuery groupUserQuery);
GroupUserVO entityToVO(GroupUser groupUser);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.LogRecordPostDTO;
import ai.remi.boot.domain.dto.put.LogRecordPutDTO;
import ai.remi.boot.domain.entity.LogRecord;
import ai.remi.boot.domain.query.LogRecordQuery;
import ai.remi.boot.domain.vo.LogRecordVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 日志记录表 LogRecordConverter转换接口
*/
@Mapper
public interface LogRecordConverter {
LogRecordConverter INSTANT = Mappers.getMapper(LogRecordConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
LogRecord postDtoToEntity(LogRecordPostDTO logRecordDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
LogRecord putDtoToEntity(LogRecordPutDTO logRecordDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
LogRecord queryToEntity(LogRecordQuery logRecordQuery);
LogRecordVO entityToVO(LogRecord logRecord);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.MenuPostDTO;
import ai.remi.boot.domain.dto.put.MenuPutDTO;
import ai.remi.boot.domain.entity.Menu;
import ai.remi.boot.domain.query.MenuQuery;
import ai.remi.boot.domain.vo.MenuVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 菜单表 MenuConverter转换接口
*/
@Mapper
public interface MenuConverter {
MenuConverter INSTANT = Mappers.getMapper(MenuConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Menu postDtoToEntity(MenuPostDTO menuDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Menu putDtoToEntity(MenuPutDTO menuDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Menu queryToEntity(MenuQuery menuQuery);
MenuVO entityToVO(Menu menu);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.NoticePostDTO;
import ai.remi.boot.domain.dto.put.NoticePutDTO;
import ai.remi.boot.domain.entity.Notice;
import ai.remi.boot.domain.query.NoticeQuery;
import ai.remi.boot.domain.vo.NoticeVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 通知公告 NoticeConverter转换接口
*/
@Mapper
public interface NoticeConverter {
NoticeConverter INSTANT = Mappers.getMapper(NoticeConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Notice postDtoToEntity(NoticePostDTO noticeDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Notice putDtoToEntity(NoticePutDTO noticeDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Notice queryToEntity(NoticeQuery noticeQuery);
NoticeVO entityToVO(Notice notice);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.OauthCodePostDTO;
import ai.remi.boot.domain.dto.put.OauthCodePutDTO;
import ai.remi.boot.domain.entity.OauthCode;
import ai.remi.boot.domain.query.OauthCodeQuery;
import ai.remi.boot.domain.vo.OauthCodeVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 授权码表 OauthCodeConverter转换接口
*/
@Mapper
public interface OauthCodeConverter {
OauthCodeConverter INSTANT = Mappers.getMapper(OauthCodeConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
OauthCode postDtoToEntity(OauthCodePostDTO oauthCodeDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
OauthCode putDtoToEntity(OauthCodePutDTO oauthCodeDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
OauthCode queryToEntity(OauthCodeQuery oauthCodeQuery);
OauthCodeVO entityToVO(OauthCode oauthCode);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.PositionPostDTO;
import ai.remi.boot.domain.dto.put.PositionPutDTO;
import ai.remi.boot.domain.entity.Position;
import ai.remi.boot.domain.query.PositionQuery;
import ai.remi.boot.domain.vo.PositionVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 职位表 PositionConverter转换接口
*/
@Mapper
public interface PositionConverter {
PositionConverter INSTANT = Mappers.getMapper(PositionConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Position postDtoToEntity(PositionPostDTO positionDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Position putDtoToEntity(PositionPutDTO positionDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Position queryToEntity(PositionQuery positionQuery);
PositionVO entityToVO(Position position);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.PostRolePostDTO;
import ai.remi.boot.domain.dto.put.PostRolePutDTO;
import ai.remi.boot.domain.entity.PostRole;
import ai.remi.boot.domain.query.PostRoleQuery;
import ai.remi.boot.domain.vo.PostRoleVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 职位角色表 PostRoleConverter转换接口
*/
@Mapper
public interface PostRoleConverter {
PostRoleConverter INSTANT = Mappers.getMapper(PostRoleConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
PostRole postDtoToEntity(PostRolePostDTO postRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
PostRole putDtoToEntity(PostRolePutDTO postRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
PostRole queryToEntity(PostRoleQuery postRoleQuery);
PostRoleVO entityToVO(PostRole postRole);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.RankPostDTO;
import ai.remi.boot.domain.dto.put.RankPutDTO;
import ai.remi.boot.domain.entity.Rank;
import ai.remi.boot.domain.query.RankQuery;
import ai.remi.boot.domain.vo.RankVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 职级表 RankConverter转换接口
*/
@Mapper
public interface RankConverter {
RankConverter INSTANT = Mappers.getMapper(RankConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Rank postDtoToEntity(RankPostDTO rankDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Rank putDtoToEntity(RankPutDTO rankDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Rank queryToEntity(RankQuery rankQuery);
RankVO entityToVO(Rank rank);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.RefreshTokenPostDTO;
import ai.remi.boot.domain.dto.put.RefreshTokenPutDTO;
import ai.remi.boot.domain.entity.RefreshToken;
import ai.remi.boot.domain.query.RefreshTokenQuery;
import ai.remi.boot.domain.vo.RefreshTokenVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 刷新令牌表 RefreshTokenConverter转换接口
*/
@Mapper
public interface RefreshTokenConverter {
RefreshTokenConverter INSTANT = Mappers.getMapper(RefreshTokenConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RefreshToken postDtoToEntity(RefreshTokenPostDTO refreshTokenDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RefreshToken putDtoToEntity(RefreshTokenPutDTO refreshTokenDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RefreshToken queryToEntity(RefreshTokenQuery refreshTokenQuery);
RefreshTokenVO entityToVO(RefreshToken refreshToken);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.RestrictIpPostDTO;
import ai.remi.boot.domain.dto.put.RestrictIpPutDTO;
import ai.remi.boot.domain.entity.RestrictIp;
import ai.remi.boot.domain.query.RestrictIpQuery;
import ai.remi.boot.domain.vo.RestrictIpVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 黑白名单表 RestrictIpConverter转换接口
*/
@Mapper
public interface RestrictIpConverter {
RestrictIpConverter INSTANT = Mappers.getMapper(RestrictIpConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RestrictIp postDtoToEntity(RestrictIpPostDTO restrictIpDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RestrictIp putDtoToEntity(RestrictIpPutDTO restrictIpDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RestrictIp queryToEntity(RestrictIpQuery restrictIpQuery);
RestrictIpVO entityToVO(RestrictIp restrictIp);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.RolePostDTO;
import ai.remi.boot.domain.dto.put.RolePutDTO;
import ai.remi.boot.domain.entity.Role;
import ai.remi.boot.domain.query.RoleQuery;
import ai.remi.boot.domain.vo.RoleVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 角色表 RoleConverter转换接口
*/
@Mapper
public interface RoleConverter {
RoleConverter INSTANT = Mappers.getMapper(RoleConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Role postDtoToEntity(RolePostDTO roleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Role putDtoToEntity(RolePutDTO roleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
Role queryToEntity(RoleQuery roleQuery);
RoleVO entityToVO(Role role);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.RoleMenuPostDTO;
import ai.remi.boot.domain.dto.put.RoleMenuPutDTO;
import ai.remi.boot.domain.entity.RoleMenu;
import ai.remi.boot.domain.query.RoleMenuQuery;
import ai.remi.boot.domain.vo.RoleMenuVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 角色菜单表 RoleMenuConverter转换接口
*/
@Mapper
public interface RoleMenuConverter {
RoleMenuConverter INSTANT = Mappers.getMapper(RoleMenuConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RoleMenu postDtoToEntity(RoleMenuPostDTO roleMenuDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RoleMenu putDtoToEntity(RoleMenuPutDTO roleMenuDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
RoleMenu queryToEntity(RoleMenuQuery roleMenuQuery);
RoleMenuVO entityToVO(RoleMenu roleMenu);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.UserPostDTO;
import ai.remi.boot.domain.dto.put.UserPutDTO;
import ai.remi.boot.domain.entity.User;
import ai.remi.boot.domain.query.UserQuery;
import ai.remi.boot.domain.vo.UserVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 用户表 UserConverter转换接口
*/
@Mapper
public interface UserConverter {
UserConverter INSTANT = Mappers.getMapper(UserConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
User postDtoToEntity(UserPostDTO userDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
User putDtoToEntity(UserPutDTO userDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
User queryToEntity(UserQuery userQuery);
UserVO entityToVO(User user);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.UserPostPostDTO;
import ai.remi.boot.domain.dto.put.UserPostPutDTO;
import ai.remi.boot.domain.entity.UserPost;
import ai.remi.boot.domain.query.UserPostQuery;
import ai.remi.boot.domain.vo.UserPostVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 用户岗位表 UserPostConverter转换接口
*/
@Mapper
public interface UserPostConverter {
UserPostConverter INSTANT = Mappers.getMapper(UserPostConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
UserPost postDtoToEntity(UserPostPostDTO userPostDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
UserPost putDtoToEntity(UserPostPutDTO userPostDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
UserPost queryToEntity(UserPostQuery userPostQuery);
UserPostVO entityToVO(UserPost userPost);
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.converter;
import ai.remi.boot.domain.dto.post.UserRolePostDTO;
import ai.remi.boot.domain.dto.put.UserRolePutDTO;
import ai.remi.boot.domain.entity.UserRole;
import ai.remi.boot.domain.query.UserRoleQuery;
import ai.remi.boot.domain.vo.UserRoleVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 用户角色表 UserRoleConverter转换接口
*/
@Mapper
public interface UserRoleConverter {
UserRoleConverter INSTANT = Mappers.getMapper(UserRoleConverter.class);
@Mapping(target = "id", ignore = true)
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
UserRole postDtoToEntity(UserRolePostDTO userRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
UserRole putDtoToEntity(UserRolePutDTO userRoleDTO);
@Mapping(target = "deleted", ignore = true)
@Mapping(target = "revision", ignore = true)
@Mapping(target = "deptTenantId", ignore = true)
@Mapping(target = "companyTenantId", ignore = true)
@Mapping(target = "createdBy", ignore = true)
@Mapping(target = "createdAt", ignore = true)
@Mapping(target = "updatedBy", ignore = true)
@Mapping(target = "updatedAt", ignore = true)
UserRole queryToEntity(UserRoleQuery userRoleQuery);
UserRoleVO entityToVO(UserRole userRole);
}

View File

@@ -0,0 +1,78 @@
package ai.remi.boot.domain.dto.post;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 鉴权令牌表 AccessTokenDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "鉴权令牌表")
public class AccessTokenPostDTO implements Serializable {
private static final long serialVersionUID = -29845292311483249L;
/**
* 应用标识
*/
@Schema(description = "应用标识")
private String appKey;
/**
* 应用密钥
*/
@Schema(description = "应用密钥")
private String appSecret;
/**
* 鉴权令牌
*/
@Schema(description = "鉴权令牌")
private String accessToken;
/**
* 刷新令牌
*/
@Schema(description = "刷新令牌")
private String refreshToken;
/**
* 过期时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(description = "过期时间")
private LocalDateTime expiresTime;
/**
* 令牌类型(bearer mac)
*/
@Schema(description = "令牌类型(bearer mac)")
private String tokenType;
/**
* 权限范围
*/
@Schema(description = "权限范围")
private String tokenScope;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用组织 AppGroupDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "应用组织")
public class AppGroupPostDTO implements Serializable {
private static final long serialVersionUID = 351449273903380808L;
/**
* 应用ID
*/
@Schema(description = "应用ID")
private String appId;
/**
* 应用编码
*/
@Schema(description = "应用编码")
private String appCode;
/**
* 组织ID
*/
@Schema(description = "组织ID")
private String groupId;
/**
* 组织编码
*/
@Schema(description = "组织编码")
private String groupCode;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,54 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用菜单表 AppMenuDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "应用菜单表")
public class AppMenuPostDTO implements Serializable {
private static final long serialVersionUID = -45343704045413910L;
/**
* 应用ID
*/
@Schema(description = "应用ID")
private String appId;
/**
* 应用编码
*/
@Schema(description = "应用编码")
private String appCode;
/**
* 菜单ID
*/
@Schema(description = "菜单ID")
private String menuId;
/**
* 菜单编码
*/
@Schema(description = "菜单编码")
private String menuCode;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,115 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
import java.util.List;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用表Application AppDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "应用表Application")
public class AppPostDTO implements Serializable {
private static final long serialVersionUID = 601050645680399798L;
/**
* 应用编码(对内唯一标识)
*/
@Schema(description = "应用编码(对内唯一标识)")
private String appCode;
/**
* 应用key(对外唯一标识)
*/
@Schema(description = "应用key(对外唯一标识)")
private String appKey;
/**
* 应用密钥
*/
@Schema(description = "应用密钥")
private String appSecret;
/**
* 应用名称
*/
@Schema(description = "应用名称")
private String appName;
/**
* 应用英文名称
*/
@Schema(description = "应用英文名称")
private String appNameEn;
/**
* 应用描述
*/
@Schema(description = "应用描述")
private String appRemark;
/**
* 应用英文描述
*/
@Schema(description = "应用英文描述")
private String appRemarkEn;
/**
* 应用图标(如:icon-zuopin)
*/
@Schema(description = "应用图标(如:icon-zuopin)")
private String appIcon;
/**
* 应用图标颜色(如:#13C2C2)
*/
@Schema(description = "应用图标颜色(如:#13C2C2)")
private String appIconColor;
/**
* 应用备案号
*/
@Schema(description = "应用备案号")
private String appIcp;
/**
* 是否公共应用(0否 1是)
*/
@Schema(description = "是否公共应用(0否 1是)")
private String isCommon;
/**
* 是否移动端应用(0否 1是)
*/
@Schema(description = "是否移动端应用(0否 1是)")
private String isMobile;
/**
* 应用的全局配置
*/
@Schema(description = "应用的全局配置")
List<ConfigPostDTO> appConfigs;
/**
* 每秒间隔访问次数限制
*/
@Schema(description = "每秒间隔访问次数限制")
private Integer requestLimit;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,96 @@
package ai.remi.boot.domain.dto.post;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 应用发布表 AppPublishDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "应用发布表")
public class AppPublishPostDTO implements Serializable {
private static final long serialVersionUID = 763198018494819671L;
/**
* 应用ID
*/
@Schema(description = "应用ID")
private String appId;
/**
* 应用编码(对内唯一标识)
*/
@Schema(description = "应用编码(对内唯一标识)")
private String appCode;
/**
* 应用key(对外唯一标识)
*/
@Schema(description = "应用key(对外唯一标识)")
private String appKey;
/**
* 应用的版本
*/
@Schema(description = "应用的版本")
private String appVersion;
/**
* 适用的启迪平台版本
*/
@Schema(description = "适用的启迪平台版本")
private String sdtVersion;
/**
* 文件名称
*/
@Schema(description = "文件名称")
private String fileName;
/**
* 文件地址 , 默认相对路径
*/
@Schema(description = "文件地址 , 默认相对路径")
private String fileUrl;
/**
* 应用大小 , 单位字节
*/
@Schema(description = "应用大小 , 单位字节")
private Integer fileSize;
/**
* 审核人
*/
@Schema(description = "审核人")
private String auditUser;
/**
* 审核时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@Schema(description = "审核时间")
private LocalDateTime aduitTime;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,90 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 省市县表 AreaDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "省市县表")
public class AreaPostDTO implements Serializable {
private static final long serialVersionUID = -72165589670752682L;
/**
* 父区域ID
*/
@Schema(description = "父区域ID")
private String parentId;
/**
* 父区域编码
*/
@Schema(description = "父区域编码")
private String parentCode;
/**
* 区域编码
*/
@Schema(description = "区域编码")
private String areaCode;
/**
* 区域名称
*/
@Schema(description = "区域名称")
private String areaName;
/**
* 区域英文名称
*/
@Schema(description = "区域英文名称")
private String areaNameEn;
/**
* 区域备注
*/
@Schema(description = "区域备注")
private Long areaRemark;
/**
* 区域英文备注
*/
@Schema(description = "区域英文备注")
private Long areaRemarkEn;
/**
* 邮政编码
*/
@Schema(description = "邮政编码")
private String postalCode;
/**
* 区域级别(1-5,省市县镇村)
*/
@Schema(description = "区域级别(1-5,省市县镇村)")
private Integer areaLevel;
/**
* 显示顺序
*/
@Schema(description = "显示顺序")
private Integer sort;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,67 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 存储桶管理 BucketDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "存储桶管理")
public class BucketPostDTO implements Serializable {
private static final long serialVersionUID = -68143833409367473L;
/**
* 存储桶编码
*/
@Schema(description = "存储桶编码")
private String bucketCode;
/**
* 存储桶名称
*/
@Schema(description = "存储桶名称")
private String bucketName;
/**
* 存储桶标签
*/
@Schema(description = "存储桶标签")
private String bucketTags;
/**
* 存储桶所属区域
*/
@Schema(description = "存储桶所属区域")
private String bucketRegion;
/**
* 访问权限(1Private 2Public 3Custom)
*/
@Schema(description = "访问权限(1Private 2Public 3Custom)")
private Integer accessPolicy;
/**
* 是否加密(0停用 1启用)
*/
@Schema(description = "是否加密(0停用 1启用)")
private Integer encryption;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,56 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 公司部门表 CompanyDeptDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "公司部门表")
public class CompanyDeptPostDTO implements Serializable {
private static final long serialVersionUID = 491352010046788372L;
/**
* 公司ID
*/
@Schema(description = "公司ID")
private String companyId;
/**
* 公司编码
*/
@Schema(description = "公司编码")
private String companyCode;
/**
* 部门ID
*/
@Schema(description = "部门ID")
private String deptId;
/**
* 部门编码
*/
@Schema(description = "部门编码")
private String deptCode;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,145 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 公司表 CompanyDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "公司表")
public class CompanyPostDTO implements Serializable {
private static final long serialVersionUID = -69065489756742493L;
/**
* 父公司ID
*/
@Schema(description = "父公司ID")
private String parentId;
/**
* 公司编码
*/
@Schema(description = "公司编码")
private String companyCode;
/**
* 公司名称
*/
@Schema(description = "公司名称")
private String companyName;
/**
* 公司英文名称
*/
@Schema(description = "公司英文名称")
private String companyNameEn;
/**
* 公司描述
*/
@Schema(description = "公司描述")
private String companyRemark;
/**
* 公司英文描述
*/
@Schema(description = "公司英文描述")
private String companyRemarkEn;
/**
* 公司地址
*/
@Schema(description = "公司地址")
private String companyAddress;
/**
* 公司英文地址
*/
@Schema(description = "公司英文地址")
private String companyAddressEn;
/**
* 公司邮编
*/
@Schema(description = "公司邮编")
private String companyPostcode;
/**
* 传真号码
*/
@Schema(description = "传真号码")
private String companyFax;
/**
* 微信二维码
*/
@Schema(description = "微信二维码")
private String companyWechat;
/**
* 统一信用社会代码
*/
@Schema(description = "统一信用社会代码")
private String companyBlicense;
/**
* 其它信息
*/
@Schema(description = "其它信息")
private String companyOther;
/**
* 显示顺序
*/
@Schema(description = "显示顺序")
private Integer sort;
/**
* 公司法人ID
*/
@Schema(description = "公司法人ID")
private String companyHeadId;
/**
* 公司法人工号
*/
@Schema(description = "公司法人工号")
private String companyHeadCode;
/**
* 手机号码
*/
@Schema(description = "手机号码")
private String mobile;
/**
* 电话号码
*/
@Schema(description = "电话号码")
private String phone;
/**
* 电子邮箱
*/
@Schema(description = "电子邮箱")
private String email;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,74 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 全局配置 ConfigDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "全局配置")
public class ConfigPostDTO implements Serializable {
private static final long serialVersionUID = -12716193394353060L;
/**
* 关联表ID
*/
@Schema(description = "关联表ID")
private String bindId;
/**
* 关联表编码
*/
@Schema(description = "关联表编码")
private String bindCode;
/**
* 配置项类型(1用户信息 2应用配置 3主题配置 4邮件配置 5存储配置 6支付配置 99其他配置)
*/
@Schema(description = "配置项类型(1用户信息 2应用配置 3主题配置 4邮件配置 5存储配置 6支付配置 99其他配置)")
private Integer confType;
/**
* 配置项编码
*/
@Schema(description = "配置项编码")
private String confCode;
/**
* 配置项名称
*/
@Schema(description = "配置项名称")
private String confName;
/**
* 配置项的值
*/
@Schema(description = "配置项的值")
private String confValue;
/**
* 字典项排序
*/
@Schema(description = "字典项排序")
private Integer sort;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,60 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 组织角色表 CordRoleDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "组织角色表")
public class CordRolePostDTO implements Serializable {
private static final long serialVersionUID = -10355300743070073L;
/**
* 组织ID
*/
@Schema(description = "组织ID")
private String cordId;
/**
* 组织编码
*/
@Schema(description = "组织编码")
private String cordCode;
/**
* 组织类型(1:公司 2:部门)
*/
@Schema(description = "组织类型(1:公司 2:部门)")
private Integer cordType;
/**
* 角色ID
*/
@Schema(description = "角色ID")
private String roleId;
/**
* 角色编码
*/
@Schema(description = "角色编码")
private String roleCode;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,97 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 部门表 DeptDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "部门表")
public class DeptPostDTO implements Serializable {
private static final long serialVersionUID = -96828566411130707L;
/**
* 父部门ID
*/
@Schema(description = "父部门ID")
private String parentId;
/**
* 所属公司ID
*/
@Schema(description = "所属公司ID")
private String companyId;
/**
* 所属公司编码
*/
@Schema(description = "所属公司编码")
private String companyCode;
/**
* 部门编码
*/
@Schema(description = "部门编码")
private String deptCode;
/**
* 部门名称
*/
@Schema(description = "部门名称")
private String deptName;
/**
* 部门英文名称
*/
@Schema(description = "部门英文名称")
private String deptNameEn;
/**
* 部门领导ID
*/
@Schema(description = "部门领导ID")
private String deptHeadId;
/**
* 部门领导工号
*/
@Schema(description = "部门领导工号")
private String deptHeadCode;
/**
* 显示顺序
*/
@Schema(description = "显示顺序")
private Integer sort;
/**
* 联系电话
*/
@Schema(description = "联系电话")
private String phone;
/**
* 联系邮箱
*/
@Schema(description = "联系邮箱")
private String email;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,54 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 部门用户表 DeptUserDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "部门用户表")
public class DeptUserPostDTO implements Serializable {
private static final long serialVersionUID = -41408376185707276L;
/**
* 部门ID
*/
@Schema(description = "部门ID")
private String deptId;
/**
* 部门编码
*/
@Schema(description = "部门编码")
private String deptCode;
/**
* 用户ID
*/
@Schema(description = "用户ID")
private String userId;
/**
* 用户编码
*/
@Schema(description = "用户编码")
private String userCode;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,96 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 字典项表 DictItemDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "字典项表")
public class DictItemPostDTO implements Serializable {
private static final long serialVersionUID = -75846227096968798L;
/**
* 字典ID
*/
@Schema(description = "字典ID")
private String dictId;
/**
* 字典编码
*/
@Schema(description = "字典编码")
private String dictCode;
/**
* 字典项值
*/
@Schema(description = "字典项值")
private String itemValue;
/**
* 字典项文本
*/
@Schema(description = "字典项文本")
private String itemText;
/**
* 字典项英文文本
*/
@Schema(description = "字典项英文文本")
private String itemTextEn;
/**
* 字典项描述
*/
@Schema(description = "字典项描述")
private String itemRemark;
/**
* 字典项英文描述
*/
@Schema(description = "字典项英文描述")
private String itemRemarkEn;
/**
* 是否默认(0否 1是)
*/
@Schema(description = "是否默认(0否 1是)")
private Integer isDefault;
/**
* 字典项样式
*/
@Schema(description = "字典项样式")
private String itemStyle;
/**
* 字典项CSS
*/
@Schema(description = "字典项CSS")
private String itemCss;
/**
* 字典项排序
*/
@Schema(description = "字典项排序")
private Integer sort;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,60 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 字典主表 DictDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "字典主表")
public class DictPostDTO implements Serializable {
private static final long serialVersionUID = 931660359810842564L;
/**
* 字典编码
*/
@Schema(description = "字典编码")
private String dictCode;
/**
* 字典名称
*/
@Schema(description = "字典名称")
private String dictName;
/**
* 字典英文名称
*/
@Schema(description = "字典英文名称")
private String dictNameEn;
/**
* 字典描述
*/
@Schema(description = "字典描述")
private String dictRemark;
/**
* 字典英文描述
*/
@Schema(description = "字典英文描述")
private String dictRemarkEn;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,86 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 文件管理 FileDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "文件管理")
public class FilePostDTO implements Serializable {
private static final long serialVersionUID = 344827744956275735L;
/**
* 存储桶编码
*/
@Schema(description = "存储桶编码")
private String bucketCode;
/**
* 存储桶名称
*/
@Schema(description = "存储桶名称")
private String bucketName;
/**
* 文件编号
*/
@Schema(description = "文件编号")
private String fileCode;
/**
* 文件类型
*/
@Schema(description = "文件类型")
private String fileType;
/**
* 文件大小(KiB)
*/
@Schema(description = "文件大小(KiB)")
private String fileSize;
/**
* 文件标签
*/
@Schema(description = "文件标签")
private String fileTags;
/**
* 文件名称
*/
@Schema(description = "文件名称")
private String fileName;
/**
* 文件目录
*/
@Schema(description = "文件目录")
private String filePath;
/**
* 原文件名
*/
@Schema(description = "原文件名")
private String original;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,66 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 职系表 GradeDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "职系表")
public class GradePostDTO implements Serializable {
private static final long serialVersionUID = -49516161861289661L;
/**
* 职系编码
*/
@Schema(description = "职系编码")
private String gradeCode;
/**
* 职系名称
*/
@Schema(description = "职系名称")
private String gradeName;
/**
* 职系英文名称
*/
@Schema(description = "职系英文名称")
private String gradeNameEn;
/**
* 职系描述
*/
@Schema(description = "职系描述")
private String gradeRemark;
/**
* 职系英文描述
*/
@Schema(description = "职系英文描述")
private String gradeRemarkEn;
/**
* 显示顺序
*/
@Schema(description = "显示顺序")
private Integer sort;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

View File

@@ -0,0 +1,72 @@
package ai.remi.boot.domain.dto.post;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.io.Serializable;
/**
* @author DianJiu
* @email dianjiuxyz@gmail.com
* @desc 业务组织 GroupDTO对象
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
@Schema(description = "业务组织")
public class GroupPostDTO implements Serializable {
private static final long serialVersionUID = 983816695906322574L;
/**
* 父菜单ID
*/
@Schema(description = "父菜单ID")
private String parentId;
/**
* 用户组编码
*/
@Schema(description = "用户组编码")
private String groupCode;
/**
* 用户组名称
*/
@Schema(description = "用户组名称")
private String groupName;
/**
* 用户组英文名称
*/
@Schema(description = "用户组英文名称")
private String groupNameEn;
/**
* 用户组描述
*/
@Schema(description = "用户组描述")
private String groupRemark;
/**
* 用户组英文描述
*/
@Schema(description = "用户组英文描述")
private String groupRemarkEn;
/**
* 显示顺序
*/
@Schema(description = "显示顺序")
private Integer sort;
/**
* 是否启用(0停用 1启用)
*/
@Schema(description = "是否启用(0停用 1启用)")
private Integer status;
}

Some files were not shown because too many files have changed in this diff Show More