build
- 依赖升级
-
spring-boot 2.6.8
spring-cloud-dependencies.version>2021.0.2
spring-boot-admin.version>2.6.7
hutool.version>5.8.1
fastjson.version>1.2.83
- 拆分boot模块为 boot和mvc模块
- 将annotation模块中的部分model移动到core模块
- 删除废弃的RemoteData和相关代码
- 将代码中的字符串lamp替换为常量
feat
- 用户和岗位表新增创建人所属机构字段,并在新增数就是给与赋值
refactor
- 1. swagger version 调整到 bootstrap.yml 中
- 2. 废弃lamp-util项目中的lamp-security-starter模块(lamp-security-sdk + lamp-userinfo-sdk = lamp-security-starter模块)
- 3. 新增lamp-security-sdk模块
- 4. 新增lamp-userinfo-sdk模块
- 5. 重构lamp-data-scope-sdk模块,使其解耦不在依赖业务服务的模块
- 6. 新增lamp-model模块,用于存放业务相关的公共实体和VO
- 7. 重构lamp-tenant-datasource-init模块,使其解耦
- 8. 废弃lamp-tenant-datasource模块
- 9. Echo 重命名为 EchoApi
- 10. DictionaryType 重命名为 EchoDictType
- 11. 优化lamp-cloud项目依赖,便于各个服务能独立编译。编译顺序为:lamp-dependencies 、lamp-public 、 lamp-authority、 lamp-msg、lamp-file、lamp-tenant、lamp-oauth
- 12. @DS("#thread.tenant")修改为@DS(DsConstant.BASE_TENANT)、@DS(DsConstant.EXTEND_TENANT)
- 13. 新增租户时,表结构和初始数据 脚本调整
- 14. tenant服务 和 msg服务 启动时,默认连接2个库
- 15. 调整sql适配3.x的表结构
- 16. 优化机构管理页面布局
- 17. 优化角色资源维护页面显示是否默认数据权限标识
fix
- 修复升级导致的序列化规则失效导致的bug
- 枚举类型空字符串时,报错的bug
- 修复机构类型枚举参数和字典值不匹配
- 修复角色资源维护页面可正常显示资源类型
《灯灯》中后台快速开发平台
lamp 项目组成
1) 工具集 ( lamp-util 项目必备,其他 2 个可选)
2) 后端 (下面 2 个项目功能一致,任选其一即可)
3) 前端 (下面 3 个项目功能一致,任选其一即可)
如果你非要说 lamp 是 Linux+Apache+MySQL+PHP,那就算是吧,毕竟 PHP 是世界上最好的语言,我也希望此项目成为世界上最好的后台框架!😈😈😈
lamp-cloud 简介
lamp-cloud 的前身是 zuihou-admin-cloud,从 3.0.0 版本开始,改名为 lamp-cloud,它是 lamp 项目的其中一员。
lamp-cloud 基于 jdk11/jdk8 + SpringCloud + SpringCloudAlibaba+ SpringBoot 的微服务快速开发平台,其中的可配置的 SaaS 功能尤其闪耀, 具备 RBAC 功能、网关统一鉴权、Xss 防跨站攻击、自动代码生成、多种存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发, 支持多服务并行开发,可以作为后端服务的开发脚手架。代码简洁,注释齐全,架构清晰,非常适合学习和企业作为基础框架使用。
核心技术采用 Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking 等主要框架和中间件。 希望能努力打造一套从 JavaWeb基础框架 - 分布式微服务架构 - 持续集成 - 系统监测 的解决方案。本项目旨在实现基础能力,不涉及具体业务。
lamp 租户模式介绍
本项目可以通过配置,轻松切换项目的 多租户实现方式。
| 租户模式 |
描述 |
优点 |
缺点 |
| NONE (非租户模式) |
没有租户 |
简单、适合独立系统 |
缺少租户系统的优点 |
| COLUMN (字段模式) |
租户共用一个数据库,在业务表中增加字段来区分 |
简单、不复杂、开发无感知 |
数据隔离性差、安全性差、数据备份和恢复困难、 |
| SCHEMA (独立数据库) |
每个租户独立一个 数据库 (schema),执行 sql 时,动态在表名前增加 schema |
简单、开发无感知、数据隔离性好 |
配置文件中必须配置数据库的 root 账号、不支持复杂 sql 和 sql 嵌套自定义函数 |
| DATASOURCE (独立数据源) |
每个租户独立一个数据源,执行代码时,动态切换数据源 |
可独立部署数据库,数据隔离性好、扩展性高、故障影响小 |
相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
| SCHEMA_COLUMN (独立数据库 + 字段模式) |
每个租户独立一个 数据库,执行代码时,先动态切换数据源,在动态拼接 子租户 id 进行二次隔离 |
简单、开发无感知、数据隔离性好、支持大租户小门店形式 |
配置文件中必须配置数据库的 root 账号、不支持复杂 sql 和 sql 嵌套自定义函数 |
| DATASOURCE_COLUMN (独立数据源 + 字段模式) |
每个租户独立一个 数据库 (数据源),执行代码时,动态切换数据源,在动态拼接 子租户 id 二次隔离 |
可独立部署数据库,数据隔离性好、扩展性高、故障影响小、支持大租户小门店形式 |
相对复杂、开发需要注意切换数据源时的事务问题、需要较多的数据库 |
lamp 项目演示地址
- 后端使用 lamp-cloud-plus,前端使用 lamp-web-plus。演示地址: https://tangyh.top
- 后端使用 lamp-cloud-plus,前端使用 lamp-web。演示地址: https://tangyh.top/lamp-web
- 后端使用 lamp-boot-plus, 前端使用 lamp-web-plus。演示地址: https://boot.tangyh.top
- 后端使用 lamp-boot-plus, 前端使用 lamp-web。演示地址: https://boot.tangyh.top/lamp-web
演示地址账号:
- 平台管理员: lamp_pt/lamp (内置给公司内部运营人员使用)
- 超级管理员: lamp/lamp
- 普通管理员: general/lamp
- 普通账号: normal/lamp
ps: 演示环境中内置租户没有写入权限,若要在演示环境测试增删改,请使用 lamp_pt 账号查询租户管理员账号后,登录新租户测试
lamp-cloud 技术栈 / 版本介绍:
- 所涉及的相关的技术有:
- JSON 序列化:Jackson
- 消息队列:RabbitMQ
- 缓存:Redis
- 数据库: MySQL 5.7.9 或者 MySQL 8.0.19
- 定时器:采用 xxl-jobs 项目进行二次改造
- 前端:vue + element-ui
- 持久层框架: Mybatis-plus
- 代码生成器:基于 Mybatis-plus-generator 自定义
- API 网关:Gateway/zuul
- 服务注册 & 发现和配置中心: Nacos
- 服务消费:OpenFeign
- 负载均衡:Ribbon
- 服务熔断:Hystrix
- 项目构建:Maven
- 分布式事务: seata
- 分布式系统的流量防卫兵: Sentinel
- 监控: spring-boot-admin
- 链路调用跟踪: zipkin/SkyWalking
- 文件服务器:FastDFS 5.0.5 / 阿里云 OSS / 本地存储 / MinIO
- Nginx
- 部署方面:
- 服务器:CentOS
- Jenkins
- Docker
- Kubernetes
项目截图: