1
This commit is contained in:
@@ -266,91 +266,88 @@ module.exports = {
|
||||
* description: 参数错误
|
||||
*/
|
||||
'POST /version/create': async (ctx) => {
|
||||
try {
|
||||
const models = Framework.getModels();
|
||||
const { version_info } = models;
|
||||
const body = ctx.getBody();
|
||||
|
||||
// 参数验证
|
||||
if (!body.version) {
|
||||
return ctx.fail('版本号不能为空', 400);
|
||||
}
|
||||
if (!body.platform) {
|
||||
return ctx.fail('平台类型不能为空', 400);
|
||||
}
|
||||
if (!body.arch) {
|
||||
return ctx.fail('架构类型不能为空', 400);
|
||||
}
|
||||
const models = Framework.getModels();
|
||||
const { version_info } = models;
|
||||
const body = ctx.getBody();
|
||||
|
||||
// 验证版本号格式
|
||||
if (!version_service.is_valid_version(body.version)) {
|
||||
return ctx.fail('版本号格式错误,应为 x.y.z 格式', 400);
|
||||
}
|
||||
// 参数验证
|
||||
if (!body.version) {
|
||||
return ctx.fail('版本号不能为空', 400);
|
||||
}
|
||||
if (!body.platform) {
|
||||
return ctx.fail('平台类型不能为空', 400);
|
||||
}
|
||||
if (!body.arch) {
|
||||
return ctx.fail('架构类型不能为空', 400);
|
||||
}
|
||||
|
||||
// 验证平台类型
|
||||
if (!version_service.is_valid_platform(body.platform)) {
|
||||
return ctx.fail('平台类型错误,应为 win32/darwin/linux', 400);
|
||||
}
|
||||
// 验证版本号格式
|
||||
if (!version_service.is_valid_version(body.version)) {
|
||||
return ctx.fail('版本号格式错误,应为 x.y.z 格式', 400);
|
||||
}
|
||||
|
||||
// 验证架构类型
|
||||
if (!version_service.is_valid_arch(body.arch)) {
|
||||
return ctx.fail('架构类型错误,应为 x64/ia32/arm64', 400);
|
||||
}
|
||||
// 验证平台类型
|
||||
if (!version_service.is_valid_platform(body.platform)) {
|
||||
return ctx.fail('平台类型错误,应为 win32/darwin/linux', 400);
|
||||
}
|
||||
|
||||
// 检查版本是否已存在
|
||||
const existing = await version_info.findOne({
|
||||
where: {
|
||||
version: body.version,
|
||||
platform: body.platform,
|
||||
arch: body.arch
|
||||
}
|
||||
});
|
||||
// 验证架构类型
|
||||
if (!version_service.is_valid_arch(body.arch)) {
|
||||
return ctx.fail('架构类型错误,应为 x64/ia32/arm64', 400);
|
||||
}
|
||||
|
||||
if (existing) {
|
||||
return ctx.fail('该版本已存在', 400);
|
||||
}
|
||||
|
||||
// 如果提供了文件路径,计算文件大小和哈希
|
||||
if (body.file_path) {
|
||||
try {
|
||||
const full_path = path.resolve(body.file_path);
|
||||
|
||||
if (fs.existsSync(full_path)) {
|
||||
// 计算文件大小
|
||||
if (!body.file_size) {
|
||||
const stats = fs.statSync(full_path);
|
||||
body.file_size = stats.size;
|
||||
}
|
||||
|
||||
// 计算文件哈希
|
||||
if (!body.file_hash) {
|
||||
body.file_hash = await version_service.calculate_file_hash(full_path);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('计算文件信息失败:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建版本
|
||||
const version = await version_info.create({
|
||||
// 检查版本是否已存在
|
||||
const existing = await version_info.findOne({
|
||||
where: {
|
||||
version: body.version,
|
||||
platform: body.platform,
|
||||
arch: body.arch,
|
||||
download_url: body.download_url || '',
|
||||
file_path: body.file_path || '',
|
||||
file_size: body.file_size || 0,
|
||||
file_hash: body.file_hash || '',
|
||||
release_notes: body.release_notes || '',
|
||||
force_update: body.force_update || 0,
|
||||
status: body.status !== undefined ? body.status : 1
|
||||
});
|
||||
arch: body.arch
|
||||
}
|
||||
});
|
||||
|
||||
return ctx.success(version, '版本创建成功');
|
||||
} catch (error) {
|
||||
console.error('创建版本错误:', error);
|
||||
return ctx.fail('服务器错误', 500);
|
||||
if (existing) {
|
||||
return ctx.fail('该版本已存在', 400);
|
||||
}
|
||||
|
||||
// 如果提供了文件路径,计算文件大小和哈希
|
||||
if (body.file_path) {
|
||||
try {
|
||||
const full_path = path.resolve(body.file_path);
|
||||
|
||||
if (fs.existsSync(full_path)) {
|
||||
// 计算文件大小
|
||||
if (!body.file_size) {
|
||||
const stats = fs.statSync(full_path);
|
||||
body.file_size = stats.size;
|
||||
}
|
||||
|
||||
// 计算文件哈希
|
||||
if (!body.file_hash) {
|
||||
body.file_hash = await version_service.calculate_file_hash(full_path);
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('计算文件信息失败:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建版本
|
||||
const version = await version_info.create({
|
||||
version: body.version,
|
||||
platform: body.platform,
|
||||
arch: body.arch,
|
||||
download_url: body.download_url || '',
|
||||
file_path: body.file_path || '',
|
||||
file_size: body.file_size || 0,
|
||||
file_hash: body.file_hash || '',
|
||||
release_notes: body.release_notes || '',
|
||||
force_update: body.force_update || 0,
|
||||
status: body.status !== undefined ? body.status : 1
|
||||
});
|
||||
|
||||
return ctx.success(version, '版本创建成功');
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user