代码生成器 对接'生成代码'接口

This commit is contained in:
cuijiawang 2025-09-25 15:07:01 +08:00
parent dbf9cf1c3b
commit 748d4e9e03
2 changed files with 34 additions and 72 deletions

View File

@ -46,12 +46,19 @@ export interface CodegenResponse {
// 获取所有模板
export function getAllTemplatesApi() {
return http.request<ResponseData<TemplateGroup[]>>("get", "/codegen/template/all");
return http.request<ResponseData<TemplateGroup[]>>(
"get",
"/codegen/template/all"
);
}
// 生成代码
export function generateCodeApi(data: CodegenRequest) {
return http.request<ResponseData<CodegenResponse>>("post", "/code/generate", {
data
});
return http.request<ResponseData<CodegenResponse>>(
"post",
"/codegen/code/generate",
{
data
}
);
}

View File

@ -1,24 +1,23 @@
import { ref, reactive, computed } from "vue";
import { ElMessage } from "element-plus";
import {
getAllTemplatesApi,
generateCodeApi,
CodegenOptions,
import {
getAllTemplatesApi,
generateCodeApi,
TemplateGroup,
TemplateInfo,
CodegenRequest
CodegenRequest
} from "@/api/system/codegen";
export function useCodegen() {
// 表单数据
const formData = reactive<CodegenRequest>({
tableSql: `CREATE TABLE 'sys_user_info' (
'user_id' int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
'user_name' varchar(255) NOT NULL COMMENT '用户名',
'status' tinyint(1) NOT NULL COMMENT '状态',
'create_time' datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY ('user_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'`,
'user_id' int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
'user_name' varchar(255) NOT NULL COMMENT '用户名',
'status' tinyint(1) NOT NULL COMMENT '状态',
'create_time' datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY ('user_id')
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'`,
options: {
dataType: "sql",
authorName: "AgileBoot",
@ -115,62 +114,15 @@ export function useCodegen() {
try {
generating.value = true;
// 临时使用假数据
const fakeResponse = {
outputJson: {
"plusentity": `@Data
@Entity
@Table(name = "sys_user_info")
public class SysUserInfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;
@Column(name = "user_name")
private String userName;
@Column(name = "status")
private Integer status;
@Column(name = "create_time")
private Date createTime;
}`,
"pluscontroller": `@RestController
@RequestMapping("/system/userInfo")
public class SysUserInfoController {
@Autowired
private SysUserInfoService sysUserInfoService;
@GetMapping("/list")
public ResponseResult list() {
return ResponseResult.success();
}
}`,
"plusservice": `public interface SysUserInfoService {
// Service methods
}`,
"plusmapper": `@Mapper
public interface SysUserInfoMapper {
// Mapper methods
}`
},
tableName: "sys_user_info"
};
outputJson.value = fakeResponse.outputJson;
outputStr.value = fakeResponse.outputJson[currentSelect.value] || "";
// 调用真实API
const { data } = await generateCodeApi(formData);
outputJson.value = data.outputJson;
outputStr.value = data.outputJson[currentSelect.value] || "";
// 添加到历史记录
setHistoricalData(fakeResponse.tableName);
setHistoricalData(data.tableName);
ElMessage.success("生成成功");
// 后续替换为真实API调用
// const { data } = await generateCodeApi(formData);
// outputJson.value = data.outputJson;
// outputStr.value = data.outputJson[currentSelect.value] || "";
// setHistoricalData(data.tableName);
} catch (error) {
console.error("生成代码失败:", error);
ElMessage.error("生成失败请检查SQL语句");
@ -186,11 +138,14 @@ public interface SysUserInfoMapper {
return;
}
navigator.clipboard.writeText(outputStr.value.trim()).then(() => {
ElMessage.success("已复制到剪贴板");
}).catch(() => {
ElMessage.error("复制失败");
});
navigator.clipboard
.writeText(outputStr.value.trim())
.then(() => {
ElMessage.success("已复制到剪贴板");
})
.catch(() => {
ElMessage.error("复制失败");
});
}
// 设置历史记录