前言

最近在做一个 Go 后台管理系统迁移,把原来 PHP(ThinkPHP/Laravel)里常见的 CRUD、RBAC、菜单权限搬到 GoFrame + Vue3 技术栈。本文不讲概念,直接用一个客户管理模块演示:如何从数据表开始,配合 Cursor / Claude Code 生成后台模块初稿,再人工检查权限和字段风险。

一、准备数据表

示例表结构如下,包含客户名称、联系方式、等级、负责人和状态字段:

CREATE TABLE `crm_customer` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(120) NOT NULL COMMENT '客户名称',
  `mobile` varchar(30) DEFAULT '' COMMENT '联系电话',
  `level` tinyint NOT NULL DEFAULT 1 COMMENT '客户等级',
  `owner_id` bigint unsigned NOT NULL DEFAULT 0 COMMENT '负责人',
  `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态',
  `created_at` datetime DEFAULT NULL,
  `updated_at` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_owner_status` (`owner_id`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

二、为什么不能直接让 AI 自由生成

很多人第一次用 AI 写后台,会直接输入“帮我生成客户管理 CRUD”。这样确实能得到代码,但常见问题也很明显:

  • 目录结构和项目现有规范不一致;
  • 接口返回格式不统一;
  • 字段名和前端表单字段对不上;
  • 只生成按钮权限,没有接口层权限校验;
  • AI 会补一些数据库里不存在的字段。

三、建议的项目目录

在 GoFrame 项目里,我更建议先固定目录,再让 AI 按目录补文件:

internal/
  controller/customer.go
  logic/customer.go
  model/customer.go
  service/customer.go
resource/
  menu/customer.yaml
web/
  views/customer/index.vue

四、可复用的 AI 提示词

下面是一段更稳定的提示词,比“帮我写 CRUD”效果好很多:

根据 crm_customer 表结构,按当前 GoFrame 后台项目规范生成客户管理模块:
1. 分页列表、详情、新增、编辑、删除接口;
2. 前端 Vue3 列表页和表单字段;
3. RBAC 菜单权限:查看、新增、编辑、删除;
4. 不要发明数据库不存在的字段;
5. 输出需要人工检查的安全风险点。

五、工时对比

开发方式 单模块耗时 主要成本
Gin 手写 3~4 小时 路由、DTO、分页、权限都要手动处理
GoFrame 手写 约 2 小时 分层清晰,但重复文件仍然较多
GoFrame + 代码生成 + AI 45~70 分钟 主要时间用于字段和权限审核

六、以 XYGo Admin 作为案例

我这次参考的案例是 XYGo Admin,一个 GoFrame v2 + Vue3 + TypeScript + Element Plus 的后台管理项目。它内置代码生成器、RBAC 权限、菜单管理,并提供 AI Skills,用来约束 Cursor / Claude Code 这类工具按项目规范生成代码。

这里重点不是某个项目本身,而是一个经验:后台系统如果有明确目录、权限模型和生成规范,AI 生成的代码才更容易进入真实项目。

七、发布前必须人工检查

  1. 列表查询条件是否命中索引;
  2. 更新接口是否允许修改 owner_id、status 等敏感字段;
  3. 删除操作是否需要业务校验或软删除;
  4. 菜单按钮权限和接口权限是否同时存在;
  5. 前端枚举、默认值、必填规则是否符合业务。

总结

Cursor / Claude Code 写 Go 后台不是魔法。真正能提升效率的,是“代码生成器 + 项目规范 + AI Skills + 人工审查”这套流程。没有规范时,AI 只是更快地产生不一致;有规范时,它能把标准 CRUD 的重复工作压缩到一个可控范围。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