# charging-platform **Repository Path**: wanglt/charging-platform ## Basic Information - **Project Name**: charging-platform - **Description**: 新能源汽车充电桩平台,兼容云快充、柏来设备协议 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2024-09-27 - **Last Updated**: 2024-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 充电平台系统介绍 ```text 随着新能源汽车的发展,越来越多的用户需要使用到充电桩。 而充电桩的接入方式也越来越多。目前市面上已经有很多厂商提供了充电桩接入方案。 但是这些方案都是基于厂商协议,故利用闲暇时间开发一套支持不同厂商协议的充电系统平台。 ``` ## 支持的设备协议 - 柏来 - 云快充 ## 汽车充电平台 - maven构建项目,以容器运行。 - 主框架:springboot、dubbo、seata、mybatis-plus - 数据库:mysql(业务库) ### 开发要求 - 需安装阿里巴巴Java开发规范、打开实时扫描 - 代码风格参考现在业务代码,勿写个性化代码 - 命名简单清晰明了 - 新建包结构参考已有结构 ### 目录结构 ``` ├─ docs 文档文件夹 ├─ docker-files 存放Dockerfile文件,CI系统自动执行构建 ├─ sql 存放数据库DDL ├─ common 公共模块 │ ├──api 公共服务接口 │ ├──core 核心工具类(尽量是不引用外部依赖,所有模块都会依赖这个,保持clear) │ ├──dao 公共dao │ ├──dubbo 公共dubbo │ ├──service 公共service │ ├──web 公共web ├─ device 设备操作模块 ├─ business 业务模块 │ ├──business-api 业务服务接口 │ ├──business-dao 业务 │ ├──business-service 业务service │ ├──business-web 业务web ├─ Jenkinsfile jenkins构建文件 ├─ arm64 arm架构相关构建模块 ``` ### 1、系统是如何实现操作不同协议 ![设备操作模块设计.svg](docs%2Fimg%2F%E8%AE%BE%E5%A4%87%E6%93%8D%E4%BD%9C%E6%A8%A1%E5%9D%97%E8%AE%BE%E8%AE%A1.svg) ```text 设计想法💡 a、先阅读主流充电厂商协议,从协议中提炼重点部分,再结合业务分析总结 b、在程序系统中抽象出设备操作接口和领域模型 c、按照各个厂商协议实现抽象设备接口 d、按分组实现协议实例注册到注册中心 e、业务模块可根据设备类型选择合适的设备操作实例调用 ``` ### 2、业务系统架构 ![充电平台系统架构图.svg](docs%2Fimg%2F%E5%85%85%E7%94%B5%E5%B9%B3%E5%8F%B0%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%9B%BE.svg) ```text 按目前主流成熟技术设计(传统MVC架构) a、web端受理小程序、web端、第三方接入请求,需要做参数校验(xss,sql注入等)、权限校验、限流措施等 b、业务模块处理具体业务并返回响应处理结果 c、中间件负责缓存数据,消息流转、向用户发送通知等 d、数据持久层,如果用户体量大的话,可以考虑将关系型数据同步到分析型数据库,做业务数据分析 反之,一主两从架构可满足需要,查询操作从从库中获取数据 ```