这是一项超级庞大的工程,直接把整个项目丢给AI一次性转换是不可行的。
最有效的策略是**“分而治之”。你需要一套结构化的提示词(Prompt Framework)**,引导AI先搭建骨架,再填充血肉。
下面我为你设计了一套分阶段的提示词方案。你可以直接复制这些提示词到 Cursor 或其他 AI 编程工具中执行。
重构策略概览 (Tech Stack Selection)
在开始之前,为了保证重构后的 Go 项目既符合 Go 的惯例(Idiomatic Go),又能承接原有的业务复杂度,提议选型如下:
- Web 框架: Gin (高性能,生态全,最接近 SpringMVC 的路由体验)
- ORM: GORM (功能强劲,容易对标 MyBatis Plus)
- 配置管理: Viper (对标 application.yml)
- 依赖注入: Google Wire (可选,或者手动注入,Go 不推荐过度依赖运行时反射注入)
- 文档: Swagger/Swag (保持 API 文档一致性)
- 鉴权: JWT-Go + Gin Middleware (替代 Spring Security)
阶段一:项目上下文建立与架构蓝图
目的:让 AI 理解原项目业务,并确立 Go 项目的目录结构。
提示词 1:上下文注入与架构设计
Markdown
# Role
你是一位精通 Java (Spring Boot) 和 Golang 的系统架构师。我有一个名为 "EasyIt Service" 的车主服务平台项目,目前是 Java Spring Boot 架构。
# Goal
我要将该项目的后端重构为 Golang 版本。请根据我提供的 Java 项目结构文件(Project Structure),为我设计一个新的 Go 项目结构。
# Project Context
- 业务:一站式车主服务(车辆管理、预约、商城、会员、支付等)。
- 原架构:Controller-Service-DAO 分层架构,使用 MyBatis Plus, Spring Security。
- 关键模块:Backend (Admin/App API), Auth, Vehicle, Order, Product, System.
# Requirements
1. **Tech Stack**: 使用 **Gin** (Web Framework), **GORM** (ORM), **Viper** (Config), **Zap** (Logging), **JWT** (Auth).
2. **Directory Layout**: 请遵循 `golang-standards/project-layout` 标准(使用 `cmd`, `internal`, `pkg`, `api`, `configs` 目录)。
3. **Layering**: 保持清晰的分层(Handler -> Service -> Repository/DAO -> Model)。
4. **Migration Strategy**:
- 将 Java 的 AOP (如 `EasyItOperateLog`, `EasyItRequireLogin`) 转换为 Gin Middleware。
- 将 Java 的 Exception 处理转换为 Gin 的统一错误处理中间件。
- 将 POJO/DTO/VO 转换为 Go Structs。
# Task
请输出推荐的 Golang 项目根目录结构树,并解释每个目录对应原 Java 项目的哪个部分。
阶段二:基础设施搭建 (Infrastructure)
目的:建立数据库连接、Redis、日志、全局错误处理和统一响应格式(Result)。
提示词 2:基础设施与核心组件
Markdown
# Context
基于刚才设计的 Go 项目结构,我们需要实现核心基础设施代码。
# Reference (Java)
- `CommonResult.java`: 统一返回结果。
- `ServiceException.java`: 全局异常。
- `MybatisPlusConfig.java`: 数据库配置。
# Task
请为我生成以下 Go 代码(放在 `pkg/common` 或 `internal/infrastructure` 下):
1. **Response Wrapper**: 对应 Java 的 `CommonResult<T>`。实现 `Success(data interface{})` 和 `Error(code int, msg string)` 函数。
2. **Global Error Handling**: 一个 Gin 中间件,用于捕获 panic 并处理自定义业务错误(BusinessError),返回标准的 JSON 格式。
3. **Database Setup**: 使用 GORM 初始化 MySQL 连接的单例或构造函数,包含连接池配置(对应 `application.yml` 中的 datasource 配置)。
4. **Logger**: 初始化 Zap Logger。
请确保代码是生产级可用的,并展示如何在 `main.go` 中注册这些组件。
阶段三:核心实体与数据库迁移 (Model Layer)
目的:将 DO (Data Object) 转换为 GORM Model。这是业务逻辑的基础。
提示词 3:实体模型转换 (以车辆模块为例)
Markdown
# Context
我们要开始迁移业务模块。第一是核心的 **车辆模块 (Vehicle)**。
# Reference (Java Source Structure)
原 Java 路径: `backend/src/main/java/com/easyit/service/vehicle/dal/dataobject/vehicle`
涉及文件:
- `VehicleBrandDO.java` (含 letter 字段)
- `VehicleSeriesDO.java` (含 image, sort 字段)
- `VehicleDO.java`
# Task
请将上述 Java DO 类转换为 Golang 的 GORM Model 结构体。
要求:
1. 放在 `internal/module/vehicle/model` 目录下。
2. 添加 GORM tags (如 `gorm:"column:brand_id;primaryKey"` ) 和 JSON tags。
3. 包含通用的 `BaseModel` (对应 Java 的 BaseEntity,含 id, create_time, update_time, deleted)。
4. 这里的 `deleted` 字段需要支持 GORM 的 Soft Delete。
阶段四:业务逻辑迁移 (Service & Handler)
目的:这是最复杂的部分,需要将 Controller 和 Service 逻辑搬运过来。提议按模块逐个进行。
提示词 4:业务逻辑迁移 – 车辆品牌模块
Markdown
# Context
目前迁移 **车辆品牌 (Vehicle Brand)** 的业务逻辑。
# Reference (Java Source)
- Controller: `AdminVehicleBrandController.java` & `AppVehicleBrandController.java`
- Service: `AdminVehicleBrandServiceImpl.java`
- Mapper: `VehicleBrandMapper.xml`
# Logic Detail
注意原 Java 代码中的逻辑更新(2025-11-28 更新):
- 列表查询需要支持按 `letter` (首字母) 排序,然后是 `nameEn`, `weight`。
- 管理端有增删改查。
- 小程序端 (`App`) 有 `getBrandList` 和 `getModelList`。
# Task
请编写 Go 代码:
1. **Repository**: 使用 GORM 实现数据访问层 (`internal/module/vehicle/repository/brand_repo.go`)。
2. **Service**: 定义接口并实现业务逻辑 (`internal/module/vehicle/service/brand_service.go`)。
3. **Handler**: 编写 Gin 的 Handler (`internal/module/vehicle/handler/brand_handler.go`)。
4. **Router**: 注册对应的路由组 (如 `/admin-api/vehicle/brand` 和 `/app-api/vehicle/brand`)。
**注意**:请确保 DTO (Req/Resp) 结构体定义清晰,且实现了原 Java 代码中的排序逻辑。
阶段五:中间件与切面迁移 (Middleware)
目的:处理 Java 中的注解逻辑,如权限校验和日志。
提示词 5:AOP 转 Middleware
Markdown
# Context
原 Java 项目使用了大量的 AOP 注解,例如:
- `@EasyitRequireLogin`: 登录校验
- `@EasyitPermission`: 权限校验
- `@EasyitOperateLog`: 操作日志
# Task
请将这些功能重构为 Gin 的 Middleware:
1. **AuthMiddleware**: 解析 Header 中的 JWT Token,解析失败返回 401。将解析出的 `UserId` 存入 `gin.Context`。
2. **PermissionMiddleware**: 接收权限标识字符串(如 "system:user:query"),校验当前用户是否有权访问,无权返回 403。(假设权限数据已在 Login 时缓存或能通过 Service 获取)。
3. **LogMiddleware**: 记录请求路径、参数、耗时、操作人、IP 地址等信息到日志库(对应原 `SysOperateLog`)。
请展示如何在路由注册时使用这些中间件。
给你的提议 (Next Step)
- 准备环境: 确保你的开发环境已经安装了 Go 1.21+。
- 使用 Cursor/Windsurf: 将 项目结构图.md 作为一个全局 Context 喂给 AI 编辑器。
- 从 common 开始: 先把 Result, PageResult, BaseEntity 这些基础类转换好,后续生成代码时 AI 才能引用正确的类型。
- 按模块迭代: 提议顺序:
- Infrastructure (DB, Redis, Config)
- System Module (Dict, Config, File) -> 基础依赖较多
- Auth Module (Login, JWT) -> 安全基石
- User Module -> 业务基石
- Vehicle Module -> 核心业务
- …其他模块
© 版权声明
文章版权归作者所有,未经允许请勿转载。

收藏了,感谢分享