Files
jsowell-charger-web/CLAUDE.md
2026-02-03 14:20:30 +08:00

17 KiB
Raw Permalink Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.


变更记录 (Changelog)

2026-02-03 11:32:30

  • 增量更新项目架构文档
  • 更新文件统计600+ Java 文件、80 个 Mapper XML、60 个枚举类
  • 新增各模块 CLAUDE.md 文档10 个模块)
  • 更新模块依赖关系与覆盖率报告
  • 识别 108 个 Controller、80 个 Service 实现类
  • 覆盖率:核心模块 100%,测试模块 90%

2026-01-30 16:51:50

  • 初始化项目架构文档
  • 完成全仓扫描与模块识别10 个模块)
  • 生成根级 CLAUDE.md 文档
  • 建立模块依赖关系图Mermaid
  • 识别 500+ Java 文件、85 个 Mapper XML、168 个测试用例
  • 覆盖率:核心模块 100%,测试模块 85%

项目愿景

万车充运营管理平台 (jsowell-charger-web) 是一个企业级电动汽车充电桩运营管理系统,旨在为充电站运营商提供完整的解决方案:

  • 设备管理: 充电桩设备监控、状态管理、远程控制
  • 会员服务: 会员注册、钱包管理、积分系统、车牌绑定
  • 订单管理: 充电订单、支付结算、分账清算、退款处理
  • 实时通信: 基于 Netty 的 TCP/MQTT 协议处理,支持云快充协议
  • 平台互联: 对接中电联、南瑞、高德地图等第三方平台
  • 支付集成: 支持微信、支付宝、汇付支付等多种支付方式

架构总览

技术栈

技术 版本 用途
Java 1.8 开发语言
Spring Boot 2.5.14 应用框架
MyBatis 2.2.2 持久层框架
MyBatis-Plus 3.4.0 增强工具jsowell-pile 模块)
Netty 4.1.75.Final 设备通信TCP/MQTT
Dubbo 3.3.0 微服务框架
Nacos 2.0.3 服务注册与配置中心
Redis - 缓存
RabbitMQ - 消息队列
MySQL - 数据库
Druid 1.2.11 数据库连接池
Swagger 3.0.0 API 文档
Quartz - 定时任务

核心特性

  1. 多模块分层架构: 清晰的模块职责划分,便于维护和扩展
  2. 设备实时通信: 基于 Netty 的 TCP/MQTT 协议处理,支持云快充、电动自行车等多种设备
  3. 微服务架构: Dubbo + Nacos 实现服务治理与配置管理
  4. 异步消息处理: RabbitMQ 实现订单结算、积分发放等异步任务
  5. 多支付方式: 支持微信、支付宝、汇付支付、余额支付、白名单免费等
  6. 第三方平台对接: 支持中电联、南瑞、新电途、高德地图、停车场系统等
  7. 分账清算: 完整的商户分账与清算流程,支持汇付支付分账
  8. 积分系统: 充电奖励积分,异步发放,支持积分抵扣

模块结构图

graph TD
    A["jsowell-charger-web<br/>(根项目)"] --> B["jsowell-admin<br/>(Web 入口)"];
    A --> C["jsowell-framework<br/>(核心框架)"];
    A --> D["jsowell-system<br/>(系统管理)"];
    A --> E["jsowell-common<br/>(通用工具)"];
    A --> F["jsowell-pile<br/>(充电桩业务)"];
    A --> G["jsowell-netty<br/>(设备通信)"];
    A --> H["jsowell-thirdparty<br/>(第三方对接)"];
    A --> I["jsowell-quartz<br/>(定时任务)"];
    A --> J["jsowell-generator<br/>(代码生成)"];
    A --> K["jsowell-settlement<br/>(结算模块)"];

    B --> C;
    B --> F;
    B --> G;
    B --> H;
    C --> D;
    C --> E;
    D --> E;
    F --> C;
    G --> F;
    G --> H;
    H --> F;
    I --> F;
    I --> G;
    I --> H;
    K --> F;
    J --> E;

    style A fill:#e1f5ff
    style B fill:#fff4e1
    style C fill:#ffe1e1
    style F fill:#e1ffe1
    style G fill:#f0e1ff

    click B "./jsowell-admin/CLAUDE.md" "查看 jsowell-admin 模块文档"
    click C "./jsowell-framework/CLAUDE.md" "查看 jsowell-framework 模块文档"
    click D "./jsowell-system/CLAUDE.md" "查看 jsowell-system 模块文档"
    click E "./jsowell-common/CLAUDE.md" "查看 jsowell-common 模块文档"
    click F "./jsowell-pile/CLAUDE.md" "查看 jsowell-pile 模块文档"
    click G "./jsowell-netty/CLAUDE.md" "查看 jsowell-netty 模块文档"
    click H "./jsowell-thirdparty/CLAUDE.md" "查看 jsowell-thirdparty 模块文档"
    click I "./jsowell-quartz/CLAUDE.md" "查看 jsowell-quartz 模块文档"
    click J "./jsowell-generator/CLAUDE.md" "查看 jsowell-generator 模块文档"
    click K "./jsowell-settlement/CLAUDE.md" "查看 jsowell-settlement 模块文档"

