{"id":16399580,"url":"https://github.com/gengxiankun/eula","last_synced_at":"2025-02-23T11:24:29.446Z","repository":{"id":199044752,"uuid":"701983768","full_name":"gengxiankun/EULA","owner":"gengxiankun","description":"易用的分层架构 Easy Use and Layered Architecture.","archived":false,"fork":false,"pushed_at":"2024-06-03T15:31:39.000Z","size":227,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-04T23:40:51.786Z","etag":null,"topics":["archetypes","ddd-architecture","layered-architecture"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gengxiankun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-08T06:37:15.000Z","updated_at":"2024-06-03T15:31:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"61832a0b-b26b-423a-87a7-035c8b194e0d","html_url":"https://github.com/gengxiankun/EULA","commit_stats":null,"previous_names":["gengxiankun/eula"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gengxiankun%2FEULA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gengxiankun%2FEULA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gengxiankun%2FEULA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gengxiankun%2FEULA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gengxiankun","download_url":"https://codeload.github.com/gengxiankun/EULA/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240306405,"owners_count":19780614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archetypes","ddd-architecture","layered-architecture"],"created_at":"2024-10-11T05:24:54.938Z","updated_at":"2025-02-23T11:24:29.109Z","avatar_url":"https://github.com/gengxiankun.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EULA\nEULA 是 Easy Use and Layered Architecture 的缩写，代表 “易用的分层架构”。\n\n为什么易用？\n- 提供了通用的 `CURD` 功能和 Restful 风格的接口，并实现了了 `Dto -\u003e Entity` 的数据转换操作，开发人员可以更关注于业务处理\n- 通过注解无侵入式统一数据格式\n- 通过注解实现数据安全\n\n\n## EULA 概述\n![分层架构图](./resources/分层架构图.png)\n\n### 包结构功能描述\n| 层次             | 包名         | 功能                             | 必须 |\n|----------------|------------|--------------------------------|----|\n| adapter        | controller | 处理页面请求的 `controller`           | 否  |\n| adapter        | scheduler  | 处理定时任务                         | 否  |\n| adapter        | consumer   | 消费外部消息                         | 否  |\n| application    | service    | 处理通用的 CURD 请求                  | 是  |\n| domain         | entity     | 领域实体，同时可以作为用于持久化的实体            | 是  |\n| domain         | service    | 领域服务，当存在需要多领域写协作时，更推荐在此实现      | 否  |\n| domain         | mapper     | 数据持久化，相比放置在 `infra` 层减少了很多额外操作 | 否  |\n| domain         | facade     | 上下文映射适配层，当调用外部请求时推荐通过在此进行适配    | 否  |\n| infrastructure | remote     | 处理外部请求，建议通过 `domain` 层进行适配     | 否  |\n| infrastructure | general    | 用于存放通用的配置类和工具类等                | 是  |\n| client         | dto        | 服务对外的 DTO                      | 是  |\n\n### 默认集成的外部组件\n| 组件名称         | 功能                              |\n|--------------|---------------------------------|\n| mybatis-plus | ORM                             |\n| hutool       | 小而全的 Java 工具类库                  | \n| lombok       | Java 实用工具，用来帮助开发人员消除 Java 的冗长代码 |\n| flyway       | 数据迁移工具                          |\n\n## EULA 组件\n| 组件名称                | 功能                                | 依赖                         |\n|---------------------|-----------------------------------|----------------------------|\n| component-dto       | 定义了 DTO 接口类以及分页请求体                | 无                          |\n| component-curd      | 实现数据转换以及通用 CURD 功能和 Restful 风格的接口 | mybatis-plus、component-dto |\n| component-result    | 实现了无侵入式数据格式统一以及错误码管理              | mybatis-plus               |\n| component-openai    | 实现了 api2d（openai 国内代理）的 SDK       | 无                          |\n| component-security  | 信息安全组件                            | 无                          |\n\n\n## 如何使用 EULA\n**1. 安装 eula archetype**\n\n下载 `archetypes` 下的源码到本地，然后本地运行 `mvn install` 进行安装。\n\n**2. 安装 eula components**\n\n下载 `components` 下的源码到本地，然后本地运行 `mvn install` 进行安装。\n\n**3. 创建应用**\n```mvn\nmvn archetype:generate  \\\n  -DgroupId=com.eula.demo \\\n  -DartifactId=demo \\\n  -Dversion=1.0.0-SNAPSHOT \\\n  -Dpackage=com.eula.demo \\\n  -DarchetypeArtifactId=archetype-layered \\\n  -DarchetypeGroupId=com.eula \\\n  -DarchetypeVersion=1.0.0-SNAPSHOT\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgengxiankun%2Feula","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgengxiankun%2Feula","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgengxiankun%2Feula/lists"}