You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

123 lines
5.2 KiB

const fs = require('fs');
const path = require('path');
// 读取server-mysql.js文件内容
function readServerFile() {
return fs.readFileSync(path.join(__dirname, 'server-mysql.js'), 'utf8');
}
// 验证毛重字段处理逻辑
function verifyGrossWeightHandling() {
try {
const fileContent = readServerFile();
// 初始化验证结果
const verificationResult = {
totalIssues: 0,
successPoints: 0,
issues: [],
successDetails: []
};
// 检查响应中间件中的/products/list接口
const listMiddlewarePattern = /data\.products\s*=\s*data\.products\.map\(product\s*=>\s*\{[\s\S]*?product\.grossWeight\s*=\s*([^;]+);/;
const listMiddlewareMatch = fileContent.match(listMiddlewarePattern);
if (listMiddlewareMatch && listMiddlewareMatch[1].includes('0')) {
verificationResult.successPoints++;
verificationResult.successDetails.push('✓ 响应中间件(/products/list)已正确设置空毛重默认值为0');
} else {
verificationResult.totalIssues++;
verificationResult.issues.push('✗ 响应中间件(/products/list)未正确设置空毛重默认值');
}
// 检查响应中间件中的/data接口
const dataMiddlewarePattern = /data\.data\.products\s*=\s*data\.data\.products\.map\(product\s*=>\s*\{[\s\S]*?product\.grossWeight\s*=\s*([^;]+);/;
const dataMiddlewareMatch = fileContent.match(dataMiddlewarePattern);
if (dataMiddlewareMatch && dataMiddlewareMatch[1].includes('0')) {
verificationResult.successPoints++;
verificationResult.successDetails.push('✓ 响应中间件(/data)已正确设置空毛重默认值为0');
} else {
verificationResult.totalIssues++;
verificationResult.issues.push('✗ 响应中间件(/data)未正确设置空毛重默认值');
}
// 检查商品上传接口
const uploadApiPattern = /app\.post\('\/api\/products\/upload',[\s\S]*?let\s+processedGrossWeight\s*=\s*(\d+)/;
const uploadApiMatch = fileContent.match(uploadApiPattern);
if (uploadApiMatch && uploadApiMatch[1] === '0') {
verificationResult.successPoints++;
verificationResult.successDetails.push('✓ 商品上传接口已正确设置空毛重默认值为0');
} else {
verificationResult.totalIssues++;
verificationResult.issues.push('✗ 商品上传接口未正确设置空毛重默认值');
}
// 检查编辑商品API
const editApiPattern = /parsedValue:\s*product\.grossWeight\s*===\s*''\s*\|\|\s*product\.grossWeight\s*===\s*null\s*\|\|\s*product\.grossWeight\s*===\s*undefined\s*\?\s*(\d+)/;
const editApiMatch = fileContent.match(editApiPattern);
if (editApiMatch && editApiMatch[1] === '0') {
verificationResult.successPoints++;
verificationResult.successDetails.push('✓ 编辑商品API已正确设置空毛重默认值为0');
} else {
verificationResult.totalIssues++;
verificationResult.issues.push('✗ 编辑商品API未正确设置空毛重默认值');
}
// 检查是否还有设置为5的地方
const remaining5Pattern = /grossWeight\s*=\s*5/g;
const remaining5Matches = fileContent.match(remaining5Pattern);
if (remaining5Matches && remaining5Matches.length > 0) {
verificationResult.totalIssues += remaining5Matches.length;
verificationResult.issues.push(`✗ 发现${remaining5Matches.length}处仍将毛重设置为5的地方`);
} else {
verificationResult.successPoints++;
verificationResult.successDetails.push('✓ 未发现仍将毛重设置为5的残留代码');
}
// 检查是否正确实现了空值返回0的逻辑
const emptyValueHandlingPattern = /product\.grossWeight\s*===\s*null\s*\|\|\s*product\.grossWeight\s*===\s*undefined\s*\|\|\s*product\.grossWeight\s*===\s*''\s*\?\s*0/g;
const emptyValueMatches = fileContent.match(emptyValueHandlingPattern);
if (emptyValueMatches && emptyValueMatches.length > 0) {
verificationResult.successPoints++;
verificationResult.successDetails.push(`✓ 发现${emptyValueMatches.length}处正确实现了空值返回0的逻辑`);
}
// 输出验证结果
console.log('\n======== 毛重字段处理逻辑全面验证结果 ========');
console.log('\n成功项:');
verificationResult.successDetails.forEach(detail => console.log(detail));
console.log('\n问题项:');
if (verificationResult.issues.length === 0) {
console.log('✓ 未发现任何问题');
} else {
verificationResult.issues.forEach(issue => console.log(issue));
}
console.log('\n总体评估:');
if (verificationResult.totalIssues === 0) {
console.log('✅ 验证成功: 所有毛重字段处理逻辑已正确实现');
console.log(' 已满足要求: 空值时小程序和数据库均返回0,非空值返回实际值');
} else {
console.log(`❌ 验证失败: 发现${verificationResult.totalIssues}个问题需要修复`);
}
console.log('==============================================');
// 设置退出码
process.exit(verificationResult.totalIssues > 0 ? 1 : 0);
} catch (error) {
console.error('验证过程中发生错误:', error);
process.exit(1);
}
}
// 执行验证
verifyGrossWeightHandling();