模块索引

模块 路径 职责 主要依赖 状态
jsowell-admin /jsowell-admin Web 服务入口,包含 Controller 层和启动类 framework, pile, netty, thirdparty 活跃
jsowell-framework /jsowell-framework 核心框架,包含安全、权限、登录等基础服务 system, common 活跃
jsowell-system /jsowell-system 系统管理模块,用户、角色、菜单、字典等 common 活跃
jsowell-common /jsowell-common 通用工具模块,工具类、常量、异常、注解等 - 活跃
jsowell-pile /jsowell-pile 充电桩业务核心模块,订单、会员、计费、支付等 framework 活跃
jsowell-netty /jsowell-netty Netty 通信模块,处理充电桩设备 TCP/MQTT 协议 pile, thirdparty 活跃
jsowell-thirdparty /jsowell-thirdparty 第三方平台对接模块,支付宝、微信、高德地图等 pile 活跃
jsowell-quartz /jsowell-quartz 定时任务模块 pile, netty, thirdparty 活跃
jsowell-generator /jsowell-generator 代码生成器模块 common 活跃
jsowell-settlement /jsowell-settlement 结算模块 pile ⚠️ 待完善

运行与开发

环境要求

  • JDK: 1.8+
  • Maven: 3.6+
  • MySQL: 5.7+
  • Redis: 3.0+
  • RabbitMQ: 3.8+
  • Nacos: 2.0+

快速启动

# 1. 克隆项目
git clone <repository-url>
cd jsowell-charger-web

# 2. 编译项目
mvn clean compile

# 3. 打包(跳过测试)
mvn clean package -DskipTests

# 4. 运行主应用(开发环境)
cd jsowell-admin
mvn spring-boot:run -Dspring-boot.run.profiles=dev

# 或者运行打包后的 jar
java -jar jsowell-admin/target/jsowell-admin.jar --spring.profiles.active=dev

环境配置

配置文件位置:jsowell-admin/src/main/resources/

  • application.yml - 主配置文件
  • application-dev.yml - 开发环境
  • application-sit.yml - 测试环境
  • application-pre.yml - 预发布环境
  • application-prd.yml - 生产环境

切换环境:修改 application.yml 中的 spring.profiles.active

访问地址

  • 应用端口: http://localhost:8080
  • Swagger 文档: http://localhost:8080/swagger-ui/
  • Druid 监控: http://localhost:8080/druid/
  • Prometheus 监控: http://localhost:8091/actuator/prometheus

数据库配置

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-Plusjsowell-pile 模块使用 MyBatis-Plus 3.4.0,支持 Lambda 查询和代码生成。

Dubbo 服务

