# CLAUDE.md

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

## 项目概述

波猫商店 (Bomaos-Shop) — 基于 Java 8 + Spring Boot 2.7.13 的自动化发卡电商平台，支持14种支付渠道、批发模式、自动/手动发货。

**重要提示：本仓库缺少 `src/main/` 目录，Java 源码 (`.java`) 和资源文件均不在标准位置。** 所有内容位于 `target/classes/` 下：
- **Java 后端**：仅有编译后的 `.class` 文件，无法直接编辑，需反编译才能理解逻辑
- **前端模板和静态资源完整存在**：Beetl 模板 (`templates/`)、CSS/JS (`static/`)、配置文件 (`*.yml`) 均可直接编辑
- **注意**：`target/` 是 Maven 构建输出目录，`mvn clean` 会清除其中所有文件

## 构建与运行

```bash
# Maven 编译
mvn compile

# 打包（跳过测试）
mvn clean package -DskipTests

# 运行测试
mvn test

# 直接运行
java -jar target/bomaos-shop-2.0.4.jar

# Docker 部署（需先将 sql/bomaos-shop.sql 复制到 mysql/db/init.sql）
docker-compose up -d
```

应用默认端口 **8085**，开发环境数据库连接 `localhost:3307`，Docker 环境连接 `mysql:3306`。

## 技术栈

| 层级 | 技术 |
|------|------|
| 框架 | Spring Boot 2.7.13 |
| ORM | MyBatis-Plus 3.5.3.1 |
| 数据库 | MySQL 8.0 + Druid 连接池 |
| 认证 | Apache Shiro 1.11.0 + JWT (jwtp) |
| 模板引擎 | Beetl 3.0.16 |
| 前端 UI | Layui |
| 工具库 | Hutool 5.8.20、Lombok、Fastjson 2 |

## 架构

### 包结构 (`com.bomaos`)

```
com.bomaos/
├── BomaosApplication          # 启动类
├── carmi/                     # 卡密管理（CRUD + Excel 导入导出）
├── orders/                    # 订单管理
├── products/                  # 商品 & 分类管理
├── settings/                  # 支付配置、优惠券、商店设置、微信推送
├── content/                   # 文章 & 轮播图
├── reception/                 # 前台展示（首页、商品详情、支付回调）
├── dashboard/                 # 后台仪表盘
├── theme/                     # 主题管理（白天/黑夜/暗黑）
├── website/                   # 网站 SEO 设置
└── common/
    ├── core/
    │   ├── pays/              # 14种支付渠道集成（alipay/wxpay/paypal/epusdt/epay 等）
    │   ├── shiro/             # Shiro 安全配置
    │   ├── aspect/            # AOP 操作日志
    │   ├── config/            # Spring 配置类
    │   ├── enmu/              # 枚举（支付类型等）
    │   ├── utils/             # 工具类
    │   └── web/               # BaseController / BaseApiController
    └── system/                # 用户、角色、菜单、字典、日志等系统管理
```

### 分层模式

每个业务模块遵循标准 MVC 分层：`controller/ → service/ → mapper/ → entity/`，部分模块含 `dto/`、`vo/`、`excel/`。

### 路由分区

- **后台管理**：`/products/**`、`/carmi/**`、`/orders/**`、`/settings/**`、`/content/**`、`/sys/**`、`/dashboard/**`
- **前台展示**：`/`（首页）、`/product/{id}`、`/order`、`/search`、`/pay`
- **支付回调**：`/notify/**`
- **JWT 保护的 API**：`/api/**`

### 多环境配置

- `application.yml` — 公共配置（端口、连接池、MyBatis-Plus、JWT）
- `application-dev.yml` — 开发环境（MySQL localhost:3307）
- `application-test.yml` — 测试环境
- `application-prod.yml` — 生产环境
- 通过 `spring.profiles.active` 切换

### 数据库

24 张表，初始化脚本在 `sql/bomaos-shop.sql`。核心业务表：`sys_products`（商品）、`sys_cards`（卡密）、`sys_orders`（订单）、`sys_pays`（支付配置）、`sys_coupon`（优惠券）。系统表以 `sys_` 前缀命名，使用 RBAC 权限模型（`sys_user` / `sys_role` / `sys_menu` 及关联表）。

### 支付集成

支付实现集中在 `common.core.pays` 包下，每种支付方式一个子包。支付配置存储在 `sys_pays` 表中，JSON 格式保存各渠道参数。回调统一由 `reception.controller.NotifyController` 处理。

## 编码约定

- Java 8 语法，UTF-8 编码
- 实体类使用 Lombok (`@Data`, `@TableName` 等)
- MyBatis-Plus 注解映射，XML Mapper 与 Java 文件同目录（`classpath:com/bomaos/**/*Mapper.xml`）
- 下划线数据库字段自动映射驼峰命名 (`map-underscore-to-camel-case: true`)
- 时间格式统一 `yyyy/MM/dd HH:mm:ss`，时区 GMT+8
- 操作日志通过 AOP 切面 (`OperLogAspect`) 自动记录
