orise-charge-cloud业务模块详解
文章详细介绍了orise-charge-cloud项目中的核心业务模块,包括omind-api模块的功能与接口设计、omind-modules模块的业务逻辑解析、ruoyi-api与ruoyi-modules模块的作用,以及模块间的通信与依赖关系。
omind-api模块功能与接口设计
omind-api模块是orise-charge-cloud项目的核心业务接口模块,主要负责充电基础设施、用户客户端、消息队列等功能的接口设计与实现。该模块采用微服务架构,通过清晰的接口定义和模块化设计,为充电运营平台提供了高效、稳定的业务支持。以下将详细介绍其功能与接口设计。
模块组成与功能
omind-api模块包含多个子模块,每个子模块专注于特定的业务功能:
-
omind-api-baseplat
提供充电基础设施服务的接口,包括充电桩管理、充电站信息查询等功能。 -
omind-api-userplat
负责充电运营服务的接口,如订单管理、用户认证、费用结算等。 -
omind-api-mq
处理消息队列相关的接口,支持异步通知和事件驱动。 -
omind-api-common
提供通用工具类和基础功能,如数据校验、加密解密等。 -
omind-api-user-mq
用户客户端服务的消息队列接口,用于处理用户端的事件通知。
接口设计
omind-api模块的接口设计遵循RESTful风格,并通过Swagger文档提供详细的接口说明。以下是一些核心接口的示例:
1. 充电基础设施服务接口(omind-api-baseplat)
public class QueryTokenData implements Serializable {
private String operatorId;
private String token;
// 其他字段...
}
public class QueryStationsInfoData implements Serializable {
private String stationId;
private String stationName;
// 其他字段...
}
2. 充电运营服务接口(omind-api-userplat)
public class ChargeOrderListRequest implements Serializable {
private String userId;
private String orderStatus;
// 其他字段...
}
public class StopChargeRequest implements Serializable {
private String connectorId;
private String orderId;
// 其他字段...
}
3. 消息队列接口(omind-api-mq)
public class NotificationStationStatusData implements Serializable {
private String stationId;
private String status;
// 其他字段...
}
数据流设计
以下是充电订单处理的数据流程图:
核心功能实现
-
充电桩状态查询
通过QueryEquipChargeStatusData接口,实时获取充电桩的工作状态。 -
订单管理
提供订单创建、查询、取消等功能,支持分页和条件筛选。 -
异步通知
利用消息队列实现充电状态的异步通知,确保系统的高效响应。
总结
omind-api模块通过清晰的接口设计和模块化功能划分,为充电运营平台提供了强大的业务支持。其核心功能包括充电基础设施管理、订单处理、消息队列通知等,确保了系统的高效运行和良好的扩展性。
omind-modules模块业务逻辑解析
omind-modules是orise-charge-cloud项目的核心业务模块之一,包含了多个子模块,如omind-mp(用户客户端服务)、omind-simplat(模拟充电桩服务)、omind-baseplat(充电基础设施服务)等。这些模块共同构成了充电平台的核心业务逻辑,涵盖了从用户交互到充电桩管理的全流程功能。以下是对这些模块的业务逻辑解析。
omind-mp模块:用户客户端服务
omind-mp模块主要负责用户客户端的业务逻辑,包括用户登录、充电站查询、充电订单管理等。以下是其核心功能及实现:
1. 用户登录与认证
- 登录流程:用户通过小程序或H5页面发起登录请求,后端验证用户信息并返回Token。
- Token校验:通过
TokenCheckAspect切面实现Token的校验逻辑,确保用户请求的合法性。
@Aspect
@Component
public class TokenCheckAspect {
@Pointcut("@annotation(tokenCheck)")
public void tokenCheckPointCut(TokenCheck tokenCheck) {}
@Around("tokenCheckPointCut(tokenCheck)")
public Object doBefore(ProceedingJoinPoint joinPoint, TokenCheck tokenCheck) {
// Token校验逻辑
}
}
2. 充电站查询
- 地理查询:用户可以通过地图坐标查询附近的充电站,后端返回充电站列表及详细信息。
- 缓存机制:使用Redis缓存充电站数据,提升查询性能。
@Service
public class GeoServiceImpl implements GeoService {
@Override
public R geoStationList(GeoStationListRequest geoStationListRequest, SignRequest signRequest) {
// 查询逻辑
}
}
3. 充电订单管理
- 订单创建:用户选择充电桩后,后端生成充电订单并返回订单详情。
- 订单状态更新:实时更新订单状态,确保用户和运营方同步信息。
@Service
public class PrepareOrderServiceImpl implements PrepareOrderService {
@Override
public PrepareChargingVo prepareOrderInfo(Long uid, String connectorId, Short hasPrice) {
// 订单生成逻辑
}
}
omind-simplat模块:模拟充电桩服务
omind-simplat模块用于模拟充电桩的行为,支持开发和测试环境下的充电桩仿真。
1. 充电桩模拟
- 启动与停止:模拟充电桩的启动和停止操作,支持插枪、拔枪等行为。
- 实时数据上报:模拟充电桩的实时数据上报,包括电量、电压等信息。
@Service
public class SimPileClient implements SimPileIClient {
@Override
public void startCharge(SysChargeOrder sysChargeOrder) {
// 启动充电逻辑
}
@Override
public void stopCharge(int type, SysChargeOrder sysChargeOrder) {
// 停止充电逻辑
}
}
2. 订单处理
- 订单状态同步:模拟充电桩与后端服务同步订单状态,确保数据一致性。
- 异常处理:模拟充电桩异常情况,如断电、通信中断等。
@Service
public class StopChargingReturnServiceImpl implements StopChargingReturnService {
@Override
public void stopFail(SysChargeOrder sysChargeOrder) {
// 停止失败处理逻辑
}
}
omind-baseplat模块:充电基础设施服务
omind-baseplat模块负责充电桩的基础设施管理,包括充电桩状态监控、价格管理等。
1. 充电桩管理
- 状态监控:实时监控充电桩的状态,包括在线、离线、故障等。
- 数据上报:充电桩上报实时数据,后端存储并分析。
@Service
public class SysConnectorIServiceImpl implements SysConnectorIService {
@Override
public void updateConnectorStatus(String connectorId, Integer status) {
// 状态更新逻辑
}
}
2. 价格管理
- 价格设置:支持分时电价设置,满足不同场景下的定价需求。
- 价格同步:价格变动实时同步到用户端和充电桩。
@Service
public class SysPriceIServiceImpl implements SysPriceIService {
@Override
public void updatePrice(PriceEditRequest request) {
// 价格更新逻辑
}
}
业务流程图
以下为omind-modules模块的核心业务流程示意图:
总结
omind-modules模块通过多个子模块的协同工作,实现了充电平台的核心业务逻辑。从用户交互到充电桩管理,每个模块都承担了特定的职责,确保了系统的高效运行和良好的用户体验。
ruoyi-api与ruoyi-modules模块作用
在orise-charge-cloud项目中,ruoyi-api和ruoyi-modules是两个核心模块,分别承担不同的职责。以下是对这两个模块的详细解析:
ruoyi-api模块
ruoyi-api模块是项目的接口定义层,主要用于提供统一的API服务,供其他模块或外部系统调用。它包含以下子模块:
1. ruoyi-api-resource
- 作用:提供资源相关的API接口,如文件上传、下载等。
- 核心类:
RemoteFileService:文件服务接口,定义文件上传和下载功能。RemoteMailService:邮件服务接口,定义邮件发送功能。
- 示例代码:
public interface RemoteFileService { RemoteFile upload(String name, String originalFilename, String contentType, byte[] file); String selectUrlByIds(String ossIds); }
2. ruoyi-api-system
- 作用:提供系统管理相关的API接口,如用户管理、角色管理、日志管理等。
- 核心类:
RemoteUserService:用户服务接口,定义用户增删改查功能。RemoteLogService:日志服务接口,定义日志记录功能。
- 示例代码:
public interface RemoteUserService { RemoteUserBo getUserById(Long userId); Boolean updateUser(RemoteUserBo userBo); }
3. ruoyi-api-bom
- 作用:管理项目的依赖版本,确保各模块依赖一致。
ruoyi-modules模块
ruoyi-modules模块是项目的业务实现层,包含具体的业务逻辑实现。它包含以下子模块:
1. ruoyi-system
- 作用:实现系统管理功能,如用户管理、角色管理、菜单管理等。
- 核心类:
SysUserServiceImpl:用户服务实现类。SysRoleServiceImpl:角色服务实现类。
- 示例代码:
@Service public class SysUserServiceImpl implements ISysUserService { @Override public SysUserVo getUserById(Long userId) { return userMapper.selectUserById(userId); } }
2. ruoyi-resource
- 作用:实现资源管理功能,如文件存储等。
- 核心类:
SysOssServiceImpl:文件存储服务实现类。
- 示例代码:
@Service public class SysOssServiceImpl implements ISysOssService { @Override public SysOssVo upload(MultipartFile file) { // 文件上传逻辑 } }
3. ruoyi-job
- 作用:实现定时任务管理功能。
模块关系图
功能对比表
| 模块 | 职责 | 核心功能 |
|---|---|---|
| ruoyi-api | 接口定义 | 提供统一的API服务 |
| ruoyi-modules | 业务实现 | 实现具体的业务逻辑 |
通过以上分析,可以清晰地看到ruoyi-api和ruoyi-modules在项目中的分工与协作关系。
模块间通信与依赖关系
在orise-charge-cloud项目中,模块间的通信与依赖关系是系统高效运行的核心。通过分析项目结构和代码定义,可以清晰地梳理出各模块之间的交互方式及其依赖关系。
1. 模块间通信方式
1.1 HTTP/RESTful API
- 描述:模块间通过HTTP协议调用RESTful API进行通信,例如
omind-api-userplat模块通过HTTP请求与ruoyi-auth模块交互。 - 示例:
@RestController @RequestMapping("/api/userplat") public class UserPlatController { @Autowired private RemoteUserService remoteUserService; @GetMapping("/user/{id}") public ResponseEntity<User> getUser(@PathVariable Long id) { return remoteUserService.getUserById(id); } }
1.2 消息队列(RabbitMQ)
- 描述:异步通信通过RabbitMQ实现,例如
omind-api-mq模块负责处理消息队列的发布与订阅。 - 示例:
@Component public class ChargeMessageListener { @RabbitListener(queues = "charge.queue") public void handleMessage(ChargeMessage message) { // 处理充电消息 } }
1.3 Dubbo RPC
- 描述:部分模块通过Dubbo实现远程过程调用(RPC),例如
omind-baseplat模块调用ruoyi-system模块的服务。 - 示例:
@Service public class BasePlatServiceImpl implements BasePlatService { @Reference private RemoteSystemService remoteSystemService; @Override public SystemInfo getSystemInfo() { return remoteSystemService.getSystemInfo(); } }
2. 模块依赖关系
2.1 核心依赖
omind-api-common:作为通用模块,被其他业务模块(如omind-api-userplat、omind-api-baseplat)依赖,提供公共工具类和基础配置。ruoyi-common-core:提供核心功能(如日志、缓存、权限等),被所有业务模块依赖。
2.2 业务模块依赖
omind-api-userplat:- 依赖
omind-api-common和ruoyi-common-core。 - 通过Dubbo调用
ruoyi-system模块的服务。
- 依赖
omind-api-baseplat:- 依赖
omind-api-common和ruoyi-common-core。 - 通过HTTP调用
ruoyi-resource模块的接口。
- 依赖
2.3 外部依赖
omind-simplat:- 依赖
omind-api-mq模块,通过RabbitMQ接收模拟充电桩的消息。 - 调用
omind-api-userplat模块的接口上报充电状态。
- 依赖
3. 通信流程图
以下为模块间通信的流程图示例:
4. 依赖关系表
| 模块名称 | 依赖模块 | 通信方式 |
|---|---|---|
omind-api-userplat | omind-api-common | 本地依赖 |
ruoyi-system | Dubbo RPC | |
omind-api-baseplat | omind-api-common | 本地依赖 |
ruoyi-resource | HTTP/RESTful | |
omind-simplat | omind-api-mq | RabbitMQ |
omind-api-userplat | HTTP/RESTful |
通过以上分析,可以清晰地看到orise-charge-cloud项目中模块间的通信与依赖关系,为后续的开发和维护提供了重要参考。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