项目使用 Dubbo 3.3.0 + Nacos 作为微服务框架:

  • 注册中心Nacos
  • 协议dubbo动态端口
  • API 定义:charge-common-api 模块(版本 0.1.7

测试策略

测试文件位置

  • 单元测试:jsowell-admin/src/test/java/
  • 集成测试:同上

现有测试

测试类 测试数量 说明
SpringBootTestController 131 Spring Boot 集成测试
PaymentTestController 20 支付功能测试
JcppMessageControllerTest 8 JCPP 消息测试
PricingModelConverterTest 4 计费模型转换测试
OrderServiceWhitelistCompletionTest 3 白名单订单测试
WhitelistOrderCompletionDefaultsTest 2 白名单默认值测试
MemberBindingCarNoHttpTest - 会员车牌绑定 HTTP 测试

总计: 168 个测试用例

运行测试

# 运行所有测试
mvn test

# 运行指定模块测试
mvn test -pl jsowell-admin

# 跳过测试
mvn clean package -DskipTests

编码规范

包结构约定

com.jsowell.{module}/
├── controller/         # REST API 控制器
├── service/           # 业务逻辑接口
│   └── impl/         # 业务逻辑实现
├── mapper/           # MyBatis Mapper 接口
├── domain/           # 实体类(对应数据库表)
├── dto/              # 数据传输对象
├── vo/               # 视图对象
├── enums/            # 枚举类
├── config/           # 配置类
└── mq/               # 消息队列相关
    ├── producer/     # 消息生产者
    └── consumer/     # 消息消费者

命名规范

  • Controller: {Entity}Controller,使用 @RestController@Controller
  • Service: 接口 I{Entity}Service{Entity}Service,实现类 {Entity}ServiceImpl
  • Mapper: {Entity}Mapper(接口)+ {Entity}Mapper.xmlXML
  • Domain: 实体类名与数据库表名对应(驼峰转下划线)
  • Enum: {Name}Enum,放在 enums 包下

注解使用

  • Swagger: @Api, @ApiOperation, @ApiParam 生成 API 文档
  • 权限控制: @PreAuthorize("@ss.hasPermi('system:user:list')")
  • 日志记录: @Log(title = "用户管理", businessType = BusinessType.INSERT)
  • 数据权限: @DataScope(deptAlias = "d", userAlias = "u")
  • 事务管理: @Transactional(rollbackFor = Exception.class)
  • RabbitMQ: @RabbitListener, @RabbitHandler

代码质量

  • 使用 Lombok 减少样板代码(@Data, @Slf4j, @Builder 等)
  • 统一异常处理 (GlobalExceptionHandler)
  • 统一返回结果 (AjaxResult, R)
  • 日志规范:使用 SLF4J + Logback
  • 使用 Swagger 注解生成 API 文档

AI 使用指引

常见任务

1. 添加新的业务功能

请帮我在 jsowell-pile 模块中添加一个新的会员优惠券功能,包括:
- 实体类 MemberCoupon对应数据库表 member_coupon
- Mapper 接口和 XML参考 MemberPointsInfoMapper
- Service 接口和实现(参考 MemberPointsInfoService
- Controller API参考 MemberPointsInfoController
- 需要支持 CRUD 操作和优惠券发放功能

2. 修改订单结算逻辑

请查看 /Users/autumn/Workspace/jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
中的 realTimeOrderSplit() 方法,帮我理解当前的分账逻辑,并建议如何优化。

3. 添加第三方平台对接

请参考 /Users/autumn/Workspace/jsowell-charger-web/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/zhongdianlian/service/impl/ZDLServiceImpl.java
的实现,帮我添加一个新的第三方平台对接,平台名称是 XXX需要实现以下接口...

4. 调试 Netty 通信问题

充电桩设备无法正常登录,请帮我检查
/Users/autumn/Workspace/jsowell-charger-web/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java
中的登录处理逻辑,并查看相关的 RabbitMQ 消息队列配置。

5. 添加新的枚举类型

请在 jsowell-common 模块的 enums 包下添加一个新的枚举类 OrderRefundStatusEnum
用于表示订单退款状态,参考现有的 OrderStatusEnum 的实现方式。

关键文件索引

功能 关键文件
启动类 /Users/autumn/Workspace/jsowell-charger-web/jsowell-admin/src/main/java/com/jsowell/JsowellApplication.java
主配置 /Users/autumn/Workspace/jsowell-charger-web/jsowell-admin/src/main/resources/application.yml
订单结算 /Users/autumn/Workspace/jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
设备通信 /Users/autumn/Workspace/jsowell-charger-web/jsowell-netty/src/main/java/com/jsowell/netty/service/yunkuaichong/impl/YKCBusinessServiceImpl.java
积分系统 /Users/autumn/Workspace/jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberPointsInfoServiceImpl.java
微信支付 /Users/autumn/Workspace/jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WechatPayConfig.java
支付宝支付 /Users/autumn/Workspace/jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/alipay/config/AliPayConfig.java
汇付支付 /Users/autumn/Workspace/jsowell-charger-web/jsowell-pile/src/main/java/com/jsowell/adapay/config/InitializeAdapayConfig.java
RabbitMQ 配置 /Users/autumn/Workspace/jsowell-charger-web/jsowell-common/src/main/java/com/jsowell/common/config/mq/RabbitConfig.java
积分 RabbitMQ /Users/autumn/Workspace/jsowell-charger-web/jsowell-common/src/main/java/com/jsowell/common/config/mq/PointsRabbitConfig.java
安全配置 /Users/autumn/Workspace/jsowell-charger-web/jsowell-framework/src/main/java/com/jsowell/framework/config/SecurityConfig.java
Redis 配置 /Users/autumn/Workspace/jsowell-charger-web/jsowell-framework/src/main/java/com/jsowell/framework/config/RedisConfig.java

数据库表索引

详细的数据库表结构请参考各模块的 CLAUDE.md 文档。

主要表分类:

  • 会员相关: member_basic_info, member_wallet_info, member_wallet_log, member_points_info, member_points_record, member_plate_number_relation
  • 充电桩相关: pile_station_info, pile_basic_info, pile_connector_info, pile_billing_template, pile_merchant_info, pile_station_whitelist, pile_auth_card
  • 订单相关: order_basic_info, order_pay_record, order_monitor_data, order_abnormal_record, order_split_record
  • 结算相关: clearing_bill_info, clearing_bill_detail, station_split_config, settle_order_report
  • 系统相关: sys_user, sys_role, sys_menu, sys_dept, sys_dict_type, sys_dict_data, sys_config

枚举类索引

项目中定义了大量枚举类,位于 jsowell-common/src/main/java/com/jsowell/common/enums/ 目录下:

  • 订单相关: OrderStatusEnum, OrderPayStatusEnum, OrderPayModeEnum, OrderTypeEnum
  • 支付相关: PayModeEnum, PaymentInstitutionsEnum, AdapayStatusEnum, AdapayPayChannelEnum
  • 充电桩相关: PileStatusEnum, PileConnectorStatusEnum, StartModeEnum, StopChargingFailedReasonEnum
  • 会员相关: MemberWalletEnum, BalanceChangesEnum
  • 第三方平台: ThirdPlatformTypeEnum, ThirdPartyApiEnum, ThirdPartyReturnCodeEnum

监控与运维

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

日志

  • 日志配置: logback-spring.xml
  • 日志级别:
    • 开发环境: com.jsowell: debug
    • 生产环境: com.jsowell: info

注意事项

  1. 数据库连接: 使用 Druid 连接池,主从分离配置在 application-{env}.yml
  2. 事务管理: 使用 @Transactional 注解,注意事务传播行为
  3. 异步处理: RabbitMQ 已改为自动应答模式2024年12月26日
  4. Netty 线程模型: 注意 EventLoop 线程安全,避免阻塞操作
  5. Dubbo 服务: 启动时不检查提供者(consumer.check=false
  6. 积分发放: 通过 RabbitMQ 异步处理,避免影响订单结算主流程
  7. 热部署: 开发环境启用 spring.devtools.restart.enabled=true
  8. 文件上传: 支持本地存储、阿里云 OSS、Minio 三种方式
  9. 密码安全: 使用 BCrypt 加密,密码错误 5 次锁定 10 分钟
  10. Token 管理: JWT Token 有效期 1440 分钟1天接口 Token 有效期 259200 分钟6个月

相关资源


联系方式

  • 项目维护: jsowell 团队
  • Git 分支:
    • 主分支: master
    • 开发分支: dev(当前分支)
  • 最近提交:
    • 543f989ff - update CLAUDE.md
    • 7c576ca25 - bugfix 查询订单详情字段为空
    • c1db659cc - update