4 Star 19 Fork 16

hhqkkr / xunheng-cloud-cola

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

xunheng-cloud-cola(寻衡微服务COLA架构后台管理框架)

:tada: 2.0版本更新。如果帮助到了你,可以给个小星星⭐️,共同进步。 :tada:

更新简介(包括但不限于:)

1.升级了springcloud alibaba(2022.0.0.0)以及springboot(3.0.2)的版本

2.相关依赖升级,代码优化,更新模板,更新pom archetype,jdk版本目前最低为17

3.接口文档变更为openapi3规范,引入knife4j

4.删除了plumelog变更为tlog

单体版本

单体版本可以访问另一个仓库:寻衡BOOT

介绍

寻衡cloud是应用阿里开源的COLA4.0架构配合springcloud-alibaba+satoken+mybatisplus+elasticsearch+quartz+tlog等搭建的后台管理系统框架。并且开发了相关基础服务与示例服务(如chatgpt,微信公众号)

前言

本项目使用java语言开发,依赖COLA4.0架构实现,适合已经掌握或者想通过本项目来参考学习springcloud alibaba微服务组件与COLA架构的小伙伴们使用与开发。

关于COLA4.0

开源平台使用COLA4.0架构的管理后台不多,所以想用这种架构来实现,COLA只是提供了多一种选择,不代表这是唯一的使用方式,你可以选择某些服务使用COLA,某些服务使用MVC,符合自己或自己团队适合的模式更重要。

COLA4.0是阿里开源的一款应用架构,很多思想来自于DDD(领域驱动模型),但相对于DDD来说更加简化清晰。熟悉MVC结构开发的人来说第一次看到会有种摸不着头脑的感觉,所以在使用本框架前,可以对COLA4.0进行一些基本的学习。

使用COLA会让项目更加清晰,符合高内聚低耦合的思想,但COLA也存在缺点,比如由于层数增多,在架构中会增加很多实体的转换,dto的数量相较MVC模式会大大增加,但在现在各种工具的帮助下都可以简化操作。还比如有的业务代码考虑在哪一层实现会感觉比较模糊,需要通过不断的实践获得更深的认知。

对于代码量增多的问题,项目已经集成了cola架构的maven archetype骨架还有mvc与cola两种架构的代码生成器,同时包括前端vue项目的代码生成,简化开发。

模块介绍

模块名称 简介
xunheng-cloud-cola-archetype cola架构模块的模板骨架,方便直接创建项目模块,配合代码生成器简化开发
xunheng-core 项目核心包,包括公共依赖与组件配置
xunheng-auth springcloud-gateway网关服务,同时处理用户鉴权,认证框架使用的Sa-Token
xunheng-system 管理系统服务,包含登录,用户,角色,组织结构,权限等等
xunheng-quartz 计划任务服务,对job计划经行配置/执行
xunheng-log 日志服务,系统的操作日志,目前采用es存储
xunheng-generator 代码生成器服务,包含了cola架构与mvc架构两种模式,简化开发。
xunheng-file 资源中心服务,目前包括资源路径/上传配置/文件库等
xunheng-chatgpt chatgpt服务,依赖chatpgt-sdk,采用websocket创建链接,如需使用请在配置里填写token
xunheng-wechat 管理微信公众号与相关登录,推送等接口,由于时间问题前端页面未完全完成,可自行根据样例实现

开发环境与依赖版本

java mysql mybatisplus cola
17 5.7 3.5.4.1 4.3.2
springcloud-alibaba spring-cloud spring-boot nacos seata sentinel
2022.0.0.0 2022.0.0 3.0.2 2.2.1 1.7.0 1.8.6

项目体验

项目体验地址(服务器原因暂停,后续恢复):点我体验

未在体验项目部署代码生成器与chatgpt服务,如果需要可以下载项目在本地部署体验。

体验账号:

        账号:体验账号2 密码:123456
    
        账号:体验账号3 密码:123456
    
        账号:体验账号4 密码:123456

功能截图

