mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-19 18:45:03 +08:00
添加claude.md
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -32,3 +32,4 @@ build/
|
|||||||
### VS Code ###
|
### VS Code ###
|
||||||
.vscode/
|
.vscode/
|
||||||
.mvn/
|
.mvn/
|
||||||
|
/.claude/
|
||||||
|
|||||||
225
CLAUDE.md
Normal file
225
CLAUDE.md
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## 项目概述
|
||||||
|
|
||||||
|
万车充运营管理平台 (jsowell-charger-web) - 电动汽车充电桩管理系统,基于 Spring Boot 2.5.14 + MyBatis + Netty 构建的多模块 Maven 项目。
|
||||||
|
|
||||||
|
**技术栈**:
|
||||||
|
- Java 8
|
||||||
|
- Spring Boot 2.5.14
|
||||||
|
- MyBatis + MyBatis-Plus 3.4.0
|
||||||
|
- Netty 4.1.75 (TCP/MQTT 通信)
|
||||||
|
- Dubbo 3.3.0 + Nacos (微服务)
|
||||||
|
- Redis (缓存)
|
||||||
|
- RabbitMQ (消息队列)
|
||||||
|
- MySQL (数据库)
|
||||||
|
- Druid (连接池)
|
||||||
|
|
||||||
|
## 模块架构
|
||||||
|
|
||||||
|
项目采用多模块分层架构,各模块职责清晰:
|
||||||
|
|
||||||
|
```
|
||||||
|
jsowell-charger-web/
|
||||||
|
├── jsowell-admin/ # Web 服务入口模块,包含 Controller 层和启动类
|
||||||
|
├── jsowell-framework/ # 核心框架模块,包含安全、权限、登录等基础服务
|
||||||
|
├── jsowell-system/ # 系统管理模块,用户、角色、菜单、字典等
|
||||||
|
├── jsowell-common/ # 通用工具模块,工具类、常量、异常、注解等
|
||||||
|
├── jsowell-pile/ # 充电桩业务核心模块,订单、会员、计费、支付等
|
||||||
|
├── jsowell-netty/ # Netty 通信模块,处理充电桩设备 TCP/MQTT 协议
|
||||||
|
├── jsowell-thirdparty/ # 第三方平台对接模块,支付宝、微信、高德地图等
|
||||||
|
├── jsowell-quartz/ # 定时任务模块
|
||||||
|
├── jsowell-generator/ # 代码生成器模块
|
||||||
|
└── jsowell-settlement/ # 结算模块
|
||||||
|
```
|
||||||
|
|
||||||
|
**模块依赖关系**:
|
||||||
|
- `jsowell-admin` 依赖 `jsowell-framework`、`jsowell-pile`、`jsowell-netty`、`jsowell-thirdparty`
|
||||||
|
- `jsowell-pile` 依赖 `jsowell-framework`(核心业务逻辑)
|
||||||
|
- `jsowell-netty` 依赖 `jsowell-pile`、`jsowell-thirdparty`(设备通信)
|
||||||
|
- `jsowell-framework` 依赖 `jsowell-system`、`jsowell-common`(基础框架)
|
||||||
|
|
||||||
|
## 核心业务流程
|
||||||
|
|
||||||
|
### 充电桩通信架构
|
||||||
|
|
||||||
|
系统通过 Netty 实现与充电桩设备的实时通信:
|
||||||
|
|
||||||
|
1. **TCP 服务器**:`jsowell-netty` 模块启动 TCP 服务器监听充电桩连接
|
||||||
|
2. **协议处理**:
|
||||||
|
- 云快充协议:`com.jsowell.netty.handler.yunkuaichong.*Handler`(50+ 个处理器)
|
||||||
|
- 电动自行车协议:`com.jsowell.netty.handler.electricbicycles.*Handler`
|
||||||
|
3. **MQTT 支持**:`BootNettyMqttChannelInboundHandler` 处理 MQTT 协议
|
||||||
|
4. **业务服务**:
|
||||||
|
- `YKCBusinessService`:云快充业务逻辑
|
||||||
|
- `EBikeBusinessService`:电动自行车业务逻辑
|
||||||
|
- `CameraBusinessService`:摄像头业务逻辑
|
||||||
|
|
||||||
|
### 支付与结算流程
|
||||||
|
|
||||||
|
支持多种支付方式:
|
||||||
|
- **微信支付**:`WechatPayService`(V3 API)
|
||||||
|
- **支付宝支付**:`AliAppletRemoteService`
|
||||||
|
- **汇付支付**:`AdapayMemberAccountService`
|
||||||
|
|
||||||
|
结算相关:
|
||||||
|
- 订单分账:`OrderSplitRecordService`
|
||||||
|
- 清算账单:`ClearingBillInfoService`
|
||||||
|
- 商户结算:`SettleOrderReportService`
|
||||||
|
|
||||||
|
### 第三方平台对接
|
||||||
|
|
||||||
|
`jsowell-thirdparty` 模块对接多个第三方平台:
|
||||||
|
- **高德地图**:`AMapService`(充电站信息同步)
|
||||||
|
- **停车场系统**:`QcyunsService`、`LTYTService`、`RJService`
|
||||||
|
- **充电平台**:`ZDLService`(中电联)、`NRService`(南瑞)、`XDTService`(新电途)
|
||||||
|
|
||||||
|
## 常用开发命令
|
||||||
|
|
||||||
|
### 构建与运行
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 编译整个项目
|
||||||
|
mvn clean compile
|
||||||
|
|
||||||
|
# 打包(跳过测试)
|
||||||
|
mvn clean package -DskipTests
|
||||||
|
|
||||||
|
# 运行主应用(开发环境)
|
||||||
|
cd jsowell-admin
|
||||||
|
mvn spring-boot:run -Dspring-boot.run.profiles=dev
|
||||||
|
|
||||||
|
# 运行测试
|
||||||
|
mvn test
|
||||||
|
```
|
||||||
|
|
||||||
|
### 数据库相关
|
||||||
|
|
||||||
|
**MyBatis Mapper 位置**:
|
||||||
|
- XML 文件:`src/main/resources/mapper/**/*Mapper.xml`
|
||||||
|
- Java 接口:`src/main/java/**/mapper/*Mapper.java`
|
||||||
|
- 配置:`mybatis-config.xml`(在 `jsowell-admin/src/main/resources/mybatis/`)
|
||||||
|
|
||||||
|
**MyBatis-Plus**:`jsowell-pile` 模块使用 MyBatis-Plus 3.4.0,支持 Lambda 查询和代码生成。
|
||||||
|
|
||||||
|
### 环境配置
|
||||||
|
|
||||||
|
**配置文件位置**:`jsowell-admin/src/main/resources/`
|
||||||
|
- `application.yml`:主配置文件
|
||||||
|
- `application-dev.yml`:开发环境
|
||||||
|
- `application-sit.yml`:测试环境
|
||||||
|
- `application-pre.yml`:预发布环境
|
||||||
|
- `application-prd.yml`:生产环境
|
||||||
|
|
||||||
|
**切换环境**:修改 `application.yml` 中的 `spring.profiles.active`
|
||||||
|
|
||||||
|
### Dubbo 服务
|
||||||
|
|
||||||
|
项目使用 Dubbo 3.3.0 + Nacos 作为微服务框架:
|
||||||
|
- 注册中心:Nacos
|
||||||
|
- 协议:dubbo(动态端口)
|
||||||
|
- API 定义:`charge-common-api` 模块
|
||||||
|
|
||||||
|
## 代码规范
|
||||||
|
|
||||||
|
### 包结构约定
|
||||||
|
|
||||||
|
```
|
||||||
|
com.jsowell.{module}/
|
||||||
|
├── controller/ # REST API 控制器
|
||||||
|
├── service/ # 业务逻辑接口
|
||||||
|
│ └── impl/ # 业务逻辑实现
|
||||||
|
├── mapper/ # MyBatis Mapper 接口
|
||||||
|
├── domain/ # 实体类(对应数据库表)
|
||||||
|
├── dto/ # 数据传输对象
|
||||||
|
└── vo/ # 视图对象
|
||||||
|
```
|
||||||
|
|
||||||
|
### 命名规范
|
||||||
|
|
||||||
|
- **Controller**:`{Entity}Controller`,使用 `@RestController` 或 `@Controller`
|
||||||
|
- **Service**:接口 `I{Entity}Service` 或 `{Entity}Service`,实现类 `{Entity}ServiceImpl`
|
||||||
|
- **Mapper**:`{Entity}Mapper`(接口)+ `{Entity}Mapper.xml`(XML)
|
||||||
|
- **Domain**:实体类名与数据库表名对应(驼峰转下划线)
|
||||||
|
|
||||||
|
### 注解使用
|
||||||
|
|
||||||
|
- **Swagger**:使用 `@Api`、`@ApiOperation`、`@ApiParam` 生成 API 文档
|
||||||
|
- **权限控制**:`@PreAuthorize("@ss.hasPermi('system:user:list')")`
|
||||||
|
- **日志记录**:`@Log(title = "用户管理", businessType = BusinessType.INSERT)`
|
||||||
|
- **数据权限**:`@DataScope(deptAlias = "d", userAlias = "u")`
|
||||||
|
|
||||||
|
## 关键配置说明
|
||||||
|
|
||||||
|
### Netty 服务器配置
|
||||||
|
|
||||||
|
Netty 服务器在 `jsowell-netty` 模块中配置,支持:
|
||||||
|
- TCP 服务器(云快充协议)
|
||||||
|
- MQTT 服务器(物联网设备)
|
||||||
|
- 电动自行车专用服务器
|
||||||
|
|
||||||
|
### 安全与认证
|
||||||
|
|
||||||
|
- **JWT Token**:`TokenService` 管理 Token 生成和验证
|
||||||
|
- **密码加密**:使用 BCrypt 加密
|
||||||
|
- **权限验证**:`PermissionService` 和 `SysPermissionService`
|
||||||
|
- **登录限制**:密码错误 5 次锁定 10 分钟
|
||||||
|
|
||||||
|
### 缓存策略
|
||||||
|
|
||||||
|
使用 Redis 缓存:
|
||||||
|
- 用户登录信息
|
||||||
|
- 字典数据
|
||||||
|
- 配置参数
|
||||||
|
- 充电桩在线状态
|
||||||
|
|
||||||
|
### 文件上传
|
||||||
|
|
||||||
|
- **本地存储**:配置 `jsowell.profile` 路径
|
||||||
|
- **阿里云 OSS**:配置在 `aliyunoss` 节点
|
||||||
|
- **Minio**:可选的对象存储方案
|
||||||
|
|
||||||
|
## 测试说明
|
||||||
|
|
||||||
|
测试文件位置:`jsowell-admin/src/test/java/`
|
||||||
|
|
||||||
|
现有测试:
|
||||||
|
- `SpringBootTestController.java`:Spring Boot 集成测试
|
||||||
|
- `PaymentTestController.java`:支付功能测试
|
||||||
|
|
||||||
|
## 监控与运维
|
||||||
|
|
||||||
|
### Prometheus 监控
|
||||||
|
|
||||||
|
- 监控端口:8091
|
||||||
|
- 指标路径:`/actuator/prometheus`
|
||||||
|
- 配置:`management.metrics.export.prometheus.enabled=true`
|
||||||
|
|
||||||
|
### Druid 监控
|
||||||
|
|
||||||
|
- 访问路径:`/druid/*`
|
||||||
|
- 用户名/密码:配置在 `application-{env}.yml` 中
|
||||||
|
|
||||||
|
### Swagger API 文档
|
||||||
|
|
||||||
|
- 开发环境访问:`http://localhost:8080/swagger-ui/`
|
||||||
|
- 配置:`swagger.enabled=true`
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. **数据库连接**:使用 Druid 连接池,主从分离配置在 `application-{env}.yml`
|
||||||
|
2. **事务管理**:使用 `@Transactional` 注解,注意事务传播行为
|
||||||
|
3. **异步处理**:RabbitMQ 配置手动确认模式(`acknowledge-mode: manual`)
|
||||||
|
4. **Netty 线程模型**:注意 EventLoop 线程安全,避免阻塞操作
|
||||||
|
5. **Dubbo 服务**:启动时不检查提供者(`consumer.check=false`)
|
||||||
|
6. **日志级别**:开发环境 `com.jsowell: debug`,生产环境建议 `info`
|
||||||
|
7. **热部署**:开发环境启用 `spring.devtools.restart.enabled=true`
|
||||||
|
|
||||||
|
## 启动类
|
||||||
|
|
||||||
|
主启动类:`com.jsowell.JsowellApplication`
|
||||||
|
- 位置:`jsowell-admin/src/main/java/com/jsowell/JsowellApplication.java`
|
||||||
|
- 注解:`@SpringBootApplication`、`@EnableDubbo`
|
||||||
|
- 排除:`DataSourceAutoConfiguration`(使用自定义数据源配置)
|
||||||
Reference in New Issue
Block a user