diff --git a/README.md b/README.md new file mode 100644 index 0000000..9200d40 --- /dev/null +++ b/README.md @@ -0,0 +1,175 @@ +# M2Pool Lease 项目介绍 + +## 项目概述 + +M2Pool Lease 是一个基于 Spring Boot 的矿机租赁平台系统,为用户提供矿机租赁、订单管理、支付处理等核心功能。 + +## 技术栈 + +### 后端框架 +- **Spring Boot 2.6.7** - 核心框架 +- **Spring Cloud Alibaba** - 微服务架构(Nacos 服务注册与配置中心) +- **MyBatis Plus 3.5.3** - ORM 框架 +- **MySQL 8.0.28** - 数据库 +- **Redis** - 缓存与会话管理 + +### 中间件 +- **RabbitMQ** - 消息队列,用于异步订单处理和支付回调 +- **Nacos 2.0.4** - 服务注册发现和配置管理 + +### 工具库 +- **Lombok** - 简化代码 +- **Hutool 5.8.24** - Java 工具类库 +- **Fastjson 1.2.80** - JSON 处理 +- **Knife4j 3.0.3** - API 文档(Swagger 增强) +- **Druid 1.2.8** - 数据库连接池 +- **PageHelper 1.4.1** - 分页插件 + +### 安全与认证 +- **JWT (jjwt 0.9.1)** - 令牌认证 +- **Google Authenticator** - 双因素认证 +- **RSA 加密** - 数据加密 + +### 网络通信 +- **Netty** - TCP 服务器,用于与矿机客户端通信 +- **Spring Boot Mail** - 邮件服务(Thymeleaf 模板) + +### 其他 +- **ZXing 3.3.0** - 二维码生成 +- **JNA 5.12.1** - Java Native Access +- **Blake3** - 哈希算法 + +## 项目结构 + +``` +m2pool_lease/ +├── src/main/java/com/m2pool/lease/ +│ ├── annotation/ # 自定义注解(加密、日志、数据源切换等) +│ ├── aspect/ # AOP 切面 +│ ├── config/ # 配置类(Swagger、线程池、拦截器等) +│ ├── constant/ # 常量定义 +│ ├── controller/ # 控制器层 +│ ├── dto/ # 数据传输对象 +│ ├── entity/ # 实体类 +│ ├── exception/ # 异常处理 +│ ├── mapper/ # MyBatis Mapper 接口 +│ ├── mq/ # 消息队列相关 +│ ├── netty/ # Netty TCP 服务器 +│ ├── redis/ # Redis 配置和服务 +│ ├── service/ # 业务逻辑层 +│ ├── task/ # 定时任务 +│ ├── utils/ # 工具类 +│ └── vo/ # 视图对象 +├── src/main/resources/ +│ ├── bootstrap.yml # 启动配置 +│ ├── bootstrap-dev.yml # 开发环境配置 +│ ├── bootstrap-test.yml # 测试环境配置 +│ ├── mapper/ # MyBatis XML 映射文件 +│ └── templates/ # 邮件模板 +└── pom.xml # Maven 项目配置 +``` + +## 核心功能模块 + +### 1. 用户管理 +- 用户注册与登录 +- JWT 令牌认证 +- Google 双因素认证 +- 邮箱验证码 +- 密码重置 + +### 2. 产品与矿机管理 +- 产品信息管理 +- 矿机配置(ASIC/GPU) +- 算力与价格配置 +- 矿机库存管理 +- 多币种支持 + +### 3. 订单系统 +- 购物车功能 +- 订单创建与管理 +- 订单状态跟踪 +- 订单费用计算 +- 多版本 API 支持(V1/V2) + +### 4. 支付系统 +- 充值与提现 +- 支付记录管理 +- 支付回调处理 +- 多种支付方式支持 +- 自动支付处理 + +### 5. 矿场管理 +- 矿场信息配置 +- 矿场地址配置 +- 矿场钱包配置 + +### 6. 收益管理 +- 产品收益计算 +- 用户收益统计 +- 实时算力监控 +- 挖矿收益记录 + +### 7. Netty 通信服务 +- TCP 服务器与矿机客户端通信 +- 算力数据上报 +- 配置下发 +- 消息编解码 + +### 8. 定时任务 +- GPU 数据请求 +- 订单与支付处理 +- 自有产品管理 +- 实时算力数据插入 + +## 数据源配置 + +项目支持多数据源配置,通过 MyBatis Plus 动态数据源实现: +- `HashRateDB` - 算力数据库 +- `MiningDB` - 挖矿数据库 +- `Pool2DB` - 矿池数据库 + +## 环境配置 + +项目支持多环境配置: +- **dev** - 开发环境 +- **test** - 测试环境(默认) +- **prod** - 生产环境 + +通过 Maven Profile 切换环境: +```bash +mvn clean package -P dev +mvn clean package -P test +mvn clean package -P prod +``` + +## API 文档 + +项目集成 Knife4j,启动后访问: +``` +http://localhost:port/doc.html +``` + +## 构建与运行 + +### 构建项目 +```bash +mvn clean package +``` + +### 运行项目 +```bash +java -jar target/lease-1.0.0.jar +``` + +## 注意事项 + +- 项目需要配置 Nacos 服务器地址 +- 需要配置 MySQL 数据库连接 +- 需要配置 Redis 连接 +- 需要配置 RabbitMQ 连接 +- demo 目录为示例模块,不包含在主项目提交中 + +## 许可证 + +本项目为内部项目,版权归 M2Pool 所有。 \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..1ccabc9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,282 @@ + + + 4.0.0 + com.m2pool + lease + 1.0.0 + m2pool_lease + m2pool_lease + + 1.8 + UTF-8 + UTF-8 + 2.6.7 + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.springframework.boot + spring-boot-starter-web + + + + + org.projectlombok + lombok + true + + + + mysql + mysql-connector-java + 8.0.28 + + + + + + + + + + + + + org.springframework.boot + spring-boot-starter-amqp + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + 2021.0.1.0 + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + 2021.0.1.0 + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + 3.1.1 + + + org.springframework.cloud + spring-cloud-dependencies + 2021.0.1 + pom + import + + + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + 2021.0.1.0 + pom + import + + + + + com.alibaba.nacos + nacos-client + 2.0.4 + + + de.codecentric + spring-boot-admin-starter-client + 2.6.6 + + + + + + com.github.xiaoymin + knife4j-spring-boot-starter + 3.0.3 + + + + + com.github.xiaoymin + knife4j-spring-ui + 3.0.3 + + + + com.alibaba + druid-spring-boot-starter + 1.2.8 + + + + + com.baomidou + dynamic-datasource-spring-boot-starter + 3.5.0 + + + + + + + + + + org.mybatis + mybatis + 3.5.7 + compile + + + com.baomidou + mybatis-plus-boot-starter + 3.5.3 + + + + cn.hutool + hutool-all + 5.8.24 + + + + com.github.pagehelper + pagehelper-spring-boot-starter + 1.4.1 + + + + + + org.apache.velocity + velocity-engine-core + 2.3 + + + + com.alibaba + fastjson + 1.2.80 + + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + + + io.jsonwebtoken + jjwt + 0.9.1 + + + + + + org.springframework.boot + spring-boot-starter-mail + + + + + net.java.dev.jna + jna + 5.12.1 + + + + pt.kcry + blake3_3 + 3.1.2 + + + + com.google.zxing + javase + 3.3.0 + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + dev + + dev + 127.0.0.1:8808 + + + + false + + + + + test + + test + 127.0.0.1:8808 + + + true + + + + + prod + + prod + 127.0.0.1:8808 + + + false + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + +