Initial commit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
liu
2026-02-03 10:10:11 +08:00
commit 14289beb66
45 changed files with 15479 additions and 0 deletions

View File

@@ -0,0 +1,356 @@
# 模块01项目初始化与基础配置
---
## 🎨 UI设计系统概览
> **完整设计系统文档请参考:** `UI设计系统.md`
### 核心设计原则
- **现代简约**:界面清晰,层次分明
- **专业高效**:减少操作步骤,提升工作效率
- **一致性**:统一的视觉语言和交互模式
- **可访问性**符合WCAG 2.1 AA标准
### 关键设计令牌
**颜色系统:**
- 主色:`#0d6efd`(操作按钮、选中状态)
- 成功:`#198754`(连接成功状态)
- 危险:`#dc3545`(删除操作、错误提示)
- 深灰:`#212529`(导航栏背景)
- 浅灰:`#e9ecef`(工具栏背景)
**字体系统:**
- 字体族:系统字体栈(-apple-system, Segoe UI, Roboto等
- 正文14px行高1.5
- 标题20-32px行高1.2-1.4
- 小号文字12px文件大小、日期等
**间距系统:**
- 基础单位8px
- 标准间距16px1rem
- 组件内边距8px-16px
**组件规范:**
- 导航栏高度48px深色背景
- 工具栏浅灰背景按钮间距8px
- 文件项最小高度44px悬停效果150ms
- 按钮圆角4px过渡150ms
**交互规范:**
- 悬停效果150ms过渡
- 触摸目标最小44x44px
- 键盘导航Tab、Enter、Delete、F2、F5、Esc
- 焦点状态2px蓝色轮廓
**响应式断点:**
- 移动端:< 768px双面板垂直排列
- 平板768px - 1024px
- 桌面:> 1024px标准布局
---
## 1.1 项目结构创建
```
sftp-manager/
├── README.md # 项目说明文档
├── pom.xml # Maven配置文件
└── src/
├── main/
│ ├── java/com/sftp/manager/
│ │ ├── SftpManagerApplication.java # Spring Boot主类
│ │ ├── config/
│ │ │ └── WebConfig.java # Web配置CORS等
│ │ ├── controller/
│ │ │ ├── FileController.java # 文件操作API
│ │ │ └── ConnectionController.java # 连接管理API
│ │ ├── service/
│ │ │ ├── SftpService.java # SFTP操作服务
│ │ │ ├── LocalFileService.java # 本地文件操作服务
│ │ │ └── ConnectionService.java # 连接配置服务
│ │ ├── model/
│ │ │ ├── Connection.java # 连接实体类
│ │ │ └── FileInfo.java # 文件信息实体类
│ │ └── dto/
│ │ ├── ConnectionRequest.java # 连接请求DTO
│ │ ├── FileOperationRequest.java # 文件操作请求DTO
│ │ └── ApiResponse.java # API统一响应DTO
│ └── resources/
│ ├── application.yml # 应用配置文件
│ ├── static/
│ │ ├── css/
│ │ │ └── style.css # 自定义样式
│ │ └── js/
│ │ └── app.js # 前端业务逻辑
│ └── templates/
│ └── index.html # 主页面双面板UI
└── test/ # 测试代码
```
## 1.2 Maven依赖配置pom.xml
### 核心依赖
```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
<relativePath/>
</parent>
<groupId>com.sftp</groupId>
<artifactId>sftp-manager</artifactId>
<version>1.0.0</version>
<name>SFTP Manager</name>
<description>SFTP文件管理系统</description>
<properties>
<java.version>1.8</java.version>
<jsch.version>0.1.55</jsch.version>
<h2.version>2.1.214</h2.version>
<lombok.version>1.18.30</lombok.version>
</properties>
<dependencies>
<!-- Spring Boot Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JSch for SFTP -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>${jsch.version}</version>
</dependency>
<!-- H2 Database (嵌入式数据库) -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>${h2.version}</version>
<scope>runtime</scope>
</dependency>
<!-- JPA for Data Persistence -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- Lombok (简化实体类代码) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<optional>true</optional>
</dependency>
<!-- Spring Boot DevTools (热部署) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- Spring Boot Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
```
## 1.3 应用配置文件application.yml
### 配置项说明
```yaml
server:
port: 8080 # 服务端口
servlet:
context-path: /sftp-manager # 应用上下文路径
spring:
application:
name: sftp-manager
# H2数据库配置
h2:
console:
enabled: true # 启用H2控制台
path: /h2-console # 控制台访问路径
datasource:
url: jdbc:h2:file:./data/sftp-manager # 数据库文件路径
driver-class-name: org.h2.Driver
username: sa
password:
# JPA配置
jpa:
hibernate:
ddl-auto: update # 自动更新表结构
show-sql: true # 显示SQL语句
properties:
hibernate:
format_sql: true # 格式化SQL输出
# 文件上传配置
servlet:
multipart:
enabled: true
max-file-size: 100MB # 单文件最大100MB
max-request-size: 500MB # 总请求最大500MB
# 自定义配置
app:
sftp:
session-timeout: 30000 # SFTP会话超时时间(ms)
connection-timeout: 10000 # 连接超时时间(ms)
max-retries: 3 # 连接失败重试次数
logging:
level:
com.sftp.manager: DEBUG
org.hibernate.SQL: DEBUG
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
```
## 1.4 主类配置SftpManagerApplication.java
### 配置要点
```java
package com.sftp.manager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
@EnableJpaRepositories
public class SftpManagerApplication {
public static void main(String[] args) {
SpringApplication.run(SftpManagerApplication.class, args);
}
}
```
**说明:**
- `@SpringBootApplication`:包含自动配置、组件扫描、配置类定义
- `@EnableJpaRepositories`启用JPA仓库支持
## 1.5 Web配置WebConfig.java
### 配置内容
```java
package com.sftp.manager.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.maxAge(3600);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/");
}
}
```
**配置说明:**
1. **CORS跨域配置**允许前端访问API
- 允许所有源(*
- 允许常用HTTP方法
- 允许所有请求头
- 预检请求缓存3600秒
2. **静态资源映射**:配置静态资源访问路径
- 映射 `/**``classpath:/static/`
- 支持HTML、CSS、JS等静态文件
3. **响应编码**Spring Boot默认使用UTF-8无需额外配置
## 实施步骤
1. **创建项目目录结构**
```
mkdir -p sftp-manager/src/main/java/com/sftp/manager/{config,controller,service,model,dto}
mkdir -p sftp-manager/src/main/resources/{static/{css,js},templates}
```
2. **创建pom.xml文件**:复制上面的依赖配置
3. **创建application.yml文件**:复制上面的配置内容
4. **创建SftpManagerApplication.java**:在 `src/main/java/com/sftp/manager/` 目录下
5. **创建WebConfig.java**:在 `src/main/java/com/sftp/manager/config/` 目录下
6. **验证项目结构**
```
tree sftp-manager
```
7. **测试启动**
```
mvn spring-boot:run
```
## 注意事项
1. **JDK版本**确保使用JDK 8或更高版本
2. **Maven版本**建议使用Maven 3.6+
3. **端口占用**确认8080端口未被占用可在application.yml中修改
4. **数据库文件**H2数据库文件会创建在项目根目录的data文件夹下
5. **IDE配置**如果使用IDEA需启用Lombok插件
## 下一步
完成模块01后继续模块02数据模型设计