跳转到主要内容

后端接口代码生成

实现流程

实现流程图

实现接口生成的主要流程为:环境准备->生成提示词->后端接口生成。

环境准备

在进行代码生成前,我们需要做好充足的环境准备,便于后续流程顺利进行。以下是在进行代码生成前所需要准备的内容:

1.插件安装:

根据下方链接步骤完成环境准备: 使用 VS Code 进行 Java 开发

场景一:根据设计生成代码

1.提示词生成

提示词(Prompt)是与友码交互的核心工具,其质量直接影响生成结果的准确性、相关性和实用性,精准的提示词可显著提升效率与输出质量,生成提示词之前,我们需要准备提示词生成所需要的条件:DDL语句,原型图。

1.1 生成前准备

1.1.1 准备DDL语句

为了方便提示词生成,我们需要准备DDL语句,DDL语句是可以准备也可以不准备的,但是准备是为了我们生成的接口参数更加正确,而DDL的语句准备是有两个方式,一个是在进行建表时直接使用建表的SQL语句,我们的建表语句一个是从DBeaver软件上进行生成:

打开DBeaver工具,打开所提前准备好的数据库(数据库设计应在开发前设计完成),选择后端接口设计所涉及的数据库表("shift+上下键"可以选择多表),右键选中的表,选择生成SQL,选择DDL,复制所选中表的DDL语句。

准备DDL语句1

准备DDL语句2

准备DDL语句3

1.1.2 原型图准备

原型图主要呈现了我们所需要的接口功能,能够让DDL语句生成更加准确,在Figma中找到提前设计好的原型图(原型图设计应在开发前设计完成,下图的左侧)以及业务规则(下图的右侧区域),原型图中需要体现后端需要实现的功能点(比如新增,删除,编辑等图样或者字段),右侧的业务规则需要说明实现业务需要进行的一些要求。

准备原型图

1.2 生成提示词

对于提示词的生成来说,目前主要是通过AI-Works平台生成提示词,AI Works定位为Agent智能体搭建平台,通过对接丰富的模型和工具、提供强大的编排能力、简单易上手的交互页面、完整的LLMOps流程支撑,让人人都能够参与搭建Agent智能体。AI Works平台中有我们搭建好的生成提示词模板的智能体模型,我们可以通过已经搭建好的智能体生成我们所需要的提示词,AI我们可以输入下方网址直接使用我们生成提示词的智能体。

AI-Works登录界面: AI-Works登录界面

1.2.1 生成提示词

点击上面链接进入AI-Works登录界面,登录后进入AI-Works平台。 AI-Works登录界面

AI-Works中选择you-code-gen-prompt智能体,将前面准备好的原型图与DDL交给智能体,让他生成提示词,待提示词生成好后复制保存。

AI-Works智能体界面

生成提示词1

生成提示词2

1.3 修改提示词

提示词的生成并不一定能完全满足我们的需求,我们需要根据实际情况进行修改提示词,下面是生成提示词的结构,我们需要根据自身需求进行修改:

修改提示词

生成提示词说明:

  1. 接口定义: 主要说明了所需要生成接口的要求,类型,路径,请求参数以及响应参数,我们可以根据实际需求进行添加内容。
  2. 数据库表设计: 实现上述接口所需要的数据库表的DDL语句。

2.后端接口代码生成

我们已经拥有提示词,这个提示词是用户提示词,是需要AI根据我们用户的需求生成接口的提示词,但是在进行代码生成之前,我们还需获取项目规范,项目规范是很重要的规则提示词,他可以帮助AI充分了解我们当前项目,并根据当前项目规则生成对应规则的代码,我们通过一下链接获取项目规则:

友码项目规范: 友码规范模板下载

后端接口代码生成

下载好项目规范后,接下来则是打开vscode的友码,进行后端接口代码生成,以下是生成步骤:

2.1 添加规则

友码中可以添加项目规则,这个规则则是告诉友码我们在当前项目中进行问答或者生成代码是需要遵循的一个规则,而对于我们后端接口的代码生成则是将我们的项目规范放入其中:

添加规则1

添加规则2

添加规则3

2.2 生成代码

将我们生成好的提示词放入输入框中,发送给友码,等待代码生成:

生成代码1

等待代码生成完成后呈现如下情况,进入IDEA运行代码即可。

生成代码2

场景二:根据新需求修改已有代码

1.需求修改

介绍: 主要用于修改接口参数需求,或者接口功能需求。

**模板**
- 功能描述:有什么样的功能
- 需求:希望功能变成什么样

案例

我有一个新建盘点单的功能接口。
现在我需要将新建盘点单的传入参数变成如下参数:
{
"dlrId": "string (必填, 最大长度: 2000)",
"dlrCode": "string (必填, 最大长度: 2000)",
"checkBeginDate": "string (必填, 格式: YYYY-MM-DDTHH:mm:ss)",
"checkEndDate": "string (必填, 格式: YYYY-MM-DDTHH:mm:ss)",
"checkEmp": "string (必填, 最大长度: 2000)",
"checkEmpId": "string (必填, 最大长度: 2000)",
"remark": "string (可选, 最大长度: 500)",
"creator": "string (必填, 最大长度: 50)"
}

2.bug修改

介绍: 该情景主要是根据现有代码查找代码的问题,并修改bug。

**模板**
- 问题描述:出现了什么问题
- 现象:这个问题造成了什么现象
- 需求:需要的预期效果(bug解决或者提出方案)

案例

我在开发积分结算发票管理系统的批量审核功能时遇到了问题 :在测试 PointInvoiceMAppservice 类的 updateBusinessPointInvoiceConfirm 和 updateBusinessPointInvoiceReject 方法时,系统出现了NullPointerException异常,并且在批量操作过程中发现数据更新不一致的情况。

具体表现为:当传入空的批量请求列表时程序崩溃,批量驳回操作时部分数据更新成功部分失败,导致业务数据状态混乱。

请帮我找出这些问题的根本原因,分析为什么会出现这些异常情况,并提供完整的解决方案来确保批量操作的稳定性和数据一致性。