** chatgpt ** 输入图片说明 0. 个人中心 输入图片说明

  1. 用户管理 输入图片说明
  2. 组织架构管理 输入图片说明
  3. 角色权限管理 输入图片说明
  4. 菜单权限管理 输入图片说明
  5. 计划任务管理 输入图片说明
  6. 数据字典管理 输入图片说明
  7. 拓展配置管理 输入图片说明
  8. 矩阵管理 输入图片说明 输入图片说明
  9. 平台租户管理
  10. 操作日志 输入图片说明
  11. 会话监控
  12. 前后端代码生成器 输入图片说明
  13. 文件配置 输入图片说明
  14. 文件库 输入图片说明

前端项目

前端项目请访问另一个仓库xunheng-cloud-cola-front.基于scui开发,使用的elementplus+vue3

安装教程

  1. 搭建基本的SpringCloud Alibaba环境(注意上方的软件版本,包括部署nacos,配置seata)。
  2. 在nacos中新建命名空间【xhcc】将项目中的nacos文件夹里的yml配置文件导入到xhcc命名空间下。
  3. 将项目中几个服务的mysql文件导入到数据库。
  4. 修改yml配置文件的参数,比如数据库地址用户名密码,redis地址与密码等等。
  5. 在项目中修改每个服务的bootstrap.yml文件。改成nacos所在的地址,如果用的是自己的命名空间,则需要修改其中的namespace与group
  6. 启动auth服务与system服务后可以成功登陆与使用。其他的服务按需启动。
  7. 启动前端项目,访问前端地址即可使用。超级管理员账号admin 密码123456

使用说明

一些使用的细节会在下方说明,后续会考虑写一下完整使用教程
  1. 如何开发自己的服务

    *如果你想使用常用的mvc架构,那直接功能新建子模块,然后在代码生成器生成相关的mvc架构代码就行。

    *如果你想使用cola架构,因为cola架构是多模块并且目录多,新建很麻烦,所以在目录下有xunheng-cloud-cola-archetype的项目骨架,你可以将它install到本地仓库或者deploy到远程仓库后,通过这个archetype生成cola项目。

    archetype中有两个需要填写的自定义的参数【serviceName】【serviceUppercaseName】对应的是服务的名称与首字母大写的名称。例:你想创建message服务,artifactId为xunheng-message。这两个参数则填写【message】【Message】

  2. 菜单功能权限

    本系统的菜单功能权限是基于RBAC模型。层级为菜单 -> 功能组 -> 功能

    配置权限的最细粒度选择到功能组。比如在用户管理菜单,配置了【基础维护】【维护密码】两个功能组。 【基础维护】功能组包括了增删改查等api的功能。【维护密码】功能组包括了密码重置api的功能

    功能可以理解为一个api,每个api有一个权限码,对应后端controller的每一个方法,注解为@permissionCode。每次访问都会根据这个注解的aop进行权限控制

    由于是多租户的系统,不需要配置权限的功能也需要加上这个注解才能进行基本的租户过滤,@permissionCode('none')

  3. 数据权限

    目前开源的数据权限为一种方式,即数据等级。包括全平台,本租户,本分公司,本部门,本人。同时可以选择是否包含下级。

后续开发计划

因为基本功能相对完善,后续以修复bug为主,如有好的建议,请提交issue,感谢。

关于

欢迎各位开发者尝试使用本项目进行开发或学习,可以联系我进行更多的探讨,后续根据人数会考虑建群。

如果有其他开发需求与合作,可以QQ【452794162】微信【15817362414】

之所以叫【寻衡】,是意为追寻一种平衡。我们在设计一个功能的时候,并不是做到最完整就是最好的。得根据客户的需求,产品的定位,人员的能力等等去选择一种平衡。生活中做出的任何选择也是如此。

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 [yyyy] [name of copyright owner] 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.

简介

寻衡cloud是应用阿里开源的COLA4.0架构配合springcloud-alibaba+satoken+mybatisplus+elasticsearch+quartz+plumelog等搭建的后台管理系统框架。 展开 收起
Java 等 2 种语言
Apache-2.0
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/hhqkkr/xunheng-cloud-cola.git
git@gitee.com:hhqkkr/xunheng-cloud-cola.git
hhqkkr
xunheng-cloud-cola
xunheng-cloud-cola
main

搜索帮助