no message

This commit is contained in:
小帅 2026-02-06 11:21:39 +08:00
parent de1dff3aed
commit 4f72036169
9 changed files with 205 additions and 157 deletions

View File

@ -227,6 +227,16 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
table.unique(["id"]);
},
},
{
name: "t_aiModelMap",
builder: (table) => {
table.integer("id").notNullable();
table.integer("promptsId"); // 提示词表ID
table.integer("configId"); // 模型列表id
table.primary(["id"]);
table.unique(["id"]);
},
},
{
name: "t_prompts",
builder: (table) => {

View File

@ -1,4 +1,4 @@
// @routes-hash 4c67f0d89475e1a882416d9f6ab1687d
// @routes-hash 8ce2263d4dc5c8171785529954312b92
import { Express } from "express";
import route1 from "./routes/assets/addAssets";
@ -44,33 +44,37 @@ import route40 from "./routes/prompt/updatePrompt";
import route41 from "./routes/script/generateScriptApi";
import route42 from "./routes/script/generateScriptSave";
import route43 from "./routes/script/geScriptApi";
import route44 from "./routes/setting/getSetting";
import route45 from "./routes/setting/updateSetting";
import route46 from "./routes/storyboard/batchSuperScoreImage";
import route47 from "./routes/storyboard/chatStoryboard";
import route48 from "./routes/storyboard/generateShotImage";
import route49 from "./routes/storyboard/generateStoryboardApi";
import route50 from "./routes/storyboard/generateVideoPrompt";
import route51 from "./routes/storyboard/getStoryboard";
import route52 from "./routes/storyboard/keepStoryboard";
import route53 from "./routes/storyboard/saveStoryboard";
import route54 from "./routes/storyboard/uploadImage";
import route55 from "./routes/task/getTaskApi";
import route56 from "./routes/task/taskDetails";
import route57 from "./routes/user/getUser";
import route58 from "./routes/video/addVideo";
import route59 from "./routes/video/addVideoConfig";
import route60 from "./routes/video/deleteVideoConfig";
import route61 from "./routes/video/generatePrompt";
import route62 from "./routes/video/generateVideo";
import route63 from "./routes/video/getManufacturer";
import route64 from "./routes/video/getVideo";
import route65 from "./routes/video/getVideoConfigs";
import route66 from "./routes/video/getVideoModel";
import route67 from "./routes/video/getVideoStoryboards";
import route68 from "./routes/video/reviseVideoStoryboards";
import route69 from "./routes/video/saveVideo";
import route70 from "./routes/video/upDateVideoConfig";
import route44 from "./routes/setting/addModel";
import route45 from "./routes/setting/configurationModel";
import route46 from "./routes/setting/delModel";
import route47 from "./routes/setting/getAiModelMap";
import route48 from "./routes/setting/getSetting";
import route49 from "./routes/setting/updeteModel";
import route50 from "./routes/storyboard/batchSuperScoreImage";
import route51 from "./routes/storyboard/chatStoryboard";
import route52 from "./routes/storyboard/generateShotImage";
import route53 from "./routes/storyboard/generateStoryboardApi";
import route54 from "./routes/storyboard/generateVideoPrompt";
import route55 from "./routes/storyboard/getStoryboard";
import route56 from "./routes/storyboard/keepStoryboard";
import route57 from "./routes/storyboard/saveStoryboard";
import route58 from "./routes/storyboard/uploadImage";
import route59 from "./routes/task/getTaskApi";
import route60 from "./routes/task/taskDetails";
import route61 from "./routes/user/getUser";
import route62 from "./routes/video/addVideo";
import route63 from "./routes/video/addVideoConfig";
import route64 from "./routes/video/deleteVideoConfig";
import route65 from "./routes/video/generatePrompt";
import route66 from "./routes/video/generateVideo";
import route67 from "./routes/video/getManufacturer";
import route68 from "./routes/video/getVideo";
import route69 from "./routes/video/getVideoConfigs";
import route70 from "./routes/video/getVideoModel";
import route71 from "./routes/video/getVideoStoryboards";
import route72 from "./routes/video/reviseVideoStoryboards";
import route73 from "./routes/video/saveVideo";
import route74 from "./routes/video/upDateVideoConfig";
export default async (app: Express) => {
app.use("/assets/addAssets", route1);
@ -116,31 +120,35 @@ export default async (app: Express) => {
app.use("/script/generateScriptApi", route41);
app.use("/script/generateScriptSave", route42);
app.use("/script/geScriptApi", route43);
app.use("/setting/getSetting", route44);
app.use("/setting/updateSetting", route45);
app.use("/storyboard/batchSuperScoreImage", route46);
app.use("/storyboard/chatStoryboard", route47);
app.use("/storyboard/generateShotImage", route48);
app.use("/storyboard/generateStoryboardApi", route49);
app.use("/storyboard/generateVideoPrompt", route50);
app.use("/storyboard/getStoryboard", route51);
app.use("/storyboard/keepStoryboard", route52);
app.use("/storyboard/saveStoryboard", route53);
app.use("/storyboard/uploadImage", route54);
app.use("/task/getTaskApi", route55);
app.use("/task/taskDetails", route56);
app.use("/user/getUser", route57);
app.use("/video/addVideo", route58);
app.use("/video/addVideoConfig", route59);
app.use("/video/deleteVideoConfig", route60);
app.use("/video/generatePrompt", route61);
app.use("/video/generateVideo", route62);
app.use("/video/getManufacturer", route63);
app.use("/video/getVideo", route64);
app.use("/video/getVideoConfigs", route65);
app.use("/video/getVideoModel", route66);
app.use("/video/getVideoStoryboards", route67);
app.use("/video/reviseVideoStoryboards", route68);
app.use("/video/saveVideo", route69);
app.use("/video/upDateVideoConfig", route70);
app.use("/setting/addModel", route44);
app.use("/setting/configurationModel", route45);
app.use("/setting/delModel", route46);
app.use("/setting/getAiModelMap", route47);
app.use("/setting/getSetting", route48);
app.use("/setting/updeteModel", route49);
app.use("/storyboard/batchSuperScoreImage", route50);
app.use("/storyboard/chatStoryboard", route51);
app.use("/storyboard/generateShotImage", route52);
app.use("/storyboard/generateStoryboardApi", route53);
app.use("/storyboard/generateVideoPrompt", route54);
app.use("/storyboard/getStoryboard", route55);
app.use("/storyboard/keepStoryboard", route56);
app.use("/storyboard/saveStoryboard", route57);
app.use("/storyboard/uploadImage", route58);
app.use("/task/getTaskApi", route59);
app.use("/task/taskDetails", route60);
app.use("/user/getUser", route61);
app.use("/video/addVideo", route62);
app.use("/video/addVideoConfig", route63);
app.use("/video/deleteVideoConfig", route64);
app.use("/video/generatePrompt", route65);
app.use("/video/generateVideo", route66);
app.use("/video/getManufacturer", route67);
app.use("/video/getVideo", route68);
app.use("/video/getVideoConfigs", route69);
app.use("/video/getVideoModel", route70);
app.use("/video/getVideoStoryboards", route71);
app.use("/video/reviseVideoStoryboards", route72);
app.use("/video/saveVideo", route73);
app.use("/video/upDateVideoConfig", route74);
}

View File

@ -0,0 +1,33 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
export default router.post(
"/",
validateFields({
type: z.string(),
name: z.string(),
model: z.string(),
baseUrl: z.string(),
apiKey: z.string(),
manufacturer: z.string(),
}),
async (req, res) => {
const { type, name, model, baseUrl, apiKey, manufacturer } = req.body;
await u.db("t_config").insert({
type,
name,
model,
baseUrl,
apiKey,
manufacturer,
createTime: Date.now(),
userId: 1,
});
res.status(200).send(success("新增成功"));
},
);

View File

@ -0,0 +1,30 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
export default router.post(
"/",
validateFields({
id: z.number().optional(),
promptsId: z.number(),
configId: z.number(),
}),
async (req, res) => {
const { id, promptsId, configId } = req.body;
if (id) {
await u.db("t_aiModelMap").where("id", id).update({
promptsId,
configId,
});
} else {
await u.db("t_aiModelMap").insert({
promptsId,
configId,
});
}
res.status(200).send(success("配置成功"));
},
);

View File

@ -0,0 +1,19 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
export default router.post(
"/",
validateFields({
id: z.number(),
}),
async (req, res) => {
const { id } = req.body;
await u.db("t_config").where("id", id).delete();
await u.db("t_aiModelMap").where("configId", id).delete();
res.status(200).send(success("删除成功"));
},
);

View File

@ -0,0 +1,13 @@
import express from "express";
import u from "@/utils";
import { success } from "@/lib/responseFormat";
const router = express.Router();
export default router.post("/", async (req, res) => {
const configData = await u
.db("t_prompts")
.leftJoin("t_aiModelMap", "t_prompts.id", "t_aiModelMap.promptsId")
.leftJoin("t_config", "t_config.id", "t_aiModelMap.configId")
.select("t_prompts.id as promptsId", "t_prompts.code", "t_prompts.name", "t_config.model", "t_aiModelMap.id");
res.status(200).send(success(configData));
});

View File

@ -1,29 +1,11 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
export default router.post(
"/",
validateFields({
userId: z.number(),
}),
async (req, res) => {
const { userId } = req.body;
export default router.post("/", async (req, res) => {
const userId = 1;
const configData = await u.db("t_config").where("userId", userId).select("*");
const settingData = await u.db("t_setting").select("*");
const configData = await u.db("t_config").where("userId", userId).select("*");
const parsedData = settingData.map((item) => ({
...item,
imageModel: configData.find((i) => i.type == "image"),
languageModel: configData.find((i) => i.type == "text"),
videoModel: configData.filter((i) => i.type == "video").filter(Boolean),
}));
res.status(200).send(success(parsedData));
},
);
res.status(200).send(success(configData));
});

View File

@ -1,79 +0,0 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
// 修改全局配置
export default router.post(
"/",
validateFields({
userId: z.number(),
imageModel: z.object().optional(),
videoModel: z.array(z.object()).optional(),
languageModel: z.object().optional(),
name: z.string().optional(),
password: z.string().optional(),
}),
async (req, res) => {
const { userId, imageModel, videoModel, languageModel, name, password } = req.body;
await u
.db("t_setting")
.where("userId", userId)
.update({
imageModel: JSON.stringify(imageModel),
languageModel: JSON.stringify(languageModel),
});
if (videoModel) {
await u.db("t_config").where("type", "video").delete();
for (const item of videoModel) {
await u.db("t_config").insert({
type: "video",
name: item.model,
model: item.model,
apiKey: item.apiKey,
baseUrl: item.baseUrl,
createTime: Date.now(),
userId,
manufacturer: item.manufacturer,
});
}
}
if (languageModel) {
await u.db("t_config").where("type", "text").delete();
await u.db("t_config").insert({
type: "text",
name: languageModel.model,
model: languageModel.model,
apiKey: languageModel.apiKey,
baseUrl: languageModel.baseUrl,
createTime: Date.now(),
userId,
manufacturer: languageModel.manufacturer,
});
}
if (imageModel) {
await u.db("t_config").where("type", "image").delete();
await u.db("t_config").insert({
type: "image",
name: imageModel.model,
model: imageModel.model,
apiKey: imageModel.apiKey,
baseUrl: imageModel.baseUrl,
createTime: Date.now(),
userId,
manufacturer: imageModel.manufacturer,
});
}
await u.db("t_user").where("id", userId).update({
name,
password,
});
res.status(200).send(success({ message: "修改全局配置成功" }));
},
);

View File

@ -0,0 +1,32 @@
import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
const router = express.Router();
export default router.post(
"/",
validateFields({
id: z.number(),
type: z.string(),
name: z.string(),
model: z.string(),
baseUrl: z.string(),
apiKey: z.string(),
manufacturer: z.string(),
}),
async (req, res) => {
const { id, type, name, model, baseUrl, apiKey, manufacturer } = req.body;
await u.db("t_config").where("id", id).update({
type,
name,
model,
baseUrl,
apiKey,
manufacturer,
});
res.status(200).send(success("编辑成功"));
},
);